openfl
Version:
A fast, productive library for 2D cross-platform development.
249 lines (234 loc) • 8.95 kB
JavaScript
// Class: openfl.net.SharedObject
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../hxClasses_stub").default;
var $hxEnums = require("./../../hxEnums_stub").default;
var $import = require("./../../import_stub").default;
var $extend = require("./../../extend_stub").default;
function openfl_events_EventDispatcher() {return require("./../../openfl/events/EventDispatcher");}
function js_Browser() {return require("./../../js/Browser");}
function haxe_CallStack() {return require("./../../haxe/CallStack");}
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
function openfl_utils__$internal_Lib() {return require("./../../openfl/utils/_internal/Lib");}
function Reflect() {return require("./../../Reflect");}
function haxe_Serializer() {return require("./../../haxe/Serializer");}
function haxe_io_Bytes() {return require("./../../haxe/io/Bytes");}
function openfl_errors_Error() {return require("./../../openfl/errors/Error");}
function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");}
function lime_app_Application() {return require("./../../lime/app/Application");}
function haxe_Unserializer() {return require("./../../haxe/Unserializer");}
function Type() {return require("./../../Type");}
function lime_system_System() {return require("./../../lime/system/System");}
function StringTools() {return require("./../../StringTools");}
function HxOverrides() {return require("./../../HxOverrides");}
// Constructor
var SharedObject = function() {
(openfl_events_EventDispatcher().default).call(this);
this.client = this;
this.objectEncoding = SharedObject.defaultObjectEncoding;
}
// Meta
SharedObject.__name__ = "openfl.net.SharedObject";
SharedObject.__isInterface__ = false;
SharedObject.__super__ = (openfl_events_EventDispatcher().default);
SharedObject.prototype = $extend((openfl_events_EventDispatcher().default).prototype, {
clear: function() {
this.data = { };
try {
var storage = (js_Browser().default).getLocalStorage();
if(storage != null) {
storage.removeItem(this.__localPath + ":" + this.__name);
}
} catch( e ) {
(haxe_CallStack().default).lastException = e;
var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e;
}
},
close: function() {
},
connect: function(myConnection,params) {
(openfl_utils__$internal_Lib().default).notImplemented({ fileName : "../node_modules/openfl-haxelib/src/openfl/net/SharedObject.hx", lineNumber : 392, className : "openfl.net.SharedObject", methodName : "connect"});
},
flush: function(minDiskSpace) {
if(minDiskSpace == null) {
minDiskSpace = 0;
}
if((Reflect().default).fields(this.data).length == 0) {
return "flushed";
}
var encodedData = (haxe_Serializer().default).run(this.data);
try {
var storage = (js_Browser().default).getLocalStorage();
if(storage != null) {
storage.removeItem(this.__localPath + ":" + this.__name);
storage.setItem(this.__localPath + ":" + this.__name,encodedData);
}
} catch( e ) {
(haxe_CallStack().default).lastException = e;
var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e;
return "pending";
}
return "flushed";
},
send: function(args) {
(openfl_utils__$internal_Lib().default).notImplemented({ fileName : "../node_modules/openfl-haxelib/src/openfl/net/SharedObject.hx", lineNumber : 824, className : "openfl.net.SharedObject", methodName : "send"});
},
setDirty: function(propertyName) {
},
setProperty: function(propertyName,value) {
if(this.data != null) {
(Reflect().default).setField(this.data,propertyName,value);
}
},
get_size: function() {
try {
var d = (haxe_Serializer().default).run(this.data);
return (haxe_io_Bytes().default).ofString(d).length;
} catch( e ) {
(haxe_CallStack().default).lastException = e;
var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e;
return 0;
}
}
});
SharedObject.prototype.__class__ = SharedObject.prototype.constructor = $hxClasses["openfl.net.SharedObject"] = SharedObject;
// Init
{
var tmp = SharedObject.prototype;
var tmp1 = function () { return this.get_size (); }
global.Object.defineProperty(tmp,"size",{ get : tmp1});
};
// Statics
SharedObject.getLocal = function(name,localPath,secure) {
if(secure == null) {
secure = false;
}
var illegalValues = [" ","~","%","&","\\",";",":","\"","'",",","<",">","?","#"];
var allowed = true;
if(name == null || name == "") {
allowed = false;
} else {
var _g = 0;
while(_g < illegalValues.length) {
var value = illegalValues[_g];
++_g;
if(name.indexOf(value) > -1) {
allowed = false;
break;
}
}
}
if(!allowed) {
throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Error #2134: Cannot create SharedObject."));
}
if(SharedObject.__sharedObjects == null) {
SharedObject.__sharedObjects = new (haxe_ds_StringMap().default)();
if((lime_app_Application().default).current != null) {
(lime_app_Application().default).current.onExit.add(SharedObject.application_onExit);
}
}
var id = localPath + "/" + name;
if(!SharedObject.__sharedObjects.exists(id)) {
var encodedData = null;
try {
var storage = (js_Browser().default).getLocalStorage();
if(localPath == null) {
if(storage != null) {
encodedData = storage.getItem(window.location.href + ":" + name);
storage.removeItem(window.location.href + ":" + name);
}
localPath = window.location.pathname;
}
if(storage != null && encodedData == null) {
encodedData = storage.getItem(localPath + ":" + name);
}
} catch( e ) {
(haxe_CallStack().default).lastException = e;
var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e;
}
var sharedObject = new SharedObject();
sharedObject.data = { };
sharedObject.__localPath = localPath;
sharedObject.__name = name;
if(encodedData != null && encodedData != "") {
try {
var unserializer = new (haxe_Unserializer().default)(encodedData);
unserializer.setResolver({ resolveEnum : (Type().default).resolveEnum, resolveClass : SharedObject.__resolveClass});
sharedObject.data = unserializer.unserialize();
} catch( e2 ) {
(haxe_CallStack().default).lastException = e2;
var e3 = ((e2) instanceof (js__$Boot_HaxeError().default)) ? e2.val : e2;
}
}
SharedObject.__sharedObjects.set(id,sharedObject);
}
return SharedObject.__sharedObjects.get(id);
}
SharedObject.getRemote = function(name,remotePath,persistence,secure) {
if(secure == null) {
secure = false;
}
if(persistence == null) {
persistence = false;
}
(openfl_utils__$internal_Lib().default).notImplemented({ fileName : "../node_modules/openfl-haxelib/src/openfl/net/SharedObject.hx", lineNumber : 808, className : "openfl.net.SharedObject", methodName : "getRemote"});
return null;
}
SharedObject.__getPath = function(localPath,name) {
var path = (lime_system_System().default).get_applicationStorageDirectory() + "/" + localPath + "/";
name = (StringTools().default).replace(name,"//","/");
name = (StringTools().default).replace(name,"//","/");
if((StringTools().default).startsWith(name,"/")) {
name = (HxOverrides().default).substr(name,1,null);
}
if((StringTools().default).endsWith(name,"/")) {
name = name.substring(0,name.length - 1);
}
if(name.indexOf("/") > -1) {
var split = name.split("/");
name = "";
var _g = 0;
var _g1 = split.length - 1;
while(_g < _g1) {
var i = _g++;
name += "#" + split[i] + "/";
}
name += split[split.length - 1];
}
return path + name + ".sol";
}
SharedObject.__mkdir = function(directory) {
}
SharedObject.__resolveClass = function(name) {
if(name != null) {
if((StringTools().default).startsWith(name,"neash.")) {
name = (StringTools().default).replace(name,"neash.","openfl.");
}
if((StringTools().default).startsWith(name,"native.")) {
name = (StringTools().default).replace(name,"native.","openfl.");
}
if((StringTools().default).startsWith(name,"flash.")) {
name = (StringTools().default).replace(name,"flash.","openfl.");
}
if((StringTools().default).startsWith(name,"openfl._v2.")) {
name = (StringTools().default).replace(name,"openfl._v2.","openfl.");
}
if((StringTools().default).startsWith(name,"openfl._legacy.")) {
name = (StringTools().default).replace(name,"openfl._legacy.","openfl.");
}
return (Type().default).resolveClass(name);
}
return null;
}
SharedObject.application_onExit = function(_) {
var sharedObject = SharedObject.__sharedObjects.iterator();
while(sharedObject.hasNext()) {
var sharedObject1 = sharedObject.next();
sharedObject1.flush();
}
}
SharedObject.defaultObjectEncoding = 10
// Export
exports.default = SharedObject;