diff --git a/__mocks__/railroadRenderer.js b/__mocks__/railroadRenderer.js new file mode 100644 index 0000000000..cf0c9dcfac --- /dev/null +++ b/__mocks__/railroadRenderer.js @@ -0,0 +1,13 @@ +/** + * Mocked Railroad diagram renderer + */ + +import { vi } from 'vitest'; + +export const draw = vi.fn().mockImplementation(() => { + return ''; +}); + +export default { + draw, +}; diff --git a/cypress/integration/rendering/railroad.spec.ts b/cypress/integration/rendering/railroad.spec.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/demos/dev/example.html b/demos/dev/example.html index 27d31e177a..9f274db012 100644 --- a/demos/dev/example.html +++ b/demos/dev/example.html @@ -21,6 +21,8 @@ +

Mermaid development page

+

Static diagram example

 graph TB
       a --> b
@@ -30,11 +32,13 @@
     

+

Dynamic diagram example

Type code to view diagram:
+
info
diff --git a/demos/index.html b/demos/index.html index 61a86a2aa0..1cac82c30e 100644 --- a/demos/index.html +++ b/demos/index.html @@ -7,7 +7,6 @@ @@ -88,6 +87,9 @@

Packet

  • Layered Blocks

  • +
  • +

    Railroad

    +
  • diff --git a/demos/railroad.html b/demos/railroad.html new file mode 100644 index 0000000000..1939b15d13 --- /dev/null +++ b/demos/railroad.html @@ -0,0 +1,60 @@ + + + + + + Railroad Mermaid Quick Test Page + + + + + +

    Railroad diagram demos

    +

    Example

    +
    +      railroad-beta
    +
    +      commandline ::= list
    +      |  list ";"
    +      |  list "&"
    +      ;
    +      
    +      list     ::=  conditional
    +      |   list ";" conditional
    +      |   list "&" conditional
    +      ;
    +      
    +      conditional ::=  pipeline
    +      |   conditional "&&" pipeline
    +      |   conditional "||" pipeline
    +      ;
    +      
    +      pipeline ::=  command
    +      |   pipeline "|" command
    +      ;
    +      
    +      command  ::=  word
    +      |   redirection
    +      |   command word
    +      |   command redirection
    +      ;
    +      
    +      redirection  ::=  redirectionop filename;
    +      redirectionop  ::=  "<"  |  ">"  |  "2>";
    +    
    + + + + diff --git a/docker-compose.yml b/docker-compose.yml index d591073e8f..6c378b3196 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.9' services: mermaid: build: @@ -8,7 +7,7 @@ services: tty: true working_dir: /mermaid mem_limit: '8G' - entrypoint: docker-entrypoint.sh + entrypoint: ./docker-entrypoint.sh environment: - NODE_OPTIONS=--max_old_space_size=8192 volumes: diff --git a/packages/mermaid/scripts/create-types-from-json-schema.mts b/packages/mermaid/scripts/create-types-from-json-schema.mts index 57b0668129..6627537f78 100644 --- a/packages/mermaid/scripts/create-types-from-json-schema.mts +++ b/packages/mermaid/scripts/create-types-from-json-schema.mts @@ -127,7 +127,6 @@ async function generateTypescript(mermaidConfigSchema: JSONSchemaType { return [key, removeRequired(replaceAllOfWithExtends(subSchema))]; diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 19e5bae723..00dc562b1c 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -46,6 +46,15 @@ export type SankeyLinkColor = 'source' | 'target' | 'gradient'; * via the `definition` "SankeyNodeAlignment". */ export type SankeyNodeAlignment = 'left' | 'right' | 'center' | 'justify'; +export type RailroadDiagramFormat = RailroadDiagramFormat; +/** + * Shapes of the first and the last state in the diagram + * + * + * This interface was referenced by `MermaidConfig`'s JSON-Schema + * via the `definition` "RailroadDiagramBoundaryShape". + */ +export type RailroadDiagramBoundaryShape = 'dot' | 'circle' | 'forward' | 'backward'; /** * Configuration options to pass to the `dompurify` library. */ @@ -161,6 +170,7 @@ export interface MermaidConfig { gitGraph?: GitGraphDiagramConfig; c4?: C4DiagramConfig; sankey?: SankeyDiagramConfig; + railroad?: RailroadDiagramConfig; packet?: PacketDiagramConfig; block?: BlockDiagramConfig; dompurifyConfig?: DOMPurifyConfiguration; @@ -1422,6 +1432,62 @@ export interface SankeyDiagramConfig extends BaseDiagramConfig { */ suffix?: string; } +/** + * The object containing configurations specific for railroad diagrams. + * + * This interface was referenced by `MermaidConfig`'s JSON-Schema + * via the `definition` "RailroadDiagramConfig". + */ +export interface RailroadDiagramConfig extends BaseDiagramConfig { + alignment?: 'left' | 'right' | 'center' | 'justify'; + verticalAlignment?: 'top' | 'bottom' | 'center' | 'justify'; + /** + * Wrap long grammars similarly to wrapping long lines + * + */ + wrapDiagram?: boolean; + /** + * Specify which standart would be applied + * + */ + syntax?: 'mermaid' | 'w3c' | 'iso'; + /** + * Compress rules to get the smallest possible diagram + * + */ + compress?: boolean; + /** + * List of things to render + * + */ + render?: ('railroad' | 'ebnf' | 'bnf' | 'dfa' | 'nfa')[]; + format?: RailroadDiagramFormat; + drawArrows?: boolean; + inline?: boolean; + inlineItems?: string[]; + /** + * Name of the initial rule in grammar + * First rule will be initial if it is null + * + */ + start?: string | null; + shapes?: { + terminal?: string; + non_terminal?: string; + /** + * Shape or list of shapes for the start element + * They will be applied in the order of occurrence + * + */ + start?: RailroadDiagramBoundaryShape[] | RailroadDiagramBoundaryShape; + /** + * Shape or list of shapes for the end element + * They will be applied in the order of occurrence + * + */ + end?: RailroadDiagramBoundaryShape[] | RailroadDiagramBoundaryShape; + }; +} /** * The object containing configurations specific for packet diagrams. * @@ -1463,6 +1529,22 @@ export interface PacketDiagramConfig extends BaseDiagramConfig { export interface BlockDiagramConfig extends BaseDiagramConfig { padding?: number; } +/** + * This interface was referenced by `MermaidConfig`'s JSON-Schema + * via the `definition` "RailroadDiagramFormat". + */ +export interface RailroadDiagramFormat1 { + /** + * Force angular brackets around non-terminal symbols + * + */ + forceAngleBrackets?: boolean; + /** + * Force comma as a concatenation symbol in the rule definition + * + */ + forceComma?: boolean; +} /** * This interface was referenced by `MermaidConfig`'s JSON-Schema * via the `definition` "FontConfig". diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 76a8152b7a..f06fa12e00 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -260,6 +260,10 @@ const config: RequiredDeep = { packet: { ...defaultConfigJson.packet, }, + railroad: { + ...defaultConfigJson.railroad, + useMaxWidth: true, + }, }; const keyify = (obj: any, prefix = ''): string[] => diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.ts index 55d05c9aaa..60f984eda6 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.ts @@ -24,6 +24,7 @@ import { packet } from '../diagrams/packet/detector.js'; import block from '../diagrams/block/blockDetector.js'; import { registerLazyLoadedDiagrams } from './detectType.js'; import { registerDiagram } from './diagramAPI.js'; +import { railroad } from '../diagrams/railroad/railroadDetector.js'; let hasLoadedDiagrams = false; export const addDiagrams = () => { @@ -88,6 +89,7 @@ export const addDiagrams = () => { journey, quadrantChart, sankey, + railroad, packet, xychart, block diff --git a/packages/mermaid/src/diagrams/railroad/railroad.spec.ts b/packages/mermaid/src/diagrams/railroad/railroad.spec.ts new file mode 100644 index 0000000000..994fdba392 --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroad.spec.ts @@ -0,0 +1,269 @@ +// @ts-ignore: jison doesn't export types +import railroad from './railroadGrammar.jison'; +// import { prepareTextForParsing } from '../railroadUtils.js'; +import { cleanupComments } from '../../diagram-api/comments.js'; +import { db, Rule } from './railroadDB.js'; +// @ts-ignore: yaml does not export types +import defaultConfigJson from '../../schemas/config.schema.yaml?only-defaults=true'; + +describe('Railroad diagram', function () { + beforeAll(() => { + console.log(defaultConfigJson); + + railroad.yy = db; + }); + + afterEach(() => { + railroad.yy.clear(); + }); + + describe('fails to parse', () => { + test.each([ + ['', 'keyword is missing'], + ['rule', 'assign operator is missing'], + ['rule==id', 'assign operator is wrong'], + ['rule=id', 'semicolon is missing'], + ['rule=(id;', 'parentheses are unbalanced'], + ['rule=(id));', 'parentheses are unbalanced'], + ["' ::= x;", 'rule is with quote is not wrapped in <>'], + ["rule ::= ';", 'quote in rule definition is not wrapped in <>'], + ])('`%s` where %s', (grammar: string) => { + grammar = cleanupComments('' + grammar); + expect(() => railroad.parser.parse(grammar)).toThrow(); + }); + }); + + describe('parses', () => { + describe('assignment operators', () => { + // const grammarDefinition = prepareTextForParsing(cleanupComments('railroad-beta\n\n ' + data)); + test.each([ + ['rule ::= id;'], + ['rule := id;'], + ['rule : id;'], + ['rule => id;'], + ['rule = id;'], + ['rule -> id;'], + ])('`%s`', (grammar: string) => { + grammar = cleanupComments('railroad-beta' + grammar); + const grammarWithoutSpaces = grammar.replaceAll(' ', ''); + expect(() => railroad.parser.parse(grammar)).not.toThrow(); + expect(() => railroad.parser.parse(grammarWithoutSpaces)).not.toThrow(); + }); + }); + + describe('rules names', () => { + // const grammarDefinition = prepareTextForParsing(cleanupComments('railroad-beta\n\n ' + data)); + test.each([ + ['rule::=id;'], + ['::=id ;'], + ['::=id;'], + [`::=id;`], + [`::=id;`], + [`>::=id;`], + [` \\\\ \\x>::=id;`], + ])('`%s` produces', (grammar: string) => { + grammar = cleanupComments('railroad-beta' + grammar); + railroad.parser.parse(grammar); + const x = railroad.yy.getRules() as Rule[]; + console.log(x.map((r) => r.toEBNF())); + // expect(() => { railroad.parser.parse(grammar); }).not.toThrow(); + // railroad.parser.parse(grammar); + }); + }); + + describe('simple samples', () => { + // const grammarDefinition = prepareTextForParsing(cleanupComments('railroad-beta\n\n ' + data)); + test.each([ + [''], + ['rule::=id;'], + ['rule::=(id);'], + ['rule::=id-id;'], + ['rule::=[id];'], + ['rule::={id};'], + ['rule::=id|id;'], + ['rule::=(id|id);'], + ['rule::=[id|id];'], + ['rule::={id|id};'], + ['rule = "\'term term\'";'], + ['rule = \'"term term"\';'], + ['rule = "";'], + ['list = element list | ;'], + ['list = element, list | ;'], + ['expression = term { "a" term } .'], + [" ::= 'while';"], + ["<'> ::= <'>;"], + ['<"> ::= <"">;'], + [" ::= 'while' '(' ')' ;"], + [" ::= 'while' '(' ')' ;"], + ])('`%s` produces', (grammar: string) => { + grammar = cleanupComments('railroad-beta' + grammar); + railroad.parser.parse(grammar); + const x = railroad.yy.getRules() as Rule[]; + console.log(x.map((r) => r.toEBNF())); + // expect(() => { railroad.parser.parse(grammar); }).not.toThrow(); + // railroad.parser.parse(grammar); + }); + }); + + describe('compresses AST properly', () => { + test.each([ + ['sample = ;'], + ['sample = "one";'], + ['sample = "one"|"two";'], + ['sample = "one"|"two"|;'], + ['sample = ("one");'], + ['sample = (("one"));'], + ['sample = ("one")|("two");'], + ['sample = ("one"|"two")|("three"|"four");'], + ['sample = (("one"|"two")|("three"|"four"))|;'], + ['sample = "one"|("two"|"three")|"four","five";'], + ['sample = "one",("two"|"three"),"four";'], + ['sample = "one",("two","three");'], + ])('%s', (grammar: string) => { + grammar = cleanupComments('railroad-beta' + grammar); + // expect(() => railroad.parser.parse(grammar)).not.toThrow(); + railroad.parser.parse(grammar); + }); + }); + }); + + describe('recognizes', function () { + it('Arithmetic Expressions', () => { + const grammar = ` + railroad-beta + calc = expr calc | ; + expression = term { ('+' | "-") term } . + term = factor ( ("*"|"/"|"%") factor )* . + factor = constant | variable | "(" expression ")" . + variable = "x" | (("y" | "z")) . + constant = digit+ . + digit = "0" | "1" | "2" | "3" | "4" | "5" | "..." | "9" . + `; + // expect(() => railroad.parser.parse(grammar)).not.toThrow(); + railroad.parser.parse(grammar); + }); + + it('BNF', () => { + const grammar = ` + railroad-beta + + syntax = rule [ syntax ] . + rule = opt_ws identifier opt_ws "::=" opt_ws expression opt_ws EOL . + expression = list [ "|" expression ] . + line_end = opt_ws EOL | line_end line_end . + list = term [ WHITESPACE list ] . + term = literal | identifier . + identifier = "<" character {character} ">" . + literal = "'" {character} "'" | '"' {character} '"' . + opt_ws = { WHITESPACE } . + character = lowercase_char | uppercase_char | digit | special_char . + lowercase_char = "a" | "b" | "..." | "z" . + uppercase_char = "A" | "B" | "..." | "Z" . + digit = "0" | "1" | "..." | "2" . + special_char = "-" | "_" . + `; + + // expect(() => railroad.parser.parse(grammar)).not.toThrow(); + railroad.parser.parse(grammar); + }); + + it('Itself', () => { + const grammar = ` + railroad-beta + + syntax: 'railroad-beta' rule* EOF; + + rule: IDENTIFIER '=' list ';'; + + list + : definition ("|" definition)* + | '' + ; + + definition : (prim ","?)+; + + prim + : '(' list ')' QUANTIFIER? + | '[' list ']' + | '{' list '}' + | '"' (QUOTED_STRING)? '"' (QUANTIFIER)? + | APOSTROPHE (STRING)? APOSTROPHE (QUANTIFIER)? + | IDENTIFIER (QUANTIFIER)? {} + ; + + `; + railroad.parser.parse(grammar); + }); + + it('Shell', () => { + const grammar = ` + railroad-beta + + commandline ::= list + | list ";" + | list "&" + ; + + list ::= conditional + | list ";" conditional + | list "&" conditional + ; + + conditional ::= pipeline + | conditional "&&" pipeline + | conditional "||" pipeline + ; + + pipeline ::= command + | pipeline "|" command + ; + + command ::= word + | redirection + | command word + | command redirection + ; + + redirection ::= redirectionop filename; + redirectionop ::= "<" | ">" | "2>"; + `; + + railroad.parser.parse(grammar); + }); + + it('BNF syntax with angle brackets around ', () => { + const grammar = ` + railroad-beta + + ::= while '(' ')' ; + + ::= '=' ; + + ::= | ; + + ::= | ; + + ::= '+' + | '-' + | + ; + + ::= '*' + | '/' + | + ; + + ::= '^' | ; + + ::= | ; + + ::= '(' ')' + | + | + ; + `; + + railroad.parser.parse(grammar); + }); + }); +}); diff --git a/packages/mermaid/src/diagrams/railroad/railroadDB.ts b/packages/mermaid/src/diagrams/railroad/railroadDB.ts new file mode 100644 index 0000000000..889ab7b98d --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroadDB.ts @@ -0,0 +1,368 @@ +// import type { RailroadDB } from './railroadTypes.js'; +import * as configApi from '../../config.js'; +import type { DiagramDB } from '../../diagram-api/types.js'; + +import { clear as commonClear } from '../common/commonDb.js'; + +const railroadConfig = configApi.getConfig().railroad; + +const clear = (): void => { + commonClear(); + + rules = {}; +}; + +// TODO: move to style config +// Styles +// +// unite rules +// split rules +// +// show states / display states +// hide states +// +// shapes of non-terminals +// shapes of terminals +// +// start +// end + +// mark empty transitions +// true / false + +// empty transitions mark ? +// ๐œบ - epsilon +// ษ› +// null +// type ruleID = string; + +export type Rules = Record; +let rules: Rules = {}; + +const getConsole = () => console; + +type Callback = (item: Chunk, index: number, parent: Chunk | undefined, result: T[]) => T; +// type Traverse = (callback: Callback, index: number, parent?: Chunk) => T; + +// Base class +// +export abstract class Node { + abstract traverse(callback: Callback, index?: number, parent?: Node): T; + // abstract toEBNF(): string; +} + +// Production Rule or a Rule for simplicity represents a grammar production +// +// expr = expr "+" number | expr; +// +// That is a rule. Left side is its label, always non-terminal for context-free +// grammars, and right side is its body (definition) +// +export class Rule implements Node { + constructor(public label: string, public definition: Chunk) { } + + traverse(callback: Callback, index?: number, parent?: Chunk): T { + index ??= 0; + const nested = this.definition.traverse(callback, index, this); + + return callback(this, index, parent, [nested]); + } + + // toEBNF() { + // return `${this.label} ::= ${this.definition.toEBNF()}`; + // } +} + +// Chunk represents any part of right side of a Rule. +// We differ it from the Node because grammar does not allow recursive definitions +// +export abstract class Chunk extends Node { + // static staticMethod(): void; + // static display: ((instance: Chunk) => void) | undefined; +} + +// Chain is base class for a alternatives or sequences +// +abstract class Chain implements Chunk { + constructor(public children: Chunk[]) {} + + traverse(callback: Callback, index?: number, parent?: Chunk): T { + index ??= 0; + const nested = this.children.map((child, child_index) => + child.traverse(callback, child_index, this) + ); + + return callback(this, index, parent, nested); + } + + // abstract toEBNF(): string; +} + +// Choice represents list of alternatives - one or another +// +// variable | number | string ; +// +export class Choice extends Chain { + // toEBNF(): string { + // const content = this.children.map((c) => c.toEBNF()).join('|'); + // return '(' + content + ')'; + // } +} + +// Sequence is concatenation of elements +// +// expr '+' expr +// +export class Sequence extends Chain { + // toEBNF(): string { + // const delimiter = railroadConfig?.format?.forceComma ? ', ' : ' '; + // const content = this.children.map((c) => c.toEBNF()).join(delimiter); + // return content; + // } +} + +// Element is a primitive - terminal or non-terminal +// +abstract class Element implements Chunk { + constructor(public label: string) {} + + traverse(callback: Callback, index?: number, parent?: Chunk): T { + index ??= 0; + return callback(this, index, parent, []); + } + + // abstract toEBNF(): string; +} + +// Epsilon represents empty transition +// +// It is implied that every chunk has `start` and `end` states +// But we do not create them, simply keeping transition 'body' with label +// +export class Epsilon extends Element { + constructor() { + super('ษ›'); + } + + // toEBNF(): string { + // return this.label; + // } +} + +// Terminal is just a symbol or a string in a grammar +// +export class Term extends Element { + // toEBNF(): string { + // const escaped = this.label.replaceAll(/\\([\\'"])/g, "\\$1"); + + // return '"' + escaped + '"'; + // } +} + +// NonTerm is reference to a rule +// +// assignment = variable "=" num +// +// in that case and are non terminals +// +export class NonTerm extends Element { + // toEBNF(): string { + // const escaped = this.label.replaceAll(/\\([\\'"<>])/g, "\\$1"); + + // return '<' + escaped + '>'; + // } +} + +// Something except another something +// +// variable = alphanum - "const" +// +// means that is an alphanumeric, but not the word "const" +// +export class Exception implements Chunk { + constructor(public base: Chunk, public except: Chunk) {} + + traverse(callback: Callback, index?: number, parent?: Chunk): T { + index ??= 0; + const nested = [ + this.base.traverse(callback, 0, this), + this.except.traverse(callback, 1, this), + ] + + return callback(this, index, parent, nested); + } +} + +// Closure means a grammar (regexp if you will) closure: +// 0 or 1, 1 or many, 0 or many, {n,m} repetitions, etc. +// +abstract class Closure implements Chunk { + constructor(public child: Chunk) {} + + traverse(callback: Callback, index?: number, parent?: Chunk): T { + index ??= 0; + const nested = this.child.traverse(callback, index, this); + + return callback(this, index, parent, [nested]); + } +} + +export class OneOrMany extends Closure {} +export class ZeroOrOne extends Closure {} +export class ZeroOrMany extends Closure {} + +//========================================================== + +const addTerm = (label: string): Chunk => { + label.replaceAll(/\\(.)/g, "$1"); + + return new Term(label); +}; + +const addNonTerm = (label: string): Chunk => { + return new NonTerm(label); +}; + +// a?? => a? +// a+? => a* +// a*? => a* +const addZeroOrOne = (chunk: Chunk): Chunk => { + if (chunk instanceof ZeroOrOne) { + return chunk; + } else if (chunk instanceof OneOrMany) { + return new ZeroOrMany(chunk.child); + } else if (chunk instanceof ZeroOrMany) { + return chunk; + } + return new ZeroOrOne(chunk); +}; + +// a?+ => a* +// a++ => a+ +// a*+ => a* +const addOneOrMany = (chunk: Chunk): Chunk => { + if (chunk instanceof ZeroOrOne) { + return new ZeroOrMany(chunk.child); + } else if (chunk instanceof OneOrMany) { + return chunk; + } else if (chunk instanceof ZeroOrMany) { + return chunk; + } + return new OneOrMany(chunk); +}; + +// a?* => a* +// a+* => a* +// a** => a* +const addZeroOrMany = (chunk: Chunk): Chunk => { + if (chunk instanceof ZeroOrOne) { + return new ZeroOrMany(chunk.child); + } else if (chunk instanceof OneOrMany) { + return new ZeroOrMany(chunk.child); + } else if (chunk instanceof ZeroOrMany) { + return chunk; + } + return new ZeroOrMany(chunk); +}; + +const addException = (base: Chunk, except: Chunk): Chunk => { + return new Exception(base, except); +} + +const addRuleOrChoice = (label: string, chunk: Chunk): void => { + if (rules[label]) { + const value = rules[label]; + const alternative = addChoice([value, chunk]); + rules[label] = alternative; + } else { + rules[label] = chunk; + } +}; + +const addSequence = (chunks: Chunk[]): Chunk => { + if (!Array.isArray(chunks)) { + console.error('Sequence`s chunks are not array', chunks); + } + + if (railroadConfig?.compress) { + chunks = chunks + .flatMap((chunk) => { + if (chunk instanceof Sequence) { + return chunk.children; + } + return chunk; + }); + } + + if (chunks.length === 1) { + return chunks[0]; + } else { + return new Sequence(chunks); + } +}; + +const addChoice = (chunks: Chunk[]): Chunk => { + if (!Array.isArray(chunks)) { + console.error('Alternative chunks are not array', chunks); + } + + if (configApi.getConfig().railroad?.compress) { + chunks = chunks + .flatMap((chunk) => { + if (chunk instanceof Choice) { + return chunk.children; + } + return chunk; + }); + } + + if (chunks.length === 1) { + return chunks[0]; + } else { + return new Choice(chunks); + } +}; + +const addEpsilon = (): Chunk => { + return new Epsilon(); +}; + +// We keep Rules as a mapping and now we return them all as instances +// +const getRules = (): Rule[] => { + return Object.entries(rules).map(([ID, definition]) => new Rule(ID, definition)); +}; + +export interface RailroadDB extends DiagramDB { + addChoice: (chunks: Chunk[]) => Chunk; + addEpsilon: () => Chunk; + addNonTerm: (label: string) => Chunk; + addOneOrMany: (chunk: Chunk) => Chunk; + addRuleOrChoice: (label: string, chunk: Chunk) => void; + addSequence: (chunks: Chunk[]) => Chunk; + addTerm: (label: string) => Chunk; + addZeroOrMany: (chunk: Chunk) => Chunk; + addZeroOrOne: (chunk: Chunk) => Chunk; + addException: (base: Chunk, except: Chunk) => Chunk; + clear: () => void; + getConsole: () => Console; + getRules: () => Rule[]; +} + +export const db: RailroadDB = { + addChoice, + addEpsilon, + addNonTerm, + addOneOrMany, + // addOrMergeRule, + addRuleOrChoice, + addSequence, + addTerm, + addZeroOrMany, + addZeroOrOne, + addException, + clear, + getConfig: () => configApi.getConfig().railroad, + getConsole, + getRules, +}; diff --git a/packages/mermaid/src/diagrams/railroad/railroadDetector.ts b/packages/mermaid/src/diagrams/railroad/railroadDetector.ts new file mode 100644 index 0000000000..9b8725d905 --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroadDetector.ts @@ -0,0 +1,22 @@ +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; + +const id = 'railroad'; + +const detector: DiagramDetector = (txt) => { + return /^\s*railroad-beta/.test(txt); +}; + +const loader: DiagramLoader = async () => { + const { diagram } = await import('./railroadDiagram.js'); + return { id, diagram }; +}; + +export const railroad: ExternalDiagramDefinition = { + id, + detector, + loader, +}; diff --git a/packages/mermaid/src/diagrams/railroad/railroadDiagram.ts b/packages/mermaid/src/diagrams/railroad/railroadDiagram.ts new file mode 100644 index 0000000000..b834188635 --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroadDiagram.ts @@ -0,0 +1,15 @@ +import { DiagramDefinition } from '../../diagram-api/types.js'; +// @ts-ignore: jison doesn't export types +import parser from './railroadGrammar.jison'; +import { db } from './railroadDB.js'; +import renderer from './railroadRenderer.js'; +// import { prepareTextForParsing } from './railroadUtils.js'; + +// const originalParse = parser.parse.bind(parser); +// parser.parse = (text: string) => originalParse(prepareTextForParsing(text)); + +export const diagram: DiagramDefinition = { + parser, + db, + renderer, +}; diff --git a/packages/mermaid/src/diagrams/railroad/railroadGrammar.jison b/packages/mermaid/src/diagrams/railroad/railroadGrammar.jison new file mode 100644 index 0000000000..d37371b291 --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroadGrammar.jison @@ -0,0 +1,311 @@ +/* + Mermaid + https://mermaid.js.org/ + MIT license. +*/ + +// To avoid conflicts this grammar uses following notations +// +// `C_` prefix means character, or character class +// `TOKEN`, '+' tokens or terminals must be uppper case only, without C_ prefix, or a character like '+' +// non_terminal non terminals must be snake_case +// value_ for aliases to access parsing information, use _ at the end + +//------------------ +// Lexical analysis +//------------------ + +// this is told to be longest rules match, but I am not sure this works +// that is why the order in the assignment regexp matters +%options flex + +%lex + +// Definitions +C_HYPHEN \u002D // - +C_COMMA \u002c // , +C_DOT \u002E // . +C_COLON \u003A // : +C_SEMICOLON \u003B // ; +C_VERTICAL_LINE \u007C // | +C_SLASH \u002f // / +C_BACKSLASH \u005C // \ +C_APOSTROPHE \u0027 // ' +C_QUOTATION_MARK \u0022 // " +C_LEFT_PARENTHESIS \u0028 // ( +C_RIGHT_PARENTHESIS \u0029 // ) +C_LEFT_SQUARE_BRACKET \u005B // [ +C_RIGHT_SQUARE_BRACKET \u005D // ] +C_LEFT_CURLY_BRACKET \u007B // { +C_RIGHT_CURLY_BRACKET \u007D // } +C_LESS_THAN \u003C // < +C_GREATER_THAN \u003E // > +C_ASTERISK \u002A +C_QUESTION_MARK \u003F +C_PLUS_SIGN \u002B +// TODO: add classes for non symbols string symbols and quote symbols +C_TEXTDATA [\u0020-\u0021\u0023-\u0026\u0028-\u003B\u003D\u003F-\u005B\u005D-\u007E] // everything except ' " < > \ +C_EQUALS_SIGN \u003D // = + +// C_CR \u000D +// C_LF \u000A +// C_TAB \u0009 +// C_VTAB \u000B +// EXCLAMATION_MARK \u0021 // ! +// DEFINE \u003A\u003A\u003D // ::= +// ASSIGN \u003A\u003D // := +// ARROW \u002D\u3009 // -> + +// Start conditions +%x diag +// 'string' +%x string +// "qstring" +%x qstring +// +%x nonterm + +%% + +// Tokenization step +// +// Order of scanning matters +// The more initial conditions the token meets, the lower it must be +// Everything is wrapped in parentheses intentionally ? +// https://stackoverflow.com/questions/31862815/jison-lex-without-white-spaces +// https://github.com/zaach/jison/wiki/Deviations-From-Flex-Bison + +({C_BACKSLASH}?({C_TEXTDATA}|{C_APOSTROPHE}|{C_QUOTATION_MARK})|{C_BACKSLASH}({C_LESS_THAN}|{C_GREATER_THAN}|{C_BACKSLASH}))+ { return 'NONTERM' } +{C_GREATER_THAN} { this.popState(); return '>' } + +// TODO: add optional backslash +({C_TEXTDATA}|{C_LESS_THAN}|{C_GREATER_THAN}|{C_APOSTROPHE}|{C_BACKSLASH}{C_QUOTATION_MARK})+ { return 'QSTRING' } +{C_QUOTATION_MARK} { this.popState(); return '"' } + +// TODO: add optional backslash +({C_TEXTDATA}|{C_LESS_THAN}|{C_GREATER_THAN}|{C_QUOTATION_MARK}|{C_BACKSLASH}{C_APOSTROPHE})+ { return 'STRING' } +{C_APOSTROPHE} { this.popState(); return 'APOSTROPHE' } + +("railroad-beta") { this.pushState('diag'); return 'railroad-beta' } + +<*>[A-Za-z_][A-Za-z0-9_]* { return 'IDENTIFIER' } +<*>[0-9]|[1-9][0-9]+ { return 'NUMBER' } +<*>{C_VERTICAL_LINE}|{C_SLASH} { return '|' } +<*>{C_COMMA} { return ',' } +<*>"::="|":="|":"|"=>"|"="|"->" { return '=' } // assignment +<*>{C_SEMICOLON}|{C_DOT} { return ';' } +<*>{C_LEFT_PARENTHESIS} { return '(' } +<*>{C_RIGHT_PARENTHESIS} { return ')' } +<*>{C_LEFT_SQUARE_BRACKET} { return '[' } +<*>{C_RIGHT_SQUARE_BRACKET} { return ']' } +<*>{C_LEFT_CURLY_BRACKET} { return '{' } +<*>{C_RIGHT_CURLY_BRACKET} { return '}' } +<*>{C_HYPHEN} { return '-' } +<*>{C_ASTERISK} { return '*' } +<*>{C_PLUS_SIGN} { return '+' } +<*>{C_QUESTION_MARK} { return '?' } +<*>{C_LESS_THAN} { this.pushState('nonterm'); return '<' } +<*>{C_GREATER_THAN} { return '>' } +<*>{C_QUOTATION_MARK} { this.pushState('qstring'); return '"' } +<*>{C_APOSTROPHE} { this.pushState('string'); return 'APOSTROPHE' } +<*><> { return 'EOF' } // match end of file +<*>\s+ {} + +/lex + +//----------------- +// Syntax analysis +//----------------- + +// Configuration + +%start syntax +%ebnf + +%% + +// TODO: move references from here? + +// https://www.w3.org/TR/2010/REC-xquery-20101214/#EBNFNotation +// +// Grammar ::= Production* +// Production ::= NCName '::=' ( Choice | Link ) +// NCName ::= [http://www.w3.org/TR/xml-names/#NT-NCName] +// Choice ::= SequenceOrDifference ( '|' SequenceOrDifference )* +// SequenceOrDifference ::= (Item ( '-' Item | Item* ))? +// Item ::= Primary ( '?' | '*' | '+' )* +// Primary ::= NCName | StringLiteral | CharCode | CharClass | '(' Choice ')' +// StringLiteral ::= '"' [^"]* '"' | "'" [^']* "'" /* ws: explicit */ +// CharCode ::= '#x' [0-9a-fA-F]+ /* ws: explicit */ +// CharClass ::= '[' '^'? ( Char | CharCode | CharRange | CharCodeRange )+ ']' /* ws: explicit */ +// Char ::= [http://www.w3.org/TR/xml#NT-Char] +// CharRange ::= Char '-' ( Char - ']' ) /* ws: explicit */ +// CharCodeRange ::= CharCode '-' CharCode /* ws: explicit */ +// Link ::= '[' URL ']' +// URL ::= [^#x5D:/?#]+ '://' [^#x5D#]+ ('#' NCName)? /* ws: explicit */ +// Whitespace ::= S | Comment +// S ::= #x9 | #xA | #xD | #x20 +// Comment ::= '/*' ( [^*] | '*'+ [^*/] )* '*'* '*/' /* ws: explicit */ + +// https://www.w3.org/2001/06/blindfold/grammar +// +// grammar ::= clause* # A grammar is zero or more clauses +// clause ::= clauseName "::=" pattern # A clause associates a name with a pattern +// pattern ::= branch ("|" branch)* # A pattern has one or more branches (alternatives) +// branch ::= term+ # A branch is one or more terms +// term ::= # A term is: +// string # a string in single or double quotes +// | charset # a character set (as in perl: [a-z0-9], etc) +// | "(" pattern ")" # a pattern, in parentheses +// | clauseName # a clauseName, matching a pattern by name +// | term [*+?] # a term followed by a "*", "+", or "?" operator + +// https://plantuml.com/ebnf +// +// @startebnf +// grammar = { rule }; +// rule = lhs , "=" (* definition *) , rhs , ";" (* termination *); +// lhs = identifier ; +// rhs = identifier +// | terminal +// | "[" , rhs (* optional *) , "]" +// | "{" , rhs (* repetition *), "}" +// | "(" , rhs (* grouping *) , ")" +// | "(*" , string (* comment *) , "*)" +// | "?" , rhs (* special sequence, aka notation *) , "?" +// | rhs , "|" (* alternation *) , rhs +// | rhs , "," (* concatenation *), rhs ; +// identifier = letter , { letter | digit | "_" } ; +// terminal = "'" , character , { character } , "'" +// | '"' , character , { character } , '"' ; +// character = letter | digit | symbol | "_" ; +// symbol = "[" | "]" | "{" | "}" | "(" | ")" | "<" | ">" +// | "'" | '"' | "=" | "|" | "." | "," | ";" ; +// digit = ? 0-9 ? ; +// letter = ? A-Z or a-z ? ; +// @endebnf + +// ISO-14977 +// +// language ::= syntax_rule+ '.' +// syntax_rule ::= id '::=' definitions_list ';' +// definitions_list ::= single_definition ( '|' single_definition)* +// single_definition ::= syntactic_term (',' syntactic_term)* +// syntactic_term ::= syntactic_factor | syntactic_factor '-' syntactic_exception +// syntactic_exception ::= syntactic-factor +// +// syntactic-exception consists of a syntactic-factor subject +// to the restriction that the sequences of symbols represented +// by the syntactic-exception could equally be represented by +// a syntactic-factor containing no meta-identifiers. +// +// syntactic_factor ::= integer '*' syntactic_primary | syntactic_primary +// integer ::= \d+ +// syntactic_primary ::= +// | optional-sequence +// | repeated-sequence +// | grouped-sequence +// | meta-identifier +// | terminal-string +// | special-sequence +// | // empty +// ; +// +// optional-sequence ::= '[' definitions_list ']' +// repeated sequence ::= '{' definitions_list '}' +// grouped-sequence ::= '(' definitions_list ')' +// meta-identifier ::= letter (letter | decimal_digit )* +// terminal-string ::= \' [^']+ \' | \" [^"]+ \" +// special-sequence ::= '?' special-sequence-character* '?' +// special-sequence-character ::= '?' terminal-character except ? '?' + +syntax: 'railroad-beta' rule* EOF; + +rule + : non_term '=' choice ';' { + yy.addRuleOrChoice($non_term, $choice); + }; + +non_term + : '<' NONTERM '>' { + $$=$NONTERM; + } + | IDENTIFIER { + $$=$IDENTIFIER; + } + ; + +choice + : alternatives { + $$=yy.addChoice($alternatives); + } + ; + +alternatives + : sequence "|" alternatives\[tail_] { + $$ = [$sequence, ...$tail_]; + } + | sequence { + $$ = [$sequence]; + } + | { + $$ = [yy.addEpsilon()]; + } + ; + +sequence + : (item ","?)+\[items_] { + $$ = yy.addSequence(Object.values($items_)); + } + ; + +item + : fact { $$ = $fact; } + | fact\[base_] '-' fact\[except_] { $$ = yy.addException($base_, $except_) } + ; + +fact + : prim '?' { + $$ = yy.addZeroOrOne($prim); + } + | prim '+' { + $$ = yy.addOneOrMany($prim); + } + | prim '*' { + $$ = yy.addZeroOrMany($prim); + } + | prim { + $$ = $prim; + } + | NUMBER\[number_] '*' prim { + $$ = yy.addRepetitions($prim, $number_); + } + ; + +prim + : '(' choice ')' { $$=$choice; } + | '[' choice ']' { $$=yy.addZeroOrOne($choice); } + | '{' choice '}' { $$=yy.addZeroOrMany($choice); } + | '"' (QSTRING)?\[qstring_] '"' { + if($qstring_) { + $$=yy.addTerm($qstring_); + } else { + $$=yy.addEpsilon(); + } + } + | APOSTROPHE (STRING)?\[string_] APOSTROPHE { + if($string_) { + $$=yy.addTerm($string_); + } else { + $$=yy.addEpsilon(); + } + } + | non_term { $$=yy.addNonTerm($non_term); } + ; + +// TODO: +// ? should we recognize some terms without quotes, such as / and others? +// (all, except spaces and symbols reserved for grammar defnintion) no +// ? should we allow string usage along with at the left side? no +// * mark empty with %e ? +// Should we treat empty string as epsilon? diff --git a/packages/mermaid/src/diagrams/railroad/railroadRenderer.ts b/packages/mermaid/src/diagrams/railroad/railroadRenderer.ts new file mode 100644 index 0000000000..57054c78ea --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroadRenderer.ts @@ -0,0 +1,242 @@ +import { Diagram } from '../../Diagram.js'; +import * as configApi from '../../config.js'; +import type { DrawDefinition, HTML, SVG } from '../../diagram-api/types.js'; +import { select } from 'd3'; +import { RailroadDB, Node, Rule, NonTerm, Term, ZeroOrMany, ZeroOrOne, OneOrMany, Sequence, Choice, Exception } from './railroadDB.js'; +import { selectSvgElement } from '../../rendering-util/selectSvgElement.js'; +// import { configureSvgSize } from '../../setupGraphViewbox.js'; +// import { Uid } from '../../rendering-util/uid.js'; + +// import { +// // select as d3select, +// scaleOrdinal as d3scaleOrdinal, +// schemeTableau10 as d3schemeTableau10, +// } from 'd3'; + +// const fetchSVGElement = (id: string): SVG => { +// // Get config +// const { securityLevel } = configApi.getConfig(); + +// // Handle root and document for when rendering in sandbox mode +// let sandboxElement: HTML | undefined; +// let document: Document | null | undefined; +// if (securityLevel === 'sandbox') { +// sandboxElement = select('#i' + id); +// document = sandboxElement.nodes()[0].contentDocument; +// } + +// // @ts-ignore - figure out how to assign HTML to document type +// const root: HTML = sandboxElement && document ? select(document) : select('body'); +// const svg: SVG = root.select('#' + id); +// return svg; +// }; + +const railroadConfig = configApi.getConfig().railroad; + +abstract class RailroadRenderer { + render(node: Node): T { + if (node instanceof Rule) { + return this.renderRule(node); + } else if (node instanceof Rule) { + return this.renderRule(node); + } else if (node instanceof NonTerm) { + return this.renderNonTerm(node); + } else if (node instanceof OneOrMany) { + return this.renderOneOrMany(node); + } else if (node instanceof Sequence) { + return this.renderSequence(node); + } else if (node instanceof Choice) { + return this.renderChoice(node); + } else if (node instanceof Term) { + return this.renderTerm(node); + } else if (node instanceof ZeroOrMany) { + return this.renderZeroOrMany(node); + } else if (node instanceof ZeroOrOne) { + return this.renderZeroOrOne(node); + } else if (node instanceof Exception) { + return this.renderException(node); + } else { + // return this.renderBlank(); + throw `${this.constructor.name} does not know how to render ${node.constructor.name}` + } + }; + abstract renderBlank(): T; + + abstract renderRule(node: Rule): T; + abstract renderNonTerm(node: NonTerm): T; + abstract renderOneOrMany(node: OneOrMany): T; + abstract renderSequence(node: Sequence): T; + abstract renderChoice(node: Choice): T; + abstract renderTerm(node: Term): T; + abstract renderZeroOrMany(node: ZeroOrMany): T; + abstract renderZeroOrOne(node: ZeroOrOne): T; + abstract renderException(node: Exception): T +} + +class EBNFStringRenderer extends RailroadRenderer { + renderBlank(): string { + return ''; + } + + renderRule(node: Rule): string { + return `${node.label} ::= ${this.render(node.definition)}`; + } + + renderNonTerm(node: NonTerm): string { + const escaped = node.label.replaceAll(/\\([\\'"<>])/g, "\\$1"); + + return '<' + escaped + '>'; + } + + renderTerm(node: Term): string { + const escaped = node.label.replaceAll(/\\([\\'"])/g, "\\$1"); + + return '"' + escaped + '"'; + } + + renderZeroOrOne(node: ZeroOrOne): string { + return this.render(node.child) + '?'; + } + + renderOneOrMany(node: OneOrMany): string { + return this.render(node.child) + '+'; + } + + renderZeroOrMany(node: ZeroOrMany): string { + return this.render(node.child) + '*'; + } + + renderSequence(node: Sequence): string { + const delimiter = railroadConfig?.format?.forceComma ? ', ' : ' '; + const content = node.children.map((c) => this.render(c)).join(delimiter); + return content; + } + + renderChoice(node: Choice): string { + const content = node.children.map((c) => this.render(c)).join('|'); + return '(' + content + ')'; + } + + renderException(node: Exception): string { + return `(${this.render(node.base)}) - ${this.render(node.except)}`; + } + + renderEpsilon(node: Epsilon): string { + return node.label; + } +} + +class Dimension { + constructor(public width: number, public height: number) {} + + add(other: Dimension): Dimension { + return new Dimension(this.width + other.width, this.height + other.height); + } +} + +/** + * Draws Railroad diagram. + * + * @param text - The text of the diagram + * @param id - The id of the diagram which will be used as a DOM element idยจ + * @param _version - Mermaid version from package.json + * @param diagObj - A standard diagram containing the db and the text and type etc of the diagram + */ +export const draw: DrawDefinition = (_text, id, _version, diagObj): void => { + const svg: SVG = selectSvgElement(id); + const db = diagObj.db as RailroadDB; + const rules = db.getRules(); + + rules.forEach((rule, index) => { + const { label: label, definition: chunk } = rule; + console.log(`Key: ${label}, Value:`, chunk); + + const g = svg.append('g').attr('transform', `translate(${0},${10 + index * 20})`); + + const renderer = new EBNFStringRenderer; + + const text = renderer.render(rule); + // const body = chunk.traverse((item, index, parent, result) => { + // console.log(item, index, parent); + + // // return result + item.toEBNF() + // return result + renderer.render(item); + // // const nestedDimensions = result.reduce((acc, curr) => acc.add(curr), new Dimension(0, 0)); + // // item.toEBNF(); + // // return nestedDimensions; + // }); + + // const text = label + ':==' + body; + g.append('text').text(text); + + const x = g + .append('rect') + .attr('x', 100) + .attr('y', 0) + .attr('width', 300) + .attr('height', 10) + .attr('fill', '#999') + + console.log(x); + console.log(typeof x); + }); + + // diagObj.renderer + // const defaultRailroadConfig = configApi!.defaultConfig!.railroad!; + // Establish svg dimensions and get width and height + // + // const width = conf?.width || defaultRailroadConfig.width!; + // const height = conf?.height || defaultRailroadConfig.width!; + // const useMaxWidth = conf?.useMaxWidth || defaultRailroadConfig.useMaxWidth!; + + // configureSvgSize(svg, height, width, useMaxWidth); + + // Compute layout + // + + // Get color scheme for the graph + // const colorScheme = d3scaleOrdinal(d3schemeTableau10); + + // const transitions: object[] = [ + // { y: 0, label: 'AAA' }, + // { y: 50, label: 'BBB' }, + // { y: 100, label: 'CCC' }, + // { y: 150, label: 'DDD' }, + // ]; + + // svg + // .append('g') + // .attr('class', 'transition') + // .selectAll('.transition') + // .data(transitions) + // .join('g') + // .attr('class', 'node') + // .attr('id', (d: any) => d.id) + // .attr('transform', function (d: any) { + // return 'translate(' + 0 + ',' + d.y + ')'; + // }) + // .attr('x', () => 0) + // .attr('y', (d: any) => d.y) + // .append('rect') + // .attr('height', () => 20) + // .attr('width', () => 50) + // .attr('fill', '#999'); + + // svg + // .append('g') + // .attr('class', 'node-labels') + // .attr('font-family', 'sans-serif') + // .attr('font-size', 14) + // .selectAll('text') + // .data(transitions) + // .join('text') + // .attr('x', (d: any) => (0)) + // .attr('y', (d: any) => (0)) + // // .attr('dy', `${showValues ? '0' : '0.35'}em`) + // // .attr('text-anchor', (d: any) => (d.x0 < width / 2 ? 'start' : 'end')) + // .text((d: any) => d.label); +}; + +export default { + draw, +}; diff --git a/packages/mermaid/src/diagrams/railroad/railroadStyles.js b/packages/mermaid/src/diagrams/railroad/railroadStyles.js new file mode 100644 index 0000000000..99e948e7ed --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroadStyles.js @@ -0,0 +1,4 @@ +const getStyles = (options) => ` +`; + +export default getStyles; diff --git a/packages/mermaid/src/diagrams/railroad/railroadTypes.ts b/packages/mermaid/src/diagrams/railroad/railroadTypes.ts new file mode 100644 index 0000000000..f15860ef28 --- /dev/null +++ b/packages/mermaid/src/diagrams/railroad/railroadTypes.ts @@ -0,0 +1,5 @@ +// import type { DiagramDB } from '../../diagram-api/types.js'; + +// export interface RailroadDB extends DiagramDB { +// clear: () => void; +// } diff --git a/packages/mermaid/src/diagrams/railroad/renerers/stringRenderer.ts b/packages/mermaid/src/diagrams/railroad/renerers/stringRenderer.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/mermaid/src/docs/.vitepress/config.ts b/packages/mermaid/src/docs/.vitepress/config.ts index a59b02688c..bd25f042c3 100644 --- a/packages/mermaid/src/docs/.vitepress/config.ts +++ b/packages/mermaid/src/docs/.vitepress/config.ts @@ -155,6 +155,7 @@ function sidebarSyntax() { { text: 'XY Chart ๐Ÿ”ฅ', link: '/syntax/xyChart' }, { text: 'Block Diagram ๐Ÿ”ฅ', link: '/syntax/block' }, { text: 'Packet ๐Ÿ”ฅ', link: '/syntax/packet' }, + { text: 'Railroad ๐Ÿ”ฅ', link: '/syntax/railroad' }, { text: 'Other Examples', link: '/syntax/examples' }, ], }, diff --git a/packages/mermaid/src/docs/syntax/railroad.md b/packages/mermaid/src/docs/syntax/railroad.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/mermaid/src/schemas/config.schema.yaml b/packages/mermaid/src/schemas/config.schema.yaml index 68da484e04..20c6441d4d 100644 --- a/packages/mermaid/src/schemas/config.schema.yaml +++ b/packages/mermaid/src/schemas/config.schema.yaml @@ -236,6 +236,8 @@ properties: $ref: '#/$defs/C4DiagramConfig' sankey: $ref: '#/$defs/SankeyDiagramConfig' + railroad: + $ref: '#/$defs/RailroadDiagramConfig' packet: $ref: '#/$defs/PacketDiagramConfig' block: @@ -275,6 +277,146 @@ $defs: # JSON Schema definition (maybe we should move these to a separate file) If set to `false`, the absolute space required is used. type: boolean default: true + RailroadDiagramBoundaryShape: + description: | + Shapes of the first and the last state in the diagram + oneOf: + - const: dot + description: Dot, filled + - const: circle + description: Small empty circle + - const: forward + description: Small triangle pointing from the left to the right + - const: backward + description: Small triangle pointing from the right to the left + + RailroadDiagramFormat: &RailroadDiagramFormat + type: object + unevaluatedProperties: false + required: [forceAngleBrackets, forceComma] + properties: + forceAngleBrackets: + type: boolean + default: true + description: | + Force angular brackets around non-terminal symbols + forceComma: + type: boolean + default: true + description: | + Force comma as a concatenation symbol in the rule definition + + RailroadDiagramConfig: + title: Railroad Diagram Config + allOf: [{ $ref: '#/$defs/BaseDiagramConfig' }] + description: The object containing configurations specific for railroad diagrams. + type: object + unevaluatedProperties: false + required: [alignment, format] + properties: + alignment: + type: string + enum: + - left + - right + - center + - justify + default: left + verticalAlignment: + type: string + enum: + - top + - bottom + - center + - justify + default: top + wrapDiagram: + type: boolean + default: true + description: | + Wrap long grammars similarly to wrapping long lines + syntax: + type: string + enum: + - mermaid + - w3c + - iso + description: | + Specify which standart would be applied + compress: + type: boolean + default: true + description: | + Compress rules to get the smallest possible diagram + render: + description: | + List of things to render + type: array + default: + - railroad + - ebnf + items: + oneOf: + - const: railroad + description: Railroad diagram, the diagram itself + - const: ebnf + description: Definition in EBNF (Extended Backus-Naur Form) + - const: bnf + description: Definition in BNF (Backus-Naur Form) + - const: dfa + description: Deterministic Finite Automata + - const: nfa + description: Nondeterministic Finite Automata + format: + $ref: '#/$defs/RailroadDiagramFormat' + tsType: RailroadDiagramFormat + default: {} + drawArrows: + type: boolean + default: false + inline: + type: boolean + default: false + inlineItems: + type: array + items: + type: string + start: + description: | + Name of the initial rule in grammar + First rule will be initial if it is null + oneOf: + - type: string + - type: 'null' + default: 'null' + shapes: + type: object + unevaluatedProperties: false + properties: + terminal: + type: string + non_terminal: + type: string + start: + description: | + Shape or list of shapes for the start element + They will be applied in the order of occurrence + anyOf: + - type: array + items: + $ref: '#/$defs/RailroadDiagramBoundaryShape' + - $ref: '#/$defs/RailroadDiagramBoundaryShape' + default: 'dot' + end: + description: | + Shape or list of shapes for the end element + They will be applied in the order of occurrence + anyOf: + - type: array + items: + $ref: '#/$defs/RailroadDiagramBoundaryShape' + - $ref: '#/$defs/RailroadDiagramBoundaryShape' + default: 'circle' C4DiagramConfig: title: C4 Diagram Config allOf: [{ $ref: '#/$defs/BaseDiagramConfig' }] diff --git a/packages/mermaid/src/styles.spec.ts b/packages/mermaid/src/styles.spec.ts index 698b2beafd..a370dde528 100644 --- a/packages/mermaid/src/styles.spec.ts +++ b/packages/mermaid/src/styles.spec.ts @@ -27,6 +27,7 @@ import state from './diagrams/state/styles.js'; import journey from './diagrams/user-journey/styles.js'; import timeline from './diagrams/timeline/styles.js'; import mindmap from './diagrams/mindmap/styles.js'; +import railroad from './diagrams/railroad/railroadStyles.js'; import packet from './diagrams/packet/styles.js'; import block from './diagrams/block/styles.js'; import themes from './themes/index.js'; @@ -97,6 +98,7 @@ describe('styles', () => { state, block, timeline, + railroad, packet, })) { test(`should return a valid style for diagram ${diagramId} and theme ${themeId}`, async () => { diff --git a/packages/mermaid/src/themes/theme-base.js b/packages/mermaid/src/themes/theme-base.js index dde3b9ecff..d09dc7948e 100644 --- a/packages/mermaid/src/themes/theme-base.js +++ b/packages/mermaid/src/themes/theme-base.js @@ -328,6 +328,14 @@ class Theme { this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; + /* railroad */ + this.railroad = { + backgroundColor: this.railroad?.backgroundColor || this.background, + titleColor: this.railroad?.titleColor || this.primaryTextColor, + nonTerminalColor: this.railroad?.terminalColor || this.primaryColor, + terminalColor: this.railroad?.terminalColor || this.secondaryColor, + }; + /* -------------------------------------------------- */ /* EntityRelationship diagrams */ diff --git a/packages/mermaid/src/themes/theme-dark.js b/packages/mermaid/src/themes/theme-dark.js index 02104a0ea8..a6f90edcfa 100644 --- a/packages/mermaid/src/themes/theme-dark.js +++ b/packages/mermaid/src/themes/theme-dark.js @@ -325,6 +325,14 @@ class Theme { this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; + /* railroad */ + this.railroad = { + backgroundColor: this.railroad?.backgroundColor || this.background, + titleColor: this.railroad?.titleColor || this.primaryTextColor, + nonTerminalColor: this.railroad?.terminalColor || this.primaryColor, + terminalColor: this.railroad?.terminalColor || this.secondaryColor, + }; + /* -------------------------------------------------- */ /* EntityRelationship diagrams */ diff --git a/packages/mermaid/src/themes/theme-default.js b/packages/mermaid/src/themes/theme-default.js index d95ccf59e0..fe41ab5bea 100644 --- a/packages/mermaid/src/themes/theme-default.js +++ b/packages/mermaid/src/themes/theme-default.js @@ -352,6 +352,14 @@ class Theme { this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; + // railroad + this.railroad = { + backgroundColor: this.railroad?.backgroundColor || this.background, + titleColor: this.railroad?.titleColor || this.primaryTextColor, + nonTerminalColor: this.railroad?.terminalColor || this.primaryColor, + terminalColor: this.railroad?.terminalColor || this.secondaryColor, + }; + /* -------------------------------------------------- */ /* EntityRelationship diagrams */ diff --git a/packages/mermaid/src/themes/theme-forest.js b/packages/mermaid/src/themes/theme-forest.js index 4bb7d24413..4b7e118096 100644 --- a/packages/mermaid/src/themes/theme-forest.js +++ b/packages/mermaid/src/themes/theme-forest.js @@ -329,6 +329,14 @@ class Theme { this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; + /* railroad */ + this.railroad = { + backgroundColor: this.railroad?.backgroundColor || this.background, + titleColor: this.railroad?.titleColor || this.primaryTextColor, + nonTerminalColor: this.railroad?.terminalColor || this.primaryColor, + terminalColor: this.railroad?.terminalColor || this.secondaryColor, + }; + /* -------------------------------------------------- */ /* EntityRelationship diagrams */ diff --git a/packages/mermaid/src/themes/theme-neutral.js b/packages/mermaid/src/themes/theme-neutral.js index 4134a985b9..e6b38286a1 100644 --- a/packages/mermaid/src/themes/theme-neutral.js +++ b/packages/mermaid/src/themes/theme-neutral.js @@ -334,6 +334,14 @@ class Theme { this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; + /* railroad */ + this.railroad = { + backgroundColor: this.railroad?.backgroundColor || this.background, + titleColor: this.railroad?.titleColor || this.primaryTextColor, + nonTerminalColor: this.railroad?.terminalColor || this.primaryColor, + terminalColor: this.railroad?.terminalColor || this.secondaryColor, + }; + /* -------------------------------------------------- */ /* EntityRelationship diagrams */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3cf45df604..01df14a5e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 8.7.0(eslint@8.57.0) '@cypress/code-coverage': specifier: ^3.12.30 - version: 3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2)) + version: 3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2)) '@rollup/plugin-typescript': specifier: ^11.1.6 version: 11.1.6(rollup@4.17.2)(tslib@2.6.2)(typescript@5.4.5) @@ -382,10 +382,10 @@ importers: version: 5.0.0 vitepress: specifier: ^1.0.1 - version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5) + version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5) vitepress-plugin-search: specifier: 1.0.4-alpha.22 - version: 1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)) + version: 1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)) packages/mermaid-example-diagram: dependencies: @@ -505,6 +505,61 @@ importers: specifier: ^7.0.0 version: 7.0.0 + packages/mermaid/src/vitepress: + dependencies: + '@vueuse/core': + specifier: ^10.1.0 + version: 10.9.0(vue@3.4.26(typescript@5.4.5)) + jiti: + specifier: ^1.18.2 + version: 1.21.0 + mermaid: + specifier: workspace:^ + version: link:../.. + vue: + specifier: ^3.3 + version: 3.4.26(typescript@5.4.5) + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.16 + version: 1.1.32 + '@unocss/reset': + specifier: ^0.58.0 + version: 0.58.9 + '@vite-pwa/vitepress': + specifier: ^0.3.0 + version: 0.3.1(vite-plugin-pwa@0.17.5(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.1.0)) + '@vitejs/plugin-vue': + specifier: ^4.2.1 + version: 4.6.2(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))(vue@3.4.26(typescript@5.4.5)) + fast-glob: + specifier: ^3.2.12 + version: 3.3.2 + https-localhost: + specifier: ^4.7.1 + version: 4.7.1 + pathe: + specifier: ^1.1.0 + version: 1.1.2 + unocss: + specifier: ^0.58.0 + version: 0.58.9(postcss@8.4.38)(rollup@4.17.2)(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1)) + unplugin-vue-components: + specifier: ^0.26.0 + version: 0.26.0(@babel/parser@7.24.7)(rollup@4.17.2)(vue@3.4.26(typescript@5.4.5)) + vite: + specifier: ^4.4.12 + version: 4.5.3(@types/node@20.12.7)(terser@5.31.1) + vite-plugin-pwa: + specifier: ^0.17.0 + version: 0.17.5(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.1.0) + vitepress: + specifier: 1.0.0-rc.31 + version: 1.0.0-rc.31(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5) + workbox-window: + specifier: ^7.0.0 + version: 7.1.0 + packages/parser: dependencies: langium: @@ -756,10 +811,6 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.7': resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} @@ -784,10 +835,6 @@ packages: resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -804,12 +851,6 @@ packages: resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.5': - resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-create-class-features-plugin@7.24.7': resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} @@ -827,42 +868,22 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - '@babel/helper-environment-visitor@7.24.7': resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.24.7': resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.24.7': resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.5': - resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} - engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.7': resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.3': - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} @@ -879,18 +900,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.5': - resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.7': resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} @@ -901,46 +914,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.24.1': - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.24.7': resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.5': - resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.24.7': resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.5': - resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.7': resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.7': resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} @@ -949,18 +940,10 @@ packages: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.5': - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.7': resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} @@ -977,10 +960,6 @@ packages: resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.2': - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} - engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -1270,12 +1249,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.7': resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} engines: {node: '>=6.9.0'} @@ -1438,12 +1411,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.5': - resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-env@7.24.7': resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} engines: {node: '>=6.9.0'} @@ -1790,6 +1757,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.19.12': resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -1802,6 +1775,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.19.12': resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -1814,6 +1793,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.19.12': resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -1826,6 +1811,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.19.12': resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -1838,6 +1829,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.19.12': resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -1850,6 +1847,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.19.12': resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -1862,6 +1865,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.19.12': resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -1874,6 +1883,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.19.12': resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -1886,6 +1901,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.19.12': resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -1898,6 +1919,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.19.12': resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -1910,6 +1937,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.19.12': resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -1922,6 +1955,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.19.12': resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -1934,6 +1973,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.19.12': resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -1946,6 +1991,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.19.12': resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -1958,6 +2009,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.19.12': resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -1970,6 +2027,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.19.12': resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -1982,6 +2045,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.19.12': resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -1994,6 +2063,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.19.12': resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -2006,6 +2081,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.19.12': resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -2018,6 +2099,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.19.12': resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -2030,6 +2117,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.19.12': resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -2042,6 +2135,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.19.12': resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} @@ -2649,6 +2748,9 @@ packages: '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} @@ -2694,6 +2796,9 @@ packages: '@types/markdown-it@12.2.3': resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + '@types/markdown-it@13.0.8': + resolution: {integrity: sha512-V+KmpgiipS+zoypeUSS9ojesWtY/0k4XfqcK2fnVrX/qInJhX7rsCxZ/rygiPH2zxlPPrhfuW0I6ddMcWTKLsg==} + '@types/markdown-it@14.0.1': resolution: {integrity: sha512-6WfOG3jXR78DW8L5cTYCVVGAsIFZskRHCDo5tbqa+qtKVt4oDRVH7hyIWu1SpDQJlmIoEivNQZ5h+AGAOrgOtQ==} @@ -2909,6 +3014,14 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@unocss/astro@0.58.9': + resolution: {integrity: sha512-VWfHNC0EfawFxLfb3uI+QcMGBN+ju+BYtutzeZTjilLKj31X2UpqIh8fepixL6ljgZzB3fweqg2xtUMC0gMnoQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + '@unocss/astro@0.59.4': resolution: {integrity: sha512-DU3OR5MMR1Uvvec4/wB9EetDASHRg19Moy6z/MiIhn8JWJ0QzWYgSeJcfUX8exomMYv6WUEQJL+CyLI34Wmn8w==} peerDependencies: @@ -2917,84 +3030,167 @@ packages: vite: optional: true + '@unocss/cli@0.58.9': + resolution: {integrity: sha512-q7qlwX3V6UaqljWUQ5gMj36yTA9eLuuRywahdQWt1ioy4aPF/MEEfnMBZf/ntrqf5tIT5TO8fE11nvCco2Q/sA==} + engines: {node: '>=14'} + hasBin: true + '@unocss/cli@0.59.4': resolution: {integrity: sha512-TT+WKedSifhsRqnpoYD2LfyYipVzEbzIU4DDGIaDNeDxGXYOGpb876zzkPDcvZSpI37IJ/efkkV7PGYpPBcQBQ==} engines: {node: '>=14'} hasBin: true + '@unocss/config@0.58.9': + resolution: {integrity: sha512-90wRXIyGNI8UenWxvHUcH4l4rgq813MsTzYWsf6ZKyLLvkFjV2b2EfGXI27GPvZ7fVE1OAqx+wJNTw8CyQxwag==} + engines: {node: '>=14'} + '@unocss/config@0.59.4': resolution: {integrity: sha512-h3yhj+D5Ygn5R7gbK4wMrtXZX6FF5DF6YD517sSSb0XB3lxHD9PhhT4HaV1hpHknvu0cMFU3460M45+TN1TI0Q==} engines: {node: '>=14'} + '@unocss/core@0.58.9': + resolution: {integrity: sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==} + '@unocss/core@0.59.4': resolution: {integrity: sha512-bBZ1sgcAtezQVZ1BST9IS3jqcsTLyqKNjiIf7FTnX3DHpfpYuMDFzSOtmkZDzBleOLO/CtcRWjT0HwTSQAmV0A==} + '@unocss/extractor-arbitrary-variants@0.58.9': + resolution: {integrity: sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==} + '@unocss/extractor-arbitrary-variants@0.59.4': resolution: {integrity: sha512-RDe4FgMGJQ+tp9GLvhPHni7Cc2O0lHBRMElVlN8LoXJAdODMICdbrEPGJlEfrc+7x/QgVFoR895KpYJh3hIgGA==} + '@unocss/inspector@0.58.9': + resolution: {integrity: sha512-uRzqkCNeBmEvFePXcfIFcQPMlCXd9/bLwa5OkBthiOILwQdH1uRIW3GWAa2SWspu+kZLP0Ly3SjZ9Wqi+5ZtTw==} + '@unocss/inspector@0.59.4': resolution: {integrity: sha512-QczJFNDiggmekkJyNcbcZIUVwlhvxz7ZwjnSf0w7K4znxfjKkZ1hNUbqLviM1HumkTKOdT27VISW7saN/ysO4w==} + '@unocss/postcss@0.58.9': + resolution: {integrity: sha512-PnKmH6Qhimw35yO6u6yx9SHaX2NmvbRNPDvMDHA/1xr3M8L0o8U88tgKbWfm65NEGF3R1zJ9A8rjtZn/LPkgPA==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + '@unocss/postcss@0.59.4': resolution: {integrity: sha512-KVz+AD7McHKp7VEWHbFahhyyVEo0oP/e1vnuNSuPlHthe+1V2zfH6lps+iJcvfL2072r5J+0PvD/1kOp5ryUSg==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 + '@unocss/preset-attributify@0.58.9': + resolution: {integrity: sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==} + '@unocss/preset-attributify@0.59.4': resolution: {integrity: sha512-BeogWuYaIakC1gmOZFFCjFVWmu/m3AqEX8UYQS6tY6lAaK2L4Qf4AstYBlT2zAMxy9LNxPDxFQrvfSfFk5Klsg==} + '@unocss/preset-icons@0.58.9': + resolution: {integrity: sha512-9dS48+yAunsbS0ylOW2Wisozwpn3nGY1CqTiidkUnrMnrZK3al579A7srUX9NyPWWDjprO7eU/JkWbdDQSmFFA==} + '@unocss/preset-icons@0.59.4': resolution: {integrity: sha512-Afjwh5oC4KRE8TNZDUkRK6hvvV1wKLrS1e5trniE0B0AM9HK3PBolQaIU7QmzPv6WQrog+MZgIwafg1eqsPUCA==} + '@unocss/preset-mini@0.58.9': + resolution: {integrity: sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==} + '@unocss/preset-mini@0.59.4': resolution: {integrity: sha512-ZLywGrXi1OCr4My5vX2rLUb5Xgx6ufR9WTQOvpQJGBdIV/jnZn/pyE5avCs476SnOq2K172lnd8mFmTK7/zArA==} + '@unocss/preset-tagify@0.58.9': + resolution: {integrity: sha512-obh75XrRmxYwrQMflzvhQUMeHwd/R9bEDhTWUW9aBTolBy4eNypmQwOhHCKh5Xi4Dg6o0xj6GWC/jcCj1SPLog==} + '@unocss/preset-tagify@0.59.4': resolution: {integrity: sha512-vWMdTUoghOSmTbdmZtERssffmdUdOuhh4vUdl0R8Kv6KxB0PkvEFCu2FItn97nRJdSPlZSFxxDkaOIg9w+STNQ==} + '@unocss/preset-typography@0.58.9': + resolution: {integrity: sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==} + '@unocss/preset-typography@0.59.4': resolution: {integrity: sha512-ZX9bxZUqlXK1qEDzO5lkK96ICt9itR/oNyn/7mMc1JPqwj263LumQMn5silocgzoLSUXEeq//L6GylqYjkL8GA==} + '@unocss/preset-uno@0.58.9': + resolution: {integrity: sha512-Fze+X2Z/EegCkRdDRgwwvFBmXBenNR1AG8KxAyz8iPeWbhOBaRra2sn2ScryrfH6SbJHpw26ZyJXycAdS0Fq3A==} + '@unocss/preset-uno@0.59.4': resolution: {integrity: sha512-G1f8ZluplvXZ3bERj+sM/8zzY//XD++nNOlAQNKOANSVht3qEoJebrfEiMClNpA5qW5VWOZhEhPkh0M7GsXtnA==} + '@unocss/preset-web-fonts@0.58.9': + resolution: {integrity: sha512-XtiO+Z+RYnNYomNkS2XxaQiY++CrQZKOfNGw5htgIrb32QtYVQSkyYQ3jDw7JmMiCWlZ4E72cV/zUb++WrZLxg==} + '@unocss/preset-web-fonts@0.59.4': resolution: {integrity: sha512-ehutTjKHnf2KPmdatN42N9a8+y+glKSU3UlcBRNsVIIXVIlaBQuPVGZSPhnMtrKD17IgWylXq2K6RJK+ab0hZA==} + '@unocss/preset-wind@0.58.9': + resolution: {integrity: sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==} + '@unocss/preset-wind@0.59.4': resolution: {integrity: sha512-CNX6w0ZpSQg/i1oF0/WKWzto8PtLqoknC5h8JmmcGb7VsyBQeV0oNnhbURxpbuMEhbv1MWVIGvk8a+P6y0rFkQ==} + '@unocss/reset@0.58.9': + resolution: {integrity: sha512-nA2pg3tnwlquq+FDOHyKwZvs20A6iBsKPU7Yjb48JrNnzoaXqE+O9oN6782IG2yKVW4AcnsAnAnM4cxXhGzy1w==} + '@unocss/reset@0.59.4': resolution: {integrity: sha512-Upy4xzdWl4RChbLAXBq1BoR4WqxXMoIfjvtcwSZcZK2sylXCFAseSWnyzJFdSiXPqNfmMuNgPXgiSxiQB+cmNA==} + '@unocss/rule-utils@0.58.9': + resolution: {integrity: sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==} + engines: {node: '>=14'} + '@unocss/rule-utils@0.59.4': resolution: {integrity: sha512-1qoLJlBWAkS4D4sg73990S1MT7E8E5md/YhopKjTQuEC9SyeVmEg+5pR/Xd8xhPKMqbcuBPl/DS8b6l/GQO56A==} engines: {node: '>=14'} + '@unocss/scope@0.58.9': + resolution: {integrity: sha512-BIwcpx0R3bE0rYa9JVDJTk0GX32EBvnbvufBpNkWfC5tb7g+B7nMkVq9ichanksYCCxrIQQo0mrIz5PNzu9sGA==} + '@unocss/scope@0.59.4': resolution: {integrity: sha512-wBQJ39kw4Tfj4km7AoGvSIobPKVnRZVsgc0bema5Y0PL3g1NeVQ/LopBI2zEJWdpxGXUWxSDsXm7BZo6qVlD/A==} + '@unocss/transformer-attributify-jsx-babel@0.58.9': + resolution: {integrity: sha512-UGaQoGZg+3QrsPtnGHPECmsGn4EQb2KSdZ4eGEn2YssjKv+CcQhzRvpEUgnuF/F+jGPkCkS/G/YEQBHRWBY54Q==} + '@unocss/transformer-attributify-jsx-babel@0.59.4': resolution: {integrity: sha512-xtCRSgeTaDBiNJLVX7oOSFe63JiFB5nrdK23PHn3IlZM9O7Bxx4ZxI3MQJtFZFQNE+INFko+DVyY1WiFEm1p/Q==} + '@unocss/transformer-attributify-jsx@0.58.9': + resolution: {integrity: sha512-jpL3PRwf8t43v1agUdQn2EHGgfdWfvzsMxFtoybO88xzOikzAJaaouteNtojc/fQat2T9iBduDxVj5egdKmhdQ==} + '@unocss/transformer-attributify-jsx@0.59.4': resolution: {integrity: sha512-m4b83utzKMfUQH/45V2QkjJoXd8Tu2pRP1nic91Xf7QRceyKDD+BxoTneo2JNC2K274cQu7HqqotnCm2aFfEGw==} + '@unocss/transformer-compile-class@0.58.9': + resolution: {integrity: sha512-l2VpCqelJ6Tgc1kfSODxBtg7fCGPVRr2EUzTg1LrGYKa2McbKuc/wV/2DWKHGxL6+voWi7a2C9XflqGDXXutuQ==} + '@unocss/transformer-compile-class@0.59.4': resolution: {integrity: sha512-Vgk2OCLPW0pU+Uzr1IgDtHVspSBb+gPrQFkV+5gxHk9ZdKi3oYKxLuufVWYDSwv7o9yfQGbYrMH9YLsjRsnA7Q==} + '@unocss/transformer-directives@0.58.9': + resolution: {integrity: sha512-pLOUsdoY2ugVntJXg0xuGjO9XZ2xCiMxTPRtpZ4TsEzUtdEzMswR06Y8VWvNciTB/Zqxcz9ta8rD0DKePOfSuw==} + '@unocss/transformer-directives@0.59.4': resolution: {integrity: sha512-nXUTEclUbs0vQ4KfLhKt4J/5SLSEq1az2FNlJmiXMmqmn75X89OrtCu2OJu9sGXhn+YyBApxgcSSdxmtpqMi1Q==} + '@unocss/transformer-variant-group@0.58.9': + resolution: {integrity: sha512-3A6voHSnFcyw6xpcZT6oxE+KN4SHRnG4z862tdtWvRGcN+jGyNr20ylEZtnbk4xj0VNMeGHHQRZ0WLvmrAwvOQ==} + '@unocss/transformer-variant-group@0.59.4': resolution: {integrity: sha512-9XLixxn1NRgP62Kj4R/NC/rpqhql5F2s6ulJ8CAMTEbd/NylVhEANluPGDVUGcLJ4cj6E02hFa8C1PLGSm7/xw==} + '@unocss/vite@0.58.9': + resolution: {integrity: sha512-mmppBuulAHCal+sC0Qz36Y99t0HicAmznpj70Kzwl7g/yvXwm58/DW2OnpCWw+uA8/JBft/+z3zE+XvrI+T1HA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + '@unocss/vite@0.59.4': resolution: {integrity: sha512-q7GN7vkQYn79n7vYIUlaa7gXGwc7pk0Qo3z3ZFwWGE43/DtZnn2Hwl5UjgBAgi9McA+xqHJEHRsJnI7HJPHUYA==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + '@vite-pwa/vitepress@0.3.1': + resolution: {integrity: sha512-krgiYQCWXUkpQCx+IHdsanFFpAzfH5pY86MARDa6as5ZNmG18mb/gC6MEahFV67V0xfMfTaNL4B8dQNzzcikLw==} + peerDependencies: + vite-plugin-pwa: '>=0.17.2 <1' + '@vite-pwa/vitepress@0.4.0': resolution: {integrity: sha512-MrsSCK5EBCzQAQgq5/3XHaFIjkypda58Wzy6PkDwZoRHnWexik0C2GUxMOe+RA+qdpGxB0mEkhqajeOmuYMvhw==} peerDependencies: @@ -3004,6 +3200,13 @@ packages: '@vite-pwa/assets-generator': optional: true + '@vitejs/plugin-vue@4.6.2': + resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.2.25 + '@vitejs/plugin-vue@5.0.4': resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3747,9 +3950,15 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} @@ -3893,6 +4102,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} @@ -4635,6 +4847,11 @@ packages: es6-weak-map@2.0.3: resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -5357,6 +5574,27 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + + hast-util-to-html@9.0.1: + resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} @@ -5385,6 +5623,9 @@ packages: html-to-image@1.11.11: resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + htmlparser2@9.1.0: resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} @@ -6363,6 +6604,9 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -6580,6 +6824,10 @@ packages: mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -7122,6 +7370,9 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -7388,6 +7639,11 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + rollup@4.17.2: resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7539,6 +7795,12 @@ packages: shiki@1.4.0: resolution: {integrity: sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==} + shikiji-transformers@0.7.6: + resolution: {integrity: sha512-yTp+7JMD/aXbV9ndn14eo9IK/UNt8iDsLNyqlOmCtcldlkqWE9T2YKAlOHOTVaeDfYWUWZa2EgSXb/CBfepBrw==} + + shikiji@0.7.6: + resolution: {integrity: sha512-KzEtvSGQtBvfwVIB70kOmIfl/5rz1LC8j+tvlHXsJKAIdONNQvG1at7ivUUq3xUctqgO6fsO3AGomUSh0F+wsQ==} + side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -7641,6 +7903,9 @@ packages: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spawn-command@0.0.2: resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} @@ -7763,6 +8028,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} @@ -7894,11 +8162,6 @@ packages: engines: {node: '>=10'} hasBin: true - terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} - engines: {node: '>=10'} - hasBin: true - terser@5.31.1: resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} engines: {node: '>=10'} @@ -7995,6 +8258,9 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} @@ -8179,6 +8445,9 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} @@ -8203,6 +8472,18 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unocss@0.58.9: + resolution: {integrity: sha512-aqANXXP0RrtN4kSaTLn/7I6wh8o45LUdVgPzGu7Fan2DfH2+wpIs6frlnlHlOymnb+52dp6kXluQinddaUKW1A==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.58.9 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + unocss@0.59.4: resolution: {integrity: sha512-QmCVjRObvVu/gsGrJGVt0NnrdhFFn314BUZn2WQyXV9rIvHLRmG5bIu0j5vibJkj7ZhFchTrnTM1pTFXP1xt5g==} engines: {node: '>=14'} @@ -8285,6 +8566,9 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} + vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -8301,8 +8585,16 @@ packages: peerDependencies: vite: '>=4 <=6' - vite-plugin-pwa@0.19.8: - resolution: {integrity: sha512-e1oK0dfhzhDhY3VBuML6c0h8Xfx6EkOVYqolj7g+u8eRfdauZe5RLteCIA/c5gH0CBQ0CNFAuv/AFTx4Z7IXTw==} + vite-plugin-pwa@0.17.5: + resolution: {integrity: sha512-UxRNPiJBzh4tqU/vc8G2TxmrUTzT6BqvSzhszLk62uKsf+npXdvLxGDz9C675f4BJi6MbD2tPnJhi5txlMzxbQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 + workbox-build: ^7.0.0 + workbox-window: ^7.0.0 + + vite-plugin-pwa@0.19.8: + resolution: {integrity: sha512-e1oK0dfhzhDhY3VBuML6c0h8Xfx6EkOVYqolj7g+u8eRfdauZe5RLteCIA/c5gH0CBQ0CNFAuv/AFTx4Z7IXTw==} engines: {node: '>=16.0.0'} peerDependencies: '@vite-pwa/assets-generator': ^0.2.4 @@ -8313,6 +8605,34 @@ packages: '@vite-pwa/assets-generator': optional: true + vite@4.5.3: + resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vite@5.2.10: resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8349,6 +8669,18 @@ packages: vitepress: ^1.0.0-rc.35 vue: '3' + vitepress@1.0.0-rc.31: + resolution: {integrity: sha512-ikH9pIjOOAbyoYAGBVfTz8TzuXp+UoWaIRMU4bw/oiTg8R65SbAaGKY84xx6TuL+f4VqUJ8lhzW82YyxSLvstA==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4.3.2 + postcss: ^8.4.31 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + vitepress@1.1.4: resolution: {integrity: sha512-bWIzFZXpPB6NIDBuWnS20aMADH+FcFKDfQNYFvbOWij03PR29eImTceQHIzCKordjXYBhM/TjE5VKFTUJ3EheA==} hasBin: true @@ -8483,6 +8815,9 @@ packages: wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -9207,16 +9542,14 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.24.4': {} - '@babel/compat-data@7.24.7': {} '@babel/core@7.24.4': @@ -9242,17 +9575,17 @@ snapshots: '@babel/core@7.24.5': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.5) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -9281,7 +9614,7 @@ snapshots: '@babel/generator@7.24.5': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -9293,10 +9626,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.22.5': - dependencies: - '@babel/types': 7.24.5 - '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.24.7 @@ -9310,8 +9639,8 @@ snapshots: '@babel/helper-compilation-targets@7.23.6': dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -9324,19 +9653,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -9403,34 +9719,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.22.20': {} - '@babel/helper-environment-visitor@7.24.7': dependencies: '@babel/types': 7.24.7 - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - '@babel/helper-function-name@7.24.7': dependencies: '@babel/template': 7.24.7 '@babel/types': 7.24.7 - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.5 - '@babel/helper-hoist-variables@7.24.7': dependencies: '@babel/types': 7.24.7 - '@babel/helper-member-expression-to-functions@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@babel/helper-member-expression-to-functions@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -9438,10 +9739,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.24.3': - dependencies: - '@babel/types': 7.24.5 - '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -9452,20 +9749,13 @@ snapshots: '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.4)': dependencies: @@ -9478,9 +9768,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 @@ -9489,16 +9779,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.22.5': + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/types': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: '@babel/types': 7.24.7 - '@babel/helper-plugin-utils@7.24.5': {} - '@babel/helper-plugin-utils@7.24.7': {} '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.4)': @@ -9519,13 +9814,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -9544,10 +9832,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-simple-access@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -9555,10 +9839,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -9566,26 +9846,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-split-export-declaration@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@babel/helper-split-export-declaration@7.24.7': dependencies: '@babel/types': 7.24.7 - '@babel/helper-string-parser@7.24.1': {} - '@babel/helper-string-parser@7.24.7': {} '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.24.5': {} - '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.23.5': {} - '@babel/helper-validator-option@7.24.7': {} '@babel/helper-wrap-function@7.24.7': @@ -9599,9 +9869,9 @@ snapshots: '@babel/helpers@7.24.5': dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -9610,13 +9880,6 @@ snapshots: '@babel/template': 7.24.7 '@babel/types': 7.24.7 - '@babel/highlight@7.24.2': - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -9626,7 +9889,7 @@ snapshots: '@babel/parser@7.24.5': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 '@babel/parser@7.24.7': dependencies: @@ -9695,37 +9958,42 @@ snapshots: '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.4)': dependencies: @@ -9780,127 +10048,127 @@ snapshots: '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.4)': dependencies: @@ -9915,22 +10183,22 @@ snapshots: '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.4)': dependencies: @@ -10248,13 +10516,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-simple-access': 7.24.5 - '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -10551,13 +10812,15 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.5)': + '@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.4)': dependencies: @@ -10605,7 +10868,7 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - '@babel/preset-env@7.24.5(@babel/core@7.24.4)': + '@babel/preset-env@7.24.7(@babel/core@7.24.4)': dependencies: '@babel/compat-data': 7.24.7 '@babel/core': 7.24.4 @@ -10793,14 +11056,16 @@ snapshots: '@babel/types': 7.24.7 esutils: 2.0.3 - '@babel/preset-typescript@7.24.1(@babel/core@7.24.5)': + '@babel/preset-typescript@7.24.1(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color '@babel/regjsgen@0.8.0': {} @@ -10818,9 +11083,9 @@ snapshots: '@babel/template@7.24.0': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@babel/template@7.24.7': dependencies: @@ -10830,15 +11095,15 @@ snapshots: '@babel/traverse@7.24.5': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - debug: 4.3.4(supports-color@8.1.1) + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -10860,8 +11125,8 @@ snapshots: '@babel/types@7.24.5': dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 '@babel/types@7.24.7': @@ -11089,11 +11354,11 @@ snapshots: '@cspell/strong-weak-map@8.7.0': {} - '@cypress/code-coverage@3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2))': + '@cypress/code-coverage@3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2))': dependencies: '@babel/core': 7.24.4 - '@babel/preset-env': 7.24.5(@babel/core@7.24.4) - '@cypress/webpack-preprocessor': 6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2)) + '@babel/preset-env': 7.24.7(@babel/core@7.24.4) + '@cypress/webpack-preprocessor': 6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2)) babel-loader: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)) chalk: 4.1.2 cypress: 13.7.3 @@ -11129,10 +11394,10 @@ snapshots: tunnel-agent: 0.6.0 uuid: 8.3.2 - '@cypress/webpack-preprocessor@6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2))': + '@cypress/webpack-preprocessor@6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2))': dependencies: '@babel/core': 7.24.4 - '@babel/preset-env': 7.24.5(@babel/core@7.24.4) + '@babel/preset-env': 7.24.7(@babel/core@7.24.4) babel-loader: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)) bluebird: 3.7.1 debug: 4.3.4(supports-color@8.1.1) @@ -11186,132 +11451,198 @@ snapshots: '@esbuild/aix-ppc64@0.20.2': optional: true + '@esbuild/android-arm64@0.18.20': + optional: true + '@esbuild/android-arm64@0.19.12': optional: true '@esbuild/android-arm64@0.20.2': optional: true + '@esbuild/android-arm@0.18.20': + optional: true + '@esbuild/android-arm@0.19.12': optional: true '@esbuild/android-arm@0.20.2': optional: true + '@esbuild/android-x64@0.18.20': + optional: true + '@esbuild/android-x64@0.19.12': optional: true '@esbuild/android-x64@0.20.2': optional: true + '@esbuild/darwin-arm64@0.18.20': + optional: true + '@esbuild/darwin-arm64@0.19.12': optional: true '@esbuild/darwin-arm64@0.20.2': optional: true + '@esbuild/darwin-x64@0.18.20': + optional: true + '@esbuild/darwin-x64@0.19.12': optional: true '@esbuild/darwin-x64@0.20.2': optional: true + '@esbuild/freebsd-arm64@0.18.20': + optional: true + '@esbuild/freebsd-arm64@0.19.12': optional: true '@esbuild/freebsd-arm64@0.20.2': optional: true + '@esbuild/freebsd-x64@0.18.20': + optional: true + '@esbuild/freebsd-x64@0.19.12': optional: true '@esbuild/freebsd-x64@0.20.2': optional: true + '@esbuild/linux-arm64@0.18.20': + optional: true + '@esbuild/linux-arm64@0.19.12': optional: true '@esbuild/linux-arm64@0.20.2': optional: true + '@esbuild/linux-arm@0.18.20': + optional: true + '@esbuild/linux-arm@0.19.12': optional: true '@esbuild/linux-arm@0.20.2': optional: true + '@esbuild/linux-ia32@0.18.20': + optional: true + '@esbuild/linux-ia32@0.19.12': optional: true '@esbuild/linux-ia32@0.20.2': optional: true + '@esbuild/linux-loong64@0.18.20': + optional: true + '@esbuild/linux-loong64@0.19.12': optional: true '@esbuild/linux-loong64@0.20.2': optional: true + '@esbuild/linux-mips64el@0.18.20': + optional: true + '@esbuild/linux-mips64el@0.19.12': optional: true '@esbuild/linux-mips64el@0.20.2': optional: true + '@esbuild/linux-ppc64@0.18.20': + optional: true + '@esbuild/linux-ppc64@0.19.12': optional: true '@esbuild/linux-ppc64@0.20.2': optional: true + '@esbuild/linux-riscv64@0.18.20': + optional: true + '@esbuild/linux-riscv64@0.19.12': optional: true '@esbuild/linux-riscv64@0.20.2': optional: true + '@esbuild/linux-s390x@0.18.20': + optional: true + '@esbuild/linux-s390x@0.19.12': optional: true '@esbuild/linux-s390x@0.20.2': optional: true + '@esbuild/linux-x64@0.18.20': + optional: true + '@esbuild/linux-x64@0.19.12': optional: true '@esbuild/linux-x64@0.20.2': optional: true + '@esbuild/netbsd-x64@0.18.20': + optional: true + '@esbuild/netbsd-x64@0.19.12': optional: true '@esbuild/netbsd-x64@0.20.2': optional: true + '@esbuild/openbsd-x64@0.18.20': + optional: true + '@esbuild/openbsd-x64@0.19.12': optional: true '@esbuild/openbsd-x64@0.20.2': optional: true + '@esbuild/sunos-x64@0.18.20': + optional: true + '@esbuild/sunos-x64@0.19.12': optional: true '@esbuild/sunos-x64@0.20.2': optional: true + '@esbuild/win32-arm64@0.18.20': + optional: true + '@esbuild/win32-arm64@0.19.12': optional: true '@esbuild/win32-arm64@0.20.2': optional: true + '@esbuild/win32-ia32@0.18.20': + optional: true + '@esbuild/win32-ia32@0.19.12': optional: true '@esbuild/win32-ia32@0.20.2': optional: true + '@esbuild/win32-x64@0.18.20': + optional: true + '@esbuild/win32-x64@0.19.12': optional: true @@ -11411,7 +11742,7 @@ snapshots: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.7 '@iconify/types': 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 kolorist: 1.8.0 local-pkg: 0.5.0 mlly: 1.6.1 @@ -11572,7 +11903,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -11823,24 +12154,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 '@types/body-parser@1.19.5': dependencies: @@ -12056,6 +12387,10 @@ snapshots: dependencies: '@types/node': 20.12.7 + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.2 + '@types/http-cache-semantics@4.0.4': {} '@types/http-errors@2.0.4': {} @@ -12103,6 +12438,11 @@ snapshots: '@types/linkify-it': 3.0.5 '@types/mdurl': 1.0.5 + '@types/markdown-it@13.0.8': + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 + '@types/markdown-it@14.0.1': dependencies: '@types/linkify-it': 3.0.5 @@ -12357,6 +12697,16 @@ snapshots: '@ungap/structured-clone@1.2.0': {} + '@unocss/astro@0.58.9(rollup@4.17.2)(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.17.2)(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1)) + optionalDependencies: + vite: 4.5.3(@types/node@20.12.7)(terser@5.31.1) + transitivePeerDependencies: + - rollup + '@unocss/astro@0.59.4(rollup@2.79.1)(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))': dependencies: '@unocss/core': 0.59.4 @@ -12367,6 +12717,24 @@ snapshots: transitivePeerDependencies: - rollup + '@unocss/cli@0.58.9(rollup@4.17.2)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/preset-uno': 0.58.9 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.10 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + '@unocss/cli@0.59.4(rollup@2.79.1)': dependencies: '@ampproject/remapping': 2.3.0 @@ -12385,17 +12753,35 @@ snapshots: transitivePeerDependencies: - rollup + '@unocss/config@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + unconfig: 0.3.13 + '@unocss/config@0.59.4': dependencies: '@unocss/core': 0.59.4 unconfig: 0.3.13 + '@unocss/core@0.58.9': {} + '@unocss/core@0.59.4': {} + '@unocss/extractor-arbitrary-variants@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants@0.59.4': dependencies: '@unocss/core': 0.59.4 + '@unocss/inspector@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + gzip-size: 6.0.0 + sirv: 2.0.4 + '@unocss/inspector@0.59.4': dependencies: '@unocss/core': 0.59.4 @@ -12403,6 +12789,16 @@ snapshots: gzip-size: 6.0.0 sirv: 2.0.4 + '@unocss/postcss@0.58.9(postcss@8.4.38)': + dependencies: + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.10 + postcss: 8.4.38 + '@unocss/postcss@0.59.4(postcss@8.4.38)': dependencies: '@unocss/config': 0.59.4 @@ -12413,10 +12809,22 @@ snapshots: magic-string: 0.30.10 postcss: 8.4.38 + '@unocss/preset-attributify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-attributify@0.59.4': dependencies: '@unocss/core': 0.59.4 + '@unocss/preset-icons@0.58.9': + dependencies: + '@iconify/utils': 2.1.23 + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + transitivePeerDependencies: + - supports-color + '@unocss/preset-icons@0.59.4': dependencies: '@iconify/utils': 2.1.23 @@ -12425,21 +12833,43 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/preset-mini@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/rule-utils': 0.58.9 + '@unocss/preset-mini@0.59.4': dependencies: '@unocss/core': 0.59.4 '@unocss/extractor-arbitrary-variants': 0.59.4 '@unocss/rule-utils': 0.59.4 + '@unocss/preset-tagify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-tagify@0.59.4': dependencies: '@unocss/core': 0.59.4 + '@unocss/preset-typography@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-typography@0.59.4': dependencies: '@unocss/core': 0.59.4 '@unocss/preset-mini': 0.59.4 + '@unocss/preset-uno@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/rule-utils': 0.58.9 + '@unocss/preset-uno@0.59.4': dependencies: '@unocss/core': 0.59.4 @@ -12447,53 +12877,116 @@ snapshots: '@unocss/preset-wind': 0.59.4 '@unocss/rule-utils': 0.59.4 + '@unocss/preset-web-fonts@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + '@unocss/preset-web-fonts@0.59.4': dependencies: '@unocss/core': 0.59.4 ofetch: 1.3.4 + '@unocss/preset-wind@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/rule-utils': 0.58.9 + '@unocss/preset-wind@0.59.4': dependencies: '@unocss/core': 0.59.4 '@unocss/preset-mini': 0.59.4 '@unocss/rule-utils': 0.59.4 + '@unocss/reset@0.58.9': {} + '@unocss/reset@0.59.4': {} + '@unocss/rule-utils@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + magic-string: 0.30.10 + '@unocss/rule-utils@0.59.4': dependencies: '@unocss/core': 0.59.4 magic-string: 0.30.10 + '@unocss/scope@0.58.9': {} + '@unocss/scope@0.59.4': {} + '@unocss/transformer-attributify-jsx-babel@0.58.9': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.7) + '@unocss/core': 0.58.9 + transitivePeerDependencies: + - supports-color + '@unocss/transformer-attributify-jsx-babel@0.59.4': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.7) '@unocss/core': 0.59.4 transitivePeerDependencies: - supports-color + '@unocss/transformer-attributify-jsx@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/transformer-attributify-jsx@0.59.4': dependencies: '@unocss/core': 0.59.4 + '@unocss/transformer-compile-class@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/transformer-compile-class@0.59.4': dependencies: '@unocss/core': 0.59.4 + '@unocss/transformer-directives@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + '@unocss/transformer-directives@0.59.4': dependencies: '@unocss/core': 0.59.4 '@unocss/rule-utils': 0.59.4 css-tree: 2.3.1 + '@unocss/transformer-variant-group@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/transformer-variant-group@0.59.4': dependencies: '@unocss/core': 0.59.4 + '@unocss/vite@0.58.9(rollup@4.17.2)(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/inspector': 0.58.9 + '@unocss/scope': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.10 + vite: 4.5.3(@types/node@20.12.7)(terser@5.31.1) + transitivePeerDependencies: + - rollup + '@unocss/vite@0.59.4(rollup@2.79.1)(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))': dependencies: '@ampproject/remapping': 2.3.0 @@ -12510,13 +13003,22 @@ snapshots: transitivePeerDependencies: - rollup + '@vite-pwa/vitepress@0.3.1(vite-plugin-pwa@0.17.5(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.1.0))': + dependencies: + vite-plugin-pwa: 0.17.5(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.1.0) + '@vite-pwa/vitepress@0.4.0(vite-plugin-pwa@0.19.8(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0))': dependencies: vite-plugin-pwa: 0.19.8(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) - '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5))': + '@vitejs/plugin-vue@4.6.2(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))(vue@3.4.26(typescript@5.4.5))': + dependencies: + vite: 4.5.3(@types/node@20.12.7)(terser@5.31.1) + vue: 3.4.26(typescript@5.4.5) + + '@vitejs/plugin-vue@4.6.2(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(vue@3.4.26(typescript@5.4.5))': dependencies: - vite: 5.2.10(@types/node@20.12.7)(terser@5.31.0) + vite: 5.2.10(@types/node@20.12.7)(terser@5.31.1) vue: 3.4.26(typescript@5.4.5) '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(vue@3.4.26(typescript@5.4.5))': @@ -12585,14 +13087,14 @@ snapshots: '@vue/compat@3.4.21(vue@3.4.21(typescript@5.4.5))': dependencies: - '@babel/parser': 7.24.5 + '@babel/parser': 7.24.7 estree-walker: 2.0.2 source-map-js: 1.2.0 vue: 3.4.21(typescript@5.4.5) '@vue/compiler-core@3.4.21': dependencies: - '@babel/parser': 7.24.5 + '@babel/parser': 7.24.7 '@vue/shared': 3.4.21 entities: 4.5.0 estree-walker: 2.0.2 @@ -12600,7 +13102,7 @@ snapshots: '@vue/compiler-core@3.4.26': dependencies: - '@babel/parser': 7.24.5 + '@babel/parser': 7.24.7 '@vue/shared': 3.4.26 entities: 4.5.0 estree-walker: 2.0.2 @@ -12618,7 +13120,7 @@ snapshots: '@vue/compiler-sfc@3.4.21': dependencies: - '@babel/parser': 7.24.5 + '@babel/parser': 7.24.7 '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 '@vue/compiler-ssr': 3.4.21 @@ -12630,7 +13132,7 @@ snapshots: '@vue/compiler-sfc@3.4.26': dependencies: - '@babel/parser': 7.24.5 + '@babel/parser': 7.24.7 '@vue/compiler-core': 3.4.26 '@vue/compiler-dom': 3.4.26 '@vue/compiler-ssr': 3.4.26 @@ -12937,7 +13439,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -13132,7 +13634,7 @@ snapshots: avvio@7.2.5: dependencies: archy: 1.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 fastq: 1.17.1 queue-microtask: 1.2.3 transitivePeerDependencies: @@ -13172,7 +13674,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -13182,8 +13684,8 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 @@ -13251,6 +13753,22 @@ snapshots: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + babel-preset-jest@29.6.3(@babel/core@7.24.5): dependencies: '@babel/core': 7.24.5 @@ -13460,8 +13978,12 @@ snapshots: char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} + character-entities-legacy@1.1.4: {} + character-entities-legacy@3.0.0: {} + character-entities@1.2.4: {} character-entities@2.0.2: {} @@ -13616,6 +14138,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@11.0.0: {} commander@11.1.0: {} @@ -14482,6 +15006,31 @@ snapshots: es6-iterator: 2.0.3 es6-symbol: 3.1.4 + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 @@ -15069,7 +15618,7 @@ snapshots: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -15435,6 +15984,74 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-from-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.5.0 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + '@ungap/structured-clone': 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + parse5: 7.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-html@9.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 9.0.4 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-parse5@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + heap@0.2.7: {} highlight.js@10.7.3: {} @@ -15460,6 +16077,8 @@ snapshots: html-to-image@1.11.11: {} + html-void-elements@3.0.0: {} + htmlparser2@9.1.0: dependencies: domelementtype: 2.3.0 @@ -15492,7 +16111,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -15548,7 +16167,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -15814,8 +16433,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.24.5 - '@babel/parser': 7.24.5 + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -15824,8 +16443,8 @@ snapshots: istanbul-lib-instrument@6.0.2: dependencies: - '@babel/core': 7.24.4 - '@babel/parser': 7.24.5 + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.0 @@ -15858,7 +16477,7 @@ snapshots: istanbul-lib-source-maps@5.0.4: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -16045,7 +16664,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -16141,15 +16760,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) - '@babel/types': 7.24.5 + '@babel/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.7) + '@babel/types': 7.24.7 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -16583,8 +17202,8 @@ snapshots: magicast@0.3.4: dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 source-map-js: 1.2.0 make-dir@3.1.0: @@ -16726,6 +17345,18 @@ snapshots: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.3 @@ -17043,6 +17674,8 @@ snapshots: pkg-types: 1.1.0 ufo: 1.5.3 + mrmime@1.0.1: {} + mrmime@2.0.0: {} ms@2.0.0: {} @@ -17325,7 +17958,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -17550,6 +18183,8 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 + property-information@6.5.0: {} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -17840,6 +18475,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + rollup@4.17.2: dependencies: '@types/estree': 1.0.5 @@ -18036,6 +18675,14 @@ snapshots: dependencies: '@shikijs/core': 1.4.0 + shikiji-transformers@0.7.6: + dependencies: + shikiji: 0.7.6 + + shikiji@0.7.6: + dependencies: + hast-util-to-html: 9.0.1 + side-channel@1.0.6: dependencies: call-bind: 1.0.7 @@ -18137,6 +18784,8 @@ snapshots: sourcemap-codec@1.4.8: {} + space-separated-tokens@2.0.2: {} + spawn-command@0.0.2: {} spawn-wrap@2.0.0: @@ -18310,6 +18959,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + stringify-object@3.3.0: dependencies: get-own-enumerable-property-symbols: 3.0.2 @@ -18466,14 +19120,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - terser@5.31.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - optional: true - terser@5.31.1: dependencies: '@jridgewell/source-map': 0.3.6 @@ -18557,6 +19203,8 @@ snapshots: tree-kill@1.2.2: {} + trim-lines@3.0.1: {} + trough@2.2.0: {} ts-api-utils@1.3.0(typescript@5.4.5): @@ -18733,6 +19381,10 @@ snapshots: dependencies: '@types/unist': 3.0.2 + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position@2.0.3: dependencies: '@types/unist': 2.0.10 @@ -18758,6 +19410,35 @@ snapshots: universalify@2.0.1: {} + unocss@0.58.9(postcss@8.4.38)(rollup@4.17.2)(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1)): + dependencies: + '@unocss/astro': 0.58.9(rollup@4.17.2)(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1)) + '@unocss/cli': 0.58.9(rollup@4.17.2) + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/postcss': 0.58.9(postcss@8.4.38) + '@unocss/preset-attributify': 0.58.9 + '@unocss/preset-icons': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-tagify': 0.58.9 + '@unocss/preset-typography': 0.58.9 + '@unocss/preset-uno': 0.58.9 + '@unocss/preset-web-fonts': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/transformer-attributify-jsx': 0.58.9 + '@unocss/transformer-attributify-jsx-babel': 0.58.9 + '@unocss/transformer-compile-class': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + '@unocss/transformer-variant-group': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.17.2)(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1)) + optionalDependencies: + vite: 4.5.3(@types/node@20.12.7)(terser@5.31.1) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + unocss@0.59.4(postcss@8.4.38)(rollup@2.79.1)(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1)): dependencies: '@unocss/astro': 0.59.4(rollup@2.79.1)(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1)) @@ -18808,6 +19489,25 @@ snapshots: - rollup - supports-color + unplugin-vue-components@0.26.0(@babel/parser@7.24.7)(rollup@4.17.2)(vue@3.4.26(typescript@5.4.5)): + dependencies: + '@antfu/utils': 0.7.6 + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + chokidar: 3.6.0 + debug: 4.3.4(supports-color@8.1.1) + fast-glob: 3.3.2 + local-pkg: 0.4.3 + magic-string: 0.30.5 + minimatch: 9.0.3 + resolve: 1.22.4 + unplugin: 1.4.0 + vue: 3.4.26(typescript@5.4.5) + optionalDependencies: + '@babel/parser': 7.24.7 + transitivePeerDependencies: + - rollup + - supports-color + unplugin@1.4.0: dependencies: acorn: 8.11.3 @@ -18823,7 +19523,7 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 uri-js@4.4.1: dependencies: @@ -18861,6 +19561,11 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 + vfile-location@5.0.2: + dependencies: + '@types/unist': 3.0.2 + vfile: 6.0.1 + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 @@ -18875,7 +19580,7 @@ snapshots: vite-node@1.5.3(@types/node@20.12.7)(terser@5.31.1): dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.0 vite: 5.2.10(@types/node@20.12.7)(terser@5.31.1) @@ -18901,6 +19606,17 @@ snapshots: transitivePeerDependencies: - supports-color + vite-plugin-pwa@0.17.5(vite@4.5.3(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.1.0): + dependencies: + debug: 4.3.5 + fast-glob: 3.3.2 + pretty-bytes: 6.1.1 + vite: 4.5.3(@types/node@20.12.7)(terser@5.31.1) + workbox-build: 7.1.0(@types/babel__core@7.20.5) + workbox-window: 7.1.0 + transitivePeerDependencies: + - supports-color + vite-plugin-pwa@0.19.8(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0): dependencies: debug: 4.3.4(supports-color@8.1.1) @@ -18912,15 +19628,15 @@ snapshots: transitivePeerDependencies: - supports-color - vite@5.2.10(@types/node@20.12.7)(terser@5.31.0): + vite@4.5.3(@types/node@20.12.7)(terser@5.31.1): dependencies: - esbuild: 0.20.2 + esbuild: 0.18.20 postcss: 8.4.38 - rollup: 4.17.2 + rollup: 3.29.4 optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 - terser: 5.31.0 + terser: 5.31.1 vite@5.2.10(@types/node@20.12.7)(terser@5.31.1): dependencies: @@ -18932,32 +19648,32 @@ snapshots: fsevents: 2.3.3 terser: 5.31.1 - vitepress-plugin-search@1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)): + vitepress-plugin-search@1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)): dependencies: '@types/flexsearch': 0.7.3 '@types/markdown-it': 12.2.3 flexsearch: 0.7.43 glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5) + vitepress: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5) vue: 3.4.26(typescript@5.4.5) - vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5): + vitepress@1.0.0-rc.31(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5): dependencies: '@docsearch/css': 3.6.0 '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0) - '@shikijs/core': 1.4.0 - '@shikijs/transformers': 1.4.0 - '@types/markdown-it': 14.0.1 - '@vitejs/plugin-vue': 5.0.4(vite@5.2.10(@types/node@20.12.7)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5)) - '@vue/devtools-api': 7.1.3(vue@3.4.26(typescript@5.4.5)) + '@types/markdown-it': 13.0.8 + '@vitejs/plugin-vue': 4.6.2(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(vue@3.4.26(typescript@5.4.5)) + '@vue/devtools-api': 6.6.1 '@vueuse/core': 10.9.0(vue@3.4.26(typescript@5.4.5)) '@vueuse/integrations': 10.9.0(axios@1.6.7)(focus-trap@7.5.4)(vue@3.4.26(typescript@5.4.5)) focus-trap: 7.5.4 mark.js: 8.11.1 minisearch: 6.3.0 - shiki: 1.4.0 - vite: 5.2.10(@types/node@20.12.7)(terser@5.31.0) + mrmime: 1.0.1 + shikiji: 0.7.6 + shikiji-transformers: 0.7.6 + vite: 5.2.10(@types/node@20.12.7)(terser@5.31.1) vue: 3.4.26(typescript@5.4.5) optionalDependencies: postcss: 8.4.38 @@ -19162,6 +19878,8 @@ snapshots: dependencies: minimalistic-assert: 1.0.1 + web-namespaces@2.0.1: {} + web-streams-polyfill@3.3.3: {} webdriver@7.31.1(typescript@5.4.5): diff --git a/run b/run index c25d5b56b4..d528274dce 100755 --- a/run +++ b/run @@ -89,6 +89,9 @@ $(bold ./$name cypress open --project .) $(bold ./$name cypress run --spec cypress/integration/rendering/)$(underline test.spec.ts) Run specific test in cypress +$(bold ./$name pnpm --filter=mermaid types:build-config) + Update mermaid config based on config schema + $(bold xhost +local:) Allow local connections for x11 server