Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
4267adf8f5 | |||
|
dd3423bfd3 |
@ -30,7 +30,6 @@
|
||||
"@nestjs/swagger": "^7.3.1",
|
||||
"@nestjs/typeorm": "^10.0.2",
|
||||
"axios": "^1.7.7",
|
||||
"better-sqlite3": "^11.0.0",
|
||||
"bloom-filters": "^3.0.2",
|
||||
"cache-manager": "^5.5.3",
|
||||
"class-transformer": "^0.5.1",
|
||||
|
@ -20,6 +20,7 @@ import { RolesGuard } from './common/role.guard';
|
||||
import { UserModule } from './user/user.module';
|
||||
import { User } from './user/entities/user.entity';
|
||||
import { TdtmapModule } from './tdtmap/tdtmap.module';
|
||||
import { TdtLocal } from './tdtmap/entities/tdtmap.entity';
|
||||
|
||||
// 使用sqlite和程序内缓存时,全部程序不依赖外部组件
|
||||
// 注意:Webpack打包不适用Sqlite!
|
||||
@ -30,7 +31,7 @@ const enableSqlite:boolean = false
|
||||
enableSqlite ? TypeOrmModule.forRoot({
|
||||
type: 'better-sqlite3',
|
||||
database: 'db.sql',
|
||||
entities: [User],
|
||||
entities: [User, TdtLocal],
|
||||
synchronize: !IS_PROD
|
||||
}) : TypeOrmModule.forRoot({
|
||||
type: 'mysql',
|
||||
@ -39,7 +40,7 @@ const enableSqlite:boolean = false
|
||||
username: MYSQL_USER,
|
||||
password: MYSQL_PASSWD,
|
||||
database: MYSQL_DATABASE,
|
||||
entities: [User],
|
||||
entities: [User, TdtLocal],
|
||||
synchronize: !IS_PROD
|
||||
}),
|
||||
CacheModule.register({
|
||||
|
@ -1,41 +0,0 @@
|
||||
// import { generateUUID } from "@/utils"
|
||||
const document = [
|
||||
{
|
||||
id: 1,
|
||||
content: '明月村',
|
||||
meta: {
|
||||
address: "重庆市涪陵区",
|
||||
lonlat: "107.039584,29.467733",
|
||||
name: "明月村"
|
||||
}
|
||||
},
|
||||
{
|
||||
id:2,
|
||||
content:'双桥村',
|
||||
meta:{
|
||||
address:"重庆市酉阳县",
|
||||
lonlat:"108.695672,28.6984455",
|
||||
name:"双桥村"
|
||||
}
|
||||
},
|
||||
{
|
||||
id:3,
|
||||
content:'梧桐村',
|
||||
meta:{
|
||||
address:"重庆市万州区",
|
||||
lonlat:"108.703826,30.6362342",
|
||||
name:"梧桐村"
|
||||
}
|
||||
},
|
||||
]
|
||||
|
||||
export const searchDoc = (query:string) => {
|
||||
return document.filter(item => {
|
||||
const queryArr = query.split(" ");
|
||||
const existMatchDoc = queryArr.find(_query => {
|
||||
return item.content.indexOf(_query) !== -1
|
||||
})
|
||||
return !!existMatchDoc;
|
||||
})
|
||||
}
|
||||
|
@ -1,87 +1,99 @@
|
||||
import {
|
||||
Controller,
|
||||
Get,
|
||||
Query,
|
||||
Logger,
|
||||
Res,
|
||||
BadRequestException,
|
||||
HttpStatus,
|
||||
StreamableFile,
|
||||
} from '@nestjs/common';
|
||||
import { Controller, Get, Query, Logger, Res, BadRequestException, HttpStatus, StreamableFile } from '@nestjs/common';
|
||||
import { TdtmapService } from './tdtmap.service';
|
||||
import { LRUCache } from 'lru-cache';
|
||||
import { BloomFilter } from 'bloom-filters';
|
||||
import { Public } from '../common/public.guard';
|
||||
import axios from 'axios';
|
||||
import axios from 'axios'
|
||||
import { Response } from 'express';
|
||||
|
||||
// 热点缓存
|
||||
const cacheMap = new LRUCache<string, ArrayBufferView>({
|
||||
max: 20000, // 最大缓存项目数
|
||||
ttl: 1000 * 60 * 60 * 24 * 5, // 缓存时间5天,
|
||||
});
|
||||
})
|
||||
|
||||
// 布隆过滤器
|
||||
const bloomFilter = new Set<string>();
|
||||
const bloomFilter = new Set<string>()
|
||||
|
||||
const urlFormatter = (
|
||||
x: number,
|
||||
y: number,
|
||||
z: number,
|
||||
type: string = 'vec_w',
|
||||
token: string,
|
||||
) =>
|
||||
`http://t0.tianditu.gov.cn/DataServer?T=${type}&x=${x}&y=${y}&l=${z}&tk=${token}`;
|
||||
const mapUrlFormatter = (x: number, y: number, z: number, type: string) =>
|
||||
`X_${x}&Y_${y}&Z_${z}&type_${type}`;
|
||||
const urlFormatter = (x: number, y: number, z: number, type: string = 'vec_w', token: string) => `http://t0.tianditu.gov.cn/DataServer?T=${type}&x=${x}&y=${y}&l=${z}&tk=${token}`
|
||||
const mapUrlFormatter = (x: number, y: number, z: number, type: string) => `X_${x}&Y_${y}&Z_${z}&type_${type}`
|
||||
|
||||
@Controller('tdtmap')
|
||||
@Public()
|
||||
export class TdtmapController {
|
||||
constructor(private readonly tdtmapService: TdtmapService) {
|
||||
this.initBloomFilter();
|
||||
constructor(
|
||||
private readonly tdtmapService: TdtmapService
|
||||
) {
|
||||
this.initBloomFilter()
|
||||
}
|
||||
|
||||
private readonly logger: Logger = new Logger(TdtmapController.name)
|
||||
|
||||
private readonly logger: Logger = new Logger(TdtmapController.name);
|
||||
|
||||
deleteAllMinioObj(tile_name: string) {
|
||||
this.tdtmapService.deleteMinioObj(tile_name);
|
||||
deleteAllMinioObj(tile_name:string) {
|
||||
this.tdtmapService.deleteMinioObj(tile_name)
|
||||
}
|
||||
// 初始化过滤器
|
||||
async initBloomFilter() {
|
||||
const minioObjNamesArr = await this.tdtmapService
|
||||
.getTilesNameList()
|
||||
.catch((err) => {
|
||||
this.logger.error(`get bucket obj names failed!`);
|
||||
});
|
||||
const minioObjNamesArr = await this.tdtmapService.getTilesNameList().catch(err => {
|
||||
this.logger.error(`get bucket obj names failed!`)
|
||||
})
|
||||
if (!Array.isArray(minioObjNamesArr)) return;
|
||||
minioObjNamesArr.forEach((item) => {
|
||||
bloomFilter.add(item);
|
||||
});
|
||||
this.logger.debug(
|
||||
`bloomFilter inited => minio obj num: ${minioObjNamesArr.length}`,
|
||||
);
|
||||
minioObjNamesArr.forEach(item => { bloomFilter.add(item); })
|
||||
this.logger.debug(`bloomFilter inited => minio obj num: ${minioObjNamesArr.length}`)
|
||||
}
|
||||
|
||||
@Get('/tile')
|
||||
@Get("/search")
|
||||
async search(
|
||||
@Query('keyWord') keyWord:string,
|
||||
@Query('tk') tk:string = '6988fa4ec7ca5ed400097b9bf9dfc22e'
|
||||
) {
|
||||
const res = await axios({
|
||||
url: "https://api.tianditu.gov.cn/v2/search",
|
||||
params: {
|
||||
type: 'query',
|
||||
postStr: JSON.stringify({
|
||||
yingjiType: 1,
|
||||
sourceType: 0,
|
||||
keyWord,
|
||||
level: 18,
|
||||
mapBound: '73.66, 3.86, 135.05, 53.55',
|
||||
queryType: '4',
|
||||
start: 0,
|
||||
count: 10,
|
||||
queryTerminal: 10000
|
||||
}),
|
||||
tk
|
||||
},
|
||||
method: "GET",
|
||||
responseType: "arraybuffer"
|
||||
}).catch((err) => {
|
||||
this.logger.error(`Tile req Fail => ${err}`)
|
||||
})
|
||||
|
||||
if (!res) return;
|
||||
const { suggests } = JSON.parse(res.data);
|
||||
return Array.isArray(suggests) ? suggests : [];
|
||||
}
|
||||
|
||||
@Get("/tile")
|
||||
async getTile(
|
||||
@Res({ passthrough: true }) response: Response,
|
||||
@Query('x') x: number,
|
||||
@Query('y') y: number,
|
||||
@Query('l') l: number,
|
||||
@Query('T') type: string,
|
||||
@Query('tk') tk: string = '6988fa4ec7ca5ed400097b9bf9dfc22e',
|
||||
@Res({ passthrough: true }) response:Response,
|
||||
@Query('x') x:number,
|
||||
@Query('y') y:number,
|
||||
@Query('l') l:number,
|
||||
@Query('T') type:string,
|
||||
@Query('tk') tk:string = '6988fa4ec7ca5ed400097b9bf9dfc22e'
|
||||
) {
|
||||
// 检查参数
|
||||
if (!x || !y || !l || !type || !tk) return;
|
||||
const tileFormattedName = mapUrlFormatter(x, y, l, type);
|
||||
response.setHeader('Content-Type', 'image/png'); // 设置文件请求头
|
||||
response.setHeader("Content-Type", "image/png"); // 设置文件请求头
|
||||
// 查找缓存
|
||||
const cacheItem: any = cacheMap.get(tileFormattedName);
|
||||
const cacheItem:any = cacheMap.get(tileFormattedName);
|
||||
// 获取到缓存中的内容, 直接返回
|
||||
// @ts-ignore
|
||||
if (cacheItem && ArrayBuffer.isView(cacheItem)) {
|
||||
Buffer.from(cacheItem as any, 'utf-8');
|
||||
Buffer.from(cacheItem as any, 'utf-8')
|
||||
return new StreamableFile(cacheItem as any); // 请求成功
|
||||
}
|
||||
|
||||
@ -89,43 +101,29 @@ export class TdtmapController {
|
||||
const existInDB = bloomFilter.has(tileFormattedName);
|
||||
if (existInDB) {
|
||||
// minio 中存在,从 minio 取出
|
||||
const dbItem: Buffer =
|
||||
await this.tdtmapService.getTileFromLocal(tileFormattedName); // 从 minio 取出来
|
||||
cacheMap.set(tileFormattedName, dbItem);
|
||||
Buffer.from(dbItem as any, 'utf-8');
|
||||
const dbItem:Buffer = await this.tdtmapService.getTileFromLocal(tileFormattedName) // 从 minio 取出来
|
||||
cacheMap.set(tileFormattedName, dbItem)
|
||||
Buffer.from(dbItem as any, 'utf-8')
|
||||
return new StreamableFile(dbItem);
|
||||
} else {
|
||||
// 如果本地数据库都不存在
|
||||
const res = await axios({
|
||||
url: urlFormatter(x, y, l, type, tk),
|
||||
method: 'GET',
|
||||
responseType: 'arraybuffer',
|
||||
method: "GET",
|
||||
responseType: "arraybuffer"
|
||||
}).catch((err) => {
|
||||
this.logger.error(`Tile req Fail => ${err}`);
|
||||
});
|
||||
this.logger.error(`Tile req Fail => ${err}`)
|
||||
})
|
||||
// 写入缓存和本地
|
||||
if (res && typeof res.data === 'object') {
|
||||
cacheMap.set(tileFormattedName, res.data);
|
||||
const saveSuccess = await this.tdtmapService.setTileToLocal(
|
||||
tileFormattedName,
|
||||
res.data,
|
||||
);
|
||||
cacheMap.set(tileFormattedName, res.data)
|
||||
const saveSuccess = await this.tdtmapService.setTileToLocal(tileFormattedName, res.data);
|
||||
if (saveSuccess) bloomFilter.add(tileFormattedName);
|
||||
Buffer.from(res.data, 'utf-8');
|
||||
Buffer.from(res.data, 'utf-8')
|
||||
return new StreamableFile(res.data); // 请求成功
|
||||
} else {
|
||||
throw new BadRequestException('request failed!'); // 请求失败
|
||||
throw new BadRequestException("request failed!"); // 请求失败
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//搜索
|
||||
@Get('/search')
|
||||
async searchMapData(@Query('q') query: string) {
|
||||
try {
|
||||
return await this.tdtmapService.searchMapData(query); // 调用服务层
|
||||
} catch (error) {
|
||||
return { error: error.message };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,12 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { CacheModule } from '@nestjs/cache-manager';
|
||||
import { TdtmapService } from './tdtmap.service';
|
||||
import { TdtmapController } from './tdtmap.controller';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { TdtLocal } from './entities/tdtmap.entity';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
CacheModule.register({
|
||||
ttl: 300, // 设置缓存过期时间
|
||||
max: 100, // 设置最大缓存数
|
||||
}),
|
||||
TypeOrmModule.forFeature([TdtLocal])
|
||||
],
|
||||
controllers: [TdtmapController],
|
||||
providers: [TdtmapService],
|
||||
|
@ -1,18 +1,20 @@
|
||||
import { Injectable, Logger, Inject } from '@nestjs/common';
|
||||
import { Injectable, Logger } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import * as Minio from 'minio';
|
||||
import { CACHE_MANAGER } from '@nestjs/cache-manager';
|
||||
import { Cache } from 'cache-manager';
|
||||
import axios from 'axios';
|
||||
import { searchDoc } from './data/coordinates';
|
||||
import { TdtLocal } from './entities/tdtmap.entity';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
@Injectable()
|
||||
export class TdtmapService {
|
||||
private readonly minioClient: Minio.Client;
|
||||
private readonly logger: Logger = new Logger(TdtmapService.name);
|
||||
constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {
|
||||
private readonly logger: Logger = new Logger(TdtmapService.name)
|
||||
constructor(
|
||||
@InjectRepository(TdtLocal)
|
||||
private readonly tdtLocalRepository: Repository<TdtLocal>
|
||||
) {
|
||||
this.minioClient = new Minio.Client({
|
||||
endPoint: '117.73.12.97',
|
||||
port: 9000,
|
||||
port: 9000,
|
||||
useSSL: false,
|
||||
accessKey: 'inspur',
|
||||
secretKey: 'inspur123',
|
||||
@ -20,100 +22,50 @@ export class TdtmapService {
|
||||
}
|
||||
|
||||
setMinioObj() {}
|
||||
async getTilesNameList(): Promise<string[]> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const stream = await this.minioClient.listObjectsV2('nestfiles');
|
||||
const res: string[] = [];
|
||||
stream.on('data', (obj) => {
|
||||
res.push(obj.name);
|
||||
});
|
||||
stream.on('end', () => {
|
||||
resolve(res);
|
||||
});
|
||||
stream.on('error', () => {
|
||||
reject();
|
||||
});
|
||||
});
|
||||
|
||||
getTdtLocalArr(keyword:string, pageSize:number, pageNum:number) {
|
||||
// return this.tdtLocalRepository.find()
|
||||
}
|
||||
|
||||
async getTileFromLocal(tile_name: string): Promise<Buffer> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const stream = await this.minioClient.getObject('nestfiles', tile_name);
|
||||
const res: any[] = [];
|
||||
stream.on('data', (data: Buffer) => {
|
||||
if (Buffer.isBuffer(data)) res.push(data);
|
||||
});
|
||||
stream.on('end', () => {
|
||||
if (res.length > 0) resolve(Buffer.concat(res));
|
||||
else reject();
|
||||
});
|
||||
stream.on('error', () => {
|
||||
reject();
|
||||
});
|
||||
});
|
||||
setTdtLocal(tdtLocalEntitys:TdtLocal[]) {
|
||||
return this.tdtLocalRepository.save(tdtLocalEntitys);
|
||||
}
|
||||
|
||||
async setTileToLocal(tile_name: string, data: Buffer): Promise<boolean> {
|
||||
const res = await this.minioClient
|
||||
.putObject('nestfiles', tile_name, data)
|
||||
.catch((err) => {
|
||||
this.logger.error(`Minio Save Obj failed! => ${err}`);
|
||||
});
|
||||
async getTilesNameList():Promise<string[]> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const stream = await this.minioClient.listObjectsV2("nestfiles");
|
||||
const res:string[] = []
|
||||
stream.on("data", (obj) => { res.push(obj.name) })
|
||||
stream.on("end", () => { resolve(res) })
|
||||
stream.on("error", () => { reject() })
|
||||
})
|
||||
}
|
||||
|
||||
async getTileFromLocal(tile_name:string):Promise<Buffer> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const stream = await this.minioClient.getObject("nestfiles", tile_name)
|
||||
const res:any[] = []
|
||||
stream.on("data", (data:Buffer) => {
|
||||
if (Buffer.isBuffer(data)) res.push(data)
|
||||
})
|
||||
stream.on("end", () => {
|
||||
if (res.length > 0) resolve(Buffer.concat(res))
|
||||
else reject()
|
||||
})
|
||||
stream.on("error", () => { reject() })
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
async setTileToLocal(tile_name:string, data:Buffer):Promise<boolean> {
|
||||
const res = await this.minioClient.putObject("nestfiles", tile_name, data).catch((err) => {
|
||||
this.logger.error(`Minio Save Obj failed! => ${err}`)
|
||||
})
|
||||
if (!res) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
deleteMinioObj(tile_name: string) {
|
||||
this.minioClient.removeObject('nestfiles', tile_name);
|
||||
}
|
||||
|
||||
//地图缓存
|
||||
private readonly tdSearchUrl = 'https://api.tianditu.gov.cn/v2/search';
|
||||
async searchMapData(query: string): Promise<any> {
|
||||
//从缓存请求数据
|
||||
const cacheData = await this.cacheManager.get(query);
|
||||
if (cacheData) {
|
||||
return cacheData;
|
||||
}
|
||||
//缓存无数据;从外部请求数据
|
||||
try {
|
||||
const posInputVal = '';
|
||||
const tdSearchResponse = await axios.get(
|
||||
'https://api.tianditu.gov.cn/v2/search',
|
||||
{
|
||||
params: {
|
||||
type: 'query',
|
||||
postStr: JSON.stringify({
|
||||
yingjiType: 1,
|
||||
sourceType: 0,
|
||||
keyWord: posInputVal,
|
||||
level: 18,
|
||||
mapBound: '73.66, 3.86, 135.05, 53.55',
|
||||
queryType: '4',
|
||||
start: 0,
|
||||
queryTerminal: 10000,
|
||||
}),
|
||||
tk: '3499364c33fd4aa4415dd8765d4c5b77',
|
||||
},
|
||||
headers: {},
|
||||
},
|
||||
);
|
||||
//保存外部数据到缓存中
|
||||
if (tdSearchResponse.data && tdSearchResponse.data.length > 0) {
|
||||
await this.cacheManager.set(query, tdSearchResponse);
|
||||
return tdSearchResponse;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('从外部请求失败', error.message);
|
||||
}
|
||||
//外部请求失败时从本地查找
|
||||
const localSearchResult = searchDoc(query);
|
||||
if (localSearchResult.length > 0) {
|
||||
//写入缓存
|
||||
await this.cacheManager.set(query, localSearchResult);
|
||||
return localSearchResult;
|
||||
} else {
|
||||
console.log('未找到相关数据');
|
||||
}
|
||||
deleteMinioObj(tile_name:string) {
|
||||
this.minioClient.removeObject("nestfiles", tile_name);
|
||||
}
|
||||
}
|
||||
|
182
yarn.lock
182
yarn.lock
@ -1614,27 +1614,12 @@ base64-js@^1.3.1:
|
||||
resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
||||
|
||||
better-sqlite3@^11.0.0:
|
||||
version "11.2.1"
|
||||
resolved "https://registry.npmmirror.com/better-sqlite3/-/better-sqlite3-11.2.1.tgz#3c6b8a8e2e12444d380e811796b59c8aba012e03"
|
||||
integrity sha512-Xbt1d68wQnUuFIEVsbt6V+RG30zwgbtCGQ4QOcXVrOH0FE4eHk64FWZ9NUfRHS4/x1PXqwz/+KOrnXD7f0WieA==
|
||||
dependencies:
|
||||
bindings "^1.5.0"
|
||||
prebuild-install "^7.1.1"
|
||||
|
||||
binary-extensions@^2.0.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
|
||||
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
|
||||
|
||||
bindings@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
|
||||
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
|
||||
dependencies:
|
||||
file-uri-to-path "1.0.0"
|
||||
|
||||
bl@^4.0.3, bl@^4.1.0:
|
||||
bl@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
|
||||
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
||||
@ -1865,11 +1850,6 @@ chokidar@3.6.0, chokidar@^3.5.3:
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
chownr@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||
|
||||
chrome-trace-event@^1.0.2:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b"
|
||||
@ -2175,23 +2155,11 @@ decode-uri-component@^0.2.2:
|
||||
resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
|
||||
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
|
||||
|
||||
decompress-response@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
|
||||
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
|
||||
dependencies:
|
||||
mimic-response "^3.1.0"
|
||||
|
||||
dedent@^1.0.0:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.npmmirror.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
|
||||
integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
deep-is@^0.1.3:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
|
||||
@ -2238,11 +2206,6 @@ destroy@1.2.0:
|
||||
resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
||||
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
||||
|
||||
detect-libc@^2.0.0:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
|
||||
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
|
||||
|
||||
detect-newline@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmmirror.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
|
||||
@ -2334,13 +2297,6 @@ encodeurl@~1.0.2:
|
||||
resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
|
||||
|
||||
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
||||
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
||||
dependencies:
|
||||
once "^1.4.0"
|
||||
|
||||
enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.7.0:
|
||||
version "5.17.1"
|
||||
resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15"
|
||||
@ -2554,11 +2510,6 @@ exit@^0.1.2:
|
||||
resolved "https://registry.npmmirror.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
|
||||
integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmmirror.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
||||
|
||||
expect@^29.0.0, expect@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.npmmirror.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
|
||||
@ -2692,11 +2643,6 @@ file-entry-cache@^6.0.1:
|
||||
dependencies:
|
||||
flat-cache "^3.0.4"
|
||||
|
||||
file-uri-to-path@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
||||
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
|
||||
|
||||
filelist@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
|
||||
@ -2826,11 +2772,6 @@ fresh@0.5.2:
|
||||
resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||
|
||||
fs-extra@^10.0.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
|
||||
@ -2898,11 +2839,6 @@ get-stream@^6.0.0:
|
||||
resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
|
||||
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
|
||||
|
||||
github-from-package@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.npmmirror.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
|
||||
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
|
||||
|
||||
glob-parent@^5.1.2, glob-parent@~5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||
@ -3134,11 +3070,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i
|
||||
resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
ini@~1.3.0:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
|
||||
inquirer@8.2.6:
|
||||
version "8.2.6"
|
||||
resolved "https://registry.npmmirror.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562"
|
||||
@ -4107,11 +4038,6 @@ mimic-fn@^2.1.0:
|
||||
resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
mimic-response@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
|
||||
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
|
||||
|
||||
minimatch@9.0.3:
|
||||
version "9.0.3"
|
||||
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
|
||||
@ -4140,7 +4066,7 @@ minimatch@^9.0.4:
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6:
|
||||
minimist@^1.2.6:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
@ -4170,11 +4096,6 @@ minio@^8.0.1:
|
||||
resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||
|
||||
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
mkdirp@^0.5.4:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
|
||||
@ -4256,11 +4177,6 @@ named-placeholders@^1.1.3:
|
||||
dependencies:
|
||||
lru-cache "^7.14.1"
|
||||
|
||||
napi-build-utils@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
|
||||
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
|
||||
|
||||
natural-compare@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
@ -4276,13 +4192,6 @@ neo-async@^2.6.2:
|
||||
resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
||||
|
||||
node-abi@^3.3.0:
|
||||
version "3.67.0"
|
||||
resolved "https://registry.npmmirror.com/node-abi/-/node-abi-3.67.0.tgz#1d159907f18d18e18809dbbb5df47ed2426a08df"
|
||||
integrity sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==
|
||||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
node-abort-controller@^3.0.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npmmirror.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548"
|
||||
@ -4341,7 +4250,7 @@ on-finished@2.4.1:
|
||||
dependencies:
|
||||
ee-first "1.1.1"
|
||||
|
||||
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
||||
once@^1.3.0, once@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
@ -4571,24 +4480,6 @@ possible-typed-array-names@^1.0.0:
|
||||
resolved "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
|
||||
integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
|
||||
|
||||
prebuild-install@^7.1.1:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056"
|
||||
integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==
|
||||
dependencies:
|
||||
detect-libc "^2.0.0"
|
||||
expand-template "^2.0.3"
|
||||
github-from-package "0.0.0"
|
||||
minimist "^1.2.3"
|
||||
mkdirp-classic "^0.5.3"
|
||||
napi-build-utils "^1.0.1"
|
||||
node-abi "^3.3.0"
|
||||
pump "^3.0.0"
|
||||
rc "^1.2.7"
|
||||
simple-get "^4.0.0"
|
||||
tar-fs "^2.0.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
@ -4646,14 +4537,6 @@ proxy-from-env@^1.1.0:
|
||||
resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
|
||||
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
|
||||
|
||||
pump@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
|
||||
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
|
||||
dependencies:
|
||||
end-of-stream "^1.1.0"
|
||||
once "^1.3.1"
|
||||
|
||||
punycode@^2.1.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
|
||||
@ -4715,22 +4598,12 @@ raw-body@2.5.2:
|
||||
iconv-lite "0.4.24"
|
||||
unpipe "1.0.0"
|
||||
|
||||
rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-is@^18.0.0:
|
||||
version "18.3.1"
|
||||
resolved "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
|
||||
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
|
||||
|
||||
readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0:
|
||||
readable-stream@3, readable-stream@^3.4.0:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
|
||||
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
|
||||
@ -5001,20 +4874,6 @@ signal-exit@^4.0.1:
|
||||
resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
|
||||
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
||||
|
||||
simple-concat@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||
|
||||
simple-get@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
|
||||
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
|
||||
dependencies:
|
||||
decompress-response "^6.0.0"
|
||||
once "^1.3.1"
|
||||
simple-concat "^1.0.0"
|
||||
|
||||
sisteransi@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
|
||||
@ -5190,11 +5049,6 @@ strip-json-comments@^3.1.1:
|
||||
resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
|
||||
|
||||
strnum@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
|
||||
@ -5273,27 +5127,6 @@ tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1:
|
||||
resolved "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
|
||||
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
|
||||
|
||||
tar-fs@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
|
||||
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
mkdirp-classic "^0.5.2"
|
||||
pump "^3.0.0"
|
||||
tar-stream "^2.1.4"
|
||||
|
||||
tar-stream@^2.1.4:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
|
||||
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
|
||||
dependencies:
|
||||
bl "^4.0.3"
|
||||
end-of-stream "^1.4.1"
|
||||
fs-constants "^1.0.0"
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
terser-webpack-plugin@^5.3.10:
|
||||
version "5.3.10"
|
||||
resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199"
|
||||
@ -5472,13 +5305,6 @@ tslib@^2.1.0, tslib@^2.5.0, tslib@^2.6.2:
|
||||
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
|
||||
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
type-check@^0.4.0, type-check@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
|
||||
|
Loading…
Reference in New Issue
Block a user