UNPKG

2ch-trip

Version:

2ch compatible trip generator

57 lines (56 loc) 1.91 kB
"use strict"; 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;