Room Objecttive
This commit is contained in:
		
							parent
							
								
									8ec6380aea
								
							
						
					
					
						commit
						48ebeb4477
					
				| 
						 | 
				
			
			@ -14,12 +14,11 @@ function Client()
 | 
			
		|||
    this.created_at = null;
 | 
			
		||||
 | 
			
		||||
    this.store = new Map();
 | 
			
		||||
    this.rooms = new Set();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Client.prototype.send = function(obj){
 | 
			
		||||
    this.socket.sendUTF(JSON.stringify(obj));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Client.prototype.rooms = new Set();
 | 
			
		||||
 | 
			
		||||
exports.Client = Client;
 | 
			
		||||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ const { Client } = require("../Client.js");
 | 
			
		|||
let {randomUUID} = require("crypto");
 | 
			
		||||
const joi = require("joi");
 | 
			
		||||
let {addService,addListener} = require("../WebSocket.js");
 | 
			
		||||
let term = require("terminal-kit").terminal;
 | 
			
		||||
 | 
			
		||||
function Room()
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +63,8 @@ function Room()
 | 
			
		|||
 * @param {Room} room 
 | 
			
		||||
 */
 | 
			
		||||
Room.prototype.publish = function(room){
 | 
			
		||||
    Room.rooms.set(room.id, room);
 | 
			
		||||
    Room.rooms.set(this.id, this);
 | 
			
		||||
    term.green("Room Published ").white(this.name," in ").yellow(this.clients.size).white(" clients")('\n');
 | 
			
		||||
};
 | 
			
		||||
Room.prototype.toJSON = function(){
 | 
			
		||||
    let obj = {};
 | 
			
		||||
| 
						 | 
				
			
			@ -80,36 +82,48 @@ Room.prototype.send = function(obj){
 | 
			
		|||
    for (const client of this.clients.values()) {
 | 
			
		||||
        client.send(obj);
 | 
			
		||||
    }
 | 
			
		||||
    term.green("Room bulk message ").white(this.name," in ").yellow(this.clients.size + "").white(" clients")('\n');
 | 
			
		||||
};
 | 
			
		||||
/**
 | 
			
		||||
 * @param {Client} client 
 | 
			
		||||
 */
 | 
			
		||||
Room.prototype.join = function(client){
 | 
			
		||||
    this.notifyActionJoined && this.send([{
 | 
			
		||||
    if(this.notifyActionJoined)
 | 
			
		||||
    {
 | 
			
		||||
        this.send([{
 | 
			
		||||
            id: client.id,
 | 
			
		||||
            roomid: this.id,
 | 
			
		||||
            ownerid: this.owner.id
 | 
			
		||||
        },'room/joined']);
 | 
			
		||||
    };
 | 
			
		||||
    client.rooms.add(this.id);
 | 
			
		||||
    this.clients.set(client.id, client);
 | 
			
		||||
    term.green("Client Room joined ").white(this.name," in ").yellow(this.clients.size  + "").white(" clients")('\n');
 | 
			
		||||
};
 | 
			
		||||
Room.prototype.down = function(){
 | 
			
		||||
    term.red("Room is downed ").red(this.name," in ").yellow(this.clients.size  + "").red(" clients")('\n');
 | 
			
		||||
    this.send([{
 | 
			
		||||
        id: client.id,
 | 
			
		||||
        roomid: this.id,
 | 
			
		||||
        ownerid: this.owner.id
 | 
			
		||||
    },'room/joined']);
 | 
			
		||||
    client.rooms.add(this.id);
 | 
			
		||||
    this.clients.set(client.id, client);
 | 
			
		||||
};
 | 
			
		||||
Room.prototype.active = function(){
 | 
			
		||||
    Room.rooms.set(this.id, this);
 | 
			
		||||
};
 | 
			
		||||
Room.prototype.deactive = function(){
 | 
			
		||||
    },'room/closed']);
 | 
			
		||||
    Room.rooms.delete(this.id);
 | 
			
		||||
};
 | 
			
		||||
/**
 | 
			
		||||
 * @param {Client} client 
 | 
			
		||||
 */
 | 
			
		||||
Room.prototype.eject = function(client){
 | 
			
		||||
    this.notifyActionEjected && this.send([{
 | 
			
		||||
        id: client.id,
 | 
			
		||||
        roomid: this.id,
 | 
			
		||||
        ownerid: this.owner.id
 | 
			
		||||
    },'room/ejected']);
 | 
			
		||||
    if(this.notifyActionEjected)
 | 
			
		||||
    {
 | 
			
		||||
        this.send([{
 | 
			
		||||
            id: client.id,
 | 
			
		||||
            roomid: this.id,
 | 
			
		||||
            ownerid: this.owner.id
 | 
			
		||||
        },'room/ejected']);
 | 
			
		||||
    }
 | 
			
		||||
    client.rooms.delete(this.id);
 | 
			
		||||
    this.clients.delete(client.id);
 | 
			
		||||
    term.red("Client Room ejected ").red(this.name," in ").yellow(this.clients.size  + "").red(" clients")('\n');
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -121,19 +135,18 @@ addListener('connect',(global, client)=>{
 | 
			
		|||
    let room = new Room();
 | 
			
		||||
    room.accessType = "private";
 | 
			
		||||
    room.joinType = "notify";
 | 
			
		||||
    room.clients.set(client.id, client);
 | 
			
		||||
    room.description = 'Yourself private room, you can invite friends';
 | 
			
		||||
    room.id = client.id;
 | 
			
		||||
    room.name = "Your Room";
 | 
			
		||||
    room.name = "Your Room | " + client.id;
 | 
			
		||||
    room.owner = client;
 | 
			
		||||
    room.join(client);
 | 
			
		||||
    room.active();
 | 
			
		||||
    room.publish();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
addListener('disconnect',(global, client)=>{
 | 
			
		||||
    Room.rooms.get(client.id).eject(client);
 | 
			
		||||
    for (const roomId of client.rooms) {
 | 
			
		||||
        Room.rooms.get(roomId).eject(client);
 | 
			
		||||
        Room.rooms.get(roomId).deactive();
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -165,6 +178,32 @@ addService(({
 | 
			
		|||
            end(room.toJSON())
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        case 'room-info':{
 | 
			
		||||
            let {name} = message;
 | 
			
		||||
            for (const [roomId,{name:RoomName}] of Room.rooms) {
 | 
			
		||||
                if(name == RoomName)
 | 
			
		||||
                {
 | 
			
		||||
                    return end({
 | 
			
		||||
                        status : "success",
 | 
			
		||||
                        room : Room.rooms.get(roomId).toJSON()
 | 
			
		||||
                    })
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
            return end({
 | 
			
		||||
                status : "fail",
 | 
			
		||||
                message : "NOT-FOUND-ROOM"
 | 
			
		||||
            })
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        case 'joinedrooms':{
 | 
			
		||||
            let data = [
 | 
			
		||||
                ...client.rooms
 | 
			
		||||
            ].map(e => {
 | 
			
		||||
                return Room.rooms.get(e).toJSON()
 | 
			
		||||
            });
 | 
			
		||||
            end(data)
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        case 'create-room':{
 | 
			
		||||
            let {error} = CreateRoomVerify.validate(message);
 | 
			
		||||
            if(error)
 | 
			
		||||
| 
						 | 
				
			
			@ -174,6 +213,16 @@ addService(({
 | 
			
		|||
                    messages: error.message
 | 
			
		||||
                })
 | 
			
		||||
            }else{
 | 
			
		||||
                let {name} = message;
 | 
			
		||||
                for (const [,{name:RoomName}] of Room.rooms) {
 | 
			
		||||
                    if(name == RoomName)
 | 
			
		||||
                    {
 | 
			
		||||
                        return end({
 | 
			
		||||
                            status : "fail",
 | 
			
		||||
                            message : "ALREADY-EXISTS"
 | 
			
		||||
                        })
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                let room = new Room();
 | 
			
		||||
                room.accessType = message.accessType;
 | 
			
		||||
                room.notifyActionInvite = message.notifyActionInvite;
 | 
			
		||||
| 
						 | 
				
			
			@ -184,16 +233,27 @@ addService(({
 | 
			
		|||
                room.name = message.name;
 | 
			
		||||
                room.owner = client;
 | 
			
		||||
                room.join(client);
 | 
			
		||||
                room.active();
 | 
			
		||||
                end(room.toJSON())
 | 
			
		||||
                room.publish();
 | 
			
		||||
                end({
 | 
			
		||||
                    status: "success",
 | 
			
		||||
                    room: room.toJSON()
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        case 'join':{
 | 
			
		||||
            let isRoom = Room.rooms.has(client.id);
 | 
			
		||||
        case 'joinroom':{
 | 
			
		||||
            let {name} = message;
 | 
			
		||||
            let roomId;
 | 
			
		||||
            for (const [roomId,{name:RoomName}] of Room.rooms) {
 | 
			
		||||
                if(name == RoomName)
 | 
			
		||||
                {
 | 
			
		||||
                    roomId = roomId
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            let isRoom = Room.rooms.has(roomId);
 | 
			
		||||
            if(isRoom)
 | 
			
		||||
            {
 | 
			
		||||
                let room = Room.rooms.get(client.id);
 | 
			
		||||
                let room = Room.rooms.get(roomId);
 | 
			
		||||
                if(room.joinType == "lock")
 | 
			
		||||
                {
 | 
			
		||||
                    return end({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,12 @@ let {http} = require("./HTTPServer");
 | 
			
		|||
let {randomUUID} = require("crypto");
 | 
			
		||||
const { Client } = require("./Client.js");
 | 
			
		||||
 | 
			
		||||
console.log("Web Socket Protocol is ready");
 | 
			
		||||
 | 
			
		||||
http.addListener("upgrade",() => {
 | 
			
		||||
    console.log("HTTP Upgrading to WebSocket");
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
let wsServer = new websocket.server({
 | 
			
		||||
    httpServer: http,
 | 
			
		||||
    autoAcceptConnections: true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,9 +12,23 @@
 | 
			
		|||
        "joi": "^17.7.0",
 | 
			
		||||
        "knex": "^2.3.0",
 | 
			
		||||
        "sqlite3": "^5.1.2",
 | 
			
		||||
        "terminal-kit": "^3.0.0",
 | 
			
		||||
        "websocket": "^1.0.34"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@cronvel/get-pixels": {
 | 
			
		||||
      "version": "3.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-gB5C5nDIacLUdsMuW8YsM9SzK3vaFANe4J11CVXpovpy7bZUGrcJKmc6m/0gWG789pKr6XSZY2aEetjFvSRw5g==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "jpeg-js": "^0.4.4",
 | 
			
		||||
        "ndarray": "^1.0.19",
 | 
			
		||||
        "ndarray-pack": "^1.1.1",
 | 
			
		||||
        "node-bitmap": "0.0.1",
 | 
			
		||||
        "omggif": "^1.0.10",
 | 
			
		||||
        "pngjs": "^6.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@gar/promisify": {
 | 
			
		||||
      "version": "1.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -235,6 +249,11 @@
 | 
			
		|||
        "node": ">=10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/chroma-js": {
 | 
			
		||||
      "version": "2.4.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
 | 
			
		||||
      "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/clean-stack": {
 | 
			
		||||
      "version": "2.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -275,6 +294,14 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/cwise-compiler": {
 | 
			
		||||
      "version": "1.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "uniq": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/d": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -606,12 +633,22 @@
 | 
			
		|||
        "node": ">= 0.10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/iota-array": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ip": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/is-buffer": {
 | 
			
		||||
      "version": "1.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/is-core-module": {
 | 
			
		||||
      "version": "2.11.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -660,6 +697,11 @@
 | 
			
		|||
        "@sideway/pinpoint": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/jpeg-js": {
 | 
			
		||||
      "version": "0.4.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
 | 
			
		||||
      "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/knex": {
 | 
			
		||||
      "version": "2.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/knex/-/knex-2.3.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -710,6 +752,14 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lazyness": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KenL6EFbwxBwRxG93t0gcUyi0Nw0Ub31FJKN1laA4UscdkL1K1AxUd0gYZdcLU3v+x+wcFi4uQKS5hL+fk500g==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lodash": {
 | 
			
		||||
      "version": "4.17.21",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -890,6 +940,24 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ndarray": {
 | 
			
		||||
      "version": "1.0.19",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz",
 | 
			
		||||
      "integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "iota-array": "^1.0.0",
 | 
			
		||||
        "is-buffer": "^1.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ndarray-pack": {
 | 
			
		||||
      "version": "1.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "cwise-compiler": "^1.1.2",
 | 
			
		||||
        "ndarray": "^1.0.13"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/negotiator": {
 | 
			
		||||
      "version": "0.6.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -904,11 +972,27 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/nextgen-events": {
 | 
			
		||||
      "version": "1.5.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.5.3.tgz",
 | 
			
		||||
      "integrity": "sha512-P6qw6kenNXP+J9XlKJNi/MNHUQ+Lx5K8FEcSfX7/w8KJdZan5+BB5MKzuNgL2RTjHG1Svg8SehfseVEp8zAqwA==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/node-addon-api": {
 | 
			
		||||
      "version": "4.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/node-bitmap": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=v0.6.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/node-fetch": {
 | 
			
		||||
      "version": "2.6.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1042,6 +1126,11 @@
 | 
			
		|||
        "node": ">=0.10.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/omggif": {
 | 
			
		||||
      "version": "1.0.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
 | 
			
		||||
      "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/once": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1083,6 +1172,14 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
 | 
			
		||||
      "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/pngjs": {
 | 
			
		||||
      "version": "6.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=12.13.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/promise-inflight": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1217,6 +1314,22 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/setimmediate": {
 | 
			
		||||
      "version": "1.0.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
 | 
			
		||||
      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/seventh": {
 | 
			
		||||
      "version": "0.8.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/seventh/-/seventh-0.8.1.tgz",
 | 
			
		||||
      "integrity": "sha512-houkkIUA97+aLqTAfgzEAIHfPkjKaJXek7zESTrMs+eFfsHvUjzrjxEstZiFTGKwOR+VJQ4p+/AlWwObcDE+xQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "setimmediate": "^1.0.5"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=16.13.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/signal-exit": {
 | 
			
		||||
      "version": "3.0.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1302,6 +1415,14 @@
 | 
			
		|||
        "safe-buffer": "~5.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/string-kit": {
 | 
			
		||||
      "version": "0.17.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string-kit/-/string-kit-0.17.6.tgz",
 | 
			
		||||
      "integrity": "sha512-o3ivC9/8proGcnA5Janz3DBqpG9lEV6e8wXviPLy8RKHgqaBbRDpU0jpFUa6caarMFhgJZIom+jrjYWMplJkmw==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.15.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/string-width": {
 | 
			
		||||
      "version": "4.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1361,6 +1482,24 @@
 | 
			
		|||
        "node": ">=8.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/terminal-kit": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/terminal-kit/-/terminal-kit-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-GSJGYF0+hoFylKJXmq0ntE42b4S7zUkxFpf7FqHGwKFPCNeGkuv3jV0tmGquZkmfh5mYb/B2xoPJiP40mJsQrg==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@cronvel/get-pixels": "^3.4.1",
 | 
			
		||||
        "chroma-js": "^2.4.2",
 | 
			
		||||
        "lazyness": "^1.2.0",
 | 
			
		||||
        "ndarray": "^1.0.19",
 | 
			
		||||
        "nextgen-events": "^1.5.3",
 | 
			
		||||
        "seventh": "^0.8.1",
 | 
			
		||||
        "string-kit": "^0.17.6",
 | 
			
		||||
        "tree-kit": "^0.7.4"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=16.13.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tildify": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1374,6 +1513,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tree-kit": {
 | 
			
		||||
      "version": "0.7.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.4.tgz",
 | 
			
		||||
      "integrity": "sha512-Of3tPmVs3b6BhzyUJ7t0olisf47kYr9qAm0XaUpURMjdBn6TwiVaaMuTFoKkkvPGojd9trKAHlrGGcGKcdR1DA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/type": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1387,6 +1531,11 @@
 | 
			
		|||
        "is-typedarray": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/uniq": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/unique-filename": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1508,6 +1657,19 @@
 | 
			
		|||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@cronvel/get-pixels": {
 | 
			
		||||
      "version": "3.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@cronvel/get-pixels/-/get-pixels-3.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-gB5C5nDIacLUdsMuW8YsM9SzK3vaFANe4J11CVXpovpy7bZUGrcJKmc6m/0gWG789pKr6XSZY2aEetjFvSRw5g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "jpeg-js": "^0.4.4",
 | 
			
		||||
        "ndarray": "^1.0.19",
 | 
			
		||||
        "ndarray-pack": "^1.1.1",
 | 
			
		||||
        "node-bitmap": "0.0.1",
 | 
			
		||||
        "omggif": "^1.0.10",
 | 
			
		||||
        "pngjs": "^6.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@gar/promisify": {
 | 
			
		||||
      "version": "1.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1693,6 +1855,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "chroma-js": {
 | 
			
		||||
      "version": "2.4.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
 | 
			
		||||
      "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
 | 
			
		||||
    },
 | 
			
		||||
    "clean-stack": {
 | 
			
		||||
      "version": "2.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1724,6 +1891,14 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "cwise-compiler": {
 | 
			
		||||
      "version": "1.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "uniq": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "d": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -1994,12 +2169,22 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
 | 
			
		||||
    },
 | 
			
		||||
    "iota-array": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA=="
 | 
			
		||||
    },
 | 
			
		||||
    "ip": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "is-buffer": {
 | 
			
		||||
      "version": "1.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
 | 
			
		||||
    },
 | 
			
		||||
    "is-core-module": {
 | 
			
		||||
      "version": "2.11.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2042,6 +2227,11 @@
 | 
			
		|||
        "@sideway/pinpoint": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "jpeg-js": {
 | 
			
		||||
      "version": "0.4.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
 | 
			
		||||
      "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
 | 
			
		||||
    },
 | 
			
		||||
    "knex": {
 | 
			
		||||
      "version": "2.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/knex/-/knex-2.3.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2063,6 +2253,11 @@
 | 
			
		|||
        "tildify": "2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "lazyness": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lazyness/-/lazyness-1.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KenL6EFbwxBwRxG93t0gcUyi0Nw0Ub31FJKN1laA4UscdkL1K1AxUd0gYZdcLU3v+x+wcFi4uQKS5hL+fk500g=="
 | 
			
		||||
    },
 | 
			
		||||
    "lodash": {
 | 
			
		||||
      "version": "4.17.21",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2198,6 +2393,24 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
 | 
			
		||||
    },
 | 
			
		||||
    "ndarray": {
 | 
			
		||||
      "version": "1.0.19",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz",
 | 
			
		||||
      "integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "iota-array": "^1.0.0",
 | 
			
		||||
        "is-buffer": "^1.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ndarray-pack": {
 | 
			
		||||
      "version": "1.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "cwise-compiler": "^1.1.2",
 | 
			
		||||
        "ndarray": "^1.0.13"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "negotiator": {
 | 
			
		||||
      "version": "0.6.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2209,11 +2422,21 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "nextgen-events": {
 | 
			
		||||
      "version": "1.5.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/nextgen-events/-/nextgen-events-1.5.3.tgz",
 | 
			
		||||
      "integrity": "sha512-P6qw6kenNXP+J9XlKJNi/MNHUQ+Lx5K8FEcSfX7/w8KJdZan5+BB5MKzuNgL2RTjHG1Svg8SehfseVEp8zAqwA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node-addon-api": {
 | 
			
		||||
      "version": "4.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node-bitmap": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node-fetch": {
 | 
			
		||||
      "version": "2.6.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2309,6 +2532,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
 | 
			
		||||
    },
 | 
			
		||||
    "omggif": {
 | 
			
		||||
      "version": "1.0.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
 | 
			
		||||
      "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
 | 
			
		||||
    },
 | 
			
		||||
    "once": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2341,6 +2569,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
 | 
			
		||||
      "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "pngjs": {
 | 
			
		||||
      "version": "6.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="
 | 
			
		||||
    },
 | 
			
		||||
    "promise-inflight": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2428,6 +2661,19 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
 | 
			
		||||
    },
 | 
			
		||||
    "setimmediate": {
 | 
			
		||||
      "version": "1.0.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
 | 
			
		||||
      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
 | 
			
		||||
    },
 | 
			
		||||
    "seventh": {
 | 
			
		||||
      "version": "0.8.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/seventh/-/seventh-0.8.1.tgz",
 | 
			
		||||
      "integrity": "sha512-houkkIUA97+aLqTAfgzEAIHfPkjKaJXek7zESTrMs+eFfsHvUjzrjxEstZiFTGKwOR+VJQ4p+/AlWwObcDE+xQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "setimmediate": "^1.0.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "signal-exit": {
 | 
			
		||||
      "version": "3.0.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2488,6 +2734,11 @@
 | 
			
		|||
        "safe-buffer": "~5.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "string-kit": {
 | 
			
		||||
      "version": "0.17.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string-kit/-/string-kit-0.17.6.tgz",
 | 
			
		||||
      "integrity": "sha512-o3ivC9/8proGcnA5Janz3DBqpG9lEV6e8wXviPLy8RKHgqaBbRDpU0jpFUa6caarMFhgJZIom+jrjYWMplJkmw=="
 | 
			
		||||
    },
 | 
			
		||||
    "string-width": {
 | 
			
		||||
      "version": "4.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2529,6 +2780,21 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "terminal-kit": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/terminal-kit/-/terminal-kit-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-GSJGYF0+hoFylKJXmq0ntE42b4S7zUkxFpf7FqHGwKFPCNeGkuv3jV0tmGquZkmfh5mYb/B2xoPJiP40mJsQrg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@cronvel/get-pixels": "^3.4.1",
 | 
			
		||||
        "chroma-js": "^2.4.2",
 | 
			
		||||
        "lazyness": "^1.2.0",
 | 
			
		||||
        "ndarray": "^1.0.19",
 | 
			
		||||
        "nextgen-events": "^1.5.3",
 | 
			
		||||
        "seventh": "^0.8.1",
 | 
			
		||||
        "string-kit": "^0.17.6",
 | 
			
		||||
        "tree-kit": "^0.7.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tildify": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2539,6 +2805,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
 | 
			
		||||
    },
 | 
			
		||||
    "tree-kit": {
 | 
			
		||||
      "version": "0.7.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.4.tgz",
 | 
			
		||||
      "integrity": "sha512-Of3tPmVs3b6BhzyUJ7t0olisf47kYr9qAm0XaUpURMjdBn6TwiVaaMuTFoKkkvPGojd9trKAHlrGGcGKcdR1DA=="
 | 
			
		||||
    },
 | 
			
		||||
    "type": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2552,6 +2823,11 @@
 | 
			
		|||
        "is-typedarray": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "uniq": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA=="
 | 
			
		||||
    },
 | 
			
		||||
    "unique-filename": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@
 | 
			
		|||
    "joi": "^17.7.0",
 | 
			
		||||
    "knex": "^2.3.0",
 | 
			
		||||
    "sqlite3": "^5.1.2",
 | 
			
		||||
    "terminal-kit": "^3.0.0",
 | 
			
		||||
    "websocket": "^1.0.34"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										24
									
								
								test.html
								
								
								
								
							
							
						
						
									
										24
									
								
								test.html
								
								
								
								
							| 
						 | 
				
			
			@ -12,18 +12,30 @@
 | 
			
		|||
        let ws = new WSJS();
 | 
			
		||||
        ws.connect('ws://localhost:8282');
 | 
			
		||||
        ws.scope(async ()=>{
 | 
			
		||||
            let secretRoom;
 | 
			
		||||
            console.log("Connected ws")
 | 
			
		||||
            let roomInfo = await ws.fetchMyRoomInfo();
 | 
			
		||||
            let secretRoom = await ws.createRoom({
 | 
			
		||||
                name: "Benim Odam",
 | 
			
		||||
                description: "Gizli Odam"
 | 
			
		||||
            });
 | 
			
		||||
            let roomInfo = await ws.roomInfo("MY-ROOM");
 | 
			
		||||
 | 
			
		||||
            if(roomInfo.status == 'fail' && roomInfo.message == "NOT-FOUND-ROOM")
 | 
			
		||||
            {
 | 
			
		||||
                let secretRoom = await ws.createRoom({
 | 
			
		||||
                    name: "MY-ROOM",
 | 
			
		||||
                    description: "Gizli Odam",
 | 
			
		||||
                    joinType: "free"
 | 
			
		||||
                });
 | 
			
		||||
                console.log(secretRoom);
 | 
			
		||||
            }else{
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            console.log(await ws.getJoinedRooms());
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
        ws.signal('id',(data)=>{
 | 
			
		||||
            console.log("Your id is ", data.value)
 | 
			
		||||
        });
 | 
			
		||||
        ws.signal("room/joined",(joinStatus)=>{
 | 
			
		||||
            console.log("Room ejected", joinStatus)
 | 
			
		||||
            console.log("Room joined", joinStatus)
 | 
			
		||||
        });
 | 
			
		||||
        ws.signal("room/ejected",(ejectStatus)=>{
 | 
			
		||||
            console.log("Room ejected", ejectStatus)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										32
									
								
								wsjs.js
								
								
								
								
							
							
						
						
									
										32
									
								
								wsjs.js
								
								
								
								
							| 
						 | 
				
			
			@ -115,6 +115,7 @@ WSJS.prototype.sendRaw = function(obj){
 | 
			
		|||
    };
 | 
			
		||||
}
 | 
			
		||||
WSJS.prototype.checkAuth = async function(username, password){
 | 
			
		||||
    return false;
 | 
			
		||||
    let {value:isAuth} = await this.request({
 | 
			
		||||
        type: 'auth/check'
 | 
			
		||||
    });
 | 
			
		||||
| 
						 | 
				
			
			@ -152,6 +153,35 @@ WSJS.prototype.createRoom = async function(options){
 | 
			
		|||
            name: options.name || "No"
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
        debugger;
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
WSJS.prototype.roomInfo = async function(name){
 | 
			
		||||
    if(!await this.checkAuth())
 | 
			
		||||
    {
 | 
			
		||||
        let result =  await this.request({
 | 
			
		||||
            type: 'room-info',
 | 
			
		||||
            name
 | 
			
		||||
        });
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
WSJS.prototype.joinRoom = async function(name){
 | 
			
		||||
    if(!await this.checkAuth())
 | 
			
		||||
    {
 | 
			
		||||
        let result =  await this.request({
 | 
			
		||||
            type: 'joinroom',
 | 
			
		||||
            name
 | 
			
		||||
        });
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
WSJS.prototype.joinedRooms = new Map();
 | 
			
		||||
WSJS.prototype.getJoinedRooms = async function(){
 | 
			
		||||
    if(!await this.checkAuth())
 | 
			
		||||
    {
 | 
			
		||||
        return await this.request({
 | 
			
		||||
            type: 'joinedrooms'
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
		Loading…
	
		Reference in New Issue