Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

15 changed files with 23 additions and 46 deletions

View file

@ -12,7 +12,6 @@ if (!channelID) {
const assert = require("assert/strict")
const sqlite = require("better-sqlite3")
const path = require("path")
const backfill = new sqlite("scripts/backfill.db")
backfill.prepare("CREATE TABLE IF NOT EXISTS backfill (channel_id TEXT NOT NULL, message_id INTEGER NOT NULL, PRIMARY KEY (channel_id, message_id))").run()
@ -20,10 +19,9 @@ const HeatSync = require("heatsync")
const {reg} = require("../src/matrix/read-registration")
const passthrough = require("../src/passthrough")
const {getDatabase} = require("../src/db/database")
const sync = new HeatSync({watchFS: false})
const db = getDatabase()
const db = new sqlite("ooye.db")
Object.assign(passthrough, {sync, db})
const DiscordClient = require("../src/d2m/discord-client")

View file

@ -4,9 +4,10 @@
// Trigger the database migration flow and exit after committing.
// You can use this to run migrations locally and check the result using sqlitebrowser.
const sqlite = require("better-sqlite3")
const passthrough = require("../src/passthrough")
const {getDatabase} = require("../src/db/database")
const db = getDatabase()
const db = new sqlite("ooye.db")
const migrate = require("../src/db/migrate")
Object.assign(passthrough, {db})

View file

@ -16,8 +16,7 @@ const oldAT = reg.old_bridge.as_token
const newAT = reg.as_token
const oldDB = new sqlite(reg.old_bridge.database)
const {getDatabase} = require("../src/db/database")
const db = getDatabase()
const db = new sqlite("ooye.db")
db.exec(`CREATE TABLE IF NOT EXISTS half_shot_migration (
discord_channel TEXT NOT NULL,

View file

@ -3,8 +3,8 @@
const HeatSync = require("heatsync")
const sync = new HeatSync({watchFS: false})
const {getDatabase} = require("../src/db/database")
const db = getDatabase()
const sqlite = require("better-sqlite3")
const db = new sqlite("db/ooye.db")
const passthrough = require("../src/passthrough")
Object.assign(passthrough, {db, sync})

View file

@ -1,12 +1,12 @@
#!/usr/bin/env node
// @ts-check
const sqlite = require("better-sqlite3")
const HeatSync = require("heatsync")
const {reg} = require("../src/matrix/read-registration")
const passthrough = require("../src/passthrough")
const {getDatabase} = require("../src/db/database")
const db = getDatabase()
const db = new sqlite("ooye.db")
const sync = new HeatSync({watchFS: false})

View file

@ -1,11 +1,11 @@
#!/usr/bin/env node
// @ts-check
const sqlite = require("better-sqlite3")
const HeatSync = require("heatsync")
const passthrough = require("../src/passthrough")
const {getDatabase} = require("../src/db/database")
const db = getDatabase()
const db = new sqlite("ooye.db")
const sync = new HeatSync({watchFS: false})

View file

@ -34,8 +34,7 @@ if (fs.existsSync("db")) {
}
const passthrough = require("../src/passthrough")
const {getDatabase} = require("../src/db/database")
const db = getDatabase()
const db = new sqlite("ooye.db")
const migrate = require("../src/db/migrate")
const sync = new HeatSync({watchFS: false})

View file

@ -4,13 +4,13 @@
const {createServer} = require("http")
const EventEmitter = require("events")
const {createApp, createRouter, toNodeListener} = require("h3")
const sqlite = require("better-sqlite3")
const migrate = require("../src/db/migrate")
const HeatSync = require("heatsync")
const {reg} = require("../src/matrix/read-registration")
const passthrough = require("../src/passthrough")
const {getDatabase} = require("../src/db/database")
const db = getDatabase()
const db = new sqlite("ooye.db")
const sync = new HeatSync()

View file

@ -1,7 +1,7 @@
#!/usr/bin/env node
// @ts-check
const {getDatabase} = require("../src/db/database")
const db = getDatabase({fileMustExist: true})
const sqlite = require("better-sqlite3")
const db = new sqlite("ooye.db", {fileMustExist: true})
db.pragma("journal_mode = wal")
db.close()

View file

@ -40,9 +40,7 @@ const PRIVACY_ENUMS = {
const DEFAULT_PRIVACY_LEVEL = 0
function getReadOnlyRoomEventsDefaultPower() {
return reg.ooye.read_only_room_events_default_power ?? 50
}
const READ_ONLY_ROOM_EVENTS_DEFAULT_POWER = 50
/** @type {Map<string, Promise<string>>} channel ID -> Promise<room ID> */
const inflightRoomCreate = new Map()
@ -150,7 +148,7 @@ async function channelToKState(channel, guild, di) {
"m.room.join_rules/": join_rules,
/** @type {Ty.Event.M_Power_Levels} */
"m.room.power_levels/": {
events_default: everyoneCanSend ? 0 : getReadOnlyRoomEventsDefaultPower(),
events_default: everyoneCanSend ? 0 : READ_ONLY_ROOM_EVENTS_DEFAULT_POWER,
events: {
"m.reaction": 0,
"m.room.redaction": 0 // only affects redactions of own events, required to be able to un-react
@ -561,7 +559,7 @@ async function createAllForGuild(guildID) {
}
module.exports.DEFAULT_PRIVACY_LEVEL = DEFAULT_PRIVACY_LEVEL
module.exports.getReadOnlyRoomEventsDefaultPower = getReadOnlyRoomEventsDefaultPower
module.exports.READ_ONLY_ROOM_EVENTS_DEFAULT_POWER = READ_ONLY_ROOM_EVENTS_DEFAULT_POWER
module.exports.PRIVACY_ENUMS = PRIVACY_ENUMS
module.exports.createRoom = createRoom
module.exports.ensureRoom = ensureRoom

View file

@ -165,7 +165,7 @@ function memberToPowerLevel(user, member, guild, channel) {
/* PL 50 = if room is read-only but the user has been specially allowed to send messages */
const everyoneCanSend = utils.hasPermission(everyonePermissions, DiscordTypes.PermissionFlagsBits.SendMessages)
const userCanSend = utils.hasPermission(permissions, DiscordTypes.PermissionFlagsBits.SendMessages)
if (!everyoneCanSend && userCanSend) return createRoom.getReadOnlyRoomEventsDefaultPower()
if (!everyoneCanSend && userCanSend) return createRoom.READ_ONLY_ROOM_EVENTS_DEFAULT_POWER
/* PL 20 = Mention Everyone for technical reasons. */
const everyoneCanMentionEveryone = utils.hasPermission(everyonePermissions, DiscordTypes.PermissionFlagsBits.MentionEveryone)
const userCanMentionEveryone = utils.hasPermission(permissions, DiscordTypes.PermissionFlagsBits.MentionEveryone)

View file

@ -1,16 +0,0 @@
// @ts-check
const sqlite = require("better-sqlite3")
const path = require("path")
/**
* Create a new SQLite database instance
* @param {import("better-sqlite3").Options} [options] - SQLite options
* @returns {import("better-sqlite3").Database} Database instance
*/
function getDatabase(options = {}) {
const dataDir = process.env.OOYE_DATA_DIR || process.cwd()
return new sqlite(path.join(dataDir, "ooye.db"), options)
}
module.exports = {getDatabase}

View file

@ -5,8 +5,7 @@ const crypto = require("crypto")
const assert = require("assert").strict
const path = require("path")
const dataDir = process.env.OOYE_DATA_DIR || process.cwd()
const registrationFilePath = path.join(dataDir, "registration.yaml")
const registrationFilePath = path.join(process.cwd(), "registration.yaml")
/** @param {import("../types").AppServiceRegistrationConfig} reg */
function checkRegistration(reg) {

1
src/types.d.ts vendored
View file

@ -31,7 +31,6 @@ export type AppServiceRegistrationConfig = {
discord_origin?: string
discord_cdn_origin?: string,
web_password: string
read_only_room_events_default_power?: number
}
old_bridge?: {
as_token: string

View file

@ -2,13 +2,13 @@
// @ts-check
const fs = require("fs")
const sqlite = require("better-sqlite3")
const migrate = require("./src/db/migrate")
const HeatSync = require("heatsync")
const {reg} = require("./src/matrix/read-registration")
const passthrough = require("./src/passthrough")
const {getDatabase} = require("./src/db/database")
const db = getDatabase()
const db = new sqlite("ooye.db")
const sync = new HeatSync({watchFunction: fs.watchFile})