📄 offline.js.uncompressed.js
字号:
}else{ var tester = /DECRYPT\((?:\s*\w*\s*\,?)*\)/ig; var matches; while(matches = tester.exec(sql)){ var lastMatch = new String(RegExp.lastMatch); var columnNames = lastMatch.replace(/DECRYPT\(/i, ""); columnNames = columnNames.replace(/\)/, ""); columnNames = columnNames.split(/\s*,\s*/); dojo.forEach(columnNames, function(column){ if(/\s*\w* AS (\w*)/i.test(column)){ column = column.match(/\s*\w* AS (\w*)/i)[1]; } results[column] = true; }); } } return results; }, _decryptSingleColumn: function(columnName, columnValue, password, currentRowIndex, callback){ //console.debug("decryptSingleColumn, columnName="+columnName+", columnValue="+columnValue+", currentRowIndex="+currentRowIndex) dojox._sql._crypto.decrypt(columnValue, password, dojo.hitch(this, function(results){ // set the new decrypted value this._finalResultSet[currentRowIndex][columnName] = results; this._finishedCrypto++; // are we done with all encryption? if(this._finishedCrypto >= this._totalCrypto && this._finishedSpawningCrypto){ //console.debug("done with all decrypts"); callback(this._finalResultSet); } })); }});}if(!dojo._hasResource["dojox.sql"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.sql"] = true;dojo.provide("dojox.sql");}if(!dojo._hasResource["dojox.storage.GearsStorageProvider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.storage.GearsStorageProvider"] = true;dojo.provide("dojox.storage.GearsStorageProvider");if(dojo.isGears){ (function(){ // make sure we don't define the gears provider if we're not gears // enabled dojo.declare("dojox.storage.GearsStorageProvider", dojox.storage.Provider, { // summary: // Storage provider that uses the features of Google Gears // to store data (it is saved into the local SQL database // provided by Gears, using dojox.sql) // description: // You can disable this storage provider with the following djConfig // variable: // var djConfig = { disableGearsStorage: true }; // // Authors of this storage provider- // Brad Neuberg, bkn3@columbia.edu constructor: function(){ }, // instance methods and properties TABLE_NAME: "__DOJO_STORAGE", initialized: false, _available: null, initialize: function(){ //console.debug("dojox.storage.GearsStorageProvider.initialize"); if(dojo.config["disableGearsStorage"] == true){ return; } // partition our storage data so that multiple apps // on the same host won't collide this.TABLE_NAME = "__DOJO_STORAGE"; // create the table that holds our data try{ dojox.sql("CREATE TABLE IF NOT EXISTS " + this.TABLE_NAME + "( " + " namespace TEXT, " + " key TEXT, " + " value TEXT " + ")" ); dojox.sql("CREATE UNIQUE INDEX IF NOT EXISTS namespace_key_index" + " ON " + this.TABLE_NAME + " (namespace, key)"); }catch(e){ console.debug("dojox.storage.GearsStorageProvider.initialize:", e); this.initialized = false; // we were unable to initialize dojox.storage.manager.loaded(); return; } // indicate that this storage provider is now loaded this.initialized = true; dojox.storage.manager.loaded(); }, isAvailable: function(){ // is Google Gears available and defined? return this._available = dojo.isGears; }, put: function(key, value, resultsHandler, namespace){ if(this.isValidKey(key) == false){ throw new Error("Invalid key given: " + key); } namespace = namespace||this.DEFAULT_NAMESPACE; // serialize the value; // handle strings differently so they have better performance if(dojo.isString(value)){ value = "string:" + value; }else{ value = dojo.toJson(value); } // try to store the value try{ dojox.sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = ? AND key = ?", namespace, key); dojox.sql("INSERT INTO " + this.TABLE_NAME + " VALUES (?, ?, ?)", namespace, key, value); }catch(e){ // indicate we failed console.debug("dojox.storage.GearsStorageProvider.put:", e); resultsHandler(this.FAILED, key, e.toString()); return; } if(resultsHandler){ resultsHandler(dojox.storage.SUCCESS, key, null); } }, get: function(key, namespace){ if(this.isValidKey(key) == false){ throw new Error("Invalid key given: " + key); } namespace = namespace||this.DEFAULT_NAMESPACE; // try to find this key in the database var results = dojox.sql("SELECT * FROM " + this.TABLE_NAME + " WHERE namespace = ? AND " + " key = ?", namespace, key); if(!results.length){ return null; }else{ results = results[0].value; } // destringify the content back into a // real JavaScript object; // handle strings differently so they have better performance if(dojo.isString(results) && (/^string:/.test(results))){ results = results.substring("string:".length); }else{ results = dojo.fromJson(results); } return results; }, getNamespaces: function(){ var results = [ dojox.storage.DEFAULT_NAMESPACE ]; var rs = dojox.sql("SELECT namespace FROM " + this.TABLE_NAME + " DESC GROUP BY namespace"); for(var i = 0; i < rs.length; i++){ if(rs[i].namespace != dojox.storage.DEFAULT_NAMESPACE){ results.push(rs[i].namespace); } } return results; }, getKeys: function(namespace){ namespace = namespace||this.DEFAULT_NAMESPACE; if(this.isValidKey(namespace) == false){ throw new Error("Invalid namespace given: " + namespace); } var rs = dojox.sql("SELECT key FROM " + this.TABLE_NAME + " WHERE namespace = ?", namespace); var results = []; for(var i = 0; i < rs.length; i++){ results.push(rs[i].key); } return results; }, clear: function(namespace){ if(this.isValidKey(namespace) == false){ throw new Error("Invalid namespace given: " + namespace); } namespace = namespace||this.DEFAULT_NAMESPACE; dojox.sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = ?", namespace); }, remove: function(key, namespace){ namespace = namespace||this.DEFAULT_NAMESPACE; dojox.sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = ? AND" + " key = ?", namespace, key); }, putMultiple: function(keys, values, resultsHandler, namespace) { if(this.isValidKeyArray(keys) === false || ! values instanceof Array || keys.length != values.length){ throw new Error("Invalid arguments: keys = [" + keys + "], values = [" + values + "]"); } if(namespace == null || typeof namespace == "undefined"){ namespace = dojox.storage.DEFAULT_NAMESPACE; } if(this.isValidKey(namespace) == false){ throw new Error("Invalid namespace given: " + namespace); } this._statusHandler = resultsHandler; // try to store the value try{ dojox.sql.open(); dojox.sql.db.execute("BEGIN TRANSACTION"); var _stmt = "REPLACE INTO " + this.TABLE_NAME + " VALUES (?, ?, ?)"; for(var i=0;i<keys.length;i++) { // serialize the value; // handle strings differently so they have better performance var value = values[i]; if(dojo.isString(value)){ value = "string:" + value; }else{ value = dojo.toJson(value); } dojox.sql.db.execute( _stmt, [namespace, keys[i], value]); } dojox.sql.db.execute("COMMIT TRANSACTION"); dojox.sql.close(); }catch(e){ // indicate we failed console.debug("dojox.storage.GearsStorageProvider.putMultiple:", e); if(resultsHandler){ resultsHandler(this.FAILED, keys, e.toString()); } return; } if(resultsHandler){ resultsHandler(dojox.storage.SUCCESS, key, null); } }, getMultiple: function(keys, namespace){ // TODO: Maybe use SELECT IN instead if(this.isValidKeyArray(keys) === false){ throw new ("Invalid key array given: " + keys); } if(namespace == null || typeof namespace == "undefined"){ namespace = dojox.storage.DEFAULT_NAMESPACE; } if(this.isValidKey(namespace) == false){ throw new Error("Invalid namespace given: " + namespace); } var _stmt = "SELECT * FROM " + this.TABLE_NAME + " WHERE namespace = ? AND " + " key = ?"; var results = []; for(var i=0;i<keys.length;i++){ var result = dojox.sql( _stmt, namespace, keys[i]); if( ! result.length){ results[i] = null; }else{ result = result[0].value; // destringify the content back into a // real JavaScript object; // handle strings differently so they have better performance if(dojo.isString(result) && (/^string:/.test(result))){ results[i] = result.substring("string:".length); }else{ results[i] = dojo.fromJson(result); } } } return results; }, removeMultiple: function(keys, namespace){ namespace = namespace||this.DEFAULT_NAMESPACE; dojox.sql.open(); dojox.sql.db.execute("BEGIN TRANSACTION"); var _stmt = "DELETE FROM " + this.TABLE_NAME + " WHERE namespace = ? AND key = ?"; for(var i=0;i<keys.length;i++){ dojox.sql.db.execute( _stmt, [namespace, keys[i]]); } dojox.sql.db.execute("COMMIT TRANSACTION"); dojox.sql.close(); }, isPermanent: function(){ return true; }, getMaximumSize: function(){ return this.SIZE_NO_LIMIT; }, hasSettingsUI: function(){ return false; }, showSettingsUI: function(){ throw new Error(this.declaredClass + " does not support a storage settings user-interface"); }, hideSettingsUI: function(){ throw new Error(this.declaredClass + " does not support a storage settings user-interface"); } }); // register the existence of our storage providers dojox.storage.manager.register("dojox.storage.GearsStorageProvider", new dojox.storage.GearsStorageProvider()); })();}}if(!dojo._hasResource["dojox.storage.WhatWGStorageProvider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.storage.WhatWGStorageProvider"] = true;dojo.provide("dojox.storage.WhatWGStorageProvider");dojo.declare("dojox.storage.WhatWGStorageProvider", [ dojox.storage.Provider ], { // summary: // Storage provider that uses WHAT Working Group features in Firefox 2 // to achieve permanent storage. // description: // The WHAT WG storage API is documented at // http://www.whatwg.org/specs/web-apps/current-work/#scs-client-side // // You can disable this storage provider with the following djConfig // variable: // var djConfig = { disableWhatWGStorage: true }; // // Authors of this storage provider- // JB Boisseau, jb.boisseau@eutech-ssii.com // Brad Neuberg, bkn3@columbia.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -