From bbd057dbf06a553720979ce67a564d90bc05455c Mon Sep 17 00:00:00 2001 From: icssoa <615206459@qq.com> Date: Tue, 30 May 2023 21:51:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=BC=E5=85=A5=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/cool/temp/eps.d.ts | 132 +---------- build/cool/temp/eps.json | 2 +- package.json | 2 +- public/用户导入模版.xlsx | Bin 0 -> 9198 bytes src/modules/base/views/param.vue | 122 +++++++---- src/modules/demo/views/crud.vue | 4 + src/modules/excel/config.ts | 7 - src/modules/excel/utils/index.ts | 16 -- src/modules/extend/config.ts | 6 +- .../excel}/export-btn.tsx | 6 +- src/modules/extend/excel/import-btn.vue | 206 ++++++++++++++++++ .../excel/utils/index.ts} | 9 +- yarn.lock | 67 ++++-- 13 files changed, 354 insertions(+), 225 deletions(-) create mode 100644 public/用户导入模版.xlsx delete mode 100644 src/modules/excel/config.ts delete mode 100644 src/modules/excel/utils/index.ts rename src/modules/{excel/components => extend/excel}/export-btn.tsx (93%) create mode 100644 src/modules/extend/excel/import-btn.vue rename src/modules/{excel/utils/export2excel.ts => extend/excel/utils/index.ts} (95%) diff --git a/build/cool/temp/eps.d.ts b/build/cool/temp/eps.d.ts index 1e3f75e..eadb6d0 100644 --- a/build/cool/temp/eps.d.ts +++ b/build/cool/temp/eps.d.ts @@ -69,13 +69,6 @@ declare namespace Eps { [key: string]: any; } - interface DemoUserEntity { - /** - * 任意键值 - */ - [key: string]: any; - } - interface DictInfoEntity { /** * 任意键值 @@ -132,13 +125,6 @@ declare namespace Eps { [key: string]: any; } - interface UserAddressEntity { - /** - * 任意键值 - */ - [key: string]: any; - } - interface UserInfoEntity { /** * 任意键值 @@ -1132,63 +1118,6 @@ declare namespace Eps { request: Service["request"]; } - interface DemoUser { - /** - * delete - */ - delete(data?: any): Promise; - /** - * update - */ - update(data?: any): Promise; - /** - * info - */ - info(data?: any): Promise; - /** - * list - */ - list(data?: any): Promise; - /** - * page - */ - page(data?: any): Promise<{ - pagination: { size: number; page: number; total: number }; - list: DemoUserEntity[]; - [key: string]: any; - }>; - /** - * add - */ - add(data?: any): Promise; - /** - * 权限标识 - */ - permission: { - delete: string; - update: string; - info: string; - list: string; - page: string; - add: string; - }; - /** - * 权限状态 - */ - _permission: { - delete: boolean; - update: boolean; - info: boolean; - list: boolean; - page: boolean; - add: boolean; - }; - /** - * 请求 - */ - request: Service["request"]; - } - interface DictInfo { /** * delete @@ -1756,63 +1685,6 @@ declare namespace Eps { request: Service["request"]; } - interface UserAddress { - /** - * delete - */ - delete(data?: any): Promise; - /** - * update - */ - update(data?: any): Promise; - /** - * info - */ - info(data?: any): Promise; - /** - * list - */ - list(data?: any): Promise; - /** - * page - */ - page(data?: any): Promise<{ - pagination: { size: number; page: number; total: number }; - list: UserAddressEntity[]; - [key: string]: any; - }>; - /** - * add - */ - add(data?: any): Promise; - /** - * 权限标识 - */ - permission: { - delete: string; - update: string; - info: string; - list: string; - page: string; - add: string; - }; - /** - * 权限状态 - */ - _permission: { - delete: boolean; - update: boolean; - info: boolean; - list: boolean; - page: boolean; - add: boolean; - }; - /** - * 请求 - */ - request: Service["request"]; - } - interface UserInfo { /** * delete @@ -1894,12 +1766,12 @@ declare namespace Eps { }; }; cloud: { db: CloudDb; func: { info: CloudFuncInfo; log: CloudFuncLog } }; - demo: { goods: DemoGoods; user: DemoUser }; + demo: { goods: DemoGoods }; dict: { info: DictInfo; type: DictType }; iot: { device: IotDevice; message: IotMessage; mqtt: IotMqtt }; recycle: { data: RecycleData }; space: { info: SpaceInfo; type: SpaceType }; task: { info: TaskInfo }; - user: { address: UserAddress; info: UserInfo }; + user: { info: UserInfo }; }; } diff --git a/build/cool/temp/eps.json b/build/cool/temp/eps.json index 4635fcd..ca5ceff 100644 --- a/build/cool/temp/eps.json +++ b/build/cool/temp/eps.json @@ -1 +1 @@ -[["/admin/base/comm","",[["/personUpdate","post"],["/uploadMode","get"],["/permmenu","get"],["/person","get"],["/upload","post"],["/logout","post"],["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/base/open","",[["/refreshToken","get"],["/captcha","get"],["/login","post"],["/html","get"],["/eps","get"],["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/base/sys/department","BaseSysDepartmentEntity",[["/delete","post"],["/update","post"],["/order","post"],["/list","post"],["/add","post"],["/page"],["/info"]]],["/admin/base/sys/log","BaseSysLogEntity",[["/setKeep","post"],["/getKeep","get"],["/clear","post"],["/page","post"],["/list"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/base/sys/menu","BaseSysMenuEntity",[["/create","post"],["/delete","post"],["/update","post"],["/parse","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/base/sys/param","BaseSysParamEntity",[["/delete","post"],["/update","post"],["/html","get"],["/info","get"],["/page","post"],["/add","post"],["/list"]]],["/admin/base/sys/role","BaseSysRoleEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/base/sys/user","BaseSysUserEntity",[["/delete","post"],["/update","post"],["/move","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/cloud/db","CloudDBEntity",[["/initEntity","post"],["/delete","post"],["/update","post"],["/data","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/cloud/func/info","CloudFuncInfoEntity",[["/invoke","post"],["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/cloud/func/log","CloudFuncLogEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/demo/goods","DemoGoodsEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/demo/user","DemoUserEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/dict/info","DictInfoEntity",[["/delete","post"],["/update","post"],["/data","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/dict/type","DictTypeEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/iot/device","IotDeviceEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/iot/message","IotMessageEntity",[["/page","post"],["/list"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/iot/mqtt","",[["/publish","post"],["/config","get"],["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/recycle/data","RecycleDataEntity",[["/restore","post"],["/info","get"],["/page","post"],["/list"],["/update"],["/delete"],["/add"]]],["/admin/space/info","SpaceInfoEntity",[["/getConfig","get"],["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/space/type","SpaceTypeEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/task/info","TaskInfoEntity",[["/delete","post"],["/update","post"],["/start","post"],["/once","post"],["/stop","post"],["/info","get"],["/page","post"],["/log","get"],["/add","post"],["/list"]]],["/admin/user/address","UserAddressEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/user/info","UserInfoEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/chat/message","",[["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/chat/session","",[["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/test","",[["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]]] \ No newline at end of file +[["/admin/base/comm","",[["/personUpdate","post"],["/uploadMode","get"],["/permmenu","get"],["/person","get"],["/upload","post"],["/logout","post"],["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/base/open","",[["/refreshToken","get"],["/captcha","get"],["/login","post"],["/html","get"],["/eps","get"],["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/base/sys/department","BaseSysDepartmentEntity",[["/delete","post"],["/update","post"],["/order","post"],["/list","post"],["/add","post"],["/page"],["/info"]]],["/admin/base/sys/log","BaseSysLogEntity",[["/setKeep","post"],["/getKeep","get"],["/clear","post"],["/page","post"],["/list"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/base/sys/menu","BaseSysMenuEntity",[["/create","post"],["/delete","post"],["/update","post"],["/parse","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/base/sys/param","BaseSysParamEntity",[["/delete","post"],["/update","post"],["/html","get"],["/info","get"],["/page","post"],["/add","post"],["/list"]]],["/admin/base/sys/role","BaseSysRoleEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/base/sys/user","BaseSysUserEntity",[["/delete","post"],["/update","post"],["/move","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/cloud/db","CloudDBEntity",[["/initEntity","post"],["/delete","post"],["/update","post"],["/data","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/cloud/func/info","CloudFuncInfoEntity",[["/invoke","post"],["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/cloud/func/log","CloudFuncLogEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/demo/goods","DemoGoodsEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/dict/info","DictInfoEntity",[["/delete","post"],["/update","post"],["/data","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/dict/type","DictTypeEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/iot/device","IotDeviceEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/iot/message","IotMessageEntity",[["/page","post"],["/list"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/iot/mqtt","",[["/publish","post"],["/config","get"],["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/admin/recycle/data","RecycleDataEntity",[["/restore","post"],["/info","get"],["/page","post"],["/list"],["/update"],["/delete"],["/add"]]],["/admin/space/info","SpaceInfoEntity",[["/getConfig","get"],["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/space/type","SpaceTypeEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/admin/task/info","TaskInfoEntity",[["/delete","post"],["/update","post"],["/start","post"],["/once","post"],["/stop","post"],["/info","get"],["/page","post"],["/log","get"],["/add","post"],["/list"]]],["/admin/user/info","UserInfoEntity",[["/delete","post"],["/update","post"],["/info","get"],["/list","post"],["/page","post"],["/add","post"]]],["/chat/message","",[["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/chat/session","",[["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]],["/test","",[["/list"],["/page"],["/info"],["/update"],["/delete"],["/add"]]]] \ No newline at end of file diff --git a/package.json b/package.json index 2f92589..8945418 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "vue-echarts": "^6.2.3", "vue-router": "^4.1.6", "vuedraggable": "^4.1.0", - "xlsx": "^0.18.5" + "xlsx": "0.16.9" }, "devDependencies": { "@types/lodash-es": "^4.17.6", diff --git a/public/用户导入模版.xlsx b/public/用户导入模版.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e73dd9e43adadbb2564cd568f0a31bd3530f967b GIT binary patch literal 9198 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 - - - + diff --git a/src/modules/demo/views/crud.vue b/src/modules/demo/views/crud.vue index 5c725ea..d67cd92 100644 --- a/src/modules/demo/views/crud.vue +++ b/src/modules/demo/views/crud.vue @@ -20,6 +20,10 @@ + + + + diff --git a/src/modules/excel/config.ts b/src/modules/excel/config.ts deleted file mode 100644 index 04cbe86..0000000 --- a/src/modules/excel/config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ModuleConfig } from "/@/cool"; - -export default (): ModuleConfig => { - return { - components: [import("./components/export-btn")] - }; -}; diff --git a/src/modules/excel/utils/index.ts b/src/modules/excel/utils/index.ts deleted file mode 100644 index 93f1d8c..0000000 --- a/src/modules/excel/utils/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { export_json_to_excel } from "./export2excel"; - -function currentDate() { - const d: Date = new Date(); - - return { - year: d.getFullYear(), - month: d.getMonth() + 1, - day: d.getDate(), - hour: d.getHours(), - minu: d.getMinutes(), - sec: d.getSeconds() - }; -} - -export { export_json_to_excel, currentDate }; diff --git a/src/modules/extend/config.ts b/src/modules/extend/config.ts index 68aed16..a1df864 100644 --- a/src/modules/extend/config.ts +++ b/src/modules/extend/config.ts @@ -13,7 +13,11 @@ export default (): ModuleConfig => { // 文本预览 () => import("./editor/preview.vue"), // 省市区选择 https://github.com/modood/Administrative-divisions-of-China - () => import("./distpicker/index") + () => import("./distpicker/index"), + // 导入按钮 + () => import("./excel/import-btn.vue"), + // 导出按钮 + () => import("./excel/export-btn") ] }; }; diff --git a/src/modules/excel/components/export-btn.tsx b/src/modules/extend/excel/export-btn.tsx similarity index 93% rename from src/modules/excel/components/export-btn.tsx rename to src/modules/extend/excel/export-btn.tsx index 2c29ecb..b615fc8 100644 --- a/src/modules/excel/components/export-btn.tsx +++ b/src/modules/extend/excel/export-btn.tsx @@ -2,7 +2,8 @@ import { defineComponent, PropType } from "vue"; import { useCrud } from "@cool-vue/crud"; import { ElMessage } from "element-plus"; import { isRef, ref } from "vue"; -import { currentDate, export_json_to_excel } from "../utils"; +import { export_json_to_excel } from "./utils"; +import dayjs from "dayjs"; export default defineComponent({ name: "cl-export-btn", @@ -92,8 +93,7 @@ export default defineComponent({ if (typeof props.filename === "function") { return await props?.filename(); } else { - const { year, month, day, hour, minu, sec } = currentDate(); - return props.filename || `报表(${year}-${month}-${day} ${hour}_${minu}_${sec})`; + return props.filename || `报表(${dayjs().format("YYYY-MM-DD HH_mm_ss")})`; } } diff --git a/src/modules/extend/excel/import-btn.vue b/src/modules/extend/excel/import-btn.vue new file mode 100644 index 0000000..b9c6275 --- /dev/null +++ b/src/modules/extend/excel/import-btn.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/src/modules/excel/utils/export2excel.ts b/src/modules/extend/excel/utils/index.ts similarity index 95% rename from src/modules/excel/utils/export2excel.ts rename to src/modules/extend/excel/utils/index.ts index 84918d5..b2f7adf 100644 --- a/src/modules/excel/utils/export2excel.ts +++ b/src/modules/extend/excel/utils/index.ts @@ -90,13 +90,8 @@ function sheet_from_array_of_arrays(data, opts) { r: R }); - if (typeof cell.v === "number") cell.t = "n"; - else if (typeof cell.v === "boolean") cell.t = "b"; - else if (cell.v instanceof Date) { - cell.t = "n"; - cell.z = XLSX.SSF._table[14]; - cell.v = datenum(cell.v); - } else cell.t = "s"; + // 修改这里:无论原始类型是什么,都将单元格类型设置为 "s" + cell.t = "s"; ws[cell_ref] = cell; } diff --git a/yarn.lock b/yarn.lock index bb89cc2..9943ba9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -979,6 +979,14 @@ acorn@^8.5.0, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +adler-32@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.2.0.tgz#6a3e6bf0a63900ba15652808cb15c6813d1a5f25" + integrity sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ== + dependencies: + exit-on-epipe "~1.0.1" + printj "~1.1.0" + adler-32@~1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2" @@ -1155,7 +1163,7 @@ caniuse-lite@^1.0.30001449: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001460.tgz#31d2e26f0a2309860ed3eff154e03890d9d851a7" integrity sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ== -cfb@~1.2.1: +cfb@^1.1.4: version "1.2.2" resolved "https://registry.yarnpkg.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44" integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA== @@ -1209,10 +1217,13 @@ clone@^2.1.1: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== -codepage@~1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.15.0.tgz#2e00519024b39424ec66eeb3ec07227e692618ab" - integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA== +codepage@~1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.14.0.tgz#8cbe25481323559d7d307571b0fff91e7a1d2f99" + integrity sha512-iz3zJLhlrg37/gYRWgEPkaFTtzmnEv1h+r7NgZum2lFElYQPi0/5bnmuDfODHxfp0INEfnRqyfyeIJDbb7ahRw== + dependencies: + commander "~2.14.1" + exit-on-epipe "~1.0.1" color-convert@^1.9.0: version "1.9.3" @@ -1255,6 +1266,16 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@~2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + integrity sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw== + +commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + commist@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/commist/-/commist-1.1.0.tgz#17811ec6978f6c15ee4de80c45c9beb77cee35d5" @@ -1293,7 +1314,7 @@ core-js@^3.21.1, core-js@^3.23.5: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.0.tgz#0273e142b67761058bcde5615c503c7406b572d6" integrity sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg== -crc-32@~1.2.0, crc-32@~1.2.1: +crc-32@~1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== @@ -1763,6 +1784,11 @@ eventemitter3@^2.0.3: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg== +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + ext@^1.1.2: version "1.7.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" @@ -1818,6 +1844,11 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fflate@^0.3.8: + version "0.3.11" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.3.11.tgz#2c440d7180fdeb819e64898d8858af327b042a5d" + integrity sha512-Rr5QlUeGN1mbOHlaqcSYMKVpPbgLy0AWT/W0EHxA6NGI12yO1jpoui2zBBvU2G824ltM6Ut8BFgfHSBGfkmS0A== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -2807,6 +2838,11 @@ prettier@^2.8.4: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== + prismjs@^1.23.0: version "1.29.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" @@ -3490,15 +3526,18 @@ ws@~8.11.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== -xlsx@^0.18.5: - version "0.18.5" - resolved "https://registry.yarnpkg.com/xlsx/-/xlsx-0.18.5.tgz#16711b9113c848076b8a177022799ad356eba7d0" - integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ== +xlsx@0.16.9: + version "0.16.9" + resolved "https://registry.yarnpkg.com/xlsx/-/xlsx-0.16.9.tgz#dacd5bb46bda6dd3743940c9c3dc1e2171826256" + integrity sha512-gxi1I3EasYvgCX1vN9pGyq920Ron4NO8PNfhuoA3Hpq6Y8f0ECXiy4OLrK4QZBnj1jx3QD+8Fq5YZ/3mPZ5iXw== dependencies: - adler-32 "~1.3.0" - cfb "~1.2.1" - codepage "~1.15.0" - crc-32 "~1.2.1" + adler-32 "~1.2.0" + cfb "^1.1.4" + codepage "~1.14.0" + commander "~2.17.1" + crc-32 "~1.2.0" + exit-on-epipe "~1.0.1" + fflate "^0.3.8" ssf "~0.11.2" wmf "~1.0.1" word "~0.3.0"