Compare commits
No commits in common. "bdb03bd622c0d51e9545d9fe19e7e9515954f05f" and "41e9e0d85e58a4f1c4c56baa5dea3f97f437a37e" have entirely different histories.
bdb03bd622
...
41e9e0d85e
2
common
2
common
|
|
@ -1 +1 @@
|
||||||
Subproject commit ec4b15ce33a3a6306ee5024935ed2966502d3019
|
Subproject commit ee23dc0358677a66b27a20b8d56c4b69782cec9b
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.245.4",
|
"version": "1.245.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.245.4",
|
"version": "1.245.3",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.458.0",
|
"@aws-sdk/client-s3": "^3.458.0",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.245.4",
|
"version": "1.245.3",
|
||||||
"description": "All the latest porn releases in one place",
|
"description": "All the latest porn releases in one place",
|
||||||
"main": "src/app.js",
|
"main": "src/app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -1,140 +1,5 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const accentMap = {
|
const slugify = require('../../common/slugify.cjs');
|
||||||
à: 'a',
|
|
||||||
á: 'a',
|
|
||||||
ä: 'a',
|
|
||||||
å: 'a',
|
|
||||||
ã: 'a',
|
|
||||||
â: 'a',
|
|
||||||
æ: 'ae',
|
|
||||||
ç: 'c',
|
|
||||||
è: 'e',
|
|
||||||
é: 'e',
|
|
||||||
ë: 'e',
|
|
||||||
ẽ: 'e',
|
|
||||||
ê: 'e',
|
|
||||||
ì: 'i',
|
|
||||||
í: 'i',
|
|
||||||
ï: 'i',
|
|
||||||
ĩ: 'i',
|
|
||||||
î: 'i',
|
|
||||||
ǹ: 'n',
|
|
||||||
ń: 'n',
|
|
||||||
ñ: 'n',
|
|
||||||
ò: 'o',
|
|
||||||
ó: 'o',
|
|
||||||
ö: 'o',
|
|
||||||
õ: 'o',
|
|
||||||
ô: 'o',
|
|
||||||
ø: 'o',
|
|
||||||
œ: 'oe',
|
|
||||||
ß: 'ss',
|
|
||||||
ù: 'u',
|
|
||||||
ú: 'u',
|
|
||||||
ü: 'u',
|
|
||||||
ũ: 'u',
|
|
||||||
û: 'u',
|
|
||||||
ỳ: 'y',
|
|
||||||
ý: 'y',
|
|
||||||
ÿ: 'y',
|
|
||||||
ỹ: 'y',
|
|
||||||
};
|
|
||||||
|
|
||||||
const plainCharRegex = /[a-zA-Z0-9]/;
|
|
||||||
const defaultPunctuationRegex = /[.,?!:;&'‘’"“”…()[]{}<>\/*—-]/;
|
|
||||||
const defaultSymbolRegex = /[@$€£#%^+=\\~]/;
|
|
||||||
|
|
||||||
function slugify(strings, delimiter = '-', {
|
|
||||||
limit = 1000,
|
|
||||||
lower = true,
|
|
||||||
encode = false,
|
|
||||||
accents: keepAccents = false,
|
|
||||||
punctuation: keepPunctuation = false,
|
|
||||||
punctuationRegex = defaultPunctuationRegex,
|
|
||||||
symbols: keepSymbols = false,
|
|
||||||
symbolRegex = defaultSymbolRegex,
|
|
||||||
} = {}) {
|
|
||||||
if (!strings || (typeof strings !== 'string' && !Array.isArray(strings))) {
|
|
||||||
return strings;
|
|
||||||
}
|
|
||||||
|
|
||||||
const string = [].concat(strings).join(' ');
|
|
||||||
|
|
||||||
const casedString = lower
|
|
||||||
? string.toLowerCase()
|
|
||||||
: string;
|
|
||||||
|
|
||||||
const normalized = casedString
|
|
||||||
.split('')
|
|
||||||
.map((char) => {
|
|
||||||
if (char === ' ') {
|
|
||||||
return char;
|
|
||||||
}
|
|
||||||
|
|
||||||
const lowChar = char.toLowerCase();
|
|
||||||
|
|
||||||
if (accentMap[lowChar]) {
|
|
||||||
if (keepAccents) {
|
|
||||||
return char;
|
|
||||||
}
|
|
||||||
|
|
||||||
// match original case after mapping
|
|
||||||
if (char === lowChar) {
|
|
||||||
return accentMap[lowChar];
|
|
||||||
}
|
|
||||||
|
|
||||||
return accentMap[lowChar].toUpperCase();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (plainCharRegex.test(char)) {
|
|
||||||
return char;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (punctuationRegex.test(char)) {
|
|
||||||
if (keepPunctuation === 'split') {
|
|
||||||
return ' ';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keepPunctuation) {
|
|
||||||
return char;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (symbolRegex.test(char)) {
|
|
||||||
if (keepSymbols === 'split') {
|
|
||||||
return ' ';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keepSymbols) {
|
|
||||||
return char;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return '';
|
|
||||||
}).join('');
|
|
||||||
|
|
||||||
const components = normalized.trim().split(/\s+/).filter(Boolean);
|
|
||||||
|
|
||||||
if (components.length === 0) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
const slug = components.reduce((acc, component, index) => {
|
|
||||||
const accSlug = `${acc}${index > 0 ? delimiter : ''}${component}`;
|
|
||||||
|
|
||||||
if (accSlug.length < limit) {
|
|
||||||
return accSlug;
|
|
||||||
}
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}).slice(0, limit); // in case first word exceeds limit
|
|
||||||
|
|
||||||
if (encode) {
|
|
||||||
return encodeURI(slug);
|
|
||||||
}
|
|
||||||
|
|
||||||
return slug;
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = slugify;
|
module.exports = slugify;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue