add: eslint

This commit is contained in:
liyulin 2023-03-12 15:58:45 +08:00
parent 7444e66653
commit 0c9f7ef30a
33 changed files with 857 additions and 348 deletions

3
.eslintignore Normal file
View File

@ -0,0 +1,3 @@
node_modules/
lib/
dist/

24
.eslintrc.js Normal file
View File

@ -0,0 +1,24 @@
module.exports = {
'env': {
'node': true,
'es2021': true
},
'extends': [
'eslint:recommended',
'plugin:vue/vue3-essential'
],
'overrides': [
],
'parserOptions': {
'ecmaVersion': 'latest',
'sourceType': 'module'
},
'plugins': [
'vue'
],
'rules': {
'semi': ['error','always'],
'no-multi-spaces': ['error', { ignoreEOLComments: false }],
'quotes': ['error', 'single']
}
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -5,8 +5,8 @@
<link rel="icon" type="image/svg+xml" href="/vue-office/examples/dist/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vue-office/examples/dist/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title> <title>Vite + Vue</title>
<script type="module" crossorigin src="/vue-office/examples/dist/assets/index-b1870083.js"></script> <script type="module" crossorigin src="/vue-office/examples/dist/assets/index-3b4c4444.js"></script>
<link rel="stylesheet" href="/vue-office/examples/dist/assets/index-171e346f.css"> <link rel="stylesheet" href="/vue-office/examples/dist/assets/index-78ff3081.css">
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

View File

@ -1,13 +1,13 @@
<script setup> <script setup>
import {ref, onMounted} from 'vue' import {ref, onMounted} from 'vue';
import DocxDemo from './components/DocxDemo.vue' import DocxDemo from './components/DocxDemo.vue';
import ExcelDemo from './components/ExcelDemo.vue' import ExcelDemo from './components/ExcelDemo.vue';
import PdfDemo from './components/PdfDemo.vue' import PdfDemo from './components/PdfDemo.vue';
const activeKey = ref('DOCX') const activeKey = ref('DOCX');
onMounted(()=>{ onMounted(()=>{
}) });
</script> </script>
<template> <template>

View File

@ -1,13 +1,19 @@
<script setup> <script setup>
import {defineProps} from 'vue' import {defineProps, watch} from 'vue';
import usePreview from '../hooks/usePreview.js' import usePreview from '../hooks/usePreview.js';
import useLoading from '../hooks/useLoading.js';
const props = defineProps({ const props = defineProps({
accept: String, accept: String,
placeholder: String, placeholder: String,
defaultSrc: String defaultSrc: String
}) });
const {type, inputSrc, src, fileList, beforeUpload} = usePreview(props.defaultSrc) const {type, inputSrc, src, fileList, beforeUpload} = usePreview(props.defaultSrc);
watch(src,()=>{
useLoading.showLoading();
},{
immediate: true
});
</script> </script>

View File

@ -1,6 +1,14 @@
<script setup> <script setup>
import VueOfficeDocx from '../../../packages/docx/index' import VueOfficeDocx from '../../../packages/docx/index';
import PreviewWrapper from '../common/PreviewWrapper.vue' import PreviewWrapper from '../common/PreviewWrapper.vue';
import useLoading from '../hooks/useLoading.js';
function onRendered(){
useLoading.hideLoading();
}
function onError(e){
console.log('出差',e);
useLoading.hideLoading();
}
</script> </script>
<template> <template>
@ -10,7 +18,12 @@ import PreviewWrapper from '../common/PreviewWrapper.vue'
default-src="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx" default-src="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx"
> >
<template v-slot="slotProps"> <template v-slot="slotProps">
<VueOfficeDocx :src="slotProps.src" style="flex: 1;height: 0"/> <VueOfficeDocx
:src="slotProps.src"
style="flex: 1;height: 0"
@rendered="onRendered"
@error="onError"
/>
</template> </template>
</PreviewWrapper> </PreviewWrapper>

View File

@ -1,10 +1,16 @@
<script setup> <script setup>
import VueOfficeExcel from '../../../packages/excel/index' import VueOfficeExcel from '../../../packages/excel/index';
import '../../../packages/excel/src/index.css' import '../../../packages/excel/src/index.css';
import PreviewWrapper from '../common/PreviewWrapper.vue' import PreviewWrapper from '../common/PreviewWrapper.vue';
function onError(e){ import useLoading from '../hooks/useLoading.js';
console.log('出差',e) function onRendered(){
useLoading.hideLoading();
} }
function onError(e){
console.log('出差',e);
useLoading.hideLoading();
}
</script> </script>
<template> <template>
@ -14,7 +20,13 @@ function onError(e){
default-src="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.xlsx" default-src="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.xlsx"
> >
<template v-slot="slotProps"> <template v-slot="slotProps">
<VueOfficeExcel :src="slotProps.src" style="flex: 1;height: 0" @error="onError"/> <VueOfficeExcel
:src="slotProps.src"
style="flex: 1;height: 0"
v-loading="true"
@rendered="onRendered"
@error="onError"
/>
</template> </template>
</PreviewWrapper> </PreviewWrapper>

View File

@ -1,6 +1,14 @@
<script setup> <script setup>
import VueOfficePdf from '../../../packages/pdf/index' import VueOfficePdf from '../../../packages/pdf/index';
import PreviewWrapper from '../common/PreviewWrapper.vue' import PreviewWrapper from '../common/PreviewWrapper.vue';
import useLoading from '../hooks/useLoading.js';
function onRendered(){
useLoading.hideLoading();
}
function onError(e){
console.log('出差',e);
useLoading.hideLoading();
}
</script> </script>
<template> <template>
@ -10,7 +18,12 @@ import PreviewWrapper from '../common/PreviewWrapper.vue'
default-src="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf" default-src="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf"
> >
<template v-slot="slotProps"> <template v-slot="slotProps">
<VueOfficePdf :src="slotProps.src" style="flex: 1;height: 0"/> <VueOfficePdf
:src="slotProps.src"
style="flex: 1;height: 0"
@rendered="onRendered"
@error="onError"
/>
</template> </template>
</PreviewWrapper> </PreviewWrapper>
</template> </template>

View File

@ -0,0 +1,21 @@
import { message } from 'ant-design-vue';
import {ref} from 'vue';
let loading = ref(false);
let hide;
function showLoading(content){
hide = message.loading(content, 0);
loading.value = true;
}
function hideLoading(){
if(loading.value === true){
hide();
loading.value = false;
}
}
export default {
loading,
showLoading,
hideLoading
};

View File

@ -1,17 +1,17 @@
import {ref} from 'vue' import {ref} from 'vue';
export default function (defaultSrc){ export default function (defaultSrc){
const type = ref('url') const type = ref('url');
const inputSrc = ref(defaultSrc) const inputSrc = ref(defaultSrc);
const src = ref(defaultSrc) const src = ref(defaultSrc);
const fileList = ref([]) const fileList = ref([]);
function beforeUpload(file){ function beforeUpload(file){
let reader = new FileReader(); let reader = new FileReader();
reader.onload = (loadEvent) => { reader.onload = (loadEvent) => {
let arrayBuffer = loadEvent.target.result; let arrayBuffer = loadEvent.target.result;
src.value = arrayBuffer src.value = arrayBuffer;
}; };
reader.readAsArrayBuffer(file); reader.readAsArrayBuffer(file);
return false return false;
} }
return { return {
@ -20,5 +20,5 @@ export default function (defaultSrc){
src, src,
fileList, fileList,
beforeUpload beforeUpload
} };
} }

View File

@ -1,5 +1,5 @@
import { createApp } from 'vue' import { createApp } from 'vue';
import './style.css' import './style.css';
import Antd from 'ant-design-vue'; import Antd from 'ant-design-vue';
import App from './App.vue'; import App from './App.vue';
import 'ant-design-vue/dist/antd.css'; import 'ant-design-vue/dist/antd.css';

View File

@ -15,6 +15,8 @@
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^4.0.0", "@vitejs/plugin-vue": "^4.0.0",
"@vue/composition-api": "^1.7.1", "@vue/composition-api": "^1.7.1",
"eslint": "^8.36.0",
"eslint-plugin-vue": "^9.9.0",
"lerna": "^6.4.1", "lerna": "^6.4.1",
"less": "^4.1.3", "less": "^4.1.3",
"less-loader": "^11.1.0", "less-loader": "^11.1.0",

View File

@ -1,7 +1,7 @@
import VueOfficeDocx from './src/main.vue' import VueOfficeDocx from './src/main.vue';
VueOfficeDocx.install = function (Vue) { VueOfficeDocx.install = function (Vue) {
Vue.component(VueOfficeDocx.name, VueOfficeDocx) Vue.component(VueOfficeDocx.name, VueOfficeDocx);
} };
export default VueOfficeDocx export default VueOfficeDocx;

View File

@ -2,7 +2,7 @@
import {renderAsync} from 'docx-preview' import {renderAsync} from 'docx-preview'
function getData(src, options={}) { function getData(src, options={}) {
if (typeof src === 'string') { if (typeof src === 'string') {
return fetchDocx(src, options) return fetchDocx(src, options)
} }
return Promise.resolve(src) return Promise.resolve(src)
} }

View File

@ -1,54 +1,54 @@
<script> <script>
import {defineComponent, ref, onMounted, watch} from 'vue-demi'; import {defineComponent, ref, onMounted, watch} from 'vue-demi';
import docx from './docx' import docx from './docx';
export default defineComponent({ export default defineComponent({
name: 'VueOfficeDocx', name: 'VueOfficeDocx',
props: { props: {
src: [String, ArrayBuffer, Blob], src: [String, ArrayBuffer, Blob],
requestOptions: { requestOptions: {
type: Object, type: Object,
default: () => ({}) default: () => ({})
} }
}, },
emits:['rendered', 'error'], emits:['rendered', 'error'],
setup(props, { emit }){ setup(props, { emit }){
const rootRef = ref(null) const rootRef = ref(null);
function init(){ function init(){
let container = rootRef.value let container = rootRef.value;
docx.getData(props.src, props.requestOptions).then(res => { docx.getData(props.src, props.requestOptions).then(res => {
docx.render(res, container).then(() => { docx.render(res, container).then(() => {
emit('rendered') emit('rendered');
}).catch(e => { }).catch(e => {
docx.render('', container) docx.render('', container);
emit('error', e) emit('error', e);
}) });
}).catch(e => { }).catch(e => {
docx.render('', container) docx.render('', container);
emit('error', e) emit('error', e);
}) });
} }
onMounted(()=>{ onMounted(()=>{
if(props.src){ if(props.src){
init() init();
} }
}) });
watch(() => props.src, () =>{ watch(() => props.src, () =>{
if (props.src) { if (props.src) {
init() init();
} else { } else {
docx.render('', rootRef.value).then(() => { docx.render('', rootRef.value).then(() => {
emit('rendered') emit('rendered');
}) });
} }
}) });
return { return {
rootRef rootRef
} };
} }
}) });
</script> </script>
<template> <template>

View File

@ -1,8 +1,8 @@
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
import { createVuePlugin } from 'vite-plugin-vue2' import { createVuePlugin } from 'vite-plugin-vue2';
import vue3 from '@vitejs/plugin-vue' import vue3 from '@vitejs/plugin-vue';
import * as compiler from '@vue/compiler-sfc' import * as compiler from '@vue/compiler-sfc';
import { isVue2 } from 'vue-demi' import { isVue2 } from 'vue-demi';
const { resolve } = require('path'); const { resolve } = require('path');
export default defineConfig({ export default defineConfig({

View File

@ -1,7 +1,7 @@
import VueOfficeExcel from './src/main.vue' import VueOfficeExcel from './src/main.vue';
VueOfficeExcel.install = function (Vue) { VueOfficeExcel.install = function (Vue) {
Vue.component(VueOfficeExcel.name, VueOfficeExcel) Vue.component(VueOfficeExcel.name, VueOfficeExcel);
} };
export default VueOfficeExcel export default VueOfficeExcel;

View File

@ -1,5 +1,5 @@
function HexToRgb (str) { function HexToRgb (str) {
str = str.replace("#", ""); str = str.replace('#', '');
var hxs = str.match(/../g); var hxs = str.match(/../g);
for (var i = 0; i < 3; i++) hxs[i] = parseInt(hxs[i], 16); for (var i = 0; i < 3; i++) hxs[i] = parseInt(hxs[i], 16);
return hxs; return hxs;
@ -7,8 +7,8 @@ function HexToRgb (str) {
function RgbToHex (a, b, c) { function RgbToHex (a, b, c) {
var hexs = [a.toString(16), b.toString(16), c.toString(16)]; var hexs = [a.toString(16), b.toString(16), c.toString(16)];
for (var i = 0; i < 3; i++) if (hexs[i].length == 1) hexs[i] = "0" + hexs[i]; for (var i = 0; i < 3; i++) if (hexs[i].length == 1) hexs[i] = '0' + hexs[i];
return "#" + hexs.join(""); return '#' + hexs.join('');
} }

View File

@ -1,8 +1,8 @@
import * as Excel from 'exceljs/dist/exceljs' import * as Excel from 'exceljs/dist/exceljs';
import {getUrl} from "../../../utils/url"; import {getUrl} from '../../../utils/url';
import tinycolor from "tinycolor2"; import tinycolor from 'tinycolor2';
import _, {cloneDeep} from "lodash"; import _, {cloneDeep} from 'lodash';
import {getDarkColor, getLightColor} from "./color"; import {getDarkColor, getLightColor} from './color';
const themeColor = [ const themeColor = [
'#FFFFFF', '#FFFFFF',
@ -15,67 +15,67 @@ const themeColor = [
'#FFC000', '#FFC000',
'#5B9BD5', '#5B9BD5',
'#71AD47' '#71AD47'
] ];
let defaultColWidth = 80 let defaultColWidth = 80;
export function getData(src, options={}) { export function getData(src, options={}) {
return fetchExcel(getUrl(src), options) return fetchExcel(getUrl(src), options);
} }
function fetchExcel(src, options) { function fetchExcel(src, options) {
return fetch(src, options).then(res=>{ return fetch(src, options).then(res=>{
if(res.status !== 200){ if(res.status !== 200){
return Promise.reject(res) return Promise.reject(res);
} }
return res.arrayBuffer() return res.arrayBuffer();
}) });
} }
export function readExcelData(buffer){ export function readExcelData(buffer){
try { try {
const wb = new Excel.Workbook(); const wb = new Excel.Workbook();
return wb.xlsx.load(buffer) return wb.xlsx.load(buffer);
}catch (e){ }catch (e){
console.warn(e) console.warn(e);
return Promise.reject(e) return Promise.reject(e);
} }
} }
function transferColumns(excelSheet, spreadSheet, options){ function transferColumns(excelSheet, spreadSheet, options){
for(let i = 0;i < (excelSheet.columns || []).length; i++){ for(let i = 0;i < (excelSheet.columns || []).length; i++){
spreadSheet.cols[i.toString()] = {} spreadSheet.cols[i.toString()] = {};
if(excelSheet.columns[i].width) { if(excelSheet.columns[i].width) {
spreadSheet.cols[i.toString()].width = excelSheet.columns[i].width * 6 spreadSheet.cols[i.toString()].width = excelSheet.columns[i].width * 6;
} else { } else {
spreadSheet.cols[i.toString()].width = defaultColWidth spreadSheet.cols[i.toString()].width = defaultColWidth;
} }
} }
spreadSheet.cols.len = Math.max(Object.keys(spreadSheet.cols).length, options.minColLength || 0) spreadSheet.cols.len = Math.max(Object.keys(spreadSheet.cols).length, options.minColLength || 0);
} }
function getCellText(cell){ function getCellText(cell){
if(typeof cell.value === 'number'){ if(typeof cell.value === 'number'){
return cell.value + '' return cell.value + '';
} }
let cellText = '' let cellText = '';
if(cell.value && cell.value.result) { if(cell.value && cell.value.result) {
// Excel 单元格有公式 // Excel 单元格有公式
cellText = cell.value.result cellText = cell.value.result;
} else if(cell.value && cell.value.richText) { } else if(cell.value && cell.value.richText) {
// Excel 单元格是多行文本 // Excel 单元格是多行文本
for(let text in cell.value.richText) { for(let text in cell.value.richText) {
// 多行文本做累加 // 多行文本做累加
cellText += cell.value.richText[text].text cellText += cell.value.richText[text].text;
} }
} else { } else {
// Excel 单元格无公式 // Excel 单元格无公式
cellText = cell.value cellText = cell.value;
} }
return cellText return cellText;
} }
function transferArgbColor(originColor){ function transferArgbColor(originColor){
if(typeof originColor === 'object'){ if(typeof originColor === 'object'){
@ -84,7 +84,7 @@ function transferArgbColor(originColor){
if(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.test(originColor)){ if(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.test(originColor)){
return originColor.startsWith('#') ? originColor : '#' + originColor; return originColor.startsWith('#') ? originColor : '#' + originColor;
} }
originColor = originColor.trim().toLowerCase(); //去掉前后空格 originColor = originColor.trim().toLowerCase(); //去掉前后空格
let color = {}; let color = {};
try { try {
let argb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(originColor); let argb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(originColor);
@ -92,154 +92,154 @@ function transferArgbColor(originColor){
color.g = parseInt(argb[3], 16); color.g = parseInt(argb[3], 16);
color.b = parseInt(argb[4], 16); color.b = parseInt(argb[4], 16);
color.a = parseInt(argb[1], 16) / 255; color.a = parseInt(argb[1], 16) / 255;
return tinycolor(`rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`).toHexString() return tinycolor(`rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`).toHexString();
} catch (e) { } catch (e) {
console.warn(e) console.warn(e);
} }
} }
function transferThemeColor(themeIndex, tint){ function transferThemeColor(themeIndex, tint){
if(themeIndex > 9){ if(themeIndex > 9){
return '#C7C9CC' return '#C7C9CC';
} }
if(typeof tint === 'undefined'){ if(typeof tint === 'undefined'){
return themeColor[themeIndex] return themeColor[themeIndex];
}else if(tint > 0){ }else if(tint > 0){
return getLightColor(themeColor[themeIndex], tint) return getLightColor(themeColor[themeIndex], tint);
}else{ }else{
return getDarkColor(themeColor[themeIndex],Math.abs(tint)) return getDarkColor(themeColor[themeIndex],Math.abs(tint));
} }
} }
function getStyle(cell){ function getStyle(cell){
cell.style = cloneDeep(cell.style) cell.style = cloneDeep(cell.style);
let backGroundColor = null let backGroundColor = null;
if(cell.style.fill && cell.style.fill.fgColor) { if(cell.style.fill && cell.style.fill.fgColor) {
// 8位字符颜色先转rgb再转16进制颜色 // 8位字符颜色先转rgb再转16进制颜色
if(cell.style.fill.fgColor.argb){ if(cell.style.fill.fgColor.argb){
backGroundColor = transferArgbColor(cell.style.fill.fgColor.argb) backGroundColor = transferArgbColor(cell.style.fill.fgColor.argb);
}else if(cell.style.fill.fgColor.hasOwnProperty('theme')){ }else if(cell.style.fill.fgColor.hasOwnProperty('theme')){
backGroundColor = transferThemeColor(cell.style.fill.fgColor.theme, cell.style.fill.fgColor.tint) backGroundColor = transferThemeColor(cell.style.fill.fgColor.theme, cell.style.fill.fgColor.tint);
}else{ }else{
backGroundColor = '#C7C9CC' backGroundColor = '#C7C9CC';
} }
} }
if(backGroundColor) { if(backGroundColor) {
cell.style.bgcolor = backGroundColor cell.style.bgcolor = backGroundColor;
} }
//*************************************************************************** */ //*************************************************************************** */
//*********************字体存在背景色****************************** //*********************字体存在背景色******************************
// 字体颜色 // 字体颜色
let fontColor = null let fontColor = null;
if(cell.style.font && cell.style.font.color ) { if(cell.style.font && cell.style.font.color ) {
if(cell.style.font.color.argb){ if(cell.style.font.color.argb){
fontColor = transferArgbColor(cell.style.font.color.argb) fontColor = transferArgbColor(cell.style.font.color.argb);
}else if(cell.style.font.color.hasOwnProperty('theme')){ }else if(cell.style.font.color.hasOwnProperty('theme')){
fontColor = transferThemeColor(cell.style.font.color.theme, cell.style.font.color.tint) fontColor = transferThemeColor(cell.style.font.color.theme, cell.style.font.color.tint);
}else{ }else{
fontColor = '#000000' fontColor = '#000000';
} }
} }
if(fontColor) { if(fontColor) {
cell.style.color = fontColor cell.style.color = fontColor;
} }
// exceljs 对齐的格式转成 x-date-spreedsheet 能识别的对齐格式 // exceljs 对齐的格式转成 x-date-spreedsheet 能识别的对齐格式
if(cell.style.alignment ) { if(cell.style.alignment ) {
if(cell.style.alignment.horizontal){ if(cell.style.alignment.horizontal){
cell.style.align = cell.style.alignment.horizontal cell.style.align = cell.style.alignment.horizontal;
} }
if(cell.style.alignment.vertical){ if(cell.style.alignment.vertical){
cell.style.valign = cell.style.alignment.vertical cell.style.valign = cell.style.alignment.vertical;
} }
} }
if(cell.style.alignment && cell.style.alignment.wrapText) { if(cell.style.alignment && cell.style.alignment.wrapText) {
cell.style.textwrap = true cell.style.textwrap = true;
} }
if(cell.style.border){ if(cell.style.border){
let styleBorder = {} let styleBorder = {};
Object.keys(cell.style.border).forEach(position =>{ Object.keys(cell.style.border).forEach(position =>{
let originBorder = cell.style.border[position] let originBorder = cell.style.border[position];
let bordColor = '#000000' let bordColor = '#000000';
if(typeof originBorder.color === 'string'){ if(typeof originBorder.color === 'string'){
bordColor = originBorder.color bordColor = originBorder.color;
}else if(originBorder.color){ }else if(originBorder.color){
if(originBorder.color.argb){ if(originBorder.color.argb){
bordColor = transferArgbColor(originBorder.color.argb) bordColor = transferArgbColor(originBorder.color.argb);
}else if(originBorder.color.hasOwnProperty('theme')){ }else if(originBorder.color.hasOwnProperty('theme')){
bordColor = transferThemeColor(originBorder.color.theme, originBorder.color.tint) bordColor = transferThemeColor(originBorder.color.theme, originBorder.color.tint);
} }
} }
styleBorder[position] = [originBorder.style || 'thin', bordColor] styleBorder[position] = [originBorder.style || 'thin', bordColor];
}) });
cell.style.border2 = {...cell.style.border} cell.style.border2 = {...cell.style.border};
cell.style.border = styleBorder cell.style.border = styleBorder;
} }
return cell.style return cell.style;
} }
export function transferExcelToSpreadSheet(workbook, options){ export function transferExcelToSpreadSheet(workbook, options){
let workbookData = [] let workbookData = [];
//console.log(workbook, 'workbook') //console.log(workbook, 'workbook')
workbook.eachSheet((sheet) => { workbook.eachSheet((sheet) => {
//console.log(sheet,'sheet') //console.log(sheet,'sheet')
// 构造x-data-spreadsheet 的 sheet 数据源结构 // 构造x-data-spreadsheet 的 sheet 数据源结构
let sheetData = { name: sheet.name,styles : [], rows: {},cols:{}, merges:[],media:[] } let sheetData = { name: sheet.name,styles : [], rows: {},cols:{}, merges:[],media:[] };
// 收集合并单元格信息 // 收集合并单元格信息
let mergeAddressData = [] let mergeAddressData = [];
for(let mergeRange in sheet._merges) { for(let mergeRange in sheet._merges) {
sheetData.merges.push(sheet._merges[mergeRange].shortRange) sheetData.merges.push(sheet._merges[mergeRange].shortRange);
let mergeAddress = {} let mergeAddress = {};
// 合并单元格起始地址 // 合并单元格起始地址
mergeAddress.startAddress = sheet._merges[mergeRange].tl mergeAddress.startAddress = sheet._merges[mergeRange].tl;
// 合并单元格终止地址 // 合并单元格终止地址
mergeAddress.endAddress = sheet._merges[mergeRange].br mergeAddress.endAddress = sheet._merges[mergeRange].br;
// Y轴方向跨度 // Y轴方向跨度
mergeAddress.YRange = sheet._merges[mergeRange].model.bottom - sheet._merges[mergeRange].model.top mergeAddress.YRange = sheet._merges[mergeRange].model.bottom - sheet._merges[mergeRange].model.top;
// X轴方向跨度 // X轴方向跨度
mergeAddress.XRange = sheet._merges[mergeRange].model.right - sheet._merges[mergeRange].model.left mergeAddress.XRange = sheet._merges[mergeRange].model.right - sheet._merges[mergeRange].model.left;
mergeAddressData.push(mergeAddress) mergeAddressData.push(mergeAddress);
} }
transferColumns(sheet,sheetData, options); transferColumns(sheet,sheetData, options);
// 遍历行 // 遍历行
(sheet._rows || []).forEach((row,spreadSheetRowIndex) =>{ (sheet._rows || []).forEach((row,spreadSheetRowIndex) =>{
sheetData.rows[spreadSheetRowIndex] = { cells: {} } sheetData.rows[spreadSheetRowIndex] = { cells: {} };
if(row.height){ if(row.height){
sheetData.rows[spreadSheetRowIndex].height = row.height; sheetData.rows[spreadSheetRowIndex].height = row.height;
} }
//includeEmpty = false 不包含空白单元格 //includeEmpty = false 不包含空白单元格
(row._cells || []).forEach((cell, spreadSheetColIndex) =>{ (row._cells || []).forEach((cell, spreadSheetColIndex) =>{
sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex] = {} sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex] = {};
let mergeAddress = _.find(mergeAddressData, function(o) { return o.startAddress == cell._address }) let mergeAddress = _.find(mergeAddressData, function(o) { return o.startAddress == cell._address; });
if(mergeAddress && cell.master.address != mergeAddress.startAddress) { if(mergeAddress && cell.master.address != mergeAddress.startAddress) {
return return;
} }
if(mergeAddress){ if(mergeAddress){
sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex].merge = [mergeAddress.YRange, mergeAddress.XRange] sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex].merge = [mergeAddress.YRange, mergeAddress.XRange];
} }
sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex].text = getCellText(cell) sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex].text = getCellText(cell);
sheetData.styles.push(getStyle(cell)) sheetData.styles.push(getStyle(cell));
sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex].style = sheetData.styles.length - 1 sheetData.rows[spreadSheetRowIndex].cells[spreadSheetColIndex].style = sheetData.styles.length - 1;
}) });
}) });
if(sheetData._media){ if(sheetData._media){
sheetData.media = sheetData._media sheetData.media = sheetData._media;
} }
workbookData.push(sheetData) workbookData.push(sheetData);
}) });
//console.log(workbookData, 'workbookData') //console.log(workbookData, 'workbookData')
return { return {
workbookData, workbookData,
workbookSource: workbook, workbookSource: workbook,
medias: workbook.media || [] medias: workbook.media || []
} };
} }

View File

@ -1,8 +1,8 @@
<script> <script>
import {defineComponent, ref, onMounted, watch} from 'vue-demi'; import {defineComponent, ref, onMounted, watch} from 'vue-demi';
import Spreadsheet from "x-data-spreadsheet"; import Spreadsheet from 'x-data-spreadsheet';
import {getData, readExcelData, transferExcelToSpreadSheet} from './excel'; import {getData, readExcelData, transferExcelToSpreadSheet} from './excel';
import {renderImage, clearCache} from "./media"; import {renderImage, clearCache} from './media';
export default defineComponent({ export default defineComponent({
name: 'VueOfficeExcel', name: 'VueOfficeExcel',
@ -30,7 +30,7 @@ export default defineComponent({
let sheetIndex = 1; let sheetIndex = 1;
let ctx = null; let ctx = null;
let xs = null; let xs = null;
let offset = null let offset = null;
function renderExcel(buffer) { function renderExcel(buffer) {
readExcelData(buffer).then(workbook => { readExcelData(buffer).then(workbook => {
@ -40,9 +40,9 @@ export default defineComponent({
const {workbookData, medias, workbookSource} = transferExcelToSpreadSheet(workbook, props.options); const {workbookData, medias, workbookSource} = transferExcelToSpreadSheet(workbook, props.options);
mediasSource = medias; mediasSource = medias;
workbookDataSource = workbookSource; workbookDataSource = workbookSource;
offset = null offset = null;
sheetIndex = 1 sheetIndex = 1;
clearCache() clearCache();
xs.loadData(workbookData); xs.loadData(workbookData);
renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset); renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset);
emit('rendered'); emit('rendered');
@ -50,11 +50,11 @@ export default defineComponent({
}).catch(e => { }).catch(e => {
console.warn(e); console.warn(e);
mediasSource = [] mediasSource = [];
workbookDataSource = { workbookDataSource = {
_worksheets:[] _worksheets:[]
} };
clearCache() clearCache();
xs.loadData({}); xs.loadData({});
emit('error', e); emit('error', e);
}); });
@ -80,29 +80,29 @@ export default defineComponent({
} }
}).loadData({}); }).loadData({});
let swapFunc = xs.bottombar.swapFunc let swapFunc = xs.bottombar.swapFunc;
xs.bottombar.swapFunc = function (index) { xs.bottombar.swapFunc = function (index) {
swapFunc.call(xs.bottombar, index) swapFunc.call(xs.bottombar, index);
sheetIndex = index + 1 sheetIndex = index + 1;
setTimeout(()=>{ setTimeout(()=>{
xs.reRender() xs.reRender();
renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset); renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset);
}) });
}; };
let clear = xs.sheet.editor.clear let clear = xs.sheet.editor.clear;
xs.sheet.editor.clear = function (...args){ xs.sheet.editor.clear = function (...args){
clear.apply(xs.sheet.editor, args) clear.apply(xs.sheet.editor, args);
setTimeout(()=>{ setTimeout(()=>{
renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset); renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset);
}) });
} };
let setOffset = xs.sheet.editor.setOffset let setOffset = xs.sheet.editor.setOffset;
xs.sheet.editor.setOffset = function (...args){ xs.sheet.editor.setOffset = function (...args){
setOffset.apply(xs.sheet.editor, args) setOffset.apply(xs.sheet.editor, args);
offset = args[0] offset = args[0];
renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset); renderImage(ctx, mediasSource, workbookDataSource._worksheets[sheetIndex], offset);
} };
const canvas = rootRef.value.querySelector('canvas'); const canvas = rootRef.value.querySelector('canvas');
ctx = canvas.getContext('2d'); ctx = canvas.getContext('2d');
if (props.src) { if (props.src) {

View File

@ -1,67 +1,67 @@
let cache = [] let cache = [];
export function renderImage(ctx, medias, sheet, offset){ export function renderImage(ctx, medias, sheet, offset){
// console.log('medias', medias) // console.log('medias', medias)
// console.log('sheet', sheet) // console.log('sheet', sheet)
// console.log('offset', offset) // console.log('offset', offset)
if(sheet && sheet._media.length){ if(sheet && sheet._media.length){
sheet._media.forEach(media => { sheet._media.forEach(media => {
let {imageId, range, type} = media let {imageId, range, type} = media;
if(type === "image"){ if(type === 'image'){
let position = calcPosition(sheet,range,offset) let position = calcPosition(sheet,range,offset);
drawImage(ctx,imageId, medias[imageId], position) drawImage(ctx,imageId, medias[imageId], position);
} }
}) });
} }
} }
let clipWidth = 60 //左侧序号列宽 let clipWidth = 60; //左侧序号列宽
let clipHeight = 25 //顶部序号行高 let clipHeight = 25; //顶部序号行高
let defaultColWidth = 80 let defaultColWidth = 80;
let defaultRowHeight = 24 let defaultRowHeight = 24;
let devicePixelRatio = window.devicePixelRatio let devicePixelRatio = window.devicePixelRatio;
function calcPosition(sheet, range, offset){ function calcPosition(sheet, range, offset){
let {tl={}, br={}} = range let {tl={}, br={}} = range;
let {nativeCol, nativeColOff, nativeRow, nativeRowOff} = tl let {nativeCol, nativeColOff, nativeRow, nativeRowOff} = tl;
let basicX = clipWidth let basicX = clipWidth;
let basicY = clipHeight let basicY = clipHeight;
for(let i=0; i < nativeCol; i++){ for(let i=0; i < nativeCol; i++){
basicX += sheet?._columns?.[i]?.width*6 || defaultColWidth basicX += sheet?._columns?.[i]?.width*6 || defaultColWidth;
} }
for(let i=0; i < nativeRow; i++){ for(let i=0; i < nativeRow; i++){
basicY += sheet?._rows?.[i]?.height || defaultRowHeight basicY += sheet?._rows?.[i]?.height || defaultRowHeight;
} }
let x = basicX + nativeColOff/12700 let x = basicX + nativeColOff/12700;
let y = basicY + nativeRowOff/12700 let y = basicY + nativeRowOff/12700;
let { let {
nativeCol: nativeColEnd, nativeCol: nativeColEnd,
nativeColOff: nativeColOffEnd, nativeColOff: nativeColOffEnd,
nativeRow: nativeRowEnd, nativeRow: nativeRowEnd,
nativeRowOff: nativeRowOffEnd nativeRowOff: nativeRowOffEnd
} = br } = br;
let width let width;
if(nativeCol === nativeColEnd){ if(nativeCol === nativeColEnd){
width = (nativeColOffEnd - nativeColOff) / 12700 width = (nativeColOffEnd - nativeColOff) / 12700;
}else { }else {
width = (sheet?._columns?.[nativeCol]?.width*6 || defaultColWidth) - nativeColOff/12700 width = (sheet?._columns?.[nativeCol]?.width*6 || defaultColWidth) - nativeColOff/12700;
for(let i = nativeCol+1; i < nativeColEnd; i++){ for(let i = nativeCol+1; i < nativeColEnd; i++){
width += sheet?._columns?.[i]?.width*6 || defaultColWidth width += sheet?._columns?.[i]?.width*6 || defaultColWidth;
} }
width += nativeColOffEnd / 12700 width += nativeColOffEnd / 12700;
} }
let height let height;
if(nativeRow === nativeRowEnd){ if(nativeRow === nativeRowEnd){
height = (nativeRowOffEnd - nativeRowOff) / 12700 height = (nativeRowOffEnd - nativeRowOff) / 12700;
}else { }else {
height = (sheet?._rows?.[nativeRow]?.height || defaultRowHeight) - nativeRowOff/12700 height = (sheet?._rows?.[nativeRow]?.height || defaultRowHeight) - nativeRowOff/12700;
for(let i = nativeRow+1; i < nativeRowEnd; i++){ for(let i = nativeRow+1; i < nativeRowEnd; i++){
height += sheet?._rows?.[i]?.height || defaultRowHeight height += sheet?._rows?.[i]?.height || defaultRowHeight;
} }
height += nativeRowOffEnd / 12700 height += nativeRowOffEnd / 12700;
} }
return { return {
@ -69,62 +69,62 @@ function calcPosition(sheet, range, offset){
y: (y - (offset?.scroll?.y || 0)) * devicePixelRatio, y: (y - (offset?.scroll?.y || 0)) * devicePixelRatio,
width: width * devicePixelRatio, width: width * devicePixelRatio,
height: height * devicePixelRatio height: height * devicePixelRatio
} };
} }
export function clearCache(){ export function clearCache(){
cache = [] cache = [];
} }
function drawImage(ctx,index, data, position){ function drawImage(ctx,index, data, position){
getImage(index, data).then(image=>{ getImage(index, data).then(image=>{
let sx = 0 let sx = 0;
let sy = 0 let sy = 0;
let sWidth = image.width let sWidth = image.width;
let sHeight = image.height let sHeight = image.height;
let dx = position.x let dx = position.x;
let dy = position.y let dy = position.y;
let dWidth = position.width let dWidth = position.width;
let dHeight = position.height let dHeight = position.height;
let scaleX = dWidth / sWidth let scaleX = dWidth / sWidth;
let scaleY = dHeight / sHeight let scaleY = dHeight / sHeight;
if(dx < clipWidth * devicePixelRatio){ if(dx < clipWidth * devicePixelRatio){
let diff = clipWidth * devicePixelRatio - dx let diff = clipWidth * devicePixelRatio - dx;
dx = clipWidth * devicePixelRatio dx = clipWidth * devicePixelRatio;
dWidth -= diff dWidth -= diff;
sWidth -= diff/scaleX sWidth -= diff/scaleX;
sx += diff/scaleX sx += diff/scaleX;
} }
if(dy < clipHeight * devicePixelRatio){ if(dy < clipHeight * devicePixelRatio){
let diff = clipHeight * devicePixelRatio - dy let diff = clipHeight * devicePixelRatio - dy;
dy = clipHeight * devicePixelRatio dy = clipHeight * devicePixelRatio;
dHeight -= diff dHeight -= diff;
sHeight -= diff/scaleY sHeight -= diff/scaleY;
sy += diff/scaleY sy += diff/scaleY;
} }
// console.log('=>', sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) // console.log('=>', sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
}).catch(e=>{ }).catch(e=>{
}) });
} }
function getImage(index, data){ function getImage(index, data){
return new Promise(((resolve, reject) => { return new Promise(((resolve, reject) => {
if(cache[index]){ if(cache[index]){
return resolve(cache[index]) return resolve(cache[index]);
} }
const {buffer, extension} = data.buffer; const {buffer, extension} = data.buffer;
let blob = new Blob([buffer], { type: 'image/' + extension}); let blob = new Blob([buffer], { type: 'image/' + extension});
let url = URL.createObjectURL(blob); let url = URL.createObjectURL(blob);
let image = new Image(); let image = new Image();
image.src = url; image.src = url;
image.onload = function (){ image.onload = function (){
resolve(image) resolve(image);
cache[index] = image cache[index] = image;
} };
image.onerror = function (e){ image.onerror = function (e){
reject(e) reject(e);
} };
})) }));
} }

View File

@ -1,8 +1,8 @@
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
import { createVuePlugin } from 'vite-plugin-vue2' import { createVuePlugin } from 'vite-plugin-vue2';
import vue3 from '@vitejs/plugin-vue' import vue3 from '@vitejs/plugin-vue';
import * as compiler from '@vue/compiler-sfc' import * as compiler from '@vue/compiler-sfc';
import { isVue2 } from 'vue-demi' import { isVue2 } from 'vue-demi';
const { resolve } = require('path'); const { resolve } = require('path');
export default defineConfig({ export default defineConfig({

View File

@ -1,7 +1,7 @@
import VueOfficePdf from './src/main.vue' import VueOfficePdf from './src/main.vue';
VueOfficePdf.install = function (Vue) { VueOfficePdf.install = function (Vue) {
Vue.component(VueOfficePdf.name, VueOfficePdf) Vue.component(VueOfficePdf.name, VueOfficePdf);
} };
export default VueOfficePdf export default VueOfficePdf;

View File

@ -1,8 +1,8 @@
<script> <script>
import { defineComponent,ref, onMounted, watch } from 'vue-demi' import { defineComponent,ref, onMounted, watch } from 'vue-demi';
import {worker} from './worker' import {worker} from './worker';
import {pdfjsLib} from './pdf' import {pdfjsLib} from './pdf';
import {getUrl, loadScript} from "../../../utils/url"; import {getUrl, loadScript} from '../../../utils/url';
const pdfJsLibSrc = `data:text/javascript;base64,${pdfjsLib}`; const pdfJsLibSrc = `data:text/javascript;base64,${pdfjsLib}`;
const PdfJsWorkerSrc = `data:text/javascript;base64,${worker}`; const PdfJsWorkerSrc = `data:text/javascript;base64,${worker}`;
@ -22,27 +22,27 @@ export default defineComponent({
}, },
emits:['rendered', 'error'], emits:['rendered', 'error'],
setup(props, { emit }){ setup(props, { emit }){
let pdfDocument = null let pdfDocument = null;
const rootRef = ref([]) const rootRef = ref([]);
const numPages = ref(0) const numPages = ref(0);
function installPdfScript() { function installPdfScript() {
return loadScript(pdfJsLibSrc).then(() => { return loadScript(pdfJsLibSrc).then(() => {
window.pdfjsLib.GlobalWorkerOptions.workerSrc = PdfJsWorkerSrc window.pdfjsLib.GlobalWorkerOptions.workerSrc = PdfJsWorkerSrc;
}); });
} }
function checkPdfLib() { function checkPdfLib() {
if (window.pdfjsLib) { if (window.pdfjsLib) {
return Promise.resolve() return Promise.resolve();
} }
return installPdfScript() return installPdfScript();
} }
function init() { function init() {
if (!props.src) { if (!props.src) {
numPages.value = 0 numPages.value = 0;
return return;
} }
const loadingTask = window.pdfjsLib.getDocument({ const loadingTask = window.pdfjsLib.getDocument({
url: getUrl(props.src), url: getUrl(props.src),
@ -53,10 +53,10 @@ export default defineComponent({
loadingTask.promise.then((pdf) => { loadingTask.promise.then((pdf) => {
pdfDocument = pdf; pdfDocument = pdf;
numPages.value = pdfDocument.numPages; numPages.value = pdfDocument.numPages;
renderPage(1) renderPage(1);
}).catch((e) => { }).catch((e) => {
emit('error', e) emit('error', e);
}) });
} }
function renderPage(num) { function renderPage(num) {
@ -67,11 +67,11 @@ export default defineComponent({
canvas.width = viewport.width; canvas.width = viewport.width;
canvas.height = viewport.height; canvas.height = viewport.height;
if(viewport.width > document.documentElement.clientWidth){ if(viewport.width > document.documentElement.clientWidth){
canvas.style.width = '100%' canvas.style.width = '100%';
}else{ }else{
canvas.style.width = Math.floor(viewport.width) + 'px'; canvas.style.width = Math.floor(viewport.width) + 'px';
} }
const ctx = canvas.getContext("2d"); const ctx = canvas.getContext('2d');
const renderTask = pdfPage.render({ const renderTask = pdfPage.render({
canvasContext: ctx, canvasContext: ctx,
viewport, viewport,
@ -80,32 +80,32 @@ export default defineComponent({
if (numPages.value > num) { if (numPages.value > num) {
renderPage(num + 1); renderPage(num + 1);
} else { } else {
emit('rendered') emit('rendered');
} }
}).catch((e) => { }).catch((e) => {
emit('error', e) emit('error', e);
}); });
}).catch((e) => { }).catch((e) => {
emit('error', e) emit('error', e);
}); });
} }
onMounted(()=>{ onMounted(()=>{
if (props.src) { if (props.src) {
checkPdfLib().then(init) checkPdfLib().then(init);
} }
}) });
watch(() => props.src, ()=>{ watch(() => props.src, ()=>{
checkPdfLib().then(init) checkPdfLib().then(init);
}) });
return { return {
rootRef, rootRef,
numPages numPages
} };
} }
}) });
</script> </script>
<template> <template>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,8 @@
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
import { createVuePlugin } from 'vite-plugin-vue2' import { createVuePlugin } from 'vite-plugin-vue2';
import vue3 from '@vitejs/plugin-vue' import vue3 from '@vitejs/plugin-vue';
import * as compiler from '@vue/compiler-sfc' import * as compiler from '@vue/compiler-sfc';
import { isVue2 } from 'vue-demi' import { isVue2 } from 'vue-demi';
import packageJson from './package.json'
const { resolve } = require('path'); const { resolve } = require('path');
export default defineConfig({ export default defineConfig({

422
pnpm-lock.yaml generated
View File

@ -4,6 +4,8 @@ specifiers:
'@vitejs/plugin-vue': ^4.0.0 '@vitejs/plugin-vue': ^4.0.0
'@vue/composition-api': ^1.7.1 '@vue/composition-api': ^1.7.1
docx-preview: ^0.1.14 docx-preview: ^0.1.14
eslint: ^8.36.0
eslint-plugin-vue: ^9.9.0
exceljs: ^4.3.0 exceljs: ^4.3.0
lerna: ^6.4.1 lerna: ^6.4.1
less: ^4.1.3 less: ^4.1.3
@ -32,6 +34,8 @@ dependencies:
devDependencies: devDependencies:
'@vitejs/plugin-vue': 4.0.0_vite@4.1.4 '@vitejs/plugin-vue': 4.0.0_vite@4.1.4
'@vue/composition-api': 1.7.1 '@vue/composition-api': 1.7.1
eslint: 8.36.0
eslint-plugin-vue: 9.9.0_eslint@8.36.0
lerna: 6.5.1 lerna: 6.5.1
less: 4.1.3 less: 4.1.3
less-loader: 11.1.0_less@4.1.3 less-loader: 11.1.0_less@4.1.3
@ -710,6 +714,43 @@ packages:
dev: true dev: true
optional: true optional: true
/@eslint-community/eslint-utils/4.2.0_eslint@8.36.0:
resolution: {integrity: sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.36.0
eslint-visitor-keys: 3.3.0
dev: true
/@eslint-community/regexpp/4.4.0:
resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
/@eslint/eslintrc/2.0.1:
resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.5.0
globals: 13.20.0
ignore: 5.2.4
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
dev: true
/@eslint/js/8.36.0:
resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@fast-csv/format/4.3.5: /@fast-csv/format/4.3.5:
resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==} resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==}
dependencies: dependencies:
@ -737,6 +778,26 @@ packages:
resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
dev: true dev: true
/@humanwhocodes/config-array/0.11.8:
resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 1.2.1
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
dev: true
/@humanwhocodes/module-importer/1.0.1:
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
dev: true
/@humanwhocodes/object-schema/1.2.1:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true
/@hutson/parse-repository-url/3.0.2: /@hutson/parse-repository-url/3.0.2:
resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -1587,6 +1648,20 @@ packages:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
dev: true dev: true
/acorn-jsx/5.3.2_acorn@8.8.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.8.2
dev: true
/acorn/8.8.2:
resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
/add-stream/1.0.0: /add-stream/1.0.0:
resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
dev: true dev: true
@ -1619,6 +1694,15 @@ packages:
indent-string: 4.0.0 indent-string: 4.0.0
dev: true dev: true
/ajv/6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
json-schema-traverse: 0.4.1
uri-js: 4.4.1
dev: true
/ansi-colors/4.1.3: /ansi-colors/4.1.3:
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -1835,6 +1919,10 @@ packages:
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
dev: true dev: true
/boolbase/1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: true
/brace-expansion/1.1.11: /brace-expansion/1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies: dependencies:
@ -2721,6 +2809,10 @@ packages:
resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
dev: true dev: true
/deep-is/0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
/deepmerge/4.3.0: /deepmerge/4.3.0:
resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==} resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@ -2774,6 +2866,13 @@ packages:
path-type: 4.0.0 path-type: 4.0.0
dev: true dev: true
/doctrine/3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
dependencies:
esutils: 2.0.3
dev: true
/docx-preview/0.1.15: /docx-preview/0.1.15:
resolution: {integrity: sha512-qeYNwA+HF0e+GLxH/yltGdaBVQHoQrscfCwR2p7fRGCMjPBohdd36L7xDi1wdErS3ZnV/uh4kx5+tXOXgzq/dQ==} resolution: {integrity: sha512-qeYNwA+HF0e+GLxH/yltGdaBVQHoQrscfCwR2p7fRGCMjPBohdd36L7xDi1wdErS3ZnV/uh4kx5+tXOXgzq/dQ==}
dependencies: dependencies:
@ -2911,6 +3010,115 @@ packages:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'} engines: {node: '>=0.8.0'}
/escape-string-regexp/4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
dev: true
/eslint-plugin-vue/9.9.0_eslint@8.36.0:
resolution: {integrity: sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
dependencies:
eslint: 8.36.0
eslint-utils: 3.0.0_eslint@8.36.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.0.11
semver: 7.3.8
vue-eslint-parser: 9.1.0_eslint@8.36.0
xml-name-validator: 4.0.0
transitivePeerDependencies:
- supports-color
dev: true
/eslint-scope/7.1.1:
resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
dev: true
/eslint-utils/3.0.0_eslint@8.36.0:
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: '>=5'
dependencies:
eslint: 8.36.0
eslint-visitor-keys: 2.1.0
dev: true
/eslint-visitor-keys/2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
dev: true
/eslint-visitor-keys/3.3.0:
resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint/8.36.0:
resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.2.0_eslint@8.36.0
'@eslint-community/regexpp': 4.4.0
'@eslint/eslintrc': 2.0.1
'@eslint/js': 8.36.0
'@humanwhocodes/config-array': 0.11.8
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.1.1
eslint-visitor-keys: 3.3.0
espree: 9.5.0
esquery: 1.4.2
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
globals: 13.20.0
grapheme-splitter: 1.0.4
ignore: 5.2.4
import-fresh: 3.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
js-sdsl: 4.3.0
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.1
strip-ansi: 6.0.1
strip-json-comments: 3.1.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
dev: true
/espree/9.5.0:
resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
acorn: 8.8.2
acorn-jsx: 5.3.2_acorn@8.8.2
eslint-visitor-keys: 3.3.0
dev: true
/esprima/4.0.1: /esprima/4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -2924,6 +3132,13 @@ packages:
estraverse: 5.3.0 estraverse: 5.3.0
dev: true dev: true
/esrecurse/4.3.0:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
dependencies:
estraverse: 5.3.0
dev: true
/estraverse/5.3.0: /estraverse/5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
@ -2933,6 +3148,11 @@ packages:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
dev: true dev: true
/esutils/2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
dev: true
/eventemitter3/4.0.7: /eventemitter3/4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
dev: true dev: true
@ -2993,6 +3213,10 @@ packages:
'@fast-csv/parse': 4.3.6 '@fast-csv/parse': 4.3.6
dev: false dev: false
/fast-deep-equal/3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
/fast-glob/3.2.12: /fast-glob/3.2.12:
resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'} engines: {node: '>=8.6.0'}
@ -3015,6 +3239,14 @@ packages:
micromatch: 4.0.5 micromatch: 4.0.5
dev: true dev: true
/fast-json-stable-stringify/2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: true
/fast-levenshtein/2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
/fastq/1.15.0: /fastq/1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies: dependencies:
@ -3035,6 +3267,13 @@ packages:
escape-string-regexp: 1.0.5 escape-string-regexp: 1.0.5
dev: true dev: true
/file-entry-cache/6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flat-cache: 3.0.4
dev: true
/filelist/1.0.4: /filelist/1.0.4:
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
dependencies: dependencies:
@ -3063,11 +3302,31 @@ packages:
path-exists: 4.0.0 path-exists: 4.0.0
dev: true dev: true
/find-up/5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
dependencies:
locate-path: 6.0.0
path-exists: 4.0.0
dev: true
/flat-cache/3.0.4:
resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flatted: 3.2.7
rimraf: 3.0.2
dev: true
/flat/5.0.2: /flat/5.0.2:
resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
hasBin: true hasBin: true
dev: true dev: true
/flatted/3.2.7:
resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
dev: true
/follow-redirects/1.15.2: /follow-redirects/1.15.2:
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
@ -3250,6 +3509,13 @@ packages:
is-glob: 4.0.3 is-glob: 4.0.3
dev: true dev: true
/glob-parent/6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
dependencies:
is-glob: 4.0.3
dev: true
/glob/7.1.4: /glob/7.1.4:
resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==}
dependencies: dependencies:
@ -3287,6 +3553,13 @@ packages:
engines: {node: '>=4'} engines: {node: '>=4'}
dev: true dev: true
/globals/13.20.0:
resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
dev: true
/globby/11.1.0: /globby/11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -3302,6 +3575,10 @@ packages:
/graceful-fs/4.2.10: /graceful-fs/4.2.10:
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
/grapheme-splitter/1.0.4:
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
dev: true
/handlebars/4.7.7: /handlebars/4.7.7:
resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==}
engines: {node: '>=0.4.7'} engines: {node: '>=0.4.7'}
@ -3630,6 +3907,11 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/is-path-inside/3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
dev: true
/is-plain-obj/1.1.0: /is-plain-obj/1.1.0:
resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@ -3709,6 +3991,10 @@ packages:
minimatch: 3.0.5 minimatch: 3.0.5
dev: true dev: true
/js-sdsl/4.3.0:
resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==}
dev: true
/js-tokens/4.0.0: /js-tokens/4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: true dev: true
@ -3742,6 +4028,14 @@ packages:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: true dev: true
/json-schema-traverse/0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
/json-stable-stringify-without-jsonify/1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
/json-stringify-nice/1.1.4: /json-stringify-nice/1.1.4:
resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==}
dev: true dev: true
@ -3928,6 +4222,14 @@ packages:
- supports-color - supports-color
dev: true dev: true
/levn/0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
type-check: 0.4.0
dev: true
/libnpmaccess/6.0.3: /libnpmaccess/6.0.3:
resolution: {integrity: sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==} resolution: {integrity: sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
@ -4009,6 +4311,13 @@ packages:
p-locate: 4.1.0 p-locate: 4.1.0
dev: true dev: true
/locate-path/6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
dependencies:
p-locate: 5.0.0
dev: true
/lodash.defaults/4.2.0: /lodash.defaults/4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
dev: false dev: false
@ -4061,6 +4370,10 @@ packages:
resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
dev: true dev: true
/lodash.merge/4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: true
/lodash.union/4.6.0: /lodash.union/4.6.0:
resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==}
dev: false dev: false
@ -4397,6 +4710,10 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/natural-compare/1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
/needle/3.2.0: /needle/3.2.0:
resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==}
engines: {node: '>= 4.4.x'} engines: {node: '>= 4.4.x'}
@ -4617,6 +4934,12 @@ packages:
set-blocking: 2.0.0 set-blocking: 2.0.0
dev: true dev: true
/nth-check/2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
dependencies:
boolbase: 1.0.0
dev: true
/nx/15.7.2: /nx/15.7.2:
resolution: {integrity: sha512-VRb+CZCji3G4ikdMAGoh6TeU9Q6n5atRwqRSFhUX63er8zhlMvWHLskPMZC4q/81edo/E7RhbmEVUD5MB0JoeA==} resolution: {integrity: sha512-VRb+CZCji3G4ikdMAGoh6TeU9Q6n5atRwqRSFhUX63er8zhlMvWHLskPMZC4q/81edo/E7RhbmEVUD5MB0JoeA==}
hasBin: true hasBin: true
@ -4737,6 +5060,18 @@ packages:
pinkie-promise: 2.0.1 pinkie-promise: 2.0.1
dev: false dev: false
/optionator/0.9.1:
resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
engines: {node: '>= 0.8.0'}
dependencies:
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
word-wrap: 1.2.3
dev: true
/ora/5.4.1: /ora/5.4.1:
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -4775,6 +5110,13 @@ packages:
p-try: 2.2.0 p-try: 2.2.0
dev: true dev: true
/p-limit/3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
dependencies:
yocto-queue: 0.1.0
dev: true
/p-locate/2.0.0: /p-locate/2.0.0:
resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -4789,6 +5131,13 @@ packages:
p-limit: 2.3.0 p-limit: 2.3.0
dev: true dev: true
/p-locate/5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
dependencies:
p-limit: 3.1.0
dev: true
/p-map-series/2.1.0: /p-map-series/2.1.0:
resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -5041,6 +5390,11 @@ packages:
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: true dev: true
/prelude-ls/1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
dev: true
/prettier/2.8.4: /prettier/2.8.4:
resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
@ -5107,6 +5461,11 @@ packages:
resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
dev: true dev: true
/punycode/2.3.0:
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
engines: {node: '>=6'}
dev: true
/q/1.5.1: /q/1.5.1:
resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
engines: {node: '>=0.6.0', teleport: '>=0.2.0'} engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
@ -5604,6 +5963,11 @@ packages:
min-indent: 1.0.1 min-indent: 1.0.1
dev: true dev: true
/strip-json-comments/3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
dev: true
/strong-log-transformer/2.1.0: /strong-log-transformer/2.1.0:
resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -5674,6 +6038,10 @@ packages:
engines: {node: '>=0.10'} engines: {node: '>=0.10'}
dev: true dev: true
/text-table/0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
/through/2.3.8: /through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
@ -5749,11 +6117,23 @@ packages:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
dev: true dev: true
/type-check/0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
dev: true
/type-fest/0.18.1: /type-fest/0.18.1:
resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/type-fest/0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
dev: true
/type-fest/0.21.3: /type-fest/0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -5846,6 +6226,12 @@ packages:
picocolors: 1.0.0 picocolors: 1.0.0
dev: true dev: true
/uri-js/4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.3.0
dev: true
/util-deprecate/1.0.2: /util-deprecate/1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@ -5978,7 +6364,6 @@ packages:
- underscore - underscore
- vash - vash
- velocityjs - velocityjs
- vue
- walrus - walrus
- whiskers - whiskers
dev: true dev: true
@ -6032,6 +6417,24 @@ packages:
'@vue/composition-api': 1.7.1 '@vue/composition-api': 1.7.1
dev: false dev: false
/vue-eslint-parser/9.1.0_eslint@8.36.0:
resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4
eslint: 8.36.0
eslint-scope: 7.1.1
eslint-visitor-keys: 3.3.0
espree: 9.5.0
esquery: 1.4.2
lodash: 4.17.21
semver: 7.3.8
transitivePeerDependencies:
- supports-color
dev: true
/vue-template-babel-compiler/1.2.0_ev5jzj74xu2fombjvobqpq452a: /vue-template-babel-compiler/1.2.0_ev5jzj74xu2fombjvobqpq452a:
resolution: {integrity: sha512-CScBSX1/wCdmmZ/Lvj/63p2CCVTS0FMj0F69VRBo73CuJrjvPAPGmeNJ7D/cwt/VS2PduowRWbO8N4Zh4Z3b0g==} resolution: {integrity: sha512-CScBSX1/wCdmmZ/Lvj/63p2CCVTS0FMj0F69VRBo73CuJrjvPAPGmeNJ7D/cwt/VS2PduowRWbO8N4Zh4Z3b0g==}
engines: {node: '>=12.0.0'} engines: {node: '>=12.0.0'}
@ -6078,8 +6481,6 @@ packages:
'@vue/runtime-dom': 3.2.45 '@vue/runtime-dom': 3.2.45
'@vue/server-renderer': 3.2.45 '@vue/server-renderer': 3.2.45
'@vue/shared': 3.2.45 '@vue/shared': 3.2.45
transitivePeerDependencies:
- vue
dev: true dev: true
/walk-up-path/1.0.0: /walk-up-path/1.0.0:
@ -6117,6 +6518,11 @@ packages:
string-width: 4.2.3 string-width: 4.2.3
dev: true dev: true
/word-wrap/1.2.3:
resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
engines: {node: '>=0.10.0'}
dev: true
/wordwrap/1.0.0: /wordwrap/1.0.0:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
dev: true dev: true
@ -6178,6 +6584,11 @@ packages:
opencollective-postinstall: 2.0.3 opencollective-postinstall: 2.0.3
dev: false dev: false
/xml-name-validator/4.0.0:
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
engines: {node: '>=12'}
dev: true
/xmlchars/2.2.0: /xmlchars/2.2.0:
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
dev: false dev: false
@ -6245,6 +6656,11 @@ packages:
yargs-parser: 21.1.1 yargs-parser: 21.1.1
dev: true dev: true
/yocto-queue/0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
dev: true
/zip-stream/4.1.0: /zip-stream/4.1.0:
resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}

View File

@ -1,15 +1,15 @@
const { switchVersion, loadModule } = require('./utils') const { switchVersion, loadModule } = require('./utils');
const Vue = loadModule('vue') const Vue = loadModule('vue');
if (!Vue || typeof Vue.version !== 'string') { if (!Vue || typeof Vue.version !== 'string') {
console.warn( console.warn(
'[vue-office] Vue is not found. Please run "npm install vue" to install.' '[vue-office] Vue is not found. Please run "npm install vue" to install.'
) );
} else if (Vue.version.startsWith('2.')) { } else if (Vue.version.startsWith('2.')) {
switchVersion(2) switchVersion(2);
} else if (Vue.version.startsWith('3.')) { } else if (Vue.version.startsWith('3.')) {
switchVersion(3) switchVersion(3);
} else { } else {
console.warn( console.warn(
`[vue-office] Vue version v${Vue.version} is not supported.` `[vue-office] Vue version v${Vue.version} is not supported.`
) );
} }

View File

@ -1,14 +1,14 @@
const { switchVersion } = require('./utils') const { switchVersion } = require('./utils');
const version = process.argv[2] const version = process.argv[2];
if (version == '2') { if (version == '2') {
switchVersion(2) switchVersion(2);
} else if (version == '3') { } else if (version == '3') {
switchVersion(3) switchVersion(3);
} else { } else {
console.warn( console.warn(
`[vue-office] expecting version "2" or "3" but got "${version}"` `[vue-office] expecting version "2" or "3" but got "${version}"`
) );
process.exit(1) process.exit(1);
} }

View File

@ -1,31 +1,31 @@
const fs = require('fs') const fs = require('fs');
const path = require('path') const path = require('path');
const dir = path.resolve(__dirname, '../') const dir = path.resolve(__dirname, '../');
function loadModule(name) { function loadModule(name) {
try { try {
return require(name) return require(name);
} catch (e) { } catch (e) {
return undefined return undefined;
} }
} }
function copy(name, version) { function copy(name, version) {
const src = path.join(dir, `v${version}`, name) const src = path.join(dir, `v${version}`, name);
const dest = path.join(dir, name) const dest = path.join(dir, name);
if(!fs.existsSync(src)){ if(!fs.existsSync(src)){
return return;
} }
let content = fs.readFileSync(src, 'utf-8') let content = fs.readFileSync(src, 'utf-8');
try { try {
fs.unlinkSync(dest) fs.unlinkSync(dest);
} catch (error) {} } catch (error) {}
fs.writeFileSync(dest, content, 'utf-8') fs.writeFileSync(dest, content, 'utf-8');
} }
function switchVersion(version) { function switchVersion(version) {
copy('index.js', version) copy('index.js', version);
copy('index.css', version) copy('index.css', version);
} }
module.exports.loadModule = loadModule module.exports.loadModule = loadModule;
module.exports.switchVersion = switchVersion module.exports.switchVersion = switchVersion;