mirror of
https://github.com/esiur/esiur-js.git
synced 2025-05-06 04:22:58 +00:00
April
This commit is contained in:
parent
98877b9b85
commit
5967d6c901
8
.babelrc
8
.babelrc
@ -1,6 +1,10 @@
|
||||
{
|
||||
"presets": ["@babel/preset-env"],
|
||||
"plugins": [
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env", { "useBuiltIns": "entry" }
|
||||
]
|
||||
],
|
||||
"plugins": [
|
||||
["@babel/transform-runtime"]
|
||||
]
|
||||
}
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Esi Ur
|
||||
Copyright (c) 2017-2020 Esyur
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
857
build/esyur.js
857
build/esyur.js
File diff suppressed because it is too large
Load Diff
@ -5,3 +5,4 @@ exports.printMsg = function() {
|
||||
module.exports = { wh };
|
||||
|
||||
let WebSocket = require('ws')
|
||||
|
||||
|
1091
package-lock.json
generated
1091
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "esyur",
|
||||
"version": "1.4.0",
|
||||
"version": "1.4.6",
|
||||
"description": "Distributed Object Framework",
|
||||
"main": "esyur.js",
|
||||
"scripts": {
|
||||
@ -19,14 +19,15 @@
|
||||
},
|
||||
"homepage": "https://github.com/esyur/esyur-js#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.7.7",
|
||||
"ws": "^6.2.0"
|
||||
"@babel/polyfill": "^7.8.3",
|
||||
"@babel/runtime": "^7.8.4",
|
||||
"ws": "^6.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "^7.7.7",
|
||||
"@babel/core": "^7.7.7",
|
||||
"@babel/plugin-transform-runtime": "^7.7.6",
|
||||
"@babel/preset-env": "^7.7.7",
|
||||
"@babel/cli": "^7.8.4",
|
||||
"@babel/core": "^7.8.6",
|
||||
"@babel/plugin-transform-runtime": "^7.8.3",
|
||||
"@babel/preset-env": "^7.8.6",
|
||||
"babel-cli": "^6.0.0",
|
||||
"babelify": "^10.0.0",
|
||||
"browserify": "^16.5.0"
|
||||
|
@ -40,12 +40,20 @@ export default class AsyncQueue extends AsyncReply
|
||||
this.processQueue = function ()
|
||||
{
|
||||
for (var i = 0; i < self.list.length; i++)
|
||||
if (self.list[i].ready)
|
||||
{
|
||||
if (self.list[i].ready) {
|
||||
self.trigger(self.list[i].result);
|
||||
self.list.splice(i, 1);
|
||||
self.ready = false;
|
||||
//self.list.splice(i, 1);
|
||||
self.list.shift();
|
||||
|
||||
i--;
|
||||
}
|
||||
else if (self.list[i].failed) {
|
||||
self.ready = false;
|
||||
self.list.shift();
|
||||
i--;
|
||||
console.log("AsyncQueue (Reply Failed)");
|
||||
}
|
||||
else
|
||||
break;
|
||||
|
||||
@ -57,11 +65,13 @@ export default class AsyncQueue extends AsyncReply
|
||||
{
|
||||
this.list.push(reply);
|
||||
this.ready = false;
|
||||
reply.then(this.processQueue);
|
||||
reply.then(this.processQueue).error(this.processQueue);
|
||||
|
||||
}
|
||||
|
||||
remove(reply)
|
||||
{
|
||||
console.log("REMOVE QUEUE");
|
||||
this.list.splice(this.list.indexOf(reply), 1);
|
||||
this.processQueue();
|
||||
}
|
||||
|
@ -72,6 +72,7 @@ export default class IEventHandler
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
off(event, fn)
|
||||
{
|
||||
event = event.toLocaleString();
|
||||
|
@ -295,45 +295,64 @@ export default class DC extends Uint8Array
|
||||
return new Uint8Array(this.buffer, offset, length);
|
||||
}
|
||||
|
||||
copy(offset, length, elementSize, func, dstType)
|
||||
{
|
||||
let rt = new dstType(length / elementSize);
|
||||
let d = 0, end = offset + length;
|
||||
for (let i = offset; i < end; i += elementSize)
|
||||
rt[d++] = func.call(this, i);
|
||||
return rt;
|
||||
}
|
||||
|
||||
getInt16Array(offset, length)
|
||||
{
|
||||
return new Int16Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 2, this.getInt16, Int16Array);
|
||||
//return new Int16Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
getUint16Array(offset, length)
|
||||
{
|
||||
return new Uint16Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 2, this.getUint16, Uint16Array);
|
||||
//return new Uint16Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
getInt32Array(offset, length)
|
||||
{
|
||||
return new Int32Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 4, this.getInt32, Int32Array);
|
||||
//return new Int32Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
|
||||
getUint32Array(offset, length)
|
||||
{
|
||||
return new Uint32Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 4, this.getUint32, Uint32Array);
|
||||
//return new Uint32Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
getFloat32Array(offset, length)
|
||||
{
|
||||
return new Float32Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 4, this.getFloat32, Float32Array);
|
||||
//return new Float32Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
getFloat64Array(offset, length)
|
||||
{
|
||||
return new Float64Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 8, this.getFloat64, Float64Array);
|
||||
|
||||
// return new Float64Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
getInt64Array(offset, length)
|
||||
{
|
||||
return new Int64Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 8, this.getInt64, BigInt64Array);
|
||||
//return new Int64Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
|
||||
getUint64Array(offset, length)
|
||||
{
|
||||
return new Uint64Array(this.clip(offset, length).buffer);
|
||||
return this.copy(offset, length, 8, this.getUint64, BigUint64Array);
|
||||
//return new Uint64Array(this.clip(offset, length).buffer);
|
||||
}
|
||||
|
||||
getBoolean(offset)
|
||||
|
@ -92,6 +92,11 @@ export default class KeyList
|
||||
return false;
|
||||
}
|
||||
|
||||
containsKey(key)
|
||||
{
|
||||
return this.contains(key);
|
||||
}
|
||||
|
||||
set(key, value)
|
||||
{
|
||||
this.remove(key);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -37,15 +37,24 @@ export default class DistributedResource extends IResource
|
||||
destroy()
|
||||
{
|
||||
this.destroyed = true;
|
||||
this._p.attached = false;
|
||||
this._p.connection.sendDetachRequest(this._p.instanceId);
|
||||
this._emit("destroy", this);
|
||||
}
|
||||
|
||||
_suspend()
|
||||
{
|
||||
this._p.suspended = true;
|
||||
this._p.attached = false;
|
||||
}
|
||||
|
||||
constructor(connection, instanceId, age, link)
|
||||
{
|
||||
super();
|
||||
|
||||
this._p = {
|
||||
isAttached: false,
|
||||
suspended: false,
|
||||
attached: false,
|
||||
connection: connection,
|
||||
instanceId: instanceId,
|
||||
age: age,
|
||||
@ -66,13 +75,16 @@ export default class DistributedResource extends IResource
|
||||
return props;
|
||||
}
|
||||
|
||||
_attached(properties)
|
||||
_attach(properties)
|
||||
{
|
||||
|
||||
if (this._isAttached)
|
||||
if (this._p.attached)
|
||||
return false;
|
||||
else
|
||||
{
|
||||
|
||||
this._p.suspended = false;
|
||||
|
||||
for(var i = 0; i < properties.length; i++)
|
||||
{
|
||||
this.instance.setAge(i, properties[i].age);
|
||||
@ -81,7 +93,7 @@ export default class DistributedResource extends IResource
|
||||
}
|
||||
|
||||
|
||||
this._p.isAttached = true;
|
||||
this._p.attached = true;
|
||||
|
||||
var self = this;
|
||||
|
||||
@ -154,6 +166,9 @@ export default class DistributedResource extends IResource
|
||||
if (this.destroyed)
|
||||
throw new Error("Trying to access destroyed object");
|
||||
|
||||
if (this._p.suspended)
|
||||
throw new Error("Trying to access suspended object");
|
||||
|
||||
if (index >= this.instance.template.functions.length)
|
||||
throw new Error("Function index is incorrect");
|
||||
|
||||
@ -164,6 +179,9 @@ export default class DistributedResource extends IResource
|
||||
if (this.destroyed)
|
||||
throw new Error("Trying to access destroyed object");
|
||||
|
||||
if (this._p.suspended)
|
||||
throw new Error("Trying to access suspended object");
|
||||
|
||||
if (index >= this.instance.template.functions.length)
|
||||
throw new Error("Function index is incorrect");
|
||||
|
||||
|
@ -189,6 +189,9 @@ export default class IIPPacket
|
||||
var cl = data.getUint32(offset);
|
||||
offset += 4;
|
||||
|
||||
if (this.notEnough(offset, ends, cl))
|
||||
return -this.dataLengthNeeded;
|
||||
|
||||
this.content = data.clip(offset, cl);
|
||||
offset += cl;
|
||||
}
|
||||
|
@ -137,7 +137,8 @@ export default class Instance extends IEventHandler
|
||||
this.store.record(this.resource, pt.name, value, this.ages[pt.index], now);
|
||||
|
||||
super._emit("ResourceModified", this.resource, pt.name, value);
|
||||
this.resource._emit("modified", pt.name, value);
|
||||
//this.resource._emit("modified", pt.name, value);
|
||||
this.resource._emit(":" + pt.name, value);
|
||||
}
|
||||
|
||||
modified(propertyName = null)
|
||||
|
@ -82,7 +82,7 @@ export class WH extends IEventHandler
|
||||
//var url = path.split(/(?:):\/\/([^:\/]*):?(\d*)/);
|
||||
// without port
|
||||
let url = path.split(this._urlRegex);
|
||||
|
||||
|
||||
//var url = path.split("://", 2);
|
||||
//var hostname = url[1];// url[1].split("/", 2)[0];
|
||||
//var pathname = url[2];// url[1].split("/").splice(1).join("/");
|
||||
|
45
src/Security/Permissions/ActionType.js
Normal file
45
src/Security/Permissions/ActionType.js
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2017 Ahmed Kh. Zamil
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Created by Ahmed Zamil on 9/2/2017.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
export default // ActionType =
|
||||
{
|
||||
Attach: 0,
|
||||
Delete: 1,
|
||||
Execute: 2,
|
||||
GetProperty: 3,
|
||||
SetProperty: 4,
|
||||
CreateResource: 5,
|
||||
UpdateAttributes: 6,
|
||||
InquireAttributes: 7,
|
||||
AddParent: 8,
|
||||
RemoveParent: 9,
|
||||
AddChild: 10,
|
||||
RemoveChild: 11,
|
||||
Rename: 12,
|
||||
ReceiveEvent: 13
|
||||
};
|
@ -26,30 +26,6 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
export const ActionType =
|
||||
{
|
||||
Attach: 0,
|
||||
Delete: 1,
|
||||
Execute: 2,
|
||||
GetProperty: 3,
|
||||
SetProperty: 4,
|
||||
CreateResource: 5,
|
||||
UpdateAttributes: 6,
|
||||
InquireAttributes: 7,
|
||||
AddParent: 8,
|
||||
RemoveParent: 9,
|
||||
AddChild: 10,
|
||||
RemoveChild: 11,
|
||||
Rename: 12,
|
||||
ReceiveEvent: 13
|
||||
};
|
||||
|
||||
export const Ruling = {
|
||||
Denied: 0,
|
||||
Allowed: 1,
|
||||
DontCare: 2,
|
||||
};
|
||||
|
||||
export default class IPermissionsManager
|
||||
{
|
||||
/// <summary>
|
||||
|
35
src/Security/Permissions/Ruling.js
Normal file
35
src/Security/Permissions/Ruling.js
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017 Ahmed Kh. Zamil
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Created by Ahmed Zamil on 9/2/2020.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
export default //Ruling =
|
||||
{
|
||||
Denied: 0,
|
||||
Allowed: 1,
|
||||
DontCare: 2,
|
||||
};
|
||||
|
13
src/esyur.js
13
src/esyur.js
@ -2,11 +2,24 @@
|
||||
import wh from './Resource/Warehouse.js';
|
||||
import Structure from './Data/Structure.js';
|
||||
import DistributedResource from './Net/IIP/DistributedResource.js'
|
||||
import MemoryStore from './Stores/MemoryStore.js';
|
||||
import IResource from './Resource/IResource.js';
|
||||
|
||||
if (window) {
|
||||
window.wh = wh;
|
||||
window.Structure = Structure;
|
||||
window.DistributedResource = DistributedResource;
|
||||
window.MemoryStore = MemoryStore;
|
||||
window.IResource = IResource;
|
||||
}
|
||||
else if (global)
|
||||
{
|
||||
global.wh = wh;
|
||||
global.Structure = Structure;
|
||||
global.DistributedResource = DistributedResource;
|
||||
global.MemoryStore = MemoryStore;
|
||||
global.IResource = IResource;
|
||||
|
||||
}
|
||||
|
||||
export default wh;
|
Loading…
x
Reference in New Issue
Block a user