Streaming: Move more methods to the utils from the main file (#28825)
This commit is contained in:
		@@ -16,7 +16,7 @@ const WebSocket = require('ws');
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const { logger, httpLogger, initializeLogLevel, attachWebsocketHttpLogger, createWebsocketLogger } = require('./logging');
 | 
					const { logger, httpLogger, initializeLogLevel, attachWebsocketHttpLogger, createWebsocketLogger } = require('./logging');
 | 
				
			||||||
const { setupMetrics } = require('./metrics');
 | 
					const { setupMetrics } = require('./metrics');
 | 
				
			||||||
const { isTruthy } = require("./utils");
 | 
					const { isTruthy, normalizeHashtag, firstParam } = require("./utils");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const environment = process.env.NODE_ENV || 'development';
 | 
					const environment = process.env.NODE_ENV || 'development';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1110,34 +1110,6 @@ const startServer = async () => {
 | 
				
			|||||||
    return arr;
 | 
					    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 {any} req
 | 
				
			||||||
   * @param {string} name
 | 
					   * @param {string} name
 | 
				
			||||||
@@ -1380,18 +1352,6 @@ const startServer = async () => {
 | 
				
			|||||||
    connectedChannels.labels({ type: 'websocket', channel: 'system' }).inc(2);
 | 
					    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 {WebSocket & { isAlive: boolean }} ws
 | 
				
			||||||
   * @param {http.IncomingMessage & ResolvedAccount} req
 | 
					   * @param {http.IncomingMessage & ResolvedAccount} req
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,3 +20,50 @@ const isTruthy = value =>
 | 
				
			|||||||
  value && !FALSE_VALUES.includes(value);
 | 
					  value && !FALSE_VALUES.includes(value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.isTruthy = isTruthy;
 | 
					exports.isTruthy = isTruthy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 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}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function foldToASCII(str) {
 | 
				
			||||||
 | 
					  const regex = new RegExp(NON_ASCII_CHARS.split('').join('|'), 'g');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return str.replace(regex, function(match) {
 | 
				
			||||||
 | 
					    const index = NON_ASCII_CHARS.indexOf(match);
 | 
				
			||||||
 | 
					    return EQUIVALENT_ASCII_CHARS[index];
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports.foldToASCII = foldToASCII;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @param {string} str
 | 
				
			||||||
 | 
					 * @returns {string}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function normalizeHashtag(str) {
 | 
				
			||||||
 | 
					  return foldToASCII(str.normalize('NFKC').toLowerCase()).replace(/[^\p{L}\p{N}_\u00b7\u200c]/gu, '');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports.normalizeHashtag = normalizeHashtag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @param {string|string[]} arrayOrString
 | 
				
			||||||
 | 
					 * @returns {string}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function firstParam(arrayOrString) {
 | 
				
			||||||
 | 
					  if (Array.isArray(arrayOrString)) {
 | 
				
			||||||
 | 
					    return arrayOrString[0];
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    return arrayOrString;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports.firstParam = firstParam;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user