add diff.js to compare update log; enhance the style of the row which has diff; comment the mock data

This commit is contained in:
geekgeekrun
2024-10-10 09:34:33 +08:00
parent 52c0e53a7e
commit 8cb379f6eb
6 changed files with 230 additions and 73 deletions

View File

@@ -37,6 +37,7 @@
"@geekgeekrun/sqlite-plugin": "workspace:*",
"@geekgeekrun/utils": "workspace:*",
"JSONStream": "^1.3.5",
"diff": "^7.0.0",
"electron-updater": "^6.1.7"
},
"devDependencies": {

View File

@@ -0,0 +1,55 @@
<template>
<pre><template v-for="diff in diffResultList"
><del v-if="diff.removed"
>{{ diff.value }}</del
><ins v-else-if="diff.added">{{ diff.value }}</ins
><span v-else-if="diff.chunkHeader" class="chunk-header">{{ diff.value }}</span
><span v-else>{{ diff.value }}</span
></template></pre>
</template>
<script lang="ts" setup>
import { PropType, computed } from 'vue'
import { diffWords } from 'diff'
const props = defineProps({
a: {
type: String,
default: ''
},
b: {
type: String,
default: ''
}
})
const diffResultList = computed(() => {
const diffs = diffWords(props.a, props.b)
for (let i = 0; i < diffs.length; i++) {
if (diffs[i].added && diffs[i + 1] && diffs[i + 1].removed) {
;[diffs[i], diffs[i + 1]] = [diffs[i + 1], diffs[i]]
}
}
return diffs
})
</script>
<style lang="scss" scoped>
pre {
overflow: auto;
}
del {
text-decoration: line-through;
color: #b30000;
background: #fadad7;
}
ins {
background: #eaf2c2;
color: #406619;
text-decoration: none;
}
.chunk-header {
color: #8a008b;
text-decoration: none;
}
</style>

View File

@@ -1,7 +1,20 @@
<template>
<div>
<el-table :data="dataForRender">
<el-table-column prop="title" label="" width="120px" fixed />
<el-form>
<el-row>
<el-col :span="6"><el-form-item label="公司">{{ jobInfo.companyName }}</el-form-item></el-col>
<el-col :span="6"><el-form-item label="职位名称">{{ jobInfo.jobName }}</el-form-item></el-col>
<el-col :span="6"><el-form-item label="职位分类">{{ jobInfo.positionName }}</el-form-item></el-col>
<el-col :span="6"><el-form-item label="Boss及其身份">{{ jobInfo.bossName }} {{ jobInfo.bossTitle }}</el-form-item></el-col>
</el-row>
</el-form>
<el-divider content-position="left">变更记录</el-divider>
<el-table
class="diff-table"
:data="dataForRender"
:row-style="getRowStyle"
>
<el-table-column prop="title" label="" width="150px" fixed />
<el-table-column
v-for="(item, index) in tableProps"
:key="index"
@@ -11,13 +24,13 @@
<template #header>
<div class="diff-table-header">
{{ dayjs(item.value).format('YYYY-MM-DD HH:mm:ss') }}
<el-radio v-model="diffPivot" :label="index">作为diff基准</el-radio>
<el-tooltip content="待对比条目少于2个" :disabled="tableProps.length > 1">
<el-radio v-model="diffPivot" :label="item.value" :disabled="tableProps.length <= 1">作为diff基准</el-radio>
</el-tooltip>
</div>
</template>
<template #default="{ row }">
<div class="of-auto">
<pre>{{ row[item.value] }}</pre>
</div>
<TextDiff :a="row[diffPivot]?.trim() ?? ''" :b="row[item.value]?.trim() ?? ''" />
</template>
</el-table-column>
</el-table>
@@ -28,8 +41,9 @@
import { PropType, computed, ref, watch } from 'vue'
import { type VChatStartupLog } from '@geekgeekrun/sqlite-plugin/src/entity/VChatStartupLog'
import { JobInfoChangeLog } from '@geekgeekrun/sqlite-plugin/src/entity/JobInfoChangeLog'
import { ElTable, ElTableColumn } from 'element-plus'
import { ElTable, ElTableColumn, ElForm, ElFormItem, ElRow, ElCol, ElDivider } from 'element-plus'
import dayjs from 'dayjs'
import TextDiff from '../../components/TextDiff.vue'
const props = defineProps({
jobInfo: {
@@ -54,8 +68,8 @@ const tableProps = computed(() =>
* 定义映射字段表(最好取全量字段)
* */
const mapObj = {
jobName: '职位名称',
positionName: '职位分类',
// jobName: '职位名称',
// positionName: '职位分类',
experienceName: '工作经验',
degreeName: '学历',
salaryDesc: '薪资',
@@ -79,17 +93,35 @@ const dataForRender = computed(() => {
return newArr
})
const diffPivot = ref(0)
const diffPivot = ref('')
watch(
() => props.jobInfoHistoryList,
[() => props.jobInfoHistoryList, () => tableProps.value],
() => {
if (!props.jobInfoHistoryList.length) {
diffPivot.value = 0
if (!props.jobInfoHistoryList.length || !tableProps.value.length) {
diffPivot.value = ''
return
}
diffPivot.value = props.jobInfoHistoryList.length - 1
diffPivot.value = tableProps.value[tableProps.value.length - 1].value
},
{
immediate: true
}
)
function getRowStyle ({ row }) {
const propsToCompare = tableProps.value.map(it => it.value)
for (let i = 0; i < propsToCompare.length - 1; i++) {
if (
row[propsToCompare[i]]?.trim() !==
row[propsToCompare[i + 1]]?.trim()
) {
return {
backgroundColor: '#fffeef'
}
}
}
return {}
}
</script>
<style lang="scss" scoped>
@@ -98,11 +130,13 @@ watch(
color: #999;
}
}
.diff-table-header {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.diff-table {
.diff-table-header {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
}
</style>
<style lang="scss"></style>

View File

@@ -8,4 +8,7 @@ import 'element-plus/dist/index.css'
import 'virtual:uno.css'
import 'animate.css'
createApp(App).use(router).use(ElementPlus).mount('#app')
createApp(App)
.use(router)
.use(ElementPlus)
.mount('#app')

View File

@@ -103,7 +103,7 @@
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount } from 'vue'
import { ElTable, ElTableColumn, ElButton, ElPagination, ElDrawer } from 'element-plus'
import { ElTable, ElTableColumn, ElButton, ElPagination, ElDrawer, ElMessage } from 'element-plus'
import { type VChatStartupLog } from '@geekgeekrun/sqlite-plugin/src/entity/VChatStartupLog'
import { type JobInfoChangeLog } from '@geekgeekrun/sqlite-plugin/src/entity/JobInfoChangeLog'
import { PageReq, PagedRes } from '../../../../common/types/pagination'
@@ -173,57 +173,66 @@ const historyDialogVisibleModelValue = ref(false)
const selectedJobInfoForViewHistory = ref<VChatStartupLog | null>(null)
const selectedJobHistory = ref<null | JobInfoChangeLog[]>(null)
async function handleViewJobHistoryButtonClick(record: VChatStartupLog) {
// let { data: historyList } = await electron.ipcRenderer.invoke(
// 'get-job-history-by-encrypt-id',
// record.encryptJobId
// )
let { data: historyList } = await electron.ipcRenderer.invoke(
'get-job-history-by-encrypt-id',
record.encryptJobId
)
// historyList = historyList.map((it) => ({
// ...it,
// ...(() => {
// try {
// return JSON.parse(it.dataAsJson)
// } catch {
// return {}
// }
// })(),
// __ggr_updateTime: it.updateTime
// }))
const { data: historyList } = await Promise.resolve({
data: [
{
id: 569,
encryptJobId: 'f0bf76bbd1d8dcf71Hxz2du8EFFY',
updateTime: '2024-10-04T00:12:20.941Z',
dataAsJson:
'{"encryptId":"f0bf76bbd1d8dcf71Hxz2du8EFFY","encryptUserId":"cf615f0b2a5db54a1Xxz2N26Fls~","invalidStatus":false,"jobName":"前端工程师","position":100901,"positionName":"前端开发工程师1","location":101010100,"locationName":"北京4","experienceName":"3-5年","degreeName":"本科","jobType":0,"proxyJob":0,"proxyType":0,"salaryDesc":"12-15K","payTypeDesc":null,"postDescription":"熟练使用HTML,CSSJAVASCRIPT;\\n熟练使用NPM或Yarn包管理工具\\n掌握SassPostCssLessStylus进行CSS预处理\\n熟练使用VITE或Webpack打包工具\\n精通使用Vue 3.0 、element-PLUS等主流前端框架熟练使用Vue状态管理路由配置vue-loader预处理组件自定义\\n熟练使用axios网络组件掌握使用Cookies以及网络请求前端加解密技术\\n熟练掌握前端组件化开发前端开发框架搭建\\n掌握前端缓存技术\\n了解前端优化技巧并且根据实际情况进行前端框架优化\\n了解常见前端攻击方式以及预防方法\\n熟练掌握echarts图表组件能够对大数据量多图表页面进行性能优化","encryptAddressId":"6914d969b01eafe21nd409S7FVFSxIm9Wfqf","address":"北京海淀区中软大厦.","longitude":116.334251,"latitude":39.958087,"staticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230428/48ba41acc9cef1bf3f3c8ba446b40b7757c453bede60b22f6bb61e3b7bce0931da574d19d1d82c88.jpg","pcStaticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230608/48ba41acc9cef1bf03ae3ae84352bc0cfa3e4b77ee71ca986bb61e3b7bce0931da574d19d1d82c88.jpg","overseasAddressList":[],"overseasInfo":null,"showSkills":["JavaScript","Vue"],"anonymous":0,"jobStatusDesc":"最新"}'
},
{
id: 570,
encryptJobId: 'f0bf76bbd1d8dcf71Hxz2du8EFFY',
updateTime: '2024-10-04T00:12:21.941Z',
dataAsJson:
'{"encryptId":"f0bf76bbd1d8dcf71Hxz2du8EFFY","encryptUserId":"cf615f0b2a5db54a1Xxz2N26Fls~","invalidStatus":false,"jobName":"前端工程师","position":100901,"positionName":"前端开发工程师2","location":101010100,"locationName":"北京5","experienceName":"3-5年","degreeName":"本科","jobType":0,"proxyJob":0,"proxyType":0,"salaryDesc":"12-15K","payTypeDesc":null,"postDescription":"熟练使用HTML,CSSJAVASCRIPT;\\n熟练使用NPM或Yarn包管理工具\\n掌握SassPostCssLessStylus进行CSS预处理\\n熟练使用VITE或Webpack打包工具\\n精通使用Vue 3.0 、element-PLUS等主流前端框架熟练使用Vue状态管理路由配置vue-loader预处理组件自定义\\n熟练使用axios网络组件掌握使用Cookies以及网络请求前端加解密技术\\n熟练掌握前端组件化开发前端开发框架搭建\\n掌握前端缓存技术\\n了解前端优化技巧并且根据实际情况进行前端框架优化\\n了解常见前端攻击方式以及预防方法\\n熟练掌握echarts图表组件能够对大数据量多图表页面进行性能优化","encryptAddressId":"6914d969b01eafe21nd409S7FVFSxIm9Wfqf","address":"北京海淀区中软大厦.","longitude":116.334251,"latitude":39.958087,"staticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230428/48ba41acc9cef1bf3f3c8ba446b40b7757c453bede60b22f6bb61e3b7bce0931da574d19d1d82c88.jpg","pcStaticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230608/48ba41acc9cef1bf03ae3ae84352bc0cfa3e4b77ee71ca986bb61e3b7bce0931da574d19d1d82c88.jpg","overseasAddressList":[],"overseasInfo":null,"showSkills":["JavaScript","Vue"],"anonymous":0,"jobStatusDesc":"最新"}'
},
{
id: 571,
encryptJobId: 'f0bf76bbd1d8dcf71Hxz2du8EFFY',
updateTime: '2024-10-04T00:12:22.941Z',
dataAsJson:
'{"encryptId":"f0bf76bbd1d8dcf71Hxz2du8EFFY","encryptUserId":"cf615f0b2a5db54a1Xxz2N26Fls~","invalidStatus":false,"jobName":"前端工程师","position":100901,"positionName":"前端开发工程师3","location":101010100,"locationName":"北京6","experienceName":"3-5年","degreeName":"本科","jobType":0,"proxyJob":0,"proxyType":0,"salaryDesc":"12-15K","payTypeDesc":null,"postDescription":"熟练使用HTML,CSSJAVASCRIPT;\\n熟练使用NPM或Yarn包管理工具\\n掌握SassPostCssLessStylus进行CSS预处理\\n熟练使用VITE或Webpack打包工具\\n精通使用Vue 3.0 、element-PLUS等主流前端框架熟练使用Vue状态管理路由配置vue-loader预处理组件自定义\\n熟练使用axios网络组件掌握使用Cookies以及网络请求前端加解密技术\\n熟练掌握前端组件化开发前端开发框架搭建\\n掌握前端缓存技术\\n了解前端优化技巧并且根据实际情况进行前端框架优化\\n了解常见前端攻击方式以及预防方法\\n熟练掌握echarts图表组件能够对大数据量多图表页面进行性能优化","encryptAddressId":"6914d969b01eafe21nd409S7FVFSxIm9Wfqf","address":"北京海淀区中软大厦.","longitude":116.334251,"latitude":39.958087,"staticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230428/48ba41acc9cef1bf3f3c8ba446b40b7757c453bede60b22f6bb61e3b7bce0931da574d19d1d82c88.jpg","pcStaticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230608/48ba41acc9cef1bf03ae3ae84352bc0cfa3e4b77ee71ca986bb61e3b7bce0931da574d19d1d82c88.jpg","overseasAddressList":[],"overseasInfo":null,"showSkills":["JavaScript","Vue"],"anonymous":0,"jobStatusDesc":"最新"}'
historyList = historyList.map((it) => ({
...it,
...(() => {
try {
return JSON.parse(it.dataAsJson)
} catch {
return {}
}
].map((it) => ({
...it,
...(() => {
try {
return JSON.parse(it.dataAsJson)
} catch {
return {}
}
})(),
__ggr_updateTime: it.updateTime
}))
})
})(),
__ggr_updateTime: it.updateTime
}))
// const { data: historyList } = await Promise.resolve({
// data: [
// {
// id: 569,
// encryptJobId: 'f0bf76bbd1d8dcf71Hxz2du8EFFY',
// updateTime: '2024-10-04T00:12:20.941Z',
// dataAsJson:
// '{"encryptId":"f0bf76bbd1d8dcf71Hxz2du8EFFY","encryptUserId":"cf615f0b2a5db54a1Xxz2N26Fls~","invalidStatus":false,"jobName":"前端工程师","position":100901,"positionName":"前端开发工程师","location":101010100,"locationName":"工人体育场","experienceName":"1-3年","degreeName":"本科","jobType":0,"proxyJob":0,"proxyType":0,"salaryDesc":"25-40K","payTypeDesc":null,"postDescription":"熟练使用HTML,CSSJAVASCRIPT;\\n熟练使用NPM或Yarn包管理工具\\n掌握SassPostCssLessStylus进行CSS预处理\\n熟练使用VITE或Webpack打包工具\\n精通使用Vue 3.0 、element-PLUS等主流前端框架熟练使用Vue状态管理路由配置vue-loader预处理组件自定义\\n熟练使用axios网络组件掌握使用Cookies以及网络请求前端加解密技术\\n熟练掌握前端组件化开发前端开发框架搭建\\n掌握前端缓存技术\\n了解前端优化技巧并且根据实际情况进行前端框架优化\\n了解常见前端攻击方式以及预防方法\\n熟练掌握echarts图表组件能够对大数据量多图表页面进行性能优化","encryptAddressId":"6914d969b01eafe21nd409S7FVFSxIm9Wfqf","address":"北京海淀区中软大厦.","longitude":116.334251,"latitude":39.958087,"staticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230428/48ba41acc9cef1bf3f3c8ba446b40b7757c453bede60b22f6bb61e3b7bce0931da574d19d1d82c88.jpg","pcStaticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230608/48ba41acc9cef1bf03ae3ae84352bc0cfa3e4b77ee71ca986bb61e3b7bce0931da574d19d1d82c88.jpg","overseasAddressList":[],"overseasInfo":null,"showSkills":["JavaScript","Vue"],"anonymous":0,"jobStatusDesc":"最新"}'
// },
// {
// id: 570,
// encryptJobId: 'f0bf76bbd1d8dcf71Hxz2du8EFFY',
// updateTime: '2024-10-04T00:12:21.941Z',
// dataAsJson:
// '{"encryptId":"f0bf76bbd1d8dcf71Hxz2du8EFFY","encryptUserId":"cf615f0b2a5db54a1Xxz2N26Fls~","invalidStatus":false,"jobName":"前端工程师","position":100901,"positionName":"前端开发工程师","location":101010100,"locationName":"肖家河桥","experienceName":"3-5年","degreeName":"本科","jobType":0,"proxyJob":0,"proxyType":0,"salaryDesc":"25-40K","payTypeDesc":null,"postDescription":"熟练使用VITE或Webpack打包工具\\n精通使用Vue 3.0 、element-PLUS等主流前端框架熟练使用Vue状态管理路由配置vue-loader预处理组件自定义\\n熟练使用axios网络组件掌握使用Cookies以及网络请求前端加解密技术\\n熟练掌握前端组件化开发前端开发框架搭建\\n掌握前端缓存技术\\n了解前端优化技巧并且根据实际情况进行前端框架优化\\n了解常见前端攻击方式以及预防方法\\n熟练掌握echarts图表组件能够对大数据量多图表页面进行性能优化","encryptAddressId":"6914d969b01eafe21nd409S7FVFSxIm9Wfqf","address":"北京海淀区中软大厦.","longitude":116.334251,"latitude":39.958087,"staticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230428/48ba41acc9cef1bf3f3c8ba446b40b7757c453bede60b22f6bb61e3b7bce0931da574d19d1d82c88.jpg","pcStaticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230608/48ba41acc9cef1bf03ae3ae84352bc0cfa3e4b77ee71ca986bb61e3b7bce0931da574d19d1d82c88.jpg","overseasAddressList":[],"overseasInfo":null,"showSkills":["JavaScript","Vue"],"anonymous":0,"jobStatusDesc":"最新"}'
// },
// {
// id: 571,
// encryptJobId: 'f0bf76bbd1d8dcf71Hxz2du8EFFY',
// updateTime: '2024-10-04T00:12:22.941Z',
// dataAsJson:
// '{"encryptId":"f0bf76bbd1d8dcf71Hxz2du8EFFY","encryptUserId":"cf615f0b2a5db54a1Xxz2N26Fls~","invalidStatus":false,"jobName":"前端工程师","position":100901,"positionName":"前端开发工程师","location":101010100,"locationName":"惠新西街南口","experienceName":"3-5年","degreeName":"本科","jobType":0,"proxyJob":0,"proxyType":0,"salaryDesc":"20-30K","payTypeDesc":null,"postDescription":"熟练使用HTML,CSSJAVASCRIPT;\\n熟练使用NPM或Yarn包管理工具\\n掌握SassPostCssLessStylus进行CSS预处理\\n熟练使用VITE或Webpack打包工具\\n精通使用Vue 3.0 、element-PLUS等主流前端框架熟练使用Vue状态管理路由配置vue-loader预处理组件自定义\\n熟练使用axios网络组件掌握使用Cookies以及网络请求前端加解密技术\\n熟练掌握前端组件化开发前端开发框架搭建\\n掌握前端缓存技术\\n了解前端优化技巧并且根据实际情况进行前端框架优化\\n了解常见前端攻击方式以及预防方法\\n熟练掌握echarts图表组件能够对大数据量多图表页面进行性能优化","encryptAddressId":"6914d969b01eafe21nd409S7FVFSxIm9Wfqf","address":"北京海淀区中软大厦.","longitude":116.334251,"latitude":39.958087,"staticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230428/48ba41acc9cef1bf3f3c8ba446b40b7757c453bede60b22f6bb61e3b7bce0931da574d19d1d82c88.jpg","pcStaticMapUrl":"https://img.bosszhipin.com/beijin/upload/amap_proxy/20230608/48ba41acc9cef1bf03ae3ae84352bc0cfa3e4b77ee71ca986bb61e3b7bce0931da574d19d1d82c88.jpg","overseasAddressList":[],"overseasInfo":null,"showSkills":["JavaScript","Vue"],"anonymous":0,"jobStatusDesc":"最新"}'
// }
// ].map((it) => ({
// ...it,
// ...(() => {
// try {
// return JSON.parse(it.dataAsJson)
// } catch {
// return {}
// }
// })(),
// __ggr_updateTime: it.updateTime
// }))
// })
if (!historyList.length) {
ElMessage.warning({
message: '未找到与此条目相关的历史变更记录,再多投一投吧'
})
return
}
historyDialogVisibleModelValue.value = true
selectedJobInfoForViewHistory.value = record
selectedJobHistory.value = historyList

61
pnpm-lock.yaml generated
View File

@@ -120,6 +120,9 @@ importers:
JSONStream:
specifier: ^1.3.5
version: 1.3.5
diff:
specifier: ^7.0.0
version: 7.0.0
electron-updater:
specifier: ^6.1.7
version: 6.1.7
@@ -992,6 +995,7 @@ packages:
/@gar/promisify@1.1.3:
resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
requiresBuild: true
dev: false
optional: true
@@ -1139,6 +1143,7 @@ packages:
/@npmcli/fs@1.1.1:
resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
requiresBuild: true
dependencies:
'@gar/promisify': 1.1.3
semver: 7.6.0
@@ -1149,6 +1154,7 @@ packages:
resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==}
engines: {node: '>=10'}
deprecated: This functionality has been moved to @npmcli/fs
requiresBuild: true
dependencies:
mkdirp: 1.0.4
rimraf: 3.0.2
@@ -1373,6 +1379,7 @@ packages:
/@tootallnate/once@1.1.2:
resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
engines: {node: '>= 6'}
requiresBuild: true
dev: false
optional: true
@@ -2064,6 +2071,7 @@ packages:
/abbrev@1.1.1:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
requiresBuild: true
dev: false
/acorn-jsx@5.3.2(acorn@8.11.3):
@@ -2103,6 +2111,7 @@ packages:
/agentkeepalive@4.5.0:
resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
engines: {node: '>= 8.0.0'}
requiresBuild: true
dependencies:
humanize-ms: 1.2.1
dev: false
@@ -2111,6 +2120,7 @@ packages:
/aggregate-error@3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
clean-stack: 2.2.0
indent-string: 4.0.0
@@ -2236,6 +2246,7 @@ packages:
/are-we-there-yet@3.0.1:
resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
requiresBuild: true
dependencies:
delegates: 1.0.0
readable-stream: 3.6.2
@@ -2346,6 +2357,7 @@ packages:
/boolean@3.2.0:
resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
requiresBuild: true
optional: true
/brace-expansion@1.1.11:
@@ -2443,6 +2455,7 @@ packages:
/cacache@15.3.0:
resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
engines: {node: '>= 10'}
requiresBuild: true
dependencies:
'@npmcli/fs': 1.1.1
'@npmcli/move-file': 1.1.2
@@ -2550,6 +2563,7 @@ packages:
/clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
requiresBuild: true
dev: false
optional: true
@@ -2805,6 +2819,7 @@ packages:
/define-data-property@1.1.2:
resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==}
engines: {node: '>= 0.4'}
requiresBuild: true
dependencies:
es-errors: 1.3.0
get-intrinsic: 1.2.4
@@ -2815,6 +2830,7 @@ packages:
/define-properties@1.2.1:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
requiresBuild: true
dependencies:
define-data-property: 1.1.2
has-property-descriptors: 1.0.1
@@ -2854,6 +2870,7 @@ packages:
/detect-node@2.1.0:
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
requiresBuild: true
optional: true
/devtools-protocol@0.0.1120988:
@@ -2864,6 +2881,11 @@ packages:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
/diff@7.0.0:
resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==}
engines: {node: '>=0.3.1'}
dev: false
/dir-compare@3.3.0:
resolution: {integrity: sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==}
dependencies:
@@ -3101,10 +3123,12 @@ packages:
/es-errors@1.3.0:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
requiresBuild: true
optional: true
/es6-error@4.1.1:
resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
requiresBuild: true
optional: true
/esbuild@0.19.12:
@@ -3572,6 +3596,7 @@ packages:
/gauge@4.0.4:
resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
requiresBuild: true
dependencies:
aproba: 2.0.0
color-support: 1.1.3
@@ -3596,6 +3621,7 @@ packages:
/get-intrinsic@1.2.4:
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
engines: {node: '>= 0.4'}
requiresBuild: true
dependencies:
es-errors: 1.3.0
function-bind: 1.1.2
@@ -3691,6 +3717,7 @@ packages:
/globalthis@1.0.3:
resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
engines: {node: '>= 0.4'}
requiresBuild: true
dependencies:
define-properties: 1.2.1
optional: true
@@ -3709,6 +3736,7 @@ packages:
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
requiresBuild: true
dependencies:
get-intrinsic: 1.2.4
optional: true
@@ -3753,6 +3781,7 @@ packages:
/has-property-descriptors@1.0.1:
resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
requiresBuild: true
dependencies:
get-intrinsic: 1.2.4
optional: true
@@ -3760,11 +3789,13 @@ packages:
/has-proto@1.0.1:
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
engines: {node: '>= 0.4'}
requiresBuild: true
optional: true
/has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
requiresBuild: true
optional: true
/has-unicode@2.0.1:
@@ -3799,6 +3830,7 @@ packages:
/http-proxy-agent@4.0.1:
resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
engines: {node: '>= 6'}
requiresBuild: true
dependencies:
'@tootallnate/once': 1.1.2
agent-base: 6.0.2
@@ -3862,6 +3894,7 @@ packages:
/humanize-ms@1.2.1:
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
requiresBuild: true
dependencies:
ms: 2.1.2
dev: false
@@ -3911,11 +3944,13 @@ packages:
/indent-string@4.0.0:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
requiresBuild: true
dev: false
optional: true
/infer-owner@1.0.4:
resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
requiresBuild: true
dev: false
optional: true
@@ -3986,6 +4021,7 @@ packages:
/is-lambda@1.0.1:
resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
requiresBuild: true
dev: false
optional: true
@@ -4086,6 +4122,7 @@ packages:
/json-stringify-safe@5.0.1:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
requiresBuild: true
optional: true
/json5@2.2.3:
@@ -4260,6 +4297,7 @@ packages:
/make-fetch-happen@9.1.0:
resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==}
engines: {node: '>= 10'}
requiresBuild: true
dependencies:
agentkeepalive: 4.5.0
cacache: 15.3.0
@@ -4286,6 +4324,7 @@ packages:
/matcher@3.0.0:
resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==}
engines: {node: '>=10'}
requiresBuild: true
dependencies:
escape-string-regexp: 4.0.0
optional: true
@@ -4381,6 +4420,7 @@ packages:
/minipass-collect@1.0.2:
resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
engines: {node: '>= 8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
@@ -4389,6 +4429,7 @@ packages:
/minipass-fetch@1.4.1:
resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
minipass-sized: 1.0.3
@@ -4401,6 +4442,7 @@ packages:
/minipass-flush@1.0.5:
resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
engines: {node: '>= 8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
@@ -4409,6 +4451,7 @@ packages:
/minipass-pipeline@1.2.4:
resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
@@ -4417,6 +4460,7 @@ packages:
/minipass-sized@1.0.3:
resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
@@ -4506,6 +4550,7 @@ packages:
/negotiator@0.6.3:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
requiresBuild: true
dev: false
optional: true
@@ -4624,6 +4669,7 @@ packages:
/npmlog@6.0.2:
resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
requiresBuild: true
dependencies:
are-we-there-yet: 3.0.1
console-control-strings: 1.1.0
@@ -4646,6 +4692,7 @@ packages:
/object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
requiresBuild: true
optional: true
/ofetch@1.3.3:
@@ -4701,6 +4748,7 @@ packages:
/p-map@4.0.0:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
requiresBuild: true
dependencies:
aggregate-error: 3.1.0
dev: false
@@ -4873,6 +4921,7 @@ packages:
/promise-inflight@1.0.1:
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
requiresBuild: true
peerDependencies:
bluebird: '*'
peerDependenciesMeta:
@@ -5164,6 +5213,7 @@ packages:
/roarr@2.15.4:
resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
engines: {node: '>=8.0'}
requiresBuild: true
dependencies:
boolean: 3.2.0
detect-node: 2.1.0
@@ -5234,6 +5284,7 @@ packages:
/semver-compare@1.0.0:
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
requiresBuild: true
optional: true
/semver@6.3.1:
@@ -5250,6 +5301,7 @@ packages:
/serialize-error@7.0.1:
resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
engines: {node: '>=10'}
requiresBuild: true
dependencies:
type-fest: 0.13.1
optional: true
@@ -5335,6 +5387,7 @@ packages:
/socks-proxy-agent@6.2.1:
resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==}
engines: {node: '>= 10'}
requiresBuild: true
dependencies:
agent-base: 6.0.2
debug: 4.3.4
@@ -5382,14 +5435,12 @@ packages:
/sprintf-js@1.1.3:
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
requiresBuild: true
optional: true
/sqlite3@5.1.6:
resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==}
requiresBuild: true
peerDependenciesMeta:
node-gyp:
optional: true
dependencies:
'@mapbox/node-pre-gyp': 1.0.11
node-addon-api: 4.3.0
@@ -5405,6 +5456,7 @@ packages:
/ssri@8.0.1:
resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==}
engines: {node: '>= 8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
@@ -5682,6 +5734,7 @@ packages:
/type-fest@0.13.1:
resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
engines: {node: '>=10'}
requiresBuild: true
optional: true
/type-fest@0.20.2:
@@ -5819,6 +5872,7 @@ packages:
/unique-filename@1.1.1:
resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
requiresBuild: true
dependencies:
unique-slug: 2.0.2
dev: false
@@ -5826,6 +5880,7 @@ packages:
/unique-slug@2.0.2:
resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==}
requiresBuild: true
dependencies:
imurmurhash: 0.1.4
dev: false