@eleven-am/pondsocket-nest 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +523 -0
- package/constants.js +13 -0
- package/context/context.js +96 -0
- package/context.d.ts +263 -0
- package/decorators/channel.js +11 -0
- package/decorators/channelInstance.js +16 -0
- package/decorators/endpoint.js +11 -0
- package/decorators/endpointInstance.js +11 -0
- package/decorators/getChannel.js +11 -0
- package/decorators/getConnectionHeaders.js +11 -0
- package/decorators/getConnectionRequest.js +11 -0
- package/decorators/getConnectionResponse.js +11 -0
- package/decorators/getContext.js +5 -0
- package/decorators/getEventParams.js +11 -0
- package/decorators/getEventPayload.js +11 -0
- package/decorators/getEventQuery.js +11 -0
- package/decorators/getEventRequest.js +11 -0
- package/decorators/getEventResponse.js +11 -0
- package/decorators/getJoinParams.js +11 -0
- package/decorators/getJoinRequest.js +11 -0
- package/decorators/getJoinResponse.js +11 -0
- package/decorators/getLeaveEvent.js +11 -0
- package/decorators/getUserData.js +11 -0
- package/decorators/getUserPresences.js +11 -0
- package/decorators/index.js +41 -0
- package/decorators/onConnectionRequest.js +30 -0
- package/decorators/onEvent.js +30 -0
- package/decorators/onJoinRequest.js +30 -0
- package/decorators/onLeave.js +24 -0
- package/decorators/pondGuards.js +11 -0
- package/helpers/createParamDecorator.js +11 -0
- package/index.js +18 -0
- package/managers/channel.js +9 -0
- package/managers/channelInstance.js +9 -0
- package/managers/class.js +16 -0
- package/managers/connection.js +9 -0
- package/managers/endpoint.js +9 -0
- package/managers/endpointInstance.js +9 -0
- package/managers/event.js +9 -0
- package/managers/guards.js +29 -0
- package/managers/handlers.js +23 -0
- package/managers/join.js +9 -0
- package/managers/leave.js +9 -0
- package/managers/method.js +16 -0
- package/managers/parametres.js +25 -0
- package/managers/property.js +29 -0
- package/modules/pondSocket.js +36 -0
- package/package.json +64 -0
- package/performers/action.js +62 -0
- package/performers/errors.js +17 -0
- package/performers/guards.js +35 -0
- package/performers/response.js +52 -0
- package/services/discovery.js +127 -0
- package/services/pondSocket.js +138 -0
- package/types.js +2 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OnLeave = void 0;
|
|
13
|
+
const leave_1 = require("../managers/leave");
|
|
14
|
+
const action_1 = require("../performers/action");
|
|
15
|
+
function OnLeave() {
|
|
16
|
+
return (target, propertyKey, descriptor) => {
|
|
17
|
+
const originalMethod = descriptor.value;
|
|
18
|
+
const { set } = (0, leave_1.manageLeave)(target);
|
|
19
|
+
set('', (instance, moduleRef, leaveEvent) => __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
yield (0, action_1.performAction)(instance, moduleRef, originalMethod, propertyKey, leaveEvent);
|
|
21
|
+
}));
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
exports.OnLeave = OnLeave;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PondGuards = void 0;
|
|
4
|
+
const guards_1 = require("../managers/guards");
|
|
5
|
+
function PondGuards(...guards) {
|
|
6
|
+
return (target, propertyKey) => {
|
|
7
|
+
const { set } = (0, guards_1.manageGuards)(target, propertyKey);
|
|
8
|
+
set(guards);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.PondGuards = PondGuards;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createParamDecorator = void 0;
|
|
4
|
+
const parametres_1 = require("../managers/parametres");
|
|
5
|
+
function createParamDecorator(callback) {
|
|
6
|
+
return (data) => (target, propertyKey, index) => {
|
|
7
|
+
const { set } = (0, parametres_1.manageParameters)(target, propertyKey);
|
|
8
|
+
set(index, (context) => callback(data, context));
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.createParamDecorator = createParamDecorator;
|
package/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./decorators"), exports);
|
|
18
|
+
__exportStar(require("./modules/pondSocket"), exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageChannel = void 0;
|
|
4
|
+
const class_1 = require("./class");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageChannel(target) {
|
|
7
|
+
return (0, class_1.manageClass)(constants_1.channelKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageChannel = manageChannel;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageChannelInstance = void 0;
|
|
4
|
+
const property_1 = require("./property");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageChannelInstance(target) {
|
|
7
|
+
return (0, property_1.manageProperty)(constants_1.channelInstanceKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageChannelInstance = manageChannelInstance;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageClass = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
function manageClass(key, target) {
|
|
6
|
+
return {
|
|
7
|
+
get() {
|
|
8
|
+
var _a;
|
|
9
|
+
return ((_a = Reflect.getMetadata(key, target)) !== null && _a !== void 0 ? _a : null);
|
|
10
|
+
},
|
|
11
|
+
set(value) {
|
|
12
|
+
Reflect.defineMetadata(key, value, target);
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
exports.manageClass = manageClass;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageConnection = void 0;
|
|
4
|
+
const handlers_1 = require("./handlers");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageConnection(target) {
|
|
7
|
+
return (0, handlers_1.manageHandlers)(constants_1.onConnectionHandlerKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageConnection = manageConnection;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageEndpoint = void 0;
|
|
4
|
+
const class_1 = require("./class");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageEndpoint(target) {
|
|
7
|
+
return (0, class_1.manageClass)(constants_1.endpointKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageEndpoint = manageEndpoint;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageEndpointInstance = void 0;
|
|
4
|
+
const property_1 = require("./property");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageEndpointInstance(target) {
|
|
7
|
+
return (0, property_1.manageProperty)(constants_1.endpointInstanceKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageEndpointInstance = manageEndpointInstance;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageEvent = void 0;
|
|
4
|
+
const handlers_1 = require("./handlers");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageEvent(target) {
|
|
7
|
+
return (0, handlers_1.manageHandlers)(constants_1.onEventHandlerKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageEvent = manageEvent;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageGuards = void 0;
|
|
4
|
+
const class_1 = require("./class");
|
|
5
|
+
const method_1 = require("./method");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
function manageGuards(target, propertyKey) {
|
|
8
|
+
let getter;
|
|
9
|
+
let setter;
|
|
10
|
+
if (propertyKey) {
|
|
11
|
+
const { get, set } = (0, method_1.manageMethod)(constants_1.pondGuardsKey, target, propertyKey);
|
|
12
|
+
getter = get;
|
|
13
|
+
setter = set;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
const { get, set } = (0, class_1.manageClass)(constants_1.pondGuardsKey, target);
|
|
17
|
+
getter = get;
|
|
18
|
+
setter = set;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
get: () => { var _a; return (_a = getter()) !== null && _a !== void 0 ? _a : []; },
|
|
22
|
+
set: (value) => {
|
|
23
|
+
var _a;
|
|
24
|
+
const current = (_a = getter()) !== null && _a !== void 0 ? _a : [];
|
|
25
|
+
setter([...value, ...current]);
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
exports.manageGuards = manageGuards;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageHandlers = void 0;
|
|
4
|
+
const class_1 = require("./class");
|
|
5
|
+
function manageHandlers(key, target) {
|
|
6
|
+
const { get, set } = (0, class_1.manageClass)(key, target);
|
|
7
|
+
return {
|
|
8
|
+
get() {
|
|
9
|
+
return get() || [];
|
|
10
|
+
},
|
|
11
|
+
set(path, value) {
|
|
12
|
+
const handlers = get() || [];
|
|
13
|
+
set([
|
|
14
|
+
...handlers,
|
|
15
|
+
{
|
|
16
|
+
path,
|
|
17
|
+
value,
|
|
18
|
+
},
|
|
19
|
+
]);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.manageHandlers = manageHandlers;
|
package/managers/join.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageJoin = void 0;
|
|
4
|
+
const handlers_1 = require("./handlers");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageJoin(target) {
|
|
7
|
+
return (0, handlers_1.manageHandlers)(constants_1.onJoinHandlerKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageJoin = manageJoin;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageLeave = void 0;
|
|
4
|
+
const handlers_1 = require("./handlers");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function manageLeave(target) {
|
|
7
|
+
return (0, handlers_1.manageHandlers)(constants_1.onLeaveHandlerKey, target);
|
|
8
|
+
}
|
|
9
|
+
exports.manageLeave = manageLeave;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageMethod = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
function manageMethod(key, target, propertyKey) {
|
|
6
|
+
return {
|
|
7
|
+
get() {
|
|
8
|
+
var _a;
|
|
9
|
+
return ((_a = Reflect.getMetadata(key, target, propertyKey)) !== null && _a !== void 0 ? _a : null);
|
|
10
|
+
},
|
|
11
|
+
set(value) {
|
|
12
|
+
Reflect.defineMetadata(key, value, target, propertyKey);
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
exports.manageMethod = manageMethod;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageParameters = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const method_1 = require("./method");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
function manageParameters(target, propertyKey) {
|
|
8
|
+
const { get, set } = (0, method_1.manageMethod)(constants_1.parametersKey, target, propertyKey);
|
|
9
|
+
return {
|
|
10
|
+
get() {
|
|
11
|
+
return get() || [];
|
|
12
|
+
},
|
|
13
|
+
set(index, callback) {
|
|
14
|
+
const handlers = get() || [];
|
|
15
|
+
set([
|
|
16
|
+
...handlers,
|
|
17
|
+
{
|
|
18
|
+
index,
|
|
19
|
+
callback,
|
|
20
|
+
},
|
|
21
|
+
]);
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.manageParameters = manageParameters;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.manageProperty = void 0;
|
|
4
|
+
function manageProperty(key, target) {
|
|
5
|
+
function build(propertyKey, callback) {
|
|
6
|
+
Object.defineProperty(target, propertyKey, {
|
|
7
|
+
get() {
|
|
8
|
+
const value = Reflect.getMetadata(key, this);
|
|
9
|
+
if (callback) {
|
|
10
|
+
return callback(value);
|
|
11
|
+
}
|
|
12
|
+
return value;
|
|
13
|
+
},
|
|
14
|
+
set() {
|
|
15
|
+
throw new Error(`${propertyKey} is readonly`);
|
|
16
|
+
},
|
|
17
|
+
enumerable: true,
|
|
18
|
+
configurable: true,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function set(value) {
|
|
22
|
+
Reflect.defineMetadata(key, value, target);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
build,
|
|
26
|
+
set,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
exports.manageProperty = manageProperty;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PondSocketModule = void 0;
|
|
4
|
+
// eslint-disable-next-line import/no-unresolved
|
|
5
|
+
const core_1 = require("@nestjs/core");
|
|
6
|
+
// eslint-disable-next-line import/no-unresolved
|
|
7
|
+
const modules_container_1 = require("@nestjs/core/injector/modules-container");
|
|
8
|
+
const discovery_1 = require("../services/discovery");
|
|
9
|
+
const pondSocket_1 = require("../services/pondSocket");
|
|
10
|
+
class PondSocketModule {
|
|
11
|
+
static forRoot({ guards = [], providers = [], imports = [], exports = [], isGlobal = false, appModuleName = 'AppModule', }) {
|
|
12
|
+
const discoveryServiceProvider = {
|
|
13
|
+
provide: discovery_1.DiscoveryService,
|
|
14
|
+
useFactory: (moduleRef) => new discovery_1.DiscoveryService(moduleRef, appModuleName),
|
|
15
|
+
inject: [modules_container_1.ModulesContainer, core_1.HttpAdapterHost],
|
|
16
|
+
};
|
|
17
|
+
const pondSocketProvider = {
|
|
18
|
+
provide: pondSocket_1.PondSocketService,
|
|
19
|
+
useFactory: (moduleRef, adapterHost, discovery) => new pondSocket_1.PondSocketService(moduleRef, discovery, adapterHost, guards),
|
|
20
|
+
inject: [core_1.ModuleRef, core_1.HttpAdapterHost, discovery_1.DiscoveryService],
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
imports,
|
|
24
|
+
exports,
|
|
25
|
+
global: isGlobal,
|
|
26
|
+
module: PondSocketModule,
|
|
27
|
+
providers: [
|
|
28
|
+
discoveryServiceProvider,
|
|
29
|
+
pondSocketProvider,
|
|
30
|
+
...providers,
|
|
31
|
+
...guards,
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.PondSocketModule = PondSocketModule;
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eleven-am/pondsocket-nest",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "PondSocket is a fast simple socket server",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"socket",
|
|
7
|
+
"server",
|
|
8
|
+
"ws",
|
|
9
|
+
"websocket",
|
|
10
|
+
"pubsub",
|
|
11
|
+
"presence",
|
|
12
|
+
"realtime",
|
|
13
|
+
"realtime server"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"author": "Roy OSSAI",
|
|
19
|
+
"main": "./index.js",
|
|
20
|
+
"types": "./index.d.ts",
|
|
21
|
+
"license": "GPL-3.0",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "rimraf dist && tsc",
|
|
24
|
+
"lint": "eslint --ext .ts src",
|
|
25
|
+
"lint:fix": "eslint --fix --ext .ts src",
|
|
26
|
+
"copy": "cp package.json dist && cp README.md dist && cp LICENSE dist && cp src/context.d.ts dist",
|
|
27
|
+
"push": "npm version patch && npm run copy && cd dist && npm publish && cd ..",
|
|
28
|
+
"pipeline": "npm run lint && npm run build && npm run push"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@eleven-am/pondsocket": "^0.1.127"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@nestjs/common": "^10.3.0",
|
|
35
|
+
"@nestjs/core": "^10.3.0",
|
|
36
|
+
"@types/jest": "^29.5.11",
|
|
37
|
+
"@typescript-eslint/eslint-plugin": "^6.18.0",
|
|
38
|
+
"eslint-plugin-file-progress": "^1.3.0",
|
|
39
|
+
"eslint-plugin-import": "^2.29.1",
|
|
40
|
+
"jest": "^29.7.0",
|
|
41
|
+
"prettier": "^3.1.1",
|
|
42
|
+
"ts-jest": "^29.1.1",
|
|
43
|
+
"ts-loader": "^9.5.1",
|
|
44
|
+
"ts-node": "^10.9.2",
|
|
45
|
+
"typescript": "^5.3.3"
|
|
46
|
+
},
|
|
47
|
+
"jest": {
|
|
48
|
+
"moduleFileExtensions": [
|
|
49
|
+
"js",
|
|
50
|
+
"json",
|
|
51
|
+
"ts"
|
|
52
|
+
],
|
|
53
|
+
"rootDir": "src",
|
|
54
|
+
"testRegex": ".*\\.test\\.ts$",
|
|
55
|
+
"transform": {
|
|
56
|
+
"^.+\\.(t|j)s$": "ts-jest"
|
|
57
|
+
},
|
|
58
|
+
"collectCoverageFrom": [
|
|
59
|
+
"**/*.(t|j)s"
|
|
60
|
+
],
|
|
61
|
+
"coverageDirectory": "../coverage",
|
|
62
|
+
"testEnvironment": "node"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.performAction = void 0;
|
|
13
|
+
const guards_1 = require("./guards");
|
|
14
|
+
const response_1 = require("./response");
|
|
15
|
+
const context_1 = require("../context/context");
|
|
16
|
+
const parametres_1 = require("../managers/parametres");
|
|
17
|
+
function retrieveParameters(context) {
|
|
18
|
+
var _a;
|
|
19
|
+
const gottenValues = (_a = (0, parametres_1.manageParameters)(context.getClass(), context.getHandler()).get()) !== null && _a !== void 0 ? _a : [];
|
|
20
|
+
const values = gottenValues
|
|
21
|
+
.map(({ callback, index }) => ({
|
|
22
|
+
value: callback(context),
|
|
23
|
+
index,
|
|
24
|
+
}));
|
|
25
|
+
return values
|
|
26
|
+
.sort((a, b) => a.index - b.index)
|
|
27
|
+
.map(({ value }) => value);
|
|
28
|
+
}
|
|
29
|
+
function performAction(instance, moduleRef, originalMethod, propertyKey, leaveEvent, request, response) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const req = {};
|
|
32
|
+
const res = {};
|
|
33
|
+
if (request && response) {
|
|
34
|
+
if ('joinParams' in request && 'broadcast' in response && !('sendOnly' in response)) {
|
|
35
|
+
req.joinRequest = request;
|
|
36
|
+
res.joinResponse = response;
|
|
37
|
+
}
|
|
38
|
+
else if ('channel' in request && 'sendOnly' in response) {
|
|
39
|
+
req.eventRequest = request;
|
|
40
|
+
res.eventResponse = response;
|
|
41
|
+
}
|
|
42
|
+
else if ('headers' in request) {
|
|
43
|
+
req.connection = request;
|
|
44
|
+
res.connection = response;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (leaveEvent) {
|
|
48
|
+
req.leveeEvent = leaveEvent;
|
|
49
|
+
}
|
|
50
|
+
const context = new context_1.Context(req, res, instance, propertyKey);
|
|
51
|
+
const channel = context.channel;
|
|
52
|
+
const canProceed = yield (0, guards_1.performGuards)(moduleRef, context);
|
|
53
|
+
if (canProceed) {
|
|
54
|
+
const data = yield originalMethod.apply(instance, retrieveParameters(context));
|
|
55
|
+
(0, response_1.performResponse)(data, channel, response);
|
|
56
|
+
}
|
|
57
|
+
else if (response) {
|
|
58
|
+
response.reject('Unauthorized', 401);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
exports.performAction = performAction;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.performErrors = void 0;
|
|
4
|
+
// eslint-disable-next-line import/no-unresolved
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
function performErrors(error, response) {
|
|
7
|
+
if (response.hasResponded) {
|
|
8
|
+
return response;
|
|
9
|
+
}
|
|
10
|
+
if (error instanceof common_1.HttpException) {
|
|
11
|
+
return response.reject(error.message, error.getStatus());
|
|
12
|
+
}
|
|
13
|
+
if (error instanceof Error) {
|
|
14
|
+
return response.reject(error.message, 500);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.performErrors = performErrors;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.performGuards = void 0;
|
|
13
|
+
const guards_1 = require("../managers/guards");
|
|
14
|
+
function retrieveGuard(moduleRef, Guard) {
|
|
15
|
+
try {
|
|
16
|
+
return moduleRef.get(Guard, { strict: false });
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
console.warn(`Unable to resolve guard: ${Guard.name}, creating new instance, WARNING: this will not inject dependencies. To fix this, add the guard to the providers array of the PondSocketModule.`);
|
|
20
|
+
return new Guard();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function performGuards(moduleRef, context) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const classGuards = (0, guards_1.manageGuards)(context.getClass()).get();
|
|
26
|
+
const methodGuards = (0, guards_1.manageGuards)(context.getClass(), context.getHandler()).get();
|
|
27
|
+
const guards = []
|
|
28
|
+
.concat(classGuards, methodGuards)
|
|
29
|
+
.map((Guard) => retrieveGuard(moduleRef, Guard));
|
|
30
|
+
const promises = guards.map((guard) => guard.canActivate(context));
|
|
31
|
+
const results = yield Promise.all(promises);
|
|
32
|
+
return results.every((result) => result);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
exports.performGuards = performGuards;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.performResponse = void 0;
|
|
15
|
+
function isNotEmpty(value) {
|
|
16
|
+
return value !== null &&
|
|
17
|
+
value !== undefined &&
|
|
18
|
+
value !== '' &&
|
|
19
|
+
Object.keys(value).length !== 0;
|
|
20
|
+
}
|
|
21
|
+
function performResponse(data, channel, response) {
|
|
22
|
+
if (response && response.hasResponded || !isNotEmpty(data)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const { event, presence, updatePresence, assigns, broadcast } = data, rest = __rest(data, ["event", "presence", "updatePresence", "assigns", "broadcast"]);
|
|
26
|
+
if (response) {
|
|
27
|
+
if (event && typeof event === 'string' && isNotEmpty(rest)) {
|
|
28
|
+
if ('sendOnly' in response) {
|
|
29
|
+
response.sendOnly(event, rest, assigns);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
response.send(event, rest, assigns);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (isNotEmpty(assigns)) {
|
|
36
|
+
response.accept(assigns);
|
|
37
|
+
}
|
|
38
|
+
if (broadcast && typeof broadcast === 'string' && isNotEmpty(rest) && 'broadcast' in response) {
|
|
39
|
+
response.broadcast(broadcast, rest);
|
|
40
|
+
}
|
|
41
|
+
if ('trackPresence' in response && presence) {
|
|
42
|
+
response.trackPresence(presence);
|
|
43
|
+
}
|
|
44
|
+
else if ('updatePresence' in response && updatePresence) {
|
|
45
|
+
response.updatePresence(updatePresence);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (channel && broadcast && typeof broadcast === 'string' && isNotEmpty(rest)) {
|
|
49
|
+
channel.broadcastMessage(broadcast, rest);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.performResponse = performResponse;
|