From ff8dac373efd5617b2ccc7761880eb3191923801 Mon Sep 17 00:00:00 2001 From: hikerpig Date: Mon, 1 Jan 2024 18:25:55 +0800 Subject: [PATCH] feat: test pintora in wintercg runtime with fontkit to calculate text metrics --- .changeset/fair-zoos-mix.md | 8 + packages/pintora-core/src/util/index.ts | 4 +- packages/pintora-core/src/util/text-metric.ts | 111 ++-- .../src/renderers/SvgRenderer.ts | 3 +- packages/pintora-standalone/package.json | 8 +- packages/pintora-target-wintercg/.gitignore | 1 + packages/pintora-target-wintercg/README.md | 4 + .../pintora-target-wintercg/aliases/canvas.js | 1 + .../pintora-target-wintercg/aliases/url.js | 8 + .../build/ESBuildNodePolyfillsPlugin.ts | 98 +++ .../build/ESBuildPintoraRuntimePlugin.ts | 21 + .../pintora-target-wintercg/build/esbuild.ts | 53 ++ .../build/tsconfig.json | 8 + .../fonts/SourceCodePro-Medium.ttf | Bin 0 -> 205728 bytes packages/pintora-target-wintercg/package.json | 57 ++ .../pintora-target-wintercg/runtime/index.ts | 27 + .../pintora-target-wintercg/runtime/render.ts | 118 ++++ .../runtime/text-metric.ts | 60 ++ .../runtime/tsconfig.json | 8 + .../src/edge-runtime-pintora.ts | 32 + .../src/edge-runtime-server.ts | 21 + .../src/node-pintora.ts | 29 + .../src/platforms/edge-handler.ts | 27 + .../pintora-target-wintercg/tsconfig.json | 24 + .../pintora-target-wintercg/types/index.d.ts | 30 + pnpm-lock.yaml | 558 +++++++++++++++++- 26 files changed, 1245 insertions(+), 74 deletions(-) create mode 100644 .changeset/fair-zoos-mix.md create mode 100644 packages/pintora-target-wintercg/.gitignore create mode 100644 packages/pintora-target-wintercg/README.md create mode 100644 packages/pintora-target-wintercg/aliases/canvas.js create mode 100644 packages/pintora-target-wintercg/aliases/url.js create mode 100644 packages/pintora-target-wintercg/build/ESBuildNodePolyfillsPlugin.ts create mode 100644 packages/pintora-target-wintercg/build/ESBuildPintoraRuntimePlugin.ts create mode 100644 packages/pintora-target-wintercg/build/esbuild.ts create mode 100644 packages/pintora-target-wintercg/build/tsconfig.json create mode 100644 packages/pintora-target-wintercg/fonts/SourceCodePro-Medium.ttf create mode 100644 packages/pintora-target-wintercg/package.json create mode 100644 packages/pintora-target-wintercg/runtime/index.ts create mode 100644 packages/pintora-target-wintercg/runtime/render.ts create mode 100644 packages/pintora-target-wintercg/runtime/text-metric.ts create mode 100644 packages/pintora-target-wintercg/runtime/tsconfig.json create mode 100644 packages/pintora-target-wintercg/src/edge-runtime-pintora.ts create mode 100644 packages/pintora-target-wintercg/src/edge-runtime-server.ts create mode 100644 packages/pintora-target-wintercg/src/node-pintora.ts create mode 100644 packages/pintora-target-wintercg/src/platforms/edge-handler.ts create mode 100644 packages/pintora-target-wintercg/tsconfig.json create mode 100644 packages/pintora-target-wintercg/types/index.d.ts diff --git a/.changeset/fair-zoos-mix.md b/.changeset/fair-zoos-mix.md new file mode 100644 index 00000000..e1e471a0 --- /dev/null +++ b/.changeset/fair-zoos-mix.md @@ -0,0 +1,8 @@ +--- +'@pintora/core': patch +'@pintora/renderer': patch +'@pintora/standalone': patch +'@pintora/target-wintercg': patch +--- + +Be able to inject text-metric calculator in case there is no Canvas impl in the environment. diff --git a/packages/pintora-core/src/util/index.ts b/packages/pintora-core/src/util/index.ts index b08d36dd..79c7fb03 100644 --- a/packages/pintora-core/src/util/index.ts +++ b/packages/pintora-core/src/util/index.ts @@ -1,8 +1,8 @@ export * from './util' export * from './matrix' export * from './geometry' -export { calculateTextDimensions } from './text-metric' -export type { IFont } from './text-metric' +export { calculateTextDimensions, textMetrics } from './text-metric' +export type { IFont, ITextMetricCalculator } from './text-metric' export { encodeForUrl, decodeCodeInUrl } from './encode' export { makeMark } from './mark' export { parseColor, tinycolor } from './color' diff --git a/packages/pintora-core/src/util/text-metric.ts b/packages/pintora-core/src/util/text-metric.ts index 4ad8cb60..e2fe7b3b 100644 --- a/packages/pintora-core/src/util/text-metric.ts +++ b/packages/pintora-core/src/util/text-metric.ts @@ -1,52 +1,89 @@ +import type { TSize } from './geometry' export interface IFont { fontFamily?: string fontSize: number fontWeight?: any } -export function calculateTextDimensions(text: string, font?: IFont) { - const lines = text.split('\n') - let width = 0 - let height = 0 - const fontSize = font?.fontSize || 14 - lines.forEach((line, i) => { - const lineMetric = getLineMetric(line, font) - // console.log('line metric', line, lineMetric) - const w = lineMetric.width - width = Math.max(w, width) - // svg renderer antv/g currently adds tspan dy with '1em', which matches fontSize - // so we will calculate height with similar method - // TODO: but it has some differences with canvas - let lineHeight = fontSize - if (i === 0) { - if ('actualBoundingBoxDescent' in lineMetric) { - lineHeight = lineMetric.actualBoundingBoxAscent + lineMetric.actualBoundingBoxDescent +export interface ITextMetricCalculator { + name?: string + calculateTextDimensions(text: string, font?: IFont): TSize +} + +export type TTextMetrics = Pick + +/** + * Use canvas Context2D `measureText()` method to calculate text metrics. + */ +class CanvasTextMetricCalculator implements ITextMetricCalculator { + name = 'CanvasTextMetricCalculator' + ctx: CanvasRenderingContext2D | undefined = undefined + + calculateTextDimensions(text: string, font?: IFont) { + const lines = text.split('\n') + let width = 0 + let height = 0 + const fontSize = font?.fontSize || 14 + lines.forEach((line, i) => { + const lineMetric = this.getLineMetric(line, font) + // console.log('line metric', line, lineMetric) + const w = lineMetric.width + width = Math.max(w, width) + // svg renderer antv/g currently adds tspan dy with '1em', which matches fontSize + // so we will calculate height with similar method + // TODO: but it has some differences with canvas + let lineHeight = fontSize + if (i === 0) { + if ('actualBoundingBoxDescent' in lineMetric) { + lineHeight = lineMetric.actualBoundingBoxAscent + lineMetric.actualBoundingBoxDescent + } } + height += lineHeight + }) + // console.log('calculateTextDimensions:', text, width, height) + return { + width, + height, + } + } + + getLineMetric(text: string, font?: IFont) { + const fontSize = font?.fontSize || 14 + const fontFamily = font?.fontFamily || 'sans-serif' + const ctx = this.getCanvasContext() + ctx.font = `${fontSize}px ${fontFamily}` + return ctx.measureText(text) + } + + /** A helper canvas context 2D for measuring text */ + getCanvasContext = () => { + if (!this.ctx) { + const canvas = document.createElement('canvas') + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.ctx = canvas.getContext('2d')! } - height += lineHeight - }) - // console.log('calculateTextDimensions', text, width, height) - return { - width, - height, + return this.ctx } } -let ctx: CanvasRenderingContext2D -/** A helper canvas context 2D for measuring text */ -const getCanvasContext = () => { - if (!ctx) { - const canvas = document.createElement('canvas') - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ctx = canvas.getContext('2d')! +const canvasTextCalculator = new CanvasTextMetricCalculator() + +/** + * A bridge for text metric calculator, can be set to use different implementation in different environment. + * By default it uses {@link CanvasTextMetricCalculator}. + */ +class TextMetricBridge implements ITextMetricCalculator { + protected calculator: ITextMetricCalculator = canvasTextCalculator + setImpl(calculator: ITextMetricCalculator) { + this.calculator = calculator + } + calculateTextDimensions(text: string, font?: IFont | undefined) { + return this.calculator.calculateTextDimensions(text, font) } - return ctx } -function getLineMetric(text: string, font?: IFont) { - const fontSize = font?.fontSize || 14 - const fontFamily = font?.fontFamily || 'sans-serif' - const ctx = getCanvasContext() - ctx.font = `${fontSize}px ${fontFamily}` - return ctx.measureText(text) +export const textMetrics = new TextMetricBridge() + +export function calculateTextDimensions(text: string, font?: IFont) { + return textMetrics.calculateTextDimensions(text, font) } diff --git a/packages/pintora-renderer/src/renderers/SvgRenderer.ts b/packages/pintora-renderer/src/renderers/SvgRenderer.ts index 7ce6ec9c..8ebbc3b8 100644 --- a/packages/pintora-renderer/src/renderers/SvgRenderer.ts +++ b/packages/pintora-renderer/src/renderers/SvgRenderer.ts @@ -22,7 +22,8 @@ export class SvgRenderer extends BaseRenderer { if (mark.class) { const el = shape.get('el') - if (el) { + // TODO: some js dom implementation does not have classList + if (el && el.classList) { mark.class.split(' ').forEach(cls => { if (cls) el.classList.add(cls) }) diff --git a/packages/pintora-standalone/package.json b/packages/pintora-standalone/package.json index 54ad711f..01543806 100644 --- a/packages/pintora-standalone/package.json +++ b/packages/pintora-standalone/package.json @@ -16,9 +16,13 @@ "main": "./lib/pintora-standalone.umd.js", "exports": { ".": { - "import": "./lib/pintora-standalone.esm.js", + "import": { + "types": "./types/index.d.ts", + "default": "./lib/pintora-standalone.esm.js" + }, "require": "./lib/pintora-standalone.umd.js" - } + }, + "./package.json": "./package.json" }, "sideEffects": false, "directories": { diff --git a/packages/pintora-target-wintercg/.gitignore b/packages/pintora-target-wintercg/.gitignore new file mode 100644 index 00000000..849ddff3 --- /dev/null +++ b/packages/pintora-target-wintercg/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/packages/pintora-target-wintercg/README.md b/packages/pintora-target-wintercg/README.md new file mode 100644 index 00000000..455f945a --- /dev/null +++ b/packages/pintora-target-wintercg/README.md @@ -0,0 +1,4 @@ +Stil at a very early stage. + +Bundle a big JS including pintora and its dependencies and some Node.js module polyfills, so that it can run inside a WinterCG or other lightweight JS runtime. + diff --git a/packages/pintora-target-wintercg/aliases/canvas.js b/packages/pintora-target-wintercg/aliases/canvas.js new file mode 100644 index 00000000..4ba52ba2 --- /dev/null +++ b/packages/pintora-target-wintercg/aliases/canvas.js @@ -0,0 +1 @@ +module.exports = {} diff --git a/packages/pintora-target-wintercg/aliases/url.js b/packages/pintora-target-wintercg/aliases/url.js new file mode 100644 index 00000000..ca387029 --- /dev/null +++ b/packages/pintora-target-wintercg/aliases/url.js @@ -0,0 +1,8 @@ +const URL = require('url') + +module.exports = { + ...URL, + fileURLToPath(s) { + return s || '' + }, +} diff --git a/packages/pintora-target-wintercg/build/ESBuildNodePolyfillsPlugin.ts b/packages/pintora-target-wintercg/build/ESBuildNodePolyfillsPlugin.ts new file mode 100644 index 00000000..da98ba90 --- /dev/null +++ b/packages/pintora-target-wintercg/build/ESBuildNodePolyfillsPlugin.ts @@ -0,0 +1,98 @@ +import * as path from 'path' +import { Plugin } from 'esbuild' + +const nodeModulesDir = path.resolve(__dirname, '../node_modules') + +export const ESBuildNodePolyfillsPlugin: Plugin = { + name: 'ESBuildNodePolyfillsPlugin', + setup(build) { + const nodeGlobalsToBeIgnored = /^((tls)|(assert)|(fs)|(net))$/ + build.onResolve({ filter: nodeGlobalsToBeIgnored }, args => { + return { path: args.path, namespace: 'do-nothing' } + }) + + // build.onResolve({ filter: /node:path/ }, args => { + // return { namespace: 'path-browserify' } + // }) + + // Resolve Stream Modules + build.onResolve( + { + filter: /(_stream_duplex)|(_stream_passthrough)|(_stream_readable)|(_stream_transform)|(_stream_writable)/, + }, + args => { + const pPrefix = [nodeModulesDir, 'readable-stream', 'lib'] + let p + if (args.path.includes('_stream_duplex')) p = path.join(...pPrefix, '_stream_duplex.js') + if (args.path.includes('_stream_passthrough')) p = path.join(...pPrefix, '_stream_passthrough.js') + if (args.path.includes('_stream_readable')) p = path.join(...pPrefix, '_stream_readable.js') + if (args.path.includes('_stream_transform')) p = path.join(...pPrefix, '_stream_transform.js') + if (args.path.includes('_stream_writable')) p = path.join(...pPrefix, '_stream_writable.js') + return { path: p } + }, + ) + + // // Special Case for the "SAP Cloud SDK for JavaScript" + // build.onResolve({ filter: /.*\/internal\/streams\/stream/ }, (args) => ({ + // path: path.join(__dirname, "../", "stream-browserify", "index.js"), + // })); + + // Resolve other packages + build.onResolve( + { + filter: + /^((buffer)|(crypto)|(http)|(https)|(os)|(path)|(node:path)|(stream)|(zlib)|(url)|(events)|(process)|(util))$/, + }, + args => { + const pPrefix = [nodeModulesDir] + let p + switch (args.path) { + case 'buffer': + p = path.join(...pPrefix, 'buffer', 'index.js') + break + case 'crypto': + p = path.join(...pPrefix, 'crypto-browserify', 'index.js') + break + case 'http': + p = path.join(...pPrefix, 'stream-http', 'index.js') + break + case 'https': + p = path.join(...pPrefix, 'https-browserify', 'index.js') + break + case 'os': + p = path.join(...pPrefix, 'os-browserify', 'browser.js') + break + case 'node:path': + p = path.join(...pPrefix, 'path-browserify', 'index.js') + break + case 'path': + p = path.join(...pPrefix, 'path-browserify', 'index.js') + break + // case "stream": + // p = path.join(...pPrefix, "stream-browserify", "index.js"); + // break; + case 'zlib': + p = path.join(...pPrefix, 'browserify-zlib', 'lib', 'index.js') + break + case 'events': + p = path.join(...pPrefix, 'events', 'events.js') + break + case 'process': + p = path.join(...pPrefix, 'process', 'browser.js') + break + case 'util': + p = path.join(...pPrefix, 'util', 'util.js') + break + } + if (p) { + return { path: p, external: false } + } + }, + ) + + // Do nothing on specified fields + build.onLoad({ filter: /.*/, namespace: 'do-nothing' }, args => ({ + contents: 'export default false;', + })) + }, +} diff --git a/packages/pintora-target-wintercg/build/ESBuildPintoraRuntimePlugin.ts b/packages/pintora-target-wintercg/build/ESBuildPintoraRuntimePlugin.ts new file mode 100644 index 00000000..bcb5eac5 --- /dev/null +++ b/packages/pintora-target-wintercg/build/ESBuildPintoraRuntimePlugin.ts @@ -0,0 +1,21 @@ +import * as fs from 'fs' +import { Plugin } from 'esbuild' + +const RUNTIME_CODE_NS = 'pintora-runtime-code' + +export function makeESBuildNodePolyfillsPlugin(opts: { runtimeLibPath: string }) { + return { + name: 'ESBuildNodePolyfillsPlugin', + setup(build) { + build.onResolve({ filter: /virtual:pintora/ }, args => { + return { namespace: RUNTIME_CODE_NS, path: opts.runtimeLibPath } + }) + build.onLoad({ filter: /.*/, namespace: RUNTIME_CODE_NS }, args => { + const contents = fs.readFileSync(opts.runtimeLibPath) + return { + contents, + } + }) + }, + } as Plugin +} diff --git a/packages/pintora-target-wintercg/build/esbuild.ts b/packages/pintora-target-wintercg/build/esbuild.ts new file mode 100644 index 00000000..d0901001 --- /dev/null +++ b/packages/pintora-target-wintercg/build/esbuild.ts @@ -0,0 +1,53 @@ +import * as path from 'path' +import * as fs from 'fs' +import { build, BuildOptions } from 'esbuild' +import { ESBuildNodePolyfillsPlugin } from './ESBuildNodePolyfillsPlugin' + +const packageDir = path.resolve(__dirname, '..') +const aliasDir = path.resolve(__dirname, '../aliases') + +const runtimeOutFilePath = path.join(packageDir, 'dist/runtime.js') + +const options: BuildOptions = { + entryPoints: ['runtime/index.ts'], + bundle: true, + outfile: runtimeOutFilePath, + format: 'iife', + globalName: 'pintoraTarget', + // sourcemap: 'external', + treeShaking: true, + alias: { + canvas: path.join(aliasDir, 'canvas.js'), + fs: path.join(aliasDir, 'canvas.js'), + 'node:url': path.join(aliasDir, 'url.js'), + }, + plugins: [ESBuildNodePolyfillsPlugin], + loader: { + '.ttf': 'binary', + }, + write: true, +} + +build(options).then(afterLibEsbuild) + +async function afterLibEsbuild() { + console.log('afterLibEsbuild, generate platform code') + const plugBuild = await build({ + entryPoints: ['src/platforms/edge-handler.ts'], + bundle: true, + format: 'iife', + sourcemap: false, + write: false, + }) + const runtimeLibCode = fs.readFileSync(runtimeOutFilePath, 'utf-8').toString() + const outdir = path.join(packageDir, 'dist/platforms') + if (!fs.existsSync(outdir)) { + fs.mkdirSync(outdir) + } + const handlerCode = ` +${runtimeLibCode} +// separation +${plugBuild.outputFiles[0].text} + ` + fs.writeFileSync(path.join(packageDir, 'dist/platforms/edge-handler.js'), handlerCode) +} diff --git a/packages/pintora-target-wintercg/build/tsconfig.json b/packages/pintora-target-wintercg/build/tsconfig.json new file mode 100644 index 00000000..334987d1 --- /dev/null +++ b/packages/pintora-target-wintercg/build/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": ".", + "types": ["node"] + }, + "include": ["."] +} diff --git a/packages/pintora-target-wintercg/fonts/SourceCodePro-Medium.ttf b/packages/pintora-target-wintercg/fonts/SourceCodePro-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..492841d1b0227ecbc727f77bf48d1b69a729b5ac GIT binary patch literal 205728 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", + "homepage": "https://github.com/hikerpig/pintora#readme", + "types": "types/index.d.ts", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "files": [ + "dist", + "CHANGELOG.md", + "README.md" + ], + "dependencies": { + "@pintora/core": "workspace:*", + "@pintora/renderer": "workspace:*", + "@pintora/standalone": "workspace:*", + "edge-runtime": "^2.5.7", + "fontkit": "^2.0.2", + "happy-dom": "^12.10.3", + "jsdom": "^23.0.0", + "svgdom": "^0.1.19" + }, + "devDependencies": { + "@edge-runtime/types": "^2.2.7", + "@types/fontkit": "^2.0.6", + "@types/node": "^16.11.7", + "@types/svgdom": "^0.1.2", + "base64-js": "^1.5.1", + "buffer": "^6.0.3", + "esbuild": "^0.19.0", + "events": "^3.3.0", + "ieee754": "^1.2.1", + "inherits": "^2.0.4", + "path": "^0.12.7", + "path-browserify": "^1.0.1", + "punycode": "^2.3.1", + "readable-stream": "^3.5.0", + "signal-exit": "^4.1.0", + "stream": "^0.0.2", + "stream-browserify": "^3.0.0", + "ts-node": "^10.9.2", + "typescript": "^5.0.0", + "url": "^0.11.3", + "util": "^0.12.5" + } +} diff --git a/packages/pintora-target-wintercg/runtime/index.ts b/packages/pintora-target-wintercg/runtime/index.ts new file mode 100644 index 00000000..b34498ac --- /dev/null +++ b/packages/pintora-target-wintercg/runtime/index.ts @@ -0,0 +1,27 @@ +/** + * pintora target for wintercg, this module will be bundled into one file. It will be combined with other handler code runs inside edge runtime + */ +import { render, RuntimeRenderOptions } from './render' + +async function pintoraMain(opts: RuntimeRenderOptions) { + const svg = await render({ + ...opts, + code: + opts?.code || + ` + sequenceDiagram + @param messageFontSize 24 + autonumber + User->>Pintora: render this + `, + }) + // console.log('svg output', svg) + const pintoraOutput = { + type: 'svg', + data: svg, + } + return pintoraOutput +} + +// globalThis.pintoraMain = pintoraMain +export { pintoraMain } diff --git a/packages/pintora-target-wintercg/runtime/render.ts b/packages/pintora-target-wintercg/runtime/render.ts new file mode 100644 index 00000000..04065cac --- /dev/null +++ b/packages/pintora-target-wintercg/runtime/render.ts @@ -0,0 +1,118 @@ +import { RenderOptions, IRenderer } from '@pintora/renderer' +import { pintoraStandalone, PintoraConfig, DeepPartial } from '@pintora/standalone' +import './text-metric' +// import { Window } from 'happy-dom' +// import JSDOM from 'jsdom' +import { createHTMLWindow } from 'svgdom' + +export const DEFAUT_BGS = { + light: '#FFFFFF', + dark: '#282A36', +} + +export type RuntimeRenderOptions = { + /** + * pintora DSL to render + */ + code: string + devicePixelRatio?: number | null + mimeType?: string + /** + * Assign extra background color + */ + backgroundColor?: string + pintoraConfig?: DeepPartial + /** + * width of the output, height will be calculated according to the diagram content ratio + */ + width?: number +} + +// pintoraStandalone.setConfig({ +// core: { +// defaultFontFamily: 'sans-serif', +// }, +// }) + +function renderPrepare(opts: RuntimeRenderOptions) { + const { code, backgroundColor, pintoraConfig } = opts + const devicePixelRatio = opts.devicePixelRatio || 2 + // const dom = new JSDOM('') + // const dom = new Window() + + const window = createHTMLWindow() + const document = window.document + + const container = document.createElement('div') + container.id = 'pintora-container' + + const global = globalThis + + // setup the env for renderer + ;(global as any).document = document + ;(window as any).devicePixelRatio = devicePixelRatio + + return { + container, + pintorRender(renderOpts: Pick) { + let config = pintoraStandalone.getConfig() + if (pintoraConfig) { + config = pintoraStandalone.configApi.gnernateNewConfig(pintoraConfig) + } + + const containerSize = opts.width ? { width: opts.width } : undefined + if (opts.width) { + config = pintoraStandalone.configApi.gnernateNewConfig({ core: { useMaxWidth: true } }) + } + + return new Promise((resolve, reject) => { + pintoraStandalone.renderTo(code, { + container, + renderer: renderOpts.renderer || 'canvas', + containerSize, + enhanceGraphicIR(ir) { + if (!ir.bgColor) { + const themeVariables: Partial = + config.themeConfig.themeVariables || {} + const newBgColor = + backgroundColor || + themeVariables.canvasBackground || + (themeVariables.isDark ? DEFAUT_BGS.dark : DEFAUT_BGS.light) + ir.bgColor = newBgColor + } + return ir + }, + onRender(renderer) { + resolve(renderer) + }, + onError(e) { + console.error('onError', e) + reject(e) + }, + }) + }) + }, + } +} + +/** + * Renders the Pintora CLI options to the specified output format. + * @param opts - The CLIRenderOptions. + * @returns A promise that resolves to the rendered output. + */ +export function render(opts: RuntimeRenderOptions) { + const { pintorRender } = renderPrepare(opts) + + function renderToSvg() { + return new Promise((resolve, reject) => { + pintorRender({ renderer: 'svg' }) + .then(renderer => { + const rootElement = renderer.getRootElement() as SVGSVGElement + rootElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg') + resolve(rootElement.outerHTML) + }) + .catch(reject) + }) + } + return renderToSvg() +} diff --git a/packages/pintora-target-wintercg/runtime/text-metric.ts b/packages/pintora-target-wintercg/runtime/text-metric.ts new file mode 100644 index 00000000..91f2282b --- /dev/null +++ b/packages/pintora-target-wintercg/runtime/text-metric.ts @@ -0,0 +1,60 @@ +import { textMetrics, IFont, ITextMetricCalculator } from '@pintora/core' +import { Font, create } from 'fontkit' +import fontData from '../fonts/SourceCodePro-Medium.ttf' +import { Buffer } from 'buffer' + +const b = Buffer.from(fontData) +const defaultFont = create(b) +const fonts: Record = { + 'sans-serif': defaultFont, + 'Source Code Pro': defaultFont, +} + +class FontkitCalculator implements ITextMetricCalculator { + name = 'fontkit' + getLineMetric(text: string, fontConfig?: IFont) { + const fontSize = fontConfig?.fontSize || 14 + const fontName = fontConfig?.fontFamily || 'sans-serif' + const font = fonts[fontName] || defaultFont + const glyph = font.layout(text) + const sizeUnit = fontSize / font.unitsPerEm + // const width = glyph.glyphs.reduce((last, curr) => last + curr.cbox.width, 0) * sizeUnit + const width = glyph.bbox.width * sizeUnit // fine + + const glyphActualMaxHeight = glyph.glyphs.reduce((last, curr) => Math.max(last, curr.cbox.height), 0) * sizeUnit + const height = glyphActualMaxHeight + + const actualBoundingBoxAscent = height + // console.log('line:', text, 'width', width, 'actualBoundingBoxAscent', actualBoundingBoxAscent) + const actualBoundingBoxDescent = 0 + return { + actualBoundingBoxAscent, + actualBoundingBoxDescent, + width, + } + } + + calculateTextDimensions(text: string, font?: IFont) { + const lines = text.split('\n') + let width = 0 + let height = 0 + const fontSize = font?.fontSize || 14 + lines.forEach((line, i) => { + const lineMetric = this.getLineMetric(line, font) + const w = lineMetric.width + width = Math.max(w, width) + let lineHeight = fontSize + if ('actualBoundingBoxDescent' in lineMetric) { + lineHeight = lineMetric.actualBoundingBoxAscent + lineMetric.actualBoundingBoxDescent + } + height += lineHeight + }) + // console.log('[fontkit] text dimensions:', text, width, height) + return { + width, + height, + } + } +} + +textMetrics.setImpl(new FontkitCalculator()) diff --git a/packages/pintora-target-wintercg/runtime/tsconfig.json b/packages/pintora-target-wintercg/runtime/tsconfig.json new file mode 100644 index 00000000..334987d1 --- /dev/null +++ b/packages/pintora-target-wintercg/runtime/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": ".", + "types": ["node"] + }, + "include": ["."] +} diff --git a/packages/pintora-target-wintercg/src/edge-runtime-pintora.ts b/packages/pintora-target-wintercg/src/edge-runtime-pintora.ts new file mode 100644 index 00000000..dbfac1cf --- /dev/null +++ b/packages/pintora-target-wintercg/src/edge-runtime-pintora.ts @@ -0,0 +1,32 @@ +// test edge runtime +// node lib/edge-runtime-server.js +import { EdgeRuntime } from 'edge-runtime' +import * as fs from 'fs' +import * as path from 'path' +import type { PintoraTarget } from '../types' + +const runtime = new EdgeRuntime() + +const dir = __dirname +async function main() { + const runtimeCode = fs.readFileSync(path.join(dir, '../dist/platforms/edge-handler.js'), 'utf-8').toString() + + const codeToRun = ` +${runtimeCode} +` + await runtime.evaluate(codeToRun) + // console.log('runtime context', runtime.context) + const target: PintoraTarget = runtime.context.pintoraTarget + + let pintoraDsl = '' + const inputFilePath = process.argv[2] + if (inputFilePath) { + pintoraDsl = fs.readFileSync(inputFilePath, 'utf-8').toString() + } + const output = await target.pintoraMain({ + code: pintoraDsl, + }) + fs.writeFileSync('test.svg', output.data) +} + +main() diff --git a/packages/pintora-target-wintercg/src/edge-runtime-server.ts b/packages/pintora-target-wintercg/src/edge-runtime-server.ts new file mode 100644 index 00000000..292acd2f --- /dev/null +++ b/packages/pintora-target-wintercg/src/edge-runtime-server.ts @@ -0,0 +1,21 @@ +import { EdgeRuntime, runServer } from 'edge-runtime' +import { onExit } from 'signal-exit' +import * as fs from 'fs' +import * as path from 'path' + +const dir = __dirname + +async function main() { + const initialCode = fs.readFileSync(path.join(dir, '../dist/platforms/edge-handler.js'), 'utf-8').toString() + + const edgeRuntime = new EdgeRuntime({ initialCode }) + + const server = await runServer({ runtime: edgeRuntime, port: 9000 }) + console.log(`> Edge server running at ${server.url}`) + onExit(() => { + server.close() + return + }) +} + +main() diff --git a/packages/pintora-target-wintercg/src/node-pintora.ts b/packages/pintora-target-wintercg/src/node-pintora.ts new file mode 100644 index 00000000..83c92f00 --- /dev/null +++ b/packages/pintora-target-wintercg/src/node-pintora.ts @@ -0,0 +1,29 @@ +import { runInThisContext } from 'vm' +import * as fs from 'fs' +import * as path from 'path' +import type { PintoraTarget } from '../types' + +const dir = __dirname + +async function main() { + const runtimeCode = fs.readFileSync(path.join(dir, '../dist/runtime.js'), 'utf-8').toString() + const codeToRun = runtimeCode + + if (process.env.DEBUG_CODE === 'true') { + fs.writeFileSync(path.join(process.cwd(), 'dist/code-to-run.js'), codeToRun) + } + await runInThisContext(codeToRun) + const target = pintoraTarget as PintoraTarget + let pintoraDsl = '' + const inputFilePath = process.argv[2] + if (inputFilePath) { + pintoraDsl = fs.readFileSync(inputFilePath, 'utf-8').toString() + } + // console.log('code is', pintoraDsl) + const output = await target.pintoraMain({ + code: pintoraDsl, + }) + fs.writeFileSync('test.svg', output.data) +} + +main() diff --git a/packages/pintora-target-wintercg/src/platforms/edge-handler.ts b/packages/pintora-target-wintercg/src/platforms/edge-handler.ts new file mode 100644 index 00000000..e7be72a6 --- /dev/null +++ b/packages/pintora-target-wintercg/src/platforms/edge-handler.ts @@ -0,0 +1,27 @@ +// this module runs inside edge runtime, and pintoraTarget will be prepended by bundler +/* eslint-disable @typescript-eslint/triple-slash-reference */ +/// + +const target = pintoraTarget + +addEventListener('fetch', async event => { + const requestText = await event.request.text() + + const code = + requestText || + ` + sequenceDiagram + title: Sequence Diagram Example + autonumber + User->>Pintora: render this + ` + const result = await target.pintoraMain({ + code, + }) + const response = new Response(result.data, { + headers: { + 'Content-Type': 'image/svg+xml', + }, + }) + return event.respondWith(response) +}) diff --git a/packages/pintora-target-wintercg/tsconfig.json b/packages/pintora-target-wintercg/tsconfig.json new file mode 100644 index 00000000..3b761c2a --- /dev/null +++ b/packages/pintora-target-wintercg/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "lib", + "strict": false, + "checkJs": true, + "allowJs": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": false, + "module": "CommonJS", + "target": "esnext", + "esModuleInterop": false, + "types": ["@edge-runtime/types", "node", "svgdom"] + }, + "references": [ + { "path": "../pintora-standalone" }, + { "path": "../pintora-core" } + ], + "include": [ + "./src/**/*", + "./types/*" + ] +} diff --git a/packages/pintora-target-wintercg/types/index.d.ts b/packages/pintora-target-wintercg/types/index.d.ts new file mode 100644 index 00000000..91f435f0 --- /dev/null +++ b/packages/pintora-target-wintercg/types/index.d.ts @@ -0,0 +1,30 @@ +export type RuntimeRenderOptions = { + /** + * pintora DSL to render + */ + code: string + devicePixelRatio?: number | null + mimeType?: string + /** + * Assign extra background color + */ + backgroundColor?: string + // pintoraConfig?: DeepPartial + /** + * width of the output, height will be calculated according to the diagram content ratio + */ + width?: number +} + +export type PintoraTarget = { + pintoraMain(opts: RuntimeRenderOptions): Promise<{ + type: string + data: any + }> +} + +export const pintoraTarget: PintoraTarget + +declare global { + export const pintoraTarget: PintoraTarget +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ceed604..dcf21435 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -439,6 +439,97 @@ importers: specifier: ^5.0.0 version: 5.2.2 + packages/pintora-target-wintercg: + dependencies: + '@pintora/core': + specifier: workspace:* + version: link:../pintora-core + '@pintora/renderer': + specifier: workspace:* + version: link:../pintora-renderer + '@pintora/standalone': + specifier: workspace:* + version: link:../pintora-standalone + edge-runtime: + specifier: ^2.5.7 + version: 2.5.7 + fontkit: + specifier: ^2.0.2 + version: 2.0.2 + happy-dom: + specifier: ^12.10.3 + version: 12.10.3 + jsdom: + specifier: ^23.0.0 + version: 23.0.1(canvas@2.11.2) + svgdom: + specifier: ^0.1.19 + version: 0.1.19 + devDependencies: + '@edge-runtime/types': + specifier: ^2.2.7 + version: 2.2.7 + '@types/fontkit': + specifier: ^2.0.6 + version: 2.0.6 + '@types/node': + specifier: ^16.11.7 + version: 16.11.39 + '@types/svgdom': + specifier: ^0.1.2 + version: 0.1.2 + base64-js: + specifier: ^1.5.1 + version: 1.5.1 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + esbuild: + specifier: ^0.19.0 + version: 0.19.11 + events: + specifier: ^3.3.0 + version: 3.3.0 + ieee754: + specifier: ^1.2.1 + version: 1.2.1 + inherits: + specifier: ^2.0.4 + version: 2.0.4 + path: + specifier: ^0.12.7 + version: 0.12.7 + path-browserify: + specifier: ^1.0.1 + version: 1.0.1 + punycode: + specifier: ^2.3.1 + version: 2.3.1 + readable-stream: + specifier: ^3.5.0 + version: 3.6.2 + signal-exit: + specifier: ^4.1.0 + version: 4.1.0 + stream: + specifier: ^0.0.2 + version: 0.0.2 + stream-browserify: + specifier: ^3.0.0 + version: 3.0.0 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@16.11.39)(typescript@5.2.2) + typescript: + specifier: ^5.0.0 + version: 5.2.2 + url: + specifier: ^0.11.3 + version: 0.11.3 + util: + specifier: ^0.12.5 + version: 0.12.5 + packages/test-shared: {} website: @@ -3261,6 +3352,13 @@ packages: requiresBuild: true optional: true + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + /@cypress/request@3.0.1: resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} engines: {node: '>= 6'} @@ -4089,6 +4187,34 @@ packages: - webpack-cli dev: false + /@edge-runtime/format@2.2.0: + resolution: {integrity: sha512-gPrS6AVw/qJJL0vcxMXv4kFXCU3ZTCD1uuJpwX15YxHV8BgU9OG5v9LrkkXcr96PBT/9epypfNJMhlWADuEziw==} + engines: {node: '>=16'} + dev: false + + /@edge-runtime/ponyfill@2.4.1: + resolution: {integrity: sha512-ZbR/EViY3gg2rmEAQTKPa6mXl4aR1/+cFcQe4r1segCjEbTAxT6PWu40odbu/KlZKSysEb2O/BWIC2lJgSJOMQ==} + engines: {node: '>=16'} + dev: false + + /@edge-runtime/primitives@4.0.5: + resolution: {integrity: sha512-t7QiN5d/KpXgCvIfSt6Nm9Hj3WVdNgc5CpOD73jasY+9EvTI7Ngdj5cXvjcHrPcmYWJZMySPgeEeoL/1N/Llag==} + engines: {node: '>=16'} + + /@edge-runtime/types@2.2.7: + resolution: {integrity: sha512-9MTwGooICP7+ZsX9BTy6YCRzOr4tP6RFRymsc8CaKORfvuAHgLZUQaLwILfQ94tddufVXcBwq637VfEd3ZXbWA==} + engines: {node: '>=16'} + dependencies: + '@edge-runtime/primitives': 4.0.5 + dev: true + + /@edge-runtime/vm@3.1.7: + resolution: {integrity: sha512-hUMFbDQ/nZN+1TLMi6iMO1QFz9RSV8yGG8S42WFPFma1d7VSNE0eMdJUmwjmtav22/iQkzHMmu6oTSfAvRGS8g==} + engines: {node: '>=16'} + dependencies: + '@edge-runtime/primitives': 4.0.5 + dev: false + /@esbuild/aix-ppc64@0.19.11: resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} @@ -4950,7 +5076,7 @@ packages: resolution: {integrity: sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.15 + '@jridgewell/trace-mapping': 0.3.20 callsites: 3.1.0 graceful-fs: 4.2.10 dev: true @@ -5100,6 +5226,13 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + /@leichtgewicht/ip-codec@2.0.3: resolution: {integrity: sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==} dev: false @@ -6027,6 +6160,19 @@ packages: - typescript dev: false + /@swc/helpers@0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.4.36: + resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==} + dependencies: + legacy-swc-helpers: /@swc/helpers@0.4.14 + tslib: 2.6.2 + dev: false + /@szmarczak/http-timer@5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -6052,6 +6198,22 @@ packages: resolution: {integrity: sha512-12HWfYmgUl4M2o76/TFufGtI68wl2k/b8qPrIrG7ci9YJLrpAtadpy897Bz5v29Mlkr7a1Hq4KHdQTKtU+2rhQ==} dev: true + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: @@ -6218,6 +6380,12 @@ packages: '@types/serve-static': 1.13.10 dev: false + /@types/fontkit@2.0.6: + resolution: {integrity: sha512-GxeaJay2RidoCWRDogp2CRttkv0weLwrB7hC+Qmh0mCdW1g0aEVwlLA6kLv5ZDJ6hGZSEiGZG7r57MgAD+fWOg==} + dependencies: + '@types/node': 16.11.39 + dev: true + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: @@ -6286,7 +6454,7 @@ packages: /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.0.5 + '@types/node': 16.11.39 '@types/tough-cookie': 4.0.1 parse5: 7.0.0 dev: true @@ -6351,10 +6519,6 @@ packages: resolution: {integrity: sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==} dev: false - /@types/node@18.0.5: - resolution: {integrity: sha512-En7tneq+j0qAiVwysBD79y86MT3ModuoIJbe7JXp+sb5UAjInSShmK3nXXMioBzfF7rXC12hv12d4IyCVwN4dA==} - dev: true - /@types/node@18.18.6: resolution: {integrity: sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==} dev: true @@ -6493,6 +6657,10 @@ packages: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true + /@types/svgdom@0.1.2: + resolution: {integrity: sha512-ZFwX8cDhbz6jiv3JZdMVYq8SSWHOUchChPmRoMwdIu3lz89aCu/gVK9TdR1eeb0ARQ8+5rtjUKrk1UR8hh0dhQ==} + dev: true + /@types/throttle-debounce@5.0.0: resolution: {integrity: sha512-Pb7k35iCGFcGPECoNE4DYp3Oyf2xcTd3FbFQxXUI9hEYKUl6YX+KLf7HrBmgVcD05nl50LIH6i+80js4iYmWbw==} dev: true @@ -6866,7 +7034,6 @@ packages: /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: false /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} @@ -7092,9 +7259,13 @@ packages: engines: {node: '>=10'} dependencies: delegates: 1.0.0 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: false + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -7184,6 +7355,11 @@ packages: hasBin: true dev: false + /async-listen@3.0.1: + resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==} + engines: {node: '>= 14'} + dev: false + /async@0.9.2: resolution: {integrity: sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==} dev: true @@ -7240,6 +7416,11 @@ packages: postcss: 8.4.32 postcss-value-parser: 4.2.0 + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + /aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true @@ -7491,7 +7672,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true /base@0.11.2: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} @@ -7660,6 +7840,12 @@ packages: duplexer: 0.1.1 dev: true + /brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + dependencies: + base64-js: 1.5.1 + dev: false + /browser-fs-access@0.31.0: resolution: {integrity: sha512-OndIM5LkmHfx01D3YuVvPpW3fochBeXFS3yhDzcD/Yk7S3lx5RZGltnf7xwbr5V0B8XuN2becZmtceOQFZgQPw==} dev: false @@ -7708,6 +7894,13 @@ packages: ieee754: 1.2.1 dev: true + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + /builtin-modules@3.2.0: resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} engines: {node: '>=6'} @@ -7774,6 +7967,13 @@ packages: function-bind: 1.1.1 get-intrinsic: 1.1.2 + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -8096,6 +8296,11 @@ packages: engines: {node: '>=0.8'} dev: true + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: false + /clsx@1.1.1: resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} engines: {node: '>=6'} @@ -8329,6 +8534,11 @@ packages: engines: {node: '>= 0.6'} dev: false + /convert-hrtime@3.0.0: + resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==} + engines: {node: '>=8'} + dev: false + /convert-source-map@1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: @@ -8435,6 +8645,10 @@ packages: path-type: 4.0.0 typescript: 5.2.2 + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + /crelt@1.0.5: resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} dev: false @@ -8590,6 +8804,10 @@ packages: engines: {node: '>= 6'} dev: false + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: false + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -9043,6 +9261,14 @@ packages: engines: {node: '>=10'} dev: false + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -9200,6 +9426,10 @@ packages: dequal: 2.0.3 dev: false + /dfa@1.2.0: + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true @@ -9209,6 +9439,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -9342,6 +9577,22 @@ packages: safer-buffer: 2.1.2 dev: true + /edge-runtime@2.5.7: + resolution: {integrity: sha512-gA4qSVP0sNwJlkdQ2nahDPASlSl8twUd17o+JolPa1EtXpLTGzIpOETvodgJwXIxa+zaD8bnAXCdsWrx2PhlVQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@edge-runtime/format': 2.2.0 + '@edge-runtime/ponyfill': 2.4.1 + '@edge-runtime/vm': 3.1.7 + async-listen: 3.0.1 + mri: 1.2.0 + picocolors: 1.0.0 + pretty-ms: 7.0.1 + signal-exit: 4.0.2 + time-span: 4.0.0 + dev: false + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false @@ -9360,6 +9611,10 @@ packages: /electron-to-chromium@1.4.582: resolution: {integrity: sha512-89o0MGoocwYbzqUUjc+VNpeOFSOK9nIdC5wY4N+PVUarUK0MtjyTjks75AZS2bW4Kl8MdewdFsWaH0jLy+JNoA==} + /emitter-component@1.1.2: + resolution: {integrity: sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==} + dev: true + /emittery@0.10.2: resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} engines: {node: '>=12'} @@ -10582,6 +10837,26 @@ packages: dependencies: debug: 4.3.4(supports-color@8.1.1) + /fontkit@2.0.2: + resolution: {integrity: sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==} + dependencies: + '@swc/helpers': 0.4.36 + brotli: 1.3.3 + clone: 2.1.2 + dfa: 1.2.0 + fast-deep-equal: 3.1.3 + restructure: 3.0.0 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.4 + dev: true + /for-in@1.0.2: resolution: {integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=} engines: {node: '>=0.10.0'} @@ -10755,6 +11030,9 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} @@ -10810,6 +11088,14 @@ packages: has: 1.0.3 has-symbols: 1.0.3 + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + /get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -10986,6 +11272,11 @@ packages: csstype: 3.1.0 dev: false + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + /got@12.6.1: resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} @@ -11040,6 +11331,17 @@ packages: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: false + /happy-dom@12.10.3: + resolution: {integrity: sha512-JzUXOh0wdNGY54oKng5hliuBkq/+aT1V3YpTM+lrN/GoLQTANZsMaIvmHiHe612rauHvPJnDZkZ+5GZR++1Abg==} + dependencies: + css.escape: 1.5.1 + entities: 4.5.0 + iconv-lite: 0.6.3 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + dev: false + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -11068,7 +11370,10 @@ packages: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.2 - dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} /has-symbols@1.0.2: resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} @@ -11131,6 +11436,12 @@ packages: dependencies: function-bind: 1.1.1 + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + /hast-to-hyperscript@9.0.1: resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} dependencies: @@ -11728,7 +12039,6 @@ packages: /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: false /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -11819,6 +12129,14 @@ packages: is-decimal: 2.0.1 dev: false + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -11968,6 +12286,13 @@ packages: engines: {node: '>=6'} dev: true + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -12151,6 +12476,13 @@ packages: has-symbols: 1.0.3 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 + dev: true + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -12420,7 +12752,7 @@ packages: '@jest/fake-timers': 29.0.1 '@jest/types': 29.0.1 '@types/jsdom': 20.0.0 - '@types/node': 18.0.5 + '@types/node': 16.11.39 jest-mock: 29.0.1 jest-util: 29.0.1 jsdom: 20.0.0 @@ -13363,6 +13695,10 @@ packages: dependencies: semver: 6.3.1 + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: @@ -14360,7 +14696,6 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - dev: true /mrmime@1.0.0: resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==} @@ -14833,6 +15168,10 @@ packages: semver: 7.5.4 dev: false + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: false + /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: @@ -14879,6 +15218,11 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + /parse-ms@2.1.0: + resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} + engines: {node: '>=6'} + dev: false + /parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} @@ -14928,7 +15272,6 @@ packages: /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: false /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} @@ -14999,6 +15342,13 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + dependencies: + process: 0.11.10 + util: 0.10.4 + dev: true + /pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: @@ -15617,6 +15967,13 @@ packages: react-is: 18.2.0 dev: true + /pretty-ms@7.0.1: + resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} + engines: {node: '>=10'} + dependencies: + parse-ms: 2.1.0 + dev: false + /pretty-time@1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} @@ -15729,10 +16086,6 @@ packages: /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -15758,6 +16111,13 @@ packages: side-channel: 1.0.4 dev: true + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -16109,14 +16469,13 @@ packages: util-deprecate: 1.0.2 dev: false - /readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -16526,6 +16885,10 @@ packages: signal-exit: 3.0.7 dev: true + /restructure@3.0.0: + resolution: {integrity: sha512-Xj8/MEIhhfj9X2rmD9iJ4Gga9EFqVlpMj3vfLnV2r/Mh5jRMryNV+6lWh9GdJtDBcBSPIqzRdfBQ3wDtNFv/uw==} + dev: false + /ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} @@ -16925,6 +17288,15 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + /set-value@2.0.1: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} @@ -17003,13 +17375,18 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.2 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 object-inspect: 1.12.2 /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.0.2: + resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} + engines: {node: '>=14'} + dev: false + /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -17272,7 +17649,7 @@ packages: detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 - readable-stream: 3.6.0 + readable-stream: 3.6.2 wbuf: 1.7.3 transitivePeerDependencies: - supports-color @@ -17382,6 +17759,13 @@ packages: resolution: {integrity: sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==} dev: false + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: @@ -17400,6 +17784,12 @@ packages: mixme: 0.5.4 dev: true + /stream@0.0.2: + resolution: {integrity: sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==} + dependencies: + emitter-component: 1.1.2 + dev: true + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -17481,7 +17871,6 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: false /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} @@ -17653,6 +18042,14 @@ packages: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: false + /svgdom@0.1.19: + resolution: {integrity: sha512-gBvlZ74RECaG9VyPrj9OdakOarEKKvaXh5NVkbx9oWfAo4XnQehk75b14iOW2UjFHyZThczZ1NrPV9rDrecOVg==} + dependencies: + fontkit: 2.0.2 + image-size: 1.0.2 + sax: 1.2.4 + dev: false + /svgo@2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} engines: {node: '>=10.13.0'} @@ -17849,6 +18246,13 @@ packages: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: false + /time-span@4.0.0: + resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==} + engines: {node: '>=10'} + dependencies: + convert-hrtime: 3.0.0 + dev: false + /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: @@ -17856,6 +18260,10 @@ packages: globrex: 0.1.2 dev: true + /tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + dev: false + /tiny-invariant@1.2.0: resolution: {integrity: sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==} dev: false @@ -17941,7 +18349,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.8.0 - punycode: 2.1.1 + punycode: 2.3.1 universalify: 0.1.2 dev: true @@ -17950,7 +18358,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.8.0 - punycode: 2.1.1 + punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 @@ -17967,7 +18375,7 @@ packages: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: - punycode: 2.1.1 + punycode: 2.3.1 dev: true /tr46@5.0.0: @@ -18012,6 +18420,37 @@ packages: typescript: 5.2.2 dev: true + /ts-node@10.9.2(@types/node@16.11.39)(typescript@5.2.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 16.11.39 + acorn: 8.11.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfck@2.1.2(typescript@5.2.2): resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} engines: {node: ^14.13.1 || ^16 || >=18} @@ -18325,10 +18764,24 @@ packages: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} + /unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + dev: false + /unicode-property-aliases-ecmascript@2.0.0: resolution: {integrity: sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==} engines: {node: '>=4'} + /unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + dev: false + /unified@11.0.4: resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} dependencies: @@ -18551,7 +19004,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.1 /urix@0.1.0: resolution: {integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=} @@ -18581,6 +19034,13 @@ packages: querystringify: 2.2.0 requires-port: 1.0.0 + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + dependencies: + punycode: 1.4.1 + qs: 6.11.2 + dev: true + /urlgrey@1.0.0: resolution: {integrity: sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==} dependencies: @@ -18611,6 +19071,22 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + dependencies: + inherits: 2.0.3 + dev: true + + /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.12 + which-typed-array: 1.1.13 + dev: true + /utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} dev: false @@ -18628,11 +19104,15 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.15 + '@jridgewell/trace-mapping': 0.3.20 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 dev: true @@ -19028,7 +19508,6 @@ packages: engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 - dev: true /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} @@ -19040,7 +19519,6 @@ packages: /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} - dev: true /whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} @@ -19099,6 +19577,17 @@ 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.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -19502,6 +19991,11 @@ packages: fd-slicer: 1.1.0 dev: true + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'}