2ch-trip
Version:
2ch compatible trip generator
57 lines (56 loc) • 1.91 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.create10DigitsTrip = void 0;
const encoding_japanese_1 = require("encoding-japanese");
const unix_crypt_td_js_1 = __importDefault(require("unix-crypt-td-js"));
/**
* 10 桁トリップを生成する
*/
const create10DigitsTrip = (key) => {
const saltSuffixString = 'H.';
const encodedKeyString = (0, encoding_japanese_1.convert)(key, { from: 'UNICODE', to: 'SJIS', fallback: 'html-entity' });
const salt = `${encodedKeyString}${saltSuffixString}`
// 1 文字目から 2 文字を取得する
.substr(1, 2)
// . から z までの文字以外を . に置換する
.replace(/[^\.-z]/g, '.')
// 配列にする
.split('')
// salt として使えない記号をアルファベットに置換する
.map((string) => {
if (string === ':')
return 'A';
if (string === ';')
return 'B';
if (string === '<')
return 'C';
if (string === '=')
return 'D';
if (string === '>')
return 'E';
if (string === '?')
return 'F';
if (string === '@')
return 'G';
if (string === '[')
return 'a';
if (string === '\\')
return 'b';
if (string === ']')
return 'c';
if (string === '^')
return 'd';
if (string === '_')
return 'e';
if (string === '`')
return 'f';
return string;
})
// 文字列にする
.join('');
return (0, unix_crypt_td_js_1.default)(encodedKeyString, salt).substr(-10, 10);
};
exports.create10DigitsTrip = create10DigitsTrip;