Browse Source

better confirmations in tribes, slim down many things

docker-workflow-build
Evan Feenstra 4 years ago
parent
commit
7c707d3b3c
  1. 42
      app.ts
  2. 2
      dist/app.js.map
  3. 2
      dist/src/auth.js.map
  4. 6
      dist/src/builtin/index.js
  5. 2
      dist/src/builtin/index.js.map
  6. 2
      dist/src/builtin/loop.js.map
  7. 2
      dist/src/builtin/mother.js.map
  8. 2
      dist/src/builtin/welcome.js.map
  9. 12
      dist/src/controllers/api.js
  10. 2
      dist/src/controllers/api.js.map
  11. 30
      dist/src/controllers/bots.js
  12. 2
      dist/src/controllers/bots.js.map
  13. 12
      dist/src/controllers/chatTribes.js
  14. 2
      dist/src/controllers/chatTribes.js.map
  15. 6
      dist/src/controllers/chats.js
  16. 2
      dist/src/controllers/chats.js.map
  17. 19
      dist/src/controllers/confirmations.js
  18. 2
      dist/src/controllers/confirmations.js.map
  19. 6
      dist/src/controllers/contacts.js
  20. 2
      dist/src/controllers/contacts.js.map
  21. 6
      dist/src/controllers/details.js
  22. 2
      dist/src/controllers/details.js.map
  23. 2
      dist/src/controllers/index.js.map
  24. 2
      dist/src/controllers/invites.js.map
  25. 2
      dist/src/controllers/invoices.js
  26. 2
      dist/src/controllers/invoices.js.map
  27. 8
      dist/src/controllers/media.js
  28. 2
      dist/src/controllers/media.js.map
  29. 22
      dist/src/controllers/messages.js
  30. 2
      dist/src/controllers/messages.js.map
  31. 12
      dist/src/controllers/payment.js
  32. 2
      dist/src/controllers/payment.js.map
  33. 2
      dist/src/controllers/subscriptions.js.map
  34. 2
      dist/src/controllers/uploads.js.map
  35. 2
      dist/src/crypto/rsa.js.map
  36. 2
      dist/src/grpc/index.js.map
  37. 2
      dist/src/helpers.js.map
  38. 6
      dist/src/hub.js
  39. 2
      dist/src/hub.js.map
  40. 2
      dist/src/models/index.js.map
  41. 2
      dist/src/models/ts/bot.js.map
  42. 2
      dist/src/models/ts/botMember.js.map
  43. 2
      dist/src/models/ts/chat.js.map
  44. 6
      dist/src/models/ts/chatBot.js
  45. 2
      dist/src/models/ts/chatBot.js.map
  46. 6
      dist/src/models/ts/chatMember.js
  47. 2
      dist/src/models/ts/chatMember.js.map
  48. 2
      dist/src/models/ts/contact.js.map
  49. 2
      dist/src/models/ts/invite.js.map
  50. 2
      dist/src/models/ts/mediaKey.js.map
  51. 2
      dist/src/models/ts/message.js.map
  52. 2
      dist/src/models/ts/subscription.js.map
  53. 2
      dist/src/models/ts/timer.js.map
  54. 2
      dist/src/network/index.js.map
  55. 2
      dist/src/network/intercept.js.map
  56. 6
      dist/src/network/modify.js
  57. 2
      dist/src/network/modify.js.map
  58. 18
      dist/src/network/receive.js
  59. 2
      dist/src/network/receive.js.map
  60. 2
      dist/src/network/send.js.map
  61. 2
      dist/src/utils/case.js.map
  62. 2
      dist/src/utils/cron.js.map
  63. 2
      dist/src/utils/gitinfo.js.map
  64. 2
      dist/src/utils/json.js.map
  65. 2
      dist/src/utils/ldat.js.map
  66. 2
      dist/src/utils/lightning.js.map
  67. 2
      dist/src/utils/logger.js.map
  68. 2
      dist/src/utils/macaroon.js.map
  69. 2
      dist/src/utils/meme.js.map
  70. 2
      dist/src/utils/msg.js.map
  71. 2
      dist/src/utils/nodeinfo.js.map
  72. 2
      dist/src/utils/res.js.map
  73. 2
      dist/src/utils/setup.js.map
  74. 2
      dist/src/utils/signer.js.map
  75. 2
      dist/src/utils/socket.js.map
  76. 2
      dist/src/utils/timers.js.map
  77. 2
      dist/src/utils/tribeBots.js.map
  78. 2
      dist/src/utils/tribes.js.map
  79. 2
      dist/src/utils/unlock.js.map
  80. 22
      src/auth.ts
  81. 30
      src/builtin/index.ts
  82. 22
      src/builtin/loop.ts
  83. 2
      src/builtin/mother.ts
  84. 10
      src/builtin/welcome.ts
  85. 66
      src/controllers/api.ts
  86. 222
      src/controllers/bots.ts
  87. 261
      src/controllers/chatTribes.ts
  88. 234
      src/controllers/chats.ts
  89. 19
      src/controllers/confirmations.ts
  90. 148
      src/controllers/contacts.ts
  91. 18
      src/controllers/details.ts
  92. 50
      src/controllers/index.ts
  93. 32
      src/controllers/invites.ts
  94. 34
      src/controllers/invoices.ts
  95. 216
      src/controllers/media.ts
  96. 220
      src/controllers/messages.ts
  97. 120
      src/controllers/payment.ts
  98. 68
      src/controllers/subscriptions.ts
  99. 38
      src/controllers/uploads.ts
  100. 74
      src/crypto/rsa.ts

42
app.ts

@ -5,12 +5,12 @@ import * as cookieParser from 'cookie-parser'
import * as cors from 'cors'
import * as path from 'path'
import logger from './src/utils/logger'
import {pingHubInterval, checkInvitesHubInterval} from './src/hub'
import {setupDatabase, setupDone} from './src/utils/setup'
import { pingHubInterval, checkInvitesHubInterval } from './src/hub'
import { setupDatabase, setupDone } from './src/utils/setup'
import * as controllers from './src/controllers'
import * as socket from './src/utils/socket'
import * as network from './src/network'
import {authModule, unlocker} from './src/auth'
import { authModule, unlocker } from './src/auth'
import * as grpc from './src/grpc'
import * as cert from './src/utils/cert'
@ -18,14 +18,14 @@ const env = process.env.NODE_ENV || 'development';
const config = require(path.join(__dirname, 'config/app.json'))[env];
const port = process.env.PORT || config.node_http_port || 3001
console.log("=> env:",env)
console.log('=> process.env.PORT:',process.env.PORT)
console.log('=> config.node_http_port:',config.node_http_port)
console.log("=> env:", env)
console.log('=> process.env.PORT:', process.env.PORT)
console.log('=> config.node_http_port:', config.node_http_port)
process.env.GRPC_SSL_CIPHER_SUITES = 'HIGH+ECDSA'
// START SETUP!
async function start(){
async function start() {
await setupDatabase()
mainSetup()
if (config.hub_api_url) {
@ -34,24 +34,24 @@ async function start(){
}
start()
async function mainSetup(){
async function mainSetup() {
await setupApp() // setup routes
grpc.reconnectToLND(Math.random(), function(){
grpc.reconnectToLND(Math.random(), function () {
console.log(">> FINISH SETUP")
finishSetup()
}) // recursive
}
async function finishSetup(){
await network.initTribesSubscriptions()
async function finishSetup() {
await network.initTribesSubscriptions()
if (config.hub_api_url) {
checkInvitesHubInterval(5000)
}
setupDone()
}
function setupApp(){
return new Promise(async resolve=>{
function setupApp() {
return new Promise(async resolve => {
const app = express();
@ -60,7 +60,7 @@ function setupApp(){
app.use(bodyParser.urlencoded({ extended: true }));
app.use(logger)
app.use(cors({
allowedHeaders:['X-Requested-With','Content-Type','Accept','x-user-token']
allowedHeaders: ['X-Requested-With', 'Content-Type', 'Accept', 'x-user-token']
}))
app.use(cookieParser())
if (env != 'development') {
@ -75,14 +75,14 @@ function setupApp(){
var certData = await cert.getCertificate(config.public_url, config.ssl.port, config.ssl.save)
var credentials = { key: certData?.privateKey.toString(), ca: certData?.caBundle, cert: certData?.certificate };
server = require("https").createServer(credentials, app);
} catch(e) {
} catch (e) {
console.log("getCertificate ERROR", e)
}
} else {
server = require("http").Server(app);
}
if(!server) return console.log("=> FAILED to create server")
if (!server) return console.log("=> FAILED to create server")
server.listen(port, (err) => {
if (err) throw err;
/* eslint-disable no-console */
@ -90,20 +90,20 @@ function setupApp(){
});
// start all routes!
if(!config.unlock) {
if (!config.unlock) {
controllers.set(app);
socket.connect(server)
resolve()
} else {
app.post('/unlock', async function(req,res){
const ok = await unlocker(req,res)
if(ok) {
app.post('/unlock', async function (req, res) {
const ok = await unlocker(req, res)
if (ok) {
console.log('=> relay unlocked!')
controllers.set(app);
socket.connect(server)
resolve()
}
})
})
}
})

2
dist/app.js.map

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

2
dist/src/auth.js.map

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

6
dist/src/builtin/index.js

@ -21,9 +21,11 @@ const constants_1 = require("../constants");
function init() {
return __awaiter(this, void 0, void 0, function* () {
MotherBot.init();
const builtInBots = yield models_1.models.ChatBot.findAll({ where: {
const builtInBots = yield models_1.models.ChatBot.findAll({
where: {
botType: constants_1.default.bot_types.builtin
} });
}
});
if (!(builtInBots && builtInBots.length))
return;
builtInBots.forEach(b => {

2
dist/src/builtin/index.js.map

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/builtin/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mDAAmD;AACnD,wCAAuC;AACvC,sCAAqC;AACrC,wCAAuC;AACvC,kCAAiC;AAEjC,sCAAkC;AAClC,8CAAmD;AAuBvB,0BAvBpB,sBAAe,CAuBoB;AAtB3C,4CAAoC;AAEpC,SAAe,IAAI;;QACf,SAAS,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,WAAW,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,KAAK,EAAC;gBACpD,OAAO,EAAE,mBAAS,CAAC,SAAS,CAAC,OAAO;aACvC,EAAC,CAAC,CAAA;QACH,IAAG,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;YAAE,OAAM;QAE/C,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE;YACnB,IAAG,CAAC,CAAC,SAAS,KAAG,UAAU;gBAAE,UAAU,CAAC,IAAI,EAAE,CAAA;YAC9C,IAAG,CAAC,CAAC,SAAS,KAAG,UAAU;gBAAE,OAAO,CAAC,IAAI,EAAE,CAAA;QAC/C,CAAC,CAAC,CAAA;IACN,CAAC;CAAA;AAQO,oBAAI;AANZ,SAAS,cAAc,CAAC,GAAO;IAC3B,UAAU,CAAC,GAAE,EAAE;QACX,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,sBAAe,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC,EAAC,IAAI,CAAC,CAAA;AACX,CAAC;AAEY,wCAAc"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/builtin/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mDAAmD;AACnD,wCAAuC;AACvC,sCAAqC;AACrC,wCAAuC;AACvC,kCAAiC;AAEjC,sCAAkC;AAClC,8CAAqD;AAyBtB,0BAzBtB,sBAAe,CAyBsB;AAxB9C,4CAAoC;AAEpC,SAAe,IAAI;;QACf,SAAS,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,WAAW,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7C,KAAK,EAAE;gBACH,OAAO,EAAE,mBAAS,CAAC,SAAS,CAAC,OAAO;aACvC;SACJ,CAAC,CAAA;QACF,IAAI,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;YAAE,OAAM;QAEhD,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU;gBAAE,UAAU,CAAC,IAAI,EAAE,CAAA;YACjD,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU;gBAAE,OAAO,CAAC,IAAI,EAAE,CAAA;QAClD,CAAC,CAAC,CAAA;IACN,CAAC;CAAA;AAQQ,oBAAI;AANb,SAAS,cAAc,CAAC,GAAQ;IAC5B,UAAU,CAAC,GAAG,EAAE;QACZ,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,sBAAe,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC,EAAE,IAAI,CAAC,CAAA;AACZ,CAAC;AAEc,wCAAc"}

2
dist/src/builtin/loop.js.map

File diff suppressed because one or more lines are too long

2
dist/src/builtin/mother.js.map

File diff suppressed because one or more lines are too long

2
dist/src/builtin/welcome.js.map

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

12
dist/src/controllers/api.js

@ -74,15 +74,19 @@ function finalAction(a, bot_id) {
const iAmTribeAdmin = owner.publicKey === (theChat && theChat.ownerPubkey);
console.log("=> ACTION HIT", a.action, a.bot_name);
if (chat_uuid && !iAmTribeAdmin) { // IM NOT ADMIN - its my bot and i need to forward to admin - there is a chat_uuid
const myBot = yield models_1.models.Bot.findOne({ where: {
const myBot = yield models_1.models.Bot.findOne({
where: {
id: bot_id
} });
}
});
if (!myBot)
return console.log('no bot');
// THIS is a bot member cmd res (i am bot maker)
const botMember = yield models_1.models.BotMember.findOne({ where: {
const botMember = yield models_1.models.BotMember.findOne({
where: {
tribeUuid: chat_uuid, botId: bot_id
} });
}
});
if (!botMember)
return console.log('no botMember');
const dest = botMember.memberPubkey;

2
dist/src/controllers/api.js.map

File diff suppressed because one or more lines are too long

30
dist/src/controllers/bots.js

@ -102,9 +102,11 @@ function installBotAsTribeAdmin(chat, bot_json) {
};
if (isLocal) {
// "install" my local bot and send "INSTALL" event
const myBot = yield models_1.models.Bot.findOne({ where: {
const myBot = yield models_1.models.Bot.findOne({
where: {
uuid: bot_json.uuid
} });
}
});
if (myBot) {
yield models_1.models.ChatBot.create(chatBot);
postToBotServer({
@ -188,9 +190,11 @@ function receiveBotInstall(payload) {
if (!chat_uuid || !sender_pub_key)
return console.log('no chat uuid or sender pub key');
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
const bot = yield models_1.models.Bot.findOne({ where: {
const bot = yield models_1.models.Bot.findOne({
where: {
uuid: bot_uuid
} });
}
});
if (!bot)
return;
const verifiedOwnerPubkey = yield tribes.verifySignedTimestamp(bot_uuid);
@ -224,15 +228,19 @@ function receiveBotCmd(payload) {
if (!chat_uuid)
return console.log('no chat uuid');
// const amount = dat.message.amount - check price_per_use
const bot = yield models_1.models.Bot.findOne({ where: {
const bot = yield models_1.models.Bot.findOne({
where: {
uuid: bot_uuid
} });
}
});
if (!bot)
return;
const botMember = yield models_1.models.BotMember.findOne({ where: {
const botMember = yield models_1.models.BotMember.findOne({
where: {
botId: bot.id,
tribeUuid: chat_uuid,
} });
}
});
if (!botMember)
return;
botMember.update({ msgCount: (botMember || 0) + 1 });
@ -329,9 +337,11 @@ function receiveBotRes(payload) {
}, bot_id);
}
else {
const theChat = yield models_1.models.Chat.findOne({ where: {
const theChat = yield models_1.models.Chat.findOne({
where: {
uuid: chat_uuid
} });
}
});
if (!chat)
return console.log('=> receiveBotRes as sub error no chat');
var date = new Date();

2
dist/src/controllers/bots.js.map

File diff suppressed because one or more lines are too long

12
dist/src/controllers/chatTribes.js

@ -467,9 +467,11 @@ function replayChatHistory(chat, contact) {
if (m.mediaKey && m.mediaToken) {
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1];
if (muid) {
const mediaKey = yield models_1.models.MediaKey.findOne({ where: {
const mediaKey = yield models_1.models.MediaKey.findOne({
where: {
muid, chatId: chat.id,
} });
}
});
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues)
mediaKeyMap = { chat: mediaKey.key };
newMediaTerms = { muid: mediaKey.muid };
@ -533,10 +535,12 @@ function createTribeChatParams(owner, contactIds, name, img, price_per_message,
exports.createTribeChatParams = createTribeChatParams;
function addPendingContactIdsToChat(achat) {
return __awaiter(this, void 0, void 0, function* () {
const members = yield models_1.models.ChatMember.findAll({ where: {
const members = yield models_1.models.ChatMember.findAll({
where: {
chatId: achat.id,
status: constants_1.default.chat_statuses.pending // only pending
} });
}
});
if (!members)
return achat;
const pendingContactIds = members.map(m => m.contactId);

2
dist/src/controllers/chatTribes.js.map

File diff suppressed because one or more lines are too long

6
dist/src/controllers/chats.js

@ -64,9 +64,11 @@ function kickChatMember(req, res) {
const newContactIds = contactIds.filter(cid => cid !== contactId);
yield chat.update({ contactIds: JSON.stringify(newContactIds) });
// remove from ChatMembers
yield models_1.models.ChatMember.destroy({ where: {
yield models_1.models.ChatMember.destroy({
where: {
chatId, contactId,
} });
}
});
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
network.sendMessage({
chat: Object.assign(Object.assign({}, chat.dataValues), { contactIds: [contactId] }),

2
dist/src/controllers/chats.js.map

File diff suppressed because one or more lines are too long

19
dist/src/controllers/confirmations.js

@ -16,11 +16,24 @@ const jsonUtils = require("../utils/json");
const network = require("../network");
const constants_1 = require("../constants");
const res_1 = require("../utils/res");
function sendConfirmation({ chat, sender, msg_id }) {
if (!msg_id)
/*
if in tribe: dont send
UNLESS tribe admin:
then send only to the og sender
*/
function sendConfirmation({ chat, sender, msg_id, receiver }) {
if (!msg_id || !chat || !sender)
return;
let theChat = chat;
const isTribe = chat.type === constants_1.default.chat_types.tribe;
const isTribeOwner = isTribe && (sender && sender.publicKey) === (chat && chat.ownerPubkey);
if (isTribe && !isTribeOwner)
return; // DONT SEND IF NORMAL MEMBER
if (isTribeOwner && (receiver && receiver.id)) {
theChat = Object.assign(Object.assign({}, (chat.dataValues || chat)), { contactIds: [receiver.id] });
}
network.sendMessage({
chat,
chat: theChat,
sender,
message: { id: msg_id },
type: constants_1.default.message_types.confirmation,

2
dist/src/controllers/confirmations.js.map

File diff suppressed because one or more lines are too long

6
dist/src/controllers/contacts.js

@ -23,9 +23,11 @@ exports.getContacts = (req, res) => __awaiter(void 0, void 0, void 0, function*
const invites = yield models_1.models.Invite.findAll({ raw: true });
const chats = yield models_1.models.Chat.findAll({ where: { deleted: false }, raw: true });
const subscriptions = yield models_1.models.Subscription.findAll({ raw: true });
const pendingMembers = yield models_1.models.ChatMember.findAll({ where: {
const pendingMembers = yield models_1.models.ChatMember.findAll({
where: {
status: constants_1.default.chat_statuses.pending
} });
}
});
const contactsResponse = contacts.map(contact => {
let contactJson = jsonUtils.contactToJson(contact);
let invite = invites.find(invite => invite.contactId == contact.id);

2
dist/src/controllers/contacts.js.map

File diff suppressed because one or more lines are too long

6
dist/src/controllers/details.js

@ -101,12 +101,14 @@ exports.getBalance = (req, res) => __awaiter(void 0, void 0, void 0, function* (
const channelList = yield lightning_1.listChannels();
const { channels } = channelList;
const reserve = channels.reduce((a, chan) => a + parseInt(chan.local_chan_reserve_sat), 0);
res.json({ success: true, response: {
res.json({
success: true, response: {
reserve,
full_balance: parseInt(response.balance),
balance: parseInt(response.balance) - reserve,
pending_open_balance: parseInt(response.pending_open_balance),
} });
}
});
}
catch (e) {
console.log("ERROR getBalance", e);

2
dist/src/controllers/details.js.map

File diff suppressed because one or more lines are too long

2
dist/src/controllers/index.js.map

File diff suppressed because one or more lines are too long

2
dist/src/controllers/invites.js.map

@ -1 +1 @@
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../src/controllers/invites.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAgC;AAChC,iCAAgC;AAChC,2CAA0C;AAC1C,gCAA6E;AAEhE,QAAA,YAAY,GAAG,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9C,MAAM,EACL,aAAa,EACX,GAAG,GAAG,CAAC,IAAI,CAAA;IACd,MAAM,MAAM,GAAG;QACd,MAAM,EAAE;YACP,GAAG,EAAE,aAAa;SAClB;KACD,CAAA;IAED,SAAS,SAAS;QACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3B,GAAG,CAAC,GAAG,EAAE,CAAA;IACV,CAAC;IACD,SAAS,SAAS;QACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5B,GAAG,CAAC,GAAG,EAAE,CAAA;IACV,CAAC;IAEE,uBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AACnD,CAAC,CAAA,CAAA;AAEY,QAAA,SAAS,GAAG,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3C,mBAAmB;IACnB,gCAAgC;IAChC,IAAI;IAEJ,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,MAAM,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,EAAC,CAAC,CAAA;IAEvF,MAAM,SAAS,GAAG,CAAO,QAAQ,EAAE,EAAE;QACpC,iCAAiC;QACjC,kCAAkC;QAClC,iDAAiD;QACjD,qDAAqD;QACrD,IAAI;QACJ,IAAG,QAAQ,CAAC,aAAa,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;YACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACf,GAAG,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,KAAK,EAAE,KAAK,EAAC,QAAQ,CAAC,aAAa,EAAC,CAAC,CAAA;YACvD,GAAG,CAAC,GAAG,EAAE,CAAA;SACT;aAAM;YACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACf,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;YACnF,GAAG,CAAC,GAAG,EAAE,CAAA;SACT;IACF,CAAC,CAAA,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAC,QAAQ,CAAC,CAAA;QAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5B,GAAG,CAAC,GAAG,EAAE,CAAA;IACV,CAAC,CAAA;IAED,8DAA8D;IAC9D,sBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AACzD,CAAC,CAAA,CAAA;AAEY,QAAA,YAAY,GAAG,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9C,MAAM,EACL,QAAQ,EACR,eAAe,EACb,GAAG,GAAG,CAAC,IAAI,CAAA;IAEb,MAAM,KAAK,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAC,CAAC,CAAA;IAExE,MAAM,MAAM,GAAG;QACd,MAAM,EAAE;YACP,QAAQ,EAAE,KAAK,CAAC,KAAK;YACrB,MAAM,EAAE,KAAK,CAAC,SAAS;YACvB,gBAAgB,EAAE,QAAQ;YAC1B,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC3C;KACD,CAAA;IAED,MAAM,SAAS,GAAG,CAAO,QAAQ,EAAE,EAAE;QACpC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEjC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA;QAErC,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3C,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,CAAC;SACT,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC,cAAc,EAAE,aAAa,CAAC,OAAO;YACrC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,MAAM,EAAE,aAAa,CAAC,aAAa;YACnC,YAAY,EAAE,aAAa,CAAC,GAAG;SAE/B,CAAC,CAAA;QACF,IAAI,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,MAAM,EAAE;YACX,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;SACnD;QAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;QACjD,GAAG,CAAC,GAAG,EAAE,CAAA;IACV,CAAC,CAAA,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClB,GAAG,CAAC,GAAG,EAAE,CAAA;IACV,CAAC,CAAA;IAEE,uBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AACnD,CAAC,CAAA,CAAA"}
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../src/controllers/invites.ts"],"names":[],"mappings":"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"}

2
dist/src/controllers/invoices.js

@ -243,7 +243,7 @@ exports.receiveInvoice = (payload) => __awaiter(void 0, void 0, void 0, function
});
hub_1.sendNotification(chat, msg.senderAlias || sender.alias, 'message');
const theChat = Object.assign(Object.assign({}, chat.dataValues), { contactIds: [sender.id] });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender });
});
// lnd invoice stuff
function decodePaymentRequest(paymentRequest) {

2
dist/src/controllers/invoices.js.map

File diff suppressed because one or more lines are too long

8
dist/src/controllers/media.js

@ -238,9 +238,11 @@ exports.receivePurchase = (payload) => __awaiter(void 0, void 0, void 0, functio
return console.log('no original message');
}
// find mediaKey for who sent
const mediaKey = yield models_1.models.MediaKey.findOne({ where: {
const mediaKey = yield models_1.models.MediaKey.findOne({
where: {
muid, receiver: isTribe ? 0 : sender.id,
} });
}
});
// console.log('mediaKey found!',mediaKey.dataValues)
if (!mediaKey)
return; // this is from another person (admin is forwarding)
@ -428,7 +430,7 @@ exports.receiveAttachment = (payload) => __awaiter(void 0, void 0, void 0, funct
});
hub_1.sendNotification(chat, msg.senderAlias || sender.alias, 'message');
const theChat = Object.assign(Object.assign({}, chat.dataValues), { contactIds: [sender.id] });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender });
});
function signer(req, res) {
return __awaiter(this, void 0, void 0, function* () {

2
dist/src/controllers/media.js.map

File diff suppressed because one or more lines are too long

22
dist/src/controllers/messages.js

@ -39,16 +39,20 @@ exports.getMessages = (req, res) => __awaiter(void 0, void 0, void 0, function*
};
let confirmedMessagesWhere = {
updated_at: { [sequelize_1.Op.gte]: dateToReturn },
status: { [sequelize_1.Op.or]: [
status: {
[sequelize_1.Op.or]: [
constants_1.default.statuses.received,
] },
]
},
sender: owner.id
};
let deletedMessagesWhere = {
updated_at: { [sequelize_1.Op.gte]: dateToReturn },
status: { [sequelize_1.Op.or]: [
status: {
[sequelize_1.Op.or]: [
constants_1.default.statuses.deleted
] },
]
},
};
// if (chatId) {
// newMessagesWhere.chat_id = chatId
@ -156,9 +160,11 @@ exports.sendMessage = (req, res) => __awaiter(void 0, void 0, void 0, function*
const isTribe = chat.type === constants_1.default.chat_types.tribe;
const isTribeOwner = isTribe && owner.publicKey === chat.ownerPubkey;
if (reply_uuid && boost && amount) {
const ogMsg = yield models_1.models.Message.findOne({ where: {
const ogMsg = yield models_1.models.Message.findOne({
where: {
uuid: reply_uuid,
} });
}
});
if (ogMsg && ogMsg.sender) {
realSatsContactId = ogMsg.sender;
}
@ -255,7 +261,7 @@ exports.receiveMessage = (payload) => __awaiter(void 0, void 0, void 0, function
});
hub_1.sendNotification(chat, msg.senderAlias || sender.alias, 'message');
const theChat = Object.assign(Object.assign({}, chat.dataValues), { contactIds: [sender.id] });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender });
});
exports.receiveBoost = (payload) => __awaiter(void 0, void 0, void 0, function* () {
const { owner, sender, chat, content, remote_content, chat_type, sender_alias, msg_uuid, date_string, reply_uuid, amount, network_type, sender_photo_url, msg_id } = yield helpers.parseReceiveParams(payload);
@ -296,7 +302,7 @@ exports.receiveBoost = (payload) => __awaiter(void 0, void 0, void 0, function*
response: jsonUtils.messageToJson(message, chat, sender)
});
const theChat = Object.assign(Object.assign({}, chat.dataValues), { contactIds: [sender.id] });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id });
confirmations_1.sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender });
if (msg.replyUuid) {
const ogMsg = yield models_1.models.Message.findOne({
where: { uuid: msg.replyUuid }

2
dist/src/controllers/messages.js.map

File diff suppressed because one or more lines are too long

12
dist/src/controllers/payment.js

@ -161,20 +161,24 @@ exports.listPayments = (req, res) => __awaiter(void 0, void 0, void 0, function*
where: {
[sequelize_1.Op.or]: [
{
type: { [sequelize_1.Op.or]: [
type: {
[sequelize_1.Op.or]: [
constants_1.default.message_types.payment,
constants_1.default.message_types.direct_payment,
constants_1.default.message_types.keysend,
constants_1.default.message_types.purchase,
] },
]
},
status: { [sequelize_1.Op.not]: constants_1.default.statuses.failed }
},
{
type: { [sequelize_1.Op.or]: [
type: {
[sequelize_1.Op.or]: [
constants_1.default.message_types.message,
constants_1.default.message_types.boost,
constants_1.default.message_types.repayment,
] },
]
},
amount: {
[sequelize_1.Op.gt]: MIN_VAL // greater than
},

2
dist/src/controllers/payment.js.map

File diff suppressed because one or more lines are too long

2
dist/src/controllers/subscriptions.js.map

File diff suppressed because one or more lines are too long

2
dist/src/controllers/uploads.js.map

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

2
dist/src/crypto/rsa.js.map

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

2
dist/src/grpc/index.js.map

File diff suppressed because one or more lines are too long

2
dist/src/helpers.js.map

File diff suppressed because one or more lines are too long

6
dist/src/hub.js

@ -251,11 +251,13 @@ function finalNotification(ownerID, params) {
if (params.notification.message) {
console.log('[send notification]', params.notification);
}
let unseenMessages = yield models_1.models.Message.count({ where: {
let unseenMessages = yield models_1.models.Message.count({
where: {
sender: { [sequelize_1.Op.ne]: ownerID },
seen: false,
chatId: { [sequelize_1.Op.ne]: 0 } // no anon keysends
} });
}
});
params.notification.badge = unseenMessages;
triggerNotification(params);
});

2
dist/src/hub.js.map

File diff suppressed because one or more lines are too long

2
dist/src/models/index.js.map

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":";;AAAA,+DAA+C;AAC/C,6BAA4B;AAC5B,oCAA4B;AAC5B,0CAAkC;AAClC,wCAAgC;AAChC,0CAAkC;AAClC,oDAA4C;AAC5C,4CAAoC;AACpC,gDAAwC;AACxC,sCAA8B;AAC9B,kCAA0B;AAC1B,0CAAkC;AAClC,8CAAsC;AAEtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE5E,MAAM,SAAS,GAAG,IAAI,gCAAS,iCAC1B,MAAM,KACT,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAC3D,MAAM,EAAE,CAAC,cAAI,EAAC,iBAAO,EAAC,gBAAM,EAAC,iBAAO,EAAC,sBAAY,EAAC,kBAAQ,EAAC,oBAAU,EAAC,eAAK,EAAC,aAAG,EAAC,iBAAO,EAAC,mBAAS,CAAC,IAClG,CAAA;AAIA,8BAAS;AAHX,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;AAI7B,wBAAM"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":";;AAAA,+DAAiD;AACjD,6BAA4B;AAC5B,oCAA4B;AAC5B,0CAAkC;AAClC,wCAAgC;AAChC,0CAAkC;AAClC,oDAA4C;AAC5C,4CAAoC;AACpC,gDAAwC;AACxC,sCAA8B;AAC9B,kCAA0B;AAC1B,0CAAkC;AAClC,8CAAsC;AAEtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE7E,MAAM,SAAS,GAAG,IAAI,gCAAS,iCAC1B,MAAM,KACT,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAC7D,MAAM,EAAE,CAAC,cAAI,EAAE,iBAAO,EAAE,gBAAM,EAAE,iBAAO,EAAE,sBAAY,EAAE,kBAAQ,EAAE,oBAAU,EAAE,eAAK,EAAE,aAAG,EAAE,iBAAO,EAAE,mBAAS,CAAC,IAC5G,CAAA;AAIA,8BAAS;AAHX,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;AAI7B,wBAAM"}

2
dist/src/models/ts/bot.js.map

@ -1 +1 @@
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../../src/models/ts/bot.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;EAEE;AAGF,IAAqB,GAAG,GAAxB,MAAqB,GAAI,SAAQ,4BAAU;CA8B1C,CAAA;AAvBC;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACb,CAAC;;+BACQ;AAGV;IADC,6BAAM;;iCACK;AAGZ;IADC,6BAAM;;iCACK;AAGZ;IADC,6BAAM;;mCACO;AAGd;IADC,6BAAM;;oCACQ;AAGf;IADC,6BAAM;;wCACY;AAGnB;IADC,6BAAM;8BACI,IAAI;sCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;sCAAA;AA5BI,GAAG;IADvB,4BAAK,CAAC,EAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GAChC,GAAG,CA8BvB;kBA9BoB,GAAG"}
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../../src/models/ts/bot.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;EAEE;AAGF,IAAqB,GAAG,GAAxB,MAAqB,GAAI,SAAQ,4BAAU;CA8B1C,CAAA;AAvBC;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACb,CAAC;;+BACQ;AAGV;IADC,6BAAM;;iCACK;AAGZ;IADC,6BAAM;;iCACK;AAGZ;IADC,6BAAM;;mCACO;AAGd;IADC,6BAAM;;oCACQ;AAGf;IADC,6BAAM;;wCACY;AAGnB;IADC,6BAAM;8BACI,IAAI;sCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;sCAAA;AA5BI,GAAG;IADvB,4BAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GAClC,GAAG,CA8BvB;kBA9BoB,GAAG"}

2
dist/src/models/ts/botMember.js.map

@ -1 +1 @@
{"version":3,"file":"botMember.js","sourceRoot":"","sources":["../../../../src/models/ts/botMember.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;EAEE;AAGF,IAAqB,SAAS,GAA9B,MAAqB,SAAU,SAAQ,4BAAgB;CA4BtD,CAAA;AApBC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;qCACQ;AAGV;IADC,6BAAM;;wCACM;AAGb;IADC,6BAAM;;+CACa;AAGpB;IADC,6BAAM;;4CACU;AAGjB;IADC,6BAAM;;2CACS;AAGhB;IADC,6BAAM;8BACI,IAAI;4CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;4CAAA;AA1BI,SAAS;IAD7B,4BAAK,CAAC,EAAC,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACvC,SAAS,CA4B7B;kBA5BoB,SAAS"}
{"version":3,"file":"botMember.js","sourceRoot":"","sources":["../../../../src/models/ts/botMember.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;EAEE;AAGF,IAAqB,SAAS,GAA9B,MAAqB,SAAU,SAAQ,4BAAgB;CA4BtD,CAAA;AApBC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;qCACQ;AAGV;IADC,6BAAM;;wCACM;AAGb;IADC,6BAAM;;+CACa;AAGpB;IADC,6BAAM;;4CACU;AAGjB;IADC,6BAAM;;2CACS;AAGhB;IADC,6BAAM;8BACI,IAAI;4CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;4CAAA;AA1BI,SAAS;IAD7B,4BAAK,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GACzC,SAAS,CA4B7B;kBA5BoB,SAAS"}

2
dist/src/models/ts/chat.js.map

@ -1 +1 @@
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/models/ts/chat.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,IAAI,GAAzB,MAAqB,IAAK,SAAQ,4BAAW;CAoG5C,CAAA;AA5FC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;gCACQ;AAGV;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;kCACZ;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;oCACV;AAGd;IADC,6BAAM;;wCACW;AAGlB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;uCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;uCAAA;AAOf;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;qCACc;AAGhB;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;yCACY;AAGnB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAGpB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAOpB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;KAEpB,CAAC;;sCACe;AAGjB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;;yCACY;AAOnB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;kCACW;AAGb;IADC,6BAAM;;oCACO;AAGd;IADC,6BAAM;;qCACQ;AAGf;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;wCACW;AAGlB;IADC,6BAAM;;qCACQ;AAlGI,IAAI;IADxB,4BAAK,CAAC,EAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACjC,IAAI,CAoGxB;kBApGoB,IAAI"}
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/models/ts/chat.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,IAAI,GAAzB,MAAqB,IAAK,SAAQ,4BAAW;CAoG5C,CAAA;AA5FC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;gCACQ;AAGV;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;kCACZ;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;oCACV;AAGd;IADC,6BAAM;;wCACW;AAGlB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;uCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;uCAAA;AAOf;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;qCACc;AAGhB;IADC,6BAAM;;sCACS;AAGhB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;yCACY;AAGnB;IADC,6BAAM;;6CACgB;AAGvB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAGpB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACJ;AAOpB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;KAEpB,CAAC;;sCACe;AAGjB;IADC,6BAAM;;qCACS;AAGhB;IADC,6BAAM;;yCACY;AAOnB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;kCACW;AAGb;IADC,6BAAM;;oCACO;AAGd;IADC,6BAAM;;qCACQ;AAGf;IADC,6BAAM;;kCACK;AAGZ;IADC,6BAAM;;wCACW;AAGlB;IADC,6BAAM;;qCACQ;AAlGI,IAAI;IADxB,4BAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GACnC,IAAI,CAoGxB;kBApGoB,IAAI"}

6
dist/src/models/ts/chatBot.js

@ -65,9 +65,11 @@ __decorate([
__metadata("design:type", Date)
], ChatBot.prototype, "updatedAt", void 0);
ChatBot = __decorate([
sequelize_typescript_1.Table({ tableName: 'sphinx_chat_bots', underscored: true, indexes: [
sequelize_typescript_1.Table({
tableName: 'sphinx_chat_bots', underscored: true, indexes: [
{ unique: true, fields: ['chat_id', 'bot_uuid'] }
] })
]
})
], ChatBot);
exports.default = ChatBot;
//# sourceMappingURL=chatBot.js.map

2
dist/src/models/ts/chatBot.js.map

@ -1 +1 @@
{"version":3,"file":"chatBot.js","sourceRoot":"","sources":["../../../../src/models/ts/chatBot.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;EAEE;AAKF,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAuClD,CAAA;AA/BC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;uCACO;AAGd;IADC,6BAAM;;wCACQ;AAGf;IADC,6BAAM;;wCACQ;AAGf;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;+CACe;AAGtB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;qCACK;AAGZ;IADC,6BAAM;;4CACY;AAGnB;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAtCI,OAAO;IAH3B,4BAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC;YAChE,EAAC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,SAAS,EAAC,UAAU,CAAC,EAAC;SAC7C,EAAC,CAAC;GACkB,OAAO,CAuC3B;kBAvCoB,OAAO"}
{"version":3,"file":"chatBot.js","sourceRoot":"","sources":["../../../../src/models/ts/chatBot.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;EAEE;AAOF,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAuClD,CAAA;AA/BC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;uCACO;AAGd;IADC,6BAAM;;wCACQ;AAGf;IADC,6BAAM;;wCACQ;AAGf;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;+CACe;AAGtB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;qCACK;AAGZ;IADC,6BAAM;;4CACY;AAGnB;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAtCI,OAAO;IAL3B,4BAAK,CAAC;QACL,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;YACzD,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;SAClD;KACF,CAAC;GACmB,OAAO,CAuC3B;kBAvCoB,OAAO"}

6
dist/src/models/ts/chatMember.js

@ -45,9 +45,11 @@ __decorate([
__metadata("design:type", String)
], ChatMember.prototype, "lastAlias", void 0);
ChatMember = __decorate([
sequelize_typescript_1.Table({ tableName: 'sphinx_chat_members', underscored: true, indexes: [
sequelize_typescript_1.Table({
tableName: 'sphinx_chat_members', underscored: true, indexes: [
{ unique: true, fields: ['chat_id', 'contact_id'] }
] })
]
})
], ChatMember);
exports.default = ChatMember;
//# sourceMappingURL=chatMember.js.map

2
dist/src/models/ts/chatMember.js.map

@ -1 +1 @@
{"version":3,"file":"chatMember.js","sourceRoot":"","sources":["../../../../src/models/ts/chatMember.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA4D;AAK5D,IAAqB,UAAU,GAA/B,MAAqB,UAAW,SAAQ,4BAAiB;CA0BxD,CAAA;AAvBC;IADC,6BAAM;;0CACO;AAGd;IADC,6BAAM;;6CACU;AAGjB;IADC,6BAAM;;wCACK;AAGZ;IADC,6BAAM;;8CACW;AAGlB;IADC,6BAAM;;iDACc;AAGrB;IADC,6BAAM;8BACK,IAAI;8CAAA;AAGhB;IADC,6BAAM;;0CACO;AAGd;IADC,6BAAM;;6CACU;AAxBE,UAAU;IAH9B,4BAAK,CAAC,EAAC,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC;YACnE,EAAC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,SAAS,EAAC,YAAY,CAAC,EAAC;SAC/C,EAAC,CAAC;GACkB,UAAU,CA0B9B;kBA1BoB,UAAU"}
{"version":3,"file":"chatMember.js","sourceRoot":"","sources":["../../../../src/models/ts/chatMember.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA4D;AAO5D,IAAqB,UAAU,GAA/B,MAAqB,UAAW,SAAQ,4BAAiB;CA0BxD,CAAA;AAvBC;IADC,6BAAM;;0CACO;AAGd;IADC,6BAAM;;6CACU;AAGjB;IADC,6BAAM;;wCACK;AAGZ;IADC,6BAAM;;8CACW;AAGlB;IADC,6BAAM;;iDACc;AAGrB;IADC,6BAAM;8BACK,IAAI;8CAAA;AAGhB;IADC,6BAAM;;0CACO;AAGd;IADC,6BAAM;;6CACU;AAxBE,UAAU;IAL9B,4BAAK,CAAC;QACL,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;YAC5D,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE;SACpD;KACF,CAAC;GACmB,UAAU,CA0B9B;kBA1BoB,UAAU"}

2
dist/src/models/ts/contact.js.map

@ -1 +1 @@
{"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../../src/models/ts/contact.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAoElD,CAAA;AA5DC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;sCACM;AAGb;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;6CACc;AAGrB;IADC,6BAAM;;wCACS;AAOhB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;wCACc;AAGhB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;2CACJ;AAGlB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;;0CACW;AAGlB;IADC,6BAAM;;kDACkB;AAGzB;IADC,6BAAM;8BACK,IAAI;2CAAA;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACP;AAlEE,OAAO;IAD3B,4BAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACpC,OAAO,CAoE3B;kBApEoB,OAAO"}
{"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../../src/models/ts/contact.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAoElD,CAAA;AA5DC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;sCACM;AAGb;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;6CACc;AAGrB;IADC,6BAAM;;wCACS;AAOhB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;wCACc;AAGhB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;2CACJ;AAGlB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;;0CACW;AAGlB;IADC,6BAAM;;kDACkB;AAGzB;IADC,6BAAM;8BACK,IAAI;2CAAA;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACP;AAlEE,OAAO;IAD3B,4BAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GACtC,OAAO,CAoE3B;kBApEoB,OAAO"}

2
dist/src/models/ts/invite.js.map

@ -1 +1 @@
{"version":3,"file":"invite.js","sourceRoot":"","sources":["../../../../src/models/ts/invite.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,MAAM,GAA3B,MAAqB,MAAO,SAAQ,4BAAa;CAkChD,CAAA;AA1BC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;kCACQ;AAGV;IADC,6BAAM;;4CACa;AAGpB;IADC,6BAAM;;uCACQ;AAGf;IADC,6BAAM;;8CACe;AAGtB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACP;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;sCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;qCACnB;AAGb;IADC,6BAAM;8BACI,IAAI;yCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;yCAAA;AAhCI,MAAM;IAD1B,4BAAK,CAAC,EAAC,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACnC,MAAM,CAkC1B;kBAlCoB,MAAM"}
{"version":3,"file":"invite.js","sourceRoot":"","sources":["../../../../src/models/ts/invite.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,MAAM,GAA3B,MAAqB,MAAO,SAAQ,4BAAa;CAkChD,CAAA;AA1BC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;kCACQ;AAGV;IADC,6BAAM;;4CACa;AAGpB;IADC,6BAAM;;uCACQ;AAGf;IADC,6BAAM;;8CACe;AAGtB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACP;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;sCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;qCACnB;AAGb;IADC,6BAAM;8BACI,IAAI;yCAAA;AAGf;IADC,6BAAM;8BACI,IAAI;yCAAA;AAhCI,MAAM;IAD1B,4BAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GACrC,MAAM,CAkC1B;kBAlCoB,MAAM"}

2
dist/src/models/ts/mediaKey.js.map

@ -1 +1 @@
{"version":3,"file":"mediaKey.js","sourceRoot":"","sources":["../../../../src/models/ts/mediaKey.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;;;;;EAME;AAGF,IAAqB,QAAQ,GAA7B,MAAqB,QAAS,SAAQ,4BAAe;CAqCpD,CAAA;AA7BC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;oCACQ;AAGV;IADC,6BAAM;;sCACK;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;wCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACR;AAGhB;IADC,6BAAM;;qCACI;AAGX;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;2CACP;AAGjB;IADC,6BAAM;8BACI,IAAI;2CAAA;AAGf;IADC,6BAAM;;2CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;wCACV;AAGd;IADC,6BAAM;;8CACa;AAnCD,QAAQ;IAD5B,4BAAK,CAAC,EAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACtC,QAAQ,CAqC5B;kBArCoB,QAAQ"}
{"version":3,"file":"mediaKey.js","sourceRoot":"","sources":["../../../../src/models/ts/mediaKey.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;;;;;EAME;AAGF,IAAqB,QAAQ,GAA7B,MAAqB,QAAS,SAAQ,4BAAe;CAqCpD,CAAA;AA7BC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;oCACQ;AAGV;IADC,6BAAM;;sCACK;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;wCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACR;AAGhB;IADC,6BAAM;;qCACI;AAGX;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;2CACP;AAGjB;IADC,6BAAM;8BACI,IAAI;2CAAA;AAGf;IADC,6BAAM;;2CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;wCACV;AAGd;IADC,6BAAM;;8CACa;AAnCD,QAAQ;IAD5B,4BAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GACxC,QAAQ,CAqC5B;kBArCoB,QAAQ"}

2
dist/src/models/ts/message.js.map

@ -1 +1 @@
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../src/models/ts/message.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAiGlD,CAAA;AAzFC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;qCACK;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACZ;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;uCACX;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;2CACP;AAGlB;IADC,6BAAM;;4CACY;AAGnB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;+CACA;AAGtB;IADC,6BAAM;8BACD,IAAI;qCAAA;AAGV;IADC,6BAAM;8BACS,IAAI;+CAAA;AAGpB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;+CACA;AAGtB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;qDACM;AAG5B;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;0CACL;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;+CACF;AAGtB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;2CACW;AAOlB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;qCACW;AAGb;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;;4CACY;AAGnB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;6CACa;AAGpB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;6CACL;AAhGD,OAAO;IAD3B,4BAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACpC,OAAO,CAiG3B;kBAjGoB,OAAO"}
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../src/models/ts/message.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,OAAO,GAA5B,MAAqB,OAAQ,SAAQ,4BAAc;CAiGlD,CAAA;AAzFC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;mCACQ;AAGV;IADC,6BAAM;;qCACK;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACZ;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;uCACX;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;2CACP;AAGlB;IADC,6BAAM;;4CACY;AAGnB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;+CACA;AAGtB;IADC,6BAAM;8BACD,IAAI;qCAAA;AAGV;IADC,6BAAM;8BACS,IAAI;+CAAA;AAGpB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;+CACA;AAGtB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;qDACM;AAG5B;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;0CACL;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;yCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;+CACF;AAGtB;IADC,6BAAM;;yCACS;AAGhB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;2CACW;AAOlB;IALC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;qCACW;AAGb;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;0CAAA;AAGf;IADC,6BAAM;;4CACY;AAGnB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM;;6CACa;AAGpB;IADC,6BAAM;;0CACU;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;6CACL;AAhGD,OAAO;IAD3B,4BAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GACtC,OAAO,CAiG3B;kBAjGoB,OAAO"}

2
dist/src/models/ts/subscription.js.map

@ -1 +1 @@
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../../src/models/ts/subscription.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,YAAY,GAAjC,MAAqB,YAAa,SAAQ,4BAAmB;CA6C5D,CAAA;AArCC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;wCACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;4CACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;+CACP;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;0CACV;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;4CACX;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;+CACR;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;+CACP;AAGjB;IADC,6BAAM;8BACE,IAAI;6CAAA;AAGb;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;2CACX;AAGb;IADC,6BAAM;;2CACO;AAGd;IADC,6BAAM;;4CACQ;AAGf;IADC,6BAAM;8BACI,IAAI;+CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;+CAAA;AA5CI,YAAY;IADhC,4BAAK,CAAC,EAAC,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACzC,YAAY,CA6ChC;kBA7CoB,YAAY"}
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../../src/models/ts/subscription.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,YAAY,GAAjC,MAAqB,YAAa,SAAQ,4BAAmB;CA6C5D,CAAA;AArCC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;wCACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;4CACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;+CACP;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,IAAI,CAAC;;0CACV;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;4CACX;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;+CACR;AAGjB;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;+CACP;AAGjB;IADC,6BAAM;8BACE,IAAI;6CAAA;AAGb;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;2CACX;AAGb;IADC,6BAAM;;2CACO;AAGd;IADC,6BAAM;;4CACQ;AAGf;IADC,6BAAM;8BACI,IAAI;+CAAA;AAGf;IADC,6BAAM;8BACI,IAAI;+CAAA;AA5CI,YAAY;IADhC,4BAAK,CAAC,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GAC3C,YAAY,CA6ChC;kBA7CoB,YAAY"}

2
dist/src/models/ts/timer.js.map

@ -1 +1 @@
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../../src/models/ts/timer.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,KAAK,GAA1B,MAAqB,KAAM,SAAQ,4BAAY;CAyB9C,CAAA;AAjBC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;iCACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;oCACX;AAGb;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;qCACX;AAvBK,KAAK;IADzB,4BAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GAClC,KAAK,CAyBzB;kBAzBoB,KAAK"}
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../../src/models/ts/timer.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAGtE,IAAqB,KAAK,GAA1B,MAAqB,KAAM,SAAQ,4BAAY;CAyB9C,CAAA;AAjBC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;iCACQ;AAGV;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;oCACX;AAGb;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;qCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;uCACR;AAGhB;IADC,6BAAM,CAAC,+BAAQ,CAAC,OAAO,CAAC;;qCACX;AAvBK,KAAK;IADzB,4BAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;GACpC,KAAK,CAyBzB;kBAzBoB,KAAK"}

2
dist/src/network/index.js.map

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/index.ts"],"names":[],"mappings":";;AAAA,iCAAqD;AAYjD,sBAZI,kBAAW,CAYJ;AAAC,sBAZI,kBAAW,CAYJ;AAAC,iBAZI,aAAM,CAYJ;AAXlC,uCAGkB;AASd,gCAXA,+BAAqB,CAWA;AACrB,kCAZsB,iCAAuB,CAYtB;AACvB,8BAb8C,6BAAmB,CAa9C;AACnB,wBAbA,uBAAa,CAaA;AAAC,yBAbA,wBAAc,CAaA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/index.ts"],"names":[],"mappings":";;AAAA,iCAAyD;AAYrD,sBAZK,kBAAW,CAYL;AAAE,sBAZK,kBAAW,CAYL;AAAE,iBAZK,aAAM,CAYL;AAXpC,uCAGkB;AASd,gCAXA,+BAAqB,CAWA;AACrB,kCAZuB,iCAAuB,CAYvB;AACvB,8BAbgD,6BAAmB,CAahD;AACnB,wBAbA,uBAAa,CAaA;AAAE,yBAbA,wBAAc,CAaA"}

2
dist/src/network/intercept.js.map

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

6
dist/src/network/modify.js

@ -126,9 +126,11 @@ function sendFinalMemeIfFirstPurchaser(payload, chat, sender) {
return; // no need, its already been sent
// const host = mt.split('.')[0]
const terms = ldat_1.parseLDAT(mt);
const ogPurchaser = yield models_1.models.Contact.findOne({ where: {
const ogPurchaser = yield models_1.models.Contact.findOne({
where: {
id: purchaserID
} });
}
});
if (!ogPurchaser)
return;
const amt = (terms.meta && terms.meta.amt) || 0;

2
dist/src/network/modify.js.map

File diff suppressed because one or more lines are too long

18
dist/src/network/receive.js

@ -133,10 +133,12 @@ function onReceive(payload) {
if (payload.type === msgtypes.delete) {
doAction = false;
if (payload.message.uuid) {
const ogMsg = yield models_1.models.Message.findOne({ where: {
const ogMsg = yield models_1.models.Message.findOne({
where: {
uuid: payload.message.uuid,
sender: senderContactId,
} });
}
});
if (ogMsg)
doAction = true;
}
@ -145,9 +147,11 @@ function onReceive(payload) {
let realSatsContactId = null;
let amtToForward = 0;
if (payload.type === msgtypes.boost && payload.message.replyUuid) {
const ogMsg = yield models_1.models.Message.findOne({ where: {
const ogMsg = yield models_1.models.Message.findOne({
where: {
uuid: payload.message.replyUuid,
} });
}
});
if (ogMsg && ogMsg.sender) { // even include "me"
const theAmtToForward = payload.message.amount - (chat.pricePerMessage || 0) - (chat.escrowAmount || 0);
if (theAmtToForward > 0) {
@ -170,10 +174,12 @@ function onReceive(payload) {
const mt = payload.message.mediaToken;
const host = mt && mt.split('.').length && mt.split('.')[0];
const muid = mt && mt.split('.').length && mt.split('.')[1];
const myAttachmentMessage = yield models_1.models.Message.findOne({ where: {
const myAttachmentMessage = yield models_1.models.Message.findOne({
where: {
mediaToken: { [sequelize_1.Op.like]: `${host}.${muid}%` },
type: msgtypes.attachment, sender: 1,
} });
}
});
if (!myAttachmentMessage) { // someone else's attachment
const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } });
modify_1.purchaseFromOriginalSender(payload, chat, senderContact);

2
dist/src/network/receive.js.map

File diff suppressed because one or more lines are too long

2
dist/src/network/send.js.map

File diff suppressed because one or more lines are too long

2
dist/src/utils/case.js.map

@ -1 +1 @@
{"version":3,"file":"case.js","sourceRoot":"","sources":["../../../src/utils/case.ts"],"names":[],"mappings":";;AAAA,0CAA0C;AAE1C,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAC,WAAW,EAAC,WAAW,EAAC,YAAY,EAAC,YAAY,CAAC,CAAA;AAC3E,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAC,SAAS,EAAC,SAAS,CAAC,CAAA;AAElD,SAAS,OAAO,CAAC,GAAG;IAChB,MAAM,GAAG,GAAuB,EAAE,CAAA;IAClC,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC1C,IAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,EAAC;YAC/B,MAAM,CAAC,GAAQ,KAAK,CAAA;YACpB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,IAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAAE,CAAC,GAAC,IAAI,IAAI,EAAE,CAAA;YACnC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;SACnD;aAAM,IAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC9B,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAE,KAAK,KAAG,GAAG,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA;SAC7D;aAAM;YACH,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;SACzC;KACJ;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAUO,0BAAO;AARf,SAAS,OAAO,CAAC,GAAG;IAChB,MAAM,GAAG,GAAuB,EAAE,CAAA;IAClC,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC1C,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;KACzC;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAEgB,0BAAO"}
{"version":3,"file":"case.js","sourceRoot":"","sources":["../../../src/utils/case.ts"],"names":[],"mappings":";;AAAA,0CAA0C;AAE1C,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;AAC/E,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAEpD,SAAS,OAAO,CAAC,GAAG;IAChB,MAAM,GAAG,GAAyB,EAAE,CAAA;IACpC,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE;YACjC,MAAM,CAAC,GAAQ,KAAK,CAAA;YACpB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAAE,CAAC,GAAG,IAAI,IAAI,EAAE,CAAA;YACtC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;SACnD;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC/B,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SACrE;aAAM;YACH,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;SACzC;KACJ;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAUQ,0BAAO;AARhB,SAAS,OAAO,CAAC,GAAG;IAChB,MAAM,GAAG,GAAyB,EAAE,CAAA;IACpC,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC1C,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;KACzC;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAEiB,0BAAO"}

2
dist/src/utils/cron.js.map

@ -1 +1 @@
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/utils/cron.ts"],"names":[],"mappings":";;AAAA,sCAAqC;AAErC,SAAS,KAAK;IACV,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3B,OAAO,GAAG,MAAM,IAAI,IAAI,QAAQ,CAAA;AACpC,CAAC;AAED,SAAS,MAAM;IACX,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;IAC9B,OAAO,GAAG,MAAM,IAAI,IAAI,QAAQ,SAAS,EAAE,CAAA;AAC/C,CAAC;AAED,SAAS,OAAO;IACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;IAChC,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,UAAU,MAAM,CAAA;AAChD,CAAC;AAED,SAAS,KAAK,CAAC,CAAC;IACZ,IAAI,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAA;IAEvC,IAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACrB,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAC,QAAQ,EAAC,CAAA;KAChD;IACD,IAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACnB,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAC,QAAQ,GAAC,EAAE,EAAC,CAAA;KACrD;IACD,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAC,QAAQ,GAAC,CAAC,EAAC,CAAA;AACpD,CAAC;AASG,sBAAK;AAPT,SAAS,IAAI,CAAC,QAAQ;IAClB,IAAG,QAAQ,KAAG,OAAO;QAAE,OAAO,KAAK,EAAE,CAAA;IACrC,IAAG,QAAQ,KAAG,QAAQ;QAAE,OAAO,MAAM,EAAE,CAAA;IACvC,IAAG,QAAQ,KAAG,SAAS;QAAE,OAAO,OAAO,EAAE,CAAA;AAC7C,CAAC;AAIG,oBAAI"}
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/utils/cron.ts"],"names":[],"mappings":";;AAAA,sCAAqC;AAErC,SAAS,KAAK;IACV,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3B,OAAO,GAAG,MAAM,IAAI,IAAI,QAAQ,CAAA;AACpC,CAAC;AAED,SAAS,MAAM;IACX,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;IAC9B,OAAO,GAAG,MAAM,IAAI,IAAI,QAAQ,SAAS,EAAE,CAAA;AAC/C,CAAC;AAED,SAAS,OAAO;IACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;IAChC,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,UAAU,MAAM,CAAA;AAChD,CAAC;AAED,SAAS,KAAK,CAAC,CAAC;IACZ,IAAI,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAA;IAEvC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACtB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAA;KACnD;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACpB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,CAAA;KAC1D;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAA;AACzD,CAAC;AASG,sBAAK;AAPT,SAAS,IAAI,CAAC,QAAQ;IAClB,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,EAAE,CAAA;IACxC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,EAAE,CAAA;IAC1C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,EAAE,CAAA;AAChD,CAAC;AAIG,oBAAI"}

2
dist/src/utils/gitinfo.js.map

@ -1 +1 @@
{"version":3,"file":"gitinfo.js","sourceRoot":"","sources":["../../../src/utils/gitinfo.ts"],"names":[],"mappings":";;AAAA,iDAAoC;AAEpC,IAAI,UAAU,CAAA;AACd,SAAS,eAAe;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAC,EAAE;QACpC,IAAG,UAAU,EAAE;YACb,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;SAC3B;QACD,IAAG;YACD,oBAAI,CAAC,+BAA+B,EAAE,EAAC,OAAO,EAAC,GAAG,EAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC7E,IAAG,MAAM,EAAC;oBACR,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;oBAC1B,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;iBAC3B;qBAAM;oBACL,OAAO,CAAC,EAAE,CAAC,CAAA;iBACZ;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,CAAC,EAAE,CAAC,CAAA;SACZ;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAyBC,0CAAe;AAvBjB,IAAI,GAAG,CAAA;AACP,SAAS,QAAQ;IACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAC,EAAE;QACpC,IAAG,GAAG,EAAE;YACN,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;SACpB;QACD,IAAG;YACD,oBAAI,CAAC,gCAAgC,EAAE,EAAC,OAAO,EAAC,GAAG,EAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC9E,IAAG,MAAM,EAAC;oBACR,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;oBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;iBACpB;qBAAM;oBACL,OAAO,CAAC,EAAE,CAAC,CAAA;iBACZ;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,CAAC,EAAE,CAAC,CAAA;SACZ;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAGkB,4BAAQ"}
{"version":3,"file":"gitinfo.js","sourceRoot":"","sources":["../../../src/utils/gitinfo.ts"],"names":[],"mappings":";;AAAA,iDAAoC;AAEpC,IAAI,UAAU,CAAA;AACd,SAAS,eAAe;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,UAAU,EAAE;YACd,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;SAC3B;QACD,IAAI;YACF,oBAAI,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAChF,IAAI,MAAM,EAAE;oBACV,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;oBAC1B,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;iBAC3B;qBAAM;oBACL,OAAO,CAAC,EAAE,CAAC,CAAA;iBACZ;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,CAAC,EAAE,CAAC,CAAA;SACZ;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAyBC,0CAAe;AAvBjB,IAAI,GAAG,CAAA;AACP,SAAS,QAAQ;IACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,GAAG,EAAE;YACP,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;SACpB;QACD,IAAI;YACF,oBAAI,CAAC,gCAAgC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACjF,IAAI,MAAM,EAAE;oBACV,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;oBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;iBACpB;qBAAM;oBACL,OAAO,CAAC,EAAE,CAAC,CAAA;iBACZ;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,CAAC,EAAE,CAAC,CAAA;SACZ;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAGkB,4BAAQ"}

2
dist/src/utils/json.js.map

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

2
dist/src/utils/ldat.js.map

File diff suppressed because one or more lines are too long

2
dist/src/utils/lightning.js.map

File diff suppressed because one or more lines are too long

2
dist/src/utils/logger.js.map

@ -1 +1 @@
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";;AAAA,kDAAiD;AACjD,mCAAkC;AAClC,iCAAgC;AAEhC,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC;AAEzE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE;QACV,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;KACjC;IACD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA,EAAE;QAC1B,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAA;IAC5D,CAAC,CAAC,CACH;IACD,IAAI,EAAE,KAAK;IACX,0KAA0K;IAC1K,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,UAAU,GAAG,EAAE,GAAG;QAC7B,IAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA,CAAC,WAAW;QACxD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,8EAA8E;CACjF,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA"}
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";;AAAA,kDAAiD;AACjD,mCAAkC;AAClC,iCAAgC;AAEhC,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC;AAEzE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE;QACV,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;KACjC;IACD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAA;IAC1D,CAAC,CAAC,CACH;IACD,IAAI,EAAE,KAAK;IACX,0KAA0K;IAC1K,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,UAAU,GAAG,EAAE,GAAG;QAC7B,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA,CAAC,WAAW;QACzD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,8EAA8E;CACjF,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA"}

2
dist/src/utils/macaroon.js.map

@ -1 +1 @@
{"version":3,"file":"macaroon.js","sourceRoot":"","sources":["../../../src/utils/macaroon.ts"],"names":[],"mappings":";;AAAA,yBAAwB;AACxB,6BAA4B;AAE5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE1E,IAAI,gBAAgB,GAAW,EAAE,CAAC,CAAC,cAAc;AAEjD,SAAgB,WAAW;IACzB,IAAG,MAAM,CAAC,MAAM,EAAE;QAChB,OAAO,gBAAgB,CAAA;KACxB;SAAM;QACL,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACnD,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC1B;AACH,CAAC;AAPD,kCAOC;AAED,SAAgB,mBAAmB,CAAC,GAAU;IAC5C,gBAAgB,GAAG,GAAG,CAAA;AACxB,CAAC;AAFD,kDAEC"}
{"version":3,"file":"macaroon.js","sourceRoot":"","sources":["../../../src/utils/macaroon.ts"],"names":[],"mappings":";;AAAA,yBAAwB;AACxB,6BAA4B;AAE5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE1E,IAAI,gBAAgB,GAAW,EAAE,CAAC,CAAC,cAAc;AAEjD,SAAgB,WAAW;IACzB,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,OAAO,gBAAgB,CAAA;KACxB;SAAM;QACL,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACnD,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC1B;AACH,CAAC;AAPD,kCAOC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,gBAAgB,GAAG,GAAG,CAAA;AACxB,CAAC;AAFD,kDAEC"}

2
dist/src/utils/meme.js.map

@ -1 +1 @@
{"version":3,"file":"meme.js","sourceRoot":"","sources":["../../../src/utils/meme.ts"],"names":[],"mappings":";;AACA,IAAI,UAAU,GAAG,EAAE,CAAA;AAMX,gCAAU;AAJlB,SAAS,aAAa,CAAC,EAAE;IACrB,qBAAA,UAAU,GAAG,EAAE,CAAA;AACnB,CAAC;AAEmB,sCAAa"}
{"version":3,"file":"meme.js","sourceRoot":"","sources":["../../../src/utils/meme.ts"],"names":[],"mappings":";;AACA,IAAI,UAAU,GAAG,EAAE,CAAA;AAMV,gCAAU;AAJnB,SAAS,aAAa,CAAC,EAAE;IACrB,qBAAA,UAAU,GAAG,EAAE,CAAA;AACnB,CAAC;AAEoB,sCAAa"}

2
dist/src/utils/msg.js.map

File diff suppressed because one or more lines are too long

2
dist/src/utils/nodeinfo.js.map

@ -1 +1 @@
{"version":3,"file":"nodeinfo.js","sourceRoot":"","sources":["../../../src/utils/nodeinfo.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"nodeinfo.js","sourceRoot":"","sources":["../../../src/utils/nodeinfo.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,kDAA2D;AAC3D,sCAAqC;AACrC,8CAA4D;AAC5D,sCAAkC;AAElC,SAAS,QAAQ;IACf,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;QAE3C,IAAI,KAAK,CAAA;QACT,IAAI;YACF,KAAK,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAM,CAAC,mCAAmC;SAC3C;QACD,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,IAAI,IAAI,EAAE,CAAA;SACxB;QAED,IAAI;YACF,MAAM,mBAAO,EAAE,CAAA;SAChB;QAAC,OAAO,CAAC,EAAE,EAAE,SAAS;YACrB,MAAM,IAAI,GAAG;gBACX,MAAM,EAAE,KAAK,CAAC,SAAS;gBACvB,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,UAAU;aACxB,CAAA;YACD,OAAO,CAAC,IAAI,CAAC,CAAA;YACb,OAAM;SACP;QAED,IAAI,SAAS,GAAG,EAAE,CAAA;QAClB,IAAI;YACF,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,CAAA;SAChC;QAAC,OAAO,CAAC,EAAE,GAAG;QAEf,MAAM,UAAU,GAAG,MAAM,yBAAe,EAAE,CAAA;QAE1C,MAAM,GAAG,GAAG,MAAM,kBAAQ,EAAE,CAAA;QAE5B,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAA;QAE7B,MAAM,cAAc,GAAG,MAAM,aAAa,EAAE,CAAA;QAE5C,MAAM,SAAS,GAAG,yBAAa,EAAE,CAAA;QACjC,IAAI;YACF,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE;gBACnD,IAAI,GAAG;oBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACzB,2DAA2D;gBAC3D,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;oBAC9C,IAAI,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;oBACzB,IAAI,CAAC,WAAW;wBAAE,OAAM;oBACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAA;oBAEhC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;oBACxD,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;oBAC1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAA;oBACtD,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAA;oBACxD,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBAEtF,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE;wBACrD,IAAI,GAAG;4BAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBACzB,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;4BAClC,IAAI,GAAG;gCAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;4BACzB,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;gCAChB,MAAM,IAAI,GAAG;oCACX,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;oCAClC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;oCACvB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;oCACnC,YAAY,EAAE,UAAU;oCACxB,SAAS,EAAE,SAAS;oCACpB,MAAM,EAAE,KAAK,CAAC,SAAS;oCACvB,eAAe,EAAE,QAAQ,CAAC,MAAM;oCAChC,sBAAsB,EAAE,IAAI,CAAC,mBAAmB;oCAChD,uBAAuB,EAAE,IAAI,CAAC,oBAAoB;oCAClD,YAAY,EAAE,IAAI,CAAC,SAAS;oCAC5B,qBAAqB,EAAE,mBAAmB;oCAC1C,sBAAsB,EAAE,oBAAoB;oCAC5C,mBAAmB,EAAE,iBAAiB;oCACtC,WAAW,EAAE,IAAI,CAAC,OAAO;oCACzB,aAAa,EAAE,GAAG;oCAClB,eAAe,EAAE,EAAE;oCACnB,gBAAgB,EAAE,EAAE;oCACpB,iBAAiB,EAAE,QAAQ;oCAC3B,oBAAoB,EAAE,eAAe;oCACrC,eAAe,EAAE,IAAI,CAAC,eAAe;oCACrC,eAAe,EAAE,IAAI,CAAC,eAAe;oCACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oCACjD,OAAO,EAAE,IAAI,CAAC,OAAO;oCACrB,KAAK;oCACL,cAAc;oCACd,WAAW,EAAE,UAAU;oCACvB,aAAa,EAAE,KAAK;iCACrB,CAAA;gCACD,OAAO,CAAC,IAAI,CAAC,CAAA;6BACd;wBACH,CAAC,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAC;SACJ;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;SACrB;IACH,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC;AAEQ,4BAAQ;AAEjB,SAAsB,OAAO;;QAC3B,mCAAmC;QACnC,MAAM,UAAU,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAC9F,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACzC,MAAM,WAAW,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAA;QACzB,MAAM,cAAc,GAAG,WAAW,KAAK,CAAC,CAAA;QACxC,IAAI,UAAU,IAAI,MAAM,IAAI,cAAc;YAAE,OAAO,IAAI,CAAA;QACvD,OAAO,KAAK,CAAA;IACd,CAAC;CAAA;AATD,0BASC;AAED,SAAe,aAAa;;QAC1B,MAAM,KAAK,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACzC,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;SAC/B,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,SAAS,CAAA;SACtB;aAAM;YACL,OAAO,EAAE,CAAA;SACV;IACH,CAAC;CAAA"}

2
dist/src/utils/res.js.map

@ -1 +1 @@
{"version":3,"file":"res.js","sourceRoot":"","sources":["../../../src/utils/res.ts"],"names":[],"mappings":";;AAAA,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI;IACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAoBO,0BAAO;AAlBf,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC;IACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,IAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAWgB,0BAAO;AATxB,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,IAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAEyB,gCAAU"}
{"version":3,"file":"res.js","sourceRoot":"","sources":["../../../src/utils/res.ts"],"names":[],"mappings":";;AAAA,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI;IACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAoBQ,0BAAO;AAlBhB,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC;IACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC7B,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAWiB,0BAAO;AATzB,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC7B,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAE0B,gCAAU"}

2
dist/src/utils/setup.js.map

File diff suppressed because one or more lines are too long

2
dist/src/utils/signer.js.map

@ -1 +1 @@
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/utils/signer.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,6BAA4B;AAC5B,2CAA2C;AAC3C,6BAA4B;AAC5B,yCAAwC;AAExC,kDAAkD;AAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAEzE,IAAI,YAAY,GAAS,IAAI,CAAC;AAEjB,QAAA,UAAU,GAAG,GAAG,EAAE;IAC7B,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAA;KACpB;SAAM;QACL,IAAG;YACD,IAAI,WAAW,GAAG,2BAAe,EAAE,CAAA;YACnC,IAAI,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACtD,IAAI,MAAM,GAAQ,eAAe,CAAC,OAAO,CAAA;YACzC,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACtF,OAAO,YAAY,CAAA;SACpB;QAAC,OAAM,CAAC,EAAE;YACT,MAAM,CAAC,CAAA;SACR;KACF;AACH,CAAC,CAAA;AAEY,QAAA,WAAW,GAAG,CAAC,GAAG,EAAE,EAAE;IACjC,OAAO,IAAI,OAAO,CAAC,CAAM,OAAO,EAAE,MAAM,EAAC,EAAE;QACzC,IAAI,MAAM,GAAG,MAAM,kBAAU,EAAE,CAAA;QAC/B,IAAI;YACF,MAAM,OAAO,GAAG;gBACd,GAAG,EAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC3B,OAAO,EAAC,EAAC,UAAU,EAAC,CAAC,EAAE,SAAS,EAAC,CAAC,EAAC;aACpC,CAAA;YACD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAS,GAAG,EAAC,GAAG;gBAC1C,IAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;oBACxB,MAAM,CAAC,GAAG,CAAC,CAAA;iBACZ;qBAAM;oBACL,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;iBACxB;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAM,CAAC,EAAE;YACT,MAAM,CAAC,CAAC,CAAC,CAAA;SACV;IACH,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAA;AAEY,QAAA,UAAU,GAAG,CAAC,GAAG,EAAE,EAAE;IAChC,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAC,EAAE;QAC1C,IAAI,MAAM,GAAG,MAAM,kBAAU,EAAE,CAAA;QAC/B,IAAI;YACF,MAAM,OAAO,GAAG,EAAC,GAAG,EAAC,CAAA;YACrB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAS,GAAG,EAAC,GAAG;gBAC1C,IAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;oBACxB,MAAM,CAAC,GAAG,CAAC,CAAA;iBACZ;qBAAM;oBACL,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;iBACxB;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAM,CAAC,EAAE;YACT,MAAM,CAAC,CAAC,CAAC,CAAA;SACV;IACH,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,SAAS,aAAa,CAAC,GAAG,EAAC,GAAG,EAAC,MAAM;IACnC,OAAO,IAAI,OAAO,CAAC,CAAM,OAAO,EAAE,MAAM,EAAC,EAAE;QACzC,IAAI,MAAM,GAAG,MAAM,kBAAU,EAAE,CAAA;QAC/B,IAAG,GAAG,CAAC,MAAM,KAAG,CAAC,EAAE;YACjB,OAAO,MAAM,CAAC,aAAa,CAAC,CAAA;SAC7B;QACD,IAAG,GAAG,CAAC,MAAM,KAAG,EAAE,EAAE;YAClB,OAAO,MAAM,CAAC,aAAa,CAAC,CAAA;SAC7B;QACD,IAAG,MAAM,CAAC,MAAM,KAAG,EAAE,EAAE;YACrB,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAA;SAChC;QACD,IAAI;YACF,MAAM,OAAO,GAAG;gBACd,GAAG,EAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC3B,SAAS,EAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;gBACpC,MAAM,EAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;aAClC,CAAA;YACD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,UAAS,GAAG,EAAC,GAAG;gBAC5C,IAAG,GAAG,EAAE;oBACN,MAAM,CAAC,GAAG,CAAC,CAAA;iBACZ;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,CAAA;iBACb;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAM,CAAC,EAAE;YACT,MAAM,CAAC,CAAC,CAAC,CAAA;SACV;IACH,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAAsB,SAAS,CAAC,KAAK;;QACnC,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,mBAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YACnD,OAAO,GAAG,CAAA;SACX;QAAC,OAAM,CAAC,EAAE;YACT,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CAAA;AAPD,8BAOC;AAED,SAAsB,WAAW,CAAC,KAAY,EAAC,GAAU,EAAC,MAAa;;QACrE,IAAI;YACF,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,EAAC,GAAG,EAAC,MAAM,CAAC,CAAA;YAC9D,OAAO,CAAC,CAAA;SACT;QAAC,OAAM,CAAC,EAAE;YACT,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CAAA;AAPD,kCAOC;AAED,SAAS,aAAa,CAAC,GAAG;IACzB,IAAI,IAAI,GAAc,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAG,EAAE;QAC5C,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACd;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC"}
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/utils/signer.ts"],"names":[],"mappings":"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"}

2
dist/src/utils/socket.js.map

@ -1 +1 @@
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/utils/socket.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAgC;AAChC,iCAAgC;AAEhC,kCAAkC;AAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEtC,IAAI,EAAO,CAAA;AACX,gBAAgB;AAEhB,SAAgB,OAAO,CAAC,MAAM;IAC5B,+DAA+D;IAE/D,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;QACpB,sBAAsB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG;gBACd,8BAA8B,EAAE,sDAAsD;gBACtF,6BAA6B,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;gBACjD,kCAAkC,EAAE,IAAI;aACzC,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC5B,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;KACF,CAAC,CAAC;IACH,EAAE,CAAC,GAAG,CAAC,CAAO,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,OAAO,EAAE;YACX,OAAO,IAAI,EAAE,CAAC;SACf;QACD,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACjD,CAAC,CAAA,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,0BAyBC;AAED,SAAe,YAAY,CAAC,KAAY;;QACtC,IAAG,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACvB,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAC,CAAC,CAAA;QACtE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,WAAW,EAAE;YAC3D,OAAO,KAAK,CAAA,CAAC,SAAS;SACvB;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAEY,QAAA,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE;IAC3B,IAAG,EAAE;QAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAC,IAAI,CAAC,CAAA;IAEtC,YAAY;IACZ,8BAA8B;IAC9B,yBAAyB;IACzB,OAAO;IACP,IAAI;AACN,CAAC,CAAA;AAEY,QAAA,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE;IACjC,YAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC,CAAA"}
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/utils/socket.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAkC;AAClC,iCAAgC;AAEhC,kCAAkC;AAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEtC,IAAI,EAAO,CAAA;AACX,gBAAgB;AAEhB,SAAgB,OAAO,CAAC,MAAM;IAC5B,+DAA+D;IAE/D,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;QACpB,sBAAsB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG;gBACd,8BAA8B,EAAE,sDAAsD;gBACtF,6BAA6B,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;gBACjD,kCAAkC,EAAE,IAAI;aACzC,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC5B,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;KACF,CAAC,CAAC;IACH,EAAE,CAAC,GAAG,CAAC,CAAO,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,OAAO,EAAE;YACX,OAAO,IAAI,EAAE,CAAC;SACf;QACD,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACjD,CAAC,CAAA,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,0BAyBC;AAED,SAAe,YAAY,CAAC,KAAa;;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxB,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QACvE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,WAAW,EAAE;YAC3D,OAAO,KAAK,CAAA,CAAC,SAAS;SACvB;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAEY,QAAA,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE;IAC3B,IAAI,EAAE;QAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAExC,YAAY;IACZ,8BAA8B;IAC9B,yBAAyB;IACzB,OAAO;IACP,IAAI;AACN,CAAC,CAAA;AAEY,QAAA,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE;IACjC,YAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC,CAAA"}

2
dist/src/utils/timers.js.map

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

2
dist/src/utils/tribeBots.js.map

@ -1 +1 @@
{"version":3,"file":"tribeBots.js","sourceRoot":"","sources":["../../../src/utils/tribeBots.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAkC;AAClC,qCAAgC;AAChC,2CAA8B;AAE9B,SAAsB,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE;;QACpH,MAAM,IAAI,GAAG,gBAAO,EAAE,CAAA;QACtB,IAAI;YACF,MAAM,CAAC,GAAG,MAAM,oBAAK,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,EAAE;gBACjD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE;oBACvC,aAAa,EAAE,aAAa,IAAI,CAAC;oBACjC,QAAQ,EAAE,QAAQ,IAAI,KAAK;oBAC3B,OAAO,EAAE,OAAO,IAAI,KAAK;iBAC1B,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAA;YACF,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAA;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;YAC/C,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CAAA;AApBH,kCAoBG;AAEH,SAAsB,YAAY,CAAC,OAAO;;QACtC,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACxC,KAAK,EAAE;gBACL,MAAM,EAAE,OAAO;aAChB;SACF,CAAC,CAAA;QACF,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAA;YACxB,IAAI,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE;gBAChC,OAAO,cAAc,EAAE,CAAA;aACxB;YACD,IAAI,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE;gBAChC,OAAO,WAAW,EAAE,CAAA;aACrB;YACD,OAAgB;gBACd,MAAM,EAAE,GAAG,CAAC,SAAS;gBACrB,KAAK,EAAE,GAAG,CAAC,WAAW,IAAE,CAAC;gBACzB,QAAQ,EAAE,IAAI;aACf,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CAAA;AAtBH,oCAsBG;AAeD,SAAS,cAAc;IACrB,OAAgB;QACd,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC;KACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW;IAClB,OAAgB;QACd,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC;KACH,CAAA;AACH,CAAC"}
{"version":3,"file":"tribeBots.js","sourceRoot":"","sources":["../../../src/utils/tribeBots.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAkC;AAClC,qCAAkC;AAClC,2CAA8B;AAE9B,SAAsB,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE;;QACtH,MAAM,IAAI,GAAG,gBAAO,EAAE,CAAA;QACtB,IAAI;YACF,MAAM,CAAC,GAAG,MAAM,oBAAK,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,EAAE;gBACjD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE;oBACvC,aAAa,EAAE,aAAa,IAAI,CAAC;oBACjC,QAAQ,EAAE,QAAQ,IAAI,KAAK;oBAC3B,OAAO,EAAE,OAAO,IAAI,KAAK;iBAC1B,CAAC;gBACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAA;YACF,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;SAClC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;YAC/C,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CAAA;AApBD,kCAoBC;AAED,SAAsB,YAAY,CAAC,OAAO;;QACxC,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACxC,KAAK,EAAE;gBACL,MAAM,EAAE,OAAO;aAChB;SACF,CAAC,CAAA;QACF,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAA;YACxB,IAAI,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE;gBAChC,OAAO,cAAc,EAAE,CAAA;aACxB;YACD,IAAI,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE;gBAChC,OAAO,WAAW,EAAE,CAAA;aACrB;YACD,OAAgB;gBACd,MAAM,EAAE,GAAG,CAAC,SAAS;gBACrB,KAAK,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC;gBAC3B,QAAQ,EAAE,IAAI;aACf,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CAAA;AAtBD,oCAsBC;AAeD,SAAS,cAAc;IACrB,OAAgB;QACd,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC;KACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW;IAClB,OAAgB;QACd,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC;KACH,CAAA;AACH,CAAC"}

2
dist/src/utils/tribes.js.map

File diff suppressed because one or more lines are too long

2
dist/src/utils/unlock.js.map

@ -1 +1 @@
{"version":3,"file":"unlock.js","sourceRoot":"","sources":["../../../src/utils/unlock.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6BAA4B;AAC5B,2CAA0C;AAC1C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAErC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE1E;;EAEE;AAEF,SAAsB,cAAc;;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAA;QAC7B,IAAI,CAAC,CAAC;YAAE,OAAM;QAEd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,CAAC,CAAC,CAAA;QAEpB,IAAI,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,IAAG,CAAC,GAAG;YAAE,OAAM;QAEf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,OAAO,GAAG,CAAC,CAAA;QAEjC,IAAI;YACA,MAAM,wBAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;SAClC;QAAC,OAAM,CAAC,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAA;SACnC;IACL,CAAC;CAAA;AAhBD,wCAgBC;AAED,SAAe,YAAY,CAAC,UAAU;;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA"}
{"version":3,"file":"unlock.js","sourceRoot":"","sources":["../../../src/utils/unlock.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6BAA4B;AAC5B,2CAA0C;AAC1C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAErC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE1E;;EAEE;AAEF,SAAsB,cAAc;;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAA;QAC7B,IAAI,CAAC,CAAC;YAAE,OAAM;QAEd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAErB,IAAI,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG;YAAE,OAAM;QAEhB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAAA;QAEnC,IAAI;YACA,MAAM,wBAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;SAClC;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;SACpC;IACL,CAAC;CAAA;AAhBD,wCAgBC;AAED,SAAe,YAAY,CAAC,UAAU;;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA"}

22
src/auth.ts

@ -3,7 +3,7 @@ import { models } from './models'
import * as cryptoJS from 'crypto-js'
import * as path from 'path'
import { success, failure } from './utils/res'
import {setInMemoryMacaroon} from './utils/macaroon'
import { setInMemoryMacaroon } from './utils/macaroon'
const fs = require('fs')
const env = process.env.NODE_ENV || 'development';
@ -16,43 +16,43 @@ const config = require(path.join(__dirname, '../config/app.json'))[env];
export async function unlocker(req, res): Promise<boolean> {
const { password } = req.body
if(!password) {
if (!password) {
failure(res, 'no password')
return false
}
const encMacPath = config.encrypted_macaroon_path
if(!encMacPath) {
if (!encMacPath) {
failure(res, 'no macaroon path')
return false
}
let hexMac:string
let hexMac: string
try {
var encMac = fs.readFileSync(config.encrypted_macaroon_path, "utf8");
if(!encMac) {
if (!encMac) {
failure(res, 'no macaroon')
return false
}
console.log("PWD",password,typeof password)
console.log("ENCMAC",encMac,typeof encMac)
console.log("PWD", password, typeof password)
console.log("ENCMAC", encMac, typeof encMac)
const decMac = decryptMacaroon(password, encMac)
if(!decMac) {
if (!decMac) {
failure(res, 'failed to decrypt macaroon')
return false
}
hexMac = base64ToHex(decMac)
} catch(e) {
} catch (e) {
failure(res, e)
return false
}
if(hexMac) {
if (hexMac) {
setInMemoryMacaroon(hexMac)
success(res, 'success!')
return true
@ -119,7 +119,7 @@ function decryptMacaroon(password: string, macaroon: string) {
}
}
export function base64ToHex (str) {
export function base64ToHex(str) {
const raw = atob(str)
let result = ''
for (let i = 0; i < raw.length; i++) {

30
src/builtin/index.ts

@ -3,29 +3,31 @@ import * as SphinxBot from 'sphinx-bot'
import * as MotherBot from './mother'
import * as WelcomeBot from './welcome'
import * as LoopBot from './loop'
import {Msg} from '../network/interfaces'
import { Msg } from '../network/interfaces'
import { models } from '../models'
import {buildBotPayload} from '../controllers/bots'
import { buildBotPayload } from '../controllers/bots'
import constants from '../constants'
async function init(){
async function init() {
MotherBot.init()
const builtInBots = await models.ChatBot.findAll({where:{
botType: constants.bot_types.builtin
}})
if(!(builtInBots && builtInBots.length)) return
const builtInBots = await models.ChatBot.findAll({
where: {
botType: constants.bot_types.builtin
}
})
if (!(builtInBots && builtInBots.length)) return
builtInBots.forEach(b=>{
if(b.botPrefix==='/welcome') WelcomeBot.init()
if(b.botPrefix==='/loopout') LoopBot.init()
builtInBots.forEach(b => {
if (b.botPrefix === '/welcome') WelcomeBot.init()
if (b.botPrefix === '/loopout') LoopBot.init()
})
}
function builtinBotEmit(msg:Msg){
setTimeout(()=>{
function builtinBotEmit(msg: Msg) {
setTimeout(() => {
SphinxBot._emit('message', buildBotPayload(msg))
},1200)
}, 1200)
}
export {init,builtinBotEmit,buildBotPayload}
export { init, builtinBotEmit, buildBotPayload }

22
src/builtin/loop.ts

@ -124,34 +124,34 @@ export function init() {
`--fast`,
`--addr=${addy}`
]
console.log("=> SPAWN",cmd,args)
console.log("=> SPAWN", cmd, args)
let childProcess = spawn(cmd, args)
childProcess.stdout.on('data', function (data) {
const stdout = data.toString()
console.log("LOOPBOT stdout:",stdout)
if(stdout){
console.log('=> LOOPBOT stdout',stdout)
if(stdout.includes('CONTINUE SWAP?')) {
childProcess.stdin.write('y\n')
console.log("LOOPBOT stdout:", stdout)
if (stdout) {
console.log('=> LOOPBOT stdout', stdout)
if (stdout.includes('CONTINUE SWAP?')) {
childProcess.stdin.write('y\n')
}
if(stdout.startsWith('Swap initiated')) {
if (stdout.startsWith('Swap initiated')) {
const embed = new Sphinx.MessageEmbed()
.setAuthor('LoopBot')
.setTitle('Payment was sent!')
// .setDescription('Success!')
// .setDescription('Success!')
message.channel.send({ embed })
return
}
}
})
childProcess.stderr.on('data', function (data) {
console.log("STDERR:",data.toString())
console.log("STDERR:", data.toString())
});
childProcess.on('error', (error) => {
console.log("error",error.toString());
console.log("error", error.toString());
});
childProcess.on('close', (code) => {
console.log("CHILD PROCESS closed",code)
console.log("CHILD PROCESS closed", code)
});
} catch (e) {
console.log('LoopBot error', e)

2
src/builtin/mother.ts

@ -43,7 +43,7 @@ export function init() {
const cmd = arr[1]
const isAdmin = message.member.roles.find(role => role.name === 'Admin')
if(!isAdmin) return
if (!isAdmin) return
switch (cmd) {

10
src/builtin/welcome.ts

@ -18,13 +18,13 @@ export function init() {
const arr = (message.content && message.content.split(' ')) || []
console.log('message.type', message.type)
const isGroupJoin = message.type === constants.message_types.group_join
console.log('isGroupJoin',isGroupJoin)
console.log('isGroupJoin', isGroupJoin)
if (arr.length < 2 && !isGroupJoin) return
if (arr[0] !== '/welcome' && !isGroupJoin) return
const cmd = arr[1]
if (isGroupJoin) {
try{
try {
const chat = await models.Chat.findOne({ where: { uuid: message.channel.id } })
if (!chat) return
const chatBot = await models.ChatBot.findOne({
@ -42,13 +42,13 @@ export function init() {
.setDescription(meta)
message.channel.send({ embed: resEmbed })
return
} catch(e) {
console.log("WELCOME BOT ERROR",e)
} catch (e) {
console.log("WELCOME BOT ERROR", e)
}
}
const isAdmin = message.member.roles.find(role => role.name === 'Admin')
if(!isAdmin) return
if (!isAdmin) return
switch (cmd) {

66
src/controllers/api.ts

@ -23,7 +23,7 @@ export interface Action {
}
export async function processAction(req, res) {
console.log('=> processAction',req.body)
console.log('=> processAction', req.body)
let body = req.body
if (body.data && typeof body.data === 'string' && body.data[1] === "'") {
try { // parse out body from "data" for github webhook action
@ -46,62 +46,66 @@ export async function processAction(req, res) {
return failure(res, 'no action')
}
const a:Action = {
const a: Action = {
bot_id,
action,
pubkey: pubkey||'',
content: content||'',
amount: amount||0,
bot_name: bot.name,
chat_uuid: chat_uuid||'',
action,
pubkey: pubkey || '',
content: content || '',
amount: amount || 0,
bot_name: bot.name,
chat_uuid: chat_uuid || '',
}
try {
const r = await finalAction(a,bot_id)
const r = await finalAction(a, bot_id)
success(res, r)
} catch(e) {
} catch (e) {
failure(res, e)
}
}
export async function finalAction(a:Action, bot_id:string){
const {action,pubkey,amount,content,bot_name,chat_uuid} = a
export async function finalAction(a: Action, bot_id: string) {
const { action, pubkey, amount, content, bot_name, chat_uuid } = a
const owner = await models.Contact.findOne({ where: { isOwner: true } })
let theChat
if(chat_uuid){
if (chat_uuid) {
theChat = await models.Chat.findOne({ where: { uuid: chat_uuid } })
}
const iAmTribeAdmin = owner.publicKey === (theChat && theChat.ownerPubkey)
console.log("=> ACTION HIT", a.action, a.bot_name)
if(chat_uuid && !iAmTribeAdmin) { // IM NOT ADMIN - its my bot and i need to forward to admin - there is a chat_uuid
const myBot = await models.Bot.findOne({where:{
id: bot_id
}})
if(!myBot) return console.log('no bot')
if (chat_uuid && !iAmTribeAdmin) { // IM NOT ADMIN - its my bot and i need to forward to admin - there is a chat_uuid
const myBot = await models.Bot.findOne({
where: {
id: bot_id
}
})
if (!myBot) return console.log('no bot')
// THIS is a bot member cmd res (i am bot maker)
const botMember = await models.BotMember.findOne({where:{
tribeUuid: chat_uuid, botId: bot_id
}})
if(!botMember) return console.log('no botMember')
const botMember = await models.BotMember.findOne({
where: {
tribeUuid: chat_uuid, botId: bot_id
}
})
if (!botMember) return console.log('no botMember')
const dest = botMember.memberPubkey
if(!dest) return console.log('no dest to send to')
if (!dest) return console.log('no dest to send to')
const topic = `${dest}/${myBot.uuid}`
const data = <network.Msg>{
action, bot_id, bot_name,
type:constants.message_types.bot_res,
message:{ content:a.content, amount:amount||0 },
chat:{ uuid: chat_uuid},
sender:{
type: constants.message_types.bot_res,
message: { content: a.content, amount: amount || 0 },
chat: { uuid: chat_uuid },
sender: {
pub_key: String(owner.publicKey),
alias: bot_name, role:0
alias: bot_name, role: 0
}, // for verify sig
}
try {
await network.signAndSend({dest,data}, topic)
} catch(e) {
await network.signAndSend({ dest, data }, topic)
} catch (e) {
console.log('=> couldnt mqtt publish')
}
return
@ -159,7 +163,7 @@ export async function finalAction(a:Action, bot_id:string){
})
await network.sendMessage({
chat: theChat,
sender: { ...owner.dataValues, alias, id:botContactId, role: constants.chat_roles.reader },
sender: { ...owner.dataValues, alias, id: botContactId, role: constants.chat_roles.reader },
message: { content: textMap, id: message.id, uuid: message.uuid },
type: constants.message_types.bot_res,
success: () => ({ success: true }),

222
src/controllers/bots.ts

@ -4,11 +4,11 @@ import { models } from '../models'
import * as jsonUtils from '../utils/json'
import { success, failure } from '../utils/res'
import * as network from '../network'
import {finalAction,Action} from './api'
import { finalAction, Action } from './api'
import * as socket from '../utils/socket'
import fetch from 'node-fetch'
import * as SphinxBot from 'sphinx-bot'
import {Msg} from '../network/interfaces'
import { Msg } from '../network/interfaces'
import constants from '../constants'
export const getBots = async (req, res) => {
@ -23,14 +23,14 @@ export const getBots = async (req, res) => {
}
export const createBot = async (req, res) => {
const { name, webhook, price_per_use, img, description, tags, } = req.body
const { name, webhook, price_per_use, img, description, tags, } = req.body
const uuid = await tribes.genSignedTimestamp()
const newBot = {
name, uuid, webhook,
id: crypto.randomBytes(12).toString('hex').toUpperCase(),
secret: crypto.randomBytes(16).toString('hex').toUpperCase(),
pricePerUse: price_per_use||0
pricePerUse: price_per_use || 0
}
try {
const owner = await models.Contact.findOne({ where: { isOwner: true } })
@ -41,11 +41,11 @@ export const createBot = async (req, res) => {
owner_pubkey: owner.publicKey,
price_per_use,
name: name,
description: description||'',
tags: tags||[],
img: img||'',
unlisted:false,
deleted:false,
description: description || '',
tags: tags || [],
img: img || '',
unlisted: false,
deleted: false,
})
success(res, jsonUtils.botToJson(theBot))
} catch (e) {
@ -68,61 +68,63 @@ export const deleteBot = async (req, res) => {
export async function installBotAsTribeAdmin(chat, bot_json) {
const chatId = chat && chat.id
const chat_uuid = chat && chat.uuid
if(!chatId || !chat_uuid) return console.log('no chat id in installBot')
if (!chatId || !chat_uuid) return console.log('no chat id in installBot')
console.log("=> chat to install bot into", chat.name)
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const isTribeOwner = (owner && owner.publicKey) === (chat && chat.ownerPubkey)
if(!isTribeOwner) return console.log('=> only tribe owner can install bots')
if (!isTribeOwner) return console.log('=> only tribe owner can install bots')
const {uuid,owner_pubkey,unique_name,price_per_use} = bot_json
const { uuid, owner_pubkey, unique_name, price_per_use } = bot_json
const isLocal = owner_pubkey===owner.publicKey
const isLocal = owner_pubkey === owner.publicKey
let botType = constants.bot_types.remote
if(isLocal) {
if (isLocal) {
console.log('=> install local bot now!')
botType=constants.bot_types.local
botType = constants.bot_types.local
}
const chatBot = {
chatId,
botPrefix: '/' +unique_name,
botPrefix: '/' + unique_name,
botType: botType,
botUuid: uuid,
botMakerPubkey: owner_pubkey,
pricePerUse: price_per_use
}
if(isLocal) {
if (isLocal) {
// "install" my local bot and send "INSTALL" event
const myBot = await models.Bot.findOne({where:{
uuid: bot_json.uuid
}})
if(myBot) {
const myBot = await models.Bot.findOne({
where: {
uuid: bot_json.uuid
}
})
if (myBot) {
await models.ChatBot.create(chatBot)
postToBotServer(<network.Msg>{
type: constants.message_types.bot_install,
bot_uuid: myBot.uuid,
message: {content:'', amount:0},
message: { content: '', amount: 0 },
sender: {
pub_key: owner.publicKey,
pub_key: owner.publicKey,
alias: owner.alias,
role: constants.chat_roles.owner
},
chat: {uuid:chat_uuid}
chat: { uuid: chat_uuid }
}, myBot, SphinxBot.MSG_TYPE.INSTALL)
}
} else {
// keysend to bot maker
console.log("installBot INSTALL REMOTE BOT NOW",chatBot)
console.log("installBot INSTALL REMOTE BOT NOW", chatBot)
const succeeded = await keysendBotInstall(chatBot, chat_uuid)
if(succeeded) {
if (succeeded) {
try { // could fail
await models.ChatBot.create(chatBot)
} catch(e){}
} catch (e) { }
}
}
}
export async function keysendBotInstall(b, chat_uuid:string): Promise<boolean> {
export async function keysendBotInstall(b, chat_uuid: string): Promise<boolean> {
return await botKeysend(
constants.message_types.bot_install,
b.botUuid, b.botMakerPubkey, b.pricePerUse,
@ -131,7 +133,7 @@ export async function keysendBotInstall(b, chat_uuid:string): Promise<boolean> {
}
export async function keysendBotCmd(msg, b): Promise<boolean> {
const amount = msg.message.amount||0
const amount = msg.message.amount || 0
const amt = Math.max(amount, b.pricePerUse)
return await botKeysend(
constants.message_types.bot_cmd,
@ -142,7 +144,7 @@ export async function keysendBotCmd(msg, b): Promise<boolean> {
)
}
export async function botKeysend(msg_type, bot_uuid, botmaker_pubkey, amount, chat_uuid:string, content?:string, sender_role?:number): Promise<boolean> {
export async function botKeysend(msg_type, bot_uuid, botmaker_pubkey, amount, chat_uuid: string, content?: string, sender_role?: number): Promise<boolean> {
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const dest = botmaker_pubkey
const amt = Math.max(amount || constants.min_sat_amount)
@ -152,12 +154,12 @@ export async function botKeysend(msg_type, bot_uuid, botmaker_pubkey, amount, ch
data: <network.Msg>{
type: msg_type,
bot_uuid,
chat: {uuid:chat_uuid},
message: {content: content||'', amount:amt},
chat: { uuid: chat_uuid },
message: { content: content || '', amount: amt },
sender: {
pub_key: owner.publicKey,
alias: owner.alias,
role: sender_role||constants.chat_roles.reader
pub_key: owner.publicKey,
alias: owner.alias,
role: sender_role || constants.chat_roles.reader
}
}
}
@ -170,29 +172,31 @@ export async function botKeysend(msg_type, bot_uuid, botmaker_pubkey, amount, ch
}
export async function receiveBotInstall(payload) {
console.log('=> receiveBotInstall',payload)
console.log('=> receiveBotInstall', payload)
const dat = payload.content || payload
const sender_pub_key = dat.sender && dat.sender.pub_key
const bot_uuid = dat.bot_uuid
const chat_uuid = dat.chat && dat.chat.uuid
if(!chat_uuid || !sender_pub_key) return console.log('no chat uuid or sender pub key')
if (!chat_uuid || !sender_pub_key) return console.log('no chat uuid or sender pub key')
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const bot = await models.Bot.findOne({where:{
uuid: bot_uuid
}})
if(!bot) return
const bot = await models.Bot.findOne({
where: {
uuid: bot_uuid
}
})
if (!bot) return
const verifiedOwnerPubkey = await tribes.verifySignedTimestamp(bot_uuid)
if(verifiedOwnerPubkey===owner.publicKey){
if (verifiedOwnerPubkey === owner.publicKey) {
const botMember = {
botId: bot.id,
memberPubkey:sender_pub_key,
tribeUuid:chat_uuid,
msgCount:0,
memberPubkey: sender_pub_key,
tribeUuid: chat_uuid,
msgCount: 0,
}
console.log("CREATE bot MEMBER", botMember)
await models.BotMember.create(botMember)
@ -215,42 +219,46 @@ export async function receiveBotCmd(payload) {
// const sender_pub_key = dat.sender.pub_key
const bot_uuid = dat.bot_uuid
const chat_uuid = dat.chat && dat.chat.uuid
if(!chat_uuid) return console.log('no chat uuid')
if (!chat_uuid) return console.log('no chat uuid')
// const amount = dat.message.amount - check price_per_use
const bot = await models.Bot.findOne({where:{
uuid: bot_uuid
}})
if(!bot) return
const bot = await models.Bot.findOne({
where: {
uuid: bot_uuid
}
})
if (!bot) return
const botMember = await models.BotMember.findOne({ where:{
botId: bot.id,
tribeUuid: chat_uuid,
}})
if(!botMember) return
const botMember = await models.BotMember.findOne({
where: {
botId: bot.id,
tribeUuid: chat_uuid,
}
})
if (!botMember) return
botMember.update({ msgCount: (botMember||0)+1 })
botMember.update({ msgCount: (botMember || 0) + 1 })
console.log('=> post to remote BOT!!!!! bot owner')
postToBotServer(payload, bot, SphinxBot.MSG_TYPE.MESSAGE)
// forward to the entire Action back over MQTT
postToBotServer(payload, bot, SphinxBot.MSG_TYPE.MESSAGE)
// forward to the entire Action back over MQTT
}
export async function postToBotServer(msg, bot, route:string): Promise<boolean> {
if(!bot) return false
if(!bot.webhook || !bot.secret) return false
export async function postToBotServer(msg, bot, route: string): Promise<boolean> {
if (!bot) return false
if (!bot.webhook || !bot.secret) return false
let url = bot.webhook
if(url.charAt(url.length-1)==='/') {
if (url.charAt(url.length - 1) === '/') {
url += route
} else {
url += ('/'+route)
url += ('/' + route)
}
const r = await fetch(url, {
method:'POST',
body:JSON.stringify(
method: 'POST',
body: JSON.stringify(
buildBotPayload(msg)
),
headers:{
headers: {
'x-secret': bot.secret,
'Content-Type': 'application/json'
}
@ -258,27 +266,27 @@ export async function postToBotServer(msg, bot, route:string): Promise<boolean>
return r.ok
}
export function buildBotPayload(msg:Msg): SphinxBot.Message {
const chat_uuid = msg.chat&&msg.chat.uuid
export function buildBotPayload(msg: Msg): SphinxBot.Message {
const chat_uuid = msg.chat && msg.chat.uuid
const m = <SphinxBot.Message>{
channel:{
id: chat_uuid,
send:function(){},
},
reply:function(){},
content: msg.message.content,
amount: msg.message.amount,
type: msg.type,
member: {
id: msg.sender.pub_key,
nickname: msg.sender.alias,
roles:[]
}
channel: {
id: chat_uuid,
send: function () { },
},
reply: function () { },
content: msg.message.content,
amount: msg.message.amount,
type: msg.type,
member: {
id: msg.sender.pub_key,
nickname: msg.sender.alias,
roles: []
}
}
if(msg.sender.role===constants.chat_roles.owner) {
if(m.member) m.member.roles=[{
name:'Admin'
}]
if (msg.sender.role === constants.chat_roles.owner) {
if (m.member) m.member.roles = [{
name: 'Admin'
}]
}
return m
}
@ -287,54 +295,56 @@ export async function receiveBotRes(payload) {
console.log("=> receiveBotRes")//, payload)
const dat = payload.content || payload
if(!dat.chat || !dat.message || !dat.sender) {
if (!dat.chat || !dat.message || !dat.sender) {
return console.log('=> receiveBotRes error, no chat||msg||sender')
}
const chat_uuid = dat.chat && dat.chat.uuid
const sender_pub_key =dat.sender.pub_key
const amount = dat.message.amount||0
const msg_uuid = dat.message.uuid||''
const sender_pub_key = dat.sender.pub_key
const amount = dat.message.amount || 0
const msg_uuid = dat.message.uuid || ''
const content = dat.message.content
const action = dat.action
const bot_name = dat.bot_name
const sender_alias = dat.sender.alias
const sender_pic = dat.sender_photo_url
const date_string = dat.message.date
const network_type = dat.network_type||0
if(!chat_uuid) return console.log('=> receiveBotRes Error no chat_uuid')
const network_type = dat.network_type || 0
const chat = await models.Chat.findOne({where:{uuid:chat_uuid}})
if(!chat) return console.log('=> receiveBotRes Error no chat')
if (!chat_uuid) return console.log('=> receiveBotRes Error no chat_uuid')
const chat = await models.Chat.findOne({ where: { uuid: chat_uuid } })
if (!chat) return console.log('=> receiveBotRes Error no chat')
const tribeOwnerPubKey = chat && chat.ownerPubkey
const owner = await models.Contact.findOne({where: {isOwner:true}})
const isTribeOwner = owner.publicKey===tribeOwnerPubKey
if(isTribeOwner){
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const isTribeOwner = owner.publicKey === tribeOwnerPubKey
if (isTribeOwner) {
console.log("=> is tribeOwner, do finalAction!")
// IF IS TRIBE ADMIN forward to the tribe
// received the entire action?
const bot_id = payload.bot_id
finalAction(<Action>{
action, bot_name, chat_uuid, content, amount,
action, bot_name, chat_uuid, content, amount,
}, bot_id)
} else {
const theChat = await models.Chat.findOne({where:{
uuid: chat_uuid
}})
if(!chat) return console.log('=> receiveBotRes as sub error no chat')
const theChat = await models.Chat.findOne({
where: {
uuid: chat_uuid
}
})
if (!chat) return console.log('=> receiveBotRes as sub error no chat')
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
if (date_string) date = new Date(date_string)
const sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key } })
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: msg_uuid,
type: constants.message_types.bot_res,
sender: (sender&&sender.id) || 0,
sender: (sender && sender.id) || 0,
amount: amount || 0,
date: date,
messageContent: content,

261
src/controllers/chatTribes.ts

@ -7,22 +7,22 @@ import * as helpers from '../helpers'
import * as socket from '../utils/socket'
import * as tribes from '../utils/tribes'
import { sendNotification } from '../hub'
import {personalizeMessage, decryptMessage} from '../utils/msg'
import { personalizeMessage, decryptMessage } from '../utils/msg'
import { Op } from 'sequelize'
import constants from '../constants'
export async function joinTribe(req, res){
export async function joinTribe(req, res) {
console.log('=> joinTribe')
const { uuid, group_key, name, host, amount, img, owner_pubkey, owner_alias, my_alias, my_photo_url } = req.body
const is_private = req.body.private
const existing = await models.Chat.findOne({where:{uuid}})
if(existing) {
const existing = await models.Chat.findOne({ where: { uuid } })
if (existing) {
console.log('[tribes] u are already in this tribe')
return failure(res, 'cant find tribe')
}
if(!owner_pubkey || !group_key || !uuid) {
if (!owner_pubkey || !group_key || !uuid) {
console.log('[tribes] missing required params')
return failure(res, 'missing required params')
}
@ -34,16 +34,16 @@ export async function joinTribe(req, res){
let theTribeOwner
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const contactIds = [owner.id]
if (tribeOwner) {
theTribeOwner = tribeOwner // might already include??
if(!contactIds.includes(tribeOwner.id)) contactIds.push(tribeOwner.id)
if (!contactIds.includes(tribeOwner.id)) contactIds.push(tribeOwner.id)
} else {
const createdContact = await models.Contact.create({
publicKey: ownerPubKey,
contactKey: '',
alias: owner_alias||'Unknown',
alias: owner_alias || 'Unknown',
status: 1,
fromGroup: true,
})
@ -56,10 +56,10 @@ export async function joinTribe(req, res){
const chatStatus = is_private ?
constants.chat_statuses.pending :
constants.chat_statuses.approved
const chatParams:{[k:string]:any} = {
const chatParams: { [k: string]: any } = {
uuid: uuid,
contactIds: JSON.stringify(contactIds),
photoUrl: img||'',
photoUrl: img || '',
createdAt: date,
updatedAt: date,
name: name,
@ -67,13 +67,13 @@ export async function joinTribe(req, res){
host: host || tribes.getHost(),
groupKey: group_key,
ownerPubkey: owner_pubkey,
private: is_private||false,
private: is_private || false,
status: chatStatus,
priceToJoin: amount||0,
priceToJoin: amount || 0,
}
if(my_alias) chatParams.myAlias = my_alias
if(my_photo_url) chatParams.myPhotoUrl = my_photo_url
if (my_alias) chatParams.myAlias = my_alias
if (my_photo_url) chatParams.myPhotoUrl = my_photo_url
const typeToSend = is_private ?
constants.message_types.member_request :
constants.message_types.group_join
@ -83,20 +83,20 @@ export async function joinTribe(req, res){
console.log('=> joinTribe: typeToSend', typeToSend)
console.log('=> joinTribe: contactIdsToSend', contactIdsToSend)
// set my alias to be the custom one
const theOwner = owner.dataValues||owner
if(my_alias) theOwner.alias = my_alias
const theOwner = owner.dataValues || owner
if (my_alias) theOwner.alias = my_alias
network.sendMessage({ // send my data to tribe owner
chat: {
...chatParams,
contactIds: contactIdsToSend,
...chatParams,
contactIds: contactIdsToSend,
members: {
[owner.publicKey]: {
key: owner.contactKey,
alias: my_alias||owner.alias||''
alias: my_alias || owner.alias || ''
}
}
},
amount: amount||0,
amount: amount || 0,
sender: theOwner,
message: {},
type: typeToSend,
@ -124,12 +124,12 @@ export async function receiveMemberRequest(payload) {
const chat = await models.Chat.findOne({ where: { uuid: chat_uuid } })
if (!chat) return console.log('no chat')
const isTribe = chat_type===constants.chat_types.tribe
if(!isTribe || !isTribeOwner) return console.log('not a tribe')
const isTribe = chat_type === constants.chat_types.tribe
if (!isTribe || !isTribeOwner) return console.log('not a tribe')
var date = new Date()
date.setMilliseconds(0)
let theSender: any = null
const member = chat_members[sender_pub_key]
const senderAlias = (member && member.alias) || sender_alias || 'Unknown'
@ -138,7 +138,7 @@ export async function receiveMemberRequest(payload) {
if (sender) {
theSender = sender // might already include??
} else {
if(member && member.key) {
if (member && member.key) {
const createdContact = await models.Contact.create({
publicKey: sender_pub_key,
contactKey: member.key,
@ -150,9 +150,9 @@ export async function receiveMemberRequest(payload) {
theSender = createdContact
}
}
if(!theSender) return console.log('no sender') // fail (no contact key?)
if (!theSender) return console.log('no sender') // fail (no contact key?)
console.log("UPSERT",{
console.log("UPSERT", {
contactId: theSender.id,
chatId: chat.id,
role: constants.chat_roles.reader,
@ -161,7 +161,7 @@ export async function receiveMemberRequest(payload) {
lastAlias: senderAlias,
})
// maybe check here manually????
try{
try {
await models.ChatMember.upsert({
contactId: theSender.id,
chatId: chat.id,
@ -170,18 +170,18 @@ export async function receiveMemberRequest(payload) {
lastActive: date,
lastAlias: senderAlias,
})
} catch(e){}
} catch (e) { }
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
type: constants.message_types.member_request,
sender: (theSender && theSender.id) || 0,
messageContent:'', remoteMessageContent:'',
messageContent: '', remoteMessageContent: '',
status: constants.statuses.confirmed,
date: date, createdAt: date, updatedAt: date,
network_type
}
if(isTribe) {
if (isTribe) {
msg.senderAlias = senderAlias
msg.senderPic = sender_photo_url
}
@ -191,7 +191,7 @@ export async function receiveMemberRequest(payload) {
socket.sendJson({
type: 'member_request',
response: {
contact: jsonUtils.contactToJson(theSender||{}),
contact: jsonUtils.contactToJson(theSender || {}),
chat: jsonUtils.chatToJson(theChat),
message: jsonUtils.messageToJson(message, theChat)
}
@ -214,26 +214,26 @@ export async function editTribe(req, res) {
} = req.body
const { id } = req.params
if(!id) return failure(res, 'group id is required')
if (!id) return failure(res, 'group id is required')
const chat = await models.Chat.findOne({where:{id}})
if(!chat) {
const chat = await models.Chat.findOne({ where: { id } })
if (!chat) {
return failure(res, 'cant find chat')
}
const owner = await models.Contact.findOne({ where: { isOwner: true } })
let okToUpdate = true
if (owner.publicKey===chat.ownerPubkey) {
try{
if (owner.publicKey === chat.ownerPubkey) {
try {
await tribes.edit({
uuid: chat.uuid,
name: name,
host: chat.host,
price_per_message: price_per_message||0,
price_to_join: price_to_join||0,
escrow_amount: escrow_amount||0,
escrow_millis: escrow_millis||0,
price_per_message: price_per_message || 0,
price_to_join: price_to_join || 0,
escrow_amount: escrow_amount || 0,
escrow_millis: escrow_millis || 0,
description,
tags,
img,
@ -244,24 +244,24 @@ export async function editTribe(req, res) {
feed_url,
deleted: false,
})
} catch(e) {
} catch (e) {
okToUpdate = false
}
}
if(okToUpdate) {
const obj:{[k:string]:any} = {}
if(img) obj.photoUrl=img
if(name) obj.name=name
if(price_per_message||price_per_message===0) obj.pricePerMessage=price_per_message
if(price_to_join||price_to_join===0) obj.priceToJoin = price_to_join
if(escrow_amount||escrow_amount===0) obj.escrowAmount = escrow_amount
if(escrow_millis||escrow_millis===0) obj.escrowMillis = escrow_millis
if(unlisted||unlisted===false) obj.unlisted = unlisted
if(app_url) obj.appUrl=app_url
if(feed_url) obj.feedUrl=feed_url
if(req.body.private||req.body.private===false) obj.private = req.body.private
if(Object.keys(obj).length>0) {
if (okToUpdate) {
const obj: { [k: string]: any } = {}
if (img) obj.photoUrl = img
if (name) obj.name = name
if (price_per_message || price_per_message === 0) obj.pricePerMessage = price_per_message
if (price_to_join || price_to_join === 0) obj.priceToJoin = price_to_join
if (escrow_amount || escrow_amount === 0) obj.escrowAmount = escrow_amount
if (escrow_millis || escrow_millis === 0) obj.escrowMillis = escrow_millis
if (unlisted || unlisted === false) obj.unlisted = unlisted
if (app_url) obj.appUrl = app_url
if (feed_url) obj.feedUrl = feed_url
if (req.body.private || req.body.private === false) obj.private = req.body.private
if (Object.keys(obj).length > 0) {
await chat.update(obj)
}
success(res, jsonUtils.chatToJson(chat))
@ -270,44 +270,44 @@ export async function editTribe(req, res) {
}
}
export async function approveOrRejectMember(req,res) {
export async function approveOrRejectMember(req, res) {
console.log('=> approve or reject tribe member')
const msgId = parseInt(req.params['messageId'])
const contactId = parseInt(req.params['contactId'])
const status = req.params['status']
const msg = await models.Message.findOne({ where: { id:msgId } })
const msg = await models.Message.findOne({ where: { id: msgId } })
if (!msg) return failure(res, 'no message')
const chatId = msg.chatId
const chat = await models.Chat.findOne({ where: { id:chatId } })
const chat = await models.Chat.findOne({ where: { id: chatId } })
if (!chat) return failure(res, 'no chat')
if(!msgId || !contactId || !(status==='approved'||status==='rejected')) {
if (!msgId || !contactId || !(status === 'approved' || status === 'rejected')) {
return failure(res, 'incorrect status')
}
let memberStatus = constants.chat_statuses.rejected
let msgType = constants.message_types.member_reject
if(status==='approved') {
if (status === 'approved') {
memberStatus = constants.chat_statuses.approved
msgType = constants.message_types.member_approve
const contactIds = JSON.parse(chat.contactIds || '[]')
if(!contactIds.includes(contactId)) contactIds.push(contactId)
if (!contactIds.includes(contactId)) contactIds.push(contactId)
await chat.update({ contactIds: JSON.stringify(contactIds) })
}
await msg.update({type:msgType})
await msg.update({ type: msgType })
const member = await models.ChatMember.findOne({where:{contactId, chatId}})
if(!member) {
const member = await models.ChatMember.findOne({ where: { contactId, chatId } })
if (!member) {
return failure(res, 'cant find chat member')
}
// update ChatMember status
await member.update({status:memberStatus})
await member.update({ status: memberStatus })
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const chatToSend = chat.dataValues||chat
const chatToSend = chat.dataValues || chat
network.sendMessage({ // send to the requester
chat: { ...chatToSend, contactIds: [member.contactId], },
@ -327,16 +327,16 @@ export async function approveOrRejectMember(req,res) {
export async function receiveMemberApprove(payload) {
console.log('=> receiveMemberApprove') // received by the joiner only
const { owner, chat, chat_name, sender, network_type } = await helpers.parseReceiveParams(payload)
if(!chat) return console.log('no chat')
await chat.update({status: constants.chat_statuses.approved})
if (!chat) return console.log('no chat')
await chat.update({ status: constants.chat_statuses.approved })
let date = new Date()
date.setMilliseconds(0)
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
type: constants.message_types.member_approve,
sender: (sender && sender.id) || 0,
messageContent:'', remoteMessageContent:'',
messageContent: '', remoteMessageContent: '',
status: constants.statuses.confirmed,
date: date, createdAt: date, updatedAt: date,
network_type
@ -350,18 +350,19 @@ export async function receiveMemberApprove(payload) {
}
})
const amount = chat.priceToJoin||0
const theChat = chat.dataValues||chat
const theOwner = owner.dataValues||owner
const amount = chat.priceToJoin || 0
const theChat = chat.dataValues || chat
const theOwner = owner.dataValues || owner
const theAlias = chat.myAlias || owner.alias
if(theAlias) theOwner.alias = theAlias
if (theAlias) theOwner.alias = theAlias
// send JOIN and my info to all
network.sendMessage({
chat: { ...theChat,
chat: {
...theChat,
members: {
[owner.publicKey]: {
key: owner.contactKey,
alias: theAlias||''
alias: theAlias || ''
}
}
},
@ -377,16 +378,16 @@ export async function receiveMemberApprove(payload) {
export async function receiveMemberReject(payload) {
console.log('=> receiveMemberReject')
const { chat, sender, chat_name, network_type } = await helpers.parseReceiveParams(payload)
if(!chat) return console.log('no chat')
await chat.update({status: constants.chat_statuses.rejected})
if (!chat) return console.log('no chat')
await chat.update({ status: constants.chat_statuses.rejected })
// dang.. nothing really to do here?
let date = new Date()
date.setMilliseconds(0)
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
type: constants.message_types.member_reject,
sender: (sender && sender.id) || 0,
messageContent:'', remoteMessageContent:'',
messageContent: '', remoteMessageContent: '',
status: constants.statuses.confirmed,
date: date, createdAt: date, updatedAt: date,
network_type
@ -407,16 +408,16 @@ export async function receiveMemberReject(payload) {
export async function receiveTribeDelete(payload) {
console.log('=> receiveTribeDelete')
const { chat, sender, network_type } = await helpers.parseReceiveParams(payload)
if(!chat) return console.log('no chat')
if (!chat) return console.log('no chat')
// await chat.update({status: constants.chat_statuses.rejected})
// update on tribes server too
let date = new Date()
date.setMilliseconds(0)
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
type: constants.message_types.tribe_delete,
sender: (sender && sender.id) || 0,
messageContent:'', remoteMessageContent:'',
messageContent: '', remoteMessageContent: '',
status: constants.statuses.confirmed,
date: date, createdAt: date, updatedAt: date,
network_type
@ -433,48 +434,50 @@ export async function receiveTribeDelete(payload) {
export async function replayChatHistory(chat, contact) {
console.log('-> replayHistory')
if(!(chat&&chat.id&&contact&&contact.id)){
if (!(chat && chat.id && contact && contact.id)) {
return console.log('[tribes] cant replay history')
}
try {
const msgs = await models.Message.findAll({
where:{chatId:chat.id, type:{[Op.in]:network.typesToReplay}},
order: [['id', 'desc']],
const msgs = await models.Message.findAll({
where: { chatId: chat.id, type: { [Op.in]: network.typesToReplay } },
order: [['id', 'desc']],
limit: 40
})
msgs.reverse()
const owner = await models.Contact.findOne({ where: { isOwner: true } })
asyncForEach(msgs, async m=>{
if(!network.typesToReplay.includes(m.type)) return // only for message for now
asyncForEach(msgs, async m => {
if (!network.typesToReplay.includes(m.type)) return // only for message for now
const sender = {
...owner.dataValues,
...m.senderAlias && {alias: m.senderAlias},
...m.senderAlias && { alias: m.senderAlias },
role: constants.chat_roles.reader,
...m.senderPic && {photoUrl: m.senderPic}
...m.senderPic && { photoUrl: m.senderPic }
}
let content = ''
try {content = JSON.parse(m.remoteMessageContent)} catch(e) {}
try { content = JSON.parse(m.remoteMessageContent) } catch (e) { }
let mdate = m.date
if(!mdate) mdate = new Date()
if (!mdate) mdate = new Date()
const dateString = mdate.toISOString()
let mediaKeyMap
let newMediaTerms
if(m.type===constants.message_types.attachment) {
if(m.mediaKey&&m.mediaToken) {
if (m.type === constants.message_types.attachment) {
if (m.mediaKey && m.mediaToken) {
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1]
if(muid) {
const mediaKey = await models.MediaKey.findOne({where:{
muid, chatId: chat.id,
}})
if (muid) {
const mediaKey = await models.MediaKey.findOne({
where: {
muid, chatId: chat.id,
}
})
// console.log("FOUND MEDIA KEY!!",mediaKey.dataValues)
mediaKeyMap = {chat: mediaKey.key}
newMediaTerms = {muid: mediaKey.muid}
mediaKeyMap = { chat: mediaKey.key }
newMediaTerms = { muid: mediaKey.muid }
}
}
}
const isForwarded = m.sender!==1
const isForwarded = m.sender !== 1
const includeStatus = true
let msg = network.newmsg(m.type, chat, sender, {
content, // replaced with the remoteMessageContent (u are owner) {}
@ -482,10 +485,10 @@ export async function replayChatHistory(chat, contact) {
replyUuid: m.replyUuid,
status: m.status,
amount: m.amount,
...mediaKeyMap && {mediaKey: mediaKeyMap},
...newMediaTerms && {mediaToken: newMediaTerms},
...m.mediaType && {mediaType: m.mediaType},
...dateString && {date: dateString}
...mediaKeyMap && { mediaKey: mediaKeyMap },
...newMediaTerms && { mediaToken: newMediaTerms },
...m.mediaType && { mediaType: m.mediaType },
...dateString && { date: dateString }
}, isForwarded, includeStatus)
msg = await decryptMessage(msg, chat)
@ -498,12 +501,12 @@ export async function replayChatHistory(chat, contact) {
dest: contact.publicKey,
}, mqttTopic, replayingHistory)
})
} catch(e) {
} catch (e) {
console.log('replayChatHistory ERROR', e)
}
}
export async function createTribeChatParams(owner, contactIds, name, img, price_per_message, price_to_join, escrow_amount, escrow_millis, unlisted, is_private, app_url, feed_url): Promise<{[k:string]:any}> {
export async function createTribeChatParams(owner, contactIds, name, img, price_per_message, price_to_join, escrow_amount, escrow_millis, unlisted, is_private, app_url, feed_url): Promise<{ [k: string]: any }> {
let date = new Date()
date.setMilliseconds(0)
if (!(owner && contactIds && Array.isArray(contactIds))) {
@ -511,7 +514,7 @@ export async function createTribeChatParams(owner, contactIds, name, img, price_
}
// make ts sig here w LNd pubkey - that is UUID
const keys:{[k:string]:string} = await rsa.genKeys()
const keys: { [k: string]: string } = await rsa.genKeys()
const groupUUID = await tribes.genSignedTimestamp()
const theContactIds = contactIds.includes(owner.id) ? contactIds : [owner.id].concat(contactIds)
return {
@ -520,31 +523,33 @@ export async function createTribeChatParams(owner, contactIds, name, img, price_
contactIds: JSON.stringify(theContactIds),
createdAt: date,
updatedAt: date,
photoUrl: img||'',
photoUrl: img || '',
name: name,
type: constants.chat_types.tribe,
groupKey: keys.public,
groupPrivateKey: keys.private,
host: tribes.getHost(),
pricePerMessage: price_per_message||0,
priceToJoin: price_to_join||0,
escrowMillis: escrow_millis||0,
escrowAmount: escrow_amount||0,
unlisted: unlisted||false,
private: is_private||false,
appUrl: app_url||'',
feedUrl: feed_url||'',
pricePerMessage: price_per_message || 0,
priceToJoin: price_to_join || 0,
escrowMillis: escrow_millis || 0,
escrowAmount: escrow_amount || 0,
unlisted: unlisted || false,
private: is_private || false,
appUrl: app_url || '',
feedUrl: feed_url || '',
}
}
export async function addPendingContactIdsToChat(achat){
const members = await models.ChatMember.findAll({where:{
chatId: achat.id,
status: constants.chat_statuses.pending // only pending
}})
export async function addPendingContactIdsToChat(achat) {
const members = await models.ChatMember.findAll({
where: {
chatId: achat.id,
status: constants.chat_statuses.pending // only pending
}
})
if (!members) return achat
const pendingContactIds:number[] = members.map(m=>m.contactId)
const chat = achat.dataValues||achat
const pendingContactIds: number[] = members.map(m => m.contactId)
const chat = achat.dataValues || achat
return {
...chat,
pendingContactIds,
@ -553,7 +558,7 @@ export async function addPendingContactIdsToChat(achat){
async function asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
await callback(array[index], index, array);
}
}

234
src/controllers/chats.ts

@ -8,61 +8,63 @@ import { sendNotification } from '../hub'
import * as md5 from 'md5'
import * as tribes from '../utils/tribes'
import * as timers from '../utils/timers'
import {replayChatHistory,createTribeChatParams,addPendingContactIdsToChat} from './chatTribes'
import { replayChatHistory, createTribeChatParams, addPendingContactIdsToChat } from './chatTribes'
import constants from '../constants'
export async function updateChat(req, res){
export async function updateChat(req, res) {
console.log('=> updateChat')
const id = parseInt(req.params.id)
if(!id) {
return failure(res,'missing id')
if (!id) {
return failure(res, 'missing id')
}
const chat = await models.Chat.findOne({ where: { id }})
if(!chat) {
return failure(res,'chat not found')
const chat = await models.Chat.findOne({ where: { id } })
if (!chat) {
return failure(res, 'chat not found')
}
const {name,photo_url,meta,my_alias,my_photo_url} = req.body
const { name, photo_url, meta, my_alias, my_photo_url } = req.body
const obj:{[k:string]:any} = {}
if(name) obj.name=name
if(photo_url) obj.photoUrl=photo_url
if(meta && typeof meta==='string') obj.meta=meta
if(my_alias) obj.myAlias=my_alias
if(my_photo_url || my_photo_url==="") obj.myPhotoUrl=my_photo_url
const obj: { [k: string]: any } = {}
if (name) obj.name = name
if (photo_url) obj.photoUrl = photo_url
if (meta && typeof meta === 'string') obj.meta = meta
if (my_alias) obj.myAlias = my_alias
if (my_photo_url || my_photo_url === "") obj.myPhotoUrl = my_photo_url
if(Object.keys(obj).length>0) {
if (Object.keys(obj).length > 0) {
await chat.update(obj)
}
success(res, jsonUtils.chatToJson(chat))
}
export async function kickChatMember(req, res){
export async function kickChatMember(req, res) {
const chatId = parseInt(req.params['chat_id'])
const contactId = parseInt(req.params['contact_id'])
if(!chatId || !contactId) {
if (!chatId || !contactId) {
return failure(res, "missing param")
}
// remove chat.contactIds
let chat = await models.Chat.findOne({ where: { id:chatId } })
let chat = await models.Chat.findOne({ where: { id: chatId } })
const contactIds = JSON.parse(chat.contactIds || '[]')
const newContactIds = contactIds.filter(cid=>cid!==contactId)
const newContactIds = contactIds.filter(cid => cid !== contactId)
await chat.update({ contactIds: JSON.stringify(newContactIds) })
// remove from ChatMembers
await models.ChatMember.destroy({where:{
chatId, contactId,
}})
await models.ChatMember.destroy({
where: {
chatId, contactId,
}
})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
network.sendMessage({
chat: { ...chat.dataValues, contactIds:[contactId] }, // send only to the guy u kicked
chat: { ...chat.dataValues, contactIds: [contactId] }, // send only to the guy u kicked
sender: owner,
message: {},
type: constants.message_types.group_kick,
})
// delete all timers for this member
timers.removeTimersByContactIdChatId(contactId,chatId)
timers.removeTimersByContactIdChatId(contactId, chatId)
success(res, jsonUtils.chatToJson(chat))
}
@ -86,12 +88,12 @@ export async function receiveGroupKick(payload) {
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
const msg:{[k:string]:any} = {
if (date_string) date = new Date(date_string)
const msg: { [k: string]: any } = {
chatId: chat.id,
type: constants.message_types.group_kick,
sender: (sender && sender.id) || 0,
messageContent:'', remoteMessageContent:'',
messageContent: '', remoteMessageContent: '',
status: constants.statuses.confirmed,
date: date, createdAt: date, updatedAt: date,
network_type
@ -109,7 +111,7 @@ export async function receiveGroupKick(payload) {
}
export async function getChats(req, res) {
const chats = await models.Chat.findAll({ where:{deleted:false}, raw: true })
const chats = await models.Chat.findAll({ where: { deleted: false }, raw: true })
const c = chats.map(chat => jsonUtils.chatToJson(chat));
success(res, c)
}
@ -150,27 +152,27 @@ export async function createGroupChat(req, res) {
app_url,
feed_url,
} = req.body
const contact_ids = req.body.contact_ids||[]
const contact_ids = req.body.contact_ids || []
const members: { [k: string]: {[k:string]:(string|number)} } = {} //{pubkey:{key,alias}, ...}
const members: { [k: string]: { [k: string]: (string | number) } } = {} //{pubkey:{key,alias}, ...}
const owner = await models.Contact.findOne({ where: { isOwner: true } })
members[owner.publicKey] = {
key:owner.contactKey, alias:owner.alias
key: owner.contactKey, alias: owner.alias
}
await asyncForEach(contact_ids, async cid => {
const contact = await models.Contact.findOne({ where: { id: cid } })
members[contact.publicKey] = {
key: contact.contactKey,
alias: contact.alias||''
alias: contact.alias || ''
}
})
let chatParams:any = null
let chatParams: any = null
let okToCreate = true
if(is_tribe){
if (is_tribe) {
chatParams = await createTribeChatParams(owner, contact_ids, name, img, price_per_message, price_to_join, escrow_amount, escrow_millis, unlisted, req.body.private, app_url, feed_url)
if(chatParams.uuid){
if (chatParams.uuid) {
// publish to tribe server
try {
await tribes.declare({
@ -178,19 +180,19 @@ export async function createGroupChat(req, res) {
name: chatParams.name,
host: chatParams.host,
group_key: chatParams.groupKey,
price_per_message: price_per_message||0,
price_to_join: price_to_join||0,
escrow_amount: escrow_amount||0,
escrow_millis: escrow_millis||0,
price_per_message: price_per_message || 0,
price_to_join: price_to_join || 0,
escrow_amount: escrow_amount || 0,
escrow_millis: escrow_millis || 0,
description, tags, img,
owner_pubkey: owner.publicKey,
owner_alias: owner.alias,
unlisted: unlisted||false,
is_private: req.body.private||false,
unlisted: unlisted || false,
is_private: req.body.private || false,
app_url,
feed_url,
})
} catch(e) {
} catch (e) {
okToCreate = false
}
}
@ -200,7 +202,7 @@ export async function createGroupChat(req, res) {
chatParams = createGroupChatParams(owner, contact_ids, members, name)
}
if(!okToCreate) {
if (!okToCreate) {
return failure(res, 'could not create tribe')
}
@ -214,7 +216,7 @@ export async function createGroupChat(req, res) {
},
success: async function () {
const chat = await models.Chat.create(chatParams)
if(chat.type===constants.chat_types.tribe){ // save me as owner when i create
if (chat.type === constants.chat_types.tribe) { // save me as owner when i create
await models.ChatMember.create({
contactId: owner.id,
chatId: chat.id,
@ -234,34 +236,34 @@ export async function addGroupMembers(req, res) {
} = req.body
const { id } = req.params
const members: { [k: string]: {[k:string]:string} } = {} //{pubkey:{key,alias}, ...}
const members: { [k: string]: { [k: string]: string } } = {} //{pubkey:{key,alias}, ...}
const owner = await models.Contact.findOne({ where: { isOwner: true } })
let chat = await models.Chat.findOne({ where: { id } })
const contactIds = JSON.parse(chat.contactIds || '[]')
// for all members (existing and new)
members[owner.publicKey] = {key:owner.contactKey, alias:owner.alias}
if(chat.type===constants.chat_types.tribe){
const me = await models.ChatMember.findOne({where:{contactId: owner.id, chatId: chat.id}})
if(me) members[owner.publicKey].role = me.role
members[owner.publicKey] = { key: owner.contactKey, alias: owner.alias }
if (chat.type === constants.chat_types.tribe) {
const me = await models.ChatMember.findOne({ where: { contactId: owner.id, chatId: chat.id } })
if (me) members[owner.publicKey].role = me.role
}
const allContactIds = contactIds.concat(contact_ids)
await asyncForEach(allContactIds, async cid => {
const contact = await models.Contact.findOne({ where: { id: cid } })
if(contact) {
if (contact) {
members[contact.publicKey] = {
key: contact.contactKey,
alias: contact.alias
}
const member = await models.ChatMember.findOne({where:{contactId: owner.id, chatId: chat.id}})
if(member) members[contact.publicKey].role = member.role
const member = await models.ChatMember.findOne({ where: { contactId: owner.id, chatId: chat.id } })
if (member) members[contact.publicKey].role = member.role
}
})
success(res, jsonUtils.chatToJson(chat))
network.sendMessage({ // send ONLY to new members
chat: { ...chat.dataValues, contactIds:contact_ids, members },
chat: { ...chat.dataValues, contactIds: contact_ids, members },
sender: owner,
type: constants.message_types.group_invite,
message: {}
@ -273,12 +275,12 @@ export const deleteChat = async (req, res) => {
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const chat = await models.Chat.findOne({ where: { id } })
if(!chat) {
if (!chat) {
return failure(res, "you are not in this group")
}
const tribeOwnerPubKey = chat.ownerPubkey
if(owner.publicKey===tribeOwnerPubKey) {
if (owner.publicKey === tribeOwnerPubKey) {
// delete a group or tribe
let notOK = false
await network.sendMessage({
@ -289,17 +291,17 @@ export const deleteChat = async (req, res) => {
success: function () {
tribes.delete_tribe(chat.uuid)
},
failure: function(){
failure: function () {
failure(res, 'failed to send tribe_delete message')
notOK = true
}
})
if(notOK) return console.log('failed to send tribe_delete message')
if (notOK) return console.log('failed to send tribe_delete message')
} else {
// leave a group or tribe
const isPending = chat.status===constants.chat_statuses.pending
const isRejected = chat.status===constants.chat_statuses.rejected
if(!isPending && !isRejected) { // dont send if pending
const isPending = chat.status === constants.chat_statuses.pending
const isRejected = chat.status === constants.chat_statuses.rejected
if (!isPending && !isRejected) { // dont send if pending
network.sendMessage({
chat,
sender: owner,
@ -310,16 +312,16 @@ export const deleteChat = async (req, res) => {
}
await chat.update({
deleted: true,
uuid:'',
groupKey:'',
host:'',
photoUrl:'',
contactIds:'[]',
name:''
deleted: true,
uuid: '',
groupKey: '',
host: '',
photoUrl: '',
contactIds: '[]',
name: ''
})
await models.Message.destroy({ where: { chatId: id } })
await models.ChatMember.destroy({ where: {chatId: id} })
await models.ChatMember.destroy({ where: { chatId: id } })
success(res, { chat_id: id })
}
@ -331,30 +333,30 @@ export async function receiveGroupJoin(payload) {
const chat = await models.Chat.findOne({ where: { uuid: chat_uuid } })
if (!chat) return
const isTribe = chat_type===constants.chat_types.tribe
const isTribe = chat_type === constants.chat_types.tribe
var date = new Date()
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
if (date_string) date = new Date(date_string)
let theSender: any = null
const member = chat_members[sender_pub_key]
const senderAlias = (member && member.alias) || sender_alias || 'Unknown'
if(!isTribe || isTribeOwner) {
if (!isTribe || isTribeOwner) {
const sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key } })
const contactIds = JSON.parse(chat.contactIds || '[]')
if (sender) {
theSender = sender // might already include??
if(!contactIds.includes(sender.id)) contactIds.push(sender.id)
if (!contactIds.includes(sender.id)) contactIds.push(sender.id)
// update sender contacT_key in case they reset?
if(member && member.key) {
if(sender.contactKey!==member.key) {
await sender.update({contactKey:member.key})
if (member && member.key) {
if (sender.contactKey !== member.key) {
await sender.update({ contactKey: member.key })
}
}
} else {
if(member && member.key) {
if (member && member.key) {
const createdContact = await models.Contact.create({
publicKey: sender_pub_key,
contactKey: member.key,
@ -367,12 +369,12 @@ export async function receiveGroupJoin(payload) {
contactIds.push(createdContact.id)
}
}
if(!theSender) return console.log('no sender') // fail (no contact key?)
if (!theSender) return console.log('no sender') // fail (no contact key?)
await chat.update({ contactIds: JSON.stringify(contactIds) })
if(isTribeOwner){ // IF TRIBE, ADD new member TO XREF
console.log("UPSERT CHAT MEMBER",{
if (isTribeOwner) { // IF TRIBE, ADD new member TO XREF
console.log("UPSERT CHAT MEMBER", {
contactId: theSender.id,
chatId: chat.id,
role: constants.chat_roles.reader,
@ -380,7 +382,7 @@ export async function receiveGroupJoin(payload) {
lastActive: date,
lastAlias: senderAlias,
})
try{
try {
models.ChatMember.upsert({
contactId: theSender.id,
chatId: chat.id,
@ -389,7 +391,7 @@ export async function receiveGroupJoin(payload) {
status: constants.chat_statuses.approved,
lastAlias: senderAlias,
})
} catch(e) {
} catch (e) {
console.log('=> groupJoin could not upsert ChatMember')
}
replayChatHistory(chat, theSender)
@ -402,16 +404,16 @@ export async function receiveGroupJoin(payload) {
}
}
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
type: constants.message_types.group_join,
sender: (theSender && theSender.id) || 0,
messageContent:'', remoteMessageContent:'',
messageContent: '', remoteMessageContent: '',
status: constants.statuses.confirmed,
date: date, createdAt: date, updatedAt: date,
network_type
}
if(isTribe) {
if (isTribe) {
msg.senderAlias = sender_alias
msg.senderPic = sender_photo_url
}
@ -421,7 +423,7 @@ export async function receiveGroupJoin(payload) {
socket.sendJson({
type: 'group_join',
response: {
contact: jsonUtils.contactToJson(theSender||{}),
contact: jsonUtils.contactToJson(theSender || {}),
chat: jsonUtils.chatToJson(theChat),
message: jsonUtils.messageToJson(message, null)
}
@ -435,11 +437,11 @@ export async function receiveGroupLeave(payload) {
const chat = await models.Chat.findOne({ where: { uuid: chat_uuid } })
if (!chat) return
const isTribe = chat_type===constants.chat_types.tribe
const isTribe = chat_type === constants.chat_types.tribe
let sender
// EITHER private chat OR tribeOwner
if(!isTribe || isTribeOwner) {
if (!isTribe || isTribeOwner) {
sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key } })
if (!sender) return
@ -447,11 +449,11 @@ export async function receiveGroupLeave(payload) {
const contactIds = oldContactIds.filter(cid => cid !== sender.id)
await chat.update({ contactIds: JSON.stringify(contactIds) })
if(isTribeOwner) {
if(chat_type===constants.chat_types.tribe){
if (isTribeOwner) {
if (chat_type === constants.chat_types.tribe) {
try {
await models.ChatMember.destroy({where:{chatId: chat.id, contactId: sender.id}})
} catch(e) {}
await models.ChatMember.destroy({ where: { chatId: chat.id, contactId: sender.id } })
} catch (e) { }
tribes.putstats({
chatId: chat.id,
uuid: chat.uuid,
@ -464,17 +466,17 @@ export async function receiveGroupLeave(payload) {
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
const msg:{[k:string]:any} = {
if (date_string) date = new Date(date_string)
const msg: { [k: string]: any } = {
chatId: chat.id,
type: constants.message_types.group_leave,
sender: (sender && sender.id) || 0,
messageContent:'', remoteMessageContent:'',
messageContent: '', remoteMessageContent: '',
status: constants.statuses.confirmed,
date: date, createdAt: date, updatedAt: date,
network_type
}
if(isTribe) {
if (isTribe) {
msg.senderAlias = sender_alias
msg.senderPic = sender_photo_url
}
@ -490,9 +492,9 @@ export async function receiveGroupLeave(payload) {
})
}
async function validateTribeOwner(chat_uuid: string, pubkey: string){
async function validateTribeOwner(chat_uuid: string, pubkey: string) {
const verifiedOwnerPubkey = await tribes.verifySignedTimestamp(chat_uuid)
if(verifiedOwnerPubkey===pubkey){
if (verifiedOwnerPubkey === pubkey) {
return true
}
return false
@ -501,10 +503,10 @@ export async function receiveGroupCreateOrInvite(payload) {
const { sender_pub_key, chat_members, chat_name, chat_uuid, chat_type, chat_host, chat_key } = await helpers.parseReceiveParams(payload)
// maybe this just needs to move to adding tribe owner ChatMember?
const isTribe = chat_type===constants.chat_types.tribe
if(isTribe){ // must be sent by tribe owner?????
const isTribe = chat_type === constants.chat_types.tribe
if (isTribe) { // must be sent by tribe owner?????
const validOwner = await validateTribeOwner(chat_uuid, sender_pub_key)
if(!validOwner) return console.log('[tribes] invalid uuid signature!')
if (!validOwner) return console.log('[tribes] invalid uuid signature!')
}
const contacts: any[] = []
@ -512,32 +514,32 @@ export async function receiveGroupCreateOrInvite(payload) {
for (let [pubkey, member] of Object.entries(chat_members)) {
const contact = await models.Contact.findOne({ where: { publicKey: pubkey } })
let addContact = false
if (chat_type===constants.chat_types.group && member && member.key) {
if (chat_type === constants.chat_types.group && member && member.key) {
addContact = true
} else if(isTribe && member && member.role) {
if (member.role===constants.chat_roles.owner || member.role===constants.chat_roles.admin || member.role===constants.chat_roles.mod){
} else if (isTribe && member && member.role) {
if (member.role === constants.chat_roles.owner || member.role === constants.chat_roles.admin || member.role === constants.chat_roles.mod) {
addContact = true
}
}
if(addContact){
if (addContact) {
if (!contact) {
const createdContact = await models.Contact.create({
publicKey: pubkey,
contactKey: member.key,
alias: member.alias||'Unknown',
alias: member.alias || 'Unknown',
status: 1,
fromGroup: true,
})
contacts.push({...createdContact.dataValues,role:member.role})
contacts.push({ ...createdContact.dataValues, role: member.role })
newContacts.push(createdContact.dataValues)
} else {
contacts.push({...contact.dataValues,role:member.role})
contacts.push({ ...contact.dataValues, role: member.role })
}
}
}
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const contactIds = contacts.map(c=>c.id)
if(!contactIds.includes(owner.id)) contactIds.push(owner.id)
const contactIds = contacts.map(c => c.id)
if (!contactIds.includes(owner.id)) contactIds.push(owner.id)
// make chat
let date = new Date()
date.setMilliseconds(0)
@ -552,12 +554,12 @@ export async function receiveGroupCreateOrInvite(payload) {
...chat_key && { groupKey: chat_key },
})
if(isTribe){ // IF TRIBE, ADD TO XREF
contacts.forEach(c=>{
if (isTribe) { // IF TRIBE, ADD TO XREF
contacts.forEach(c => {
models.ChatMember.create({
contactId: c.id,
chatId: chat.id,
role: c.role||constants.chat_roles.reader,
role: c.role || constants.chat_roles.reader,
lastActive: date,
status: constants.chat_statuses.approved
})
@ -578,7 +580,7 @@ export async function receiveGroupCreateOrInvite(payload) {
...chat.dataValues, members: {
[owner.publicKey]: {
key: owner.contactKey,
alias: owner.alias||''
alias: owner.alias || ''
}
}
},
@ -617,7 +619,7 @@ function createGroupChatParams(owner, contactIds, members, name) {
async function asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
await callback(array[index], index, array);
}
}

19
src/controllers/confirmations.ts

@ -6,10 +6,23 @@ import * as network from '../network'
import constants from '../constants'
import { success, failure200 } from '../utils/res'
export function sendConfirmation({ chat, sender, msg_id }) {
if (!msg_id) return
/*
if in tribe: dont send
UNLESS tribe admin:
then send only to the og sender
*/
export function sendConfirmation({ chat, sender, msg_id, receiver }:{chat:any, sender:any, msg_id:number, receiver?:any}) {
if (!msg_id || !chat || !sender) return
let theChat = chat
const isTribe = chat.type === constants.chat_types.tribe
const isTribeOwner = isTribe && (sender && sender.publicKey) === (chat && chat.ownerPubkey)
if(isTribe && !isTribeOwner) return // DONT SEND IF NORMAL MEMBER
if(isTribeOwner && (receiver && receiver.id)) {
theChat = { ...(chat.dataValues||chat), contactIds:[receiver.id] }
}
network.sendMessage({
chat,
chat: theChat,
sender,
message: { id: msg_id },
type: constants.message_types.confirmation,

148
src/controllers/contacts.ts

@ -1,21 +1,23 @@
import {models} from '../models'
import { models } from '../models'
import * as crypto from 'crypto'
import * as socket from '../utils/socket'
import * as helpers from '../helpers'
import * as jsonUtils from '../utils/json'
import {success, failure} from '../utils/res'
import { success, failure } from '../utils/res'
import password from '../utils/password'
import { Op } from 'sequelize'
import constants from '../constants'
export const getContacts = async (req, res) => {
const contacts = await models.Contact.findAll({ where:{deleted:false}, raw: true })
const contacts = await models.Contact.findAll({ where: { deleted: false }, raw: true })
const invites = await models.Invite.findAll({ raw: true })
const chats = await models.Chat.findAll({ where:{deleted:false}, raw: true })
const chats = await models.Chat.findAll({ where: { deleted: false }, raw: true })
const subscriptions = await models.Subscription.findAll({ raw: true })
const pendingMembers = await models.ChatMember.findAll({where:{
status: constants.chat_statuses.pending
}})
const pendingMembers = await models.ChatMember.findAll({
where: {
status: constants.chat_statuses.pending
}
})
const contactsResponse = contacts.map(contact => {
let contactJson = jsonUtils.contactToJson(contact)
@ -24,16 +26,16 @@ export const getContacts = async (req, res) => {
if (invite) {
contactJson.invite = jsonUtils.inviteToJson(invite)
}
return contactJson
});
const subsResponse = subscriptions.map(s=> jsonUtils.subscriptionToJson(s,null))
const chatsResponse = chats.map(chat=> {
const theChat = chat.dataValues||chat
if(!pendingMembers) return jsonUtils.chatToJson(theChat)
const membs = pendingMembers.filter(m=>m.chatId===chat.id) || []
theChat.pendingContactIds = membs.map(m=>m.contactId)
const subsResponse = subscriptions.map(s => jsonUtils.subscriptionToJson(s, null))
const chatsResponse = chats.map(chat => {
const theChat = chat.dataValues || chat
if (!pendingMembers) return jsonUtils.chatToJson(theChat)
const membs = pendingMembers.filter(m => m.chatId === chat.id) || []
theChat.pendingContactIds = membs.map(m => m.contactId)
return jsonUtils.chatToJson(theChat)
})
@ -47,11 +49,11 @@ export const getContacts = async (req, res) => {
export const generateToken = async (req, res) => {
console.log('=> generateToken called', { body: req.body, params: req.params, query: req.query })
const owner = await models.Contact.findOne({ where: { isOwner: true, authToken: null }})
const owner = await models.Contact.findOne({ where: { isOwner: true, authToken: null } })
const pwd = password
if(process.env.USE_PASSWORD==='true'){
if(pwd!==req.query.pwd) {
if (process.env.USE_PASSWORD === 'true') {
if (pwd !== req.query.pwd) {
failure(res, 'Wrong Password')
return
} else {
@ -67,9 +69,9 @@ export const generateToken = async (req, res) => {
owner.update({ authToken: hash })
success(res,{})
success(res, {})
} else {
failure(res,{})
failure(res, {})
}
}
@ -78,30 +80,30 @@ export const updateContact = async (req, res) => {
let attrs = extractAttrs(req.body)
const contact = await models.Contact.findOne({ where: { id: req.params.id }})
if(!contact) {
const contact = await models.Contact.findOne({ where: { id: req.params.id } })
if (!contact) {
return failure(res, 'no contact found')
}
const contactKeyChanged = attrs['contact_key'] && contact.contactKey!==attrs['contact_key']
const aliasChanged = attrs['alias'] && contact.alias!==attrs['alias']
const photoChanged = attrs['photo_url'] && contact.photoUrl!==attrs['photo_url']
const contactKeyChanged = attrs['contact_key'] && contact.contactKey !== attrs['contact_key']
const aliasChanged = attrs['alias'] && contact.alias !== attrs['alias']
const photoChanged = attrs['photo_url'] && contact.photoUrl !== attrs['photo_url']
// update contact
const owner = await contact.update(jsonUtils.jsonToContact(attrs))
success(res, jsonUtils.contactToJson(owner))
if (!contact.isOwner) return
if (!contact.isOwner) return
if (!(attrs['contact_key'] || attrs['alias'] || attrs['photo_url'])) {
return // skip if not at least one of these
}
if(!(contactKeyChanged || aliasChanged || photoChanged)) {
if (!(contactKeyChanged || aliasChanged || photoChanged)) {
return
}
// send updated owner info to others!
const contactIds = await models.Contact.findAll({where:{deleted:false}})
.filter(c=> c.id!==1 && c.publicKey).map(c=> c.id)
const contactIds = await models.Contact.findAll({ where: { deleted: false } })
.filter(c => c.id !== 1 && c.publicKey).map(c => c.id)
if (contactIds.length == 0) return
console.log("=> send contact_key to", contactIds)
@ -115,8 +117,8 @@ export const updateContact = async (req, res) => {
export const exchangeKeys = async (req, res) => {
console.log('=> exchangeKeys called', { body: req.body, params: req.params, query: req.query })
const contact = await models.Contact.findOne({ where: { id: req.params.id }})
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const contact = await models.Contact.findOne({ where: { id: req.params.id } })
const owner = await models.Contact.findOne({ where: { isOwner: true } })
success(res, jsonUtils.contactToJson(contact))
@ -132,17 +134,17 @@ export const createContact = async (req, res) => {
let attrs = extractAttrs(req.body)
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const existing = attrs['public_key'] && await models.Contact.findOne({where:{publicKey:attrs['public_key']}})
if(existing) {
const updateObj:{[k:string]:any} = {fromGroup:false}
if(attrs['alias']) updateObj.alias = attrs['alias']
const existing = attrs['public_key'] && await models.Contact.findOne({ where: { publicKey: attrs['public_key'] } })
if (existing) {
const updateObj: { [k: string]: any } = { fromGroup: false }
if (attrs['alias']) updateObj.alias = attrs['alias']
await existing.update(updateObj)
return success(res, jsonUtils.contactToJson(existing))
}
if(attrs['public_key'].length>66) attrs['public_key'] = attrs['public_key'].substring(0,66)
if (attrs['public_key'].length > 66) attrs['public_key'] = attrs['public_key'].substring(0, 66)
const createdContact = await models.Contact.create(attrs)
const contact = await createdContact.update(jsonUtils.jsonToContact(attrs))
@ -156,49 +158,49 @@ export const createContact = async (req, res) => {
}
export const deleteContact = async (req, res) => {
const id = parseInt(req.params.id||'0')
if(!id || id===1) {
const id = parseInt(req.params.id || '0')
if (!id || id === 1) {
failure(res, 'Cannot delete self')
return
}
const contact = await models.Contact.findOne({ where: { id } })
if(!contact) return
if (!contact) return
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const tribesImAdminOf = await models.Chat.findAll({where:{ownerPubkey:owner.publicKey}})
const tribesIdArray = tribesImAdminOf && tribesImAdminOf.length && tribesImAdminOf.map(t=>t.id)
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const tribesImAdminOf = await models.Chat.findAll({ where: { ownerPubkey: owner.publicKey } })
const tribesIdArray = tribesImAdminOf && tribesImAdminOf.length && tribesImAdminOf.map(t => t.id)
let okToDelete = true
if(tribesIdArray && tribesIdArray.length) {
const thisContactMembers = await models.ChatMember.findAll({where:{contactId:id,chatId:{[Op.in]:tribesIdArray}}})
if(thisContactMembers&&thisContactMembers.length){
if (tribesIdArray && tribesIdArray.length) {
const thisContactMembers = await models.ChatMember.findAll({ where: { contactId: id, chatId: { [Op.in]: tribesIdArray } } })
if (thisContactMembers && thisContactMembers.length) {
// IS A MEMBER! dont delete, instead just set from_group=true
okToDelete=false
await contact.update({fromGroup:true})
okToDelete = false
await contact.update({ fromGroup: true })
}
}
if(okToDelete){
if (okToDelete) {
await contact.update({
deleted:true,
publicKey:'',
photoUrl:'',
alias:'Unknown',
contactKey:'',
deleted: true,
publicKey: '',
photoUrl: '',
alias: 'Unknown',
contactKey: '',
})
}
// find and destroy chat & messages
const chats = await models.Chat.findAll({where:{deleted:false}})
const chats = await models.Chat.findAll({ where: { deleted: false } })
chats.map(async chat => {
if (chat.type === constants.chat_types.conversation) {
const contactIds = JSON.parse(chat.contactIds)
if (contactIds.includes(id)) {
await chat.update({
deleted: true,
uuid:'',
contactIds:'[]',
name:''
deleted: true,
uuid: '',
contactIds: '[]',
name: ''
})
await models.Message.destroy({ where: { chatId: chat.id } })
}
@ -219,20 +221,20 @@ export const receiveContactKey = async (payload) => {
const sender_alias = dat.sender.alias || 'Unknown'
const sender_photo_url = dat.sender.photo_url
if(!sender_pub_key) {
if (!sender_pub_key) {
return console.log("no pubkey!")
}
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key, status: constants.contact_statuses.confirmed }})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key, status: constants.contact_statuses.confirmed } })
let contactKeyChanged = true // ???????
if (sender_contact_key && sender) {
if(sender_contact_key!==sender.contactKey) {
if (sender_contact_key !== sender.contactKey) {
contactKeyChanged = true
}
const objToUpdate:{[k:string]:any} = {contactKey: sender_contact_key}
if(sender_alias) objToUpdate.alias = sender_alias
if(sender_photo_url) objToUpdate.photoUrl = sender_photo_url
const objToUpdate: { [k: string]: any } = { contactKey: sender_contact_key }
if (sender_alias) objToUpdate.alias = sender_alias
if (sender_photo_url) objToUpdate.photoUrl = sender_photo_url
await sender.update(objToUpdate)
socket.sendJson({
@ -243,7 +245,7 @@ export const receiveContactKey = async (payload) => {
console.log("DID NOT FIND SENDER")
}
if(contactKeyChanged) {
if (contactKeyChanged) {
helpers.sendContactKeys({
contactPubKey: sender_pub_key,
sender: owner,
@ -253,7 +255,7 @@ export const receiveContactKey = async (payload) => {
}
export const receiveConfirmContactKey = async (payload) => {
console.log(`=> confirm contact key for ${payload.sender&&payload.sender.pub_key}`, JSON.stringify(payload))
console.log(`=> confirm contact key for ${payload.sender && payload.sender.pub_key}`, JSON.stringify(payload))
const dat = payload.content || payload
const sender_pub_key = dat.sender.pub_key
@ -261,15 +263,15 @@ export const receiveConfirmContactKey = async (payload) => {
const sender_alias = dat.sender.alias || 'Unknown'
const sender_photo_url = dat.sender.photo_url
if(!sender_pub_key) {
if (!sender_pub_key) {
return console.log("no pubkey!")
}
const sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key, status: constants.contact_statuses.confirmed }})
const sender = await models.Contact.findOne({ where: { publicKey: sender_pub_key, status: constants.contact_statuses.confirmed } })
if (sender_contact_key && sender) {
const objToUpdate:{[k:string]:any} = {contactKey: sender_contact_key}
if(sender_alias) objToUpdate.alias = sender_alias
if(sender_photo_url) objToUpdate.photoUrl = sender_photo_url
const objToUpdate: { [k: string]: any } = { contactKey: sender_contact_key }
if (sender_alias) objToUpdate.alias = sender_alias
if (sender_photo_url) objToUpdate.photoUrl = sender_photo_url
await sender.update(objToUpdate)
socket.sendJson({

18
src/controllers/details.ts

@ -94,14 +94,16 @@ export const getBalance = async (req, res) => {
const channelList = await listChannels()
const { channels } = channelList
const reserve = channels.reduce((a, chan) => a + parseInt(chan.local_chan_reserve_sat), 0)
res.json({ success: true, response:<BalanceRes>{
reserve,
full_balance: parseInt(response.balance),
balance: parseInt(response.balance) - reserve,
pending_open_balance: parseInt(response.pending_open_balance),
} });
} catch(e) {
console.log("ERROR getBalance",e)
res.json({
success: true, response: <BalanceRes>{
reserve,
full_balance: parseInt(response.balance),
balance: parseInt(response.balance) - reserve,
pending_open_balance: parseInt(response.pending_open_balance),
}
});
} catch (e) {
console.log("ERROR getBalance", e)
res.json({ success: false });
}
res.end();

50
src/controllers/index.ts

@ -1,4 +1,4 @@
import {models} from '../models'
import { models } from '../models'
import * as chats from './chats'
import * as chatTribes from './chatTribes'
import * as bots from './bots'
@ -13,22 +13,22 @@ import * as subcriptions from './subscriptions'
import * as uploads from './uploads'
import * as confirmations from './confirmations'
import * as actions from './api'
import {checkTag} from '../utils/gitinfo'
import { checkTag } from '../utils/gitinfo'
import * as timers from '../utils/timers'
import * as builtInBots from '../builtin'
import constants from '../constants'
import * as feed from './feed'
export async function set(app) {
builtInBots.init()
if(models && models.Subscription){
if (models && models.Subscription) {
subcriptions.initializeCronJobs()
}
try{
try {
await media.cycleMediaToken()
} catch(e) {
} catch (e) {
console.log('=> could not auth with media server', e.message)
}
@ -73,7 +73,7 @@ export async function set(app) {
app.get('/subscriptions/contact/:contactId', subcriptions.getSubscriptionsForContact)
app.put('/subscription/:id/pause', subcriptions.pauseSubscription)
app.put('/subscription/:id/restart', subcriptions.restartSubscription)
app.post('/attachment', media.sendAttachmentMessage)
app.post('/purchase', media.purchase)
app.get('/signer/:challenge', media.signer)
@ -103,18 +103,18 @@ export async function set(app) {
app.get('/healthcheck', confirmations.healthcheck)
app.get('/version', async function(req,res) {
app.get('/version', async function (req, res) {
const version = await checkTag()
res.send({version})
res.send({ version })
})
app.get('/latest', async function(req,res) {
app.get('/latest', async function (req, res) {
const lasts = await models.Message.findAll({
limit: 1,
order: [[ 'createdAt', 'DESC' ]]
order: [['createdAt', 'DESC']]
})
const last = lasts && lasts[0]
if(!last) {
if (!last) {
res.status(404).send('Not found');
} else {
res.status(200).send(last.createdAt)
@ -125,19 +125,19 @@ export async function set(app) {
const msgtypes = constants.message_types
export const ACTIONS = {
[msgtypes.contact_key]: contacts.receiveContactKey,
[msgtypes.contact_key_confirmation]: contacts.receiveConfirmContactKey,
[msgtypes.message]: messages.receiveMessage,
[msgtypes.invoice]: invoices.receiveInvoice,
[msgtypes.direct_payment]: payments.receivePayment,
[msgtypes.confirmation]: confirmations.receiveConfirmation,
[msgtypes.attachment]: media.receiveAttachment,
[msgtypes.purchase]: media.receivePurchase,
[msgtypes.purchase_accept]: media.receivePurchaseAccept,
[msgtypes.purchase_deny]: media.receivePurchaseDeny,
[msgtypes.group_create]: chats.receiveGroupCreateOrInvite,
[msgtypes.group_invite]: chats.receiveGroupCreateOrInvite,
[msgtypes.group_join]: chats.receiveGroupJoin,
[msgtypes.contact_key]: contacts.receiveContactKey,
[msgtypes.contact_key_confirmation]: contacts.receiveConfirmContactKey,
[msgtypes.message]: messages.receiveMessage,
[msgtypes.invoice]: invoices.receiveInvoice,
[msgtypes.direct_payment]: payments.receivePayment,
[msgtypes.confirmation]: confirmations.receiveConfirmation,
[msgtypes.attachment]: media.receiveAttachment,
[msgtypes.purchase]: media.receivePurchase,
[msgtypes.purchase_accept]: media.receivePurchaseAccept,
[msgtypes.purchase_deny]: media.receivePurchaseDeny,
[msgtypes.group_create]: chats.receiveGroupCreateOrInvite,
[msgtypes.group_invite]: chats.receiveGroupCreateOrInvite,
[msgtypes.group_join]: chats.receiveGroupJoin,
[msgtypes.group_leave]: chats.receiveGroupLeave,
[msgtypes.group_kick]: chats.receiveGroupKick,
[msgtypes.delete]: messages.receiveDeleteMessage,

32
src/controllers/invites.ts

@ -1,12 +1,12 @@
import {models} from '../models'
import { models } from '../models'
import * as crypto from 'crypto'
import * as jsonUtils from '../utils/json'
import {finishInviteInHub, createInviteInHub, payInviteInvoice} from '../hub'
import { finishInviteInHub, createInviteInHub, payInviteInvoice } from '../hub'
export const finishInvite = async (req, res) => {
const {
invite_string
} = req.body
} = req.body
const params = {
invite: {
pin: invite_string
@ -23,8 +23,8 @@ export const finishInvite = async (req, res) => {
res.json({ success: false })
res.end()
}
finishInviteInHub(params, onSuccess, onFailure)
finishInviteInHub(params, onSuccess, onFailure)
}
export const payInvite = async (req, res) => {
@ -33,7 +33,7 @@ export const payInvite = async (req, res) => {
// }
const invite_string = req.params['invite_string']
const dbInvite = await models.Invite.findOne({ where: { inviteString: invite_string }})
const dbInvite = await models.Invite.findOne({ where: { inviteString: invite_string } })
const onSuccess = async (response) => {
// const invite = response.object
@ -41,10 +41,10 @@ export const payInvite = async (req, res) => {
// if (dbInvite.status != invite.invite_status) {
// dbInvite.update({ status: invite.invite_status })
// }
if(response.payment_error) {
console.log("=> payInvite ERROR",response.payment_error)
if (response.payment_error) {
console.log("=> payInvite ERROR", response.payment_error)
res.status(200)
res.json({success:false, error:response.payment_error})
res.json({ success: false, error: response.payment_error })
res.end()
} else {
res.status(200)
@ -54,12 +54,12 @@ export const payInvite = async (req, res) => {
}
const onFailure = (response) => {
console.log("=> payInvite ERROR",response)
console.log("=> payInvite ERROR", response)
res.status(200)
res.json({ success: false })
res.end()
}
// payInviteInHub(invite_string, params, onSuccess, onFailure)
payInviteInvoice(dbInvite.invoice, onSuccess, onFailure)
}
@ -68,9 +68,9 @@ export const createInvite = async (req, res) => {
const {
nickname,
welcome_message
} = req.body
const owner = await models.Contact.findOne({ where: { isOwner: true }})
} = req.body
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const params = {
invite: {
@ -113,7 +113,7 @@ export const createInvite = async (req, res) => {
res.json(response)
res.end()
}
createInviteInHub(params, onSuccess, onFailure)
createInviteInHub(params, onSuccess, onFailure)
}

34
src/controllers/invoices.ts

@ -6,13 +6,13 @@ import * as decodeUtils from '../utils/decode'
import * as helpers from '../helpers'
import { sendNotification } from '../hub'
import { success } from '../utils/res'
import {sendConfirmation} from './confirmations'
import { sendConfirmation } from './confirmations'
import * as network from '../network'
import * as short from 'short-uuid'
import constants from '../constants'
function stripLightningPrefix(s){
if(s.toLowerCase().startsWith('lightning:')) return s.substring(10)
function stripLightningPrefix(s) {
if (s.toLowerCase().startsWith('lightning:')) return s.substring(10)
return s
}
@ -20,10 +20,10 @@ export const payInvoice = async (req, res) => {
const lightning = await loadLightning()
const payment_request = stripLightningPrefix(req.body.payment_request)
if(!payment_request){
if (!payment_request) {
console.log('[pay invoice] "payment_request" is empty')
res.status(400)
res.json({success:false, error:'payment_request is empty'})
res.json({ success: false, error: 'payment_request is empty' })
res.end()
return
}
@ -72,7 +72,7 @@ export const payInvoice = async (req, res) => {
};
async function anonymousInvoice(res, payment_request:string){
async function anonymousInvoice(res, payment_request: string) {
const { memo, sat, msat, paymentHash, invoiceDate } = decodePaymentRequest(payment_request)
var date = new Date();
date.setMilliseconds(0)
@ -113,11 +113,11 @@ export const createInvoice = async (req, res) => {
expiry,
} = req.body;
var request:{[k:string]:any} = {
var request: { [k: string]: any } = {
value: amount,
memo: remote_memo || memo
}
if(expiry) request.expiry = expiry
if (expiry) request.expiry = expiry
if (amount == null) {
res.status(200);
@ -221,7 +221,7 @@ export const receiveInvoice = async (payload) => {
const total_spent = 1
const dat = payload.content || payload
const payment_request = dat.message.invoice
const network_type = dat.network_type||0
const network_type = dat.network_type || 0
var date = new Date();
date.setMilliseconds(0)
@ -232,7 +232,7 @@ export const receiveInvoice = async (payload) => {
const { memo, sat, msat, paymentHash, invoiceDate, expirationSeconds } = decodePaymentRequest(payment_request)
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: msg_uuid,
type: constants.message_types.invoice,
@ -250,11 +250,11 @@ export const receiveInvoice = async (payload) => {
updatedAt: date,
network_type: network_type,
}
const isTribe = chat_type===constants.chat_types.tribe
if(isTribe) {
const isTribe = chat_type === constants.chat_types.tribe
if (isTribe) {
msg.senderAlias = sender_alias
msg.senderPic = sender_photo_url
}
}
const message = await models.Message.create(msg)
console.log('received keysend invoice message', message.id)
@ -263,10 +263,10 @@ export const receiveInvoice = async (payload) => {
response: jsonUtils.messageToJson(message, chat, sender)
})
sendNotification(chat, msg.senderAlias||sender.alias, 'message')
sendNotification(chat, msg.senderAlias || sender.alias, 'message')
const theChat = {...chat.dataValues, contactIds:[sender.id]}
sendConfirmation({ chat:theChat, sender: owner, msg_id })
const theChat = { ...chat.dataValues, contactIds: [sender.id] }
sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender })
}
// lnd invoice stuff
@ -279,7 +279,7 @@ function decodePaymentRequest(paymentRequest) {
for (var i = 0; i < decodedPaymentRequest.data.tags.length; i++) {
let tag = decodedPaymentRequest.data.tags[i];
if(tag) {
if (tag) {
if (tag.description == 'payment_hash') {
paymentHash = tag.value;
} else if (tag.description == 'description') {

216
src/controllers/media.ts

@ -1,4 +1,4 @@
import {models} from '../models'
import { models } from '../models'
import * as socket from '../utils/socket'
import * as jsonUtils from '../utils/json'
import * as resUtils from '../utils/res'
@ -7,11 +7,11 @@ import { sendNotification } from '../hub'
import { signBuffer, verifyMessage } from '../utils/lightning'
import * as rp from 'request-promise'
import { loadLightning } from '../utils/lightning'
import {parseLDAT, tokenFromTerms, urlBase64FromBytes, testLDAT} from '../utils/ldat'
import {CronJob} from 'cron'
import { parseLDAT, tokenFromTerms, urlBase64FromBytes, testLDAT } from '../utils/ldat'
import { CronJob } from 'cron'
import * as zbase32 from '../utils/zbase32'
import * as schemas from './schemas'
import {sendConfirmation} from './confirmations'
import { sendConfirmation } from './confirmations'
import * as path from 'path'
import * as network from '../network'
import * as meme from '../utils/meme'
@ -19,7 +19,7 @@ import * as short from 'short-uuid'
import constants from '../constants'
const env = process.env.NODE_ENV || 'development';
const config = require(path.join(__dirname,'../../config/app.json'))[env]
const config = require(path.join(__dirname, '../../config/app.json'))[env]
/*
@ -45,7 +45,7 @@ export const sendAttachmentMessage = async (req, res) => {
// } catch(e) {
// return resUtils.failure(res, e.message)
// }
const {
chat_id,
contact_id,
@ -64,7 +64,7 @@ export const sendAttachmentMessage = async (req, res) => {
console.log('[send attachment]', req.body)
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const chat = await helpers.findOrCreateChat({
chat_id,
owner_id: owner.id,
@ -72,34 +72,34 @@ export const sendAttachmentMessage = async (req, res) => {
})
let TTL = ttl
if(ttl) {
if (ttl) {
TTL = parseInt(ttl)
}
if(!TTL) TTL = 31536000 // default year
if (!TTL) TTL = 31536000 // default year
const amt = price||0
const amt = price || 0
// generate media token for self!
const myMediaToken = await tokenFromTerms({
muid, ttl:TTL, host:'',
muid, ttl: TTL, host: '',
pubkey: owner.publicKey,
meta:{...amt && {amt}, ttl}
meta: { ...amt && { amt }, ttl }
})
const date = new Date();
date.setMilliseconds(0)
const myMediaKey = (media_key_map && media_key_map[owner.id]) || ''
const mediaType = media_type || ''
const remoteMessageContent = remote_text_map?JSON.stringify(remote_text_map) : remote_text
const remoteMessageContent = remote_text_map ? JSON.stringify(remote_text_map) : remote_text
const uuid = short.generate()
const mm:{[k:string]:any} = {
const mm: { [k: string]: any } = {
chatId: chat.id,
uuid: uuid,
sender: owner.id,
type: constants.message_types.attachment,
status: constants.statuses.pending,
amount: amount||0,
messageContent: text||file_name||'',
amount: amount || 0,
messageContent: text || file_name || '',
remoteMessageContent,
mediaToken: myMediaToken,
mediaKey: myMediaKey,
@ -108,50 +108,50 @@ export const sendAttachmentMessage = async (req, res) => {
createdAt: date,
updatedAt: date
}
if(reply_uuid) mm.replyUuid=reply_uuid
if (reply_uuid) mm.replyUuid = reply_uuid
const message = await models.Message.create(mm)
console.log('saved attachment msg from me',message.id)
console.log('saved attachment msg from me', message.id)
saveMediaKeys(muid, media_key_map, chat.id, message.id, mediaType)
const mediaTerms: {[k:string]:any} = {
muid, ttl:TTL,
meta:{...amt && {amt}},
const mediaTerms: { [k: string]: any } = {
muid, ttl: TTL,
meta: { ...amt && { amt } },
skipSigning: amt ? true : false // only sign if its free
}
const msg: {[k:string]:any} = {
const msg: { [k: string]: any } = {
mediaTerms, // this gets converted to mediaToken
id: message.id,
uuid: uuid,
content: remote_text_map||remote_text||text||file_name||'',
content: remote_text_map || remote_text || text || file_name || '',
mediaKey: media_key_map,
mediaType: mediaType,
}
if(reply_uuid) msg.replyUuid=reply_uuid
if (reply_uuid) msg.replyUuid = reply_uuid
network.sendMessage({
chat: chat,
sender: owner,
type: constants.message_types.attachment,
amount: amount||0,
amount: amount || 0,
message: msg,
success: async (data) => {
console.log('attachment sent', { data })
resUtils.success(res, jsonUtils.messageToJson(message, chat))
},
failure: error=> resUtils.failure(res, error.message),
failure: error => resUtils.failure(res, error.message),
})
}
export function saveMediaKeys(muid, mediaKeyMap, chatId, messageId, mediaType){
if (typeof mediaKeyMap!=='object'){
export function saveMediaKeys(muid, mediaKeyMap, chatId, messageId, mediaType) {
if (typeof mediaKeyMap !== 'object') {
console.log('wrong type for mediaKeyMap')
return
}
var date = new Date();
date.setMilliseconds(0)
for (let [contactId, key] of Object.entries(mediaKeyMap)) {
if(parseInt(contactId)!==1) {
if (parseInt(contactId) !== 1) {
const receiverID = parseInt(contactId) || 0 // 0 is for a tribe
models.MediaKey.create({
muid, chatId, key, messageId,
@ -175,11 +175,11 @@ export const purchase = async (req, res) => {
try {
schemas.purchase.validateSync(req.body)
} catch(e) {
} catch (e) {
return resUtils.failure(res, e.message)
}
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const chat = await helpers.findOrCreateChat({
chat_id,
owner_id: owner.id,
@ -191,7 +191,7 @@ export const purchase = async (req, res) => {
uuid: short.generate(),
sender: owner.id,
type: constants.message_types.purchase,
amount: amount||0,
amount: amount || 0,
mediaToken: media_token,
date: date,
createdAt: date,
@ -199,12 +199,12 @@ export const purchase = async (req, res) => {
network_type: constants.network_types.lightning
})
const msg={
mediaToken:media_token, id:message.id, uuid:message.uuid,
const msg = {
mediaToken: media_token, id: message.id, uuid: message.uuid,
purchaser: owner.id, // for tribe, knows who sent
}
network.sendMessage({
chat: {...chat.dataValues, contactIds:[contact_id]},
chat: { ...chat.dataValues, contactIds: [contact_id] },
sender: owner,
type: constants.message_types.purchase,
realSatsContactId: contact_id, // ALWAYS will be keysend, so doesnt matter if tribe owner or not
@ -214,7 +214,7 @@ export const purchase = async (req, res) => {
console.log('purchase sent!')
resUtils.success(res, jsonUtils.messageToJson(message, chat))
},
failure: error=> resUtils.failure(res, error.message),
failure: error => resUtils.failure(res, error.message),
})
}
@ -226,17 +226,17 @@ export const receivePurchase = async (payload) => {
var date = new Date();
date.setMilliseconds(0)
const {owner, sender, chat, amount, mediaToken, msg_uuid, chat_type, skip_payment_processing, purchaser_id, network_type} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
const { owner, sender, chat, amount, mediaToken, msg_uuid, chat_type, skip_payment_processing, purchaser_id, network_type } = await helpers.parseReceiveParams(payload)
if (!owner || !sender || !chat) {
return console.log('=> group chat not found!')
}
const message = await models.Message.create({
chatId: chat.id,
uuid: msg_uuid,
sender: sender.id,
type: constants.message_types.purchase,
amount: amount||0,
amount: amount || 0,
mediaToken: mediaToken,
date: date,
createdAt: date,
@ -248,55 +248,57 @@ export const receivePurchase = async (payload) => {
response: jsonUtils.messageToJson(message, chat, sender)
})
const isTribe = chat_type===constants.chat_types.tribe
const isTribe = chat_type === constants.chat_types.tribe
// if sats forwarded from tribe owner, for the >1 time
// dont need to send back token, because admin already has it
if(isTribe && skip_payment_processing) {
if (isTribe && skip_payment_processing) {
return console.log('=> skip payment processing')
}
const muid = mediaToken && mediaToken.split('.').length && mediaToken.split('.')[1]
if(!muid){
if (!muid) {
return console.log('no muid')
}
const ogMessage = await models.Message.findOne({
where:{mediaToken}
where: { mediaToken }
})
if (!ogMessage){
if (!ogMessage) {
return console.log('no original message')
}
// find mediaKey for who sent
const mediaKey = await models.MediaKey.findOne({where:{
muid, receiver: isTribe?0:sender.id,
}})
const mediaKey = await models.MediaKey.findOne({
where: {
muid, receiver: isTribe ? 0 : sender.id,
}
})
// console.log('mediaKey found!',mediaKey.dataValues)
if(!mediaKey) return // this is from another person (admin is forwarding)
if (!mediaKey) return // this is from another person (admin is forwarding)
const terms = parseLDAT(mediaToken)
// get info
let TTL = terms.meta && terms.meta.ttl
let price = terms.meta && terms.meta.amt
if(!TTL || !price){
if (!TTL || !price) {
const media = await getMediaInfo(muid)
console.log("GOT MEDIA", media)
if(media) {
if (media) {
TTL = media.ttl && parseInt(media.ttl)
price = media.price
}
if(!TTL) TTL = 31536000
if(!price) price = 0
if (!TTL) TTL = 31536000
if (!price) price = 0
}
if (amount < price) { // didnt pay enough
return network.sendMessage({ // "purchase_deny"
chat: {...chat.dataValues, contactIds:[sender.id]}, // only send back to sender
chat: { ...chat.dataValues, contactIds: [sender.id] }, // only send back to sender
sender: owner,
amount: amount,
type: constants.message_types.purchase_deny,
message: {amount,content:'Payment Denied',mediaToken},
message: { amount, content: 'Payment Denied', mediaToken },
success: async (data) => {
console.log('purchase_deny sent')
const denyMsg = await models.Message.create({
@ -311,23 +313,23 @@ export const receivePurchase = async (payload) => {
response: jsonUtils.messageToJson(denyMsg, chat, sender)
})
},
failure: error=> console.log('=> couldnt send purcahse deny', error),
failure: error => console.log('=> couldnt send purcahse deny', error),
})
}
const theMediaToken = await tokenFromTerms({
muid, ttl: TTL, host:'',
meta: {amt:amount},
muid, ttl: TTL, host: '',
meta: { amt: amount },
pubkey: sender.publicKey,
})
const msgToSend:{[k:string]:any}={
const msgToSend: { [k: string]: any } = {
mediaToken: theMediaToken,
mediaKey: mediaKey.key,
mediaType: ogMessage.mediaType,
}
if(purchaser_id) msgToSend.purchaser=purchaser_id
if (purchaser_id) msgToSend.purchaser = purchaser_id
network.sendMessage({
chat: {...chat.dataValues, contactIds:[sender.id]}, // only to sender
chat: { ...chat.dataValues, contactIds: [sender.id] }, // only to sender
sender: owner,
type: constants.message_types.purchase_accept,
message: msgToSend,
@ -345,7 +347,7 @@ export const receivePurchase = async (payload) => {
response: jsonUtils.messageToJson(acceptMsg, chat, sender)
})
},
failure: error=> console.log('=> couldnt send purchase accept', error),
failure: error => console.log('=> couldnt send purchase accept', error),
})
}
@ -354,15 +356,15 @@ export const receivePurchaseAccept = async (payload) => {
var date = new Date();
date.setMilliseconds(0)
const {owner, sender, chat, mediaToken, mediaKey, mediaType, originalMuid, network_type} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
const { owner, sender, chat, mediaToken, mediaKey, mediaType, originalMuid, network_type } = await helpers.parseReceiveParams(payload)
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
const termsArray = mediaToken.split('.')
// const host = termsArray[0]
const muid = termsArray[1]
if(!muid){
if (!muid) {
return console.log('wtf no muid')
}
// const attachmentMessage = await models.Message.findOne({where:{
@ -383,7 +385,7 @@ export const receivePurchaseAccept = async (payload) => {
mediaToken,
mediaKey,
mediaType,
originalMuid:originalMuid||'',
originalMuid: originalMuid || '',
date: date,
createdAt: date,
updatedAt: date,
@ -399,8 +401,8 @@ export const receivePurchaseDeny = async (payload) => {
console.log('=> receivePurchaseDeny')
var date = new Date()
date.setMilliseconds(0)
const {owner, sender, chat, amount, mediaToken, network_type} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
const { owner, sender, chat, amount, mediaToken, network_type } = await helpers.parseReceiveParams(payload)
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
const msg = await models.Message.create({
@ -408,7 +410,7 @@ export const receivePurchaseDeny = async (payload) => {
sender: sender.id,
type: constants.message_types.purchase_deny,
status: constants.statuses.received,
messageContent:'Purchase has been denied and sats returned to you',
messageContent: 'Purchase has been denied and sats returned to you',
amount: amount,
amountMsat: parseFloat(amount) * 1000,
mediaToken,
@ -429,12 +431,12 @@ export const receiveAttachment = async (payload) => {
var date = new Date();
date.setMilliseconds(0)
const {owner, sender, chat, mediaToken, mediaKey, mediaType, content, msg_id, chat_type, sender_alias, msg_uuid, reply_uuid, network_type, sender_photo_url} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
const { owner, sender, chat, mediaToken, mediaKey, mediaType, content, msg_id, chat_type, sender_alias, msg_uuid, reply_uuid, network_type, sender_photo_url } = await helpers.parseReceiveParams(payload)
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
const msg: {[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: msg_uuid,
type: constants.message_types.attachment,
@ -444,16 +446,16 @@ export const receiveAttachment = async (payload) => {
updatedAt: date,
network_type
}
if(content) msg.messageContent = content
if(mediaToken) msg.mediaToken = mediaToken
if(mediaKey) msg.mediaKey = mediaKey
if(mediaType) msg.mediaType = mediaType
if(reply_uuid) msg.replyUuid = reply_uuid
const isTribe = chat_type===constants.chat_types.tribe
if(isTribe) {
if (content) msg.messageContent = content
if (mediaToken) msg.mediaToken = mediaToken
if (mediaKey) msg.mediaKey = mediaKey
if (mediaType) msg.mediaType = mediaType
if (reply_uuid) msg.replyUuid = reply_uuid
const isTribe = chat_type === constants.chat_types.tribe
if (isTribe) {
msg.senderAlias = sender_alias
msg.senderPic = sender_photo_url
}
}
const message = await models.Message.create(msg)
@ -464,14 +466,14 @@ export const receiveAttachment = async (payload) => {
response: jsonUtils.messageToJson(message, chat, sender)
})
sendNotification(chat, msg.senderAlias||sender.alias, 'message')
sendNotification(chat, msg.senderAlias || sender.alias, 'message')
const theChat = {...chat.dataValues, contactIds:[sender.id]}
sendConfirmation({ chat:theChat, sender: owner, msg_id })
const theChat = { ...chat.dataValues, contactIds: [sender.id] }
sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender })
}
export async function signer(req, res) {
if(!req.params.challenge) return resUtils.failure(res, "no challenge")
if (!req.params.challenge) return resUtils.failure(res, "no challenge")
try {
const sig = await signBuffer(
Buffer.from(req.params.challenge, 'base64')
@ -481,7 +483,7 @@ export async function signer(req, res) {
resUtils.success(res, {
sig: sigBase64
})
} catch(e) {
} catch (e) {
resUtils.failure(res, e)
}
}
@ -490,37 +492,37 @@ export async function verifier(msg, sig) {
try {
const res = await verifyMessage(msg, sig)
return res
} catch(e) {
} catch (e) {
console.log(e)
}
}
export async function getMyPubKey(){
return new Promise((resolve,reject)=>{
export async function getMyPubKey() {
return new Promise((resolve, reject) => {
const lightning = loadLightning()
var request = {}
lightning.getInfo(request, function(err, response) {
if(err) reject(err)
if(!response.identity_pubkey) reject('no pub key')
lightning.getInfo(request, function (err, response) {
if (err) reject(err)
if (!response.identity_pubkey) reject('no pub key')
else resolve(response.identity_pubkey)
});
})
}
export async function cycleMediaToken() {
try{
try {
if (process.env.TEST_LDAT) testLDAT()
const mt = await getMediaToken(null)
if(mt) {
if (mt) {
console.log('=> [meme] authed!')
meme.setMediaToken(mt)
}
new CronJob('1 * * * *', function() { // every hour
new CronJob('1 * * * *', function () { // every hour
getMediaToken(true)
})
} catch(e) {
} catch (e) {
console.log(e.message)
}
}
@ -528,10 +530,10 @@ export async function cycleMediaToken() {
const mediaURL = 'http://' + config.media_host + '/'
export async function getMediaToken(force) {
if(!force && meme.mediaToken) return meme.mediaToken
if (!force && meme.mediaToken) return meme.mediaToken
await helpers.sleep(3000)
try {
const res = await rp.get(mediaURL+'ask')
const res = await rp.get(mediaURL + 'ask')
const r = JSON.parse(res)
if (!(r && r.challenge && r.id)) {
throw new Error('no challenge')
@ -540,25 +542,25 @@ export async function getMediaToken(force) {
Buffer.from(r.challenge, 'base64')
)
if(!sig) throw new Error('no signature')
if (!sig) throw new Error('no signature')
const pubkey = await getMyPubKey()
if(!pubkey){
if (!pubkey) {
throw new Error('no pub key!')
}
const sigBytes = zbase32.decode(sig)
const sigBase64 = urlBase64FromBytes(sigBytes)
const bod = await rp.post(mediaURL+'verify', {
form:{id: r.id, sig:sigBase64, pubkey}
const bod = await rp.post(mediaURL + 'verify', {
form: { id: r.id, sig: sigBase64, pubkey }
})
const body = JSON.parse(bod)
if(!(body && body.token)){
if (!(body && body.token)) {
throw new Error('no token')
}
meme.setMediaToken(body.token)
return body.token
} catch(e) {
} catch (e) {
throw e
}
}
@ -566,15 +568,15 @@ export async function getMediaToken(force) {
export async function getMediaInfo(muid) {
try {
const token = await getMediaToken(null)
const res = await rp.get(mediaURL+'mymedia/'+muid,{
const res = await rp.get(mediaURL + 'mymedia/' + muid, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
json:true
json: true
})
return res
} catch(e) {
} catch (e) {
return null
}
}

220
src/controllers/messages.ts

@ -1,5 +1,5 @@
import {models} from '../models'
import { Op } from 'sequelize'
import { models } from '../models'
import { Op } from 'sequelize'
import { indexBy } from 'underscore'
import { sendNotification } from '../hub'
import * as socket from '../utils/socket'
@ -7,7 +7,7 @@ import * as jsonUtils from '../utils/json'
import * as helpers from '../helpers'
import { failure, success } from '../utils/res'
import * as timers from '../utils/timers'
import {sendConfirmation} from './confirmations'
import { sendConfirmation } from './confirmations'
import * as network from '../network'
import * as short from 'short-uuid'
import constants from '../constants'
@ -25,24 +25,28 @@ export const getMessages = async (req, res) => {
let newMessagesWhere = {
date: { [Op.gte]: dateToReturn },
[Op.or]: [
{receiver: owner.id},
{receiver: null}
{ receiver: owner.id },
{ receiver: null }
]
}
let confirmedMessagesWhere = {
updated_at: { [Op.gte]: dateToReturn },
status: {[Op.or]: [
constants.statuses.received,
]},
status: {
[Op.or]: [
constants.statuses.received,
]
},
sender: owner.id
}
let deletedMessagesWhere = {
updated_at: { [Op.gte]: dateToReturn },
status: {[Op.or]: [
constants.statuses.deleted
]},
status: {
[Op.or]: [
constants.statuses.deleted
]
},
}
// if (chatId) {
@ -56,28 +60,28 @@ export const getMessages = async (req, res) => {
const chatIds: number[] = []
newMessages.forEach(m => {
if(!chatIds.includes(m.chatId)) chatIds.push(m.chatId)
if (!chatIds.includes(m.chatId)) chatIds.push(m.chatId)
})
confirmedMessages.forEach(m => {
if(!chatIds.includes(m.chatId)) chatIds.push(m.chatId)
if (!chatIds.includes(m.chatId)) chatIds.push(m.chatId)
})
deletedMessages.forEach(m => {
if(!chatIds.includes(m.chatId)) chatIds.push(m.chatId)
if (!chatIds.includes(m.chatId)) chatIds.push(m.chatId)
})
let chats = chatIds.length > 0 ? await models.Chat.findAll({ where: {deleted:false, id: chatIds} }) : []
let chats = chatIds.length > 0 ? await models.Chat.findAll({ where: { deleted: false, id: chatIds } }) : []
const chatsById = indexBy(chats, 'id')
res.json({
success: true,
response: {
new_messages: newMessages.map(message =>
new_messages: newMessages.map(message =>
jsonUtils.messageToJson(message, chatsById[parseInt(message.chatId)])
),
confirmed_messages: confirmedMessages.map(message =>
confirmed_messages: confirmedMessages.map(message =>
jsonUtils.messageToJson(message, chatsById[parseInt(message.chatId)])
),
deleted_messages: deletedMessages.map(message =>
deleted_messages: deletedMessages.map(message =>
jsonUtils.messageToJson(message, chatsById[parseInt(message.chatId)])
)
}
@ -92,16 +96,16 @@ export const getAllMessages = async (req, res) => {
console.log(`=> getAllMessages, limit: ${limit}, offset: ${offset}`)
const messages = await models.Message.findAll({ order: [['id', 'asc']], limit, offset })
console.log('=> got msgs',(messages&&messages.length))
const chatIds:number[] = []
console.log('=> got msgs', (messages && messages.length))
const chatIds: number[] = []
messages.forEach((m) => {
if(m.chatId && !chatIds.includes(m.chatId)) {
if (m.chatId && !chatIds.includes(m.chatId)) {
chatIds.push(m.chatId)
}
})
let chats = chatIds.length > 0 ? await models.Chat.findAll({ where: {deleted:false, id: chatIds} }) : []
console.log('=> found all chats',(chats&&chats.length))
let chats = chatIds.length > 0 ? await models.Chat.findAll({ where: { deleted: false, id: chatIds } }) : []
console.log('=> found all chats', (chats && chats.length))
const chatsById = indexBy(chats, 'id')
console.log('=> indexed chats')
success(res, {
@ -112,34 +116,34 @@ export const getAllMessages = async (req, res) => {
})
};
export async function deleteMessage(req, res){
export async function deleteMessage(req, res) {
const id = parseInt(req.params.id)
const message = await models.Message.findOne({where:{id}})
const message = await models.Message.findOne({ where: { id } })
const uuid = message.uuid
await message.update({status: constants.statuses.deleted})
await message.update({ status: constants.statuses.deleted })
const chat_id = message.chatId
let chat
if(chat_id) {
chat = await models.Chat.findOne({where:{id:chat_id}})
if (chat_id) {
chat = await models.Chat.findOne({ where: { id: chat_id } })
}
success(res, jsonUtils.messageToJson(message, chat))
if(!chat) return
const isTribe = chat.type===constants.chat_types.tribe
if (!chat) return
const isTribe = chat.type === constants.chat_types.tribe
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const isTribeOwner = isTribe && owner.publicKey===chat.ownerPubkey
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const isTribeOwner = isTribe && owner.publicKey === chat.ownerPubkey
if(isTribeOwner) {
if (isTribeOwner) {
timers.removeTimerByMsgId(id)
}
network.sendMessage({
chat: chat,
sender: owner,
type: constants.message_types.delete,
message: {id,uuid},
message: { id, uuid },
})
}
@ -162,13 +166,13 @@ export const sendMessage = async (req, res) => {
} = req.body
let msgtype = constants.message_types.message
if(boost) msgtype = constants.message_types.boost
if (boost) msgtype = constants.message_types.boost
var date = new Date()
date.setMilliseconds(0)
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const chat = await helpers.findOrCreateChat({
const owner = await models.Contact.findOne({ where: { isOwner: true } })
const chat = await helpers.findOrCreateChat({
chat_id,
owner_id: owner.id,
recipient_id: contact_id,
@ -176,26 +180,28 @@ export const sendMessage = async (req, res) => {
let realSatsContactId
// IF BOOST NEED TO SEND ACTUAL SATS TO OG POSTER
const isTribe = chat.type===constants.chat_types.tribe
const isTribeOwner = isTribe && owner.publicKey===chat.ownerPubkey
if(reply_uuid && boost && amount) {
const ogMsg = await models.Message.findOne({where:{
uuid: reply_uuid,
}})
if(ogMsg && ogMsg.sender) {
const isTribe = chat.type === constants.chat_types.tribe
const isTribeOwner = isTribe && owner.publicKey === chat.ownerPubkey
if (reply_uuid && boost && amount) {
const ogMsg = await models.Message.findOne({
where: {
uuid: reply_uuid,
}
})
if (ogMsg && ogMsg.sender) {
realSatsContactId = ogMsg.sender
}
}
const hasRealAmount = amount && amount>constants.min_sat_amount
const hasRealAmount = amount && amount > constants.min_sat_amount
const remoteMessageContent = remote_text_map?JSON.stringify(remote_text_map) : remote_text
const remoteMessageContent = remote_text_map ? JSON.stringify(remote_text_map) : remote_text
const uuid = short.generate()
let amtToStore = amount || 0
if(boost && message_price && typeof message_price==='number' && amount && message_price<amount) {
if (boost && message_price && typeof message_price === 'number' && amount && message_price < amount) {
amtToStore = amount - message_price
}
const msg:{[k:string]:any}={
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: uuid,
type: msgtype,
@ -207,34 +213,34 @@ export const sendMessage = async (req, res) => {
status: constants.statuses.pending,
createdAt: date,
updatedAt: date,
network_type: (!isTribe || hasRealAmount || realSatsContactId) ?
network_type: (!isTribe || hasRealAmount || realSatsContactId) ?
constants.network_types.lightning :
constants.network_types.mqtt
}
if(reply_uuid) msg.replyUuid=reply_uuid
if (reply_uuid) msg.replyUuid = reply_uuid
// console.log(msg)
const message = await models.Message.create(msg)
success(res, jsonUtils.messageToJson(message, chat))
const msgToSend:{[k:string]:any} = {
const msgToSend: { [k: string]: any } = {
id: message.id,
uuid: message.uuid,
content: remote_text_map || remote_text || text,
amount: amtToStore,
}
if(reply_uuid) msgToSend.replyUuid=reply_uuid
if (reply_uuid) msgToSend.replyUuid = reply_uuid
const sendMessageParams:{[k:string]:any} = {
const sendMessageParams: { [k: string]: any } = {
chat: chat,
sender: owner,
amount: amount||0,
amount: amount || 0,
type: msgtype,
message: msgToSend,
}
if(realSatsContactId) sendMessageParams.realSatsContactId = realSatsContactId
if (realSatsContactId) sendMessageParams.realSatsContactId = realSatsContactId
// tribe owner deducts the "price per message + escrow amount"
if(realSatsContactId && isTribeOwner && amtToStore) {
if (realSatsContactId && isTribeOwner && amtToStore) {
sendMessageParams.amount = amtToStore
}
// final send
@ -244,36 +250,36 @@ export const sendMessage = async (req, res) => {
export const receiveMessage = async (payload) => {
// console.log('received message', { payload })
const {owner, sender, chat, content, remote_content, msg_id, chat_type, sender_alias, msg_uuid, date_string, reply_uuid, amount, network_type, sender_photo_url, message_status} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
const { owner, sender, chat, content, remote_content, msg_id, chat_type, sender_alias, msg_uuid, date_string, reply_uuid, amount, network_type, sender_photo_url, message_status } = await helpers.parseReceiveParams(payload)
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
const text = content||''
const text = content || ''
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
if (date_string) date = new Date(date_string)
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: msg_uuid,
type: constants.message_types.message,
sender: sender.id,
date: date,
amount: amount||0,
amount: amount || 0,
messageContent: text,
createdAt: date,
updatedAt: date,
status: message_status || constants.statuses.received,
network_type: network_type,
}
const isTribe = chat_type===constants.chat_types.tribe
if(isTribe) {
const isTribe = chat_type === constants.chat_types.tribe
if (isTribe) {
msg.senderAlias = sender_alias
msg.senderPic = sender_photo_url
if(remote_content) msg.remoteMessageContent=remote_content
if (remote_content) msg.remoteMessageContent = remote_content
}
if(reply_uuid) msg.replyUuid = reply_uuid
if (reply_uuid) msg.replyUuid = reply_uuid
const message = await models.Message.create(msg)
socket.sendJson({
@ -281,44 +287,44 @@ export const receiveMessage = async (payload) => {
response: jsonUtils.messageToJson(message, chat, sender)
})
sendNotification(chat, msg.senderAlias||sender.alias, 'message')
sendNotification(chat, msg.senderAlias || sender.alias, 'message')
const theChat = {...chat.dataValues, contactIds:[sender.id]}
sendConfirmation({ chat:theChat, sender: owner, msg_id })
const theChat = { ...chat.dataValues, contactIds: [sender.id] }
sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender })
}
export const receiveBoost = async (payload) => {
const {owner, sender, chat, content, remote_content, chat_type, sender_alias, msg_uuid, date_string, reply_uuid, amount, network_type, sender_photo_url, msg_id} = await helpers.parseReceiveParams(payload)
console.log('=> received boost ' +amount+ ' sats on network:', network_type)
if(!owner || !sender || !chat) {
const { owner, sender, chat, content, remote_content, chat_type, sender_alias, msg_uuid, date_string, reply_uuid, amount, network_type, sender_photo_url, msg_id } = await helpers.parseReceiveParams(payload)
console.log('=> received boost ' + amount + ' sats on network:', network_type)
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
const text = content
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
if (date_string) date = new Date(date_string)
const msg:{[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: msg_uuid,
type: constants.message_types.boost,
sender: sender.id,
date: date,
amount: amount||0,
amount: amount || 0,
messageContent: text,
createdAt: date,
updatedAt: date,
status: constants.statuses.received,
network_type
}
const isTribe = chat_type===constants.chat_types.tribe
if(isTribe) {
const isTribe = chat_type === constants.chat_types.tribe
if (isTribe) {
msg.senderAlias = sender_alias
msg.senderPic = sender_photo_url
if(remote_content) msg.remoteMessageContent=remote_content
if (remote_content) msg.remoteMessageContent = remote_content
}
if(reply_uuid) msg.replyUuid = reply_uuid
if (reply_uuid) msg.replyUuid = reply_uuid
const message = await models.Message.create(msg)
socket.sendJson({
@ -326,36 +332,36 @@ export const receiveBoost = async (payload) => {
response: jsonUtils.messageToJson(message, chat, sender)
})
const theChat = {...chat.dataValues, contactIds:[sender.id]}
sendConfirmation({ chat:theChat, sender: owner, msg_id })
const theChat = { ...chat.dataValues, contactIds: [sender.id] }
sendConfirmation({ chat: theChat, sender: owner, msg_id, receiver: sender })
if(msg.replyUuid) {
if (msg.replyUuid) {
const ogMsg = await models.Message.findOne({
where: {uuid: msg.replyUuid}
where: { uuid: msg.replyUuid }
})
if(ogMsg && ogMsg.sender===1) {
sendNotification(chat, msg.senderAlias||sender.alias, 'boost')
if (ogMsg && ogMsg.sender === 1) {
sendNotification(chat, msg.senderAlias || sender.alias, 'boost')
}
}
}
export const receiveRepayment = async (payload) => {
const {owner, sender, chat, date_string, amount, network_type} = await helpers.parseReceiveParams(payload)
console.log('=> received repayment ' +amount+ ' sats')
if(!owner || !sender || !chat) {
const { owner, sender, chat, date_string, amount, network_type } = await helpers.parseReceiveParams(payload)
console.log('=> received repayment ' + amount + ' sats')
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
var date = new Date();
date.setMilliseconds(0)
if(date_string) date=new Date(date_string)
if (date_string) date = new Date(date_string)
const message = await models.Message.create({
// chatId: chat.id,
type: constants.message_types.repayment,
sender: sender.id,
date: date,
amount: amount||0,
amount: amount || 0,
createdAt: date,
updatedAt: date,
status: constants.statuses.received,
@ -370,21 +376,21 @@ export const receiveRepayment = async (payload) => {
export const receiveDeleteMessage = async (payload) => {
console.log('=> received delete message')
const {owner, sender, chat, chat_type, msg_uuid} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
const { owner, sender, chat, chat_type, msg_uuid } = await helpers.parseReceiveParams(payload)
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
const isTribe = chat_type===constants.chat_types.tribe
const isTribe = chat_type === constants.chat_types.tribe
// in tribe this is already validated on admin's node
let where:{[k:string]:any} = {uuid: msg_uuid}
if(!isTribe) {
let where: { [k: string]: any } = { uuid: msg_uuid }
if (!isTribe) {
where.sender = sender.id // validate sender
}
const message = await models.Message.findOne({where})
if(!message) return
const message = await models.Message.findOne({ where })
if (!message) return
await message.update({status: constants.statuses.deleted})
await message.update({ status: constants.statuses.deleted })
socket.sendJson({
type: 'delete',
response: jsonUtils.messageToJson(message, chat, sender)
@ -393,19 +399,19 @@ export const receiveDeleteMessage = async (payload) => {
export const readMessages = async (req, res) => {
const chat_id = req.params.chat_id;
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
await models.Message.update({ seen: true }, {
where: {
sender: {
[Op.ne]: owner.id
},
chatId: chat_id
sender: {
[Op.ne]: owner.id
},
chatId: chat_id
}
});
const chat = await models.Chat.findOne({ where: { id: chat_id } })
if(chat) {
if (chat) {
await chat.update({ seen: true });
success(res, {})
sendNotification(chat, '', 'badge')

120
src/controllers/payment.ts

@ -1,15 +1,15 @@
import {models} from '../models'
import { models } from '../models'
import { sendNotification } from '../hub'
import * as socket from '../utils/socket'
import * as jsonUtils from '../utils/json'
import * as helpers from '../helpers'
import { failure, success } from '../utils/res'
import {tokenFromTerms} from '../utils/ldat'
import { tokenFromTerms } from '../utils/ldat'
import * as network from '../network'
import * as short from 'short-uuid'
import constants from '../constants'
import { Op } from 'sequelize'
import {anonymousKeysend} from './feed'
import { Op } from 'sequelize'
import { anonymousKeysend } from './feed'
export const sendPayment = async (req, res) => {
const {
@ -29,14 +29,14 @@ export const sendPayment = async (req, res) => {
console.log('[send payment]', req.body)
const owner = await models.Contact.findOne({ where: { isOwner: true }})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
if (destination_key && !contact_id && !chat_id) {
anonymousKeysend(owner, destination_key, amount||'', text||'',
function(body) {
anonymousKeysend(owner, destination_key, amount || '', text || '',
function (body) {
success(res, body)
},
function(error) {
function (error) {
res.status(200);
res.json({ success: false, error });
res.end();
@ -54,7 +54,7 @@ export const sendPayment = async (req, res) => {
var date = new Date();
date.setMilliseconds(0)
const msg: {[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: short.generate(),
sender: owner.id,
@ -66,14 +66,14 @@ export const sendPayment = async (req, res) => {
updatedAt: date,
network_type: constants.network_types.lightning,
}
if(text) msg.messageContent = text
if(remote_text) msg.remoteMessageContent = remote_text
if(reply_uuid) msg.replyUuid=reply_uuid
if (text) msg.messageContent = text
if (remote_text) msg.remoteMessageContent = remote_text
if (reply_uuid) msg.replyUuid = reply_uuid
if(muid){
if (muid) {
const myMediaToken = await tokenFromTerms({
meta:{dim:dimensions}, host:'',
muid, ttl:null, // default one year
meta: { dim: dimensions }, host: '',
muid, ttl: null, // default one year
pubkey: owner.publicKey
})
msg.mediaToken = myMediaToken
@ -82,24 +82,24 @@ export const sendPayment = async (req, res) => {
const message = await models.Message.create(msg)
const msgToSend: {[k:string]:any} = {
id:message.id,
uuid:message.uuid,
const msgToSend: { [k: string]: any } = {
id: message.id,
uuid: message.uuid,
amount,
}
if(muid) {
msgToSend.mediaType = media_type||'image/jpeg'
msgToSend.mediaTerms = {muid,meta:{dim:dimensions}}
if (muid) {
msgToSend.mediaType = media_type || 'image/jpeg'
msgToSend.mediaTerms = { muid, meta: { dim: dimensions } }
}
if(remote_text) msgToSend.content = remote_text
if(reply_uuid) msgToSend.replyUuid=reply_uuid
if (remote_text) msgToSend.content = remote_text
if (reply_uuid) msgToSend.replyUuid = reply_uuid
// if contact_ids, replace that in "chat" below
// if remote text map, put that in
let theChat = chat
if(contact_ids){
theChat = {...chat.dataValues, contactIds:contact_ids}
if(remote_text_map) msgToSend.content = remote_text_map
if (contact_ids) {
theChat = { ...chat.dataValues, contactIds: contact_ids }
if (remote_text_map) msgToSend.content = remote_text_map
}
network.sendMessage({
chat: theChat,
@ -112,10 +112,10 @@ export const sendPayment = async (req, res) => {
success(res, jsonUtils.messageToJson(message, chat))
},
failure: async (error) => {
await message.update({status: constants.statuses.failed})
await message.update({ status: constants.statuses.failed })
res.status(200);
res.json({
success: false,
res.json({
success: false,
response: jsonUtils.messageToJson(message, chat)
});
res.end();
@ -129,12 +129,12 @@ export const receivePayment = async (payload) => {
var date = new Date();
date.setMilliseconds(0)
const {owner, sender, chat, amount, content, mediaType, mediaToken, chat_type, sender_alias, msg_uuid, reply_uuid, network_type, sender_photo_url} = await helpers.parseReceiveParams(payload)
if(!owner || !sender || !chat) {
const { owner, sender, chat, amount, content, mediaType, mediaToken, chat_type, sender_alias, msg_uuid, reply_uuid, network_type, sender_photo_url } = await helpers.parseReceiveParams(payload)
if (!owner || !sender || !chat) {
return console.log('=> no group chat!')
}
const msg: {[k:string]:any} = {
const msg: { [k: string]: any } = {
chatId: chat.id,
uuid: msg_uuid,
type: constants.message_types.direct_payment,
@ -146,15 +146,15 @@ export const receivePayment = async (payload) => {
updatedAt: date,
network_type
}
if(content) msg.messageContent = content
if(mediaType) msg.mediaType = mediaType
if(mediaToken) msg.mediaToken = mediaToken
if(chat_type===constants.chat_types.tribe) {
if (content) msg.messageContent = content
if (mediaType) msg.mediaType = mediaType
if (mediaToken) msg.mediaToken = mediaToken
if (chat_type === constants.chat_types.tribe) {
msg.senderAlias = sender_alias
msg.senderPic = sender_photo_url
}
if(reply_uuid) msg.replyUuid = reply_uuid
if (reply_uuid) msg.replyUuid = reply_uuid
const message = await models.Message.create(msg)
// console.log('saved message', message.dataValues)
@ -164,38 +164,42 @@ export const receivePayment = async (payload) => {
response: jsonUtils.messageToJson(message, chat, sender)
})
sendNotification(chat, msg.senderAlias||sender.alias, 'message')
sendNotification(chat, msg.senderAlias || sender.alias, 'message')
}
export const listPayments = async (req, res) => {
const limit = (req.query.limit && parseInt(req.query.limit)) || 100
const offset = (req.query.offset && parseInt(req.query.offset)) || 0
const MIN_VAL=constants.min_sat_amount
const MIN_VAL = constants.min_sat_amount
try {
const msgs = await models.Message.findAll({
where:{
where: {
[Op.or]: [
{
type: {[Op.or]: [
constants.message_types.payment,
constants.message_types.direct_payment,
constants.message_types.keysend,
constants.message_types.purchase,
]},
status: {[Op.not]: constants.statuses.failed}
type: {
[Op.or]: [
constants.message_types.payment,
constants.message_types.direct_payment,
constants.message_types.keysend,
constants.message_types.purchase,
]
},
status: { [Op.not]: constants.statuses.failed }
},
{
type: {[Op.or]: [
constants.message_types.message, // paid bot msgs, or price_per_message msgs
constants.message_types.boost,
constants.message_types.repayment,
]},
type: {
[Op.or]: [
constants.message_types.message, // paid bot msgs, or price_per_message msgs
constants.message_types.boost,
constants.message_types.repayment,
]
},
amount: {
[Op.gt]: MIN_VAL // greater than
},
network_type: constants.network_types.lightning,
status: {[Op.not]: constants.statuses.failed}
status: { [Op.not]: constants.statuses.failed }
}
],
},
@ -203,9 +207,9 @@ export const listPayments = async (req, res) => {
limit,
offset
})
const ret = msgs||[]
success(res, ret.map(message=> jsonUtils.messageToJson(message, null)))
} catch(e) {
const ret = msgs || []
success(res, ret.map(message => jsonUtils.messageToJson(message, null)))
} catch (e) {
failure(res, 'cant find payments')
}
};

68
src/controllers/subscriptions.ts

@ -1,7 +1,7 @@
import {models} from '../models'
import {success, failure} from '../utils/res'
import {CronJob} from 'cron'
import {toCamel} from '../utils/case'
import { models } from '../models'
import { success, failure } from '../utils/res'
import { CronJob } from 'cron'
import { toCamel } from '../utils/case'
import * as cronUtils from '../utils/cron'
import * as socket from '../utils/socket'
import * as jsonUtils from '../utils/json'
@ -19,7 +19,7 @@ export const initializeCronJobs = async () => {
await helpers.sleep(1000)
const subs = await getRawSubs({ where: { ended: false } })
subs.length && subs.forEach(sub => {
console.log("=> starting subscription cron job",sub.id+":",sub.cron)
console.log("=> starting subscription cron job", sub.id + ":", sub.cron)
startCronJob(sub)
})
}
@ -79,7 +79,7 @@ function checkSubscriptionShouldEndAfterThisPayment(sub) {
return false
}
function msgForSubPayment(owner, sub, isFirstMessage, forMe){
function msgForSubPayment(owner, sub, isFirstMessage, forMe) {
let text = ''
if (isFirstMessage) {
const alias = forMe ? 'You' : owner.alias
@ -89,11 +89,11 @@ function msgForSubPayment(owner, sub, isFirstMessage, forMe){
}
text += `Amount: ${sub.amount} sats\n`
text += `Interval: ${cronUtils.parse(sub.cron).interval}\n`
if(sub.endDate) {
if (sub.endDate) {
text += `End: ${moment(sub.endDate).format('MM/DD/YY')}\n`
text += `Status: ${sub.count+1} sent`
} else if(sub.endNumber) {
text += `Status: ${sub.count+1} of ${sub.endNumber} sent`
text += `Status: ${sub.count + 1} sent`
} else if (sub.endNumber) {
text += `Status: ${sub.count + 1} of ${sub.endNumber} sent`
}
return text
}
@ -108,7 +108,7 @@ async function sendSubscriptionPayment(sub, isFirstMessage) {
if (!subscription) {
return
}
const chat = await models.Chat.findOne({ where: {id:subscription.chatId} })
const chat = await models.Chat.findOne({ where: { id: subscription.chatId } })
if (!subscription) {
console.log("=> no sub for this payment!!!")
return
@ -129,13 +129,13 @@ async function sendSubscriptionPayment(sub, isFirstMessage) {
success: async (data) => {
const shouldEnd = checkSubscriptionShouldEndAfterThisPayment(subscription)
const obj = {
totalPaid: parseFloat(subscription.totalPaid||0) + parseFloat(subscription.amount),
count: parseInt(subscription.count||0) + 1,
totalPaid: parseFloat(subscription.totalPaid || 0) + parseFloat(subscription.amount),
count: parseInt(subscription.count || 0) + 1,
ended: false,
}
if(shouldEnd) {
if (shouldEnd) {
obj.ended = true
if(jobs[sub.id]) jobs[subscription.id].stop()
if (jobs[sub.id]) jobs[subscription.id].stop()
delete jobs[subscription.id]
}
await subscription.update(obj)
@ -194,7 +194,7 @@ export async function pauseSubscription(req, res) {
if (sub) {
sub.update({ paused: true })
if (jobs[id]) jobs[id].stop()
success(res, jsonUtils.subscriptionToJson(sub,null))
success(res, jsonUtils.subscriptionToJson(sub, null))
} else {
failure(res, 'not found')
}
@ -212,7 +212,7 @@ export async function restartSubscription(req, res) {
if (sub) {
sub.update({ paused: false })
if (jobs[id]) jobs[id].start()
success(res, jsonUtils.subscriptionToJson(sub,null))
success(res, jsonUtils.subscriptionToJson(sub, null))
} else {
failure(res, 'not found')
}
@ -223,7 +223,7 @@ export async function restartSubscription(req, res) {
};
async function getRawSubs(opts = {}) {
const options: {[k: string]: any} = { order: [['id', 'asc']], ...opts }
const options: { [k: string]: any } = { order: [['id', 'asc']], ...opts }
try {
const subs = await models.Subscription.findAll(options)
return subs
@ -236,7 +236,7 @@ async function getRawSubs(opts = {}) {
export const getAllSubscriptions = async (req, res) => {
try {
const subs = await getRawSubs()
success(res, subs.map(sub => jsonUtils.subscriptionToJson(sub,null)))
success(res, subs.map(sub => jsonUtils.subscriptionToJson(sub, null)))
} catch (e) {
console.log('ERROR getAllSubscriptions', e)
failure(res, e)
@ -247,7 +247,7 @@ export const getAllSubscriptions = async (req, res) => {
export async function getSubscription(req, res) {
try {
const sub = await models.Subscription.findOne({ where: { id: req.params.id } })
success(res, jsonUtils.subscriptionToJson(sub,null))
success(res, jsonUtils.subscriptionToJson(sub, null))
} catch (e) {
console.log('ERROR getSubscription', e)
failure(res, e)
@ -275,7 +275,7 @@ export async function deleteSubscription(req, res) {
export const getSubscriptionsForContact = async (req, res) => {
try {
const subs = await getRawSubs({ where: { contactId: req.params.contactId } })
success(res, subs.map(sub => jsonUtils.subscriptionToJson(sub,null)))
success(res, subs.map(sub => jsonUtils.subscriptionToJson(sub, null)))
} catch (e) {
console.log('ERROR getSubscriptionsForContact', e)
failure(res, e)
@ -294,7 +294,7 @@ export async function createSubscription(req, res) {
ended: false,
paused: false
})
if(!s.cron){
if (!s.cron) {
return failure(res, 'Invalid interval')
}
try {
@ -305,7 +305,7 @@ export async function createSubscription(req, res) {
recipient_id: req.body.contact_id,
})
s.chatId = chat.id // add chat id if newly created
if(!owner || !chat){
if (!owner || !chat) {
return failure(res, 'Invalid chat or contact')
}
const sub = await models.Subscription.create(s)
@ -332,32 +332,32 @@ export async function editSubscription(req, res) {
paused: false
})
try {
if(!id || !s.chatId || !s.cron){
if (!id || !s.chatId || !s.cron) {
return failure(res, 'Invalid data')
}
const subRecord = await models.Subscription.findOne({ where: { id }})
if(!subRecord) {
const subRecord = await models.Subscription.findOne({ where: { id } })
if (!subRecord) {
return failure(res, 'No subscription found')
}
// stop so it can be restarted
if (jobs[id]) jobs[id].stop()
const obj: {[k: string]: any} = {
const obj: { [k: string]: any } = {
cron: s.cron,
updatedAt: date,
}
if(s.amount) obj.amount = s.amount
if(s.endDate) obj.endDate = s.endDate
if(s.endNumber) obj.endNumber = s.endNumber
if (s.amount) obj.amount = s.amount
if (s.endDate) obj.endDate = s.endDate
if (s.endNumber) obj.endNumber = s.endNumber
const sub = await subRecord.update(obj)
const end = checkSubscriptionShouldAlreadyHaveEnded(sub)
if(end) {
await subRecord.update({ended:true})
if (end) {
await subRecord.update({ ended: true })
delete jobs[id]
} else {
startCronJob(sub) // restart
}
const chat = await models.Chat.findOne({ where: { id: s.chatId }})
const chat = await models.Chat.findOne({ where: { id: s.chatId } })
success(res, jsonUtils.subscriptionToJson(sub, chat))
} catch (e) {
console.log('ERROR createSubscription', e)
@ -366,7 +366,7 @@ export async function editSubscription(req, res) {
};
function jsonToSubscription(j) {
console.log("=>",j)
console.log("=>", j)
const cron = cronUtils.make(j.interval)
return toCamel({
...j,

38
src/controllers/uploads.ts

@ -1,21 +1,21 @@
import {models} from '../models'
import { models } from '../models'
import * as path from 'path'
const env = process.env.NODE_ENV || 'development';
const config = require(path.join(__dirname,'../../config/app.json'))[env]
const config = require(path.join(__dirname, '../../config/app.json'))[env]
// setup disk storage
var multer = require('multer')
var avatarStorage = multer.diskStorage({
destination: (req, file, cb) => {
let dir = __dirname.includes('/dist/') ? path.join(__dirname,'..') : __dirname
let dir = __dirname.includes('/dist/') ? path.join(__dirname, '..') : __dirname
cb(null, dir + '/../../public/uploads')
},
filename: (req, file, cb) => {
const mime = file.mimetype
const extA = mime.split("/")
const ext = extA[extA.length-1]
if(req.body.chat_id){
const ext = extA[extA.length - 1]
if (req.body.chat_id) {
cb(null, `chat_${req.body.chat_id}_picture.${ext}`)
} else {
cb(null, `${req.body.contact_id}_profile_picture.${ext}`)
@ -24,9 +24,9 @@ var avatarStorage = multer.diskStorage({
})
export var avatarUpload = multer({ storage: avatarStorage })
function hasProtocol(ip){
if(ip.startsWith('https://')) return true
if(ip.startsWith('http://')) return true
function hasProtocol(ip) {
if (ip.startsWith('https://')) return true
if (ip.startsWith('http://')) return true
return false
}
@ -34,30 +34,30 @@ export const uploadFile = async (req, res) => {
const { contact_id, chat_id } = req.body
const { file } = req
const ip = String(process.env.NODE_IP)
const ip = String(process.env.NODE_IP)
let theIP = ip
if(!hasProtocol(ip)) {
theIP=config.node_http_protocol + '://' + ip
if (!hasProtocol(ip)) {
theIP = config.node_http_protocol + '://' + ip
}
const photo_url = theIP +
'/static/uploads/' +
'/static/uploads/' +
file.filename
if(contact_id){
if (contact_id) {
const contact = await models.Contact.findOne({ where: { id: contact_id } })
if(contact) contact.update({ photoUrl: photo_url })
if (contact) contact.update({ photoUrl: photo_url })
}
if(chat_id){
if (chat_id) {
const chat = await models.Chat.findOne({ where: { id: chat_id } })
if(chat) chat.update({ photoUrl: photo_url })
if (chat) chat.update({ photoUrl: photo_url })
}
res.status(200)
res.json({
success: true,
contact_id: parseInt(contact_id||0),
chat_id: parseInt(chat_id||0),
success: true,
contact_id: parseInt(contact_id || 0),
chat_id: parseInt(chat_id || 0),
photo_url
});
res.end();

74
src/crypto/rsa.ts

@ -1,59 +1,59 @@
import * as crypto from "crypto";
const BLOCK_SIZE=256
const MAX_CHUNK_SIZE=BLOCK_SIZE-11 // 11 is the PCKS1 padding
const BLOCK_SIZE = 256
const MAX_CHUNK_SIZE = BLOCK_SIZE - 11 // 11 is the PCKS1 padding
export function encrypt(key, txt){
try{
export function encrypt(key, txt) {
try {
const buf = Buffer.from(txt)
let finalBuf = Buffer.from([])
const n = Math.ceil(buf.length/MAX_CHUNK_SIZE)
const n = Math.ceil(buf.length / MAX_CHUNK_SIZE)
const arr = Array(n).fill(0)
const pubc = cert.pub(key)
arr.forEach((_,i)=>{
arr.forEach((_, i) => {
const f = crypto.publicEncrypt({
key:pubc,
padding:crypto.constants.RSA_PKCS1_PADDING, // RSA_PKCS1_OAEP_PADDING
}, buf.subarray(i*MAX_CHUNK_SIZE,i*MAX_CHUNK_SIZE+MAX_CHUNK_SIZE))
finalBuf = Buffer.concat([finalBuf,f])
key: pubc,
padding: crypto.constants.RSA_PKCS1_PADDING, // RSA_PKCS1_OAEP_PADDING
}, buf.subarray(i * MAX_CHUNK_SIZE, i * MAX_CHUNK_SIZE + MAX_CHUNK_SIZE))
finalBuf = Buffer.concat([finalBuf, f])
})
return finalBuf.toString('base64')
} catch(e) {
} catch (e) {
return ''
}
}
export function decrypt(privateKey, enc){
try{
export function decrypt(privateKey, enc) {
try {
const buf = Buffer.from(enc, 'base64')
let finalDec = ''
const n = Math.ceil(buf.length/BLOCK_SIZE)
const n = Math.ceil(buf.length / BLOCK_SIZE)
const arr = Array(n).fill(0)
const privc = cert.priv(privateKey)
arr.forEach((_,i)=>{
arr.forEach((_, i) => {
const b = crypto.privateDecrypt({
key:privc,
padding:crypto.constants.RSA_PKCS1_PADDING,
}, buf.subarray(i*BLOCK_SIZE,i*BLOCK_SIZE+BLOCK_SIZE))
key: privc,
padding: crypto.constants.RSA_PKCS1_PADDING,
}, buf.subarray(i * BLOCK_SIZE, i * BLOCK_SIZE + BLOCK_SIZE))
finalDec += b.toString('utf-8')
})
return finalDec
} catch(e) {
} catch (e) {
return ''
}
}
export function genKeys(): Promise<{[k:string]:string}>{
return new Promise((resolve, reject)=>{
export function genKeys(): Promise<{ [k: string]: string }> {
return new Promise((resolve, reject) => {
crypto.generateKeyPair('rsa', {
modulusLength: 2048
}, (err, publicKey, privKey)=>{
}, (err, publicKey, privKey) => {
const pubPEM = publicKey.export({
type:'pkcs1',format:'pem'
type: 'pkcs1', format: 'pem'
})
const pubBase64 = cert.unpub(pubPEM)
const privPEM = privKey.export({
type:'pkcs1',format:'pem'
type: 'pkcs1', format: 'pem'
})
const privBase64 = cert.unpriv(privPEM)
resolve({
@ -64,12 +64,12 @@ export function genKeys(): Promise<{[k:string]:string}>{
})
}
export function testRSA(){
export function testRSA() {
crypto.generateKeyPair('rsa', {
modulusLength: 2048
}, (err, publicKey, privateKey)=>{
}, (err, publicKey, privateKey) => {
const pubPEM = publicKey.export({
type:'pkcs1',format:'pem'
type: 'pkcs1', format: 'pem'
})
const pub = cert.unpub(pubPEM)
@ -77,34 +77,34 @@ export function testRSA(){
const enc = encrypt(pub, msg)
const privPEM = privateKey.export({
type:'pkcs1',format:'pem'
type: 'pkcs1', format: 'pem'
})
const priv = cert.unpriv(privPEM)
const dec = decrypt(priv, enc)
console.log("SUCESS:",msg===dec)
console.log("SUCESS:", msg === dec)
})
}
const cert = {
unpub: function(key){
unpub: function (key) {
let s = key
s = s.replace('-----BEGIN RSA PUBLIC KEY-----','')
s = s.replace('-----END RSA PUBLIC KEY-----','')
s = s.replace('-----BEGIN RSA PUBLIC KEY-----', '')
s = s.replace('-----END RSA PUBLIC KEY-----', '')
return s.replace(/[\r\n]+/gm, '')
},
unpriv: function(key){
unpriv: function (key) {
let s = key
s = s.replace('-----BEGIN RSA PRIVATE KEY-----','')
s = s.replace('-----END RSA PRIVATE KEY-----','')
s = s.replace('-----BEGIN RSA PRIVATE KEY-----', '')
s = s.replace('-----END RSA PRIVATE KEY-----', '')
return s.replace(/[\r\n]+/gm, '')
},
pub:function(key){
pub: function (key) {
return '-----BEGIN RSA PUBLIC KEY-----\n' +
key + '\n' +
'-----END RSA PUBLIC KEY-----'
},
priv:function(key){
priv: function (key) {
return '-----BEGIN RSA PRIVATE KEY-----\n' +
key + '\n' +
'-----END RSA PRIVATE KEY-----'

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save