Delete dist
continuous-integration/drone/push Build is passing Details

pull/19/head
Emre KARTAL 2 years ago
parent b1f1269f97
commit bd6d47987c

@ -73,7 +73,6 @@ node_modules
*.log
.nvm
package-lock.json
dist
# OS X
.DS_Store

@ -1,48 +0,0 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = __importDefault(require("express"));
const cors_1 = __importDefault(require("cors"));
const config_1 = require("./config");
const cookie_parser_1 = __importDefault(require("cookie-parser"));
const body_parser_1 = __importDefault(require("body-parser"));
const mongoose_1 = __importDefault(require("mongoose"));
class App {
constructor(controllers, port) {
this.express = (0, express_1.default)();
this.port = port;
this.initDatabase();
this.initMiddleware();
this.initControllers(controllers);
}
initMiddleware() {
this.express.use((0, cors_1.default)());
this.express.use((0, cookie_parser_1.default)());
this.express.use(express_1.default.json());
this.express.use(express_1.default.urlencoded({ extended: false }));
this.express.use(body_parser_1.default.json());
this.express.use(body_parser_1.default.urlencoded({
extended: true
}));
}
initControllers(controllers) {
controllers.forEach((controller) => {
this.express.use('/api', controller.router);
});
}
listen() {
this.express.listen(this.port, () => {
console.log(`[server] : App listening on the port ${this.port}`);
});
}
initDatabase() {
const MONGO_URL = `mongodb+srv://FladDev:${config_1.MONGO_PASSWORD}@flad.mliekr2.mongodb.net/?retryWrites=true&w=majority`;
mongoose_1.default.connect(MONGO_URL)
.then(() => console.log("Connect to MongoDB database successfully"))
.catch(error => console.log("Error connecting : " + error));
}
}
exports.default = App;
//# sourceMappingURL=app.js.map

@ -1 +0,0 @@
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;;;AAAA,sDAA+C;AAC/C,gDAAwB;AACxB,qCAA0C;AAC1C,kEAAyC;AACzC,8DAAqC;AAErC,wDAAgC;AAEhC,MAAM,GAAG;IAML,YAAY,WAAyB,EAAE,IAAY;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAO,GAAE,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,uBAAY,GAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAU,CAAC,UAAU,CAAC;YACnC,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC,CAAC;IACR,CAAC;IAEO,eAAe,CAAC,WAAyB;QAC7C,WAAW,CAAC,OAAO,CAAC,CAAC,UAAsB,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,YAAY;QAChB,MAAM,SAAS,GAAG,yBAAyB,uBAAc,wDAAwD,CAAC;QAClH,kBAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;aACtB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;aACnE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;CACJ;AAED,kBAAe,GAAG,CAAC"}

@ -1,7 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CLIENT_SECRET_SPOTIFY = exports.CLIENT_ID_SPOTIFY = exports.MONGO_PASSWORD = void 0;
exports.MONGO_PASSWORD = "ZXN11dj7VC0RUYwa"; //process.env.MONGO;
exports.CLIENT_ID_SPOTIFY = "cd55847a89324a9a9af11aa6726bc1f9";
exports.CLIENT_SECRET_SPOTIFY = "b49e81e3c3a643aa9ce1b2158219a2fb";
//# sourceMappingURL=config.js.map

@ -1 +0,0 @@
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,kBAAkB,CAAC,CAAC,oBAAoB;AACzD,QAAA,iBAAiB,GAAG,kCAAkC,CAAC;AACvD,QAAA,qBAAqB,GAAG,kCAAkC,CAAC"}

@ -1,3 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=IController.js.map

@ -1 +0,0 @@
{"version":3,"file":"IController.js","sourceRoot":"","sources":["../../../src/controllers/interfaces/IController.ts"],"names":[],"mappings":""}

@ -1,131 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = require("express");
const config_1 = require("../config");
const HttpException_1 = __importDefault(require("../exception/HttpException"));
const axios_1 = __importDefault(require("axios"));
const qs_1 = __importDefault(require("qs"));
class SpotifyController {
constructor() {
this.path = '/spotify';
this.router = (0, express_1.Router)();
this.API_URL = "https://accounts.spotify.com/api/token";
this.CALLBACK = 'http://localhost:8080/api/spotify/callback';
this.SCOPES = 'user-read-private user-read-email user-read-playback-state user-read-currently-playing user-read-recently-played playlist-modify-public ugc-image-upload user-modify-playback-state';
this.clientRedirect = 'spotify_final_redirect-uri-key';
this.login = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
try {
const redirectResponse = req.query.redirectUrl ? req.query.redirectUrl : req.headers.referer;
res.cookie(this.clientRedirect, redirectResponse);
res.redirect('https://accounts.spotify.com/authorize?' +
qs_1.default.stringify({
response_type: 'code',
client_id: config_1.CLIENT_ID_SPOTIFY,
scope: this.SCOPES,
redirect_uri: this.CALLBACK,
}));
}
catch (error) {
next(new HttpException_1.default(400, "Cannot connect: " + error.message));
}
});
this.getRefreshToken = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
try {
const params = req.query.refresh_token;
if (!req.query.refresh_token) {
return res.json({
"error": "Parameter refresh_token missing"
});
}
let authOptions = {
method: 'POST',
url: 'https://accounts.spotify.com/api/token',
data: qs_1.default.stringify({
grant_type: 'refresh_token',
refresh_token: params
}),
headers: {
'Authorization': 'Basic ' + (Buffer.from(config_1.CLIENT_ID_SPOTIFY + ':' + config_1.CLIENT_SECRET_SPOTIFY).toString('base64')),
'Content-Type': 'application/x-www-form-urlencoded'
},
json: true
};
(0, axios_1.default)(authOptions)
.then(session => {
if (session.status === 200) {
console.log('### Information : responce ###' + JSON.stringify(session.data));
console.log('### Information : refresh_token ###' + session.data.refresh_token);
res.send({
"access_token": session.data.access_token,
"refresh_token": session.data.refresh_token,
"expires_in": session.data.expires_in
});
}
});
console.log("goood");
}
catch (error) {
console.log("errur");
next(new HttpException_1.default(400, 'Cannot create post'));
}
});
this.getAccessToken = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
let code = req.query.code;
let storedredirectUri = req.cookies ? req.cookies[this.clientRedirect] : null;
var authOptions = {
method: 'POST',
url: this.API_URL,
data: qs_1.default.stringify({
code: code,
redirect_uri: this.CALLBACK,
grant_type: 'authorization_code'
}),
headers: {
'Authorization': 'Basic ' + (Buffer.from(config_1.CLIENT_ID_SPOTIFY + ':' + config_1.CLIENT_SECRET_SPOTIFY).toString('base64')),
'Content-Type': 'application/x-www-form-urlencoded'
},
json: true
};
try {
var resp = yield (0, axios_1.default)(authOptions);
if (resp.status === 200) {
let access_token = resp.data.access_token;
let expiration = resp.data.expires_in;
let refresh = resp.data.refresh_token;
console.log(access_token);
res.clearCookie(this.clientRedirect);
res.redirect(`${storedredirectUri}?` +
qs_1.default.stringify({
"access_token": access_token,
"expires_in": expiration,
"refresh_token": refresh
}));
}
}
catch (error) {
console.log(error);
next(new HttpException_1.default(400, 'Error connection: ' + error.message));
}
});
this.initRoutes();
}
initRoutes() {
this.router.get(`${this.path}/exchange`, this.login);
this.router.get(`${this.path}/callback`, this.getAccessToken);
this.router.get(`${this.path}/refresh`, this.getRefreshToken);
}
}
exports.default = SpotifyController;
//# sourceMappingURL=spotifyController.js.map

@ -1 +0,0 @@
{"version":3,"file":"spotifyController.js","sourceRoot":"","sources":["../../src/controllers/spotifyController.ts"],"names":[],"mappings":"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"}

@ -1,81 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = require("express");
const HttpException_1 = __importDefault(require("../exception/HttpException"));
const UserService_1 = __importDefault(require("../services/UserService"));
const UserValidation_1 = __importDefault(require("../middlewares/UserValidation"));
const validationMiddleware_1 = __importDefault(require("../middlewares/validationMiddleware"));
const authMiddleware_1 = __importDefault(require("../middlewares/authMiddleware"));
const LocationService_1 = __importDefault(require("../services/LocationService"));
class UserController {
constructor() {
this.path = '/users';
this.router = (0, express_1.Router)();
this.userService = new UserService_1.default();
this.locationService = new LocationService_1.default();
this.register = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
try {
const { name, email, password, idSpotify } = req.body;
const token = yield this.userService.register(name, email, password, idSpotify);
res.status(201).json({ token });
}
catch (error) {
next(new HttpException_1.default(400, error.message));
}
});
this.login = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
try {
const { email, password } = req.body;
const token = yield this.userService.login(email, password);
res.status(200).json({ token });
}
catch (error) {
next(new HttpException_1.default(400, error.message));
}
});
this.getUser = (req, res, next) => {
if (!req.user) {
return next(new HttpException_1.default(404, 'No logged in user'));
}
res.status(200).send({ data: req.user });
};
this.getUserNext = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
try {
const longitude = Number(req.query.longitude);
const latitude = Number(req.query.latitude);
if (isNaN(longitude) || isNaN(latitude)) {
console.log('Unable to convert string to number');
throw new Error('Unable to convert string to number');
}
const userId = req.user.id;
const musicId = String(req.query.currentMusic);
const data = yield this.locationService.getNearUser(userId, musicId, latitude, longitude);
res.status(201).send(data);
}
catch (error) {
next(new HttpException_1.default(400, 'Cannot create get netUser: ' + error.message));
}
});
this.initRoutes();
}
initRoutes() {
this.router.post(`${this.path}/register`, (0, validationMiddleware_1.default)(UserValidation_1.default.register), this.register);
this.router.post(`${this.path}/login`, (0, validationMiddleware_1.default)(UserValidation_1.default.login), this.login);
this.router.get(`${this.path}`, authMiddleware_1.default, this.getUser);
this.router.get(`${this.path}/nextTo`, authMiddleware_1.default, this.getUserNext);
}
}
exports.default = UserController;
//# sourceMappingURL=userController.js.map

@ -1 +0,0 @@
{"version":3,"file":"userController.js","sourceRoot":"","sources":["../../src/controllers/userController.ts"],"names":[],"mappings":"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"}

@ -1,24 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const mongoose_1 = require("mongoose");
const locationSchema = new mongoose_1.Schema({
userId: {
type: String,
required: true,
unique: true,
},
musicId: {
type: String,
required: true,
},
latitude: {
type: Number,
required: true,
},
longitude: {
type: Number,
required: true,
}
}, { timestamps: true });
exports.default = (0, mongoose_1.model)('Location', locationSchema);
//# sourceMappingURL=LocationSchema.js.map

@ -1 +0,0 @@
{"version":3,"file":"LocationSchema.js","sourceRoot":"","sources":["../../src/database/LocationSchema.ts"],"names":[],"mappings":";;AAAA,uCAAyC;AAGzC,MAAM,cAAc,GAAG,IAAI,iBAAM,CAAC;IAC9B,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACf;IACD,OAAO,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;IACD,SAAS,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;CACJ,EACG,EAAE,UAAU,EAAE,IAAI,EAAE,CACvB,CAAC;AAEF,kBAAe,IAAA,gBAAK,EAAW,UAAU,EAAE,cAAc,CAAC,CAAC"}

@ -1,55 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const mongoose_1 = require("mongoose");
const bcrypt_1 = __importDefault(require("bcrypt"));
const userSchema = new mongoose_1.Schema({
idSpotify: {
type: String,
required: true,
unique: true
},
name: {
type: String,
required: true,
unique: true
},
email: {
type: String,
required: true,
unique: true,
trim: true
},
password: {
type: String,
required: true
}
}, { timestamps: true });
userSchema.pre('save', function (next) {
return __awaiter(this, void 0, void 0, function* () {
if (!this.isModified('password')) {
return next();
}
const hash = yield bcrypt_1.default.hash(this.password, 8);
this.password = hash;
next();
});
});
userSchema.methods.isValidPassword = function (password) {
return __awaiter(this, void 0, void 0, function* () {
return yield bcrypt_1.default.compare(password, this.password);
});
};
exports.default = (0, mongoose_1.model)('User', userSchema);
//# sourceMappingURL=UserSchema.js.map

@ -1 +0,0 @@
{"version":3,"file":"UserSchema.js","sourceRoot":"","sources":["../../src/database/UserSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,uCAAyC;AACzC,oDAA4B;AAE5B,MAAM,UAAU,GAAG,IAAI,iBAAM,CAAC;IAC1B,SAAS,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACf;IACD,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACH,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;KACb;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;CACJ,EACG,EAAE,UAAU,EAAE,IAAI,EAAE,CACvB,CAAC;AAEF,UAAU,CAAC,GAAG,CAAO,MAAM,EAAE,UAAgB,IAAI;;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,OAAO,IAAI,EAAE,CAAC;SACjB;QACD,MAAM,IAAI,GAAG,MAAM,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,EAAE,CAAC;IACX,CAAC;CAAA,CAAC,CAAC;AAEH,UAAU,CAAC,OAAO,CAAC,eAAe,GAAG,UACjC,QAAgB;;QAEhB,OAAO,MAAM,gBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;CAAA,CAAC;AAEF,kBAAe,IAAA,gBAAK,EAAO,MAAM,EAAE,UAAU,CAAC,CAAC"}

@ -1,11 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class HttpException extends Error {
constructor(status, message) {
super(message);
this.status = status;
this.message = message;
}
}
exports.default = HttpException;
//# sourceMappingURL=HttpException.js.map

@ -1 +0,0 @@
{"version":3,"file":"HttpException.js","sourceRoot":"","sources":["../../src/exception/HttpException.ts"],"names":[],"mappings":";;AAAA,MAAM,aAAc,SAAQ,KAAK;IAI7B,YAAY,MAAc,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAED,kBAAe,aAAa,CAAC"}

@ -1,14 +0,0 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const app_1 = __importDefault(require("./app"));
const spotifyController_1 = __importDefault(require("./controllers/spotifyController"));
const userController_1 = __importDefault(require("./controllers/userController"));
const dotenv_1 = __importDefault(require("dotenv"));
dotenv_1.default.config();
const app = new app_1.default([new spotifyController_1.default(), new userController_1.default()], Number(process.env.PORT));
console.log(process.env.TMP);
app.listen();
//# sourceMappingURL=index.js.map

@ -1 +0,0 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,wFAAgE;AAChE,kFAA0D;AAC1D,oDAA2B;AAE3B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAChB,MAAM,GAAG,GAAG,IAAI,aAAG,CACf,CAAC,IAAI,2BAAiB,EAAE,EAAE,IAAI,wBAAc,EAAE,CAAC,EAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAE5B,GAAG,CAAC,MAAM,EAAE,CAAC"}

@ -1,18 +0,0 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const joi_1 = __importDefault(require("joi"));
const register = joi_1.default.object({
name: joi_1.default.string().max(30).required(),
email: joi_1.default.string().email().required(),
password: joi_1.default.string().min(6).required(),
idSpotify: joi_1.default.string(),
});
const login = joi_1.default.object({
email: joi_1.default.string().email().required(),
password: joi_1.default.string().required(),
});
exports.default = { register, login };
//# sourceMappingURL=UserValidation.js.map

@ -1 +0,0 @@
{"version":3,"file":"UserValidation.js","sourceRoot":"","sources":["../../src/middlewares/UserValidation.ts"],"names":[],"mappings":";;;;;AAAA,8CAAsB;AAEtB,MAAM,QAAQ,GAAG,aAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,aAAG,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,aAAG,CAAC,MAAM,CAAC;IACrB,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,kBAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}

@ -1,46 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
const UserSchema_1 = __importDefault(require("../database/UserSchema"));
const TokenService_1 = __importDefault(require("../services/TokenService"));
const HttpException_1 = __importDefault(require("../exception/HttpException"));
function authMiddleware(req, res, next) {
return __awaiter(this, void 0, void 0, function* () {
const bearer = req.headers.authorization;
if (!bearer || !bearer.startsWith('Bearer ')) {
return next(new HttpException_1.default(401, 'Unauthorized'));
}
const accessToken = bearer.split('Bearer')[1].trim();
try {
const payload = yield TokenService_1.default.verifyToken(accessToken);
if (payload instanceof jsonwebtoken_1.default.JsonWebTokenError) {
return next(new HttpException_1.default(401, 'Unauthorized'));
}
const user = yield UserSchema_1.default.findById(payload.id)
.select('-password')
.exec();
if (!user) {
return next(new HttpException_1.default(401, 'Unauthorized'));
}
req.user = user;
return next();
}
catch (error) {
return next(new HttpException_1.default(401, 'Unauthorized'));
}
});
}
exports.default = authMiddleware;
//# sourceMappingURL=authMiddleware.js.map

@ -1 +0,0 @@
{"version":3,"file":"authMiddleware.js","sourceRoot":"","sources":["../../src/middlewares/authMiddleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,gEAA+B;AAE/B,wEAAgD;AAChD,4EAA6C;AAC7C,+EAAuD;AAEvD,SAAe,cAAc,CACzB,GAAY,EACZ,GAAa,EACb,IAAkB;;QAElB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAEzC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;SACvD;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI;YACA,MAAM,OAAO,GAAkC,MAAM,sBAAK,CAAC,WAAW,CAClE,WAAW,CACd,CAAC;YAEF,IAAI,OAAO,YAAY,sBAAG,CAAC,iBAAiB,EAAE;gBAC1C,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;aACvD;YAED,MAAM,IAAI,GAAG,MAAM,oBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC7C,MAAM,CAAC,WAAW,CAAC;iBACnB,IAAI,EAAE,CAAC;YAEZ,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;aACvD;YAED,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAEhB,OAAO,IAAI,EAAE,CAAC;SACjB;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;SACvD;IACL,CAAC;CAAA;AAED,kBAAe,cAAc,CAAC"}

@ -1,34 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
function validationMiddleware(schema) {
return (req, res, next) => __awaiter(this, void 0, void 0, function* () {
const validationOptions = {
abortEarly: false,
allowUnknown: true,
stripUnknown: true,
};
try {
const value = yield schema.validateAsync(req.body, validationOptions);
req.body = value;
next();
}
catch (e) {
const errors = [];
e.details.forEach((error) => {
errors.push(error.message);
});
res.status(400).send({ errors: errors });
}
});
}
exports.default = validationMiddleware;
//# sourceMappingURL=validationMiddleware.js.map

@ -1 +0,0 @@
{"version":3,"file":"validationMiddleware.js","sourceRoot":"","sources":["../../src/middlewares/validationMiddleware.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,SAAS,oBAAoB,CAAC,MAAkB;IAC5C,OAAO,CACH,GAAY,EACZ,GAAa,EACb,IAAkB,EACL,EAAE;QACf,MAAM,iBAAiB,GAAG;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;SACrB,CAAC;QAEF,IAAI;YACA,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CACpC,GAAG,CAAC,IAAI,EACR,iBAAiB,CACpB,CAAC;YACF,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,EAAE,CAAC;SACV;QAAC,OAAO,CAAM,EAAE;YACb,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAA8B,EAAE,EAAE;gBACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;SAC5C;IACL,CAAC,CAAA,CAAC;AACN,CAAC;AAED,kBAAe,oBAAoB,CAAC"}

@ -1,17 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Location = exports.UserLocation = void 0;
const mongoose_1 = require("mongoose");
class UserLocation {
constructor(userId, musicId, latitude, longitude) {
this.userId = userId;
this.musicId = musicId;
this.latitude = latitude;
this.longitude = longitude;
}
}
exports.UserLocation = UserLocation;
class Location extends mongoose_1.Document {
}
exports.Location = Location;
//# sourceMappingURL=Location.js.map

@ -1 +0,0 @@
{"version":3,"file":"Location.js","sourceRoot":"","sources":["../../src/models/Location.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAEpC,MAAa,YAAY;IAKrB,YAAY,MAAc,EAAE,OAAgB,EAAC,QAAgB,EAAE,SAAiB;QAC5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;CACJ;AAXD,oCAWC;AAED,MAAa,QAAS,SAAQ,mBAAQ;CAKrC;AALD,4BAKC"}

@ -1,3 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=Token.js.map

@ -1 +0,0 @@
{"version":3,"file":"Token.js","sourceRoot":"","sources":["../../src/models/Token.ts"],"names":[],"mappings":""}

@ -1,3 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=User.js.map

@ -1 +0,0 @@
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":""}

@ -1,65 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const Location_1 = require("../models/Location");
const LocationSchema_1 = __importDefault(require("../database/LocationSchema"));
class LocationService {
constructor() {
this.locations = LocationSchema_1.default;
}
getNearUser(userId, musicId, latitude, longitude) {
return __awaiter(this, void 0, void 0, function* () {
yield this.locations.findOneAndUpdate({ userId }, { userId, musicId, latitude, longitude }, { upsert: true });
const snapshot = yield this.locations.find({ userId: { $ne: userId } });
if (!snapshot.length) {
console.log('No matching documents.');
return;
}
let usersLocation = [];
snapshot.forEach(doc => {
usersLocation.push(new Location_1.UserLocation(doc.userId, doc.musicId, doc.latitude, doc.longitude));
});
const listUser = {};
usersLocation.forEach(user => {
const distance = this.distanceBetween(latitude, longitude, user.latitude, user.longitude);
if (distance <= 100) {
listUser[user.userId] = user.musicId;
}
});
return { listUser };
});
}
distanceBetween(lat1, lon1, lat2, lon2) {
if ((lat1 == lat2) && (lon1 == lon2)) {
return 0;
}
else {
var radlat1 = Math.PI * lat1 / 180;
var radlat2 = Math.PI * lat2 / 180;
var theta = lon1 - lon2;
var radtheta = Math.PI * theta / 180;
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
if (dist > 1) {
dist = 1;
}
dist = Math.acos(dist);
dist = dist * 180 / Math.PI;
dist = dist * 60 * 1.1515;
dist = dist * 1.609344;
return dist;
}
}
}
exports.default = LocationService;
//# sourceMappingURL=LocationService.js.map

@ -1 +0,0 @@
{"version":3,"file":"LocationService.js","sourceRoot":"","sources":["../../src/services/LocationService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iDAAkD;AAClD,gFAAwD;AAExD,MAAM,eAAe;IAArB;QACY,cAAS,GAAG,wBAAc,CAAC;IAmDvC,CAAC;IAlDgB,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,QAAgB,EAAE,SAAiB;;YACzF,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CACjC,EAAE,MAAM,EAAE,EACV,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EACxC,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAClB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,OAAO;aACV;YAED,IAAI,aAAa,GAAmB,EAAE,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnB,aAAa,CAAC,IAAI,CAAC,IAAI,uBAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1F,IAAI,QAAQ,IAAI,GAAG,EAAE;oBACjB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;iBACxC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,CAAC;QACxB,CAAC;KAAA;IAEO,eAAe,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;QAC1E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;YAClC,OAAO,CAAC,CAAC;SACZ;aACI;YACD,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC;YACnC,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC;YACnC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;YACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC;YACrC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE9G,IAAI,IAAI,GAAG,CAAC,EAAE;gBACV,IAAI,GAAG,CAAC,CAAC;aACZ;YAED,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;YAC1B,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;YAEvB,OAAO,IAAI,CAAC;SACf;IACL,CAAC;CACJ;AAED,kBAAe,eAAe,CAAC"}

@ -1,34 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.verifyToken = exports.createToken = void 0;
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
const createToken = (user) => {
return jsonwebtoken_1.default.sign({ id: user._id }, "dave", {
expiresIn: '1d',
});
};
exports.createToken = createToken;
const verifyToken = (token) => __awaiter(void 0, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
jsonwebtoken_1.default.verify(token, "dave", (err, payload) => {
if (err)
return reject(err);
resolve(payload);
});
});
});
exports.verifyToken = verifyToken;
exports.default = { createToken: exports.createToken, verifyToken: exports.verifyToken };
//# sourceMappingURL=TokenService.js.map

@ -1 +0,0 @@
{"version":3,"file":"TokenService.js","sourceRoot":"","sources":["../../src/services/TokenService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAA+B;AAIxB,MAAM,WAAW,GAAG,CAAC,IAAU,EAAU,EAAE;IAC9C,OAAO,sBAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAoB,EAAE;QACpD,SAAS,EAAE,IAAI;KAClB,CAAC,CAAC;AACP,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEK,MAAM,WAAW,GAAG,CACvB,KAAa,EACoB,EAAE;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,sBAAG,CAAC,MAAM,CACN,KAAK,EACL,MAAoB,EACpB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACb,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,CAAC,OAAgB,CAAC,CAAC;QAC9B,CAAC,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAA,CAAC;AAbW,QAAA,WAAW,eAatB;AAEF,kBAAe,EAAE,WAAW,EAAX,mBAAW,EAAE,WAAW,EAAX,mBAAW,EAAE,CAAC"}

@ -1,53 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const UserSchema_1 = __importDefault(require("../database/UserSchema"));
const TokenService_1 = __importDefault(require("./TokenService"));
class UserService {
constructor() {
this.user = UserSchema_1.default;
}
register(name, email, password, idSpotify) {
return __awaiter(this, void 0, void 0, function* () {
try {
const user = yield this.user.create({
name,
email,
password,
idSpotify
});
return TokenService_1.default.createToken(user);
}
catch (error) {
throw new Error(error.message);
}
});
}
login(email, password) {
return __awaiter(this, void 0, void 0, function* () {
const user = yield this.user.findOne({ email });
if (!user) {
throw new Error('Wrong credentials given');
}
if (yield user.isValidPassword(password)) {
return TokenService_1.default.createToken(user);
}
else {
throw new Error('Wrong credentials given');
}
});
}
}
exports.default = UserService;
//# sourceMappingURL=UserService.js.map

@ -1 +0,0 @@
{"version":3,"file":"UserService.js","sourceRoot":"","sources":["../../src/services/UserService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wEAAgD;AAChD,kEAAmC;AAEnC,MAAM,WAAW;IAAjB;QACY,SAAI,GAAG,oBAAU,CAAC;IAmC9B,CAAC;IAjCgB,QAAQ,CACjB,IAAY,EACZ,KAAa,EACb,QAAgB,EAChB,SAAiB;;YAEjB,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChC,IAAI;oBACJ,KAAK;oBACL,QAAQ;oBACR,SAAS;iBACZ,CAAC,CAAC;gBACH,OAAO,sBAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAClC;YAAC,OAAO,KAAU,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAClC;QACL,CAAC;KAAA;IAEY,KAAK,CACd,KAAa,EACb,QAAgB;;YAEhB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC9C;YACD,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;gBACtC,OAAO,sBAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAClC;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC9C;QACL,CAAC;KAAA;CACJ;AAED,kBAAe,WAAW,CAAC"}
Loading…
Cancel
Save