mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-15 00:38:27 +00:00
Merge commit 'e2d9635074ad33cc8144adc434bcd90faae9c424' into glitch-soc/merge-upstream
This commit is contained in:
@@ -16,7 +16,7 @@ const WebSocket = require('ws');
|
||||
|
||||
const { logger, httpLogger, initializeLogLevel, attachWebsocketHttpLogger, createWebsocketLogger } = require('./logging');
|
||||
const { setupMetrics } = require('./metrics');
|
||||
const { isTruthy } = require("./utils");
|
||||
const { isTruthy, normalizeHashtag, firstParam } = require("./utils");
|
||||
|
||||
const environment = process.env.NODE_ENV || 'development';
|
||||
|
||||
@@ -1117,34 +1117,6 @@ const startServer = async () => {
|
||||
return arr;
|
||||
};
|
||||
|
||||
/**
|
||||
* See app/lib/ascii_folder.rb for the canon definitions
|
||||
* of these constants
|
||||
*/
|
||||
const NON_ASCII_CHARS = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž';
|
||||
const EQUIVALENT_ASCII_CHARS = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz';
|
||||
|
||||
/**
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
const foldToASCII = str => {
|
||||
const regex = new RegExp(NON_ASCII_CHARS.split('').join('|'), 'g');
|
||||
|
||||
return str.replace(regex, match => {
|
||||
const index = NON_ASCII_CHARS.indexOf(match);
|
||||
return EQUIVALENT_ASCII_CHARS[index];
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} str
|
||||
* @returns {string}
|
||||
*/
|
||||
const normalizeHashtag = str => {
|
||||
return foldToASCII(str.normalize('NFKC').toLowerCase()).replace(/[^\p{L}\p{N}_\u00b7\u200c]/gu, '');
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {any} req
|
||||
* @param {string} name
|
||||
@@ -1401,18 +1373,6 @@ const startServer = async () => {
|
||||
connectedChannels.labels({ type: 'websocket', channel: 'system' }).inc(2);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string|string[]} arrayOrString
|
||||
* @returns {string}
|
||||
*/
|
||||
const firstParam = arrayOrString => {
|
||||
if (Array.isArray(arrayOrString)) {
|
||||
return arrayOrString[0];
|
||||
} else {
|
||||
return arrayOrString;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {WebSocket & { isAlive: boolean }} ws
|
||||
* @param {http.IncomingMessage & ResolvedAccount} req
|
||||
|
||||
Reference in New Issue
Block a user