Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions bin/u-wave-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

/* eslint-disable n/no-process-exit */
import fs from 'node:fs';
import Ajv from 'ajv';
import addFormats from 'ajv-formats';
import { Ajv } from 'ajv';
import ajvFormats from 'ajv-formats';
import ytSource from 'u-wave-source-youtube';
import scSource from 'u-wave-source-soundcloud';
import announce from 'u-wave-announce';
Expand All @@ -26,7 +26,7 @@ const ajv = new Ajv({
hexadecimal: /^[0-9a-fA-F]+$/,
},
});
addFormats(ajv);
ajvFormats.default(ajv);

const envSchema = {
type: 'object',
Expand Down
6 changes: 3 additions & 3 deletions src/SocketServer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { promisify } from 'node:util';
import lodash from 'lodash';
import { WebSocketServer } from 'ws';
import Ajv from 'ajv';
import { Ajv } from 'ajv';
import { stdSerializers } from 'pino';
import { ulid, encodeTime } from 'ulid';
import { socketVote } from './controllers/booth.js';
Expand Down Expand Up @@ -405,7 +405,7 @@ class SocketServer {
const user = await users.getUser(userID);
if (user) {
// TODO this should not be the socket server code's responsibility
const userIDs = /** @type {import('./schema').UserID[] | null} */ (
const userIDs = /** @type {import('./schema.js').UserID[] | null} */ (
await keyv.get(KEY_ACTIVE_SESSIONS)
) ?? [];
userIDs.push(user.id);
Expand Down Expand Up @@ -468,7 +468,7 @@ class SocketServer {
*/
async initLostConnections() {
const { db, keyv } = this.#uw;
const userIDs = /** @type {import('./schema').UserID[] | null} */ (
const userIDs = /** @type {import('./schema.js').UserID[] | null} */ (
await keyv.get(KEY_ACTIVE_SESSIONS)
) ?? [];
const disconnectedIDs = userIDs.filter((userID) => !this.connection(userID));
Expand Down
2 changes: 1 addition & 1 deletion src/config/defaultRoles.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const manager = [
'motd.set',
];

/** @typedef {Record<string, import("../schema").Permission[]>} PermissionMap */
/** @typedef {Record<string, import('../schema.js').Permission[]>} PermissionMap */

export default /** @type {PermissionMap} */ (/** @type {Record<string, unknown[]>} */ ({
admin,
Expand Down
4 changes: 2 additions & 2 deletions src/controllers/authenticate.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { t } from '../locale.js';
const { BadRequest } = httpErrors;

/**
* @typedef {import('../schema').UserID} UserID
* @typedef {import('../schema.js').UserID} UserID
* @typedef {import('../schema.js').PasswordResetToken} PasswordResetToken
*/

Expand Down Expand Up @@ -65,7 +65,7 @@ async function getAuthStrategies(req) {

/**
* @param {import('../types.js').Request} req
* @param {import('../schema').User} user
* @param {import('../schema.js').User} user
* @param {AuthenticateOptions & { session: 'cookie' | 'token' }} options
*/
async function refreshSession(req, user, options) {
Expand Down
2 changes: 1 addition & 1 deletion src/controllers/bans.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import getOffsetPagination from '../utils/getOffsetPagination.js';
import toItemResponse from '../utils/toItemResponse.js';
import toPaginatedResponse from '../utils/toPaginatedResponse.js';

/** @typedef {import('../schema').UserID} UserID */
/** @typedef {import('../schema.js').UserID} UserID */

/**
* @typedef {object} GetBansQuery
Expand Down
8 changes: 4 additions & 4 deletions src/controllers/booth.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import toPaginatedResponse from '../utils/toPaginatedResponse.js';
import { Permissions } from '../plugins/acl.js';

/**
* @typedef {import('../schema').UserID} UserID
* @typedef {import('../schema').MediaID} MediaID
* @typedef {import('../schema').PlaylistID} PlaylistID
* @typedef {import('../schema').HistoryEntryID} HistoryEntryID
* @typedef {import('../schema.js').UserID} UserID
* @typedef {import('../schema.js').MediaID} MediaID
* @typedef {import('../schema.js').PlaylistID} PlaylistID
* @typedef {import('../schema.js').HistoryEntryID} HistoryEntryID
*/

const KEY_HISTORY_ID = 'booth:historyID';
Expand Down
4 changes: 2 additions & 2 deletions src/controllers/chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import toItemResponse from '../utils/toItemResponse.js';
import toListResponse from '../utils/toListResponse.js';

/**
* @typedef {import('../schema').UserID} UserID
* @typedef {import('../schema.js').UserID} UserID
* @typedef {import('../redisMessages.js').ServerActionParameters} ServerActionParameters
*/

Expand Down Expand Up @@ -164,7 +164,7 @@ async function getBackscroll(req) {
*/

/**
* @type {import('../types').AuthenticatedController<{}, {}, SendMessageBody>}
* @type {import('../types.js').AuthenticatedController<{}, {}, SendMessageBody>}
*/
async function sendMessage(req) {
const { user } = req;
Expand Down
10 changes: 5 additions & 5 deletions src/controllers/playlists.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ import toListResponse from '../utils/toListResponse.js';
import toPaginatedResponse from '../utils/toPaginatedResponse.js';

/**
* @typedef {import('../schema').PlaylistID} PlaylistID
* @typedef {import('../schema').PlaylistItemID} PlaylistItemID
* @typedef {import('../schema').MediaID} MediaID
* @typedef {import('../schema.js').PlaylistID} PlaylistID
* @typedef {import('../schema.js').PlaylistItemID} PlaylistItemID
* @typedef {import('../schema.js').MediaID} MediaID
*/

/**
* TODO move to a serializer?
*
* @param {Pick<
* import('../schema').PlaylistItem,
* import('../schema.js').PlaylistItem,
* 'id' | 'artist' | 'title' | 'start' | 'end' | 'createdAt'
* >} playlistItem
* @param {Pick<
* import('../schema').Media,
* import('../schema.js').Media,
* 'id' | 'sourceType' | 'sourceID' | 'sourceData' | 'artist' | 'title' | 'duration' | 'thumbnail'
* >} media
*/
Expand Down
2 changes: 1 addition & 1 deletion src/controllers/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { muteUser, unmuteUser } from './chat.js';
import { KEY_ACTIVE_SESSIONS } from '../SocketServer.js';

/**
* @typedef {import('../schema').UserID} UserID
* @typedef {import('../schema.js').UserID} UserID
*/

/**
Expand Down
6 changes: 3 additions & 3 deletions src/middleware/schema.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import assert from 'node:assert';
import fs from 'node:fs';
import Ajv from 'ajv/dist/2019.js';
import addFormats from 'ajv-formats';
import { Ajv2019 as Ajv } from 'ajv/dist/2019.js';
import ajvFormats from 'ajv-formats';
import ValidationError from '../errors/ValidationError.js';

const ajv = new Ajv({
Expand All @@ -11,11 +11,11 @@
ownProperties: true,
allErrors: true,
});
addFormats(ajv);
ajvFormats.default(ajv);
ajv.addMetaSchema(JSON.parse(fs.readFileSync(new URL('../../node_modules/ajv/dist/refs/json-schema-draft-07.json', import.meta.url), 'utf8')));
ajv.addSchema(JSON.parse(fs.readFileSync(new URL('../schemas/definitions.json', import.meta.url), 'utf8')));

const alwaysTrue = Object.assign(function () {

Check warning on line 18 in src/middleware/schema.js

View workflow job for this annotation

GitHub Actions / Code style

Unexpected unnamed function
return true;
}, { errors: null });

Expand Down
6 changes: 3 additions & 3 deletions src/plugins/configStore.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import assert from 'node:assert';
import fs from 'node:fs';
import EventEmitter from 'node:events';
import Ajv from 'ajv/dist/2019.js';
import formats from 'ajv-formats';
import { Ajv2019 as Ajv } from 'ajv/dist/2019.js';
import ajvFormats from 'ajv-formats';
import jsonMergePatch from 'json-merge-patch';
import ValidationError from '../errors/ValidationError.js';
import { sql } from 'kysely';
Expand Down Expand Up @@ -49,7 +49,7 @@ class ConfigStore {
strict: false,
strictTypes: true,
});
formats(this.#ajv);
ajvFormats.default(this.#ajv);
this.#ajv.addMetaSchema(JSON.parse(
fs.readFileSync(new URL('../../node_modules/ajv/dist/refs/json-schema-draft-07.json', import.meta.url), 'utf8'),
));
Expand Down
2 changes: 1 addition & 1 deletion src/schema.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Kysely as KyselyBase, Generated } from 'kysely';
import type { JsonObject, JsonValue, Tagged } from 'type-fest'; // eslint-disable-line n/no-unpublished-import
import type { JSONB } from './utils/sqlite';
import type { JSONB } from './utils/sqlite.js'; // eslint-disable-line n/no-missing-import

export type UserID = Tagged<string, 'UserID'>;
export type MediaID = Tagged<string, 'MediaID'>;
Expand Down
9 changes: 6 additions & 3 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,19 @@
"extends": "@tsconfig/node20/tsconfig.json",
"compilerOptions": {
"strict": true,
"module": "es2022",
"moduleResolution": "node",
"module": "node20",
"moduleResolution": "node16",
"allowSyntheticDefaultImports": true,
"useUnknownInCatchVariables": false,
"allowJs": true,
"checkJs": true,
"rootDir": "src",
"outDir": "types",
"declaration": true,
"emitDeclarationOnly": true
"emitDeclarationOnly": true,
"types": [
"node"
]
},
"include": [
"src/**/*.js",
Expand Down
Loading