Merge branch 'develop' of https://codeberg.org/calckey/calckey into upstream/develop

This commit is contained in:
Freeplay 2023-06-05 20:54:25 -04:00
commit bea409b4fa
14 changed files with 6159 additions and 3730 deletions

File diff suppressed because it is too large Load diff

View file

@ -2,66 +2,98 @@
* Gulp tasks * Gulp tasks
*/ */
const fs = require('fs'); const fs = require("fs");
const gulp = require('gulp'); const gulp = require("gulp");
const replace = require('gulp-replace'); const replace = require("gulp-replace");
const terser = require('gulp-terser'); const terser = require("gulp-terser");
const cssnano = require('gulp-cssnano'); const cssnano = require("gulp-cssnano");
const locales = require('./locales'); const locales = require("./locales");
const meta = require('./package.json'); const meta = require("./package.json");
gulp.task('copy:backend:views', () => gulp.task("copy:backend:views", () =>
gulp.src('./packages/backend/src/server/web/views/**/*').pipe(gulp.dest('./packages/backend/built/server/web/views')) gulp
.src("./packages/backend/src/server/web/views/**/*")
.pipe(gulp.dest("./packages/backend/built/server/web/views")),
); );
gulp.task("copy:backend:custom", () =>
gulp.task('copy:backend:custom', () => gulp
gulp.src('./custom/assets/**/*').pipe(gulp.dest('./packages/backend/assets/')) .src("./custom/assets/**/*")
.pipe(gulp.dest("./packages/backend/assets/")),
); );
gulp.task('copy:client:fonts', () => gulp.task("copy:client:fonts", () =>
gulp.src('./packages/client/node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/_client_dist_/fonts/')) gulp
.src("./packages/client/node_modules/three/examples/fonts/**/*")
.pipe(gulp.dest("./built/_client_dist_/fonts/")),
); );
gulp.task('copy:client:locales', cb => { gulp.task("copy:client:locales", (cb) => {
fs.mkdirSync('./built/_client_dist_/locales', { recursive: true }); fs.mkdirSync("./built/_client_dist_/locales", { recursive: true });
const v = { '_version_': meta.version }; const v = { _version_: meta.version };
for (const [lang, locale] of Object.entries(locales)) { for (const [lang, locale] of Object.entries(locales)) {
fs.writeFileSync(`./built/_client_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8'); fs.writeFileSync(
`./built/_client_dist_/locales/${lang}.${meta.version}.json`,
JSON.stringify({ ...locale, ...v }),
"utf-8",
);
} }
cb(); cb();
}); });
gulp.task("build:backend:script", () => {
gulp.task('build:backend:script', () => { return gulp
return gulp.src(['./packages/backend/src/server/web/boot.js', './packages/backend/src/server/web/bios.js', './packages/backend/src/server/web/cli.js']) .src([
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales)))) "./packages/backend/src/server/web/boot.js",
.pipe(terser({ "./packages/backend/src/server/web/bios.js",
toplevel: true "./packages/backend/src/server/web/cli.js",
})) ])
.pipe(gulp.dest('./packages/backend/built/server/web/')); .pipe(replace("LANGS", JSON.stringify(Object.keys(locales))))
.pipe(
terser({
toplevel: true,
}),
)
.pipe(gulp.dest("./packages/backend/built/server/web/"));
}); });
gulp.task('build:backend:style', () => { gulp.task("build:backend:style", () => {
return gulp.src(['./packages/backend/src/server/web/style.css', './packages/backend/src/server/web/bios.css', './packages/backend/src/server/web/cli.css']) return gulp
.pipe(cssnano({ .src([
zindex: false "./packages/backend/src/server/web/style.css",
})) "./packages/backend/src/server/web/bios.css",
.pipe(gulp.dest('./packages/backend/built/server/web/')); "./packages/backend/src/server/web/cli.css",
])
.pipe(
cssnano({
zindex: false,
}),
)
.pipe(gulp.dest("./packages/backend/built/server/web/"));
}); });
gulp.task('build', gulp.parallel( gulp.task(
'copy:client:locales', 'copy:backend:views', 'copy:backend:custom', 'build:backend:script', 'build:backend:style', 'copy:client:fonts' "build",
)); gulp.parallel(
"copy:client:locales",
"copy:backend:views",
"copy:backend:custom",
"build:backend:script",
"build:backend:style",
"copy:client:fonts",
),
);
gulp.task('default', gulp.task('build')); gulp.task("default", gulp.task("build"));
gulp.task('watch', () => { gulp.task("watch", () => {
gulp.watch([ gulp.watch(
'./packages/*/src/**/*', ["./packages/*/src/**/*"],
], { ignoreInitial: false }, gulp.task('build')); { ignoreInitial: false },
gulp.task("build"),
);
}); });

View file

@ -55,7 +55,7 @@
"gulp-replace": "1.1.4", "gulp-replace": "1.1.4",
"gulp-terser": "2.1.0", "gulp-terser": "2.1.0",
"install-peers": "^1.0.4", "install-peers": "^1.0.4",
"rome": "^11.0.0", "rome": "^12.1.3",
"start-server-and-test": "1.15.2", "start-server-and-test": "1.15.2",
"typescript": "4.9.4" "typescript": "4.9.4"
} }

View file

@ -18,7 +18,7 @@
"lint": "pnpm rome check \"src/**/*.ts\"", "lint": "pnpm rome check \"src/**/*.ts\"",
"mocha": "cross-env NODE_ENV=test TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha", "mocha": "cross-env NODE_ENV=test TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha",
"test": "pnpm run mocha", "test": "pnpm run mocha",
"format": "pnpm rome format * --write && pnpm rome check --apply-suggested *" "format": "pnpm rome format * --write && pnpm rome check --apply *"
}, },
"resolutions": { "resolutions": {
"chokidar": "^3.3.1" "chokidar": "^3.3.1"

View file

@ -167,7 +167,7 @@ async function connectDb(): Promise<void> {
} }
} }
async function spawnWorkers(limit: number = 1) { async function spawnWorkers(limit = 1) {
const workers = Math.min(limit, os.cpus().length); const workers = Math.min(limit, os.cpus().length);
bootLogger.info(`Starting ${workers} worker${workers === 1 ? "" : "s"}...`); bootLogger.info(`Starting ${workers} worker${workers === 1 ? "" : "s"}...`);
await Promise.all([...Array(workers)].map(spawnWorker)); await Promise.all([...Array(workers)].map(spawnWorker));

View file

@ -67,8 +67,6 @@ export function parseUri(value: string | IObject): UriParseResult {
} }
export default class DbResolver { export default class DbResolver {
constructor() {}
/** /**
* AP Note => Misskey Note in DB * AP Note => Misskey Note in DB
*/ */

View file

@ -11,8 +11,6 @@ export class LdSignature {
public preLoad = true; public preLoad = true;
public loderTimeout = 10 * 1000; public loderTimeout = 10 * 1000;
constructor() {}
public async signRsaSignature2017( public async signRsaSignature2017(
data: any, data: any,
privateKey: string, privateKey: string,

View file

@ -46,7 +46,7 @@ export default class Connection {
private channels: Channel[] = []; private channels: Channel[] = [];
private subscribingNotes: Map<string, number> = new Map(); private subscribingNotes: Map<string, number> = new Map();
private cachedNotes: Packed<"Note">[] = []; private cachedNotes: Packed<"Note">[] = [];
private isMastodonCompatible: boolean = false; private isMastodonCompatible = false;
private host: string; private host: string;
private accessToken: string; private accessToken: string;
private currentSubscribe: string[][] = []; private currentSubscribe: string[][] = [];

View file

@ -14,7 +14,7 @@ export async function convertToWebp(
path: string, path: string,
width: number, width: number,
height: number, height: number,
quality: number = 85, quality = 85,
): Promise<IImage> { ): Promise<IImage> {
return convertSharpToWebp(await sharp(path), width, height, quality); return convertSharpToWebp(await sharp(path), width, height, quality);
} }
@ -23,7 +23,7 @@ export async function convertSharpToWebp(
sharp: sharp.Sharp, sharp: sharp.Sharp,
width: number, width: number,
height: number, height: number,
quality: number = 85, quality = 85,
): Promise<IImage> { ): Promise<IImage> {
const data = await sharp const data = await sharp
.resize(width, height, { .resize(width, height, {

View file

@ -14,7 +14,7 @@ function parseSingleKaTeXMacro(src: string): [string, KaTeXMacro] {
if (!src.startsWith("\\newcommand") || src.slice(-1) !== "}") return invalid; if (!src.startsWith("\\newcommand") || src.slice(-1) !== "}") return invalid;
// current index we are checking (= "\\newcommand".length) // current index we are checking (= "\\newcommand".length)
let currentPos: number = 11; let currentPos = 11;
currentPos = skipSpaces(currentPos); currentPos = skipSpaces(currentPos);
// parse {\name}, (\name), or [\name] // parse {\name}, (\name), or [\name]
@ -61,8 +61,8 @@ function parseSingleKaTeXMacro(src: string): [string, KaTeXMacro] {
currentPos = skipSpaces(currentPos); currentPos = skipSpaces(currentPos);
while (currentPos < src.length - 1) { while (currentPos < src.length - 1) {
let numbersignPos: number = -1; let numbersignPos = -1;
let isEscaped: boolean = false; let isEscaped = false;
for (let i = currentPos; i < src.length - 1; ++i) { for (let i = currentPos; i < src.length - 1; ++i) {
if (src[i] !== "\\" && src[i] !== "#") { if (src[i] !== "\\" && src[i] !== "#") {

View file

@ -7,7 +7,7 @@ export class StickySidebar {
private isTop = false; private isTop = false;
private isBottom = false; private isBottom = false;
private offsetTop: number; private offsetTop: number;
private globalHeaderHeight: number = 59; private globalHeaderHeight = 59;
constructor( constructor(
container: StickySidebar["container"], container: StickySidebar["container"],

View file

@ -5,7 +5,7 @@
"build": "webpack", "build": "webpack",
"watch": "pnpm swc src -d built -D -w", "watch": "pnpm swc src -d built -D -w",
"lint": "pnpm rome check \"src/**/*.ts\"", "lint": "pnpm rome check \"src/**/*.ts\"",
"format": "pnpm rome format * --write && pnpm rome check --apply-suggested *" "format": "pnpm rome format * --write && pnpm rome check --apply *"
}, },
"devDependencies": { "devDependencies": {
"@swc/cli": "^0.1.62", "@swc/cli": "^0.1.62",

View file

@ -64,8 +64,8 @@ importers:
specifier: ^1.0.4 specifier: ^1.0.4
version: 1.0.4 version: 1.0.4
rome: rome:
specifier: ^11.0.0 specifier: ^12.1.3
version: 11.0.0 version: 12.1.3
start-server-and-test: start-server-and-test:
specifier: 1.15.2 specifier: 1.15.2
version: 1.15.2 version: 1.15.2
@ -2666,48 +2666,48 @@ packages:
picomatch: 2.3.1 picomatch: 2.3.1
dev: true dev: true
/@rometools/cli-darwin-arm64@11.0.0: /@rometools/cli-darwin-arm64@12.1.3:
resolution: {integrity: sha512-F3vkdY+s3FLIEnAjSbyHTuIPB88cLpccimW4ecid5I7S6GzGG3iUJI4xT00JhH73K4P/qW20/9r+kH1T9Du8Xg==} resolution: {integrity: sha512-AmFTUDYjBuEGQp/Wwps+2cqUr+qhR7gyXAUnkL5psCuNCz3807TrUq/ecOoct5MIavGJTH6R4aaSL6+f+VlBEg==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rometools/cli-darwin-x64@11.0.0: /@rometools/cli-darwin-x64@12.1.3:
resolution: {integrity: sha512-X6jhtS6Iml4GOzgNtnLwIp/KXXhSdqeVyfv69m/AHnIzx3gQAjPZ7BPnJLvTCbhe4SKHL+uTZYFSCJpkUUKE6w==} resolution: {integrity: sha512-k8MbWna8q4LRlb005N2X+JS1UQ+s3ZLBBvwk4fP8TBxlAJXUz17jLLu/Fi+7DTTEmMhM84TWj4FDKW+rNar28g==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rometools/cli-linux-arm64@11.0.0: /@rometools/cli-linux-arm64@12.1.3:
resolution: {integrity: sha512-dktTJJlTpmycBZ2TwhJBcAO8ztK8DdevdyZnFFxdYRvtmJgTjIsC2UFayf/SbKew8B8q1IhI0it+D6ihAeIpeg==} resolution: {integrity: sha512-X/uLhJ2/FNA3nu5TiyeNPqiD3OZoFfNfRvw6a3ut0jEREPvEn72NI7WPijH/gxSz55znfQ7UQ6iM4DZumUknJg==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rometools/cli-linux-x64@11.0.0: /@rometools/cli-linux-x64@12.1.3:
resolution: {integrity: sha512-WVcnXPNdWGUWo0p4NU8YzuthjYR7q+b4vRcjdxtP1DlpphZmSsoC/RSE85nEqRAz8hChcKUansVzOPM8BSsuGA==} resolution: {integrity: sha512-csP17q1eWiUXx9z6Jr/JJPibkplyKIwiWPYNzvPCGE8pHlKhwZj3YHRuu7Dm/4EOqx0XFIuqqWZUYm9bkIC8xg==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rometools/cli-win32-arm64@11.0.0: /@rometools/cli-win32-arm64@12.1.3:
resolution: {integrity: sha512-tPj6RThQzS7Q45jqQll7NlTYvNcsg/BEP3LYiiazqSh9FAFnMkrV6ewUcMPKWyAfiyLs7jlz4rRvdNRUSygzfQ==} resolution: {integrity: sha512-RymHWeod57EBOJY4P636CgUwYA6BQdkQjh56XKk4pLEHO6X1bFyMet2XL7KlHw5qOTalzuzf5jJqUs+vf3jdXQ==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rometools/cli-win32-x64@11.0.0: /@rometools/cli-win32-x64@12.1.3:
resolution: {integrity: sha512-bmBai8WHxYjsGk1+je7ZTfCUCWq30WJI3pQM8pzTA674lfGTZ9ymJoZwTaIMSO4rL5V9mlO6uLunsBKso9VqOg==} resolution: {integrity: sha512-yHSKYidqJMV9nADqg78GYA+cZ0hS1twANAjiFibQdXj9aGzD+s/IzIFEIi/U/OBLvWYg/SCw0QVozi2vTlKFDQ==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
@ -13531,18 +13531,18 @@ packages:
fsevents: 2.3.2 fsevents: 2.3.2
dev: true dev: true
/rome@11.0.0: /rome@12.1.3:
resolution: {integrity: sha512-rRo6JOwpMLc3OkeTDRXkrmrDqnxDvZ75GS4f0jLDBNmRgDXWbu0F8eVnJoRn+VbK2AE7vWvhVOMBjnWowcopkQ==} resolution: {integrity: sha512-e+ff72hxDpe/t5/Us7YRBVw3PBET7SeczTQNn6tvrWdrCaAw3qOukQQ+tDCkyFtS4yGsnhjrJbm43ctNbz27Yg==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@rometools/cli-darwin-arm64': 11.0.0 '@rometools/cli-darwin-arm64': 12.1.3
'@rometools/cli-darwin-x64': 11.0.0 '@rometools/cli-darwin-x64': 12.1.3
'@rometools/cli-linux-arm64': 11.0.0 '@rometools/cli-linux-arm64': 12.1.3
'@rometools/cli-linux-x64': 11.0.0 '@rometools/cli-linux-x64': 12.1.3
'@rometools/cli-win32-arm64': 11.0.0 '@rometools/cli-win32-arm64': 12.1.3
'@rometools/cli-win32-x64': 11.0.0 '@rometools/cli-win32-x64': 12.1.3
dev: true dev: true
/rss-parser@3.13.0: /rss-parser@3.13.0:

View file

@ -16,6 +16,7 @@
"packages/backend/nsfw-model/", "packages/backend/nsfw-model/",
"packages/client/src/emojilist.json", "packages/client/src/emojilist.json",
"*.md", "*.md",
"**/tsconfig.json",
"*/.yml" "*/.yml"
] ]
} }