chore: port sql-regex-escape to backend-rs
This commit is contained in:
parent
ee33337a3f
commit
1df3680842
5 changed files with 13 additions and 6 deletions
1
packages/backend-rs/index.d.ts
vendored
1
packages/backend-rs/index.d.ts
vendored
|
@ -232,6 +232,7 @@ export function extractHost(uri: string): string
|
||||||
export function toPuny(host: string): string
|
export function toPuny(host: string): string
|
||||||
export function isUnicodeEmoji(s: string): boolean
|
export function isUnicodeEmoji(s: string): boolean
|
||||||
export function sqlLikeEscape(src: string): string
|
export function sqlLikeEscape(src: string): string
|
||||||
|
export function sqlRegexEscape(src: string): string
|
||||||
export function safeForSql(src: string): boolean
|
export function safeForSql(src: string): boolean
|
||||||
/** Convert milliseconds to a human readable string */
|
/** Convert milliseconds to a human readable string */
|
||||||
export function formatMilliseconds(milliseconds: number): string
|
export function formatMilliseconds(milliseconds: number): string
|
||||||
|
|
|
@ -310,7 +310,7 @@ if (!nativeBinding) {
|
||||||
throw new Error(`Failed to load native binding`)
|
throw new Error(`Failed to load native binding`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const { SECOND, MINUTE, HOUR, DAY, USER_ONLINE_THRESHOLD, USER_ACTIVE_THRESHOLD, FILE_TYPE_BROWSERSAFE, loadEnv, loadConfig, stringToAcct, acctToString, greet, initializeRustLogger, showServerInfo, isBlockedServer, isSilencedServer, isAllowedServer, checkWordMute, getFullApAccount, isSelfHost, isSameOrigin, extractHost, toPuny, isUnicodeEmoji, sqlLikeEscape, safeForSql, formatMilliseconds, getImageSizeFromUrl, getNoteSummary, isQuote, isSafeUrl, latestVersion, toMastodonId, fromMastodonId, fetchMeta, metaToPugArgs, nyaify, hashPassword, verifyPassword, isOldPasswordAlgorithm, decodeReaction, countReactions, toDbReaction, removeOldAttestationChallenges, cpuInfo, cpuUsage, memoryUsage, storageUsage, AntennaSrc, DriveFileUsageHint, MutedNoteReason, NoteVisibility, NotificationType, PageVisibility, PollNoteVisibility, RelayStatus, UserEmojiModPerm, UserProfileFfvisibility, UserProfileMutingNotificationTypes, updateAntennasOnNewNote, fetchNodeinfo, nodeinfo_2_1, nodeinfo_2_0, Protocol, Inbound, Outbound, watchNote, unwatchNote, PushNotificationKind, sendPushNotification, publishToChannelStream, ChatEvent, publishToChatStream, ChatIndexEvent, publishToChatIndexStream, publishToBroadcastStream, publishToGroupChatStream, publishToModerationStream, getTimestamp, genId, genIdAt, generateSecureRandomString, generateUserToken } = nativeBinding
|
const { SECOND, MINUTE, HOUR, DAY, USER_ONLINE_THRESHOLD, USER_ACTIVE_THRESHOLD, FILE_TYPE_BROWSERSAFE, loadEnv, loadConfig, stringToAcct, acctToString, greet, initializeRustLogger, showServerInfo, isBlockedServer, isSilencedServer, isAllowedServer, checkWordMute, getFullApAccount, isSelfHost, isSameOrigin, extractHost, toPuny, isUnicodeEmoji, sqlLikeEscape, sqlRegexEscape, safeForSql, formatMilliseconds, getImageSizeFromUrl, getNoteSummary, isQuote, isSafeUrl, latestVersion, toMastodonId, fromMastodonId, fetchMeta, metaToPugArgs, nyaify, hashPassword, verifyPassword, isOldPasswordAlgorithm, decodeReaction, countReactions, toDbReaction, removeOldAttestationChallenges, cpuInfo, cpuUsage, memoryUsage, storageUsage, AntennaSrc, DriveFileUsageHint, MutedNoteReason, NoteVisibility, NotificationType, PageVisibility, PollNoteVisibility, RelayStatus, UserEmojiModPerm, UserProfileFfvisibility, UserProfileMutingNotificationTypes, updateAntennasOnNewNote, fetchNodeinfo, nodeinfo_2_1, nodeinfo_2_0, Protocol, Inbound, Outbound, watchNote, unwatchNote, PushNotificationKind, sendPushNotification, publishToChannelStream, ChatEvent, publishToChatStream, ChatIndexEvent, publishToChatIndexStream, publishToBroadcastStream, publishToGroupChatStream, publishToModerationStream, getTimestamp, genId, genIdAt, generateSecureRandomString, generateUserToken } = nativeBinding
|
||||||
|
|
||||||
module.exports.SECOND = SECOND
|
module.exports.SECOND = SECOND
|
||||||
module.exports.MINUTE = MINUTE
|
module.exports.MINUTE = MINUTE
|
||||||
|
@ -337,6 +337,7 @@ module.exports.extractHost = extractHost
|
||||||
module.exports.toPuny = toPuny
|
module.exports.toPuny = toPuny
|
||||||
module.exports.isUnicodeEmoji = isUnicodeEmoji
|
module.exports.isUnicodeEmoji = isUnicodeEmoji
|
||||||
module.exports.sqlLikeEscape = sqlLikeEscape
|
module.exports.sqlLikeEscape = sqlLikeEscape
|
||||||
|
module.exports.sqlRegexEscape = sqlRegexEscape
|
||||||
module.exports.safeForSql = safeForSql
|
module.exports.safeForSql = safeForSql
|
||||||
module.exports.formatMilliseconds = formatMilliseconds
|
module.exports.formatMilliseconds = formatMilliseconds
|
||||||
module.exports.getImageSizeFromUrl = getImageSizeFromUrl
|
module.exports.getImageSizeFromUrl = getImageSizeFromUrl
|
||||||
|
|
|
@ -1,8 +1,17 @@
|
||||||
|
use once_cell::sync::Lazy;
|
||||||
|
use regex::Regex;
|
||||||
|
|
||||||
#[crate::export]
|
#[crate::export]
|
||||||
pub fn sql_like_escape(src: &str) -> String {
|
pub fn sql_like_escape(src: &str) -> String {
|
||||||
src.replace('%', r"\%").replace('_', r"\_")
|
src.replace('%', r"\%").replace('_', r"\_")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[crate::export]
|
||||||
|
pub fn sql_regex_escape(src: &str) -> String {
|
||||||
|
static RE: Lazy<Regex> = Lazy::new(|| Regex::new(r"[!$()*+.:<=>?\[\]\^{|}-]").unwrap());
|
||||||
|
RE.replace_all(src, r"\$1").to_string()
|
||||||
|
}
|
||||||
|
|
||||||
#[crate::export]
|
#[crate::export]
|
||||||
pub fn safe_for_sql(src: &str) -> bool {
|
pub fn safe_for_sql(src: &str) -> bool {
|
||||||
!src.contains([
|
!src.contains([
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
export function sqlRegexEscape(s: string) {
|
|
||||||
return s.replace(/([!$()*+.:<=>?[\\\]^{|}-])/g, "\\$1");
|
|
||||||
}
|
|
|
@ -3,8 +3,7 @@ import {
|
||||||
type SelectQueryBuilder,
|
type SelectQueryBuilder,
|
||||||
type WhereExpressionBuilder,
|
type WhereExpressionBuilder,
|
||||||
} from "typeorm";
|
} from "typeorm";
|
||||||
import { sqlLikeEscape } from "backend-rs";
|
import { sqlLikeEscape, sqlRegexEscape } from "backend-rs";
|
||||||
import { sqlRegexEscape } from "@/misc/sql-regex-escape.js";
|
|
||||||
import {
|
import {
|
||||||
Followings,
|
Followings,
|
||||||
NoteFavorites,
|
NoteFavorites,
|
||||||
|
|
Loading…
Reference in a new issue