update init-command

This commit is contained in:
wxzhang 2023-01-12 11:25:19 +08:00
parent fe8afcaff6
commit 5bc00d6e37
22 changed files with 454 additions and 61 deletions

View File

@ -14,28 +14,28 @@
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.17.8",
"@babel/plugin-transform-runtime": "^7.17.0",
"@babel/preset-env": "^7.16.11",
"@babel/core": "^7.18.10",
"@babel/plugin-transform-runtime": "^7.18.10",
"@babel/preset-env": "^7.18.10",
"@rollup/plugin-babel": "^5.3.1",
"@rollup/plugin-commonjs": "^21.0.2",
"@vuepress/client": "^2.0.0-beta.49",
"@rollup/plugin-commonjs": "^21.1.0",
"@vuepress/client": "2.0.0-beta.49",
"autopub": "^1.0.2",
"commander": "^9.0.0",
"commander": "^9.4.0",
"cross-env": "^7.0.3",
"dayjs": "^1.11.0",
"dayjs": "^1.11.4",
"deepmerge": "^4.2.2",
"dumi": "^1.1.47",
"enquirer": "^2.3.6",
"fast-glob": "^3.2.11",
"fs-extra": "^10.1.0",
"gulp": "^4.0.2",
"inquirer": "^8.2.2",
"inquirer": "^8.2.4",
"jest": "^27.5.1",
"logsets": "^1.0.20",
"pnpm": "^7.8.0",
"prettier": "^2.2.1",
"rollup": "^2.70.1",
"pnpm": "^7.9.0",
"prettier": "^2.7.1",
"rollup": "^2.77.2",
"rollup-plugin-clear": "^2.0.7",
"semver": "^7.3.7",
"shelljs": "^0.8.5",

View File

@ -0,0 +1 @@
console.log(t("这是一个测试"))

View File

@ -0,0 +1,3 @@
export default {
"1": "这是一个测试"
}

View File

@ -0,0 +1,113 @@
/**
格式化器用来对翻译文本内容中的插值变量进行处理
如何编写格式器请参阅官网
*/
// import { Formatter,FlexFormatter } from "./runtime"
export default {
// global : true, // 简单地设置为true,代表当前所有格式化器均注册到全局false只在当前scope生效
// global : { // 仅将里面的格式化器注册到全局
// $config:{... }
// xxxx : value => { ... },
// xxxx : (value,$config) => { ... },
// xxxx : (value,...args,$config) => { ... },
// xxxx : Formatter(value,...args,$config) => { ... },
// xxxx : FlexFormatter(value,params,$config) => { ... },
//}, // 是否注册到全局false只在当前scope生效
// 直接对内置格式化器进行配置,请参阅官网文档
// $config:{
// datetime : {
// units : ["Year","Quarter","Month","Week","Day","Hour","Minute","Second","Millisecond","Microsecond"],
// date :{
// long : 'YYYY/MM/DD HH:mm:ss',
// short : "YYYY/MM/DD",
// format : "local"
// },
// quarter : {
// long : ["First Quarter","Second Quarter","Third Quarter","Fourth Quarter"],
// short : ["Q1","Q2","Q3","Q4"],
// format : "short"
// },
// month:{
// long : ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
// short : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"],
// format : "long" // 0-长名称1-短名称2-数字
// },
// weekday:{
// long : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
// short : ["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"],
// format : "long", // 0-长名称1-短名称2-数字
// },
// time : {
// long : "HH:mm:ss",
// short : "HH:mm:ss",
// format : 'local'
// },
// timeSlots : {
// slots : [12],
// lowerCases : ["am","pm"],
// upperCases : ["AM","PM"]
// },
// relativeTime : {
// units : ["seconds","minutes","hours","days","weeks","months","years"],
// now : "Now",
// before : "{value} {unit} ago",
// after : "after {value} {unit}"
// }
// },
// currency : {
// default : "{symbol}{value}{unit}",
// long : "{prefix} {symbol}{value}{unit}{suffix}",
// short : "{symbol}{value}{unit}",
// custom : "{prefix} {symbol}{value}{unit}{suffix}",
// format : "default",
// //--
// units : [""," thousands"," millions"," billions"," trillions"], //千,百万,十亿,万亿
// radix : 3, // 进制即三位一进中文是4位一进
// symbol : "$", // 符号
// prefix : "USD", // 前缀
// suffix : "", // 后缀
// division : 3, // ,分割位
// precision : 2, // 精度
// },
// number : {
// division : 3, // , 分割位3代表每3位添加一个,
// precision : 0 // 精度,即保留小数点位置,0代表不限
// },
// empty:{
// //values : [], // 可选定义空值如果想让0,''也为空值可以指定values=[0,'']
// escape : "", // 当空值时显示的备用值
// next : 'break' // 当空值时下一步的行为: break=中止;skip=跳过
// },
// error : {
// //当错误时显示的内容支持的插值变量有message=错误信息,error=错误类名,也可以是一个返回上面内容的同步函数
// escape : null, // 默认当错误时显示空内容
// next : 'break' // 当出错时下一步的行为: break=中止;skip=忽略
// },
// fileSize:{
// brief : ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB","NB","DB"],
// whole : ["Bytes", "Kilobytes", "Megabytes", "Gigabytes", "TeraBytes", "PetaBytes", "ExaBytes", "ZetaBytes", "YottaBytes","DoggaBytes"],
// precision: 2 // 小数精度
// }
// },
// 改变特定数据类型的默认格式化器
// $types:{
// Date : dateFormatter,
// Null : value =>"",
// Undefined: value =>"",
// Error : value => "ERROR",
// Boolean : value =>value ? "True":"False",
// Number : numberFormartter
// }
// 以下可以自定义编写格式化器
// xxxx : value => { ... },
// xxxx : (value,$config) => { ... },
// xxxx : (value,...args,$config) => { ... },
// xxxx : Formatter(value,...args,$config) => { ... },
// xxxx : FlexFormatter(value,params,$config) => { ... },
}

View File

@ -0,0 +1,113 @@
/**
格式化器用来对翻译文本内容中的插值变量进行处理
如何编写格式器请参阅官网
*/
// import { Formatter,FlexFormatter } from "./runtime"
export default {
// global : true, // 简单地设置为true,代表当前所有格式化器均注册到全局false只在当前scope生效
// global : { // 仅将里面的格式化器注册到全局
// $config:{... }
// xxxx : value => { ... },
// xxxx : (value,$config) => { ... },
// xxxx : (value,...args,$config) => { ... },
// xxxx : Formatter(value,...args,$config) => { ... },
// xxxx : FlexFormatter(value,params,$config) => { ... },
//}, // 是否注册到全局false只在当前scope生效
// 直接对内置格式化器进行配置,请参阅官网文档
// $config:{
// datetime : {
// units : ["Year","Quarter","Month","Week","Day","Hour","Minute","Second","Millisecond","Microsecond"],
// date :{
// long : 'YYYY/MM/DD HH:mm:ss',
// short : "YYYY/MM/DD",
// format : "local"
// },
// quarter : {
// long : ["First Quarter","Second Quarter","Third Quarter","Fourth Quarter"],
// short : ["Q1","Q2","Q3","Q4"],
// format : "short"
// },
// month:{
// long : ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
// short : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"],
// format : "long" // 0-长名称1-短名称2-数字
// },
// weekday:{
// long : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
// short : ["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"],
// format : "long", // 0-长名称1-短名称2-数字
// },
// time : {
// long : "HH:mm:ss",
// short : "HH:mm:ss",
// format : 'local'
// },
// timeSlots : {
// slots : [12],
// lowerCases : ["am","pm"],
// upperCases : ["AM","PM"]
// },
// relativeTime : {
// units : ["seconds","minutes","hours","days","weeks","months","years"],
// now : "Now",
// before : "{value} {unit} ago",
// after : "after {value} {unit}"
// }
// },
// currency : {
// default : "{symbol}{value}{unit}",
// long : "{prefix} {symbol}{value}{unit}{suffix}",
// short : "{symbol}{value}{unit}",
// custom : "{prefix} {symbol}{value}{unit}{suffix}",
// format : "default",
// //--
// units : [""," thousands"," millions"," billions"," trillions"], //千,百万,十亿,万亿
// radix : 3, // 进制即三位一进中文是4位一进
// symbol : "$", // 符号
// prefix : "USD", // 前缀
// suffix : "", // 后缀
// division : 3, // ,分割位
// precision : 2, // 精度
// },
// number : {
// division : 3, // , 分割位3代表每3位添加一个,
// precision : 0 // 精度,即保留小数点位置,0代表不限
// },
// empty:{
// //values : [], // 可选定义空值如果想让0,''也为空值可以指定values=[0,'']
// escape : "", // 当空值时显示的备用值
// next : 'break' // 当空值时下一步的行为: break=中止;skip=跳过
// },
// error : {
// //当错误时显示的内容支持的插值变量有message=错误信息,error=错误类名,也可以是一个返回上面内容的同步函数
// escape : null, // 默认当错误时显示空内容
// next : 'break' // 当出错时下一步的行为: break=中止;skip=忽略
// },
// fileSize:{
// brief : ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB","NB","DB"],
// whole : ["Bytes", "Kilobytes", "Megabytes", "Gigabytes", "TeraBytes", "PetaBytes", "ExaBytes", "ZetaBytes", "YottaBytes","DoggaBytes"],
// precision: 2 // 小数精度
// }
// },
// 改变特定数据类型的默认格式化器
// $types:{
// Date : dateFormatter,
// Null : value =>"",
// Undefined: value =>"",
// Error : value => "ERROR",
// Boolean : value =>value ? "True":"False",
// Number : numberFormartter
// }
// 以下可以自定义编写格式化器
// xxxx : value => { ... },
// xxxx : (value,$config) => { ... },
// xxxx : (value,...args,$config) => { ... },
// xxxx : Formatter(value,...args,$config) => { ... },
// xxxx : FlexFormatter(value,params,$config) => { ... },
}

View File

@ -1,7 +1,3 @@
export default {
"a":1,
"b":2,
"c{}{}":3,
"d{a}{b}":4,
"e":5
}
"这是一个测试": 1
}

View File

@ -0,0 +1,54 @@
import messageIds from "./idMap.js" // 语言ID映射文件
import runtime from "@voerkai18n/runtime"
const { translate,VoerkaI18nScope } = runtime
import defaultFormatters from "./formatters/zh"
const activeFormatters = defaultFormatters
import defaultMessages from "./zh.js"
const activeMessages = defaultMessages
// 语言配置文件
const scopeSettings = {
"languages": [
{
"name": "zh",
"title": "中文"
},
{
"name": "en",
"title": "英语"
}
],
"defaultLanguage": "zh",
"activeLanguage": "zh",
"namespaces": {}
}
const formatters = {
'zh' : defaultFormatters,
'en' : ()=>import("./formatters/en.js")
}
// 语言包加载器
const loaders = {
"en" : ()=>import("./en.js")
}
// 语言作用域
const scope = new VoerkaI18nScope({
...scopeSettings, // languages,defaultLanguage,activeLanguage,namespaces,formatters
id : "lib1", // 当前作用域的id自动取当前工程的package.json的name
debug : false, // 是否在控制台输出高度信息
default : defaultMessages, // 默认语言包
messages : activeMessages, // 当前语言包
idMap : messageIds, // 消息id映射列表
formatters, // 扩展自定义格式化器
loaders // 语言包加载器
})
// 翻译函数
const scopedTtranslate = translate.bind(scope)
export {
scopedTtranslate as t,
scope as i18nScope
}

View File

@ -0,0 +1,15 @@
{
"languages": [
{
"name": "zh",
"title": "中文"
},
{
"name": "en",
"title": "英语"
}
],
"defaultLanguage": "zh",
"activeLanguage": "zh",
"namespaces": {}
}

View File

@ -0,0 +1,8 @@
{
"这是一个测试": {
"en": "这是一个测试",
"$file": [
"index.js"
]
}
}

View File

@ -0,0 +1,3 @@
export default {
"1": "这是一个测试"
}

View File

@ -0,0 +1,18 @@
{
"name": "lib1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@voerkai18n/cli": "workspace:^1.0.41"
},
"dependencies": {
"@voerkai18n/runtime": "workspace:^1.1.10"
}
}

0
packages/apps/lib1/pnpm-lock.yaml generated Normal file
View File

View File

@ -25,7 +25,7 @@
const glob = require("glob")
const createLogger = require("logsets")
const path = require("path")
const { findModuleType,getCurrentPackageJson,installVoerkai18nRuntime,isInstallDependent,updateVoerkai18nRuntime} = require("@voerkai18n/utils")
const { findModuleType,getCurrentPackageJson} = require("@voerkai18n/utils")
const { t } = require("./i18nProxy")
const fs = require("fs-extra")
const logger = createLogger()

View File

@ -1,6 +1,5 @@
const { Command } = require('commander');
const createLogger = require("logsets")
const bannerPluin = require("logsets/plugins/banner")
const path = require("path")
const fs = require("fs-extra")
@ -8,7 +7,6 @@ const logger = createLogger()
const { i18nScope ,t } = require("./i18nProxy")
const { getProjectSourceFolder,isTypeScriptProject } = require("@voerkai18n/utils");
logger.use(bannerPluin)
const program = new Command();
program
@ -30,6 +28,7 @@ program
.argument('[location]', t('工程项目所在目录'))
.description(t('初始化项目国际化配置'))
.option('-D, --debug', t('输出调试信息'))
.option('-m, --moduleType [types]', t('输出模块类型,取值auto,esm,cjs'), 'esm')
.option('-r, --reset', t('重新生成当前项目的语言配置'))
.option('-lngs, --languages <languages...>', t('支持的语言列表'), ['zh','en'])
.option('-d, --defaultLanguage <name>', t('默认语言'), 'zh')
@ -39,6 +38,7 @@ program
await i18nScope.change(lang)
})
.action((location,options) => {
options.isTypeScript = options.typescript==undefined ? isTypeScriptProject() : options.typescript
location = getProjectSourceFolder(location)
logger.log(t("工程目录:{}"),location)
//

View File

@ -10,6 +10,7 @@ const { t } = require("./i18nProxy")
const createLogger = require("logsets")
const logger = createLogger()
const { installPackage } = require("@voerkai18n/utils")
const artTemplate = require("art-template")
function getLanguageList(langs,defaultLanguage){
try{
@ -38,16 +39,17 @@ function getLanguageList(langs,defaultLanguage){
}
module.exports = function(srcPath,{debug = true,languages=["zh","en"],defaultLanguage="zh",activeLanguage="zh",reset=false,installRuntime=true}={}){
module.exports = function(srcPath,{moduleType='cjs',isTypeScript,debug = true,languages=["zh","en"],defaultLanguage="zh",activeLanguage="zh",reset=false}={}){
let settings = {}
let tasks = logger.tasklist("初始化VoerkaI18n工程")
const langFolderName = "languages"
// 查找当前项目的语言包类型路径
const lngPath = path.join(srcPath,langFolderName)
// 语言文件夹名称
try{
tasks.add("创建语言包文件夹")
const langPath = "languages"
// 查找当前项目的语言包类型路径
const lngPath = path.join(srcPath,langPath)
if(!fs.existsSync(lngPath)){
fs.mkdirSync(lngPath)
if(debug) logger.log(t("创建语言包文件夹: {}"),lngPath)
@ -63,9 +65,10 @@ module.exports = function(srcPath,{debug = true,languages=["zh","en"],defaultLan
const settingsFile = path.join(lngPath,"settings.json")
if(fs.existsSync(settingsFile) && !reset){
if(debug) logger.log(t("语言配置文件{}文件已存在,跳过创建。\n使用{}可以重新覆盖创建"),settingsFile,"-r")
tasks.skip()
return
}
const settings = {
settings = {
languages:getLanguageList(languages,defaultLanguage),
defaultLanguage,
activeLanguage,
@ -78,12 +81,26 @@ module.exports = function(srcPath,{debug = true,languages=["zh","en"],defaultLan
tasks.error(e.message)
}
// 生成一个语言初始化文件,该文件在执行extract/compile前提供访问t函数的能力
try{
tasks.add("初始化语言上下文")
const templateContext = {
moduleType
}
const entryContent = artTemplate(path.join(__dirname,"templates",`init-entry.${isTypeScript ? 'ts' : 'js'}`), templateContext )
fs.writeFileSync(path.join(lngPath,`index.${isTypeScript ? 'ts' : 'js'}`),entryContent)
tasks.complete()
}catch(e){
tasks.error(e.message)
}
try{
tasks.add(t("安装运行时依赖@voerkai18n/runtime"))
installPackage('@voerkai18n/runtime')
tasks.complete()
}catch(e){
tasks.error(e.message)
console.error(e.stack)
}
if(debug) {

View File

@ -40,15 +40,12 @@
"fs-extra": "^10.0.1",
"glob": "^7.2.0",
"gulp": "^4.0.2",
"logsets": "^1.0.8",
"logsets": "^1.0.20",
"md5": "^2.3.0",
"qs": "^6.10.3",
"shelljs": "^0.8.5",
"through2": "^4.0.2",
"vinyl": "^2.2.1"
},
"devDependencies": {
"@voerkai18n/autopublish": "workspace:^1.0.2"
},
"lastPublish": "2023-01-11T21:51:34+08:00"
}

View File

@ -0,0 +1,35 @@
/**
* 初始化入口
*
* 本文件仅供在执行voerkai18n extract&compile前提供t函数引用
*
*/
{{if moduleType === "esm"}}
import runtime from "@voerkai18n/runtime"
const { translate,VoerkaI18nScope } = runtime
{{else}}
const { translate,i18nScope } = require("@voerkai18n/runtime")
{{/if}}
// 语言作用域
const scope = new VoerkaI18nScope({
id : "{{scopeId}}", // 当前作用域的id自动取当前工程的package.json的name
debug : false, // 是否在控制台输出高度信息
default : {}, // 默认语言包
messages : {}, // 当前语言包
idMap : {}, // 消息id映射列表
formatters, // 扩展自定义格式化器
loaders : {} // 语言包加载器
})
// 翻译函数
const scopedTtranslate = translate.bind(scope)
{{if moduleType === "esm"}}
export {
scopedTtranslate as t,
scope as i18nScope
}
{{else}}
module.exports.t = scopedTtranslate
module.exports.i18nScope = scope
{{/if}}

View File

@ -0,0 +1,26 @@
/**
*
*
* voerkai18n extract&compile前提供t函数引用
*
*/
import runtime from "@voerkai18n/runtime"
const { translate,VoerkaI18nScope } = runtime
// 语言作用域
const scope = new VoerkaI18nScope({
id : "{{scopeId}}", // 当前作用域的id自动取当前工程的package.json的name
debug : false, // 是否在控制台输出高度信息
default : {}, // 默认语言包
messages : {}, // 当前语言包
idMap : {}, // 消息id映射列表
formatters : {}, // 扩展自定义格式化器
loaders : {} // 语言包加载器
})
// 翻译函数
const scopedTtranslate = translate.bind(scope)
export {
scopedTtranslate as t,
scope as i18nScope
}

View File

@ -30,9 +30,7 @@ const fs = require("fs-extra")
const { glob } = require("glob")
const { default: axios } = require("axios")
const logger = createLogger()
const TaskListPlugin = require("logsets/plugins/tasklist")
const { deepMerge } = require("@voerkai18n/utils")
logger.use(TaskListPlugin)
const delay = async (t) => new Promise(resolve=>setTimeout(resolve,t))

View File

@ -1,6 +1,6 @@
{
"name": "@voerkai18n/runtime",
"version": "1.1.10",
"version": "1.1.11",
"description": "核心运行时",
"main": "./dist/index.cjs",
"module": "./dist/index.esm.js",
@ -41,4 +41,4 @@
"rollup-plugin-terser": "^7.0.2"
},
"lastPublish": "2023-01-11T21:50:59+08:00"
}
}

View File

@ -409,7 +409,7 @@ function deepMerge(toObj,formObj,options={}){
}
function getPackageTool(){
const projectFolder = getProjectRootFolder(srcPath || process.cwd())
const projectFolder = getProjectRootFolder(process.cwd())
if(fs.existsSync(path.join(projectFolder,"pnpm-lock.yaml"))){
return 'pnpm'
}else if(fs.existsSync(path.join(projectFolder,"yarn.lock"))){

48
pnpm-lock.yaml generated
View File

@ -4,28 +4,28 @@ importers:
.:
specifiers:
'@babel/core': ^7.17.8
'@babel/plugin-transform-runtime': ^7.17.0
'@babel/preset-env': ^7.16.11
'@babel/core': ^7.18.10
'@babel/plugin-transform-runtime': ^7.18.10
'@babel/preset-env': ^7.18.10
'@rollup/plugin-babel': ^5.3.1
'@rollup/plugin-commonjs': ^21.0.2
'@vuepress/client': ^2.0.0-beta.49
'@rollup/plugin-commonjs': ^21.1.0
'@vuepress/client': 2.0.0-beta.49
autopub: ^1.0.2
commander: ^9.0.0
commander: ^9.4.0
cross-env: ^7.0.3
dayjs: ^1.11.0
dayjs: ^1.11.4
deepmerge: ^4.2.2
dumi: ^1.1.47
enquirer: ^2.3.6
fast-glob: ^3.2.11
fs-extra: ^10.1.0
gulp: ^4.0.2
inquirer: ^8.2.2
inquirer: ^8.2.4
jest: ^27.5.1
logsets: ^1.0.20
pnpm: ^7.8.0
prettier: ^2.2.1
rollup: ^2.70.1
pnpm: ^7.9.0
prettier: ^2.7.1
rollup: ^2.77.2
rollup-plugin-clear: ^2.0.7
semver: ^7.3.7
shelljs: ^0.8.5
@ -70,6 +70,15 @@ importers:
'@voerkai18n/cli': link:../../cli
'@voerkai18n/runtime': link:../../runtime
packages/apps/lib1:
specifiers:
'@voerkai18n/cli': workspace:^1.0.41
'@voerkai18n/runtime': workspace:^1.1.10
dependencies:
'@voerkai18n/runtime': link:../../runtime
devDependencies:
'@voerkai18n/cli': link:../../cli
packages/apps/reactapp:
specifiers:
'@babel/runtime-corejs3': ^7.20.7
@ -157,7 +166,6 @@ importers:
specifiers:
'@babel/cli': ^7.17.6
'@babel/core': ^7.17.5
'@voerkai18n/autopublish': workspace:^1.0.2
'@voerkai18n/runtime': workspace:^1.0.14
'@voerkai18n/utils': workspace:^1.0.6
art-template: ^4.13.2
@ -168,7 +176,7 @@ importers:
fs-extra: ^10.0.1
glob: ^7.2.0
gulp: ^4.0.2
logsets: ^1.0.8
logsets: ^1.0.20
md5: ^2.3.0
qs: ^6.10.3
shelljs: ^0.8.5
@ -187,14 +195,12 @@ importers:
fs-extra: 10.1.0
glob: 7.2.3
gulp: 4.0.2
logsets: 1.0.12
logsets: 1.0.20
md5: 2.3.0
qs: 6.11.0
shelljs: 0.8.5
through2: 4.0.2
vinyl: 2.2.1
devDependencies:
'@voerkai18n/autopublish': link:../autopublish
packages/formatters:
specifiers:
@ -7786,15 +7792,6 @@ packages:
is-unicode-supported: 0.1.0
dev: true
/logsets/1.0.12:
resolution: {integrity: sha512-0sIHPbyhHDKZll7j6XnTq91pe8QTBshapB2BDVD6lOqKuyitukK2Grt7iEbUF432kaBt+xDvYiU3DadaUyowog==}
dependencies:
'@babel/runtime-corejs3': 7.18.9
ansicolor: 1.1.100
core-js: 3.24.1
deepmerge: 4.2.2
dev: false
/logsets/1.0.20:
resolution: {integrity: sha512-2ch4+TSciSTFAkkIv9tL7xOMe0Tg+XYsR//EAcMW2227bWjscReAoz2GLkjIMJMACHVZIyXmKrohtiV9z6M1iQ==}
dependencies:
@ -7802,7 +7799,6 @@ packages:
ansicolor: 1.1.100
core-js: 3.24.1
deepmerge: 4.2.2
dev: true
/longest-streak/2.0.4:
resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}