- 비밀번호 초기화 로직 1차 구현(테스트 필요)
This commit is contained in:
@@ -31,10 +31,13 @@
|
||||
"@nestjs/jwt": "^11.0.1",
|
||||
"@nestjs/passport": "^11.0.5",
|
||||
"@nestjs/platform-express": "^11.0.1",
|
||||
"@nestjs/platform-fastify": "^11.1.9",
|
||||
"bcrypt": "^6.0.0",
|
||||
"dotenv": "^17.2.3",
|
||||
"drizzle-kit": "^0.31.7",
|
||||
"drizzle-orm": "^0.44.7",
|
||||
"fastify": "^5.6.2",
|
||||
"fastify-cors": "^6.1.0",
|
||||
"googleapis": "^166.0.0",
|
||||
"ioredis": "^5.8.2",
|
||||
"nodemailer": "^7.0.10",
|
||||
|
||||
39
src/common/filters/all-exceptions.filter.ts
Normal file
39
src/common/filters/all-exceptions.filter.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import {
|
||||
ExceptionFilter,
|
||||
Catch,
|
||||
ArgumentsHost,
|
||||
HttpException,
|
||||
HttpStatus
|
||||
} from '@nestjs/common';
|
||||
import { FastifyReply, FastifyRequest } from 'fastify';
|
||||
|
||||
@Catch()
|
||||
export class AllExceptionsFilter implements ExceptionFilter {
|
||||
catch(exception: unknown, host: ArgumentsHost) {
|
||||
const ctx = host.switchToHttp();
|
||||
const response = ctx.getResponse<FastifyReply>();
|
||||
const request = ctx.getRequest<FastifyRequest>();
|
||||
|
||||
let status =
|
||||
exception instanceof HttpException
|
||||
? exception.getStatus()
|
||||
: HttpStatus.INTERNAL_SERVER_ERROR;
|
||||
|
||||
let message =
|
||||
exception instanceof HttpException
|
||||
? exception.getResponse()
|
||||
: 'Internal server error';
|
||||
|
||||
if (typeof message === 'object' && (message as any).message) {
|
||||
message = (message as any).message;
|
||||
}
|
||||
|
||||
response.status(status).send({
|
||||
success: false,
|
||||
timestamp: new Date().toISOString(),
|
||||
path: request.url,
|
||||
statusCode: status,
|
||||
error: message
|
||||
});
|
||||
}
|
||||
}
|
||||
12
src/main.ts
12
src/main.ts
@@ -1,8 +1,16 @@
|
||||
import { NestFactory } from '@nestjs/core';
|
||||
import { AppModule } from './app.module';
|
||||
import {
|
||||
FastifyAdapter,
|
||||
NestFastifyApplication
|
||||
} from '@nestjs/platform-fastify';
|
||||
import { AllExceptionsFilter } from './common/filters/all-exceptions.filter';
|
||||
|
||||
async function bootstrap() {
|
||||
const app = await NestFactory.create(AppModule);
|
||||
const app = await NestFactory.create<NestFastifyApplication>(
|
||||
AppModule,
|
||||
new FastifyAdapter()
|
||||
);
|
||||
app.enableCors({
|
||||
origin: (origin, callback) => {
|
||||
// origin이 없는 경우(local file, curl 등) 허용
|
||||
@@ -21,7 +29,7 @@ async function bootstrap() {
|
||||
});
|
||||
|
||||
app.enableShutdownHooks();
|
||||
|
||||
app.useGlobalFilters(new AllExceptionsFilter());
|
||||
await app.listen(process.env.PORT ?? 3000, () => { process.env.NODE_ENV !== 'prod' && console.log(`servier is running on ${process.env.PORT}`) });
|
||||
|
||||
}
|
||||
|
||||
@@ -22,20 +22,40 @@ export class AccountController {
|
||||
}
|
||||
|
||||
@Public()
|
||||
@Post('send-verification-code')
|
||||
async sendVerificationCode(@Body() body: DTO.SendVerificationCodeRequest): Promise<DTO.SendVerificationCodeResponse> {
|
||||
@Post('send-email-verification-code')
|
||||
async sendEmailVerificationCode(@Body() body: DTO.SendEmailVerificationCodeRequest): Promise<DTO.SendEmailVerificationCodeResponse> {
|
||||
const result = await this.accountService.sendVerificationCode(body);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Public()
|
||||
@Post('verify-code')
|
||||
async verifyCode(@Body() body: DTO.VerifyCodeRequest): Promise<DTO.VerifyCodeResponse> {
|
||||
console.log(body.email);
|
||||
@Post('verify-email-verification-code')
|
||||
async verifyCode(@Body() body: DTO.VerifyEmailVerificationCodeRequest): Promise<DTO.VerifyEmailVerificationCodeResponse> {
|
||||
const result = await this.accountService.verifyCode(body);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Public()
|
||||
@Post('send-reset-password-code')
|
||||
async sendResetPasswordCode(@Body() body: DTO.SendResetPasswordCodeRequest): Promise<DTO.SendResetPasswordCodeResponse> {
|
||||
const result = await this.accountService.sendResetPasswordCode(body);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Public()
|
||||
@Post('verify-reset-password-code')
|
||||
async verifyResetPasswordCode(@Body() body: DTO.VerifyResetPasswordCodeRequest): Promise<DTO.VerifyResetPasswordCodeResponse> {
|
||||
const result = await this.accountService.verifyResetPasswordCode(body);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Public()
|
||||
@Post('reset-password')
|
||||
async resetPassword(@Body() body: DTO.ResetPasswordRequest): Promise<DTO.ResetPasswordResponse> {
|
||||
const result = await this.accountService.resetPassword(body);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Public()
|
||||
@Post('signup')
|
||||
async signup(@Body() body: DTO.SignupRequest): Promise<DTO.SignupResponse> {
|
||||
|
||||
@@ -7,7 +7,7 @@ import { NodePgDatabase } from "drizzle-orm/node-postgres";
|
||||
export class AccountRepo {
|
||||
constructor(@Inject('DRIZZLE') private readonly db: NodePgDatabase<typeof schema>) {}
|
||||
|
||||
async checkDuplication(type: 'email' | 'accountId', value: string) {
|
||||
async checkIdExists(type: 'email' | 'accountId', value: string) {
|
||||
const result = await this
|
||||
.db
|
||||
.select({ count: countDistinct(schema.account[type])})
|
||||
@@ -70,4 +70,19 @@ export class AccountRepo {
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
async updatePassword(type: 'email' | 'accountId', id: string, value: string) {
|
||||
return await this
|
||||
.db
|
||||
.update(schema.account)
|
||||
.set({
|
||||
password: value
|
||||
})
|
||||
.where(
|
||||
and(
|
||||
eq(schema.account[type], id),
|
||||
eq(schema.account.isDeleted, false)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -18,12 +18,12 @@ export class AccountService {
|
||||
|
||||
async checkDuplication(data: DTO.CheckDuplicationRequest): Promise<DTO.CheckDuplicationResponse> {
|
||||
const { type, value } = data;
|
||||
const count = await this.accountRepo.checkDuplication(type, value);
|
||||
const count = await this.accountRepo.checkIdExists(type, value);
|
||||
|
||||
return { isDuplicated: count > 0 };
|
||||
return { isDuplicated: count > 0, success: true };
|
||||
}
|
||||
|
||||
async sendVerificationCode(data: DTO.SendVerificationCodeRequest): Promise<DTO.SendVerificationCodeResponse> {
|
||||
async sendVerificationCode(data: DTO.SendEmailVerificationCodeRequest): Promise<DTO.SendEmailVerificationCodeResponse> {
|
||||
const { email } = data;
|
||||
const code = Generator.getVerificationCode();
|
||||
const html = `<p>Your verification code is: <strong style="font-size:16px;">${code}</strong></p>`;
|
||||
@@ -38,20 +38,20 @@ export class AccountService {
|
||||
}
|
||||
}
|
||||
|
||||
async verifyCode(data: DTO.VerifyCodeRequest): Promise<DTO.VerifyCodeResponse> {
|
||||
async verifyCode(data: DTO.VerifyEmailVerificationCodeRequest): Promise<DTO.VerifyEmailVerificationCodeResponse> {
|
||||
const { email, code } = data;
|
||||
|
||||
const storedCode = await this.redis.get(`verify:${email}`);
|
||||
|
||||
if (!storedCode) {
|
||||
return { verified: false, error: '잘못된 이메일이거나 코드가 만료되었습니다.'};
|
||||
return { verified: false, success: true, error: '잘못된 이메일이거나 코드가 만료되었습니다.'};
|
||||
}
|
||||
if (storedCode !== code) {
|
||||
return { verified: false, error: "잘못된 코드입니다." };
|
||||
return { verified: false, success: true, error: "잘못된 코드입니다." };
|
||||
}
|
||||
|
||||
await this.redis.del(`verify:${email}`);
|
||||
return { verified: true, message: "이메일 인증이 완료되었습니다." };
|
||||
return { verified: true, success: true, message: "이메일 인증이 완료되었습니다." };
|
||||
}
|
||||
|
||||
async signup(data: DTO.SignupRequest): Promise<DTO.SignupResponse> {
|
||||
@@ -77,7 +77,7 @@ export class AccountService {
|
||||
const { type, id, password } = data;
|
||||
const queryResult = await this.accountRepo.login(type, id);
|
||||
const typeValue = type === 'email' ? '이메일' : '아이디';
|
||||
console.log(queryResult);
|
||||
|
||||
if (!queryResult || (queryResult.length < 1)) {
|
||||
return {
|
||||
success: false,
|
||||
@@ -114,7 +114,87 @@ export class AccountService {
|
||||
const { accessToken, refreshToken } = this.authService.refreshTokens(id);
|
||||
return {
|
||||
accessToken: accessToken,
|
||||
refreshToken: refreshToken
|
||||
refreshToken: refreshToken,
|
||||
success: true
|
||||
};
|
||||
}
|
||||
|
||||
async sendResetPasswordCode(data: DTO.SendResetPasswordCodeRequest): Promise<DTO.SendResetPasswordCodeResponse> {
|
||||
const { email } = data;
|
||||
|
||||
const count = await this.accountRepo.checkIdExists('email', email);
|
||||
|
||||
if (count === 0) {
|
||||
return {
|
||||
success: false,
|
||||
error: "찾을 수 없는 사용자"
|
||||
};
|
||||
}
|
||||
|
||||
const code = Generator.getResetPasswordCode();
|
||||
|
||||
const html =
|
||||
`<p>Your Password Reset Code is: <strong>${code}</strong></p>`
|
||||
+ `<p>Please Enter this code in 5 minutes.</p>`;
|
||||
const result = await this.mailerService.sendMail(email, "<Scheduler> 비밀번호 초기화 코드", html);
|
||||
|
||||
if (result.rejected.length > 0) {
|
||||
return {
|
||||
success: false,
|
||||
error: result.response
|
||||
};
|
||||
}
|
||||
|
||||
await this.redis.set(`resetPassword:${email}`, code, 'EX', 300);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "비밀번호 초기화 코드 발송 완료"
|
||||
};
|
||||
}
|
||||
|
||||
async verifyResetPasswordCode(data: DTO.VerifyResetPasswordCodeRequest): Promise<DTO.VerifyResetPasswordCodeResponse> {
|
||||
const { email, code } = data;
|
||||
|
||||
const storedCode = await this.redis.get(`resetPassword:${email}`);
|
||||
|
||||
if (!storedCode) {
|
||||
return {
|
||||
success: false,
|
||||
message: "잘못된 이메일이거나 코드가 만료되었습니다."
|
||||
};
|
||||
}
|
||||
|
||||
if (storedCode !== code) {
|
||||
return {
|
||||
success: false,
|
||||
message: "잘못된 코드입니다."
|
||||
};
|
||||
}
|
||||
|
||||
await this.redis.del(`resetPassword:${email}`);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "비밀번호 초기화 코드 인증 완료"
|
||||
};
|
||||
}
|
||||
|
||||
async resetPassword(data: DTO.ResetPasswordRequest): Promise<DTO.ResetPasswordResponse> {
|
||||
const { email, password } = data;
|
||||
const hashedPassword = Converter.getHashedPassword(password);
|
||||
const result = await this.accountRepo.updatePassword('email', email, hashedPassword);
|
||||
|
||||
if (result.rows.length === 0) {
|
||||
return {
|
||||
success: false,
|
||||
error: "비밀번호 초기화 실패"
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "비밀번호 초기화 성공"
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
export class SendVerificationCodeResponseDto {
|
||||
export class BaseResponseDto {
|
||||
success: boolean;
|
||||
message?: string;
|
||||
error?: string;
|
||||
@@ -1,3 +1,5 @@
|
||||
export class CheckDuplicationResponseDto {
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class CheckDuplicationResponseDto extends BaseResponseDto {
|
||||
isDuplicated: boolean;
|
||||
}
|
||||
@@ -1,11 +1,13 @@
|
||||
import { ResetPasswordRequestDto } from './resetPassword/reset-password-request.dto';
|
||||
|
||||
export { CheckDuplicationRequestDto as CheckDuplicationRequest } from './checkDuplication/check-duplication-request.dto';
|
||||
export { CheckDuplicationResponseDto as CheckDuplicationResponse } from './checkDuplication/check-duplication-response.dto';
|
||||
|
||||
export { SendVerificationCodeRequestDto as SendVerificationCodeRequest } from './sendVerification/send-verification-code-request.dto';
|
||||
export { SendVerificationCodeResponseDto as SendVerificationCodeResponse } from './sendVerification/send-verification-code-response.dto';
|
||||
export { SendEmailVerificationCodeRequestDto as SendEmailVerificationCodeRequest } from './sendEmailVerificationCode/send-email-verification-code-request.dto';
|
||||
export { SendEmailVerificationCodeResponseDto as SendEmailVerificationCodeResponse } from './sendEmailVerificationCode/send-email-verification-code-response.dto';
|
||||
|
||||
export { VerifyCodeRequestDto as VerifyCodeRequest } from './verifyCode/verify-code-request.dto';
|
||||
export { VerifyCodeResponseDto as VerifyCodeResponse } from './verifyCode/verify-code-response.dto';
|
||||
export { VerifyEmailVerificationCodeRequestDto as VerifyEmailVerificationCodeRequest } from './verifyEmailVerificationCode/verify-email-verification-code-request.dto';
|
||||
export { VerifyEmailVerificationCodeResponseDto as VerifyEmailVerificationCodeResponse } from './verifyEmailVerificationCode/verify-email-verification-code-response.dto';
|
||||
|
||||
export { SignupRequestDto as SignupRequest } from './signup/signup-request.dto';
|
||||
export { SignupResponseDto as SignupResponse } from './signup/signup-response.dto';
|
||||
@@ -14,3 +16,12 @@ export { LoginRequestDto as LoginRequest } from './login/login-request.dto';
|
||||
export { LoginResponseDto as LoginResponse } from './login/login-response.dto'
|
||||
|
||||
export { RefreshAccessTokenResponseDto as RefreshAccessTokenResponse } from './refreshAccessToken/refresh-access-token-response.dto';
|
||||
|
||||
export { SendResetPasswordCodeRequestDto as SendResetPasswordCodeRequest } from './sendResetPasswordCode/send-reset-password-code-request.dto';
|
||||
export { SendResetPasswordCodeResponseDto as SendResetPasswordCodeResponse } from './sendResetPasswordCode/send-reset-password-code-response.dto';
|
||||
|
||||
export { VerifyResetPasswordCodeRequestDto as VerifyResetPasswordCodeRequest } from './verifyResetPasswordCode/verify-reset-password-code-request.dto';
|
||||
export { VerifyResetPasswordCodeResponseDto as VerifyResetPasswordCodeResponse } from './verifyResetPasswordCode/verify-reset-password-code-response.dto'
|
||||
|
||||
export { ResetPasswordRequestDto as ResetPasswordRequest } from './resetPassword/reset-password-request.dto';
|
||||
export { ResetPasswordResponseDto as ResetPasswordResponse } from './resetPassword/reset-password-response.dto';
|
||||
@@ -1,7 +1,6 @@
|
||||
export class LoginResponseDto {
|
||||
success: boolean;
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class LoginResponseDto extends BaseResponseDto {
|
||||
accessToken?: string;
|
||||
refreshToken?: string;
|
||||
message?: string;
|
||||
error?: string;
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
export class RefreshAccessTokenResponseDto {
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class RefreshAccessTokenResponseDto extends BaseResponseDto{
|
||||
accessToken: string;
|
||||
refreshToken: string;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { IsEmail, IsString } from "@nestjs/class-validator";
|
||||
|
||||
export class ResetPasswordRequestDto {
|
||||
@IsEmail()
|
||||
email: string;
|
||||
|
||||
@IsString()
|
||||
password: string;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class ResetPasswordResponseDto extends BaseResponseDto {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { IsEmail } from "@nestjs/class-validator";
|
||||
|
||||
export class SendEmailVerificationCodeRequestDto {
|
||||
@IsEmail()
|
||||
email: string;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class SendEmailVerificationCodeResponseDto extends BaseResponseDto{
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { IsEmail } from "@nestjs/class-validator";
|
||||
|
||||
export class SendVerificationCodeRequestDto {
|
||||
export class SendResetPasswordCodeRequestDto {
|
||||
@IsEmail()
|
||||
email: string;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class SendResetPasswordCodeResponseDto extends BaseResponseDto {
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
export class SignupResponseDto {
|
||||
success: boolean;
|
||||
message?: string;
|
||||
error?: string;
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class SignupResponseDto extends BaseResponseDto {
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
export class VerifyCodeResponseDto {
|
||||
verified: boolean;
|
||||
message?: string;
|
||||
error?: string;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { IsEmail, IsString } from "@nestjs/class-validator";
|
||||
|
||||
export class VerifyCodeRequestDto {
|
||||
export class VerifyEmailVerificationCodeRequestDto {
|
||||
@IsEmail()
|
||||
email: string;
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class VerifyEmailVerificationCodeResponseDto extends BaseResponseDto{
|
||||
verified: boolean;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { IsEmail, IsString } from "@nestjs/class-validator"
|
||||
|
||||
export class VerifyResetPasswordCodeRequestDto {
|
||||
@IsEmail()
|
||||
email: string;
|
||||
|
||||
@IsString()
|
||||
code: string;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { BaseResponseDto } from "../base-response.dto";
|
||||
|
||||
export class VerifyResetPasswordCodeResponseDto extends BaseResponseDto {
|
||||
}
|
||||
@@ -2,4 +2,36 @@ export class Generator {
|
||||
static getVerificationCode() {
|
||||
return Math.random().toString().slice(2, 8);
|
||||
}
|
||||
|
||||
private static getRandomCharacter(string: string) {
|
||||
return string[Math.floor(Math.random() * string.length)];
|
||||
}
|
||||
|
||||
private static getShuffledString(string: string) {
|
||||
let arr = string.split('');
|
||||
|
||||
for (let i = arr.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
[arr[i], arr[j]] = [arr[j], arr[i]];
|
||||
}
|
||||
|
||||
return arr.join('');
|
||||
}
|
||||
|
||||
static getResetPasswordCode() {
|
||||
const alphabets = 'abcdefghijklmnopqrstuvwxyz';
|
||||
const numbers = '0123456789';
|
||||
const specials = '!@#$%^';
|
||||
const all = alphabets + numbers + specials;
|
||||
|
||||
let resetPasswordCode = Generator.getRandomCharacter(alphabets);
|
||||
let requiredNumber = Generator.getRandomCharacter(numbers);
|
||||
let requiredSpecial = Generator.getRandomCharacter(specials);
|
||||
|
||||
let shuffledRestPart = Generator.getShuffledString(all).slice(0, 5);
|
||||
|
||||
let shuffledRestCode = Generator.getShuffledString(requiredNumber + requiredSpecial + shuffledRestPart);
|
||||
|
||||
return resetPasswordCode + shuffledRestCode;
|
||||
}
|
||||
}
|
||||
444
yarn.lock
444
yarn.lock
@@ -1515,6 +1515,91 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/ajv-compiler@npm:^4.0.0":
|
||||
version: 4.0.5
|
||||
resolution: "@fastify/ajv-compiler@npm:4.0.5"
|
||||
dependencies:
|
||||
ajv: "npm:^8.12.0"
|
||||
ajv-formats: "npm:^3.0.1"
|
||||
fast-uri: "npm:^3.0.0"
|
||||
checksum: 10c0/b701602c5fad35d1327a6ebda530ca5ba2c7728223cd214b2b24af7cb2522c864b6cbbe77335ddd6a55d03f76899fb009386da783121b7ece136feb7ea937e13
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/cors@npm:11.1.0":
|
||||
version: 11.1.0
|
||||
resolution: "@fastify/cors@npm:11.1.0"
|
||||
dependencies:
|
||||
fastify-plugin: "npm:^5.0.0"
|
||||
toad-cache: "npm:^3.7.0"
|
||||
checksum: 10c0/3e6051c94a6e35fc7029ab9b31f3baed3e370072605a18a53d7d2e28975a74480d522f049b3f23229881ea483b4146ffe3cd3e90894c9c12ae09eaba6250dfc6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/error@npm:^4.0.0":
|
||||
version: 4.2.0
|
||||
resolution: "@fastify/error@npm:4.2.0"
|
||||
checksum: 10c0/8bdafe95b368a71dfc5644ef22e0a2412dfbb2f300cf4658fdbd9035c96d7c034c53fd7d38e1150437d9cf7a2d75e6bd05e458cf9ba5f2e47e527df8a5e0bd4e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/fast-json-stringify-compiler@npm:^5.0.0":
|
||||
version: 5.0.3
|
||||
resolution: "@fastify/fast-json-stringify-compiler@npm:5.0.3"
|
||||
dependencies:
|
||||
fast-json-stringify: "npm:^6.0.0"
|
||||
checksum: 10c0/1f0e33c973fc228de44d997a8a1a43e883a580a8c971773bb9cb2375b0114694f81b47c52ac7e788eb6372d1f3dfc10be3176bad354a80d502d8b26a93dbc6c9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/formbody@npm:8.0.2":
|
||||
version: 8.0.2
|
||||
resolution: "@fastify/formbody@npm:8.0.2"
|
||||
dependencies:
|
||||
fast-querystring: "npm:^1.1.2"
|
||||
fastify-plugin: "npm:^5.0.0"
|
||||
checksum: 10c0/7eba1a9751d9b1f790a4a9740273521b226d361d00996165d273727233441e802694d6841af01bf2dce006521d1b8303064bf16129dd86f7c6842bee65e194d5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/forwarded@npm:^3.0.0":
|
||||
version: 3.0.1
|
||||
resolution: "@fastify/forwarded@npm:3.0.1"
|
||||
checksum: 10c0/fad9f7fb7ff4bf2f8ba782f79d46de190469817ed1bd55dc789927c381a38e63b53ab8c127d9444d703a449c5393529533bea365a25f6eb85a5ecbc78460be2a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/merge-json-schemas@npm:^0.2.0":
|
||||
version: 0.2.1
|
||||
resolution: "@fastify/merge-json-schemas@npm:0.2.1"
|
||||
dependencies:
|
||||
dequal: "npm:^2.0.3"
|
||||
checksum: 10c0/dfa884a8f62d53f71de273fdcd0e501b213367767a7d8c522ae87ba6fb571b3eea85175d6e019036d7c0c5419be60305abe54899b9459f76ed5333358699efcb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/middie@npm:9.0.3":
|
||||
version: 9.0.3
|
||||
resolution: "@fastify/middie@npm:9.0.3"
|
||||
dependencies:
|
||||
"@fastify/error": "npm:^4.0.0"
|
||||
fastify-plugin: "npm:^5.0.0"
|
||||
path-to-regexp: "npm:^8.1.0"
|
||||
reusify: "npm:^1.0.4"
|
||||
checksum: 10c0/ddcdb6ce921b819ec17c9cdf35f377d7e9db458c4c18de8283a2f4096d0e317991db697976a2df0dd3609a53bbc2fff0108b1a45eb08856f550e4a7643532915
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/proxy-addr@npm:^5.0.0":
|
||||
version: 5.1.0
|
||||
resolution: "@fastify/proxy-addr@npm:5.1.0"
|
||||
dependencies:
|
||||
"@fastify/forwarded": "npm:^3.0.0"
|
||||
ipaddr.js: "npm:^2.1.0"
|
||||
checksum: 10c0/d9167e848086cb66a0ae8b008eb6a79e9ae0e17c3e8697a3a22b23152376e22843bea6642a2c07eba5460faa786ebda6157dfa6537ac7b733f758428cd51988b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@humanfs/core@npm:^0.19.1":
|
||||
version: 0.19.1
|
||||
resolution: "@humanfs/core@npm:0.19.1"
|
||||
@@ -2386,6 +2471,32 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@nestjs/platform-fastify@npm:^11.1.9":
|
||||
version: 11.1.9
|
||||
resolution: "@nestjs/platform-fastify@npm:11.1.9"
|
||||
dependencies:
|
||||
"@fastify/cors": "npm:11.1.0"
|
||||
"@fastify/formbody": "npm:8.0.2"
|
||||
"@fastify/middie": "npm:9.0.3"
|
||||
fast-querystring: "npm:1.1.2"
|
||||
fastify: "npm:5.6.2"
|
||||
light-my-request: "npm:6.6.0"
|
||||
path-to-regexp: "npm:8.3.0"
|
||||
tslib: "npm:2.8.1"
|
||||
peerDependencies:
|
||||
"@fastify/static": ^8.0.0
|
||||
"@fastify/view": ^10.0.0 || ^11.0.0
|
||||
"@nestjs/common": ^11.0.0
|
||||
"@nestjs/core": ^11.0.0
|
||||
peerDependenciesMeta:
|
||||
"@fastify/static":
|
||||
optional: true
|
||||
"@fastify/view":
|
||||
optional: true
|
||||
checksum: 10c0/18ab1922d41d9b7ec5a23d229448ac31f57dfb2806c37b0553bd1e2c37ee063f2d60c6df6cf93db1345c32994f328fb441befb89ad43514d5e2b7568ad8ee436
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@nestjs/schematics@npm:^11.0.0, @nestjs/schematics@npm:^11.0.1":
|
||||
version: 11.0.9
|
||||
resolution: "@nestjs/schematics@npm:11.0.9"
|
||||
@@ -2496,6 +2607,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pinojs/redact@npm:^0.4.0":
|
||||
version: 0.4.0
|
||||
resolution: "@pinojs/redact@npm:0.4.0"
|
||||
checksum: 10c0/4b311ba17ee0cf154ff9c39eb063ec04cd0d0017cb3750efcdf06c2d485df3e1095e13e872175993568c5568c23e4508dd877c981bbc9c5ae5e384d569efcdff
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pkgjs/parseargs@npm:^0.11.0":
|
||||
version: 0.11.0
|
||||
resolution: "@pkgjs/parseargs@npm:0.11.0"
|
||||
@@ -3911,6 +4029,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"abstract-logging@npm:^2.0.1":
|
||||
version: 2.0.1
|
||||
resolution: "abstract-logging@npm:2.0.1"
|
||||
checksum: 10c0/304879d9babcf6772260e5ddde632e6428e1f42f7a7a116d4689e97ad813a20e0ec2dd1e0a122f3617557f40091b9ca85735de4b48c17a2041268cb47b3f8ef1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"accepts@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "accepts@npm:2.0.0"
|
||||
@@ -3964,7 +4089,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ajv-formats@npm:3.0.1":
|
||||
"ajv-formats@npm:3.0.1, ajv-formats@npm:^3.0.1":
|
||||
version: 3.0.1
|
||||
resolution: "ajv-formats@npm:3.0.1"
|
||||
dependencies:
|
||||
@@ -4012,7 +4137,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ajv@npm:8.17.1, ajv@npm:^8.0.0, ajv@npm:^8.9.0":
|
||||
"ajv@npm:8.17.1, ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.9.0":
|
||||
version: 8.17.1
|
||||
resolution: "ajv@npm:8.17.1"
|
||||
dependencies:
|
||||
@@ -4171,6 +4296,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"atomic-sleep@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "atomic-sleep@npm:1.0.0"
|
||||
checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"avvio@npm:^9.0.0":
|
||||
version: 9.1.0
|
||||
resolution: "avvio@npm:9.1.0"
|
||||
dependencies:
|
||||
"@fastify/error": "npm:^4.0.0"
|
||||
fastq: "npm:^1.17.1"
|
||||
checksum: 10c0/bdc294a7e8f38e1e21f9d338d97d7240025db54f1005fc419cfe0499a35edf2276ab1fe91135739faa3a9437358ec6912d5a56f23361b061880333cb4f1c7884
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-jest@npm:30.2.0":
|
||||
version: 30.2.0
|
||||
resolution: "babel-jest@npm:30.2.0"
|
||||
@@ -4262,6 +4404,7 @@ __metadata:
|
||||
"@nestjs/jwt": "npm:^11.0.1"
|
||||
"@nestjs/passport": "npm:^11.0.5"
|
||||
"@nestjs/platform-express": "npm:^11.0.1"
|
||||
"@nestjs/platform-fastify": "npm:^11.1.9"
|
||||
"@nestjs/schematics": "npm:^11.0.0"
|
||||
"@nestjs/testing": "npm:^11.0.1"
|
||||
"@types/bcrypt": "npm:^6"
|
||||
@@ -4282,6 +4425,8 @@ __metadata:
|
||||
eslint: "npm:^9.18.0"
|
||||
eslint-config-prettier: "npm:^10.0.1"
|
||||
eslint-plugin-prettier: "npm:^5.2.2"
|
||||
fastify: "npm:^5.6.2"
|
||||
fastify-cors: "npm:^6.1.0"
|
||||
globals: "npm:^16.0.0"
|
||||
googleapis: "npm:^166.0.0"
|
||||
ioredis: "npm:^5.8.2"
|
||||
@@ -4802,6 +4947,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cookie@npm:^1.0.1":
|
||||
version: 1.1.1
|
||||
resolution: "cookie@npm:1.1.1"
|
||||
checksum: 10c0/79c4ddc0fcad9c4f045f826f42edf54bcc921a29586a4558b0898277fa89fb47be95bc384c2253f493af7b29500c830da28341274527328f18eba9f58afa112c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cookiejar@npm:^2.1.4":
|
||||
version: 2.1.4
|
||||
resolution: "cookiejar@npm:2.1.4"
|
||||
@@ -4949,6 +5101,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"dequal@npm:^2.0.3":
|
||||
version: 2.0.3
|
||||
resolution: "dequal@npm:2.0.3"
|
||||
checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-newline@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "detect-newline@npm:3.1.0"
|
||||
@@ -5745,6 +5904,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-decode-uri-component@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "fast-decode-uri-component@npm:1.0.1"
|
||||
checksum: 10c0/039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
|
||||
version: 3.1.3
|
||||
resolution: "fast-deep-equal@npm:3.1.3"
|
||||
@@ -5779,6 +5945,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-json-stringify@npm:^6.0.0":
|
||||
version: 6.1.1
|
||||
resolution: "fast-json-stringify@npm:6.1.1"
|
||||
dependencies:
|
||||
"@fastify/merge-json-schemas": "npm:^0.2.0"
|
||||
ajv: "npm:^8.12.0"
|
||||
ajv-formats: "npm:^3.0.1"
|
||||
fast-uri: "npm:^3.0.0"
|
||||
json-schema-ref-resolver: "npm:^3.0.0"
|
||||
rfdc: "npm:^1.2.0"
|
||||
checksum: 10c0/15bf8e1e183c1631687d40907e4330b1ae764f790fbdeedf1f2b5d75fece457a445a1a99c0ea8e8113612928e4dae32bfccd7a7a7da57555d6be893471478a7a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-levenshtein@npm:^2.0.6":
|
||||
version: 2.0.6
|
||||
resolution: "fast-levenshtein@npm:2.0.6"
|
||||
@@ -5786,6 +5966,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-querystring@npm:1.1.2, fast-querystring@npm:^1.0.0, fast-querystring@npm:^1.1.2":
|
||||
version: 1.1.2
|
||||
resolution: "fast-querystring@npm:1.1.2"
|
||||
dependencies:
|
||||
fast-decode-uri-component: "npm:^1.0.1"
|
||||
checksum: 10c0/e8223273a9b199722f760f5a047a77ad049a14bd444b821502cb8218f5925e3a5fffb56b64389bca73ab2ac6f1aa7aebbe4e203e5f6e53ff5978de97c0fde4e3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-safe-stringify@npm:2.1.1, fast-safe-stringify@npm:^2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "fast-safe-stringify@npm:2.1.1"
|
||||
@@ -5793,7 +5982,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-uri@npm:^3.0.1":
|
||||
"fast-uri@npm:^3.0.0, fast-uri@npm:^3.0.1":
|
||||
version: 3.1.0
|
||||
resolution: "fast-uri@npm:3.1.0"
|
||||
checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7
|
||||
@@ -5811,7 +6000,64 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastq@npm:^1.6.0":
|
||||
"fastify-cors-deprecated@npm:fastify-cors@6.0.3":
|
||||
version: 6.0.3
|
||||
resolution: "fastify-cors@npm:6.0.3"
|
||||
dependencies:
|
||||
fastify-plugin: "npm:^3.0.0"
|
||||
vary: "npm:^1.1.2"
|
||||
checksum: 10c0/aa35840f2372cda41172bd8b83a054df2fbf47b0a50ea0a7deb5b48b8ee412b4d0b142839765da670b1bff45b65fb05ab5700c19545d81c08c9881ef58a1ddcc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastify-cors@npm:^6.1.0":
|
||||
version: 6.1.0
|
||||
resolution: "fastify-cors@npm:6.1.0"
|
||||
dependencies:
|
||||
fastify-cors-deprecated: "npm:fastify-cors@6.0.3"
|
||||
process-warning: "npm:^1.0.0"
|
||||
checksum: 10c0/003e6bf528a36d49fbab4af455fd008164ec9fafaa951622337892c3c9f27374fd7b2363710a3bd2d4a32ff8780b4851da0578075ba00a8da03ec025a32ab1fb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastify-plugin@npm:^3.0.0":
|
||||
version: 3.0.1
|
||||
resolution: "fastify-plugin@npm:3.0.1"
|
||||
checksum: 10c0/045a107d2e1962d0967ec21e4417fb31e4f49059cf45d28a612025bdc841092fc897d4ab29eded5a977ad8fdd602c0b30c1a08ae5508f8bff97ece4a30d96032
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastify-plugin@npm:^5.0.0":
|
||||
version: 5.1.0
|
||||
resolution: "fastify-plugin@npm:5.1.0"
|
||||
checksum: 10c0/61b330b8cb03a3581b796d745137499a782934abcf65dbf9a41d07248520cfd220b3ae8b16afeaf81af712e68e1ac24352895132cfeb2b372c66662c0170f365
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastify@npm:5.6.2, fastify@npm:^5.6.2":
|
||||
version: 5.6.2
|
||||
resolution: "fastify@npm:5.6.2"
|
||||
dependencies:
|
||||
"@fastify/ajv-compiler": "npm:^4.0.0"
|
||||
"@fastify/error": "npm:^4.0.0"
|
||||
"@fastify/fast-json-stringify-compiler": "npm:^5.0.0"
|
||||
"@fastify/proxy-addr": "npm:^5.0.0"
|
||||
abstract-logging: "npm:^2.0.1"
|
||||
avvio: "npm:^9.0.0"
|
||||
fast-json-stringify: "npm:^6.0.0"
|
||||
find-my-way: "npm:^9.0.0"
|
||||
light-my-request: "npm:^6.0.0"
|
||||
pino: "npm:^10.1.0"
|
||||
process-warning: "npm:^5.0.0"
|
||||
rfdc: "npm:^1.3.1"
|
||||
secure-json-parse: "npm:^4.0.0"
|
||||
semver: "npm:^7.6.0"
|
||||
toad-cache: "npm:^3.7.0"
|
||||
checksum: 10c0/a3c31316ba5db03eb14a5dc46571fe0f888d0f4569befb8a0aedebc7b24fbd6139e7b16f2bf0dad793345ad66cd5952bdffe182ee2ab0d4e4cb5f331f74a7781
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastq@npm:^1.17.1, fastq@npm:^1.6.0":
|
||||
version: 1.19.1
|
||||
resolution: "fastq@npm:1.19.1"
|
||||
dependencies:
|
||||
@@ -5902,6 +6148,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-my-way@npm:^9.0.0":
|
||||
version: 9.3.0
|
||||
resolution: "find-my-way@npm:9.3.0"
|
||||
dependencies:
|
||||
fast-deep-equal: "npm:^3.1.3"
|
||||
fast-querystring: "npm:^1.0.0"
|
||||
safe-regex2: "npm:^5.0.0"
|
||||
checksum: 10c0/f221bc0c70b2c2a6f9282fd3e0ac1911fcbb68ac718da043ddcefdec3b9d884a54d6ef1bf92e1b2ff83400e50f3c22141206a8ea3308bf0e9e37fd177843425d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-up@npm:^4.0.0, find-up@npm:^4.1.0":
|
||||
version: 4.1.0
|
||||
resolution: "find-up@npm:4.1.0"
|
||||
@@ -6587,6 +6844,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ipaddr.js@npm:^2.1.0":
|
||||
version: 2.3.0
|
||||
resolution: "ipaddr.js@npm:2.3.0"
|
||||
checksum: 10c0/084bab99e2f6875d7a62adc3325e1c64b038a12c9521e35fb967b5e263a8b3afb1b8884dd77c276092331f5d63298b767491e10997ef147c62da01b143780bbd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-arrayish@npm:^0.2.1":
|
||||
version: 0.2.1
|
||||
resolution: "is-arrayish@npm:0.2.1"
|
||||
@@ -7265,6 +7529,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"json-schema-ref-resolver@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "json-schema-ref-resolver@npm:3.0.0"
|
||||
dependencies:
|
||||
dequal: "npm:^2.0.3"
|
||||
checksum: 10c0/0b6f4b66951ac0f6864949c08317cf0b7f7ae94e8da0b94e40df3561dc1a0b77a69b669d60aa1511b06aa18469203886eb2e89fd6bb3dcf0be46c329d69b0115
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"json-schema-traverse@npm:^0.4.1":
|
||||
version: 0.4.1
|
||||
resolution: "json-schema-traverse@npm:0.4.1"
|
||||
@@ -7408,6 +7681,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"light-my-request@npm:6.6.0, light-my-request@npm:^6.0.0":
|
||||
version: 6.6.0
|
||||
resolution: "light-my-request@npm:6.6.0"
|
||||
dependencies:
|
||||
cookie: "npm:^1.0.1"
|
||||
process-warning: "npm:^4.0.0"
|
||||
set-cookie-parser: "npm:^2.6.0"
|
||||
checksum: 10c0/1440853cd3822ab83fbb1be4456099082dec8e9e3a4ea35c9d8d7d17a7ab98c83ad0a4c39a73a8c2b31b9ca70c57506e5b7a929495c149463ca0daca0d90dc6f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lines-and-columns@npm:^1.1.6":
|
||||
version: 1.2.4
|
||||
resolution: "lines-and-columns@npm:1.2.4"
|
||||
@@ -8049,6 +8333,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"on-exit-leak-free@npm:^2.1.0":
|
||||
version: 2.1.2
|
||||
resolution: "on-exit-leak-free@npm:2.1.2"
|
||||
checksum: 10c0/faea2e1c9d696ecee919026c32be8d6a633a7ac1240b3b87e944a380e8a11dc9c95c4a1f8fb0568de7ab8db3823e790f12bda45296b1d111e341aad3922a0570
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"on-finished@npm:^2.4.1":
|
||||
version: 2.4.1
|
||||
resolution: "on-finished@npm:2.4.1"
|
||||
@@ -8261,7 +8552,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-to-regexp@npm:8.3.0, path-to-regexp@npm:^8.0.0":
|
||||
"path-to-regexp@npm:8.3.0, path-to-regexp@npm:^8.0.0, path-to-regexp@npm:^8.1.0":
|
||||
version: 8.3.0
|
||||
resolution: "path-to-regexp@npm:8.3.0"
|
||||
checksum: 10c0/ee1544a73a3f294a97a4c663b0ce71bbf1621d732d80c9c9ed201b3e911a86cb628ebad691b9d40f40a3742fe22011e5a059d8eed2cf63ec2cb94f6fb4efe67c
|
||||
@@ -8391,6 +8682,43 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pino-abstract-transport@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "pino-abstract-transport@npm:2.0.0"
|
||||
dependencies:
|
||||
split2: "npm:^4.0.0"
|
||||
checksum: 10c0/02c05b8f2ffce0d7c774c8e588f61e8b77de8ccb5f8125afd4a7325c9ea0e6af7fb78168999657712ae843e4462bb70ac550dfd6284f930ee57f17f486f25a9f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pino-std-serializers@npm:^7.0.0":
|
||||
version: 7.0.0
|
||||
resolution: "pino-std-serializers@npm:7.0.0"
|
||||
checksum: 10c0/73e694d542e8de94445a03a98396cf383306de41fd75ecc07085d57ed7a57896198508a0dec6eefad8d701044af21eb27253ccc352586a03cf0d4a0bd25b4133
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pino@npm:^10.1.0":
|
||||
version: 10.1.0
|
||||
resolution: "pino@npm:10.1.0"
|
||||
dependencies:
|
||||
"@pinojs/redact": "npm:^0.4.0"
|
||||
atomic-sleep: "npm:^1.0.0"
|
||||
on-exit-leak-free: "npm:^2.1.0"
|
||||
pino-abstract-transport: "npm:^2.0.0"
|
||||
pino-std-serializers: "npm:^7.0.0"
|
||||
process-warning: "npm:^5.0.0"
|
||||
quick-format-unescaped: "npm:^4.0.3"
|
||||
real-require: "npm:^0.2.0"
|
||||
safe-stable-stringify: "npm:^2.3.1"
|
||||
sonic-boom: "npm:^4.0.1"
|
||||
thread-stream: "npm:^3.0.0"
|
||||
bin:
|
||||
pino: bin.js
|
||||
checksum: 10c0/49c1dd80d5f99f02bde1acf2f60cef7686948a937f751f6cb368c2868c7e82e54aeabac63a34587e16019965cbf0eb6e609edf92c439a98a0a4fcb0add277eaf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pirates@npm:^4.0.7":
|
||||
version: 4.0.7
|
||||
resolution: "pirates@npm:4.0.7"
|
||||
@@ -8487,6 +8815,27 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"process-warning@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "process-warning@npm:1.0.0"
|
||||
checksum: 10c0/43ec4229d64eb5c58340c8aacade49eb5f6fd513eae54140abf365929ca20987f0a35c5868125e2b583cad4de8cd257beb5667d9cc539d9190a7a4c3014adf22
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"process-warning@npm:^4.0.0":
|
||||
version: 4.0.1
|
||||
resolution: "process-warning@npm:4.0.1"
|
||||
checksum: 10c0/577a268b9fd5c3d9f6dbb4348220099391d830905642845d591e7ee8b1e45043d98b7b9826a3c1379bdd1686cdfe0f6cf349cb812affc5853b662e6a9896579e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"process-warning@npm:^5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "process-warning@npm:5.0.0"
|
||||
checksum: 10c0/941f48863d368ec161e0b5890ba0c6af94170078f3d6b5e915c19b36fb59edb0dc2f8e834d25e0d375a8bf368a49d490f080508842168832b93489d17843ec29
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"promise-retry@npm:^2.0.1":
|
||||
version: 2.0.1
|
||||
resolution: "promise-retry@npm:2.0.1"
|
||||
@@ -8537,6 +8886,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"quick-format-unescaped@npm:^4.0.3":
|
||||
version: 4.0.4
|
||||
resolution: "quick-format-unescaped@npm:4.0.4"
|
||||
checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"randombytes@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "randombytes@npm:2.1.0"
|
||||
@@ -8590,6 +8946,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"real-require@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "real-require@npm:0.2.0"
|
||||
checksum: 10c0/23eea5623642f0477412ef8b91acd3969015a1501ed34992ada0e3af521d3c865bb2fe4cdbfec5fe4b505f6d1ef6a03e5c3652520837a8c3b53decff7e74b6a0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "redis-errors@npm:1.2.0"
|
||||
@@ -8667,6 +9030,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ret@npm:~0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "ret@npm:0.5.0"
|
||||
checksum: 10c0/220868b194f87bf1998e32e409086eec6b39e860c052bf267f8ad4d0131706a9773d45fd3f91acfb1a7c928fce002b694ab86fdba90bc8d4b8df68fa8645c5cc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"retry@npm:^0.12.0":
|
||||
version: 0.12.0
|
||||
resolution: "retry@npm:0.12.0"
|
||||
@@ -8681,6 +9051,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rfdc@npm:^1.2.0, rfdc@npm:^1.3.1":
|
||||
version: 1.4.1
|
||||
resolution: "rfdc@npm:1.4.1"
|
||||
checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rimraf@npm:^5.0.1":
|
||||
version: 5.0.10
|
||||
resolution: "rimraf@npm:5.0.10"
|
||||
@@ -8739,6 +9116,22 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-regex2@npm:^5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "safe-regex2@npm:5.0.0"
|
||||
dependencies:
|
||||
ret: "npm:~0.5.0"
|
||||
checksum: 10c0/83d5b1b60a5a97cb71a6e615518ec4a47761b3600aba389089be59a417498185250db2368080afc2f5e91237d68809c6c634b97a2e1cc8bd56a4c7eef2eeb6cf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-stable-stringify@npm:^2.3.1":
|
||||
version: 2.5.0
|
||||
resolution: "safe-stable-stringify@npm:2.5.0"
|
||||
checksum: 10c0/baea14971858cadd65df23894a40588ed791769db21bafb7fd7608397dbdce9c5aac60748abae9995e0fc37e15f2061980501e012cd48859740796bea2987f49
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safer-buffer@npm:>= 2.1.2 < 3.0.0":
|
||||
version: 2.1.2
|
||||
resolution: "safer-buffer@npm:2.1.2"
|
||||
@@ -8769,6 +9162,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"secure-json-parse@npm:^4.0.0":
|
||||
version: 4.1.0
|
||||
resolution: "secure-json-parse@npm:4.1.0"
|
||||
checksum: 10c0/52b3f8125ea974db1333a5b63e6a1df550c36c0d5f9a263911d6732812bd02e938b30be324dcbbb9da3ef9bf5a84849e0dd911f56544003d3c09e8eee12504de
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^6.3.1":
|
||||
version: 6.3.1
|
||||
resolution: "semver@npm:6.3.1"
|
||||
@@ -8827,6 +9227,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"set-cookie-parser@npm:^2.6.0":
|
||||
version: 2.7.2
|
||||
resolution: "set-cookie-parser@npm:2.7.2"
|
||||
checksum: 10c0/4381a9eb7ee951dfe393fe7aacf76b9a3b4e93a684d2162ab35594fa4053cc82a4d7d7582bf397718012c9adcf839b8cd8f57c6c42901ea9effe33c752da4a45
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "setprototypeof@npm:1.2.0"
|
||||
@@ -8947,6 +9354,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sonic-boom@npm:^4.0.1":
|
||||
version: 4.2.0
|
||||
resolution: "sonic-boom@npm:4.2.0"
|
||||
dependencies:
|
||||
atomic-sleep: "npm:^1.0.0"
|
||||
checksum: 10c0/ae897e6c2cd6d3cb7cdcf608bc182393b19c61c9413a85ce33ffd25891485589f39bece0db1de24381d0a38fc03d08c9862ded0c60f184f1b852f51f97af9684
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"source-map-support@npm:0.5.13":
|
||||
version: 0.5.13
|
||||
resolution: "source-map-support@npm:0.5.13"
|
||||
@@ -8988,7 +9404,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"split2@npm:^4.1.0":
|
||||
"split2@npm:^4.0.0, split2@npm:^4.1.0":
|
||||
version: 4.2.0
|
||||
resolution: "split2@npm:4.2.0"
|
||||
checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534
|
||||
@@ -9279,6 +9695,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"thread-stream@npm:^3.0.0":
|
||||
version: 3.1.0
|
||||
resolution: "thread-stream@npm:3.1.0"
|
||||
dependencies:
|
||||
real-require: "npm:^0.2.0"
|
||||
checksum: 10c0/c36118379940b77a6ef3e6f4d5dd31e97b8210c3f7b9a54eb8fe6358ab173f6d0acfaf69b9c3db024b948c0c5fd2a7df93e2e49151af02076b35ada3205ec9a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tinyglobby@npm:^0.2.12":
|
||||
version: 0.2.15
|
||||
resolution: "tinyglobby@npm:0.2.15"
|
||||
@@ -9305,6 +9730,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"toad-cache@npm:^3.7.0":
|
||||
version: 3.7.0
|
||||
resolution: "toad-cache@npm:3.7.0"
|
||||
checksum: 10c0/7dae2782ee20b22c9798bb8b71dec7ec6a0091021d2ea9dd6e8afccab6b65b358fdba49a02209fac574499702e2c000660721516c87c2538d1b2c0ba03e8c0c3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "toidentifier@npm:1.0.1"
|
||||
|
||||
Reference in New Issue
Block a user