유명현

Merge branch 'main' into feature/line-bot-v2

1 +let database = module.exports = {};
2 +
3 +const db = require("../models")
4 +const User = db.user
5 +const Keyword = db.keyword
6 +const UserKeyword = db.userKeyword
7 +
8 +
9 +database.addKeyword = async function(keyword, userId) {
10 +
11 + const u = await User.findOrCreate({
12 + where: {
13 + userId: userId
14 + }
15 + })
16 +
17 + const k = await Keyword.findOrCreate({
18 + where: {
19 + keyword: keyword
20 + }
21 + })
22 +
23 + await UserKeyword.findOrCreate({
24 + where: {
25 + userId: u[0].id,
26 + keywordId: k[0].id
27 + }
28 + })
29 +}
30 +
31 +database.deleteKeyword = async function(userId, keyword) {
32 +
33 + const u = await User.findOrCreate({
34 + where: {
35 + userId: userId
36 + }
37 + })
38 +
39 + const k = await Keyword.findOrCreate({
40 + where: {
41 + keyword: keyword
42 + }
43 + })
44 +
45 + await UserKeyword.destroy({
46 + where: {
47 + userId: u[0].id,
48 + keywordId: k[0].id
49 + }
50 + })
51 +}
52 +
53 +database.getKeywordsByUserId = async function(userId) {
54 +
55 + const keywords = await Keyword.findAll({
56 + attributes: ['keyword'],
57 + where: {
58 + '$user.userId$': userId
59 + },
60 + include: [{
61 + attributes: [],
62 + model: User,
63 + as: 'user'
64 + }],
65 + raw: true
66 + })
67 +
68 + let result = []
69 + for (let i = 0; i < keywords.length; i++) {
70 + result.push(keywords[i].keyword)
71 + }
72 +
73 + return result
74 +}
75 +
76 +database.getUsersByKeyword = async function(keyword) {
77 +
78 + const users = await User.findAll({
79 + attributes: ['userId'],
80 + where: {
81 + '$keyword.keyword$': keyword
82 + },
83 + include: [{
84 + attributes: [],
85 + model: Keyword,
86 + as: 'keyword'
87 + }],
88 + raw: true
89 + })
90 +
91 + let result = []
92 + for (let i = 0; i < users.length; i++) {
93 + result.push(users[i].userId)
94 + }
95 +
96 + return result
97 +}
98 +
99 +database.getAllUsers = async function() {
100 +
101 + const users = await User.findAll({
102 + raw: true
103 + })
104 +
105 + let result = []
106 + for (let i = 0; i < users.length; i++) {
107 + result.push(users[i].userId)
108 + }
109 +
110 + return result
111 +}
112 +
113 +database.getAllKeywords = async function() {
114 +
115 + const keywords = await Keyword.findAll({
116 + raw: true
117 + })
118 +
119 + let result = []
120 + for (let i = 0; i< keywords.length; i++) {
121 + result.push(keywords[i].keyword)
122 + }
123 +
124 + console.log(result)
125 + return result
126 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -3,8 +3,36 @@ const line = require("@line/bot-sdk"); ...@@ -3,8 +3,36 @@ const line = require("@line/bot-sdk");
3 const fs = require("fs"); 3 const fs = require("fs");
4 const { handleEvent } = require("./chatbot/index"); 4 const { handleEvent } = require("./chatbot/index");
5 const { config } = require("./chatbot/index"); 5 const { config } = require("./chatbot/index");
6 +const { sequelize } = require("./models");
7 +const database = require("./apis/database");
6 8
9 +// Initialize DB connection
10 +sequelize
11 + .sync({ force: false })
12 + .then(() => {
13 + console.log("database connection complete");
14 + database.addKeyword("rtx3060", "junseok");
15 + database.getKeywordsByUserId("junseok");
16 + database.deleteKeyword("phobyjun", "rtx3080");
17 + database.getAllUsers();
18 + database.getUsersByKeyword("rtx3060");
19 + database.getAllKeywords();
20 + })
21 + .catch((err) => {
22 + console.log("database connection failed");
23 + });
24 +
25 +// Load .env configuration
26 +require("dotenv").config();
27 +const config = {
28 + channelAccessToken: process.env.channelAccessToken,
29 + channelSecret: process.env.channelSecret,
30 +};
31 +
32 +// Express app server initialization
7 const app = express(); 33 const app = express();
34 +
35 +// Create post request handler for chatbot
8 app.post("/webhook", line.middleware(config), (req, res) => { 36 app.post("/webhook", line.middleware(config), (req, res) => {
9 Promise.all(req.body.events.map(handleEvent)).then((result) => { 37 Promise.all(req.body.events.map(handleEvent)).then((result) => {
10 res.json(result); 38 res.json(result);
......
1 +{
2 + "development": {
3 + "username": "root",
4 + "password": "mamuri",
5 + "database": "mamuri_db",
6 + "host": "127.0.0.1",
7 + "dialect": "mysql"
8 + },
9 + "test": {
10 + "username": "root",
11 + "password": null,
12 + "database": "database_test",
13 + "host": "127.0.0.1",
14 + "dialect": "mysql"
15 + },
16 + "production": {
17 + "username": "root",
18 + "password": null,
19 + "database": "database_production",
20 + "host": "127.0.0.1",
21 + "dialect": "mysql"
22 + }
23 +}
1 +'use strict';
2 +
3 +const fs = require('fs');
4 +const path = require('path');
5 +const Sequelize = require('sequelize');
6 +const basename = path.basename(__filename);
7 +const env = process.env.NODE_ENV || 'development';
8 +const config = require(__dirname + '/../config/config.json')[env];
9 +const db = {};
10 +
11 +let sequelize;
12 +if (config.use_env_variable) {
13 + sequelize = new Sequelize(process.env[config.use_env_variable], config);
14 +} else {
15 + sequelize = new Sequelize(config.database, config.username, config.password, config);
16 +}
17 +
18 +fs
19 + .readdirSync(__dirname)
20 + .filter(file => {
21 + return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
22 + })
23 + .forEach(file => {
24 + const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
25 + db[model.name] = model;
26 + });
27 +
28 +Object.keys(db).forEach(modelName => {
29 + if (db[modelName].associate) {
30 + db[modelName].associate(db);
31 + }
32 +});
33 +
34 +db.sequelize = sequelize;
35 +db.Sequelize = Sequelize;
36 +
37 +db.user = require("./user")(sequelize, Sequelize);
38 +db.keyword = require("./keyword")(sequelize, Sequelize);
39 +db.userKeyword = sequelize.define('user_keywords');
40 +
41 +db.user.belongsToMany(db.keyword, {through: db.userKeyword, as: 'keyword'});
42 +db.keyword.belongsToMany(db.user, {through: db.userKeyword, as: 'user'});
43 +
44 +module.exports = db;
1 +module.exports = (sequelize, DataTypes) => {
2 +
3 + return sequelize.define("keyword", {
4 + id: {
5 + type: DataTypes.INTEGER,
6 + autoIncrement: true,
7 + primaryKey: true
8 + },
9 + keyword: {
10 + type: DataTypes.STRING,
11 + allowNull: false
12 + }
13 + })
14 +}
...\ No newline at end of file ...\ No newline at end of file
1 +module.exports = (sequelize, DataTypes) => {
2 +
3 + return sequelize.define("user", {
4 + id: {
5 + type: DataTypes.INTEGER,
6 + autoIncrement: true,
7 + primaryKey: true
8 + },
9 + userId: {
10 + type: DataTypes.STRING,
11 + allowNull: false
12 + }
13 + })
14 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
13 "axios": "^0.27.2", 13 "axios": "^0.27.2",
14 "dotenv": "^16.0.1", 14 "dotenv": "^16.0.1",
15 "express": "^4.18.1", 15 "express": "^4.18.1",
16 - "nodemon": "^2.0.16" 16 + "mysql2": "^2.3.3",
17 + "nodemon": "^2.0.16",
18 + "sequelize": "^6.20.0"
17 } 19 }
18 }, 20 },
19 "node_modules/@line/bot-sdk": { 21 "node_modules/@line/bot-sdk": {
...@@ -81,11 +83,29 @@ ...@@ -81,11 +83,29 @@
81 "@types/node": "*" 83 "@types/node": "*"
82 } 84 }
83 }, 85 },
86 + "node_modules/@types/debug": {
87 + "version": "4.1.7",
88 + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
89 + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
90 + "dependencies": {
91 + "@types/ms": "*"
92 + }
93 + },
94 + "node_modules/@types/ms": {
95 + "version": "0.7.31",
96 + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
97 + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
98 + },
84 "node_modules/@types/node": { 99 "node_modules/@types/node": {
85 "version": "14.18.18", 100 "version": "14.18.18",
86 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", 101 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz",
87 "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" 102 "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig=="
88 }, 103 },
104 + "node_modules/@types/validator": {
105 + "version": "13.7.2",
106 + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz",
107 + "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw=="
108 + },
89 "node_modules/abbrev": { 109 "node_modules/abbrev": {
90 "version": "1.1.1", 110 "version": "1.1.1",
91 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 111 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
...@@ -536,6 +556,14 @@ ...@@ -536,6 +556,14 @@
536 "node": ">=0.4.0" 556 "node": ">=0.4.0"
537 } 557 }
538 }, 558 },
559 + "node_modules/denque": {
560 + "version": "2.0.1",
561 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
562 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
563 + "engines": {
564 + "node": ">=0.10"
565 + }
566 + },
539 "node_modules/depd": { 567 "node_modules/depd": {
540 "version": "2.0.0", 568 "version": "2.0.0",
541 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 569 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -572,6 +600,11 @@ ...@@ -572,6 +600,11 @@
572 "node": ">=12" 600 "node": ">=12"
573 } 601 }
574 }, 602 },
603 + "node_modules/dottie": {
604 + "version": "2.0.2",
605 + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz",
606 + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg=="
607 + },
575 "node_modules/duplexer3": { 608 "node_modules/duplexer3": {
576 "version": "0.1.4", 609 "version": "0.1.4",
577 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 610 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
...@@ -776,6 +809,14 @@ ...@@ -776,6 +809,14 @@
776 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 809 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
777 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 810 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
778 }, 811 },
812 + "node_modules/generate-function": {
813 + "version": "2.3.1",
814 + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
815 + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
816 + "dependencies": {
817 + "is-property": "^1.0.2"
818 + }
819 + },
779 "node_modules/get-intrinsic": { 820 "node_modules/get-intrinsic": {
780 "version": "1.1.1", 821 "version": "1.1.1",
781 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 822 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
...@@ -960,6 +1001,14 @@ ...@@ -960,6 +1001,14 @@
960 "node": ">=0.8.19" 1001 "node": ">=0.8.19"
961 } 1002 }
962 }, 1003 },
1004 + "node_modules/inflection": {
1005 + "version": "1.13.2",
1006 + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz",
1007 + "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==",
1008 + "engines": [
1009 + "node >= 0.4.0"
1010 + ]
1011 + },
963 "node_modules/inherits": { 1012 "node_modules/inherits": {
964 "version": "2.0.4", 1013 "version": "2.0.4",
965 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1014 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
...@@ -1080,6 +1129,11 @@ ...@@ -1080,6 +1129,11 @@
1080 "node": ">=8" 1129 "node": ">=8"
1081 } 1130 }
1082 }, 1131 },
1132 + "node_modules/is-property": {
1133 + "version": "1.0.2",
1134 + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
1135 + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
1136 + },
1083 "node_modules/is-typedarray": { 1137 "node_modules/is-typedarray": {
1084 "version": "1.0.0", 1138 "version": "1.0.0",
1085 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1139 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
...@@ -1114,6 +1168,16 @@ ...@@ -1114,6 +1168,16 @@
1114 "node": ">=8" 1168 "node": ">=8"
1115 } 1169 }
1116 }, 1170 },
1171 + "node_modules/lodash": {
1172 + "version": "4.17.21",
1173 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1174 + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
1175 + },
1176 + "node_modules/long": {
1177 + "version": "4.0.0",
1178 + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
1179 + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
1180 + },
1117 "node_modules/lowercase-keys": { 1181 "node_modules/lowercase-keys": {
1118 "version": "1.0.1", 1182 "version": "1.0.1",
1119 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 1183 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
...@@ -1230,11 +1294,84 @@ ...@@ -1230,11 +1294,84 @@
1230 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1294 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
1231 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 1295 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
1232 }, 1296 },
1297 + "node_modules/moment": {
1298 + "version": "2.29.3",
1299 + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
1300 + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==",
1301 + "engines": {
1302 + "node": "*"
1303 + }
1304 + },
1305 + "node_modules/moment-timezone": {
1306 + "version": "0.5.34",
1307 + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz",
1308 + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==",
1309 + "dependencies": {
1310 + "moment": ">= 2.9.0"
1311 + },
1312 + "engines": {
1313 + "node": "*"
1314 + }
1315 + },
1233 "node_modules/ms": { 1316 "node_modules/ms": {
1234 "version": "2.0.0", 1317 "version": "2.0.0",
1235 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1318 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1236 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1319 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1237 }, 1320 },
1321 + "node_modules/mysql2": {
1322 + "version": "2.3.3",
1323 + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
1324 + "integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==",
1325 + "dependencies": {
1326 + "denque": "^2.0.1",
1327 + "generate-function": "^2.3.1",
1328 + "iconv-lite": "^0.6.3",
1329 + "long": "^4.0.0",
1330 + "lru-cache": "^6.0.0",
1331 + "named-placeholders": "^1.1.2",
1332 + "seq-queue": "^0.0.5",
1333 + "sqlstring": "^2.3.2"
1334 + },
1335 + "engines": {
1336 + "node": ">= 8.0"
1337 + }
1338 + },
1339 + "node_modules/mysql2/node_modules/iconv-lite": {
1340 + "version": "0.6.3",
1341 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
1342 + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
1343 + "dependencies": {
1344 + "safer-buffer": ">= 2.1.2 < 3.0.0"
1345 + },
1346 + "engines": {
1347 + "node": ">=0.10.0"
1348 + }
1349 + },
1350 + "node_modules/named-placeholders": {
1351 + "version": "1.1.2",
1352 + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
1353 + "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
1354 + "dependencies": {
1355 + "lru-cache": "^4.1.3"
1356 + },
1357 + "engines": {
1358 + "node": ">=6.0.0"
1359 + }
1360 + },
1361 + "node_modules/named-placeholders/node_modules/lru-cache": {
1362 + "version": "4.1.5",
1363 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
1364 + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
1365 + "dependencies": {
1366 + "pseudomap": "^1.0.2",
1367 + "yallist": "^2.1.2"
1368 + }
1369 + },
1370 + "node_modules/named-placeholders/node_modules/yallist": {
1371 + "version": "2.1.2",
1372 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1373 + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
1374 + },
1238 "node_modules/negotiator": { 1375 "node_modules/negotiator": {
1239 "version": "0.6.3", 1376 "version": "0.6.3",
1240 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1377 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
...@@ -1396,6 +1533,11 @@ ...@@ -1396,6 +1533,11 @@
1396 "url": "https://github.com/sponsors/Borewit" 1533 "url": "https://github.com/sponsors/Borewit"
1397 } 1534 }
1398 }, 1535 },
1536 + "node_modules/pg-connection-string": {
1537 + "version": "2.5.0",
1538 + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
1539 + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
1540 + },
1399 "node_modules/picomatch": { 1541 "node_modules/picomatch": {
1400 "version": "2.3.1", 1542 "version": "2.3.1",
1401 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1543 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
...@@ -1427,6 +1569,11 @@ ...@@ -1427,6 +1569,11 @@
1427 "node": ">= 0.10" 1569 "node": ">= 0.10"
1428 } 1570 }
1429 }, 1571 },
1572 + "node_modules/pseudomap": {
1573 + "version": "1.0.2",
1574 + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
1575 + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
1576 + },
1430 "node_modules/pstree.remy": { 1577 "node_modules/pstree.remy": {
1431 "version": "1.1.8", 1578 "version": "1.1.8",
1432 "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 1579 "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
...@@ -1553,6 +1700,11 @@ ...@@ -1553,6 +1700,11 @@
1553 "lowercase-keys": "^1.0.0" 1700 "lowercase-keys": "^1.0.0"
1554 } 1701 }
1555 }, 1702 },
1703 + "node_modules/retry-as-promised": {
1704 + "version": "5.0.0",
1705 + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz",
1706 + "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA=="
1707 + },
1556 "node_modules/safe-buffer": { 1708 "node_modules/safe-buffer": {
1557 "version": "5.2.1", 1709 "version": "5.2.1",
1558 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1710 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
...@@ -1632,6 +1784,112 @@ ...@@ -1632,6 +1784,112 @@
1632 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1784 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1633 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1785 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1634 }, 1786 },
1787 + "node_modules/seq-queue": {
1788 + "version": "0.0.5",
1789 + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
1790 + "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
1791 + },
1792 + "node_modules/sequelize": {
1793 + "version": "6.20.0",
1794 + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.20.0.tgz",
1795 + "integrity": "sha512-45B+k4eKP0D+x1F08dSYnZjlKGvlxM/FCVTWQ6TLVaGCyRv/TmvTRSZ4bTNB5pMgQOMkJUlztg5zSvMmkzaWCA==",
1796 + "funding": [
1797 + {
1798 + "type": "opencollective",
1799 + "url": "https://opencollective.com/sequelize"
1800 + }
1801 + ],
1802 + "dependencies": {
1803 + "@types/debug": "^4.1.7",
1804 + "@types/validator": "^13.7.1",
1805 + "debug": "^4.3.3",
1806 + "dottie": "^2.0.2",
1807 + "inflection": "^1.13.2",
1808 + "lodash": "^4.17.21",
1809 + "moment": "^2.29.1",
1810 + "moment-timezone": "^0.5.34",
1811 + "pg-connection-string": "^2.5.0",
1812 + "retry-as-promised": "^5.0.0",
1813 + "semver": "^7.3.5",
1814 + "sequelize-pool": "^7.1.0",
1815 + "toposort-class": "^1.0.1",
1816 + "uuid": "^8.3.2",
1817 + "validator": "^13.7.0",
1818 + "wkx": "^0.5.0"
1819 + },
1820 + "engines": {
1821 + "node": ">=10.0.0"
1822 + },
1823 + "peerDependenciesMeta": {
1824 + "ibm_db": {
1825 + "optional": true
1826 + },
1827 + "mariadb": {
1828 + "optional": true
1829 + },
1830 + "mysql2": {
1831 + "optional": true
1832 + },
1833 + "pg": {
1834 + "optional": true
1835 + },
1836 + "pg-hstore": {
1837 + "optional": true
1838 + },
1839 + "snowflake-sdk": {
1840 + "optional": true
1841 + },
1842 + "sqlite3": {
1843 + "optional": true
1844 + },
1845 + "tedious": {
1846 + "optional": true
1847 + }
1848 + }
1849 + },
1850 + "node_modules/sequelize-pool": {
1851 + "version": "7.1.0",
1852 + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz",
1853 + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==",
1854 + "engines": {
1855 + "node": ">= 10.0.0"
1856 + }
1857 + },
1858 + "node_modules/sequelize/node_modules/debug": {
1859 + "version": "4.3.4",
1860 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1861 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1862 + "dependencies": {
1863 + "ms": "2.1.2"
1864 + },
1865 + "engines": {
1866 + "node": ">=6.0"
1867 + },
1868 + "peerDependenciesMeta": {
1869 + "supports-color": {
1870 + "optional": true
1871 + }
1872 + }
1873 + },
1874 + "node_modules/sequelize/node_modules/ms": {
1875 + "version": "2.1.2",
1876 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1877 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1878 + },
1879 + "node_modules/sequelize/node_modules/semver": {
1880 + "version": "7.3.7",
1881 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
1882 + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
1883 + "dependencies": {
1884 + "lru-cache": "^6.0.0"
1885 + },
1886 + "bin": {
1887 + "semver": "bin/semver.js"
1888 + },
1889 + "engines": {
1890 + "node": ">=10"
1891 + }
1892 + },
1635 "node_modules/serve-static": { 1893 "node_modules/serve-static": {
1636 "version": "1.15.0", 1894 "version": "1.15.0",
1637 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1895 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
...@@ -1669,6 +1927,14 @@ ...@@ -1669,6 +1927,14 @@
1669 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1927 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1670 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 1928 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
1671 }, 1929 },
1930 + "node_modules/sqlstring": {
1931 + "version": "2.3.3",
1932 + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
1933 + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
1934 + "engines": {
1935 + "node": ">= 0.6"
1936 + }
1937 + },
1672 "node_modules/statuses": { 1938 "node_modules/statuses": {
1673 "version": "2.0.1", 1939 "version": "2.0.1",
1674 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1940 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
...@@ -1784,6 +2050,11 @@ ...@@ -1784,6 +2050,11 @@
1784 "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz", 2050 "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz",
1785 "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==" 2051 "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w=="
1786 }, 2052 },
2053 + "node_modules/toposort-class": {
2054 + "version": "1.0.1",
2055 + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
2056 + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg="
2057 + },
1787 "node_modules/touch": { 2058 "node_modules/touch": {
1788 "version": "3.1.0", 2059 "version": "3.1.0",
1789 "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 2060 "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
...@@ -1910,6 +2181,22 @@ ...@@ -1910,6 +2181,22 @@
1910 "node": ">= 0.4.0" 2181 "node": ">= 0.4.0"
1911 } 2182 }
1912 }, 2183 },
2184 + "node_modules/uuid": {
2185 + "version": "8.3.2",
2186 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
2187 + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
2188 + "bin": {
2189 + "uuid": "dist/bin/uuid"
2190 + }
2191 + },
2192 + "node_modules/validator": {
2193 + "version": "13.7.0",
2194 + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
2195 + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
2196 + "engines": {
2197 + "node": ">= 0.10"
2198 + }
2199 + },
1913 "node_modules/vary": { 2200 "node_modules/vary": {
1914 "version": "1.1.2", 2201 "version": "1.1.2",
1915 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2202 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
...@@ -1929,6 +2216,14 @@ ...@@ -1929,6 +2216,14 @@
1929 "node": ">=8" 2216 "node": ">=8"
1930 } 2217 }
1931 }, 2218 },
2219 + "node_modules/wkx": {
2220 + "version": "0.5.0",
2221 + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz",
2222 + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==",
2223 + "dependencies": {
2224 + "@types/node": "*"
2225 + }
2226 + },
1932 "node_modules/wrap-ansi": { 2227 "node_modules/wrap-ansi": {
1933 "version": "7.0.0", 2228 "version": "7.0.0",
1934 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2229 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
...@@ -2034,11 +2329,29 @@ ...@@ -2034,11 +2329,29 @@
2034 "@types/node": "*" 2329 "@types/node": "*"
2035 } 2330 }
2036 }, 2331 },
2332 + "@types/debug": {
2333 + "version": "4.1.7",
2334 + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
2335 + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
2336 + "requires": {
2337 + "@types/ms": "*"
2338 + }
2339 + },
2340 + "@types/ms": {
2341 + "version": "0.7.31",
2342 + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
2343 + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
2344 + },
2037 "@types/node": { 2345 "@types/node": {
2038 "version": "14.18.18", 2346 "version": "14.18.18",
2039 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", 2347 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz",
2040 "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" 2348 "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig=="
2041 }, 2349 },
2350 + "@types/validator": {
2351 + "version": "13.7.2",
2352 + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz",
2353 + "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw=="
2354 + },
2042 "abbrev": { 2355 "abbrev": {
2043 "version": "1.1.1", 2356 "version": "1.1.1",
2044 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 2357 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
...@@ -2378,6 +2691,11 @@ ...@@ -2378,6 +2691,11 @@
2378 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 2691 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
2379 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 2692 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
2380 }, 2693 },
2694 + "denque": {
2695 + "version": "2.0.1",
2696 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
2697 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ=="
2698 + },
2381 "depd": { 2699 "depd": {
2382 "version": "2.0.0", 2700 "version": "2.0.0",
2383 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 2701 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -2401,6 +2719,11 @@ ...@@ -2401,6 +2719,11 @@
2401 "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", 2719 "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
2402 "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" 2720 "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ=="
2403 }, 2721 },
2722 + "dottie": {
2723 + "version": "2.0.2",
2724 + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz",
2725 + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg=="
2726 + },
2404 "duplexer3": { 2727 "duplexer3": {
2405 "version": "0.1.4", 2728 "version": "0.1.4",
2406 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 2729 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
...@@ -2551,6 +2874,14 @@ ...@@ -2551,6 +2874,14 @@
2551 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2874 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
2552 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 2875 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
2553 }, 2876 },
2877 + "generate-function": {
2878 + "version": "2.3.1",
2879 + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
2880 + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
2881 + "requires": {
2882 + "is-property": "^1.0.2"
2883 + }
2884 + },
2554 "get-intrinsic": { 2885 "get-intrinsic": {
2555 "version": "1.1.1", 2886 "version": "1.1.1",
2556 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 2887 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
...@@ -2676,6 +3007,11 @@ ...@@ -2676,6 +3007,11 @@
2676 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3007 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2677 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 3008 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
2678 }, 3009 },
3010 + "inflection": {
3011 + "version": "1.13.2",
3012 + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz",
3013 + "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw=="
3014 + },
2679 "inherits": { 3015 "inherits": {
2680 "version": "2.0.4", 3016 "version": "2.0.4",
2681 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3017 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
...@@ -2754,6 +3090,11 @@ ...@@ -2754,6 +3090,11 @@
2754 "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 3090 "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
2755 "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" 3091 "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
2756 }, 3092 },
3093 + "is-property": {
3094 + "version": "1.0.2",
3095 + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
3096 + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
3097 + },
2757 "is-typedarray": { 3098 "is-typedarray": {
2758 "version": "1.0.0", 3099 "version": "1.0.0",
2759 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 3100 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
...@@ -2785,6 +3126,16 @@ ...@@ -2785,6 +3126,16 @@
2785 "package-json": "^6.3.0" 3126 "package-json": "^6.3.0"
2786 } 3127 }
2787 }, 3128 },
3129 + "lodash": {
3130 + "version": "4.17.21",
3131 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
3132 + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
3133 + },
3134 + "long": {
3135 + "version": "4.0.0",
3136 + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
3137 + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
3138 + },
2788 "lowercase-keys": { 3139 "lowercase-keys": {
2789 "version": "1.0.1", 3140 "version": "1.0.1",
2790 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 3141 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
...@@ -2864,11 +3215,73 @@ ...@@ -2864,11 +3215,73 @@
2864 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 3215 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2865 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 3216 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
2866 }, 3217 },
3218 + "moment": {
3219 + "version": "2.29.3",
3220 + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
3221 + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw=="
3222 + },
3223 + "moment-timezone": {
3224 + "version": "0.5.34",
3225 + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz",
3226 + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==",
3227 + "requires": {
3228 + "moment": ">= 2.9.0"
3229 + }
3230 + },
2867 "ms": { 3231 "ms": {
2868 "version": "2.0.0", 3232 "version": "2.0.0",
2869 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3233 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2870 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 3234 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
2871 }, 3235 },
3236 + "mysql2": {
3237 + "version": "2.3.3",
3238 + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
3239 + "integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==",
3240 + "requires": {
3241 + "denque": "^2.0.1",
3242 + "generate-function": "^2.3.1",
3243 + "iconv-lite": "^0.6.3",
3244 + "long": "^4.0.0",
3245 + "lru-cache": "^6.0.0",
3246 + "named-placeholders": "^1.1.2",
3247 + "seq-queue": "^0.0.5",
3248 + "sqlstring": "^2.3.2"
3249 + },
3250 + "dependencies": {
3251 + "iconv-lite": {
3252 + "version": "0.6.3",
3253 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
3254 + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
3255 + "requires": {
3256 + "safer-buffer": ">= 2.1.2 < 3.0.0"
3257 + }
3258 + }
3259 + }
3260 + },
3261 + "named-placeholders": {
3262 + "version": "1.1.2",
3263 + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
3264 + "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
3265 + "requires": {
3266 + "lru-cache": "^4.1.3"
3267 + },
3268 + "dependencies": {
3269 + "lru-cache": {
3270 + "version": "4.1.5",
3271 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
3272 + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
3273 + "requires": {
3274 + "pseudomap": "^1.0.2",
3275 + "yallist": "^2.1.2"
3276 + }
3277 + },
3278 + "yallist": {
3279 + "version": "2.1.2",
3280 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
3281 + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
3282 + }
3283 + }
3284 + },
2872 "negotiator": { 3285 "negotiator": {
2873 "version": "0.6.3", 3286 "version": "0.6.3",
2874 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 3287 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
...@@ -2983,6 +3396,11 @@ ...@@ -2983,6 +3396,11 @@
2983 "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", 3396 "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
2984 "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" 3397 "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg=="
2985 }, 3398 },
3399 + "pg-connection-string": {
3400 + "version": "2.5.0",
3401 + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
3402 + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
3403 + },
2986 "picomatch": { 3404 "picomatch": {
2987 "version": "2.3.1", 3405 "version": "2.3.1",
2988 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3406 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
...@@ -3002,6 +3420,11 @@ ...@@ -3002,6 +3420,11 @@
3002 "ipaddr.js": "1.9.1" 3420 "ipaddr.js": "1.9.1"
3003 } 3421 }
3004 }, 3422 },
3423 + "pseudomap": {
3424 + "version": "1.0.2",
3425 + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
3426 + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
3427 + },
3005 "pstree.remy": { 3428 "pstree.remy": {
3006 "version": "1.1.8", 3429 "version": "1.1.8",
3007 "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 3430 "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
...@@ -3103,6 +3526,11 @@ ...@@ -3103,6 +3526,11 @@
3103 "lowercase-keys": "^1.0.0" 3526 "lowercase-keys": "^1.0.0"
3104 } 3527 }
3105 }, 3528 },
3529 + "retry-as-promised": {
3530 + "version": "5.0.0",
3531 + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz",
3532 + "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA=="
3533 + },
3106 "safe-buffer": { 3534 "safe-buffer": {
3107 "version": "5.2.1", 3535 "version": "5.2.1",
3108 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3536 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
...@@ -3160,6 +3588,62 @@ ...@@ -3160,6 +3588,62 @@
3160 } 3588 }
3161 } 3589 }
3162 }, 3590 },
3591 + "seq-queue": {
3592 + "version": "0.0.5",
3593 + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
3594 + "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
3595 + },
3596 + "sequelize": {
3597 + "version": "6.20.0",
3598 + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.20.0.tgz",
3599 + "integrity": "sha512-45B+k4eKP0D+x1F08dSYnZjlKGvlxM/FCVTWQ6TLVaGCyRv/TmvTRSZ4bTNB5pMgQOMkJUlztg5zSvMmkzaWCA==",
3600 + "requires": {
3601 + "@types/debug": "^4.1.7",
3602 + "@types/validator": "^13.7.1",
3603 + "debug": "^4.3.3",
3604 + "dottie": "^2.0.2",
3605 + "inflection": "^1.13.2",
3606 + "lodash": "^4.17.21",
3607 + "moment": "^2.29.1",
3608 + "moment-timezone": "^0.5.34",
3609 + "pg-connection-string": "^2.5.0",
3610 + "retry-as-promised": "^5.0.0",
3611 + "semver": "^7.3.5",
3612 + "sequelize-pool": "^7.1.0",
3613 + "toposort-class": "^1.0.1",
3614 + "uuid": "^8.3.2",
3615 + "validator": "^13.7.0",
3616 + "wkx": "^0.5.0"
3617 + },
3618 + "dependencies": {
3619 + "debug": {
3620 + "version": "4.3.4",
3621 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
3622 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
3623 + "requires": {
3624 + "ms": "2.1.2"
3625 + }
3626 + },
3627 + "ms": {
3628 + "version": "2.1.2",
3629 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3630 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
3631 + },
3632 + "semver": {
3633 + "version": "7.3.7",
3634 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
3635 + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
3636 + "requires": {
3637 + "lru-cache": "^6.0.0"
3638 + }
3639 + }
3640 + }
3641 + },
3642 + "sequelize-pool": {
3643 + "version": "7.1.0",
3644 + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz",
3645 + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg=="
3646 + },
3163 "serve-static": { 3647 "serve-static": {
3164 "version": "1.15.0", 3648 "version": "1.15.0",
3165 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 3649 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
...@@ -3191,6 +3675,11 @@ ...@@ -3191,6 +3675,11 @@
3191 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3675 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
3192 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 3676 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
3193 }, 3677 },
3678 + "sqlstring": {
3679 + "version": "2.3.3",
3680 + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
3681 + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="
3682 + },
3194 "statuses": { 3683 "statuses": {
3195 "version": "2.0.1", 3684 "version": "2.0.1",
3196 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 3685 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
...@@ -3270,6 +3759,11 @@ ...@@ -3270,6 +3759,11 @@
3270 } 3759 }
3271 } 3760 }
3272 }, 3761 },
3762 + "toposort-class": {
3763 + "version": "1.0.1",
3764 + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
3765 + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg="
3766 + },
3273 "touch": { 3767 "touch": {
3274 "version": "3.1.0", 3768 "version": "3.1.0",
3275 "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 3769 "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
...@@ -3362,6 +3856,16 @@ ...@@ -3362,6 +3856,16 @@
3362 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3856 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
3363 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 3857 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
3364 }, 3858 },
3859 + "uuid": {
3860 + "version": "8.3.2",
3861 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
3862 + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
3863 + },
3864 + "validator": {
3865 + "version": "13.7.0",
3866 + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
3867 + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
3868 + },
3365 "vary": { 3869 "vary": {
3366 "version": "1.1.2", 3870 "version": "1.1.2",
3367 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3871 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
...@@ -3375,6 +3879,14 @@ ...@@ -3375,6 +3879,14 @@
3375 "string-width": "^4.0.0" 3879 "string-width": "^4.0.0"
3376 } 3880 }
3377 }, 3881 },
3882 + "wkx": {
3883 + "version": "0.5.0",
3884 + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz",
3885 + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==",
3886 + "requires": {
3887 + "@types/node": "*"
3888 + }
3889 + },
3378 "wrap-ansi": { 3890 "wrap-ansi": {
3379 "version": "7.0.0", 3891 "version": "7.0.0",
3380 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3892 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
19 "axios": "^0.27.2", 19 "axios": "^0.27.2",
20 "dotenv": "^16.0.1", 20 "dotenv": "^16.0.1",
21 "express": "^4.18.1", 21 "express": "^4.18.1",
22 - "nodemon": "^2.0.16" 22 + "mysql2": "^2.3.3",
23 + "nodemon": "^2.0.16",
24 + "sequelize": "^6.20.0"
23 } 25 }
24 } 26 }
......