diff --git a/packages/plugins/@tachybase/plugin-print-template/package.json b/packages/plugins/@tachybase/plugin-print-template/package.json index d485545a0..b0fb4ea94 100644 --- a/packages/plugins/@tachybase/plugin-print-template/package.json +++ b/packages/plugins/@tachybase/plugin-print-template/package.json @@ -3,10 +3,20 @@ "version": "0.21.77", "main": "dist/server/index.js", "dependencies": { + "@bull-board/api": "^5.21.1", + "@bull-board/koa": "^5.21.1", + "bullmq": "^5.10.3", "docxtemplater": "^3.48.0", + "koa-bodyparser": "^4.4.1", + "koa-router": "^10.1.1", "pizzip": "^3.1.7", + "ts-node": "9.1.1", + "typescript": "^5.5.4", "xml2js": "^0.6.2" }, + "devDependencies": { + "@types/koa-router": "^7.4.8" + }, "peerDependencies": { "@tachybase/client": "workspace:*", "@tachybase/server": "workspace:*", diff --git a/packages/plugins/@tachybase/plugin-print-template/src/server/actions/printTemplates.ts b/packages/plugins/@tachybase/plugin-print-template/src/server/actions/printTemplates.ts index 5f8877f69..abaa80ba7 100644 --- a/packages/plugins/@tachybase/plugin-print-template/src/server/actions/printTemplates.ts +++ b/packages/plugins/@tachybase/plugin-print-template/src/server/actions/printTemplates.ts @@ -1,21 +1,20 @@ -import fs from 'fs'; -import path from 'path'; -import { Readable } from 'stream'; -import { Context } from '@tachybase/actions'; -import { Model } from '@tachybase/database'; +import fs from 'fs'; //导入Node.js的文件系统模块,用于文件操作 +import path from 'path'; //导入Node.js的路径模块,用于处理文件路径 +import { Readable } from 'stream'; // 从'stream'模块导入Readable类,用于创建可读流 +import { Context } from '@tachybase/actions'; //一个自定义库,用于处理请求上下文 +import { Model } from '@tachybase/database'; //用于数据库操作的模型 + +import Docxtemplater from 'docxtemplater'; //用于处理word文版模板 -import Docxtemplater from 'docxtemplater'; // 导入 Docxtemplater 的 InspectModule 类 -import InspectModule from 'docxtemplater/js/inspect-module'; -import PizZip from 'pizzip'; +import InspectModule from 'docxtemplater/js/inspect-module'; //Docxtemplater使用它来处理Word文档。 +import PizZip from 'pizzip'; //导入PizZip库,用于处理ZIP文件,Docxtemplater使用它来处理word文档 export const generate = async (ctx: Context) => { const id = ctx.action.params.id; const repo = ctx.db.getRepository('templateManage'); const template: Model = await repo.findOne({ - filter: { - id, - }, + filter: { id }, appends: ['template'], }); @@ -24,17 +23,19 @@ export const generate = async (ctx: Context) => { const data = rawTemplate.testData; try { - // 生成定制的 docx 文件 const buffer = generateDocxFromTemplate(templatePath, data); ctx.withoutDataWrapping = true; ctx.body = buffer; + return buffer; } catch (error) { console.error('Error:', error); ctx.status = 500; ctx.body = 'Error generating files: ' + error.message; + return { filePath: '' }; // 返回空路径以防止进一步的错误 } }; +//用于获取文档中的所有占位符标签 export const getTags = async (ctx: Context) => { const id = ctx.action.params.id; const repo = ctx.db.getRepository('templateManage'); @@ -48,13 +49,14 @@ export const getTags = async (ctx: Context) => { const templatePath = path.join(process.env.PWD, rawTemplate.template[0].get().url); try { - const content = fs.readFileSync(templatePath, 'binary'); - const zip = new PizZip(content); - const iModule = new InspectModule(); - const doc = new Docxtemplater(zip, { modules: [iModule] }); + const content = fs.readFileSync(templatePath, 'binary'); //同步读取模板文件的内容 + const zip = new PizZip(content); //用读取的内容创建一个PizZip对象 + const iModule = new InspectModule(); //创建一个InspectModule实例 + const doc = new Docxtemplater(zip, { modules: [iModule] }); //使用PizZip对象和InspectModule创建一个Docxtemplater实例 // 获取所有占位符 - const allTags = iModule.getAllTags(); + const allTags = iModule.getAllTags(); //InspectModule获取文档中的所有标签 + console.log('All tags in the document:', allTags); // 将 tags 转换为 JSON 格式的字符串 const tagsJson = JSON.stringify(allTags, null, 2); @@ -78,15 +80,17 @@ export const getTags = async (ctx: Context) => { } }; +//用于生成word文档的二进制数据 function generateDocxFromTemplate(templatePath, data): Buffer { try { const content = fs.readFileSync(templatePath, 'binary'); const zip = new PizZip(content); - const doc = new Docxtemplater(zip); + const doc = new Docxtemplater(zip); //Docxtemplater 是一个用于处理DOCX模板并填充数据的库。 doc.setData(data); - doc.render(); + doc.render(); //渲染模板,将数据填充到模板的占位符中 + //调用 getZip 方法获取处理后的ZIP对象,然后调用 generate 方法生成DOCX文件的二进制数据。{ type: 'nodebuffer' } 选项指定输出类型为Node.js的Buffer。buffer是一个缓存区,用于存取二进制数据。 return doc.getZip().generate({ type: 'nodebuffer' }); } catch (error) { console.error('Error generating DOCX from template:', error); diff --git a/packages/plugins/@tachybase/plugin-print-template/src/server/actions/producer.ts b/packages/plugins/@tachybase/plugin-print-template/src/server/actions/producer.ts new file mode 100644 index 000000000..ba0ca88cb --- /dev/null +++ b/packages/plugins/@tachybase/plugin-print-template/src/server/actions/producer.ts @@ -0,0 +1,63 @@ +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import { Context } from '@tachybase/actions'; + +import { Queue } from 'bullmq'; + +import { generate } from './printTemplates'; + +// 用于将 Buffer 保存为临时文件并返回文件路径 +function saveBufferToTempFile(buffer: Buffer): string { + const tempDir = os.tmpdir(); + const tempFilePath = path.join(tempDir, `document-${Date.now()}.docx`); + fs.writeFileSync(tempFilePath, buffer); + return tempFilePath; +} + +// 创建队列 +const redisOptions = { + port: Number(process.env.REDIS_PORT || 6379), + host: process.env.REDIS_HOST || 'localhost', + password: process.env.REDIS_PASSWORD || '', + // 移除 tls 属性 +}; + +const pdfConversionQueue = new Queue('default', { connection: redisOptions }); + +export const addConversionJob = async (ctx: Context) => { + try { + if (!ctx.action || !ctx.action.params) { + throw new Error('Missing action or action params in context'); + } + + // 生成文件路径并添加到队列 + const result = await generate(ctx); + + // 检查 result 类型 + let filePath: string; + if (Buffer.isBuffer(result)) { + filePath = saveBufferToTempFile(result); + } else if (result && typeof result === 'object' && 'filePath' in result) { + filePath = (result as { filePath: string }).filePath; + } else { + throw new Error('Invalid result from generate function'); + } + + console.log('Generated DOCX file path:', filePath); + + const outputDir = '/root/tachybase/storage/uploads'; + + // 添加作业到队列 + const job = await pdfConversionQueue.add('convert', { wordFilePath: filePath, outputDir }); + + // 返回作业 ID 和 PDF 文件路径 + ctx.body = { jobId: job.id }; + } catch (error) { + console.error('Error adding conversion job:', error); + ctx.status = 500; + ctx.body = 'Error adding conversion job: ' + error.message; + } +}; + +export default addConversionJob; diff --git a/packages/plugins/@tachybase/plugin-print-template/src/server/actions/template-params.ts b/packages/plugins/@tachybase/plugin-print-template/src/server/actions/template-params.ts deleted file mode 100644 index f0fddd1a3..000000000 --- a/packages/plugins/@tachybase/plugin-print-template/src/server/actions/template-params.ts +++ /dev/null @@ -1,54 +0,0 @@ -import fs from 'fs'; - -import PizZip from 'pizzip'; -import { parseStringPromise } from 'xml2js'; - -export async function getTemplateParams(templatePath) { - try { - const content = fs.readFileSync(templatePath, 'binary'); - const zip = new PizZip(content); - - const getXmlContent = (fileName) => { - const file = zip.file(fileName); - return file ? file.asText() : ''; - }; - - const docXml = getXmlContent('word/document.xml'); - - const parseXml = async (xml) => { - try { - const result = await parseStringPromise(xml, { explicitArray: false, ignoreAttrs: true }); - const body = result['w:document']['w:body']; - return Array.isArray(body['w:p']) ? body['w:p'] : [body['w:p']]; - } catch (error) { - console.error('Error parsing XML:', error); - throw error; - } - }; - - const xmlContent = await parseXml(docXml); - - const extractTags = (nodes) => { - const tags = new Set(); - nodes.forEach((node) => { - if (node['w:r'] && Array.isArray(node['w:r'])) { - node['w:r'].forEach((r) => { - if (r['w:t'] && r['w:t']['#']) { - const matches = r['w:t']['#'].match(/\{[\w-]+\.}/g); - if (matches) { - matches.forEach((tag) => tags.add(tag)); - } - } - }); - } - }); - return tags; - }; - - const tags = extractTags(xmlContent); - return Array.from(tags); // Ensure the return value is an array - } catch (error) { - console.error('Error in getTemplateParams:', error); - throw error; - } -} diff --git a/packages/plugins/@tachybase/plugin-print-template/src/server/plugin.ts b/packages/plugins/@tachybase/plugin-print-template/src/server/plugin.ts index dd98920ad..33ed98e33 100644 --- a/packages/plugins/@tachybase/plugin-print-template/src/server/plugin.ts +++ b/packages/plugins/@tachybase/plugin-print-template/src/server/plugin.ts @@ -1,6 +1,53 @@ +import { exec } from 'child_process'; +import path from 'path'; +import util from 'util'; import { Plugin } from '@tachybase/server'; +import { Worker } from 'bullmq'; + import { generate, getTags } from './actions/printTemplates'; +import { addConversionJob } from './actions/producer'; + +const execPromise = util.promisify(exec); + +const redisOptions = { + port: Number(process.env.REDIS_PORT || 6379), + host: process.env.REDIS_HOST || 'localhost', + password: process.env.REDIS_PASSWORD || '', +}; + +async function convertDocxToPdf(wordFilePath: string, outputDir: string, job: any): Promise { + try { + const fileName = path.basename(wordFilePath, '.docx') + '.pdf'; + const pdfFilePath = path.join(outputDir, fileName); + + console.log(`Converting ${wordFilePath} to PDF at ${pdfFilePath}`); + const command = `libreoffice --headless --convert-to pdf --outdir "${outputDir}" "${wordFilePath}"`; + console.log('commandcommandcommand:', command); + + // 更新进度到 20%:转换开始 + job.updateProgress(20); + + const { stdout, stderr } = await execPromise(command); + console.log('stdout', stdout); + console.log('stderr', stderr); + + // 更新进度到 80%:转换进行中 + job.updateProgress(80); + + console.log(`PDF created successfully: ${pdfFilePath}`); + + // 更新进度到 100%:转换完成 + job.updateProgress(100); + + return pdfFilePath; + } catch (error) { + console.error('Error during conversion:', error); + // 更新进度到 0% 或其他表示失败的值 + job.updateProgress(0); + throw error; + } +} export class PluginPrintTemplateServer extends Plugin { async afterAdd() {} @@ -8,24 +55,47 @@ export class PluginPrintTemplateServer extends Plugin { async beforeLoad() {} async load() { - // localhost:3000/api/printTemplates:generate this.app.resourcer.define({ name: 'printTemplates', actions: { generate, getTags, + addConversionJob, }, }); this.app.acl.allow('printTemplates', '*', 'public'); + + this.app.use(require('koa-bodyparser')()); + + const worker = new Worker( + process.env.MSG_QUEUE_NAME || 'default', + async (job) => { + if (!job.data.wordFilePath || !job.data.outputDir) { + console.error('Invalid job data:', job.data); + throw new Error('Missing required job data properties'); + } + + const { wordFilePath, outputDir } = job.data; + + // 自动更新进度 + const pdfFilePath = await convertDocxToPdf(wordFilePath, outputDir, job); + + // 返回 PDF 文件路径 + return { pdfFilePath }; + }, + { connection: redisOptions }, + ); + + worker.on('completed', (job, returnValue) => { + console.log(`Job ${job.id} completed with result: ${JSON.stringify(returnValue)}`); + }); + + worker.on('failed', (job, err) => { + console.error(`Job ${job.id} failed with error: ${err.message}`); + }); } - async install() {} - - async afterEnable() {} - - async afterDisable() {} - - async remove() {} + async beforeDestroy() {} } export default PluginPrintTemplateServer; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc0fb5bcd..dd9376da4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -427,7 +427,7 @@ importers: version: 4.14.1 rollup-plugin-dts: specifier: ^6.1.0 - version: 6.1.0(rollup@4.14.1)(typescript@5.4.5) + version: 6.1.0(rollup@4.14.1)(typescript@5.5.4) rollup-plugin-esbuild: specifier: ^6.1.1 version: 6.1.1(esbuild@0.23.0)(rollup@4.14.1) @@ -668,16 +668,16 @@ importers: version: 2.3.1 '@formily/grid': specifier: 2.3.1 - version: 2.3.1(typescript@5.4.5) + version: 2.3.1(typescript@5.5.4) '@formily/json-schema': specifier: 2.3.1 - version: 2.3.1(typescript@5.4.5) + version: 2.3.1(typescript@5.5.4) '@formily/path': specifier: 2.3.1 version: 2.3.1 '@formily/react': specifier: 2.3.1 - version: 2.3.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(typescript@5.4.5) + version: 2.3.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(typescript@5.5.4) '@formily/reactive': specifier: 2.3.1 version: 2.3.1 @@ -1066,16 +1066,16 @@ importers: version: 2.3.1 '@formily/grid': specifier: 2.3.1 - version: 2.3.1(typescript@5.4.5) + version: 2.3.1(typescript@5.5.4) '@formily/json-schema': specifier: 2.3.1 - version: 2.3.1(typescript@5.4.5) + version: 2.3.1(typescript@5.5.4) '@formily/path': specifier: 2.3.1 version: 2.3.1 '@formily/react': specifier: 2.3.1 - version: 2.3.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(typescript@5.4.5) + version: 2.3.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(typescript@5.5.4) '@formily/reactive': specifier: 2.3.1 version: 2.3.1 @@ -1741,6 +1741,45 @@ importers: specifier: ^6.25.1 version: 6.25.1(react-dom@18.3.1)(react@18.3.1) + packages/plugins/@tachybase/DolphinScheduler: + dependencies: + '@bull-board/api': + specifier: ^5.21.1 + version: 5.21.1(@bull-board/ui@5.21.1) + '@bull-board/koa': + specifier: ^5.21.1 + version: 5.21.1(react-dom@18.3.1)(react@18.3.1) + bullmq: + specifier: ^5.10.3 + version: 5.10.3 + child_process: + specifier: ^1.0.2 + version: 1.0.2 + docx-pdf: + specifier: ^0.0.1 + version: 0.0.1 + fs: + specifier: 0.0.1-security + version: 0.0.1-security + koa: + specifier: ^2.15.3 + version: 2.15.3 + koa-bodyparser: + specifier: ^4.4.1 + version: 4.4.1 + koa-router: + specifier: ^10.1.1 + version: 10.1.1 + path: + specifier: ^0.12.7 + version: 0.12.7 + pdf-lib: + specifier: ^1.17.1 + version: 1.17.1 + util: + specifier: ^0.12.5 + version: 0.12.5 + packages/plugins/@tachybase/plugin-acl: dependencies: '@tachybase/acl': @@ -1922,6 +1961,21 @@ importers: '@tachybase/test': specifier: workspace:* version: link:../../../core/test + docxtemplater: + specifier: ^3.48.0 + version: 3.48.0 + koa: + specifier: ^2.15.3 + version: 2.15.3 + koa-bodyparser: + specifier: ^4.4.1 + version: 4.4.1 + libreoffice: + specifier: ^0.4.5 + version: 0.4.5 + pizzip: + specifier: ^3.1.7 + version: 3.1.7 devDependencies: '@bull-board/api': specifier: ^5.21.1 @@ -1930,7 +1984,7 @@ importers: specifier: ^5.21.1 version: 5.21.1(react-dom@18.3.1)(react@18.3.1) bullmq: - specifier: ^5.10.1 + specifier: ^5.10.3 version: 5.10.3 packages/plugins/@tachybase/plugin-api-doc: @@ -2646,7 +2700,7 @@ importers: devDependencies: '@formily/json-schema': specifier: 2.3.1 - version: 2.3.1(typescript@5.4.5) + version: 2.3.1(typescript@5.5.4) lodash: specifier: 4.17.21 version: 4.17.21 @@ -3550,6 +3604,12 @@ importers: packages/plugins/@tachybase/plugin-print-template: dependencies: + '@bull-board/api': + specifier: ^5.21.1 + version: 5.21.1(@bull-board/ui@5.21.1) + '@bull-board/koa': + specifier: ^5.21.1 + version: 5.21.1(react-dom@18.3.1)(react@18.3.1) '@tachybase/client': specifier: workspace:* version: link:../../../core/client @@ -3559,15 +3619,34 @@ importers: '@tachybase/test': specifier: workspace:* version: link:../../../core/test + bullmq: + specifier: ^5.10.3 + version: 5.10.3 docxtemplater: specifier: ^3.48.0 version: 3.48.0 + koa-bodyparser: + specifier: ^4.4.1 + version: 4.4.1 + koa-router: + specifier: ^10.1.1 + version: 10.1.1 pizzip: specifier: ^3.1.7 version: 3.1.7 + ts-node: + specifier: 9.1.1 + version: 9.1.1(typescript@5.5.4) + typescript: + specifier: ^5.5.4 + version: 5.5.4 xml2js: specifier: ^0.6.2 version: 0.6.2 + devDependencies: + '@types/koa-router': + specifier: ^7.4.8 + version: 7.4.8 packages/plugins/@tachybase/plugin-prometheus: dependencies: @@ -3915,7 +3994,7 @@ importers: devDependencies: '@formily/json-schema': specifier: 2.3.1 - version: 2.3.1(typescript@5.4.5) + version: 2.3.1(typescript@5.5.4) lodash: specifier: 4.17.21 version: 4.17.21 @@ -7945,7 +8024,6 @@ packages: dependencies: '@bull-board/ui': 5.21.1 redis-info: 3.1.0 - dev: true /@bull-board/koa@5.21.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-ygLYekgJzMw5cTMbowGteW04Re9HPauTl2C6gPxElGmyjl0/FO4Pw8h6hAGP1pCQjbtK635qRAb5xQW1NzId9w==} @@ -8013,13 +8091,11 @@ packages: - velocityjs - walrus - whiskers - dev: true /@bull-board/ui@5.21.1: resolution: {integrity: sha512-JBDeCqG7j/c3WE0uGMN9snPkRJz9/D6MpTZzyVj7KOxIJwNKPOICNFZbCrCNi7bcJYHDJ2xGTN9OO1mw7i43BQ==} dependencies: '@bull-board/api': 5.21.1(@bull-board/ui@5.21.1) - dev: true /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} @@ -9884,7 +9960,7 @@ packages: '@formily/shared': 2.3.1 '@formily/validator': 2.3.1 - /@formily/grid@2.3.1(typescript@5.4.5): + /@formily/grid@2.3.1(typescript@5.5.4): resolution: {integrity: sha512-Je+sWa7b71qZgysbVQXiv+3bOqXnKZ3vU4RIhMXrTL4ac46+9dNSXGSVrC85C98lq9EJp/uUJhtLdUb6P3WStg==} engines: {npm: '>=3.0.0'} peerDependencies: @@ -9892,10 +9968,10 @@ packages: dependencies: '@formily/reactive': 2.3.1 '@juggle/resize-observer': 3.4.0 - typescript: 5.4.5 + typescript: 5.5.4 dev: false - /@formily/json-schema@2.3.1(typescript@5.4.5): + /@formily/json-schema@2.3.1(typescript@5.5.4): resolution: {integrity: sha512-LcJmU1BOYGdoip+Q9YAxHdrpjdl781WFSg0fDTD9/0A7c3xUXWwxdCYZIN0cvoXi2qq8Khyzba0pizl3YSkf0A==} engines: {npm: '>=3.0.0'} peerDependencies: @@ -9904,13 +9980,13 @@ packages: '@formily/core': 2.3.1 '@formily/reactive': 2.3.1 '@formily/shared': 2.3.1 - typescript: 5.4.5 + typescript: 5.5.4 /@formily/path@2.3.1: resolution: {integrity: sha512-BVo89K5nAFntx02+EV696If1b1bVIm5I1tRPtVyCVIjBIfAgga5hK4k80GZ01Dlk3tpReHpiIbZVg2DNVfw7jA==} engines: {npm: '>=3.0.0'} - /@formily/react@2.3.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(typescript@5.4.5): + /@formily/react@2.3.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(typescript@5.5.4): resolution: {integrity: sha512-8KkFJe2OnbsgiXwY/txUcUaCQIfIkfowWQinOSni02U2ssgs2bpb1ifFHlZrFGfrrW/xhce4ANUHRgoVYt7W4Q==} engines: {npm: '>=3.0.0'} peerDependencies: @@ -9926,7 +10002,7 @@ packages: optional: true dependencies: '@formily/core': 2.3.1 - '@formily/json-schema': 2.3.1(typescript@5.4.5) + '@formily/json-schema': 2.3.1(typescript@5.5.4) '@formily/reactive': 2.3.1 '@formily/reactive-react': 2.3.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1) '@formily/shared': 2.3.1 @@ -10074,7 +10150,6 @@ packages: /@ioredis/commands@1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - dev: true /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -10328,7 +10403,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3: @@ -10336,7 +10410,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3: @@ -10344,7 +10417,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3: @@ -10352,7 +10424,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3: @@ -10360,7 +10431,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3: @@ -10368,7 +10438,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: @@ -10435,7 +10504,6 @@ packages: /@one-ini/wasm@0.1.1: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - dev: true /@opencensus/core@0.0.8: resolution: {integrity: sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==} @@ -10632,6 +10700,18 @@ packages: engines: {node: '>=14'} dev: false + /@pdf-lib/standard-fonts@1.0.0: + resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} + dependencies: + pako: 1.0.11 + dev: false + + /@pdf-lib/upng@1.0.1: + resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==} + dependencies: + pako: 1.0.11 + dev: false + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -12685,6 +12765,12 @@ packages: '@types/koa': 2.15.0 dev: true + /@types/koa-router@7.4.8: + resolution: {integrity: sha512-SkWlv4F9f+l3WqYNQHnWjYnyTxYthqt8W9az2RTdQW7Ay8bc00iRZcrb8MC75iEfPqnGcg2csEl8tTG1NQPD4A==} + dependencies: + '@types/koa': 2.15.0 + dev: true + /@types/koa@2.13.12: resolution: {integrity: sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==} dependencies: @@ -14376,7 +14462,6 @@ packages: /abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true /abs-svg-path@0.1.1: resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} @@ -15127,7 +15212,6 @@ packages: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: safer-buffer: 2.1.2 - dev: true /assert-okam@1.5.0: resolution: {integrity: sha512-pchhPo40i8GsTj/7h6P8LSSzwRErnh2nCEiwXNTxy4VYw6lSesSac4rTKqwsA+fOZdj6FT81Mb9U1vIZEua1EQ==} @@ -15138,7 +15222,6 @@ packages: /assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} - dev: true /assert@1.5.1: resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} @@ -15226,10 +15309,6 @@ packages: postcss: 8.4.39 postcss-value-parser: 4.2.0 - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - /available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -15238,11 +15317,9 @@ packages: /aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: true /aws4@1.12.0: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - dev: true /axios-mock-adapter@1.22.0(axios@1.6.7): resolution: {integrity: sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==} @@ -15467,7 +15544,6 @@ packages: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 - dev: true /bessel@1.0.2: resolution: {integrity: sha512-Al3nHGQGqDYqqinXhQzmwmcRToe/3WyBv4N8aZc5Pef8xw2neZlR9VPi84Sa23JtgWcucu18HxVZrnI0fn2etw==} @@ -15549,11 +15625,9 @@ packages: /bluebird@3.4.7: resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} - dev: true /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} @@ -15848,7 +15922,6 @@ packages: uuid: 9.0.1 transitivePeerDependencies: - supports-color - dev: true /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} @@ -16034,7 +16107,6 @@ packages: /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: true /center-align@0.1.3: resolution: {integrity: sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==} @@ -16145,6 +16217,10 @@ packages: dependencies: get-func-name: 2.0.2 + /child_process@1.0.2: + resolution: {integrity: sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==} + dev: false + /china-division@2.7.0: resolution: {integrity: sha512-4uUPAT+1WfqDh5jytq7omdCmHNk3j+k76zEG/2IqaGcYB90c2SwcixttcypdsZ3T/9tN1TTpBDoeZn+Yw/qBEA==} dev: true @@ -16474,7 +16550,6 @@ packages: /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - dev: true /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} @@ -16613,7 +16688,6 @@ packages: extend-shallow: 2.0.1 is-whitespace: 0.3.0 kind-of: 3.2.2 - dev: true /conf@9.0.2: resolution: {integrity: sha512-rLSiilO85qHgaTBIIHQpsv8z+NnVfZq3cKuYNCXN1AOqPzced0GWZEe/A517VldRLyQYXUMyV+vszavE2jSAqw==} @@ -16830,7 +16904,6 @@ packages: ejs: 3.1.10 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - dev: true /constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} @@ -16920,7 +16993,6 @@ packages: dependencies: depd: 2.0.0 keygrip: 1.1.0 - dev: true /copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} @@ -16957,7 +17029,6 @@ packages: /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: true /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -17075,7 +17146,6 @@ packages: engines: {node: '>=12.0.0'} dependencies: luxon: 3.4.4 - dev: true /cron@2.4.4: resolution: {integrity: sha512-MHlPImXJj3K7x7lyUHjtKEOl69CSlTOWxS89jiFgNkzXfvhVjhMz/nc7/EIfN9vgooZp8XTtXJ1FREdmbyXOiQ==} @@ -17639,7 +17709,6 @@ packages: engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 - dev: true /data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} @@ -17882,7 +17951,7 @@ packages: side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -18083,6 +18152,10 @@ packages: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} dev: true + /dingbat-to-unicode@1.0.1: + resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} + dev: false + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -18104,6 +18177,15 @@ packages: dependencies: esutils: 2.0.3 + /docx-pdf@0.0.1: + resolution: {integrity: sha512-JbQ7w2ZPRzJGY2uLjL5nCAtCtjRoiZS2YYh7eVjax5K6XIFSEalt5FyK3OLwac37qLywtBlx3TG+z1MqYTA0Vw==} + dependencies: + html-pdf: 2.2.0 + mammoth: 1.8.0 + transitivePeerDependencies: + - supports-color + dev: false + /docxtemplater@3.48.0: resolution: {integrity: sha512-eM/sSUIVZND/GeY7FCC8kL2QV9oEQZ/RNxfY9cC07JutpVMFC9EEBOk4ajs3mcN72gqzOUqrsdwXPmKTD9TyHA==} engines: {node: '>=0.10'} @@ -18236,6 +18318,12 @@ packages: /dottie@2.0.6: resolution: {integrity: sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==} + /duck@0.1.12: + resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} + dependencies: + underscore: 1.13.6 + dev: false + /duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} dependencies: @@ -18267,7 +18355,6 @@ packages: dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 - dev: true /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} @@ -18283,7 +18370,6 @@ packages: commander: 10.0.1 minimatch: 9.0.1 semver: 7.6.2 - dev: true /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -18294,7 +18380,6 @@ packages: hasBin: true dependencies: jake: 10.9.2 - dev: true /electron-to-chromium@1.4.613: resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==} @@ -18459,7 +18544,7 @@ packages: dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 @@ -18479,7 +18564,7 @@ packages: is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.2 object-keys: 1.1.1 @@ -18495,7 +18580,7 @@ packages: typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 /es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} @@ -18635,6 +18720,12 @@ packages: /es5-imcompatible-versions@0.1.90: resolution: {integrity: sha512-2MPI0t/VV4j/oz1qbMekb4gCW81dewTpM2XJHKnPpZiPGu+1rVWmhTnwcq1vt8AFwWrkNF4RE7OZ9ibnKFYKwg==} + /es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + requiresBuild: true + dev: false + optional: true + /esbuild-register@3.5.0(esbuild@0.23.0): resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: @@ -19406,7 +19497,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 - dev: true /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -19424,6 +19514,20 @@ packages: tmp: 0.0.33 dev: true + /extract-zip@1.7.0: + resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} + hasBin: true + requiresBuild: true + dependencies: + concat-stream: 1.6.2 + debug: 2.6.9 + mkdirp: 0.5.6 + yauzl: 2.10.0 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + /extrareqp2@1.0.0(debug@4.3.5): resolution: {integrity: sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==} dependencies: @@ -19435,12 +19539,10 @@ packages: /extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} - dev: true /extsprintf@1.4.1: resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} engines: {'0': node >=0.6.0} - dev: true /fast-csv@4.3.6: resolution: {integrity: sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==} @@ -19593,7 +19695,6 @@ packages: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 - dev: true /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -19763,7 +19864,6 @@ packages: /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: true /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.4)(webpack@5.92.1): resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} @@ -19818,7 +19918,6 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true /form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} @@ -19885,6 +19984,16 @@ packages: /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + /fs-extra@1.0.0: + resolution: {integrity: sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==} + requiresBuild: true + dependencies: + graceful-fs: 4.2.11 + jsonfile: 2.4.0 + klaw: 1.3.1 + dev: false + optional: true + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -19931,6 +20040,10 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + /fs@0.0.1-security: + resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} + dev: false + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -20042,7 +20155,6 @@ packages: engines: {node: '>=6.4'} dependencies: pify: 4.0.1 - dev: true /get-ready@1.0.0: resolution: {integrity: sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==} @@ -20139,7 +20251,6 @@ packages: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: assert-plus: 1.0.0 - dev: true /git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} @@ -20389,7 +20500,6 @@ packages: /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} - dev: true /har-validator@5.1.5: resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} @@ -20398,7 +20508,6 @@ packages: dependencies: ajv: 6.12.6 har-schema: 2.0.0 - dev: true /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} @@ -20437,12 +20546,6 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - /has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -20482,6 +20585,16 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 + /hasha@2.2.0: + resolution: {integrity: sha512-jZ38TU/EBiGKrmyTNNZgnvCZHNowiRI4+w/I9noMlekHTZH3KyGgvJLmhSgykeAQ9j2SYPDosM0Bg3wHfzibAQ==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + is-stream: 1.1.0 + pinkie-promise: 2.0.1 + dev: false + optional: true + /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -20592,6 +20705,17 @@ packages: dependencies: void-elements: 3.1.0 + /html-pdf@2.2.0: + resolution: {integrity: sha512-k4F0znJNVx5ViGEq2HlQIcI8eosSOxFQBbwj8zBqYPT7xx508IDamIhmXiJNha7xuJqRIxn70beDn1qMgYlEdw==} + engines: {node: '>=4.0.0'} + deprecated: Please migrate your projects to a newer library like puppeteer + hasBin: true + optionalDependencies: + phantomjs-prebuilt: 2.1.16 + transitivePeerDependencies: + - supports-color + dev: false + /html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} @@ -20659,7 +20783,6 @@ packages: inherits: 2.0.3 setprototypeof: 1.1.0 statuses: 1.5.0 - dev: true /http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} @@ -20708,7 +20831,6 @@ packages: assert-plus: 1.0.0 jsprim: 1.4.2 sshpk: 1.18.0 - dev: true /https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} @@ -20842,7 +20964,6 @@ packages: /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: true /immutable@4.3.5: resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} @@ -21009,7 +21130,6 @@ packages: standard-as-callback: 2.1.0 transitivePeerDependencies: - supports-color - dev: true /ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} @@ -21056,7 +21176,7 @@ packages: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} @@ -21191,7 +21311,6 @@ packages: /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} - dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -21219,7 +21338,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -21414,12 +21533,6 @@ packages: isstream: 0.1.2 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.13 - /is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} @@ -21428,7 +21541,6 @@ packages: /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -21470,7 +21582,6 @@ packages: /is-whitespace@0.3.0: resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} engines: {node: '>=0.10.0'} - dev: true /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} @@ -21511,7 +21622,6 @@ packages: /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true /istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} @@ -21572,7 +21682,6 @@ packages: chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 - dev: true /javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} @@ -21676,7 +21785,6 @@ packages: glob: 10.4.5 js-cookie: 3.0.5 nopt: 7.2.1 - dev: true /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} @@ -21684,7 +21792,6 @@ packages: /js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} - dev: true /js-git@0.7.8: resolution: {integrity: sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==} @@ -21716,7 +21823,6 @@ packages: /jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: true /jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} @@ -21811,7 +21917,6 @@ packages: /json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -21851,6 +21956,14 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + requiresBuild: true + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + optional: true + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -21896,7 +22009,6 @@ packages: extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 - dev: true /jstat@1.9.6: resolution: {integrity: sha512-rPBkJbK2TnA8pzs93QcDDPlKcrtZWuuCo2dVR0TFLOJSxhqfWOVCSp8aV3/oSbn+4uY4yw1URtLpHQedtmXfug==} @@ -21922,7 +22034,6 @@ packages: pako: 1.0.11 readable-stream: 2.3.8 setimmediate: 1.0.5 - dev: true /jwa@1.4.1: resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} @@ -21937,6 +22048,12 @@ packages: jwa: 1.4.1 safe-buffer: 5.2.1 + /kew@0.7.0: + resolution: {integrity: sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ==} + requiresBuild: true + dev: false + optional: true + /keygrip@1.1.0: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} @@ -21974,6 +22091,14 @@ packages: '@types/node': 20.14.2 dev: true + /klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + requiresBuild: true + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + optional: true + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -22008,7 +22133,6 @@ packages: koa-compose: 4.1.0 transitivePeerDependencies: - supports-color - dev: true /koa-router@10.1.1: resolution: {integrity: sha512-z/OzxVjf5NyuNO3t9nJpx7e1oR3FSBAauiwXtMQu4ppcnuNZzTaQ4p21P8A6r2Es8uJJM339oc4oVW+qX7SqnQ==} @@ -22022,7 +22146,6 @@ packages: path-to-regexp: 6.2.1 transitivePeerDependencies: - supports-color - dev: true /koa-send@5.0.1: resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} @@ -22033,7 +22156,6 @@ packages: resolve-path: 1.4.0 transitivePeerDependencies: - supports-color - dev: true /koa-static@5.0.0: resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} @@ -22043,7 +22165,6 @@ packages: koa-send: 5.0.1 transitivePeerDependencies: - supports-color - dev: true /koa-views@7.0.2(ejs@3.1.10)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-dvx3mdVeSVuIPEaKAoGbxLcenudvhl821xxyuRbcoA+bOJ2dvN8wlGjkLu0ZFMlkCscXZV6lzxy28rafeazI/w==} @@ -22116,7 +22237,6 @@ packages: - velocityjs - walrus - whiskers - dev: true /koa@2.14.2: resolution: {integrity: sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==} @@ -22158,7 +22278,7 @@ packages: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 - debug: 4.3.4 + debug: 4.3.5(supports-color@5.5.0) delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -22178,7 +22298,6 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: true /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -22264,11 +22383,18 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 + /libreoffice@0.4.5: + resolution: {integrity: sha512-Ai12fueA8Kdinnr4P3uM2aVdMfi4zU+EP3XzbyvJWUR0TS/DkNpNFheHlVn3237X3vAb92A5NSaLq+XaLAStYA==} + engines: {node: '>=6'} + dependencies: + async: 3.2.5 + tmp: 0.2.3 + dev: false + /lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} dependencies: immediate: 3.0.6 - dev: true /lightningcss-darwin-arm64@1.22.1: resolution: {integrity: sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==} @@ -22512,7 +22638,6 @@ packages: /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: true /lodash.difference@4.5.0: resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} @@ -22547,7 +22672,6 @@ packages: /lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - dev: true /lodash.isboolean@3.0.3: resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} @@ -22661,6 +22785,14 @@ packages: dependencies: js-tokens: 4.0.0 + /lop@0.4.1: + resolution: {integrity: sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==} + dependencies: + duck: 0.1.12 + option: 0.2.4 + underscore: 1.13.6 + dev: false + /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: @@ -22721,7 +22853,6 @@ packages: /luxon@3.4.4: resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} engines: {node: '>=12'} - dev: true /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} @@ -22797,6 +22928,23 @@ packages: dependencies: tmpl: 1.0.5 + /mammoth@1.8.0: + resolution: {integrity: sha512-pJNfxSk9IEGVpau+tsZFz22ofjUsl2mnA5eT8PjPs2n0BP+rhVte4Nez6FdgEuxv3IGI3afiV46ImKqTGDVlbA==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@xmldom/xmldom': 0.8.10 + argparse: 1.0.10 + base64-js: 1.5.1 + bluebird: 3.4.7 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + lop: 0.4.1 + path-is-absolute: 1.0.1 + underscore: 1.13.6 + xmlbuilder: 10.1.1 + dev: false + /map-age-cleaner@0.1.3: resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} engines: {node: '>=6'} @@ -23159,7 +23307,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: true /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} @@ -23356,14 +23503,12 @@ packages: '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 - dev: true optional: true /msgpackr@1.11.0: resolution: {integrity: sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==} optionalDependencies: msgpackr-extract: 3.0.3 - dev: true /multer-aliyun-oss@2.1.1: resolution: {integrity: sha512-EfDlv2oUZS94+VULybEo8rSlGTsV3YphmCAMT8/nMWBleQDjLMeV7tCK6dXe2Lj+yqRjaTHyuOMhbT5i4voHOQ==} @@ -23624,7 +23769,6 @@ packages: requiresBuild: true dependencies: detect-libc: 2.0.3 - dev: true optional: true /node-gyp-build@4.8.1: @@ -23765,7 +23909,6 @@ packages: hasBin: true dependencies: abbrev: 2.0.0 - dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -23872,7 +24015,6 @@ packages: /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - dev: true /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -24074,6 +24216,10 @@ packages: oidc-token-hash: 5.0.3 dev: true + /option@0.2.4: + resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} + dev: false + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -24439,6 +24585,13 @@ packages: dev: true optional: true + /path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + dependencies: + process: 0.11.10 + util: 0.10.4 + dev: false + /pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -24461,6 +24614,15 @@ packages: safe-buffer: 5.2.1 sha.js: 2.4.11 + /pdf-lib@1.17.1: + resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==} + dependencies: + '@pdf-lib/standard-fonts': 1.0.0 + '@pdf-lib/upng': 1.0.1 + pako: 1.0.11 + tslib: 1.14.1 + dev: false + /pdfast@0.2.0: resolution: {integrity: sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==} @@ -24480,7 +24642,6 @@ packages: /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - dev: true /pg-cloudflare@1.1.1: resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} @@ -24545,6 +24706,26 @@ packages: dependencies: split2: 4.2.0 + /phantomjs-prebuilt@2.1.16: + resolution: {integrity: sha512-PIiRzBhW85xco2fuj41FmsyuYHKjKuXWmhjy3A/Y+CMpN/63TV+s9uzfVhsUwFe0G77xWtHBG8xmXf5BqEUEuQ==} + deprecated: this package is now deprecated + hasBin: true + requiresBuild: true + dependencies: + es6-promise: 4.2.8 + extract-zip: 1.7.0 + fs-extra: 1.0.0 + hasha: 2.2.0 + kew: 0.7.0 + progress: 1.1.8 + request: 2.88.2 + request-progress: 2.0.1 + which: 1.3.1 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -24604,6 +24785,7 @@ packages: /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} + requiresBuild: true /pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} @@ -25503,7 +25685,6 @@ packages: condense-newlines: 0.2.1 extend-shallow: 2.0.1 js-beautify: 1.15.1 - dev: true /printable-characters@1.0.42: resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} @@ -25529,6 +25710,13 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + /progress@1.1.8: + resolution: {integrity: sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==} + engines: {node: '>=0.4.0'} + requiresBuild: true + dev: false + optional: true + /prom-client@15.1.3: resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} engines: {node: ^16 || ^18 || >=20} @@ -25694,7 +25882,6 @@ packages: /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} - dev: true /query-string@6.14.1: resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} @@ -27242,20 +27429,17 @@ packages: /redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} - dev: true /redis-info@3.1.0: resolution: {integrity: sha512-ER4L9Sh/vm63DkIE0bkSjxluQlioBiBgf5w1UuldaW/3vPcecdljVDisZhmnCMvsxHNiARTTDDHGg9cGwTfrKg==} dependencies: lodash: 4.17.21 - dev: true /redis-parser@3.0.0: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} dependencies: redis-errors: 1.2.0 - dev: true /redis@4.6.13: resolution: {integrity: sha512-MHgkS4B+sPjCXpf+HfdetBwbRz6vCtsceTmw1pHNYJAsYxrfpOP6dz+piJWGos8wqG7qb3vj/Rrc5qOlmInUuA==} @@ -27399,6 +27583,14 @@ packages: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} + /request-progress@2.0.1: + resolution: {integrity: sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA==} + requiresBuild: true + dependencies: + throttleit: 1.0.1 + dev: false + optional: true + /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -27424,7 +27616,6 @@ packages: tough-cookie: 2.5.0 tunnel-agent: 0.6.0 uuid: 3.4.0 - dev: true /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -27492,7 +27683,6 @@ packages: dependencies: http-errors: 1.6.3 path-is-absolute: 1.0.1 - dev: true /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -27617,7 +27807,7 @@ packages: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} dev: false - /rollup-plugin-dts@6.1.0(rollup@4.14.1)(typescript@5.4.5): + /rollup-plugin-dts@6.1.0(rollup@4.14.1)(typescript@5.5.4): resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} engines: {node: '>=16'} peerDependencies: @@ -27626,7 +27816,7 @@ packages: dependencies: magic-string: 0.30.8 rollup: 4.14.1 - typescript: 5.4.5 + typescript: 5.5.4 optionalDependencies: '@babel/code-frame': 7.24.7 dev: true @@ -28092,7 +28282,6 @@ packages: /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - dev: true /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -28498,7 +28687,6 @@ packages: jsbn: 0.1.1 safer-buffer: 2.1.2 tweetnacl: 0.14.5 - dev: true /ssri@8.0.1: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} @@ -28539,7 +28727,6 @@ packages: /standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - dev: true /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} @@ -29351,6 +29538,12 @@ packages: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} + /throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} + requiresBuild: true + dev: false + optional: true + /through2@0.4.2: resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} dependencies: @@ -29411,7 +29604,6 @@ packages: /tmp@0.2.3: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} - dev: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -29457,7 +29649,6 @@ packages: dependencies: psl: 1.9.0 punycode: 2.3.1 - dev: true /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} @@ -29608,6 +29799,22 @@ packages: yn: 3.1.1 dev: false + /ts-node@9.1.1(typescript@5.5.4): + resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} + engines: {node: '>=10.0.0'} + hasBin: true + peerDependencies: + typescript: '>=2.7' + dependencies: + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.21 + typescript: 5.5.4 + yn: 3.1.1 + dev: false + /tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: @@ -29745,7 +29952,6 @@ packages: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 - dev: true /tv4@1.3.0: resolution: {integrity: sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==} @@ -29754,7 +29960,6 @@ packages: /tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - dev: true /tx2@1.0.5: resolution: {integrity: sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==} @@ -29828,7 +30033,7 @@ packages: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 /typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} @@ -29845,7 +30050,7 @@ packages: call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 /typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} @@ -29861,11 +30066,11 @@ packages: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 /typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} @@ -29883,7 +30088,7 @@ packages: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 /typed-array-length@1.0.6: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} @@ -29919,6 +30124,12 @@ packages: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true + dev: true + + /typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} @@ -30406,6 +30617,16 @@ packages: dependencies: inherits: 2.0.3 + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + dev: false + /utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} @@ -30491,7 +30712,6 @@ packages: assert-plus: 1.0.0 core-util-is: 1.0.2 extsprintf: 1.4.1 - dev: true /vite-compatible-readable-stream@3.6.1: resolution: {integrity: sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==} @@ -30969,7 +31189,7 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} @@ -31000,16 +31220,6 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - /which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -31295,6 +31505,11 @@ packages: sax: 1.4.1 xmlbuilder: 11.0.1 + /xmlbuilder@10.1.1: + resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} + engines: {node: '>=4.0'} + dev: false + /xmlbuilder@11.0.1: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'}