This commit is contained in:
vastxie
2024-07-07 13:09:08 +08:00
parent 086e5aed3c
commit 4fef3663e4
1131 changed files with 11143 additions and 10769 deletions

View File

@@ -10,17 +10,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JwtStrategy = void 0;
const nestjs_config_1 = require("nestjs-config");
const passport_jwt_1 = require("passport-jwt");
const passport_1 = require("@nestjs/passport");
const common_1 = require("@nestjs/common");
const passport_1 = require("@nestjs/passport");
const passport_jwt_1 = require("passport-jwt");
const redisCache_service_1 = require("../../modules/redisCache/redisCache.service");
let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy) {
constructor(configService) {
constructor(redisService) {
super({
jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: configService.get('jwt').secret,
secretOrKey: redisService.getJwtSecret(),
});
this.configService = configService;
this.redisService = redisService;
}
async validate(payload) {
return payload;
@@ -28,6 +28,6 @@ let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(pas
};
JwtStrategy = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [nestjs_config_1.ConfigService])
__metadata("design:paramtypes", [redisCache_service_1.RedisCacheService])
], JwtStrategy);
exports.JwtStrategy = JwtStrategy;

View File

@@ -10,12 +10,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JwtAuthGuard = void 0;
const globalConfig_service_1 = require("../../modules/globalConfig/globalConfig.service");
const redisCache_service_1 = require("../../modules/redisCache/redisCache.service");
const common_1 = require("@nestjs/common");
const core_1 = require("@nestjs/core");
const passport_1 = require("@nestjs/passport");
const jwt = require("jsonwebtoken");
const core_1 = require("@nestjs/core");
const globalConfig_service_1 = require("../../modules/globalConfig/globalConfig.service");
const auth_service_1 = require("../../modules/auth/auth.service");
let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
constructor(redisCacheService, moduleRef, globalConfigService, authService) {
@@ -27,13 +27,14 @@ let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
}
async canActivate(context) {
if (!this.redisCacheService) {
this.redisCacheService = this.moduleRef.get(redisCache_service_1.RedisCacheService, { strict: false });
this.redisCacheService = this.moduleRef.get(redisCache_service_1.RedisCacheService, {
strict: false,
});
}
const request = context.switchToHttp().getRequest();
const domain = request.headers['x-website-domain'];
const token = this.extractToken(request);
request.user = this.validateToken(token);
const auth = this.globalConfigService.getNineAiToken();
request.user = await this.validateToken(token);
await this.redisCacheService.checkTokenAuth(token, request);
return true;
}
@@ -56,9 +57,11 @@ let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
}
return parts[1];
}
validateToken(token) {
async validateToken(token) {
try {
return jwt.verify(token, process.env.JWT_SECRET);
const secret = await this.redisCacheService.getJwtSecret();
const decoded = await jwt.verify(token, secret);
return decoded;
}
catch (error) {
throw new common_1.HttpException('亲爱的用户,请登录后继续操作,我们正在等您的到来!', common_1.HttpStatus.UNAUTHORIZED);

View File

@@ -0,0 +1,45 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CustomLoggerService = void 0;
const common_1 = require("@nestjs/common");
let CustomLoggerService = class CustomLoggerService extends common_1.ConsoleLogger {
constructor() {
super();
this.isDev = process.env.ISDEV === 'TRUE';
}
log(message, context) {
super.log(message, context);
}
error(message, trace, context) {
super.error(message, trace, context);
}
warn(message, context) {
if (this.isDev) {
super.warn(message, context);
}
}
debug(message, context) {
if (this.isDev) {
super.debug(message, context);
}
}
verbose(message, context) {
if (this.isDev) {
super.verbose(message, context);
}
}
};
CustomLoggerService = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [])
], CustomLoggerService);
exports.CustomLoggerService = CustomLoggerService;

View File

@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.createSwagger = void 0;
const swagger_1 = require("@nestjs/swagger");
const swaggerOptions = new swagger_1.DocumentBuilder()
.setTitle('Nine Team api document')
.setDescription('Nine Team api document')
.setTitle('AIWeb Team api document')
.setDescription('AIWeb Team api document')
.setVersion('1.0.0')
.addBearerAuth()
.build();
function createSwagger(app) {
const document = swagger_1.SwaggerModule.createDocument(app, swaggerOptions);
swagger_1.SwaggerModule.setup('/nineai/swagger/docs', app, document);
swagger_1.SwaggerModule.setup('/swagger/docs', app, document);
}
exports.createSwagger = createSwagger;

View File

@@ -1,41 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.compileNetwork = void 0;
const axios_1 = require("axios");
function formatSearchData(searchData, question) {
const formatStr = searchData.results.map(({ title, body, href }) => `'${title}' : ${body} ; (${href})`).join('\n\n');
const currentDate = new Date().toISOString().split('T')[0];
const instructions = '你的任务是优先利用网络搜索结果来回答问题,并使用提问时的语言风格进行回复。你应该提供一个全面而有条理的回答,在每条答案后面明确指出来源于哪个链接,使用 [[数字](链接)] 格式进行标注。以下是搜索结果:';
return `${instructions}\n今天是${currentDate}\n${formatStr}`;
}
async function compileNetwork(question) {
const currentDate = new Date().toISOString().split('T')[0];
console.log(`Current date: ${currentDate}`);
console.log(`开始对问题“${question}”进行网络编译`);
const datedQuestion = `${currentDate} ${question}`;
let searchData = { results: [] };
try {
const url = ``;
console.log(`正在向搜索API发送请求URL为${url}`);
const responseData = await axios_1.default.get(url);
searchData = responseData.data;
console.log(`已成功接收问题“${question}”的搜索结果,结果数量:${searchData.results.length}`);
searchData.results.forEach((result, index) => {
console.log(`结果 ${index + 1}: 标题: ${result.title}, 链接: ${result.href}, 摘要: ${result.body.substring(0, 100)}...`);
});
}
catch (error) {
console.log(`在对问题“${question}”进行网络编译时出错:`, error);
}
let formattedData = "";
if (searchData.results.length === 0) {
console.log(`未找到问题“${question}”的搜索结果,将返回原问题`);
return question;
}
else {
formattedData = formatSearchData(searchData, question);
console.log(`格式化后的搜索结果为:\n${formattedData}`);
return formattedData;
}
}
exports.compileNetwork = compileNetwork;

11
dist/common/utils/fromatUrl.js vendored Normal file
View File

@@ -0,0 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatUrl = void 0;
function formatUrl(url) {
let formattedUrl = url.replace(/\s+/g, '');
if (formattedUrl.endsWith('/')) {
formattedUrl = formattedUrl.slice(0, -1);
}
return formattedUrl;
}
exports.formatUrl = formatUrl;

View File

@@ -1,43 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getClientIp = void 0;
function getClientIp(request) {
let ipAddress = '';
const headerList = [
'X-Client-IP',
'X-Real-IP',
'X-Forwarded-For',
'CF-Connecting-IP',
'True-Client-IP',
'X-Cluster-Client-IP',
'Proxy-Client-IP',
'WL-Proxy-Client-IP',
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
];
for (const header of headerList) {
const value = request.headers[header];
if (value && typeof value === 'string') {
const ips = value.split(',');
ipAddress = ips[0].trim();
break;
}
function getFirstValidIp(ipString) {
const ips = ipString.split(',').map(ip => ip.trim());
return ips.find(ip => isValidIp(ip)) || '';
}
function isValidIp(ip) {
return /^\d{1,3}(\.\d{1,3}){3}$/.test(ip) || /^::ffff:\d{1,3}(\.\d{1,3}){3}$/.test(ip);
}
function getClientIp(req) {
const forwardedFor = req.header('x-forwarded-for');
let clientIp = forwardedFor ? getFirstValidIp(forwardedFor) : '';
if (!clientIp) {
clientIp = req.connection.remoteAddress || req.socket.remoteAddress || '';
}
if (!ipAddress) {
ipAddress = request.connection.remoteAddress || '';
if (clientIp.startsWith('::ffff:')) {
clientIp = clientIp.substring(7);
}
if (ipAddress && ipAddress.includes('::')) {
const isLocal = /^(::1|fe80(:1)?::1(%.*)?)$/i.test(ipAddress);
if (isLocal) {
ipAddress = '';
}
else if (ipAddress.includes('::ffff:')) {
ipAddress = ipAddress.split(':').pop() || '';
}
}
if (!ipAddress || !/\d+\.\d+\.\d+\.\d+/.test(ipAddress)) {
ipAddress = '';
}
return ipAddress;
return clientIp;
}
exports.getClientIp = getClientIp;

31
dist/common/utils/getTokenCount.js vendored Normal file
View File

@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTokenCount = void 0;
const tiktoken_1 = require("@dqbd/tiktoken");
const getTokenCount = async (input) => {
let text = '';
if (Array.isArray(input)) {
text = input.reduce((pre, cur) => {
if (Array.isArray(cur.content)) {
const contentText = cur.content
.filter((item) => item.type === 'text')
.map((item) => item.text)
.join(' ');
return pre + contentText;
}
else {
return pre + (cur.content || '');
}
}, '');
}
else if (typeof input === 'string') {
text = input;
}
else if (input) {
text = String(input);
}
text = text.replace(/<\|endoftext\|>/g, '');
const tokenizer = (0, tiktoken_1.get_encoding)('cl100k_base');
return tokenizer.encode(text).length;
};
exports.getTokenCount = getTokenCount;

43
dist/common/utils/handleError.js vendored Normal file
View File

@@ -0,0 +1,43 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleError = void 0;
const axios_1 = require("axios");
function handleError(error) {
let message = '发生未知错误,请稍后再试';
if (axios_1.default.isAxiosError(error) && error.response) {
switch (error.response.status) {
case 400:
message =
'发生错误400 Bad Request - 请求因格式错误无法被服务器处理。';
break;
case 401:
message = '发生错误401 Unauthorized - 请求要求进行身份验证。';
break;
case 403:
message = '发生错误403 Forbidden - 服务器拒绝执行请求。';
break;
case 404:
message = '发生错误404 Not Found - 请求的资源无法在服务器上找到。';
break;
case 500:
message =
'发生错误500 Internal Server Error - 服务器内部错误,无法完成请求。';
break;
case 502:
message =
'发生错误502 Bad Gateway - 作为网关或代理工作的服务器从上游服务器收到无效响应。';
break;
case 503:
message =
'发生错误503 Service Unavailable - 服务器暂时处于超负载或维护状态,无法处理请求。';
break;
default:
break;
}
}
else {
message = error.message || message;
}
return message;
}
exports.handleError = handleError;

View File

@@ -14,25 +14,26 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./date"), exports);
__exportStar(require("./createRandomCode"), exports);
__exportStar(require("./tools"), exports);
__exportStar(require("./createRandomInviteCode"), exports);
__exportStar(require("./maskEmail"), exports);
__exportStar(require("./createRandomUid"), exports);
__exportStar(require("./generateCrami"), exports);
__exportStar(require("./base"), exports);
__exportStar(require("./hideString"), exports);
__exportStar(require("./createOrderId"), exports);
__exportStar(require("./createRandomCode"), exports);
__exportStar(require("./createRandomInviteCode"), exports);
__exportStar(require("./createRandomNonceStr"), exports);
__exportStar(require("./createRandomUid"), exports);
__exportStar(require("./date"), exports);
__exportStar(require("./encrypt"), exports);
__exportStar(require("./fromatUrl"), exports);
__exportStar(require("./generateCrami"), exports);
__exportStar(require("./getClientIp"), exports);
__exportStar(require("./getDiffArray"), exports);
__exportStar(require("./getRandomItem"), exports);
__exportStar(require("./getClientIp"), exports);
__exportStar(require("./maskIpAddress"), exports);
__exportStar(require("./maskCrami"), exports);
__exportStar(require("./selectKeyWithWeight"), exports);
__exportStar(require("./createOrderId"), exports);
__exportStar(require("./createRandomNonceStr"), exports);
__exportStar(require("./utcformatTime"), exports);
__exportStar(require("./removeSpecialCharacters"), exports);
__exportStar(require("./encrypt"), exports);
__exportStar(require("./compileNetwork"), exports);
__exportStar(require("./getRandomItemFromArray"), exports);
__exportStar(require("./getTokenCount"), exports);
__exportStar(require("./handleError"), exports);
__exportStar(require("./hideString"), exports);
__exportStar(require("./maskCrami"), exports);
__exportStar(require("./maskEmail"), exports);
__exportStar(require("./maskIpAddress"), exports);
__exportStar(require("./removeSpecialCharacters"), exports);
__exportStar(require("./tools"), exports);
__exportStar(require("./utcformatTime"), exports);

View File

@@ -1,17 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.selectKeyWithWeight = void 0;
function selectKeyWithWeight(data) {
if (data.length === 0)
return undefined;
const totalWeight = data.reduce((sum, item) => sum + item.weight, 0);
let randomWeight = Math.random() * totalWeight;
for (const item of data) {
randomWeight -= item.weight;
if (randomWeight < 0) {
return item;
}
}
return data[data.length - 1];
}
exports.selectKeyWithWeight = selectKeyWithWeight;