diff --git a/docs/alphatex/bar-metadata.mdx b/docs/alphatex/bar-metadata.mdx index f0ad4e0..4635d14 100644 --- a/docs/alphatex/bar-metadata.mdx +++ b/docs/alphatex/bar-metadata.mdx @@ -9,132 +9,306 @@ clefs, key signatures repeats etc. They follow the format `\tag value value` just like the score metadata. Be sure not to mix the score metadata and the bar metadata of the first bar. -## Time Signatures +## `\ts` -Time signatures have the format `\ts Numerator Denominator` or `\ts common` +```plain title="Syntax" +\ts common +\ts (numerator denominator) +``` -{` +**Description:** Defines the time signature for this and subsequent bars. + +AlphaTab does not yet support polytempo notation where instruments might use different time signatures. +Therefore be sure to only specify the timesignatures once as part of the first track/staff or ensure +they are consistent across the whole document. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| common | Specifies a common (4/4) time signature using the special C symbol | `identifier` | yes | +| numerator | The time signature numerator | `number` | yes | +| numerator | The time signature denominator | `number` | yes | + +**Example:** + +{` \\ts 3 4 | \\ts 4 4 | \\ts 6 8 | \\ts common `} +There are no properties on this metadata. -## Repeats +## `\ro` -Repeats can be started with `\ro` and -be closed with `\rc Count`. Count specifies how many times -the bar range is repeated. +```plain title="Syntax" +\ro +``` -{` +**Description:** Marks the start of a repeat. + +**Values:** None + +**Example:** + +{` +\\ro 1.3 2.3 3.3 4.3 | 5.3 6.3 7.3 8.3 | \\rc 2 1.3 2.3 3.3 4.3 | +\\ro \\rc 3 1.3 2.3 3.3 4.3 +`} + +There are no properties on this metadata. + +## `\rc` + +```plain title="Syntax" +\rc repeats +``` + +**Description:** Marks the end of a repeat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| repeats | The number of repeats which should be played | `number` | yes | + +**Example:** + +{` \\ro 1.3 2.3 3.3 4.3 | 5.3 6.3 7.3 8.3 | \\rc 2 1.3 2.3 3.3 4.3 | \\ro \\rc 3 1.3 2.3 3.3 4.3 `} -### Alternate Endings +There are no properties on this metadata. + +## `\ae` + +```plain title="Syntax" +\ae ending +\ae (ending ending...) +``` + +**Description:** Specifies on which repeats a bar should be played (to build alternate endings). + +**Values:** -Alternate endings in a repeat range are specified with a list of numbers: -`\ae (Repetition Repetition...)` or just `\ae Repetition` if only one number. -Each "Repetition" number specifies in which repetition that ending bar should be played. +| Name | Description | Type | Required | +|------|-------------|------|----------| +| ending | The repeats on which the bar should be played | `number` list | yes | + +**Example:** {` \\ro 1.3 2.3 3.3 4.3 | \\ae (1 2 3) 5.3 6.3 7.3 8.3 | \\ae 4 \\rc 4 5.3 8.3 7.3 6.3 `} -## Key Signatures +There are no properties on this metadata. + +## `\ks` + +```plain title="Syntax" +\ks key +``` + +**Description:** Specifies the key signature for this and subsequent bars. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| key | The key signature | `identifier` | yes | -The key signature can be specified with `\ks Value`. For major keys, the value is one of `Cb, Gb, Db, Ab, Eb, Bb, F, C, G, D, A, E, B, F#, C#`. Their equivalent minor scale can also be used, so `Bminor` is the same as `D` etc. A major scale can also be explicitly written out, like `Dmajor`. +**Example:** + {` \\ks Cb | \\ks C | \\ks C# | \\ks Aminor | \\ks Dmajor | \\ks Bminor `} -The type of key signatures (major or minor) is derived from the used name. +There are no properties on this metadata. + +## `\clef` -## Clef +```plain title="Syntax" +\clef clef +``` -To change the clef simply specify `\clef Clef` where Clef is one of the following -values: `G2, Treble, F4, Bass, C3, Tenor, C4, Alto, N, Neutral` +**Description:** Changes the clef for this and subsequent bars. -To add ottavia to the clef add `\ottava Ottava` where Ottava is one of the following -values: `15ma`, `8va`, `regular`, `8vb`, `15mb`. +**Values:** -Clefs are remembered across bars unless explicitly changed. +| Name | Description | Type | Required | +|------|-------------|------|----------| +| clef | The clef | `identifier` | yes | + +Following clefs are supported: `G2, Treble, F4, Bass, C3, Tenor, C4, Alto, N, Neutral` + +**Example:** {` \\clef G2 | \\clef F4 | \\clef C3 | \\clef C4 | \\clef N | \\clef Treble | \\clef Bass | \\clef Tenor | \\clef Alto | \\clef Neutral | +`} + +## `\ottava` + +```plain title="Syntax" +\ottava ottava +``` + +**Description:** Changes the clef ottave for this and subsequent bars. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| ottava | The clef ottava | `identifier` | yes | + +Following ottavia are supported: `15ma`, `8va`, `regular`, `8vb`, `15mb` + +**Example:** + +{` \\clef F4 \\ottava 15ma | | \\ottava regular | | \\clef C3 \\ottava 8vb | | `} +There are no properties on this metadata. + +## `\tempo` + +```plain title="Syntax" +\tempo tempo +\tempo (tempo label position hide) +``` -## Tempo +**Description:** Adds a tempo change to the bar. -To change the tempo of the score you can specify `\tempo BPM`. +A bar can have multiple tempo changes. They can either be relatively positioned using this metadata tag or +applied via the `tempo` property as beat effect. + +Tempo changes affect the whole song and not only an individual track. +To avoid unexpected side effects, we recomment to specify the tempo changes only once on the first track/staff. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| tempo | The new tempo in BPM | `number` | yes | +| label | A textual label for the tempo | `number` | no | +| position | A relative (ratio) position where within the bar the tempo change should happen | `number` (float, 0-1) | no | +| hide | If specified the tempo change is not visually shown | `identifier` | no | + +**Example:** {` -// score meta also supports \\tempo, therefore we skip the score meta with a dot -. -// change tempo in bars -\\tempo 30 1.3 2.3 3.3 4.3 | -\\tempo 80 1.3 2.3 3.3 4.3 +\\tempo 30 + C4 D4 E4 F4 | +\\tempo (120 "Moderate") +\\tempo (60 "" 0.5 hide) + C4 D4 E4 F4 | `} -## Triplet Feel +There are no properties on this metadata. -To change the triplet feel of a bar, specify `\tf TripletFeel`, where `TripletFeel` is one of the following values: +## `\tf` + +```plain title="Syntax" +\tf tripletFeel +``` + +**Description:** Changes the triplet feel (aka. swing) play style. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| tripletFeel | The triplet feel style | `identifier` | yes | | TripletFeel | Possible values | |-------------------|-----------------------| -| No Triplet Feel | none, no, 0 | -| Triplet 16th | triplet-16th, t16, 1 | -| Triplet 8th | triplet-8th, t8, 2 | -| Dotted 16th | dotted-16th, d16, 3 | -| Dotted 8th | dotted-8th, d8, 4 | -| Scottish 16th | scottish-16th, s16, 5 | -| Scottish 8th | scottish-8th, s8, 6 | +| No Triplet Feel | none | +| Triplet 16th | triplet16th | +| Triplet 8th | triplet8th | +| Dotted 16th | dotted16th | +| Dotted 8th | dotted8th | +| Scottish 16th | scottish16th | +| Scottish 8th | scottish8th | -{` +**Example:** + +{` \\tf none 3.3*4 | -\\tf triplet-16th 3.3*4 | \\tf triplet-8th 3.3*4 | -\\tf dotted-16th 3.3*4 | \\tf dotted-8th 3.3*4 | -\\tf scottish-16th 3.3*4 | \\tf scottish-8th 3.3*4 | -\\tf no 1.1*4 | -\\tf t16 1.1*4 | \\tf t8 1.1*4 | -\\tf d16 1.1*4 | \\tf d8 1.1*4 | -\\tf s16 1.1*4 | \\tf s8 1.1*4 +\\tf triplet16th 3.3*4 | \\tf triplet8th 3.3*4 | +\\tf dotted16th 3.3*4 | \\tf dotted8th 3.3*4 | +\\tf scottish16th 3.3*4 | \\tf scottish8th 3.3*4 | `} -## Anacrusis +There are no properties on this metadata. + +## `\ac` + +```plain title="Syntax" +\ac +``` + +**Description:** Marks the bar as an anacrusis (pick-up) bar. By default bars follow a strict timing defined by the time signature and tempo. Anacrusis (aka. pickup bars) do not follow this rule. -The length of those bars is defined by the actual beats/notes in the bar. Bars can be flagged as anacrusis bars via the `\ac` bar meta. +The length of those bars is defined by the actual beats/notes in the bar. + +**Values:** None + +**Example:** {` \\ks D \\ts 24 16 \\ac r.16 6.3 7.3 9.3 7.3 6.3 | r.16 5.4 7.4 9.4 7.4 5.4 6.3.4{d} 9.6.16 10.6 12.6 10.6 9.6 14.6.4{d} r.16 `} -## Sections +There are no properties on this metadata. -To split your song into individual sections (e.g. intro, chorus, solo etc.) -you can mark a bar as a section start by using `\section` followed by the section name. -If you want to also specify a marker beside the text, use the format `\section Marker Text`. +## `\section` + +```plain title="Syntax" +\section marker text +\section text +``` + +**Description:** Starts a new section within the song (intro, outro,..) + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| marker | The marker for the section, typically a single letter | `string` | no | +| text | The text/description of the new section | `string` | yes | + +**Example:** {` -\\section Intro // simple section +\\section "Intro" // simple section 1.1 1.1 1.1 1.1 | 1.1 1.1 1.1 1.1 | -\\section "Chorus 01" // with spaces in name -1.1 1.1 1.1 1.1 | \\section S Solo // with marker and section name differently 1.1 1.1 1.1 1.1 `} -## Directions +There are no properties on this metadata. + +## `\jump` -To specify play directions (jumps and jump targets) use the `\jump` metadata followed by the respective instruction. -The names should be self explaining if you're familiar with this notation: +```plain title="Syntax" +\jump direction +``` + +**Description:** Adds a direction/jump instruction to the bar. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| direction | The direction to add | `identifier` | yes | **Jump Targets** @@ -164,6 +338,8 @@ The names should be self explaining if you're familiar with this notation: * `DaCoda` * `DaDoubleCoda` +**Example:** + {` . \\ro \\rc 2 3.3*4 | @@ -179,9 +355,19 @@ The names should be self explaining if you're familiar with this notation: 3.3*4 `} -## Free Time +There are no properties on this metadata. + +## `\ft` -To mark bars as free time bars, add the `\ft` tag to it. +```plain title="Syntax" +\ft +``` + +**Description:** Marks the bar as a free-time bar where players are free to vary the playback. + +**Values:** None + +**Example:** {` . @@ -192,54 +378,73 @@ C4*2 | C4*2 | `} +There are no properties on this metadata. -## Transpose +## `\simile` -This metadata affects the whole staff, its recommended to specify this only on the first bar of a staff not later. +```plain title="Syntax" +\simile mark +``` -* `displayTranspose semitones` - Defines the number of semitones to transpose the notes in this staff with. This only affects the display of the notes, not their audio. -* `transpose semitones` - Defines the number of semitones to transpose the notes in this staff with. This affects the display and audio. +**Description:** Adds a simile mark to the bar indicating that the content of the last, or previous two bars should be repeated. -{` -\\track \\staff \\instrument piano - \\displayTranspose -12 - C4.4 D4 E4 F4 | r.1 -\\track \\staff \\instrument piano - \\transpose -12 - r.1 | C4.4 D4 E4 F4 -`} - -## Double Bar +**Values:** -To mark a bar as double bar add `\db` - -{` -\\db 3.3 3.3 3.3 3.3 | 1.1 2.1 3.1 4.1 -`} - -## Simile Marks - -To apply simile marks use the `\simile type` where type is: +| Name | Description | Type | Required | +|------|-------------|------|----------| +| mark | The mark to add | `identifier` | yes | * `none` - No simile mark is applied * `simple` - A simple simile mark. The previous bar is repeated. * `firstofdouble` - A double simile mark. This value is assigned to the first bar of the 2 repeat bars. * `secondofdouble` - A double simile mark. This value is assigned to the second bar of the 2 repeat bars. +**Example:** + {` 3.3*4 | \\simile simple | 3.3*4 | 4.3*4 | \\simile firstofdouble | \\simile secondofdouble `} -## Bar Lines +There are no properties on this metadata. + +## `\barlineLeft` and `\barlineRight` + +```plain title="Syntax" +\barlineLeft style +\barlineRight style +``` + +**Description:** Adjusts the lines which will be shown left and right on the bar. For some special notation needs, the default bar line can be adjusted on every bar. The bar line styles are aligned with the ones from [MusicXML](https://www.w3.org/2021/06/musicxml40/musicxml-reference/data-types/bar-style/). -* `\barlineLeft` adjusts the left bar line -* `\barlineRight` adjusts the right bar line - alphaTab attempts to reuse lines on overlapping styles across bars. +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| style | The line style to use | `identifier` | yes | + +Available styles: + +* `automatic` - Bar lines are determined automatically based on details like repeats and free time (default). +* `dashed` +* `dotted` +* `heavy` +* `heavyheavy` +* `heavylight` +* `lightheavy` +* `lightlight` +* `none` +* `regular` +* `short` +* `tick` + + +**Example:** + {` \\instrument piano . @@ -272,17 +477,148 @@ alphaTab attempts to reuse lines on overlapping styles across bars. \\barlineright tick | `} -* `automatic` - Bar lines are determined automatically based on details like repeats and free time (default). -* `dashed` -* `dotted` -* `heavy` -* `heavyheavy` -* `heavylight` -* `lightheavy` -* `lightlight` -* `none` -* `regular` -* `short` -* `tick` +There are no properties on this metadata. + +## `\scale` + +```plain title="Syntax" +\scale scale +``` + +**Description:** Adjusts the relative scale of the bar when using `systemsLayoutMode: 'UseModelLayout'` with the page layout. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| scale | The scale of the bar within the system | `number` (float) | yes | + +**Example:** + +{` +\\track { defaultSystemsLayout 3 } + \\scale 0.25 :1 c4 | \\scale 0.5 c4 | \\scale 0.25 c4 | + \\scale 0.5 c4 | \\scale 2 c4 | \\scale 0.5 c4 | + c4 | c4 +`} + +There are no properties on this metadata. + +## `\width` +```plain title="Syntax" +\width width +``` + +**Description:** Adjusts the absolute of the bar when using `systemsLayoutMode: 'UseModelLayout'` with the horizontal layout. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| width | The absolute width of the bar | `number` | yes | + +**Example:** + +{` +\\track + \\width 100 :1 c4 | \\width 300 c4 | \\width 350 c4 +`} + + +There are no properties on this metadata. + +### `\sync` + +```plain title="Syntax" +\sync (barIndex occurence millisecondOffset ratioPosition) +``` + +**Description:** Adds a new sync point for synchronizing the music sheet with an external media source like a backing track or video player. + +alphaTex support specifying sync points for the [synchronization with external media](/docs/guides/audio-video-sync). + +It is recommended to add the sync points at the very end of the song but it is also possible +to define them inbetween. + +The `barIndex`, `occurence`, `ratioPosition` values define the absolute position within the music sheet. +The `millisecondOffset` defines the absolute position within the external media. + +With this information known, alphaTab can synchronize the external media with the music sheet. + + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| barIndex | The index of the bar being synced | `number` | yes | +| occurence | The occurence of the bar for which this sync point applies (on repeats) | `number` | yes | +| millisecondOffset | The absolute millisecond offset within the external media | `number` | yes | +| ratioPosition | The relative position within the bar where the synchronization happens | `number` | no | + +**Example:** + +The sample below uses an audio backing track with inconsistent tempos. The sync points correct the tempo differences and the cursor is placed correctly. + +import { AlphaTexSyncPointSample } from '@site/src/components/AlphaTexSyncPointSample'; + + + +## `\accidentals` + +```plain title="Syntax" +\accidentals mode +``` + +**Description:** Changes the mode how alphaTab should treat accidentals when writing pitched notes. + +alphaTab can use the accidentals as specified in alphaTex, or apply accidentals automatically based on the note pitch. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| mode | The mode which should be active | `auto` or `explicit` | yes | + +**Example:** + +{` +\\accidentals explicit + C#4 C4 Eb4 Ax4 | +\\accidentals auto + C#4 C4 Eb4 Ax4 | +`} + +There are no properties on this metadata. + +## `\spd`, `\spu` and `\sph` + +```plain title="Syntax" +\spd position +\sph position +\spu position +``` + +**Description:** Specifies how the sustain petal should be pressed down (`spd`), held (`sph`) or lifted up (`spu`). + +This tag allows specifying the sustain pedal relative to the bar. +The sustain pedal can also be applied via [beat properties](./beat-properties.mdx#spd-sph-spu-and-spe). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| position | The relative position within the bar for the marker | `number` (float, 0-1) | yes | + +**Example:** + +{` +\\spd 0 +\\spu 0.25 +\\spd 0.5 +\\sph 0.75 +\\spu 1 +:8 C4 * 8 +`} +There are no properties on this metadata. \ No newline at end of file diff --git a/docs/alphatex/beat-effects.mdx b/docs/alphatex/beat-effects.mdx deleted file mode 100644 index 9fcd397..0000000 --- a/docs/alphatex/beat-effects.mdx +++ /dev/null @@ -1,338 +0,0 @@ ---- -title: Beat Effects ---- - -import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; - -There are various effects that can be applied to a beat. All beat -effects are specified in braces after the beat: `Beat{Effects}`. -Multiple effects are simply separated by spaces, like `3.3{f v}`. - -## Simple Effects - -Please find the list of supported effects in the example below. - -{` -// fade in, fade out and volume swell -3.3{f} 3.3{fo} 3.3{vs} | -// vibrato (slight and wide) -3.3{v} 3.3{vw} | -// tap -3.3{tt} -// slap -3.3{s} -// pop -3.3{p} -| -// dotted -3.3{d} -// double dotted -3.3{dd} -// pick stroke (su => up, sd => down) -3.3{su} -3.3{sd} -| -// grace (on beat) -3.3{gr ob} -3.3 -// grace (before beat) -3.3{gr} -3.3 -| -// Tuplets (supported variants: 3, 5, 6, 7, 9, 10, 11, 12 or custom) -3.3{tu 3} 3.3{tu 3} 3.3{tu 3} | -3.3{tu 5} 3.3{tu 5} 3.3{tu 5} 3.3{tu 5} 3.3{tu 5} | -3.3{tu 4 3} 3.3{tu 4 3} 3.3{tu 4 3} 3.3{tu 4 3} -| -// tremolo picking (tp duration - where duration can be 8, 16 or 32) -3.3{tp 8} 3.3{tp 16} 3.3{tp 32} -| -// Crescendo / Decrescendo -3.3{cre} 3.3{cre} 3.3{dec} 3.3{dec} -`} - -## Dynamics - -Dynamics are beat effects with the indicator `dy` followed by one of the supported dynamics values PPP, PP, P, MP, MF, F, FF, FFF, PPPP, PPPPP, PPPPPP, FFFF, FFFFF, FFFFFF, SF, SFP, SFPP, FP, RF, RFZ, SFZ, SFFZ, FZ, N, PF, SFZP. - -{` -1.1.8{dy ppp} 1.1{dy pp} 1.1{dy p} 1.1{dy mp} 1.1{dy mf} 1.1{dy f} 1.1{dy ff} 1.1{dy fff} -`} - -## Tuplet Ranges - -You can also specify the tuplet as part of a ranged duration. This makes writing tuplets a bit easier if there are many. -To reset the tuplet range, a new duration range can be started. For individual notes other tuplets can be specified too. -`{tu 1}` can be used to specify no tuplet while a tuplet range is active. - -{` -:4{tu 3} 3.3 3.3 3.3 :8 3.3 3.3 3.3 3.3 | -:8{tu 3} 3.3 3.3 3.3 3.3.16 3.3.16 3.3.16 3.3.2{tu 1} 3.3.16{tu 1} 3.3.4 3.3.4 3.3.4 -`} - -## Tremolo / Whammy Bar - -The tremolo/whammy bar effect is a bit more complex than the others. -You can specify a number of values which are evenly distributed over the -time when the note is played with the format `tb (value1 value2 ...)`. -The values indicate the number of quarter notes increased or decreased while playing (use decimals for quarter notes). - -{` -3.3.1{tb (0 4 0 8)} | -3.3.1{tb (0 -4 0 -8)} | -`} - -To specify a whammy with exact positions (not evenly distributed) you can use `tbe (offset1 value1 offset2 value2)`. -The offset is ranging from 0 to 60. - -{` -3.3.1{tbe (0 0 5 4 30 8 60 0)} -`} - -Additionally the exact whammy type and style can be specified for both kinds after before the value list. - -* `tb type (value1 value2)` -* `tb type style (value1 value2)` -* `tbe type (value1 value2)` -* `tbe type style (value1 value2)` - -It is recommended to rely on the auto-detection of the type and only specify the type explicitly if something is wrong: -* `custom` - use this for non standard custom whammys with multiple points -* `dive` - use this when having a gradual change between two points -* `dip` - use this when you have a A->B->A whammy pattern. -* `hold` - use this when holding whammys (on tied notes) -* `predive` - use this when whammy bar is pressed/pulled before playing the note and then kept. -* `predivedive` - use this when whammy bar is pressed/pulled before playing the note and then released again. - -The style can be one of these values: -* `default` - No additional text is shown, the bend offsets and values are respected as specified. -* `gradual` - Will show an additional "grad." on the whammy line. The audio is generated according to the type spread evenly across the play duration. -* `fast` - No additional text is shown. The audio is generated according to the type spread evenly across the fixed duration set via `settings.player.songBookBendDuration`. - -## Brushes / Arpeggio - -Brush stroke effects are: brush down `bd`, brush up `bu`, arpeggio down `ad`, and arpeggio up `au`. -By default, the duration between notes is calculated based on the number of notes in the beat (the chord). -A custom duration (in MIDI ticks) can also be specified with, for example `bd 120`. - -{` -:2 (0.1 0.2 0.3 2.4 2.5 0.6){bd} (0.1 0.2 0.3 2.4 2.5 0.6){bu} | -(0.1 0.2 0.3 2.4 2.5 0.6){ad} (0.1 0.2 0.3 2.4 2.5 0.6){au} | -(0.1 0.2 0.3 2.4 2.5 0.6){bd 360} (0.1 0.2 0.3 2.4 2.5 0.6){bu 60} -`} - -## Chords - -If you want to specify chords on top of your beats this can be done via the `ch "ChordName"` effect. -This will annotate the chord name above the beat. - -{` -(1.1 3.2 5.3 3.4 1.5){ch "A#add9"} (1.1 3.2 5.3 3.4 1.5)*3 | -(4.1 6.2 6.3 6.4 4.5){ch "C#"} (4.1 6.2 6.3 6.4 4.5)*3 | -(6.1 8.2 8.3 8.4 6.5){ch "D"} (6.1 8.2 8.3 8.4 6.5)*3 | -(0.1 0.2 1.3 2.4 2.5 0.6){ch "E"} (0.1 0.2 1.3 2.4 2.5 0.6)*3 -`} - -

Chord Diagrams

- -A global metadata tag `\chord` can define the chord diagram for each chord. -The format is `\chord ChordName String1 String2 ...`. A value must be defined for all strings. `x` annotates that the string is not played. -Additionally there are 4 properties which adjust the chord details: - -* `FirstFret Number` - shifts the first fret shown in the diagram higher. -* `Barre Fret1 Fret2 ...` - defines on which frets a barré should be played (visually joins the dots to a bar). -* `ShowDiagram True/False` - enables/disables whether the chord diagram should be shown. -* `ShowName True/False` - enables/disables whether the chord name is shown above the diagram. - -{` -// Simple Chord -\\chord "C" 0 1 0 2 3 x -// With barré -\\chord{barre 1} "A#add9" 1 3 4 2 1 x -// First Fret higher -\\chord{firstfret 6 barre 6} "D#" 6 8 8 8 6 x -// Hide diagram -\\chord{showdiagram false} "E" 0 0 1 2 2 0 -// Hide name and multiple barre -\\chord{showname false barre 1 3} "Special" 3 3 3 1 1 1 -. -\\ts 2 4 -(0.1 1.2 0.3 2.4 3.5){ch "C"} (0.1 1.2 0.3 2.4 3.5) | -(1.1 3.2 5.3 3.4 1.5){ch "A#add9"} (1.1 3.2 5.3 3.4 1.5)| -(6.1 8.2 8.3 8.4 6.5){ch "D#"} (6.1 8.2 8.3 8.4 6.5) | -(0.1 0.2 1.3 2.4 2.5 0.6){ch "E"} (0.1 0.2 1.3 2.4 2.5 0.6) | -(3.1 3.2 3.3 1.4 1.5 1.6){ch "Special"} (3.1 3.2 3.3 1.4 1.5 1.6) -`} - -## Timer - -Timers are showing the exact timestamp when a beat is played the first time (respecting aspects like repeats). -To enable the display of timers add a `timer` to the beat effect list. - -{` -\\tempo 120 -. -3.3.4 { timer } 3.3.4*3 | -\\ro 3.3.4 { timer } 3.3.4*3 | -3.3.4 { timer } 3.3.4*3 | -\\jump fine 3.3.4 { timer } 3.3.4*3 | -\\ae (1) 3.3.4 { timer } 3.3.4*3 | -\\ae (2 3) \\rc 3 3.3.4 { timer } 3.3.4*3 | -3.3.4 { timer } 3.3.4*3 | -\\jump DaCapoAlFine 3.3.4 { timer } 3.3.4*3 | -3.3.4 { timer } 3.3.4*3 -`} - -## Tempo Changes - -With the support of multiple tempo changes within a single bar, tempo changes can now be applied on beat level to mark -the exact spot when the tempo should be changed. - -{` -. -C4 {tempo 120} D4 E4 {tempo 140} F4 | C4.8 {tempo 80} C4 D4 {tempo 100} D4 E4 {tempo 120} E4 F4 {tempo 240} F4 -`} - -## Rasgueado - -Rasgueado patterns can be added to beats via `rasg PATTERN` where pattern is one of the following values dervived from the patterns -Guitar Pro supports: - -import { RasgueadoPatterns } from '@site/src/components/RasgueadoPatterns'; - - - -{` -(1.1 3.2 2.3 0.4) * 4 {rasg amii} -`} - -## Slashed Beats - -To use slash notation on beats add the `slashed` keyword to the effect list. - -{` -C4.4 {slashed} C4.8 {slashed} C4.8 {slashed} C4.4 {slashed} -`} - -## Dead Slap - -To use dead slapped beats the `ds` keyword to the effect list. As no notes should be on such a beat, -simply use `()` to indicate the empty beat. - -{` -().4 {ds} ().4 {ds} -`} - -## Beat Timer - -To show the time when a beat is played the first time add `timer` to the effect list. - -{` -:2 C4 { timer } C4 | -\\ro C4 { timer } C4 | -\\ae 1 C4 C4 { timer } | -\\rc 3 \\ae (2 3) C4 { timer } C4 { timer } | -C4 { timer } C4 -`} - -## Sustain Pedals - -To mark that on a beat the sustain pedal should be pressed add `spd`. -To release it again `spu` - -{` -3.3{string} 3.3{spd} 3.3 3.3 {spu} -`} - -## Golpe - -To mark that on a beat a golpe should be performed with the thumb use `glpt`, to add a golpe played with a finger use `glpf` - -{` -3.3{glpf} 3.3{glpt} -`} - -## Wah-Pedal - -To mark that on a beat a wah pedal should be opened `waho`, and indicate a close use `wahc`. - -{` -3.3 3.3{waho} 3.3 3.3 {wahc} -`} - -## Barré - -To show barré chord notation, add `barre fret mode` to the effect list where - -* `fret` is the numeric fret of the barré chord -* `mode` is either `full` (default if no mode specified) or `half` - -{` -1.1 {barre 24} 2.1 {barre 24} 3.1 {barre 24} 4.1 | -1.1 {barre 4 half} 2.1 {barre 4 half} 3.1 {barre 4 half} 4.1 {barre 4 half} | -`} - -## Ottava - -To mark octave changes on beats add `ottava value` to the effect list where value is one of: - -* `15ma` -* `8va` -* `regular` -* `8vb` -* `15mb` - -{` -3.3.4{ ot 15ma } 3.3.4{ ot 8vb } -`} - -## Legato - -To indicate a beat starts a legato to the next beat mark it with `legatoOrigin`: - -{` -3.3.4{ legatoOrigin } 10.3.4 -`} - -## Instrument Changes - -To mark a change of the instrument used for playback use the `instrument instrumentNumberOrName` effect. - -See [Instrument](/docs/alphatex/metadata#instrument) for details on available instruments. - -{` -\\instrument ElectricGuitarClean -1.1 2.1 3.1 4.1 | 1.1 { instrument DistortionGuitar txt Distortion } 2.1 3.1 4.1 -`} - -## Fermata - -To mark fermatas add `fermata fermataType` or `fermata fermataType fermataLength` to the beat effects. -* `fermataType` can be `short`, `medium` or `long` -* `fermataLength` is currently ignored. - -{` -G4 G4 G4 { fermata medium 4 } -`} - -## Beaming Modes - -The beaming modes allow adjusting allow overriding the default beam placement. - -* `beam invert` - Inverts the default stem direction. -* `beam up` - Forces the stem to point upwards. -* `beam down` - Forces the stem to point downwards. -* `beam auto` - Sets the beaming mode to automatic. -* `beam split` - Forces a split of the beam to the next beat (if there would be any) -* `beam merge` - Forces a merge of the beam to the next beat (even if there would be none) -* `beam splitsecondary` - Forces a split of the last bar connecting two beats (if there is any). - -{` -:8 3.3{ beam invert } 3.3 | -3.1{ beam up } 3.1 | -3.6{ beam down } 3.6 | -3.3{ beam auto } 3.3 | -3.3{ beam split } 3.3 | -3.3 3.3 { beam merge } 3.3 3.3 | -3.3.16 {beam splitsecondary} 3.3 -`} \ No newline at end of file diff --git a/docs/alphatex/beat-properties.mdx b/docs/alphatex/beat-properties.mdx new file mode 100644 index 0000000..b681ac9 --- /dev/null +++ b/docs/alphatex/beat-properties.mdx @@ -0,0 +1,909 @@ +--- +title: Beat Properties +--- + +import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; + +The properties defined on beat level result in a variety of effects and annotations +shown in the music sheet. Historically these properties are heavily abbreviated to +reduce the text that needs to be written to apply them. + +In future alphaTab will likely change to a more verbose, but clearer alternative. + +## `f` + +```plain title=" Syntax" +f +``` +**Description:** Adds a fade-in effect to the beat. Applies to all notes. + +**Values:** None + +**Example** + +{` + (0.1 2.2 2.3 2.4 0.5).2 { f } +`} + +## `fo` + +```plain title=" Syntax" +fo +``` +**Description:** Adds a fade-out effect to the beat. Applies to all notes. + +**Values:** None + +**Example** + +{` +(0.1 2.2 2.3 2.4 0.5).1 { fo } +`} + +## `vs` + +```plain title=" Syntax" +fo +``` +**Description:** Adds a volume-swell effect to the beat. Applies to all notes. + +**Values:** None + +**Example** + +{` +(0.1 2.2 2.3 2.4 0.5).1 { vs } +`} + +## `v` + +```plain title=" Syntax" +v +``` +**Description:** Adds a slight vibrato effect to the beat. Applies to all notes. + +**Values:** None + +**Example** + +{` +(0.1 2.2 2.3 2.4 0.5).1 { v } +`} + +## `vw` + +```plain title=" Syntax" +vw +``` +**Description:** Adds a wide vibrato effect to the beat. Applies to all notes. + +**Values:** None + +**Example** + +{` +(0.1 2.2 2.3 2.4 0.5).1 { vw } +`} + +## `s` + +```plain title=" Syntax" +s +``` +**Description:** Adds a bass slap annotation to the beat. + +**Values:** None + +**Example** + +{` +\instrument "Electric Bass Finger" +\ts (3 4) 3.4.8 {s} (5.1 5.2).4 {p} 3.4.8 {s} (5.1 5.2).4 {p} +`} + +## `p` + +```plain title=" Syntax" +p +``` +**Description:** Adds a bass pop annotation to the beat. + +**Values:** None + +**Example** + +{` +\instrument "Electric Bass Finger" +\ts (3 4) 3.4.8 {s} (5.1 5.2).4 {p} 3.4.8 {s} (5.1 5.2).4 {p} +`} + +## `tt` + +```plain title=" Syntax" +tt +``` +**Description:** Adds a guitar or bass tapping annotation to the beat. + +**Values:** None + +**Example** + +{` +\instrument "Electric Bass Finger" +:8 {tu 3} + 18.1 {tt h} 10.1 {h} 14.1 + 18.1 {tt h} 10.1 {h} 14.1 + 18.1 {tt h} 10.1 {h} 14.1 + 18.1 {tt h} 10.1 {h} 14.1 + `} + + +## `d` + +```plain title=" Syntax" +d +``` +**Description:** Marks the beat a single dot. + +**Values:** None + +**Example** + +{` +(0.1 2.2 2.3 2.4 0.5).1 { dd } +`} + +## `dd` + +```plain title=" Syntax" +dd +``` +**Description:** Marks the beat with two dots. + +**Values:** None + +**Example** + +{` +(0.1 2.2 2.3 2.4 0.5).1 { dd } +`} + +## `su` + +```plain title=" Syntax" +su +``` +**Description:** Adds an upwards pick-stroke annotation to the beat. + +**Values:** None + +**Example** + +{` +0.1 { su } +`} + +## `sd` + +```plain title=" Syntax" +sd +``` +**Description:** Adds an downwards pick-stroke annotation to the beat. + +**Values:** None + +**Example** + +{` +0.1 { sd } +`} + +## `cre` + +```plain title=" Syntax" +cre +``` +**Description:** Adds a crescendo effect to the beat. + +**Values:** None + +**Example** + +{` +3.3 { cre } -.3 { cre } +`} + + +## `dec` + +```plain title=" Syntax" +dec +``` +**Description:** Adds a decrescendo (diminuendo) effect to the beat. + +**Values:** None + +**Example** + +{` +3.3 { dec } -.3 { dec } +`} + +## `spd`, `sph`, `spu` and `spe` + + +```plain title=" Syntax" +spd +sph +spu +spe +``` +**Description:** Adds sustain pedal annotations to the beat. + +The different properties mark whether to press the pedal down, hold or release it. + +* `spd` Sustain pedal down (press) +* `sph` Sustain pedal hold (continue press) +* `spu` Sustain pedal up (release) +* `spe` Sustain pedal up at end of the beat + +**Values:** None + +**Example** + +{` +C4 {spd} C4 {sph} C4 {sph} C4 {spu} | +C4 {spd} C4 {sph} C4 {sph} C4 {spe} +`} + +## `slashed` + +```plain title=" Syntax" +slashed +``` +**Description:** Marks the beat to be displayed with slash notation. + +**Values:** None + +**Example** + +{` +(0.1 2.2 2.3 2.4 0.5).2 (0.1 2.2 2.3 2.4 0.5).2 { slashed } +`} + +## `ds` + +```plain title=" Syntax" +ds +``` +**Description:** Marks the beat to be a dead-slap beat. + +As no notes should be on such a beat, simply use `()` to indicate the empty beat which is not a rest. + +**Values:** None + +**Example** + +{` +().4 {ds} ().4 {ds} +`} + +## `glpf`, `glpt` + +```plain title=" Syntax" +glpf +glpt +``` +**Description:** Adds a golpe effect to the beat. + +* `glpf` for a Golpe tapped with the finger +* `glpt` for a Golpe tapped with the thumb + +**Values:** None + +**Example** + +{` +3.3{glpf} 3.3{glpt} +`} + +## `waho`, `wahc` + +```plain title=" Syntax" +waho +wahc +``` +**Description:** Adds a Wah-pedal effect to the beat. + +* `waho` for a the pedal to be opened +* `wahc` for a the pedal to be closed + +**Values:** None + +**Example** + +{` +3.3 3.3{waho} 3.3 3.3 {wahc} +`} + +## `legatoOrigin` + +```plain title=" Syntax" +legatoOrigin +``` +**Description:** Adds a legato from this beat to the next one. + +**Values:** None + +**Example** + +{` +3.3.4{ legatoOrigin } 10.3.4 +`} + +## `timer` + +```plain title=" Syntax" +timer +``` +**Description:** Adds a timestamp marker to the beat. + +Timers are showing the exact timestamp when a beat is played the first time (respecting aspects like repeats). + +**Values:** None + +**Example** + +{` +\\tempo 120 +3.3.4 { timer } 3.3.4*3 | +\\ro 3.3.4 { timer } 3.3.4*3 | +3.3.4 { timer } 3.3.4*3 | +\\jump fine 3.3.4 { timer } 3.3.4*3 | +\\ae (1) 3.3.4 { timer } 3.3.4*3 | +\\ae (2 3) \\rc 3 3.3.4 { timer } 3.3.4*3 | +3.3.4 { timer } 3.3.4*3 | +\\jump DaCapoAlFine 3.3.4 { timer } 3.3.4*3 | +3.3.4 { timer } 3.3.4*3 +`} + +## `tu` + +```plain title=" Syntax" +tu simple +tu (numerator denominator) +``` +**Description:** Adds a tuplet to the beat duration. + +There are some built-in simple tuplet variants (see below) or you can specify the exact division. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| simple | The simple tuplet | `number` | yes | +| numerator | The tuplet numerator | `number` | yes | +| denominator | The tuplet denominator | `number` | yes | + +The simple tuplets expand like this: + +* `3` => `3:2` +* `5` => `5:4` +* `6` => `6:4` +* `7` => `6:4` +* `9` => `9:8` +* `10` => `10:8` +* `12` => `12:8` + +**Example** + +{` +C4 {tu 3} * 3 | +C4 {tu 5} * 5 | +C4 {tu 5 2} * 5 +`} + +## `txt` + +```plain title=" Syntax" +txt text +``` +**Description:** Adds a text annotation to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| text | The text to show above the beat | `string` | yes | + + +**Example** + +{` +C4 {txt "This is a C4 Note"} +`} + +## `lyrics` + +```plain title=" Syntax" +lyrics text +lyrics line text +``` +**Description:** Adds a lyric text to the beat. + +This is an alternative way of applying the exact lyrics to beats instead of using +the `\lyrics` metadata where a special syntax is used to spread the text across beats. + + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| text | The lyrics to show | `string` | yes | +| line | The line number (e.g. for multiple verses)| `number` | no | + + +**Example** + +{` +C4 {lyrics "Do"} +D4 {lyrics "Re"} +E4 {lyrics "Mi"} +F4 {lyrics "Fa"} | +G4 {lyrics 0 "So" lyrics 1 "G"} +A4 {lyrics 0 "La" lyrics 1 "A"} +B4 {lyrics 0 "Ti" lyrics 1 "B"} +r +`} + +## `tb` and `tbe` + +```plain title=" Syntax" +tb (type style value1 value2 value3...) +tbe (type style offset1 value1 offset2 value2 offset3 value3...) +``` +**Description:** Adds a whammy bar (aka. tremolo bar) effect to the beat. + +* The `tb` variant automatically spreads the values across the duration of the beat. +* The `tbe` (exact) variant allows specifying exactly at which offset a value is placed. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| type | The type of whammy (affects the display). | `custom`, `dive`, `dip`, `hold`, `predive`, `predivedive` | no | +| style | The style of the whammy play style. | `default`, `gradual`, `fast`` | no | +| offset | The offset at which the value becomes valid | `number` (0-60) | yes (if `tbe`) | +| value | The value of the whammy in quarter-tones relative to the original note, decimals supported | `number` | yes | + +It is recommended to rely on the auto-detection of the type and only specify the type explicitly if something is wrong: +* `custom` - use this for non standard custom whammys with multiple points +* `dive` - use this when having a gradual change between two points +* `dip` - use this when you have a A->B->A whammy pattern. +* `hold` - use this when holding whammys (on tied notes) +* `predive` - use this when whammy bar is pressed/pulled before playing the note and then kept. +* `predivedive` - use this when whammy bar is pressed/pulled before playing the note and then released again. + +The style can be one of these values: +* `default` - No additional text is shown, the bend offsets and values are respected as specified. +* `gradual` - Will show an additional "grad." on the whammy line. The audio is generated according to the type spread evenly across the play duration. +* `fast` - No additional text is shown. The audio is generated according to the type spread evenly across the fixed duration set via `settings.player.songBookBendDuration`. + +**Example** + +{` +3.3.1{tb (0 4 0 8)} | r | +3.3.1{tb (0 -4 0 -8)} | r | +3.3.1{tbe (0 0 5 4 30 8 60 0)} +`} + +## `bu`, `bd` + +```plain title=" Syntax" +bu duration +bd duration +``` +**Description:** Adds a brush stroke effect to the beat. + +* `bu` for an upwards brush +* `bd` for a downwards brush + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| duration | A custom duration of the stroke speed in MIDI ticks | `number` | no | + +By default, the duration between notes is calculated based on the number of notes in the beat. + +**Example** + +{` +:2 (0.1 0.2 0.3 2.4 2.5 0.6){bd} (0.1 0.2 0.3 2.4 2.5 0.6){bu} | +(0.1 0.2 0.3 2.4 2.5 0.6){bd 360} (0.1 0.2 0.3 2.4 2.5 0.6){bu 60} +`} + +## `au`, `ad` + +```plain title=" Syntax" +au duration +ad duration +``` +**Description:** Adds an arpeggio effect to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| duration | A custom duration of the stroke speed in MIDI ticks | `number` | no | + +By default, the duration between notes is calculated based on the number of notes in the beat. + +**Example** + +{` +(0.1 0.2 0.3 2.4 2.5 0.6){ad} (0.1 0.2 0.3 2.4 2.5 0.6){au} | +`} + +## `ch` + +```plain title=" Syntax" +ch chordName +``` +**Description:** Adds a chord annotation to the beat. + +If the staff has a definition for this chord it will be shown in the chord diagram list to indicate its usage. +The beat still has to define the notes separately. + + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| chordName | The name of the chord | `string` | yes | + +**Example** + +{` +\\chord ("C" 0 1 0 2 3 x) +\\ts 2 4 +(0.1 1.2 0.3 2.4 3.5){ch "C"} (0.1 1.2 0.3 2.4 3.5) | +(0.1 2.2 2.3 2.4 0.5){ch "A"} +`} + +## `gr` + +```plain title=" Syntax" +gr type +``` +**Description:** Marks the beat as a grace beat holding grace notes. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| type | The type of grace notes | `ob`, `bb`, `b` | no (default: `bb`) | + +* `ob` is an On-Beat grace note where this beat will start at the play time of the next beat and steal its play time from the next beat. +* `bb` is a Before-Beat grace note where this beat will start before the next beat and steal its play time from the previous beat. +* `b` is a bend grace note, a mechanism used in alphaTab for the "songbook style" bends notes. You will likely not apply this type manually. + +**Example** + +{` +C5 + D5 {gr} C5 +C5 + D5 {gr} C5 +| +C5 + D5 {gr ob} C5 +C5 + D5 {gr ob} C5 +`} + +## `dy` + +```plain title=" Syntax" +dy dynamic +``` +**Description:** Defines the play dynamics for this beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| dynamic | The dynamic value to apply | `identifier` | yes | + +Following dynamic values are supported: + +* PPP +* PP +* P +* MP +* MF +* F +* FF +* FFF +* PPPP +* PPPPP +* PPPPPP +* FFFF +* FFFFF +* FFFFFF +* SF +* SFP +* SFPP +* FP +* RF +* RFZ +* SFZ +* SFFZ +* FZ +* N +* PF +* SFZP + +**Example** + +{` +1.1.8{dy ppp} 1.1{dy pp} 1.1{dy p} 1.1{dy mp} 1.1{dy mf} 1.1{dy f} 1.1{dy ff} 1.1{dy fff} +`} + +## `tempo` + +```plain title=" Syntax" +tempo bpm +tempo (bpm label hide) +``` +**Description:** Add a tempo change to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| bpm | The new tempo in BPM | `number` | yes | +| label | A textual label for the tempo | `string` | no | +| hide | If specified, the tempo change is not shown in the music sheet | `hide` | no | + +**Example** + +{` +C4 {tempo 120} D4 E4 {tempo 140} F4 | C4.8 {tempo 80} C4 D4 {tempo 100} D4 E4 {tempo 120} E4 F4 {tempo 240} F4 +`} + +## `volume` + +```plain title=" Syntax" +volume value +``` +**Description:** Add a volume change to the beat. + +The change affects all beats after this one. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The new volume | `number` (0-16) | yes | + +**Example** + +{` +C4 {volume 8} D4 E4 {tempo 16} F4 +`} + +## `balance` + +```plain title=" Syntax" +balance value +``` +**Description:** Add a balance (pan) change to the beat. + +The change affects all beats after this one. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The new balance | `number` (0-16, 8 is centered) | yes | + +**Example** + +{` +C4 {balance 0} D4 E4 {balance 16} F4 +`} + +## `tp` + +```plain title=" Syntax" +tp speed +``` +**Description:** Add a tremolo picking to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| speed | The tremolo picking speed | `number` (8, 16 or 32) | yes | + +**Example** + +{` +3.3{tp 8} 3.3{tp 16} 3.3{tp 32} +`} + +## `barre` + +```plain title=" Syntax" +barre fret +barre (fret mode) +``` +**Description:** Add a barré chord notation to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| fret | The numeric fret for the barre chord | `number` | yes | +| mode | The barre mode | `full` or `half` | no | + +**Example** + +{` +1.1 {barre 24} 2.1 {barre 24} 3.1 {barre 24} 4.1 | +1.1 {barre 4 half} 2.1 {barre 4 half} 3.1 {barre 4 half} 4.1 {barre 4 half} | +`} + + +## `rasg` + +```plain title=" Syntax" +rasg pattern +``` +**Description:** Add a rasgueado play pattern to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| pattern | The pattern to apply | `identifier` | yes | + +The pattern is one of the following values dervived from the patterns Guitar Pro supports: + +import { RasgueadoPatterns } from '@site/src/components/RasgueadoPatterns'; + + + +**Example** + +{` +(1.1 3.2 2.3 0.4) * 4 {rasg amii} +`} + +## `ot` + +```plain title=" Syntax" +ot value +``` +**Description:** Adds a octave change (ottava) to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The octave shift to apply | `15ma`, `8va`, `regular`, `8vb` or `15mb` | yes | + +**Example** + +{` +3.3.4{ ot 15ma } 3.3.4{ ot 8vb } +`} + +## `instrument` + +```plain title=" Syntax" +instrument value +``` + +**Description:** Adds a instrument change to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The new MIDI instrument | `number` or `string` | yes | + +See also [`instrument`](./structural-metadata.mdx#instrument). + +**Example** + +{` +3.3.4{ ot 15ma } 3.3.4{ ot 8vb } +`} + +## `bank` + +```plain title=" Syntax" +bank value +``` + +**Description:** Adds a instrument bank change to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The new MIDI bank | `number` | yes | + +See also [`bank`](./structural-metadata.mdx#bank). + +**Example** + +{` +C4 C4 C4 {instrument 25 bank 2} C4 +`} + +## `fermata` + +```plain title=" Syntax" +fermata type +fermata (type length) +``` + +**Description:** Adds a fermata to the beat. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| type | The fermata type | `short`, `medium` or `long` | yes | +| length | The fermata length | `number` | no | + +**Example** + +{` +G4 G4 G4 { fermata medium 4 } +`} + +## `beam` + +```plain title=" Syntax" +beam mode +``` + +**Description:** Changes the beaming and stem direction for the beat. + +Can be specified multiple times. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| mode | The mode to apply | `identifier` | yes | + + +Stem direction adjustments: + +* `invert` - Inverts the default stem direction. +* `up` - Forces the stem to point upwards. +* `down` - Forces the stem to point downwards. +* `auto` - Sets the beaming mode to automatic. + +Beaming modes: + +* `split` - Forces a split of the beam to the next beat (if there would be any) +* `merge` - Forces a merge of the beam to the next beat (even if there would be none) +* `splitsecondary` - Forces a split of the last bar connecting two beats (if there is any). + +**Example** + +{` +:8 3.3{ beam invert } 3.3 | +3.1{ beam up } 3.1 | +3.6{ beam down } 3.6 | +3.3{ beam auto } 3.3 | +3.3{ beam split } 3.3 | +3.3 3.3 { beam merge } 3.3 3.3 | +3.3.16 {beam splitsecondary} 3.3 +`} \ No newline at end of file diff --git a/docs/alphatex/document-structure.mdx b/docs/alphatex/document-structure.mdx new file mode 100644 index 0000000..4e73957 --- /dev/null +++ b/docs/alphatex/document-structure.mdx @@ -0,0 +1,275 @@ +--- +title: Document Structure +--- + +import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; + +An alphaTex file is simply a list of bars and every bar has metadata and contents. For organizational reasons we commend +that metadata tags describing the general song information are added to the start of the file, and external media synchronization points are +added on the end of the file: + +```title=General File Structure +/* Song Metadata */ +/* Song Contents */ +/* Sync Points */ +``` + +:::note +Before alphaTex 1.7 the 3 sections needed to be separated by a `.` This was improved in 1.7 and the separation dots should now be omitted. + +```title=Pre 1.7 General File Structure +/* Song Metadata */ +. +/* Song Contents */ +. +/* Sync Points */ +``` +::: + +## Bars + +Bars (aka. measures) are starting with an optional list of metadata tags followed by the beats contained +in the bar. See [Bar Metadata](./bar-metadata.mdx) for details on the tags which can be applied here. + +A bar is completed by a pipe `|` symbol + +{` +// bar 1 metadata tags +\\clef G2 \\ks + // bar 1 contents + Cb C4 +| +// bar 2 metadata tags +\\ks A + // bar 2 contents + C4 +`} + +## Beats + +Beats group a number of notes played at the same time. The general parts of a beat are + +* `duration-change content duration effects multiplier` + + +{` +:4 + C4 + (C4 D4).8 + (C4 D4) { f } + C4.16 * 2 + C4.4 +`} + +### Duration change (optional) + +A duration change allows easy changing of the duration for all following beats. The syntax is: + +`:Duration` where `Duration` is a number describing the new duration: +* `:-4` a Quadruple Whole Note +* `:-2` a Double Note +* `:1` a Whole Note +* `:2` a Half Note +* `:4` a Quarter Note +* `:8` a 8th Note +* `:16` a 16th Note +* `:32` a 32th Note +* `:64` a 64th Note +* `:128` a 128th Note +* `:256` a 256th Note + +Optionally you can specify some properties afterwards the duration to specify tuplets. + +`:4 {tu 3 2}` + +See [Tuplet Effect](./beat-properties.mdx#tu) for more details. + +{` +:16 // 16th notes from here + 3.3 + 4.3 + 5.3 + 6.3 +:4 { tu 3 } // quarter notes triplets + 3.3 + 4.3 + 5.3 +:8 + 3.3 * 3 +`} + +### Beat Content (required) + +The most crucial and part is to describe the contents of a beat which can be one of these options: + +* A rest +* Multiple notes played (grouped by parenthesis) +* A single note played + +A rest is simply indicated by specifying an `r`: + +{` +:4 r r r r +`} + +Multiple [Notes](#notes) can be grouped with parenthesis `()`. Similar to the value lists, you can also just specify +one note and omit the parenthesis. + +{` +:4 + C4 // single note on beat + (C4 E4) // multiple notes with parenthesis +`} + +### Beat Duration (optional) + +Another way of specifying beat duration is to append them after the beat content as `. duration`. +Historically the new duration is also remembered for the next beat. Tuplets specified as beat effects will not be remembered. +{` +C4 .4 +C4 .8 +C4 // .8 remembered +C4 .2 +`} + +### Beat Effects (optional) + +Beat effects can be applied as properties after the beat. See [Beat Properties](./beat-properties.mdx) to learn about all available effects. + +{` +:4 + (C4 D4) { tp 8 } + C4 { f } + r.2 {txt "Pause here"} +`} + +### Beat Multiplier (optional) + +This feature allows repeating the same beat multiple times by "multiplying" them. +Simply specify `* times` after the beat with `times` being the number of copies you want. + +{` +:4 + // 4 times the same A-chord + (0.1 2.2 2.3 2.4 0.5) * 4 +`} + +## Notes + +Depending on the instrument played you can have one of 3 kinds of notes in your bars. +Mixing is not possible so be sure to specify all notes consistently: + +* Fretted and Stringed instruments like guitars have their notes as `fret.string` +* Percussion/Drums have their notes as articulation names. +* Other pitched instruments have their notes as note names. + +After each note the note effects can optionally be specified as properties: `note-value {note-properties}`. + +:::info +AlphaTab tries to detect which kind of staff you are writing based on the first note. +::: + +### Fretted Notes + +If the current staff is a stringed instrument (`\tuning` or `\instrument` specified accordingly), +notes are expressed as the fret and string the note is played on. The final note height is calculated. + +{` +:1 + (12.1 {sib} 14.2 {sib b (0 4)}) + 12.1 { v } +`} + +### Percussion / Drum Notes + +On percussion instruments, you specify the articulation which should be played as note. +The percussion can be a quoted string or an identifier (name without quotes). + +More details are described over at the [`\\articulation`](./staff-metadata.mdx#articulation) metadata docs. + +{` +\\instrument percussion +\\articulation defaults +:4 + (KickHit RideBell) + r + KickHit + KickHit +`} + +### Pitched notes + +Pitched notes are expressed in a combined name containing: + +* The tone (`C`,`D`,`E`,`F`,`G`,`A`,`B`,`C`) +* The accidental (`#`, `b`, `bb`, `x`, `##`,..; see [Accidentals](./notes.mdx#accidentals) for details on accidental handling) +* The octave (a number) + +{` +C4 +C#4 +Ebb4 +Dx5 +`} + +### Note Effects + +See [Note Properties](./note-properties.mdx) for a list of all supported effects for notes. + + +{` +:2 + 3.3 { b (0 4) } // note bend + ( + 3.3 { v } // Vibrato + 3.2 { sib } // slide into from below + ) +`} + +If you only have 1 note in the beat, you can specify both note and beat effects in the same property list. + +{` +:2 + // combined effects + 3.3 { + b (0 4) // note effect + txt "Bend" // beat effect + } + // separated effects + 3.3 + { b (0 4) } // note effect + { txt "Bend" } // beat effect +`} + +## Tracks, Staves and Voices + +A song might consist of multiple tracks and staves holding the song data. There are special metadata tags which mark the start +of such new structures. See [Structural Metadata](./structural-metadata.mdx) for more details. + +{` +\\track "Track 1" + \\staff {score} // first staff + \\voice // first voice + C4 D4 E4 F4 | C4 D4 E4 F4 + \\voice // second voice + C5 D5 E5 F5 | C5 D5 E5 F5 + \\staff {tabs} // second staff + 3.5 5.5 7.5 8.5 | 3.5 5.5 7.5 8.5 +\\track "Track 2" + 1.2 3.2 5.2 6.2 +`} + +You only need to specify these structural tags to start a new element. A first initial element is started implicitly. + +{` +// first track + // first staff + // first voice + C4 D4 E4 F4 | C4 D4 E4 F4 + \\voice // second voice + C5 D5 E5 F5 | C5 D5 E5 F5 + \\staff {tabs} // second staff + 3.5 5.5 7.5 8.5 | 3.5 5.5 7.5 8.5 +\\track "Track 2" + 1.2 3.2 5.2 6.2 +`} \ No newline at end of file diff --git a/docs/alphatex/introduction.mdx b/docs/alphatex/introduction.mdx index 53dd31c..61bf817 100644 --- a/docs/alphatex/introduction.mdx +++ b/docs/alphatex/introduction.mdx @@ -30,23 +30,3 @@ Here is an example score fully rendered using alphaTex. 15.1.8 :16 14.1{tu 3} 15.1{tu 3} 14.1{tu 3} :8 17.2 15.1 14.1 :16 12.1{tu 3} 14.1{tu 3} 12.1{tu 3} :8 15.2 14.2 | 12.2 14.3 12.3 15.2 :32 14.2{h} 15.2{h} 14.2{h} 15.2{h} 14.2{h} 15.2{h} 14.2{h} 15.2{h} 14.2{h} 15.2{h} 14.2{h} 15.2{h} 14.2{h} 15.2{h} 14.2{h} 15.2{h} `}
- - -## General Song Structure - -alphaTex has the following structure variations. Comments are supported in C-style comments via `// Single Line` and `/* Multi Line */`. - - -```title=General File Structure -/* Song Metadata */ -. -/* Song Contents */ -. -/* Sync Points */ -``` - -The Song Metadata and Sync Points are optional but the dots are mandatory to separate the sections in case there is any content filled. - -* Song Metadata: This section contains all information generally about the song like title. -* Song Contents: This section contains defines the whole song contents with all the tracks, staves, bars, beats, notes that alphaTab supports. Bars are separated by `|` symbols. -* Sync Points: alphaTab can be synchronized with external media like audio backing tracks or videos. To have the correct cursor display and highlighting, songs have to be synchronized. This section defines such markers. \ No newline at end of file diff --git a/docs/alphatex/lyrics.mdx b/docs/alphatex/lyrics.mdx deleted file mode 100644 index a2b6de2..0000000 --- a/docs/alphatex/lyrics.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Lyrics ---- - -The lyrics system of alphaTab is borrowed from Guitar Pro. For every track multiple "lines" of lyrics can be defined which can either start at the beginning or at a later bar. -The syllables of the procided lyrics are spread automatically across the beats of the track. Syllables are separated with spaces. -If multiple words/syllables should stay on the same beat the space can be replaced with a `+`. -Comments which should not be displayed can be put `[into brackets]`. - -To add lyrics to a track use the `\lyrics "Text"` or `\lyrics StartBar "Text"` metadata tag on track/staff level. - -Here some samples: - -import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; - -{` -\\title "With Lyrics" -\\instrument piano -. -\\lyrics "Do Re Mi Fa So La Ti" -C4 D4 E4 F4 | G4 A4 B4 r -`} - -{` -\\title "Combine Syllables (and empty beats)" -\\instrument piano -. -\\lyrics "Do+Do Mi+Mi" -C4 C4 E4 E4 -`} - -{` -\\title "Start Later" -\\instrument piano -. -\\lyrics 2 "Do Re Mi Fa So La Ti" -r r r r | r r r r | -C4 D4 E4 F4 | G4 A4 B4 r -`} - -{` -\\title "Comment" -\\subtitle "Useful when loading lyrics from a different source" -\\instrument piano -. -\\lyrics "[This is a comment]Do Re Mi Fa" -C4 D4 E4 F4 -`} \ No newline at end of file diff --git a/docs/alphatex/metadata.mdx b/docs/alphatex/metadata.mdx deleted file mode 100644 index 52b4abf..0000000 --- a/docs/alphatex/metadata.mdx +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: Metadata ---- - -import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; -import { SinceBadge } from '@site/src/components/SinceBadge'; - -Metadata is specified using `\tagname value` at the beginning of the score. -It can be used to specify global information like title, tempo or track tuning. -Metadata is optional, but if specified, it must be followed by a dot to indicate the end -of the metadata. - -Some of the metadata tags can also be specified when starting a new staff or track. -Please refer to the [Tracks and Staves](/docs/alphatex/tracks-staves) or details on how to start new tracks and staves. - -{` -// Song information (only at the beginning) - \\title "Song Title" - \\subtitle Subtitle - \\artist Artist - \\album 'My Album' - \\words Daniel - \\music alphaTab - \\copyright Daniel - \\instructions "This is an example.\\nWith instructions." - \\notices "Additional notes\\nEmbedded in the data model." - \\tab "Daniel" - // Tempo in BPM (label is optional) - \\tempo 200 "Tempo Label" -// Track and Staff Settings (can be used after \\track and \\staff) - // Instrument as General MIDI number or name - \\instrument 30 - // Capo fret - \\capo 2 - // String tuning starting at the most bottom string - \\tuning e5 b4 g4 d4 a3 e3 -// end of metadata -. -`} - -Strings can contain escape sequences: `\n`, `\r`, `\t`, `\\`, `\"`, `\'`. - - its possible to also change the template and alignment of the song information -via `\tagname value template alignment`. - -The `template` is a string which can have following placeholders which are then replaced with the respective info of the song: - -* `%TITLE%` -* `%SUBTITLE%` -* `%ARTIST%` -* `%ALBUM%` -* `%WORDS%` -* `%WORDSMUSIC%` -* `%MUSIC%` -* `%TABBER%` -* `%COPYRIGHT%` - -The `alignment` is one of the following values: - -* `left` -* `center` -* `right` - -{` -\\title "Song Title" "Title: %TITLE%" left -\\artist Artist "Written by %ARTIST%" right -. -`} - -## Instrument -As indicated above, the instrument can be changed via the `\instrument` metadata. -Refer to the table below for all possible values and names. The list represents the General MIDI instrument list. -You can either leave out the spaces or put the names into quotes e.g. `AcousticBass` vs `"Acoustic Bass"`. - -export function GeneralMidiList() { - const items = [ - 'Acoustic Grand Piano', - 'Bright Grand Piano', - 'Electric Grand Piano', - 'Honky tonk Piano', - 'Electric Piano 1', - 'Electric Piano 2', - 'Harpsichord', - 'Clavinet', - 'Celesta', - 'Glockenspiel', - 'Musicbox', - 'Vibraphone', - 'Marimba', - 'Xylophone', - 'Tubularbells', - 'Dulcimer', - 'Drawbar Organ', - 'Percussive Organ', - 'Rock Organ', - 'Church Organ', - 'Reed Organ', - 'Accordion', - 'Harmonica', - 'Tango Accordion', - 'Acoustic Guitar Nylon', - 'Acoustic Guitar Steel', - 'Electric Guitar Jazz', - 'Electric Guitar Clean', - 'Electric Guitar Muted', - 'Overdriven Guitar', - 'Distortion Guitar', - 'Guitar Harmonics', - 'Acoustic Bass', - 'Electric Bass Finger', - 'Electric Bass Pick', - 'Fretless Bass', - 'Slap Bass 1', - 'Slap Bass 2', - 'Synth Bass 1', - 'Synth Bass 2', - 'Violin', - 'Viola', - 'Cello', - 'Contrabass', - 'Tremolo Strings', - 'Pizzicato Strings', - 'Orchestral Harp', - 'Timpani', - 'String Ensemble 1', - 'String Ensemble 2', - 'Synth Strings 1', - 'Synth Strings 2', - 'Choir Aahs', - 'Voice Oohs', - 'Synth Voice', - 'Orchestra Hit', - 'Trumpet', - 'Trombone', - 'Tuba', - 'Muted Trumpet', - 'French Horn', - 'Brass Section', - 'Synth Brass 1', - 'Synth Brass 2', - 'Soprano Sax', - 'Alto Sax', - 'Tenor Sax', - 'Baritone Sax', - 'Oboe', - 'English Horn', - 'Bassoon', - 'Clarinet', - 'Piccolo', - 'Flute', - 'Recorder', - 'Pan Flute', - 'Blown bottle', - 'Shakuhachi', - 'Whistle', - 'Ocarina', - 'Lead 1 Square', - 'Lead 2 Sawtooth', - 'Lead 3 Calliope', - 'Lead 4 Chiff', - 'Lead 5 Charang', - 'Lead 6 Voice', - 'Lead 7 Fifths', - 'Lead 8 Bass and Lead', - 'Pad 1 newage', - 'Pad 2 warm', - 'Pad 3 polysynth', - 'Pad 4 choir', - 'Pad 5 bowed', - 'Pad 6 metallic', - 'Pad 7 halo', - 'Pad 8 sweep', - 'Fx 1 rain', - 'Fx 2 soundtrack', - 'Fx 3 crystal', - 'Fx 4 atmosphere', - 'Fx 5 brightness', - 'Fx 6 goblins', - 'Fx 7 echoes', - 'Fx 8 scifi', - 'Sitar', - 'Banjo', - 'Shamisen', - 'Koto', - 'Kalimba', - 'Bag pipe', - 'Fiddle', - 'Shanai', - 'Tinkle Bell', - 'Agogo', - 'Steel Drums', - 'Woodblock', - 'Taiko Drum', - 'Melodic Tom', - 'Synth Drum', - 'Reverse Cymbal', - 'Guitar Fret Noise', - 'Breath Noise', - 'Seashore', - 'Bird Tweet', - 'Telephone Ring', - 'Helicopter', - 'Applause', - 'Gunshot' - ]; - return ( - - {items.map((x,i) => { - return ( - {i} - {x} - ); - })} - - ) -} - -
- - - - - - - - -
NumberName
-
- -## Tuning - -The tuning of the instrument is defined by the `\tuning` tag. For stringed instruments like the Guitar, -each tuning value defines one string. The format of the tuning value is `{note}{octave}`. -`{note}` is one value of the following values: C, C# or Db, D, D# or Eb, E, F, F# or Gb, G, G# or Ab, A, A# or Bb, B. -`{octave}` is a number defining the octave. - -For example, a standard guitar tuning is `\tuning E4 B3 G3 D3 A2 E2`. A 5 string bass would be `\tuning G2 D2 A1 E1 B0`. - -For non-stringed instruments, the values `piano`, `none` or `voice` can be used depending on preference. - -If `\instrument` is specified without `\tuning`, alphaTab will try to make a guess and apply the right default tuning. \ No newline at end of file diff --git a/docs/alphatex/note-effects.mdx b/docs/alphatex/note-effects.mdx deleted file mode 100644 index effea99..0000000 --- a/docs/alphatex/note-effects.mdx +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Note Effects ---- - -import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; - -Just like beat effects, there are also effects for single notes like harmonics, -bends, accentuations etc. The syntax is `Fret.String{NoteEffects}` or `PitchedNote{NoteEffects}`. - -## Simple Effects - -Please find the list of supported effects in the examples below. - -### Harmonics - -Natural `nh`, artificial `ah`, pinch `ph`, tap `th`, semi `sh`, feedback `fh`. - -{` -:8 3.3{nh} 3.3{ah} 3.3{ph} 3.3{th} 3.3{sh} -`} - -### Trill - -`tr ` - -{` -:4 3.3{tr 4 16} 3.3{tr 5 32} 3.3{tr 6 64} -`} - -### Vibrato - -{` -3.3{v} -`} - -### Slide - -Legato `sl`, shift `ss`, into-from-below `sib`, into-from-above `sia`, -out-up `sou`, out-down `sod`, pick-slide-down `psd` and pick-slide-up `psu`. - -{` -3.3{sl} 4.3 3.3{ss} 4.3 | -3.3{sib} 3.3{sia} 3.3{sou} 3.3{sod} | -3.3{sib sou} 3.3{sib sod} 3.3{sia sod} 3.3{sia sou} | -x.3{psd} 3.3 | -x.3{psu} 3.3 | -`} - -### Hammer-On / Pull-Off - -{` -3.3{h} 4.3 4.3{h} 3.3 | 3.3{h} 4.3{h} 3.3{h} 4.3 -`} - -### Left Hand Tapping - -{` -:16 15.1{h} 13.1{h} 12.1{h} 15.2{lht} -`} - -### Ghost Note - -{` -3.3{g} -`} - -### Dead Notes - -Dead Notes are notated by using `x` as fret, or with the note effect `x`. - -{` -x.3 3.3{x} -`} - -### Accentuations - -Normal `ac`, heavy `hac` and tenuto `ten`. - -{` -3.3{ac} 3.3{hac} 3.3{ten} -`} - -### Staccato - -{` -3.3{st} -`} - -### Palm Mute - -{` -3.3{pm} 3.3{pm} 3.3{pm} 3.3{pm} -`} - -### Let Ring - -{` -3.4{lr} 3.3{lr} 3.2{lr} 3.1{lr} -`} - -### Fingering - -Left hand `lf` and right hand `rf` where the fingers are: - -`1` for Thumb, `2` for Index, `3` for Middle, `4` for Annual, `5` for Little. - -{` -:8 3.3{lf 1} 3.3{lf 2} 3.3{lf 3} 3.3{lf 4} 3.3{lf 5} (2.2{lf 4} 2.3{lf 3} 2.4{lf 2}) | -:8 3.3{rf 1} 3.3{rf 2} 3.3{rf 3} 3.3{rf 4} 3.3{lf 5} -`} - -### Ornaments - -Ornaments are similar like trills, but played as a sequence of adjacent notes. There are four ornament kinds supported: - -* `turn` - Turn -* `iturn` - Inverted Turn -* `umordent` - Upper Mordent -* `lmordent` - Lower Mordent - -{` -:1 C4{turn} | -C4 {iturn} | -C4 {umordent} | -C4 {lmordent} -`} - -### String Numbers - -To show the string numbers add `string` to the note effects list. - -{` -3.3{string} 3.4{string} 3.5{string} -`} - -## Bends - -The bend effect works like the tremolo/whammy bar effect. -You can specify a number of non-negative values which are evenly distributed over the -time when the note is played with the format `b (value1 value2 ...)`. -The values indicate the number of quarter notes increased bend up while playing. - -{` -3.3{b (0 4)} | -3.3{b (0 4 0 8)} | -`} - -To specify a bend with exact positions (not evenly distributed) you can use `be (offset1 value1 offset2 value2)`. -The offset is ranging from 0 to 60. - -{` -:1 3.3 {be (0 0 5 2 30 4)} -`} - -Additionally the exact bend type and style can be specified for both kinds after before the value list. - -* `b type (value1 value2)` -* `b type style (value1 value2)` -* `be type (value1 value2)` -* `be type style (value1 value2)` - -It is recommended to rely on the auto-detection of the type and only specify the type explicitly if something is wrong: -* `custom` - use this for non standard custom bends with multiple points -* `bend` - use this for a simple bend up to a higher note. -* `release` - use this for a releases of bends down to a lower note. -* `bendRelease` - use this for a bends directly followed by a release. -* `hold` - use this when bends are held (e.g. on tied notes). -* `prebend` - use this when a bent to a higher note is performed before the note is played. -* `prebendbend` - use this when a bent to a higher note is performed before the note is played and then during playing the note is bent further. -* `prebendrelease` - use this when a bent to a higher note is performed before the note is played and then during playing the note is released. - -The style can be one of these values: -* `default` - No additional text is shown, the bend offsets and values are respected as specified. -* `gradual` - Will show an additional "grad." on the bend line. The audio is generated according to the type spread evenly across the play duration. -* `fast` - No additional text is shown. The audio is generated according to the type spread evenly across the fixed duration set via `settings.player.songBookBendDuration`. - -## Tied Notes - -There are multiple ways to indicate tied notes depending on whether the instrument is stringed or not stringed. -For stringed instruments the fret simply can be set to `-` and the note will be tied to the note of the same string. - -{` -3.3 -.3 | (1.1 3.2 2.3 0.4) (-.1 -.4) -`} - -For non stringed instrument it can be a bit more tricky as we cannot use the string to identify which note to tie. -There are multiple ways to work around this problem. -AlphaTab will try to find the start note for the tie via several rules, if this does not match the desired behavior, -you can specify the note value as alternative and indicate the tie via a note effect. - -{` -\\tuning piano -. -// If there is a single note on the previous beat, we tie to this one -// Then a simple - is enough for a tie -:2 a4 - | -// Alternatively you can specify a '-' or 't' as note effect to indicate a tie -:2 a4 a4{-} | -// This also works for chords using correct note ordering -:2 (a4 a3) (- a3) | -:2 (a4 a3) (a4 -) | -// If nothing helps, always the explicit note value and tie effect should allow -// specifying the correct behavior -:2 (a4 a3) (a4{t} a3) | -:4 (a4 a3) (b2 b3) a4{t} a3{-} | -`} - -## Show String Numbers - -Add `string` to the note effect list to show the string numbers. - -{` -:8 3.3{ string } (4.4{string} 5.5{string}) -`} - -## Invisible Notes - -To fully hide notes mark them with `hide`. - -{` -:8 3.3 (4.4{hide} 5.5) -`} - -## Slurs - -To define slurs we mark the start and end note of the slur with the same `slur CustomId`. - -{` -(3.3 {slur s1} 4.4).4 7.3.8 8.3.8 10.3 {slur s1} .8 -`} diff --git a/docs/alphatex/note-properties.mdx b/docs/alphatex/note-properties.mdx new file mode 100644 index 0000000..2d0601d --- /dev/null +++ b/docs/alphatex/note-properties.mdx @@ -0,0 +1,561 @@ +--- +title: Note Properties +--- + +import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; + +The properties defined on note level result in a variety of effects and annotations +shown in the music sheet. Historically these properties are heavily abbreviated to +reduce the text that needs to be written to apply them. + +In future alphaTab will likely change to a more verbose, but clearer alternative. + +## `nh`, `ah`, `th`, `ph`, `sh`, `fh` + +```plain title=" Syntax" +nh +ah value +th value +ph value +sh value +fh value +``` +**Description:** Applies a harmonic effect to the note (for fretted instruments). + +* `nh` for a Natural Harmonic +* `ah` for a Artificial Harmonic +* `th` for a Tapped Harmonic +* `ph` for a Pinch Harmonic +* `sh` for a Semi Harmonic +* `fh` for a Feedback Harmonic + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The harmonic value | `number` | no | + +The harmonic value determines a relative fret-offset changing the note pitch when played. +For natural harmonics the played fret determines the harmonic value. The rules are a bit special but mostly +are aligned with the frequency adjustments happening when harmonics are played at respective frets: + +* `2.4` adds 36 frets +* `2.7` adds 34 frets +* `< 3` adds 0 frets +* `<= 3.5` adds 31 frets +* `<= 4` adds 28 frets +* `<= 5` adds 34 frets +* `<= 7` adds 19 frets +* `<= 8.5` adds 36 frets +* `<= 9` adds 28 frets +* `<= 10` adds 34 frets +* `<= 11` adds 0 frets +* `<= 12` adds 12 frets +* `< 14` adds 0 frets +* `<= 15` adds 34 frets +* `<= 16` adds 28 frets +* `<= 17` adds 36 frets +* `<= 18` adds 0 frets +* `<= 19` adds 19 frets +* `<= 21` adds 0 frets +* `<= 22` adds 36 frets +* `<= 24` adds 24 frets +* other: adds 0 frets + + +**Example** + +{` +:8 3.3{nh} 3.3{ah} 3.3{ph} 3.3{th} 3.3{sh} +`} + + +## `v` + +```plain title=" Syntax" +v +``` +**Description:** Applies a slight vibrato effect to the note. + +**Values:** None + +**Example** + +{` +3.3{v} +`} + +## `vw` + +```plain title=" Syntax" +vw +``` +**Description:** Applies a wide vibrato effect to the note. + +**Values:** None + +**Example** + +{` +3.3{vw} +`} + +## `sl`, `ss`, `sib`, `sia`, `sou`, `sod`, `psu`, `psd` + +```plain title=" Syntax" +sl +ss +sib +sia +sou +sod +psd +psu +``` +**Description:** Applies a slide effect to the note. + +* `sl` for a legato slide +* `ss` for a shift slide +* `sib` for a slide into from below +* `sia` for a slide into from above +* `sou` for a slide out upwards +* `sod` for a slide out downwards +* `psu` for a pick slide upwards +* `psd` for a pick slide downwards + +**Values:** None + +**Example** + +{` +3.3{sl} 4.3 3.3{ss} 4.3 | +3.3{sib} 3.3{sia} 3.3{sou} 3.3{sod} | +3.3{sib sou} 3.3{sib sod} 3.3{sia sod} 3.3{sia sou} | +x.3{psd} 3.3 | +x.3{psu} 3.3 |`} + +## `h` + +```plain title=" Syntax" +h +``` +**Description:** Applies a hammer on / pull-off effect to the note. + +The fret of the following note on the same string defines whether it is a hammer-on or pull-of + +**Values:** None + +**Example** + +{` +3.3{h} 4.3 4.3{h} 3.3 | 3.3{h} 4.3{h} 3.3{h} 4.3 +`} + +## `lht` + +```plain title=" Syntax" +lht +``` +**Description:** Applies a left-hand-tapped annotation to the note. + +**Values:** None + +**Example** + +{` +:16 15.1{h} 13.1{h} 12.1{h} 15.2{lht} +`} + +## `g` + +```plain title=" Syntax" +g +``` +**Description:** Marks the note as a ghost note. + +**Values:** None + +**Example** + +{` +3.3{g} +`} + +## `ac`, `hac`, `ten` + +```plain title=" Syntax" +ac +hac +ten +``` + +**Description:** Applies an accentuation to the note. + +* `ac` for a simple accentuation ++ `hac` for a heavy accentuation +* `ten` for a tenuto accentuation + +**Values:** None + +**Example** + +{` +3.3{ac} 3.3{hac} 3.3{ten} +`} + +## `tr` + +```plain title=" Syntax" +tr fret +tr (fret duration) +``` + +**Description:** Applies a trill effect to the note. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| fret | The fret on which to trill | `number` | yes | +| duration | The duration/speed of the trills | `16` (default), `32` or `64` | no | + +**Example** + +{` +:4 3.3{tr 4} 3.3{tr 4 16} 3.3{tr 5 32} 3.3{tr 6 64} +`} + +## `pm` + +```plain title=" Syntax" +pm +``` + +**Description:** Applies a palm mute effect to the note. + +**Values:** None + +**Example** + +{` +3.3{pm} 3.3{pm} 3.3{pm} 3.3{pm} +`} + +## `st` + +```plain title=" Syntax" +st +``` + +**Description:** Applies a staccato effect to the note. + +**Values:** None + +**Example** + +{` +3.3{st} +`} + +## `lr` + +```plain title=" Syntax" +lr +``` + +**Description:** Applies a LetRing effect to the note. + +**Values:** None + +**Example** + +{` +3.4{lr} 3.3{lr} 3.2{lr} 3.1{lr} +`} + +## `x` + +```plain title=" Syntax" +x +``` + +**Description:** Marks the note as a dead note. + +This is an alternative syntax to directly specifying the fret as `x`. + +**Values:** None + +**Example** + +{` +x.3 3.3{x} +`} + +## `t`, `-` + + +```plain title=" Syntax" +t +- +``` + +**Description:** Marks the note as a tied note. + +This is an alternative syntax to directly specifying the fret as `-`. + +For non stringed instrument it can be a bit more tricky as we cannot use the string to identify which note to tie. +There are multiple ways to work around this problem. +AlphaTab will try to find the start note for the tie via several rules, if this does not match the desired behavior, +you can specify the note value as alternative and indicate the tie via a note effect. + +**Values:** None + +**Example** + +{` +3.3 -.3 | (1.1 3.2 2.3 0.4) (-.1 -.4) +`} + +{` +\\tuning piano +. +// If there is a single note on the previous beat, we tie to this one +// Then a simple - is enough for a tie +:2 a4 - | +// Alternatively you can specify a '-' or 't' as note effect to indicate a tie +:2 a4 a4{-} | +:2 a4 a4{t} | +// This also works for chords using correct note ordering +:2 (a4 a3) (- a3) | +:2 (a4 a3) (a4 -) | +// If nothing helps, always the explicit note value and tie effect should allow +// specifying the correct behavior +:2 (a4 a3) (a4{t} a3) | +:4 (a4 a3) (b2 b3) a4{t} a3{-} | +`} + +## `turn` + +```plain title=" Syntax" +turn +``` + +**Description:** Applies a turn ornament to the note. + +**Values:** None + +**Example** + +{` +:1 C4{turn} | +`} + +## `iturn` + +```plain title=" Syntax" +iturn +``` + +**Description:** Applies an inverted turn ornament to the note. + +**Values:** None + +**Example** + +{` +:1 C4{iturn} | +`} + +## `umordent` + +```plain title=" Syntax" +umordent +``` + +**Description:** Applies an upper mordent ornament to the note. + +**Values:** None + +**Example** + +{` +:1 C4{umordent} | +`} + +## `lmordent` + +```plain title=" Syntax" +lmordent +``` + +**Description:** Applies a lower mordent ornament to the note. + +**Values:** None + +**Example** + +{` +:1 C4{lmordent} | +`} + +## `string` + +```plain title=" Syntax" +string +``` + +**Description:** Adds an annotation showing the string number of the note above the staff. + +**Values:** None + +**Example** + +{` +3.3{string} 3.4{string} 3.5{string} +`} + +## `hide` + +```plain title=" Syntax" +hide +``` + +**Description:** Hides the note from being displayed in the music sheet.. + +**Values:** None + +**Example** + +{` +:8 3.3 (4.4{hide} 5.5) +`} + +## `b`, `be` + + +```plain title=" Syntax" +b (type style value1 value2 value3...) +be (type style offset1 value1 offset2 value2 offset3 value3...) +``` +**Description:** Adds a bend effect to the note. + +* The `b` variant automatically spreads the values across the duration of the beat. +* The `be` (exact) variant allows specifying exactly at which offset a value is placed. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| type | The type of bend (affects the display). | `custom`, `bend`, `release`, `bendRelease`, `hold`, `prebend`, `prebendbend`, `prebendrelease` | no | +| style | The style of the bend play style. | `default`, `gradual`, `fast`` | no | +| offset | The offset at which the value becomes valid | `number` (0-60) | yes (if `tbe`) | +| value | The value of the whammy in quarter-tones relative to the original note, decimals supported | `number` | yes | + +It is recommended to rely on the auto-detection of the type and only specify the type explicitly if something is wrong: +* `custom` - use this for non standard custom bends with multiple points +* `bend` - use this for a simple bend up to a higher note. +* `release` - use this for a releases of bends down to a lower note. +* `bendRelease` - use this for a bends directly followed by a release. +* `hold` - use this when bends are held (e.g. on tied notes). +* `prebend` - use this when a bent to a higher note is performed before the note is played. +* `prebendbend` - use this when a bent to a higher note is performed before the note is played and then during playing the note is bent further. +* `prebendrelease` - use this when a bent to a higher note is performed before the note is played and then during playing the note is released. + +The style can be one of these values: +* `default` - No additional text is shown, the bend offsets and values are respected as specified. +* `gradual` - Will show an additional "grad." on the whammy line. The audio is generated according to the type spread evenly across the play duration. +* `fast` - No additional text is shown. The audio is generated according to the type spread evenly across the fixed duration set via `settings.player.songBookBendDuration`. + +**Example** + +{` +3.3{b (0 4)} | +3.3{b (0 4 0 8)} | +`} + +To specify a bend with exact positions (not evenly distributed) you can use `be (offset1 value1 offset2 value2)`. +The offset is ranging from 0 to 60. + +{` +:1 3.3 {be (0 0 5 2 30 4)} +`} + +## `lf`, `rf` + + +```plain title=" Syntax" +lf finger +rf finger +``` +**Description:** Adds a fingering annotation to the note. + +* `lf` for the left-hand finger +* `rf` for the right-hand finger + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| finger | The finger to specify. | `number` | yes | + +* `1` for the thumb +* `2` for the index finger +* `3` for the middle finger +* `4` for the annual finger +* `5` for the little finger + +**Example** + +{` +:8 3.3{lf 1} 3.3{lf 2} 3.3{lf 3} 3.3{lf 4} 3.3{lf 5} (2.2{lf 4} 2.3{lf 3} 2.4{lf 2}) | +:8 3.3{rf 1} 3.3{rf 2} 3.3{rf 3} 3.3{rf 4} 3.3{lf 5} +`} + +## `acc` + +```plain title=" Syntax" +acc mode +``` +**Description:** Changes the mode to determine the accidentals for this note. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| mode | The accidental mode to use. | `identifier` | yes | + +* `d` or `default` for the default mode (auto-detect the accidentals) +* `forceNone` or `-` to force no accidental +* `forceNatural` or `n` to force a naturalize accidental +* `forceSharp` or `#` to force a sharp accidental +* `forceDoubleSharp`, `##` or `x` to force a double-sharp accidental +* `forceFlat`, `b` to force a flat accidental +* `forceDoubleFlat`, `bb` to force a double flat accidental + +Keep in mind that not all combinations of note heights and accidental modes can be valid. +alphaTab will attempt to adjust the note height and place the requested accidental which could, +in some situations lead to notes being placed at the wrong line. + +**Example** + +{` +\\ks Db +3.5 5.5 {acc x} 4.5 {acc #} 2.5 {acc b} +`} + +## `slur` + +```plain title=" Syntax" +slur id +``` +**Description:** Marks the start or end of a slur for the note. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| id | A unique ID to mark the start and end of the slur. | `string` or `identifier` | yes | + +{` +(3.3 {slur s1} 4.4).4 7.3.8 8.3.8 10.3 {slur s1} .8 +`} diff --git a/docs/alphatex/notes.mdx b/docs/alphatex/notes.mdx index 75c5956..bcc6ea9 100644 --- a/docs/alphatex/notes.mdx +++ b/docs/alphatex/notes.mdx @@ -55,25 +55,6 @@ You can specify a multiplier after a beat to add the same beat multiple times to ## Multiple voices -alphaTab supports showing multiple independent voices within one bar, to write such notation in alphaTex the `\voice` syntax can be used to start a new voice. -Once a new voice starts, you again can define the notes starting from the first bar. alphaTab will try to consolidate inconsistencies in the number of bars across voices. - -{` -\\track "Piano" - \\staff{score} \\tuning piano \\instrument acousticgrandpiano - \\voice - c4 d4 e4 f4 | c4 d4 e4 f4 - \\voice - c3 d3 e3 f3 | c3 d3 e3 f3 - -\\track "Piano2" - \\staff{score} \\tuning piano \\instrument acousticgrandpiano - \\voice - c4 d4 e4 f4 | c4 d4 e4 f4 - \\voice - c3 d3 e3 f3 - -`} ## Accidentals diff --git a/docs/alphatex/percussion.mdx b/docs/alphatex/percussion.mdx deleted file mode 100644 index 875c5c2..0000000 --- a/docs/alphatex/percussion.mdx +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: Percussion -since: 1.4.0 ---- - -import { SinceBadge } from '@site/src/components/SinceBadge'; - - - -import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; - -Since alphaTab 1.4 you can also write percussion (drum) tracks in alphaTab. For this the `\instrument "percussion"` has to be set -for the track and then you can add notes via articulation names or numbers. - -{` -\\track "Drums" -\\instrument percussion -\\tempo 120 -\\clef neutral -\\articulation defaults -(KickHit RideBell).16 r KickHit KickHit (KickHit RideBell).16 r KickHit KickHit (KickHit RideBell).16 r KickHit KickHit (KickHit RideBell).16 r KickHit KickHit | -(KickHit HiHatOpen) KickHit KickHit KickHit (KickHit HiHatOpen) KickHit KickHit KickHit (KickHit SnareHit HiHatOpen) KickHit KickHit.32 KickHit KickHit.16 (KickHit HiHatOpen) KickHit KickHit KickHit | -(KickHit HiHatOpen).8{tu 3} KickHit{tu 3} KickHit{tu 3} (KickHit SnareHit HiHatOpen){tu 3} KickHit.16{tu 3} KickHit{tu 3} KickHit.8{tu 3} (KickHit HiHatOpen).8{tu 3} KickHit{tu 3} KickHit{tu 3} (KickHit SnareHit HiHatOpen).8{tu 3} KickHit{tu 3} KickHit{tu 3} -`} - -## Instrument Articulations - -alphaTab comes with a default set of instrument articulations derived from Guitar Pro 7. Each articulation has an internal number with which it can be referenced. -To make writing more human friendly you can define custom articulation names via `\articulation Name Number` - -{` -\\track "Drums" -\\instrument percussion -\\tempo 120 -\\clef neutral -// define the articulation here -\\articulation Kick 36 -// use it as note values -Kick.4 Kick.8 Kick.8 Kick.4 Kick.4 - -`} - -If you simply want to use all articulations you can specify `\articulation defaults` and the whole list of articulations with some default names will be provided. - -{` -\\track "Drums" -\\instrument percussion -\\tempo 120 -\\clef neutral -\\articulation defaults -\\ts 2 4 -("Kick (Hit)" "Hi-Hat (Open)") "Kick (Hit)" "Kick (Hit)" "Kick (Hit)" -(KickHit HiHatOpen) KickHit KickHit KickHit -`} - -## Articulation List - -To actually get started you need to know the list of built-in articulations. Refer to this list below and the example as reference: - -export const list = [ - ['Ride (choke)', 29], - ['Cymbal (hit)', 30], - ['Snare (side stick)', 31], - ['Snare (side stick) 2', 33], - ['Snare (hit)', 34], - ['Kick (hit)', 35], - ['Kick (hit) 2', 36], - ['Snare (side stick) 3', 37], - ['Snare (hit) 2', 38], - ['Hand Clap (hit)', 39], - ['Snare (hit) 3', 40], - ['Low Floor Tom (hit)', 41], - ['Hi-Hat (closed)', 42], - ['Very Low Tom (hit)', 43], - ['Pedal Hi-Hat (hit)', 44], - ['Low Tom (hit)', 45], - ['Hi-Hat (open)', 46], - ['Mid Tom (hit)', 47], - ['High Tom (hit)', 48], - ['Crash high (hit)', 49], - ['High Floor Tom (hit)', 50], - ['Ride (middle)', 51], - ['China (hit)', 52], - ['Ride (bell)', 53], - ['Tambourine (hit)', 54], - ['Splash (hit)', 55], - ['Cowbell medium (hit)', 56], - ['Crash medium (hit)', 57], - ['Vibraslap (hit)', 58], - ['Ride (edge)', 59], - ['Hand (hit)', 60], - ['Hand (hit)', 61], - ['Conga high (mute)', 62], - ['Conga high (hit)', 63], - ['Conga low (hit)', 64], - ['Timbale high (hit)', 65], - ['Timbale low (hit)', 66], - ['Agogo high (hit)', 67], - ['Agogo tow (hit)', 68], - ['Cabasa (hit)', 69], - ['Left Maraca (hit)', 70], - ['Whistle high (hit)', 71], - ['Whistle low (hit)', 72], - ['Guiro (hit)', 73], - ['Guiro (scrap-return)', 74], - ['Claves (hit)', 75], - ['Woodblock high (hit)', 76], - ['Woodblock low (hit)', 77], - ['Cuica (mute)', 78], - ['Cuica (open)', 79], - ['Triangle (rnute)', 80], - ['Triangle (hit)', 81], - ['Shaker (hit)', 82], - ['Tinkle Bell (hat)', 83], - ['Jingle Bell (hit)', 83], - ['Bell Tree (hit)', 84], - ['Castanets (hit)', 85], - ['Surdo (hit)', 86], - ['Surdo (mute)', 87], - ['Snare (rim shot)', 91], - ['Hi-Hat (half)', 92], - ['Ride (edge) 2', 93], - ['Ride (choke) 2', 94], - ['Splash (choke)', 95], - ['China (choke)', 96], - ['Crash high (choke)', 97], - ['Crash medium (choke)', 98], - ['Cowbell low (hit)', 99], - ['Cowbell low (tip)', 100], - ['Cowbell medium (tip)', 101], - ['Cowbell high (hit)', 102], - ['Cowbell high (tip)', 103], - ['Hand (mute)', 104], - ['Hand (slap)', 105], - ['Hand (mute) 2', 106], - ['Hand (slap) 2', 107], - ['Conga low (slap)', 108], - ['Conga low (mute)', 109], - ['Conga high (slap)', 110], - ['Tambourine (return)', 111], - ['Tambourine (roll)', 112], - ['Tambourine (hand)', 113], - ['Grancassa (hit)', 114], - ['Piatti (hat)', 115], - ['Piatti (hand)', 116], - ['Cabasa (return)', 117], - ['Left Maraca (return)', 118], - ['Right Maraca (hit)', 119], - ['Right Maraca (return)', 120], - ['Shaker (return)', 122], - ['Bell Tee (return)', 123], - ['Golpe (thumb)', 124], - ['Golpe (finger)', 125], - ['Ride (middle) 2', 126], - ['Ride (bell) 2', 127] -]; - -export function ArticulationTable({list}) { - return ( - - - - - - - - - - {list.map(i => ( - - - - - - ))} - -
NumberName LongName Short
{i[1]}{i[0]}{i[0].replace(/[^a-zA-Z0-9]/g, '')}
- ) -} - - - -export function articulationsToAlphaTex(){ - const lines = [ - '\\track "Drums"', - '\\instrument percussion', - '\\tempo 120', - '\\clef neutral', - '\\ts 2 4']; - - let line = ''; - for(let i = 0; i < list.length; i++) { - if( (i % 4) === 3) { - line += '|'; - lines.push(line); - line = ''; - } - - line += list[i][1] + ' '; - } - - line += '|'; - lines.push(line); - - return lines.filter(l => l !== '|').join('\n'); -} - - -{articulationsToAlphaTex()} \ No newline at end of file diff --git a/docs/alphatex/score-metadata.mdx b/docs/alphatex/score-metadata.mdx new file mode 100644 index 0000000..6e1bfa1 --- /dev/null +++ b/docs/alphatex/score-metadata.mdx @@ -0,0 +1,564 @@ +--- +title: Score Metadata +--- + +import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; +import { SinceBadge } from '@site/src/components/SinceBadge'; + +This page lists all metadata tags which affect the overall song. + +It is recommended that these tags are specified at the very beginning of the file. + +## `\title` + +```plain title="Tag Syntax" +\title value +\title (value template textAlign) +``` +**Description:** Sets the title of the song in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The title of the song | `string` | yes | +| template | The text template used to render the title | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\title ("Song Title" "Title: %TITLE%" left) +C4 +`} + +There are no properties on this metadata. + +## `\subtitle` + +```plain title="Tag Syntax" +\subtitle value +\subtitle (value template textAlign) +``` +**Description:** Sets the subtitle of the song in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The subtitle of the song | `string` | yes | +| template | The text template used to render the subtitle | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\title ("Song Title" "Title: %TITLE%" left) +\\subtitle ("Subtitle" "[%SUBTITLE%]" left) +C4 +`} + +There are no properties on this metadata. + +## `\artist` + +```plain title="Tag Syntax" +\artist value +\artist (value template textAlign) +``` +**Description:** Sets the artist of the song in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The artist of the song | `string` | yes | +| template | The text template used to render the artist | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\title ("Song Title" "Title: %TITLE%" left) +\\artist "alphaTab" +C4 +`} + +There are no properties on this metadata. + +## `\album` + +```plain title="Tag Syntax" +\album value +\album (value template textAlign) +``` +**Description:** Sets the album of the song in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The album of the song | `string` | yes | +| template | The text template used to render the album | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\title ("Song Title" "Title: %TITLE%" left) +\\album "alphaTab vol.1" +C4 +`} + +There are no properties on this metadata. + +## `\words` + +```plain title="Tag Syntax" +\words value +\words (value template textAlign) +``` +**Description:** Sets the words/lyrics author of the song in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The words/lyrics author of the song | `string` | yes | +| template | The text template used to render the words/lyrics author | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\words "CoderLine" +C4 +`} + +There are no properties on this metadata. + +## `\music` + +```plain title="Tag Syntax" +\music value +\music (value template textAlign) +``` +**Description:** Sets the music author of the song in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The music author of the song | `string` | yes | +| template | The text template used to render the music author | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\music "CoderLine and Contributors" +C4 +`} + +There are no properties on this metadata. + +## `\wordsandmusic` + +```plain title="Tag Syntax" +\wordsAndMusic (template textAlign) +``` +**Description:** Sets the template and text align for the words and music (if they have the same value) +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| template | The text template used to render the item | `string` | yes | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +There is no own "value" for the wordsAndMusic meta as this display activates +if `\words` and `\music` have the same value which will be used. + +**Example** + +{` +\\words "CoderLine" +\\music "CoderLine" +\\wordsAndMusic ("Words & Music: %WORDS%") +C4 +`} + +There are no properties on this metadata. + +## `\copyright` + +```plain title="Tag Syntax" +\copyright value +\copyright (value template textAlign) +``` +**Description:** Sets owner of the copyright of the song in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The owner of the copyright of the song | `string` | yes | +| template | The text template used to render the item | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\copyright "CoderLine" +C4 +`} + +There are no properties on this metadata. + +## `\copyright2` + +```plain title="Tag Syntax" +\copyright2 (template textAlign) +``` +**Description:** Sets the template and text align for the second copyright line. +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| template | The text template used to render the item | `string` | yes | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +There is no own "value" as it is typically used to just define a static text like "All rights reserved". The "template" can be used for defining the display. + +**Example** + +{` +\\copyright "CoderLine" +\\copyright2 "All rights reserved" +C4 +`} + +There are no properties on this metadata. + +## `\instructions` + +```plain title="Tag Syntax" +\instructions value +``` +**Description:** Sets the additional textual instructions attached to the music sheet (not displayed). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The music author of the song | `string` | yes | + +**Example** + +{` +\\instructions "Practice this piece until you get it perfect." +C4 +`} + +There are no properties on this metadata. + +## `\notices` + +```plain title="Tag Syntax" +\notices value +``` +**Description:** Sets the general notices attached to the music sheet (not displayed). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The music author of the song | `string` | yes | + +**Example** + +{` +\\notices "I hope you appreciate this music sheet, it was a lot of effort to create!" +C4 +`} + +There are no properties on this metadata. + +## `\tab` + +```plain title="Tag Syntax" +\tab value +\tab (value template textAlign) +``` +**Description:** Sets the transcriber of the music sheet in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The transcriber of the music sheet | `string` | yes | +| template | The text template used to render this item | `string` | no | +| textAlign | The text alignment of the text to display on the music sheet | `left`, `center` or `right` | no | + +**Example** + +{` +\\tab "Transcribed by me" +C4 +`} + +There are no properties on this metadata. + +## `\systemsLayout` + +```plain title="Tag Syntax" +\systemsLayout (system1Bars system2Bars...) +``` +**Description:** Defines the number of bars to display per system when rendering multiple tracks. + +The `systemsLayout` and `defaultSystemsLayout` allow configuring the system layout. +The system layout, defines how many bars should be displayed per system (line) if enabled via [`systemsLayoutMode`](/docs/reference/settings/display/systemslayoutmode). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| numberOfBars | Defines for every system (line) the number of bars it should contain | `number` (repeated) | yes | + +**Example** + +{` +\\systemsLayout (2 3 2) +\\track + :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 +\\track + :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 +`} + +There are no properties on this metadata. + +## `\defaultSystemsLayout` + +```plain title="Tag Syntax" +\defaultSystemsLayout numberOfBars +``` +**Description:** Defines the default number of bars to display per system when rendering multiple tracks. + +The `systemsLayout` and `defaultSystemsLayout` allow configuring the system layout. +The system layout, defines how many bars should be displayed per system (line) if enabled via [`systemsLayoutMode`](/docs/reference/settings/display/systemslayoutmode). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| numberOfBars | Defines for every system (line) the number of bars it should contain | `number` | yes | + +**Example** + +{` +\\defaultSystemsLayout 2 +\\track + :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 +\\track + :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 +`} + +There are no properties on this metadata. + +## `\showDynamics` and `\hideDynamics` + +```plain title="Tag Syntax" +\showDynamics +\hideDynamics +``` +**Description:** Enables or disables the display of dynamics. + +**Values:** None + +**Example** + +{` +\\showDynamics + C4 {dy FFF} D4 + E4 {dy PP} F4 +`} + +{` +\\hideDynamics + C4 {dy FFF} D4 + E4 {dy PP} F4 +`} + +There are no properties on this metadata. + +## `\useSystemSignSeparator` + +```plain title="Tag Syntax" +\useSystemSignSeparator +``` +**Description:** Configures whether a system sign separator should be added (in case multiple tracks are shown) + +**Values:** None + +**Example** + +{` +\\useSystemSignSeparator +\\defaultSystemsLayout 2 +\\track "T1" +:1 C4 | C4 | C4 +\\track "T2" +:1 C4 | C4 | C4 +`} + +There are no properties on this metadata. + +## `\multiBarRest` + +```plain title="Tag Syntax" +\multiBarRest +``` +**Description:** Enable the display of multibar rests in case multiple tracks are shown. + +**Values:** None + +**Example** + +{` +\\title "Multi Track" +\\multiBarRest +\\track "Piano 1" "pno1" + \\staff {score} + C4 D4 E4 F4 | r | r | C4 D4 E4 F4 | r | r | r | C4 + +\\track "Piano 2" "pno1" + \\staff {score} + C4 D4 E4 F4 | r | r | C4 D4 E4 F4 | r | r | r | r | +`} + +There are no properties on this metadata. + +## `\bracketExtendMode` + +```plain title="Tag Syntax" +\bracketExtendMode mode +``` +**Description:** Configure the mode how to show [brackets and braces](/docs/showcase/general.mdx#brackets-and-braces). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| mode | The mode to use | `noBrackets`, `groupStaves` or `groupSimilarInstruments` | yes | + +{` +\\bracketextendmode GroupSimilarInstruments +\\track "Piano1" + \\staff {score} + \\instrument piano + C4 D4 E4 F4 + \\staff {score} + \\clef f4 C3 D3 E3 F3 +\\track "Piano2" + \\staff {score} + \\instrument piano + C4 D4 E4 F4 +\\track "Flute 1" + \\staff { score } + \\instrument flute + C4 D4 E4 F4 +\\track "Flute 2" + \\staff { score } + \\instrument flute + \\clef f4 C3 D3 E3 F3 +\\track "Guitar 1" + \\staff { score tabs } + 0.3.4 2.3.4 5.3.4 7.3.4 +`} + +There are no properties on this metadata. + +## `\singleTrackTrackNamePolicy` and `\multiTrackTrackNamePolicy` + +```plain title="Tag Syntax" +\singleTrackTrackNamePolicy mode +\multiTrackTrackNamePolicy mode +``` +**Description:** Configures on which systems to show the [track names](/docs/showcase/general.mdx#track-names) + +As the name implies the tags configure how to behave if only a single, or multiple tracks are displayed. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| mode | The mode to use | `hidden`, `firstSystem` or `allSystems` | yes | + +**Example** + +{` +\\singletracktracknamepolicy AllSystems +\\track "Piano 1" "pno1" { defaultsystemslayout 3 } + C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | +`} + +There are no properties on this metadata. + +## `\firstSystemTrackNameMode` and `\otherSystemsTrackNameMode` + +```plain title="Tag Syntax" +\firstSystemTrackNameMode mode +\otherSystemsTrackNameMode mode +``` +**Description:** Configures the text how to show as [track names](/docs/showcase/general.mdx#track-names) + +As the name implies the tags configure how to behave on the first or on subquent tracks. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| mode | The mode to use | `shortName` or `fullName` | yes | + +**Example** + +{` +\\singletracktracknamepolicy AllSystems +\\firstsystemtracknamemode fullname +\\othersystemstracknamemode shortname +\\track "Piano 1" "pno1" { defaultsystemslayout 3 } + C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | +`} + +There are no properties on this metadata. + +## `\firstSystemTrackNameOrientation` and `\otherSystemsTrackNameOrientation` + +```plain title="Tag Syntax" +\firstSystemTrackNameOrientation orientation +\otherSystemsTrackNameOrientation orientation +``` +**Description:** Configures the orientation of the [track names](/docs/showcase/general.mdx#track-names) + +As the name implies the tags configure how to behave on the first or on subquent tracks. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| orientation | The orientation to use | `horizontal` or `vertical` | yes | + +**Example** + +{` +\\singletracktracknamepolicy AllSystems +\\firstsystemtracknamemode fullname +\\othersystemstracknamemode shortname +\\firstsystemtracknameorientation horizontal +\\othersystemstracknameorientation vertical +. +\\track "Piano 1" "pno1" { defaultsystemslayout 3 } + \\staff {score} + C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | +`} + +There are no properties on this metadata. \ No newline at end of file diff --git a/docs/alphatex/staff-metadata.mdx b/docs/alphatex/staff-metadata.mdx new file mode 100644 index 0000000..7a7b25d --- /dev/null +++ b/docs/alphatex/staff-metadata.mdx @@ -0,0 +1,543 @@ +--- +title: Staff metadata +--- + +import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; +import { SinceBadge } from '@site/src/components/SinceBadge'; + +This page describes all the metadata tags which affect the "staff" level of the data model. + +To avoid any unexpected side-effects, these values should be specified on the first bar. + +Some of these tags are simply historically metadata tags. They might become staff properties in future. + +## `\tuning` + +```plain title="Tag Syntax" +\tuning (strings) { label "Label" hide } +\tuning `piano` +\tuning `none` +\tuning `voice` +``` +**Description:** Defines the number of strings and their tuning for stringed (and fretted) instruments. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| strings | The tuning values as [pitched notes](./document-structure.mdx#pitched-notes)) | `identifier` list | yes | +| `piano` | Indicates that this staff is NOT stringed, but a piano with pitched notes. | `identifier` | yes | +| `none` | Indicates that this staff is NOT stringed and has no tuning and uses pitched notes. | `identifier` | yes | +| `voice` | Indicates that this staff is NOT stringed, but a vocal voice with pitched notes. | `identifier` | yes | + +**Example** + +{` +\\track "Track 1" + \\staff {tabs} + \\tuning (A1 D2 A2 D3 G3 B3 E4) { hide label "Special Guitar Tuning" } + 4.1 3.1 2.1 1.1 +\\track "Track 2" + \\tuning piano + C4 D4 E4 F4 +`} + +The following properties are supported on this metadata. + +### `hide` + +```plain title="Syntax" +hide +``` + +**Description:** Hides the tuning from being displayed above the first staff. + +**Values:** None + +**Example:** + +{` +\\track + \\staff {tabs} + \\tuning (E4 B3 G3 D3 A2 D2) + 4.1 3.1 2.1 1.1 +\\track + \\staff {tabs} + \\tuning (F2 C2 G1 D1) { hide} + 4.1 3.1 2.1 1.1 +`} + +### `label` + +```plain title="Syntax" +label text +``` + +**Description:** Defines the textual label for the tuning. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| text | The label to set | `string` | yes | + +**Example:** + +{` +\\track + \\staff {tabs} + \\tuning (E4 B3 G3 D3 A2 D2) { label "Dropped D Tuning" } + 4.1 3.1 2.1 1.1 +`} + +## `\chord` + +```plain title="Tag Syntax" +\chord (name strings) +``` + +**Description:** Defines a new chord for a chord diagram display defining how to play it. + +To avoid inconsistencies with tunings, chords should be defined after the tuning is set. + +To "use" the defined chord the `ch chordName` beat property has to be applied. The notes for the +chord still have to be specified separately, the definition in this metadata is purely for the chord diagram. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| name | The name of the chord | `string` or `identifier` | yes | +| strings | For every string of the staff tuning, the fret to be played or `x` for strings not played. | `identifier` or `number` list | yes | + +**Example** + +{` +\\chord ("C" 0 1 0 2 3 x) +\\ts 2 4 +(0.1 1.2 0.3 2.4 3.5){ch "C"} (0.1 1.2 0.3 2.4 3.5) +`} + +The following properties are supported on this metadata. + +### `firstfret` + +```plain title="Syntax" +firstfret fret +``` + +**Description:** Shifts the first fret shown in the diagram higher + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| fret | The index of the first fret | `number` | yes | + +**Example:** + +{` +\\chord ("D#" 6 8 8 8 6 x) {firstfret 6} +. +(6.1 8.2 8.3 8.4 6.5){ch "D#"} +`} + +### `barre` + +```plain title="Syntax" +barre fret +barre (fret1 fret2...) +``` + +**Description:** Defines on which frets a barré should be played (visually joins the dots to a bar). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| frets | The frets on which a barré should be played | `number` list | yes | + +**Example:** + +{` +\\chord ("D#" 6 8 8 8 6 x) {firstfret 6 barre 6} +\\chord ("Special" 3 3 3 1 1 1) {showname false barre (1 3)} +. +(6.1 8.2 8.3 8.4 6.5){ch "D#"} +(3.1 3.2 3.3 1.4 1.5 1.6){ch "Special"} +`} + +### `showDiagram` + +```plain title="Syntax" +showDiagram visibility +``` + +**Description:** Enables/Disables whether the chord diagram should be shown. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| visibility | The visibility of the diagram | `number` (0/1) or `boolean` (false/true) | No (default: true) | + +**Example:** + +{` +\\chord ("E" 0 0 1 2 2 0) {showdiagram false} +. +(0.1 0.2 1.3 2.4 2.5 0.6){ch "E"} +`} + +### `showName` + +```plain title="Syntax" +showName visibility +``` + +**Description:** Enables/Disables whether the chord name should be shown. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| visibility | The visibility of the diagram | `number` (0/1) or `boolean` (false/true) | No (default: true) | + +**Example:** + +{` +// Hide name and multiple barre +\\chord ("Special" 3 3 3 1 1 1) {showname false} +. +(3.1 3.2 3.3 1.4 1.5 1.6){ch "Special"} +`} + +## `\capo` + +```plain title="Syntax" +\capo fret +``` + +**Description:** Defines the fret on which a capo should be placed. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| fret | The fret on which a capo is placed | `number` | yes | + +**Example:** + +{` +\\track "Guitar" + \\staff{tabs} + \\capo 5 + 1.2 3.2 0.1 1.1 +`} + +There are no properties on this metadata. + +## `\lyrics` + +```plain title="Syntax" +\lyrics startBar lyrics +\lyrics lyrics +``` + +**Description:** Define the lyrics shown on the beats of the staff. + +The lyrics system of alphaTab is borrowed from Guitar Pro. For every track multiple "lines" of lyrics can be defined which can either start at the beginning or at a later bar. +The syllables of the procided lyrics are spread automatically across the beats of the track. Syllables are separated with spaces. +If multiple words/syllables should stay on the same beat the space can be replaced with a `+`. +Comments which should not be displayed can be put `[into brackets]`. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| startBar | The first bar on which the notes should be applied | `number` | no | +| lyrics | The lyrics text to apply to the beats | `string` | yes | + +**Example:** + +{` +\\title "With Lyrics" +\\instrument piano +. +\\lyrics "Do Re Mi Fa So La Ti" +C4 D4 E4 F4 | G4 A4 B4 r +`} + +{` +\\title "Combine Syllables (and empty beats)" +\\instrument piano +. +\\lyrics "Do+Do Mi+Mi" +C4 C4 E4 E4 +`} + +{` +\\title "Start Later" +\\instrument piano +. +\\lyrics 2 "Do Re Mi Fa So La Ti" +r r r r | r r r r | +C4 D4 E4 F4 | G4 A4 B4 r +`} + +{` +\\title "Comment" +\\subtitle "Useful when loading lyrics from a different source" +\\instrument piano +. +\\lyrics "[This is a comment]Do Re Mi Fa" +C4 D4 E4 F4 +`} + +### `\articulation` + + + +```plain title="Syntax" +\articulation defaults +\articulation name value +``` + +**Description:** Defines the articulations available to write percussion and drum tabs. + +Currently alphaTex does not defining completely custom articulations (note heads, staff line, technical symbols etc.). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| defaults | Registers all standard articulation names | `identifier` | yes (unless name/value syntax is used) | +| name | The string (or identifier) used in the note values | `string` or `identifier` | yes | +| value | The numeric value of the built-in articulation | `identifier` | yes | + +**Built-in articulations:** + +export const list = [ + ['Ride (choke)', 29], + ['Cymbal (hit)', 30], + ['Snare (side stick)', 31], + ['Snare (side stick) 2', 33], + ['Snare (hit)', 34], + ['Kick (hit)', 35], + ['Kick (hit) 2', 36], + ['Snare (side stick) 3', 37], + ['Snare (hit) 2', 38], + ['Hand Clap (hit)', 39], + ['Snare (hit) 3', 40], + ['Low Floor Tom (hit)', 41], + ['Hi-Hat (closed)', 42], + ['Very Low Tom (hit)', 43], + ['Pedal Hi-Hat (hit)', 44], + ['Low Tom (hit)', 45], + ['Hi-Hat (open)', 46], + ['Mid Tom (hit)', 47], + ['High Tom (hit)', 48], + ['Crash high (hit)', 49], + ['High Floor Tom (hit)', 50], + ['Ride (middle)', 51], + ['China (hit)', 52], + ['Ride (bell)', 53], + ['Tambourine (hit)', 54], + ['Splash (hit)', 55], + ['Cowbell medium (hit)', 56], + ['Crash medium (hit)', 57], + ['Vibraslap (hit)', 58], + ['Ride (edge)', 59], + ['Hand (hit)', 60], + ['Hand (hit)', 61], + ['Conga high (mute)', 62], + ['Conga high (hit)', 63], + ['Conga low (hit)', 64], + ['Timbale high (hit)', 65], + ['Timbale low (hit)', 66], + ['Agogo high (hit)', 67], + ['Agogo tow (hit)', 68], + ['Cabasa (hit)', 69], + ['Left Maraca (hit)', 70], + ['Whistle high (hit)', 71], + ['Whistle low (hit)', 72], + ['Guiro (hit)', 73], + ['Guiro (scrap-return)', 74], + ['Claves (hit)', 75], + ['Woodblock high (hit)', 76], + ['Woodblock low (hit)', 77], + ['Cuica (mute)', 78], + ['Cuica (open)', 79], + ['Triangle (rnute)', 80], + ['Triangle (hit)', 81], + ['Shaker (hit)', 82], + ['Tinkle Bell (hat)', 83], + ['Jingle Bell (hit)', 83], + ['Bell Tree (hit)', 84], + ['Castanets (hit)', 85], + ['Surdo (hit)', 86], + ['Surdo (mute)', 87], + ['Snare (rim shot)', 91], + ['Hi-Hat (half)', 92], + ['Ride (edge) 2', 93], + ['Ride (choke) 2', 94], + ['Splash (choke)', 95], + ['China (choke)', 96], + ['Crash high (choke)', 97], + ['Crash medium (choke)', 98], + ['Cowbell low (hit)', 99], + ['Cowbell low (tip)', 100], + ['Cowbell medium (tip)', 101], + ['Cowbell high (hit)', 102], + ['Cowbell high (tip)', 103], + ['Hand (mute)', 104], + ['Hand (slap)', 105], + ['Hand (mute) 2', 106], + ['Hand (slap) 2', 107], + ['Conga low (slap)', 108], + ['Conga low (mute)', 109], + ['Conga high (slap)', 110], + ['Tambourine (return)', 111], + ['Tambourine (roll)', 112], + ['Tambourine (hand)', 113], + ['Grancassa (hit)', 114], + ['Piatti (hat)', 115], + ['Piatti (hand)', 116], + ['Cabasa (return)', 117], + ['Left Maraca (return)', 118], + ['Right Maraca (hit)', 119], + ['Right Maraca (return)', 120], + ['Shaker (return)', 122], + ['Bell Tee (return)', 123], + ['Golpe (thumb)', 124], + ['Golpe (finger)', 125], + ['Ride (middle) 2', 126], + ['Ride (bell) 2', 127] +]; + +export function ArticulationTable({list}) { + return ( + + + + + + + + + + {list.map(i => ( + + + + + + ))} + +
NumberName LongName Short
{i[1]}{i[0]}{i[0].replace(/[^a-zA-Z0-9]/g, '')}
+ ) +} + +
+ +
+ +**Example:** + +{` +\\track "Drums" +\\instrument percussion +\\tempo 120 +\\clef neutral +\\articulation defaults +(KickHit RideBell).16 r KickHit KickHit (KickHit RideBell).16 r KickHit KickHit (KickHit RideBell).16 r KickHit KickHit (KickHit RideBell).16 r KickHit KickHit | +(KickHit HiHatOpen) KickHit KickHit KickHit (KickHit HiHatOpen) KickHit KickHit KickHit (KickHit SnareHit HiHatOpen) KickHit KickHit.32 KickHit KickHit.16 (KickHit HiHatOpen) KickHit KickHit KickHit | +(KickHit HiHatOpen).8{tu 3} KickHit{tu 3} KickHit{tu 3} (KickHit SnareHit HiHatOpen){tu 3} KickHit.16{tu 3} KickHit{tu 3} KickHit.8{tu 3} (KickHit HiHatOpen).8{tu 3} KickHit{tu 3} KickHit{tu 3} (KickHit SnareHit HiHatOpen).8{tu 3} KickHit{tu 3} KickHit{tu 3} +`} + + +export function articulationsToAlphaTex(){ + const lines = [ + '\\track "Drums"', + '\\instrument percussion', + '\\tempo 120', + '\\clef neutral', + '\\ts 2 4']; + + let line = ''; + for(let i = 0; i < list.length; i++) { + if( (i % 4) === 3) { + line += '|'; + lines.push(line); + line = ''; + } + + line += list[i][1] + ' '; + } + + line += '|'; + lines.push(line); + + return lines.filter(l => l !== '|').join('\n'); +} + +{articulationsToAlphaTex()} + +There are no properties on this metadata. + +## `\displayTranspose` + +```plain title="Syntax" +\displayTranspose semitones +``` + +**Description:** Defines the number of semitones by which the standard notation should be transposed. + +This only affects the display of the notes, not their audio. + +It is typically used in situations like for guitars where the standard notation is displayed 1 octave lower to fit better into the standard staff. + +It is a common practice to show a standard clef on guitar notes even though they are transposed by 1 octave to better fit into the +standard staff lines. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| semitones | The number of semitones by which the notes should be transposed | `number` | yes | + +**Example:** + +{` +\\track \\staff \\instrument piano + \\displayTranspose -12 + C4.4 D4 E4 F4 | r.1 +`} + +There are no properties on this metadata. + +## `\transpose` + +```plain title="Syntax" +\transpose semitones +``` + +**Description:** Defines the number of semitones by which the standard notation should be transposed. + +This affects the display and audio. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| semitones | The number of semitones by which the notes should be transposed | `number` | yes | + +**Example:** + +{` +\\track \\staff \\instrument piano + \\transpose -12 + C4.4 D4 E4 F4 | r.1 +`} + +There are no properties on this metadata. diff --git a/docs/alphatex/structural-metadata.mdx b/docs/alphatex/structural-metadata.mdx new file mode 100644 index 0000000..bcb5480 --- /dev/null +++ b/docs/alphatex/structural-metadata.mdx @@ -0,0 +1,587 @@ +--- +title: Structural Metadata +--- + +import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; + +For some songs you might want to define that the song has multiple tracks, staves or voices. + +* Multiple tracks are used when multiple instruments are playing together in one song. +* Multiple staves are typically used to write grand staff piano notation (left hand/right hand) or + splitup voices for readability. +* Multiple voices are typically used to write notation where multiple independent timings and pitches are played. + This can be if multiple vocals are singing together (hence the name voices), or special playing techniques (playing a base rhythm and melody on the same instrument). + +In alphaTex new tracks, staves and voices are started with their respective metadata tags specified at the start of a bar: + +* `\track` +* `\staff` +* `\voice` + +alphaTab refers to these kind of metadata tags as "structural" tags as they define the general structure of the song. + +The initial track, staff or voice is implicitly started. Only on the "second" item you need to specify the tags. For clarity +it is encouraged to also specify the initial item if there are multiple tracks, staves or voices. + +## `\track` + +```plain title="Tag Syntax" +\track +\track longName +\track (shortName longName) +``` +**Description:** Marks the start of a new track + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| longName | The long name of the track | `string` | no | +| shortName | The short name of the track | `string` | no | + +The displayed name depends on the configured [`Track Name Policy`](./score-metadata.mdx#singletracktracknamepolicy-and-multitracktracknamepolicy). +If the short name is not specified, the first 10 characters of the long name are used as short name. + +**Example** + +{` +\\track "First Track" "frst" + C4 D4 E4 F4 +\\track + C5 D5 E5 F5 +`} + +Following properties are available. + +### `color` + +```plain title="Syntax" +color colorCode +``` + +**Description:** + +The data model holds information about the color of the track which might be used by user interfaces to visually differenciate them. +This data mainly originates from the Guitar Pro file format where colors are used to differenciate the tracks in the track picker and +some other visualizations. It does not have an impact on the color of the music notation but can be used in a custom UI. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| colorCode | The `colorCode` in [any supported color format](/docs/reference/settings/display/resources#colors) | `string` | yes | + +**Example:** + +{` +\\track { color "#FF0000" } +1.1 2.1 3.1 4.1 +`} + +### `systemsLayout` + +```plain title="Syntax" +systemsLayout (numberOfBars numberOfBars...) +``` + +**Description:** Defines the number of bars to display per system. + +The `systemsLayout` and `defaultSystemsLayout` allow configuring the system layout. +The system layout, defines how many bars should be displayed per system (line) if enabled via [`systemsLayoutMode`](/docs/reference/settings/display/systemslayoutmode). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| numberOfBars | Defines for every system (line) the number of bars it should contain | `number` (repeated) | yes | + +**Example:** + +{` +\\title "Single Track" +\\track { systemsLayout (2 3 2) } + :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 +`} + +### `defaultSystemsLayout` + +```plain title="Syntax" +defaultSystemsLayout numberOfBars` +``` + +**Description:** Defines the default number of bars to display per system. + +The `systemsLayout` and `defaultSystemsLayout` allow configuring the system layout. +The system layout, defines how many bars should be displayed per system (line) if enabled via [`systemsLayoutMode`](/docs/reference/settings/display/systemslayoutmode). + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| numberOfBars | Defines for every system (line) the number of bars it should contain | `number` | yes | + +**Example:** + +{` +\\title "Single Track" +. +\\track { defaultSystemsLayout 2 } + :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 +`} + +### `solo` + +```plain title="Syntax" +solo +``` + +**Description:** Set the track to be played alone in the data model. + +**Values:** None + +**Example:** + +{` +\\track { solo } +1.1 2.1 3.1 4.1 +\\track +10.1 11.1 12.1 13.1 +`} + +#### `mute` + +```plain title="Syntax" +mute +``` + +**Description:** Set the track to be muted (not played) in the data model. + +**Values:** None + +**Example:** + +{` +\\track +1.1 2.1 3.1 4.1 +\\track { mute } +10.1 11.1 12.1 13.1 +`} + +### `volume` + +```plain title="Syntax" +volume value +``` + +**Description:** Set the track volume in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The volume to set| `number` (0-16) | yes | + +**Example:** + +{` +\\track { volume 0 } +1.1 2.1 3.1 4.1 +\\track { volume 16 } +10.1 11.1 12.1 13.1 +`} + +### `balance` + +```plain title="Syntax" +balance value +``` + +**Description:** Set the track balance in the data model. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The balance to set| `number` (0-16; 8 is centered) | yes | + +**Example:** + +{` +\\track { volume 0 } +1.1 2.1 3.1 4.1 +\\track { volume 16 } +10.1 11.1 12.1 13.1 +`} + +### `instrument` + +```plain title="Syntax" +instrument value +``` + +**Description:** Set the midi instrument for this track. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The MIDI instrument to set | `number` (MIDI program number 0-127) or `string` (midi instrument name) | yes | + + +export function GeneralMidiList() { + const items = [ + 'Acoustic Grand Piano', + 'Bright Grand Piano', + 'Electric Grand Piano', + 'Honky tonk Piano', + 'Electric Piano 1', + 'Electric Piano 2', + 'Harpsichord', + 'Clavinet', + 'Celesta', + 'Glockenspiel', + 'Musicbox', + 'Vibraphone', + 'Marimba', + 'Xylophone', + 'Tubularbells', + 'Dulcimer', + 'Drawbar Organ', + 'Percussive Organ', + 'Rock Organ', + 'Church Organ', + 'Reed Organ', + 'Accordion', + 'Harmonica', + 'Tango Accordion', + 'Acoustic Guitar Nylon', + 'Acoustic Guitar Steel', + 'Electric Guitar Jazz', + 'Electric Guitar Clean', + 'Electric Guitar Muted', + 'Overdriven Guitar', + 'Distortion Guitar', + 'Guitar Harmonics', + 'Acoustic Bass', + 'Electric Bass Finger', + 'Electric Bass Pick', + 'Fretless Bass', + 'Slap Bass 1', + 'Slap Bass 2', + 'Synth Bass 1', + 'Synth Bass 2', + 'Violin', + 'Viola', + 'Cello', + 'Contrabass', + 'Tremolo Strings', + 'Pizzicato Strings', + 'Orchestral Harp', + 'Timpani', + 'String Ensemble 1', + 'String Ensemble 2', + 'Synth Strings 1', + 'Synth Strings 2', + 'Choir Aahs', + 'Voice Oohs', + 'Synth Voice', + 'Orchestra Hit', + 'Trumpet', + 'Trombone', + 'Tuba', + 'Muted Trumpet', + 'French Horn', + 'Brass Section', + 'Synth Brass 1', + 'Synth Brass 2', + 'Soprano Sax', + 'Alto Sax', + 'Tenor Sax', + 'Baritone Sax', + 'Oboe', + 'English Horn', + 'Bassoon', + 'Clarinet', + 'Piccolo', + 'Flute', + 'Recorder', + 'Pan Flute', + 'Blown bottle', + 'Shakuhachi', + 'Whistle', + 'Ocarina', + 'Lead 1 Square', + 'Lead 2 Sawtooth', + 'Lead 3 Calliope', + 'Lead 4 Chiff', + 'Lead 5 Charang', + 'Lead 6 Voice', + 'Lead 7 Fifths', + 'Lead 8 Bass and Lead', + 'Pad 1 newage', + 'Pad 2 warm', + 'Pad 3 polysynth', + 'Pad 4 choir', + 'Pad 5 bowed', + 'Pad 6 metallic', + 'Pad 7 halo', + 'Pad 8 sweep', + 'Fx 1 rain', + 'Fx 2 soundtrack', + 'Fx 3 crystal', + 'Fx 4 atmosphere', + 'Fx 5 brightness', + 'Fx 6 goblins', + 'Fx 7 echoes', + 'Fx 8 scifi', + 'Sitar', + 'Banjo', + 'Shamisen', + 'Koto', + 'Kalimba', + 'Bag pipe', + 'Fiddle', + 'Shanai', + 'Tinkle Bell', + 'Agogo', + 'Steel Drums', + 'Woodblock', + 'Taiko Drum', + 'Melodic Tom', + 'Synth Drum', + 'Reverse Cymbal', + 'Guitar Fret Noise', + 'Breath Noise', + 'Seashore', + 'Bird Tweet', + 'Telephone Ring', + 'Helicopter', + 'Applause', + 'Gunshot' + ]; + return ( + + {items.map((x, i) => { + return ( + {i} + {x} + ); + })} + + ) +} + +Refer to the following list of names you can use. + +
+ + + + + + + + +
NumberName
+
+ +**Example:** + +{` +\\track { instrument 0 } +C4 C5 r r +\\track { instrument "Acoustic Steel Guitar" } +\\tuning (E4 B3 G3 D3 A2 E2) +r r 12.1 13.1 +`} + +### `bank` + +```plain title="Syntax" +bank value +``` + +**Description:** Set the MIDI bank to select when playing this track. + +The loaded soundfont needs to have this bank defined, otherwise there might be no audio. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| value | The midi bank to set| `number`| yes | + +**Example:** + +{` +\\track { instrument 25 bank 2 } +`} + +### `multiBarRest` + +```plain title="Syntax" +multiBarRest +``` + +**Description:** Enables the display of multibar rests if this track is shown as standalone. + +**Values:** None + +**Example:** + +{` +\\track { multiBarRest } +C4*4 | r.1 | r.1 | r.1 | C4 * 4 +`} + +{` +\\track +C4*4 | r.1 | r.1 | r.1 | C4 * 4 +`} + +## `\staff` + +```plain title="Tag Syntax" +\staff +``` +**Description:** Marks the start of a new staff. + +The staff with the largest number of bars defines how long the overall song is. +There is no need to manually ensure that all staves have the correct number of bars. +AlphaTab will create missing empty bars automatically. + +**Values:** None + +**Example** + +{` +\\track "Piano with Grand Staff" "pno." + \\staff{score} \\tuning piano \\instrument acousticgrandpiano + c4 d4 e4 f4 | + \\staff{score} \\tuning piano \\clef F4 + c2 c2 c2 c2 | +\\track "Guitar" + \\staff{tabs slash} \\capo 5 + 1.2 3.2 0.1 1.1 +`} + +Following properties are available. + +If no properties describing the visible notation are provided, the default is `score tabs`. + +### `score` + +```plain title="Syntax" +score lineCount +``` + +**Description:** Enable the display of standard notation. + +**Values:** + +| Name | Description | Type | Required | +|------|-------------|------|----------| +| lineCount | The number of staff lines | `number` | no (default: 5) | + +**Example:** + +{` +\\track + \\staff {score 3} + D4 D4 D4 D4 + \\staff {score} + C4 C4 C4 C4 +`} + +### `tabs` + +```plain title="Syntax" +tabs +``` + +**Description:** Enable the display of guitar tablature. + +Guitar tabs are only shown if the contained notes are stringed/fretted notes. + +**Values:** None + +**Example:** + +{` +\\track + \\staff {tabs} + 3.3 4.3 5.3 5.5 +`} + +### `slash` + +```plain title="Syntax" +slash +``` + +**Description:** + +Enable the display of slash notation. + +**Values:** None + +**Example:** + +{` +\\track + \\staff {tabs slash} + 3.3 4.3 5.3 5.5 +`} + +### `numbered` + +```plain title="Syntax" +numbered +``` + +**Description:** Enable the display of numbered notation (Jianpu). + +**Values:** None + +**Example:** + +{` +\\track + \\staff {score numbered} + C4 D4 E4 F4 +`} + +## `\voice` + +```plain title="Tag Syntax" +\voice +``` +**Description:** Marks the start of a new voice. + +Unlike the structure in the data model, alphaTex expects you to define all bars of a voice, then all the bars of the next voice. + +It structure is: `\voice /* Voice 1 Bar 1*/ | /* Voice 1 Bar 2*/ \voice /* Voice 2 Bar 1*/ | /* Voice21 Bar 2*/` +Once a new voice starts, you again can define the notes starting from the first bar. alphaTab will try to consolidate inconsistencies in the number of bars across voices. + +**Values:** None + +**Example** + +{` +\\track "Piano" + \\staff{score} \\tuning piano \\instrument acousticgrandpiano + \\voice + c4 d4 e4 f4 | c4 d4 e4 f4 + \\voice + c3 d3 e3 f3 | c3 d3 e3 f3 + +\\track "Piano2" + \\staff{score} \\tuning piano \\instrument acousticgrandpiano + \\voice + c4 d4 e4 f4 | c4 d4 e4 f4 + \\voice + c3 d3 e3 f3 + +`} + +There are no properties on this metadata. \ No newline at end of file diff --git a/docs/alphatex/stylesheet.mdx b/docs/alphatex/stylesheet.mdx deleted file mode 100644 index ed38a3d..0000000 --- a/docs/alphatex/stylesheet.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Stylesheet ---- - -import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; - -There are various [stylesheet](/docs/reference/score) related options which can be specified in alphaTex. - -## Show/Hide Dynamics - -To configure on the stylesheet whether dynamics are shown use: `\showDynamics` and `\hideDynamics` - -{` -\\showDynamics -. -C4 D4 E4 F4 -`} - - -{` -\\hideDynamics -. -C4 D4 E4 F4 -`} - - -## Brackets and Braces - -To configure the mode how to show [brackets and braces](/docs/showcase/general.mdx#brackets-and-braces) use - -* `\bracketExtendMode NoBrackets` -* `\bracketExtendMode GroupStaves` -* `\bracketExtendMode GroupSimilarInstruments` - -The `\useSystemSignSeparator` option configures whether a system sign separator should be added - -{` -\\bracketextendmode GroupSimilarInstruments -\\useSystemSignSeparator -. -\\track "Piano1" - \\staff {score} - \\instrument piano - C4 D4 E4 F4 - \\staff {score} - \\clef f4 C3 D3 E3 F3 -\\track "Piano2" - \\staff {score} - \\instrument piano - C4 D4 E4 F4 -\\track "Flute 1" - \\staff { score } - \\instrument flute - C4 D4 E4 F4 -\\track "Flute 2" - \\staff { score } - \\instrument flute - \\clef f4 C3 D3 E3 F3 -\\track "Guitar 1" - \\staff { score tabs } - 0.3.4 2.3.4 5.3.4 7.3.4 -`} - -## System Sign Separator - -The `\useSystemSignSeparator` option configures whether a system sign separator should be added (in case multiple tracks are shown). - -{` -\\useSystemSignSeparator -\\defaultSystemsLayout 2 -. -\\track "T1" -:1 C4 | C4 | C4 -\\track "T2" -:1 C4 | C4 | C4 -`} - -## Show Tuning (per track) - -For every track it can be configured whether the tuning should be shown via the `hide` option on the tuning. - -{` -\\track \\staff \\tuning E4 B3 G3 D3 A2 E2 - 3.3.1 -\\track \\staff \\tuning D4 A3 F3 C3 G2 D2 - 3.3.1 -`} - -{` -\\track \\staff \\tuning E4 B3 G3 D3 A2 E2 hide - 3.3.1 -\\track \\staff \\tuning D4 A3 F3 C3 G2 D2 - 3.3.1 -`} - -## Track Names - -To configure the mode how to show [track names](/docs/showcase/general.mdx#track-names) use: - -* `\singleTrackTrackNamePolicy hidden`, `\singleTrackTrackNamePolicy firstSystem`, `singleTrackTrackNamePolicy allSystems` -* `\multiTrackTrackNamePolicy hidden`, `\multiTrackTrackNamePolicy firstSystem`, `multiTrackTrackNamePolicy allSystems` -* `\firstSystemTrackNameMode shortName`, `\firstSystemTrackNameMode fullName` -* `\otherSystemsTrackNameMode shortName`, `\otherSystemsTrackNameMode fullName` -* `\firstSystemTrackNameOrientation horizontal`, `\firstSystemTrackNameOrientation vertical` -* `\otherSystemsTrackNameOrientation horizontal`, `\otherSystemsTrackNameOrientation vertical` - -{` -\\singletracktracknamepolicy AllSystems -\\firstsystemtracknamemode fullname -\\othersystemstracknamemode shortname -\\firstsystemtracknameorientation horizontal -\\othersystemstracknameorientation vertical -. -\\track "Piano 1" "pno1" { defaultsystemslayout 3 } - \\staff {score} - C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | C4 D4 E4 F4 | -`} - -## Multi-Bar Rests - -To configure whether [multibar rests](/docs/showcase/layouts.mdx#multi-bar-rests) should be enabled use: - -* `\multiBarRest` - On top level for configuring the use on multi-track renderings -* `\track { multiBarRest }` - On track level for single track renderings - -{` -\\title "Multi Track" -\\multiBarRest -. -\\track "Piano 1" "pno1" - \\staff {score} - C4 D4 E4 F4 | r | r | C4 D4 E4 F4 | r | r | r | C4 - -\\track "Piano 2" "pno1" - \\staff {score} - C4 D4 E4 F4 | r | r | C4 D4 E4 F4 | r | r | r | r | -`} - -{` -\\title "Single Track" -. -\\track "Piano 1" "pno1" { multiBarRest } - \\staff {score} - C4 D4 E4 F4 | r | r | C4 D4 E4 F4 | r | r | r | C4 -`} - diff --git a/docs/alphatex/sync-points.mdx b/docs/alphatex/sync-points.mdx deleted file mode 100644 index 97a5bfe..0000000 --- a/docs/alphatex/sync-points.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Sync Points ---- - - -alphaTex support specifying sync points for the [synchronization with external media](/docs/guides/audio-video-sync). - -The related sync points are specified as flat list at the end of the song contents separated by a dot `.`. -As we consider it unlikely that authors write this information manually, we separated the sync points from the other song. -This way tools like our [Media Sync Editor](/docs/playground/) on the Playground can be used to synchronize songs and -the sync info can be copy-pasted after the main song. - -The supported formats of sync points are: - -* `\sync BarIndex Occurence MillisecondOffset` -* `\sync BarIndex Occurence MillisecondOffset RatioPosition` - -Where: - -* `BarIndex` is the numeric (0-based) index of the bar for which the sync point applies. -* `Occurence` is the numeric (0-based) index of bar repetitions. e.g. on Repeats or Jumps bars might be played multiple times. This value allows specifying points on subsequent plays of a bar. -* `MillisecondOffset` is the numeric timestamp in milliseconds in the external audio. -* `RatioPosition` is the relative offset within the bar at which the sync point is placed (0 if not provided). - -The `BarIndex`, `Occurence`, `RatioPosition` values define the absolute position within the music sheet. -The `MillisecondOffset` defines the absolute position within the external media. - -With this information known, alphaTab can synchronize the external media with the music sheet. - -The sample below uses an audio backing track with inconsistent tempos. The sync points correct the tempo differences and the cursor is placed correctly. - -import { AlphaTexSyncPointSample } from '@site/src/components/AlphaTexSyncPointSample'; - - \ No newline at end of file diff --git a/docs/alphatex/syntax.mdx b/docs/alphatex/syntax.mdx new file mode 100644 index 0000000..b785215 --- /dev/null +++ b/docs/alphatex/syntax.mdx @@ -0,0 +1,104 @@ +--- +title: Language Syntax +--- + +If you compare alphaTex to programming or scripting languages, you will find similar constructs in this language. alphaTex (as the name implies) has borrowed +some aspects from LaTeX, a well known language for writing documents. As alphaTex evolved it came up with various own syntax constructs described here. + +When storing alphaTex to files, we recommend using the file extension `.atex`. + +## Comments + +Comments are supported in C-style comments via `// Single Line` and `/* Multi Line */`. You can use them anywhere within an alphaTex file +to further annotate your written document for structural or organizational purposes. + +## Strings + +Textual values are expressed as quoted strings similar to most programming languages. Both single and double quotes are supported. + +* `"Double Quoted String"` +* `'Single Quoted String'` + +Additionally following escape sequences are supported: + +* `\n` Newline +* `\r` Carriage Return +* `\t` Tab +* `\uXXXX` Unicode Character where XXXX is a 4 hex-digit number. +* `\\` A backslash +* `\'` or `\"` a quote character + +## Numbers + +alphaTex supports integer and decimal numbers. Decimal numbers are only allowed in some dedicated places to avoid overlaps with some other syntax constructs. + +Examples: + +* `10` +* `-10` +* `0.5` +* `-4.5` + +## Value Lists + +At various places value lists are used to describe items like time signatures or bend points. +Value lists should be wrapped with parenthesis `(values)` if there are multiple values. If there is only a single value, the parenthesis can be omitted. + +The individual values can be: + +* Integer numbers: `3`, `-10` +* Decimal Numbers: `3.3`, `-10.5` +* Strings: `"Hello"`, `'Hello'` +* Special identifiers: `true`, `hide`, `x` + + +Basic Examples + +* `( 1 2 3 )` A list of numbers +* `("Test" 3 hide)` A list of mixed type values + +Real examples + +* `\ts (3 4)` A 3/4 time signature (specified on bar level) +* `12.2 { b (0 4 0) }` A note bend describing a full note bend and release +* `\title ("Song Title" "Title: %TITLE%" left)` A song title shown as `Title: Song Title` left aligned. + +## Properties + +Properties are a list of key-valuelist pairs describing additional optional aspects of elements. +They are used to add effects to notes and beats, what notations should be visible in a staff and more. + +Properties are always wrapped into curly braces. A property starts with an identifier describing the property, optionally followed by its values as value list. + +Examples: +* `\track "Track Name" { color "#FF0000"}` +* `\staff {score}` +* `C4 {b (0 4) v txt "Bend with Vibrato"}` + +Property identifiers are case-insensitive. + +## Metadata Tags + +Metadata tags are the most similar construct to LaTeX. Metadata are used to describe various elements within the data model. + +The main syntax of metadata tags is: `\tag values {properties}`. +Both the `values` and `{properties}` are optional from a syntax perspective. Depending on the `tag` values might be expected to be specified. + +Examples: + +* `\title "Song Title"` +* `\track "Track Name" {color '#FF0000'}` +* `\ts (3 4)` + +Metadata tags identifiers are case-insensitive. + +### Metadata tag values + +Metadata tags might have one or multiple values. The exact values supported (required or optional) depend on the tag. +See [Value Lists](#value-lists) above for more details. + +### Metadata tag properties + +Metadata tags might have one or multiple properties. The exact values supported depend on the tag. +See [Properties](#properties) above for more details. + diff --git a/docs/alphatex/tracks-staves.mdx b/docs/alphatex/tracks-staves.mdx deleted file mode 100644 index 96e2c88..0000000 --- a/docs/alphatex/tracks-staves.mdx +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Tracks and Staves ---- - -import { AlphaTexSample } from '@site/src/components/AlphaTexSample'; - -For some songs you might want to define that the song has multiple tracks or staves. -Depending on your UI the user might then select which track to display and switch between them. -Staves configurations are useful to adjust the display of the individual tracks. -You can enable/disable certain notation to be shown and also add multiple staffs to a single track (e.g. for piano grand staff). - -## Tracks - -A new track can be started with the `\track "Track Long Name" "Track Short Name"` metadata. -Both names are optional and the short name is the one displayed before the track starts. -The long name can be used e.g. in your custom UI. -If the short name is not specified, the first 10 characters of the long name are used as short name.
-Be sure to finish the previous beat with a vertical bar `|` to start a new bar of a new track. - -{` -\\track "First Track" "frst" -1.1 2.1 3.1 4.1 | -\\track // new track -\\tuning A1 D2 A2 D3 G3 B3 E4 // tuning of new track (with 7 strings) -4.1 3.1 2.1 1.1 | -`} - -Additional track metadata can be specified in braces after the track information. - -### Track Color - -The data model holds information about the color of the track which might be used by user interfaces to visually differenciate them. - -The `color colorCode` can be used to define the color. Where colorCode can be [any supported color format](/docs/reference/settings/display/resources#colors) - -{` -\\track { color "#FF0000" } -1.1 2.1 3.1 4.1 -`} - -### System Layout - -The `systemsLayout` and `defaultSystemsLayout` allow configuring the system layout. See down below for details. - -### Playback Information - -* `solo` set the track to be played alone in the data model. -* `mute` set the track to be muted (not played) in the data model. -* `volume value` set the track volume, value can be 0-16 -* `balance value` set the track balance/pan, value can be 0-16 - -## Staves - -A new staff can be started with the `\staff` metadata. -In braces you can optionally define via the options `score` (for standard notation), `tab` (for guitar tablature), `slash` (for slash notation), `numbered` (for Jianpu / numbered notation) -whether the corresponding notation should be shown. -By default both notation systems are shown. - -{` -\\track "Piano with Grand Staff" "pno." - \\staff{score} \\tuning piano \\instrument acousticgrandpiano - c4 d4 e4 f4 | - \\staff{score} \\tuning piano \\clef F4 - c2 c2 c2 c2 | -\\track "Guitar" - \\staff{tabs} \\capo 5 - 1.2 3.2 0.1 1.1 -`} - -### Standard notation line count - -For the standard notation staff you can configure the number of lines shown by specifying the number after the keyword: - -{` -\\track - \\staff{score 3} - c4 d4 e4 f4 -`} - -## Hide Tuning - -To hide the tuning for a track add the `hide` keyword after the tuning. As of now tuning visibility is per-track not per-staff despite the tuning being on staff level. -It should be rather uncommon to have multiple different staves with different string tunings. - -{` -\\track "Track 1" - \\staff {tabs} - \\tuning A1 D2 A2 D3 G3 B3 E4 hide - 4.1 3.1 2.1 1.1 -`} - -## Automatic Bars - -The staff with the largest number of bars defines how long the overall song is. -There is no need to manually ensure that all staves have the correct number of bars. -AlphaTab will create missing empty bars automatically. - -{` -\\track "Piano with Grand Staff" "pno." - \\staff{score} \\tuning piano \\instrument acousticgrandpiano - c4 d4 e4 f4 | - \\staff{score} \\tuning piano \\clef F4 - c2 c2 c2 c2 | c2 c2 c2 c2 | c2 c2 c2 c2 | -\\track "Guitar" - \\staff{tabs} \\capo 5 - 1.2 3.2 0.1 1.1 | 1.2 3.2 0.1 1.1 -`} - -## System Layout - -The system layout, defines how many bars should be displayed per system (line). -The use of the system layout has to be enabled via [`systemsLayoutMode`](/docs/reference/settings/display/systemslayoutmode). - -The system layout can be configured either on score or on track level via these two options. - -* `defaultSystemsLayout` - defines the number of bars to display unless specified differently. (default: 3) -* `systemsLayout` - defines the number of bars to display per system. (default: empty) - -The `score` level options are used in case multiple tracks are displayed, otherwise the `track` level information is used. - -{` -\\title "Single Track" -. -\\track { defaultSystemsLayout 3 systemsLayout 2 2 } - :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 | c4 -`} - -{` -\\title "Multi Track" -\\defaultSystemsLayout 2 -\\systemsLayout 1 1 -. -\\track { defaultSystemsLayout 1 systemsLayout 2 2 } - :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 | c4 -\\track { defaultSystemsLayout 4 systemsLayout 3 3 } - :1 c4 | c4 | c4 | c4 | c4 | c4 | c4 | c4 -`} - -### Bar Scale - -When using `systemsLayoutMode: 'UseModelLayout'` with page view layout the individual bars can be scaled relatively. this scale can be specified with `\scale Value` - -{` -\\track { defaultSystemsLayout 3 } - \\scale 0.25 :1 c4 | \\scale 0.5 c4 | \\scale 0.25 c4 | - \\scale 0.5 c4 | \\scale 2 c4 | \\scale 0.5 c4 | - c4 | c4 -`} - - -### Bar Width - -When using `systemsLayoutMode: 'UseModelLayout'` with the horizontal layout the individual bars can be scaled absolutely. this scale can be specified with `\width Value` - -{` -\\track - \\width 100 :1 c4 | \\width 300 c4 | \\width 350 c4 -`} \ No newline at end of file diff --git a/docs/guides/formatting-templates.mdx b/docs/guides/formatting-templates.mdx index b2731a2..b1f3849 100644 --- a/docs/guides/formatting-templates.mdx +++ b/docs/guides/formatting-templates.mdx @@ -36,3 +36,14 @@ The most important parts to know: * The [`colors`](/docs/reference/types/model/elementstyle/colors) on `alphaTab.model.ScoreStyle` is used to adjust the color of the header and footer elements (and others). * The [`alphaTab.model.ScoreSubElement`](/docs/reference/types/model/scoresubelement) defines the possible list of elements to be styled (not all are song info related) +The `template` is a string which can have following placeholders which are then replaced with the respective info of the song: + +* `%TITLE%` +* `%SUBTITLE%` +* `%ARTIST%` +* `%ALBUM%` +* `%WORDS%` +* `%WORDSMUSIC%` +* `%MUSIC%` +* `%TABBER%` +* `%COPYRIGHT%` diff --git a/docs/releases/release1_4.mdx b/docs/releases/release1_4.mdx index 845d083..933905c 100644 --- a/docs/releases/release1_4.mdx +++ b/docs/releases/release1_4.mdx @@ -288,7 +288,7 @@ while the song is being played. #### alphaTex: Support for Percussion Tabs https://github.com/CoderLine/alphaTab/pull/1493 -With alphaTab 1.4.0 you can finally also express percussion tabs. [Learn more here](/docs/alphatex/percussion) +With alphaTab 1.4.0 you can finally also express percussion tabs. [Learn more here](/docs/alphatex/staff-metadata.mdx#articulation) {` \\track "Drums" diff --git a/docs/releases/release1_5.mdx b/docs/releases/release1_5.mdx index 1b64b35..17178b6 100644 --- a/docs/releases/release1_5.mdx +++ b/docs/releases/release1_5.mdx @@ -168,21 +168,21 @@ https://github.com/CoderLine/alphaTab/pull/2002 Text templates and alignments for song info can be specified via alphaTex. -See [AlphaTex Metadata](/docs/alphatex/metadata). +See [AlphaTex Score Metadata](/docs/alphatex/score-metadata.mdx). ### alphatex: Bar Line customizations https://github.com/CoderLine/alphaTab/pull/2031 The new barlines styles can also be activated via alphaTex. -See [AlphaTex Bar Metadata](/docs/alphatex/bar-metadata#bar-lines). +See [AlphaTex Bar Metadata](/docs/alphatex/bar-metadata.mdx#barlineleft-and-barlineright). ### alphatex: More Dynamic Values https://github.com/CoderLine/alphaTab/pull/2030 The list of possible dynamic values (as defined by MusicXML) can also be specified in alphaTex. -See [AlphaTex Beat Effects](/docs/alphatex/beat-effects#dynamics). +See [AlphaTex Beat Effects](/docs/alphatex/beat-properties.mdx#dy). ### alphatex: Different key signatures across staves https://github.com/CoderLine/alphaTab/pull/2034 diff --git a/docs/showcase/general.mdx b/docs/showcase/general.mdx index ca2ce91..871f80a 100644 --- a/docs/showcase/general.mdx +++ b/docs/showcase/general.mdx @@ -45,7 +45,7 @@ alphaTab renders brackets and braces across staves which belong together. alphaT * Group Staves - The staves of the same track will be grouped together. If there are multiple "standard notation" staves a brace will be drawn, otherwise a bracket. * Group Same Instruments - Multiple tracks of the same instrument will be grouped together. No grouping happens if the staves of an instrument require a brace. -The mode is loaded from Guitar Pro files, can be [configured via alphaTex](/docs/alphatex/stylesheet.mdx#brackets-and-braces) or configured via `score.stylesheet.bracketExtendMode` on the data model. +The mode is loaded from Guitar Pro files, can be [configured via alphaTex](/docs/alphatex/score-metadata.mdx#bracketextendmode) or configured via `score.stylesheet.bracketExtendMode` on the data model. {` \\bracketextendmode GroupSimilarInstruments diff --git a/docusaurus.config.ts b/docusaurus.config.ts index ffbff68..628190e 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -86,11 +86,10 @@ const config: Config = { tagline: "Build modern music notation apps for web, desktop and mobile", url: "https://alphatab.net", baseUrl: "/", - onBrokenLinks: "throw", - onBrokenMarkdownLinks: "warn", favicon: "img/favicon.ico", organizationName: "CoderLine", projectName: "alphaTab", + onBrokenLinks: "throw", customFields: { isPreRelease: isPreRelease, alphaTabVersion: alphaTabVersion, @@ -99,6 +98,9 @@ const config: Config = { markdown: { mermaid: true, + hooks: { + onBrokenMarkdownLinks: "warn", + } }, themes: ["@docusaurus/theme-mermaid"], @@ -292,7 +294,7 @@ const config: Config = { additionalLanguages: ["csharp", "diff", "kotlin", "groovy"], }, colorMode: { - disableSwitch: true, + defaultMode: 'light' }, } satisfies Preset.ThemeConfig, diff --git a/package-lock.json b/package-lock.json index 178a326..63a6181 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "0.0.0", "dependencies": { "@coderline/alphatab": "^1.7.0-alpha.1515", - "@docusaurus/core": "^3.7.0", - "@docusaurus/preset-classic": "^3.7.0", - "@docusaurus/theme-mermaid": "^3.7.0", + "@docusaurus/core": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", + "@docusaurus/theme-mermaid": "^3.9.2", "@fontsource/noto-sans": "^5.1.1", "@fontsource/noto-serif": "^5.1.1", "@fortawesome/free-brands-svg-icons": "^6.7.2", @@ -32,8 +32,8 @@ "webpack": "^5.98.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^3.7.0", - "@docusaurus/tsconfig": "^3.7.0", + "@docusaurus/module-type-aliases": "^3.9.2", + "@docusaurus/tsconfig": "^3.9.2", "@types/react": "^19.0.10", "babel-plugin-macros": "^3.1.0", "copy-webpack-plugin": "^12.0.2", @@ -49,134 +49,202 @@ "node": ">=18.0" } }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", - "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", + "node_modules/@ai-sdk/gateway": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.5.tgz", + "integrity": "sha512-5TTDSl0USWY6YGnb4QmJGplFZhk+p9OT7hZevAaER6OGiZ17LB1GypsGYDpNo/MiVMklk8kX4gk6p1/R/EiJ8Q==", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", - "@algolia/autocomplete-shared": "1.17.9" + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.15", + "@vercel/oidc": "3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" } }, - "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", - "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", + "node_modules/@ai-sdk/provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", + "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.15.tgz", + "integrity": "sha512-kOc6Pxb7CsRlNt+sLZKL7/VGQUd7ccl3/tIK+Bqf5/QhHR0Qm3qRBMz1IwU1RmjJEZA73x+KB5cUckbDl2WF7Q==", "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" + "@ai-sdk/provider": "2.0.0", + "@standard-schema/spec": "^1.0.0", + "eventsource-parser": "^3.0.6" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "search-insights": ">= 1 < 3" + "zod": "^3.25.76 || ^4.1.8" } }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", - "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", + "node_modules/@ai-sdk/react": { + "version": "2.0.86", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.86.tgz", + "integrity": "sha512-vqxbbMOKMpYFHZy0aYEO4jtDcKaFCHL/rEtTqAIDlH14GT0uusSjN99gkDHHG3EnbyJSQmk9gqtqbd1GDwlRRg==", "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" + "@ai-sdk/provider-utils": "3.0.15", + "ai": "5.0.86", + "swr": "^2.2.5", + "throttleit": "2.1.0" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.25.76 || ^4.1.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.8.0.tgz", + "integrity": "sha512-Hb4BkGNnvgCj3F9XzqjiFTpA5IGkjOXwGAOV13qtc27l2qNF8X9rzSp1H5hu8XewlC0DzYtQtZZIOYzRZDyuXg==", + "dependencies": { + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.2" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" } }, "node_modules/@algolia/autocomplete-shared": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", - "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.20.3.tgz", - "integrity": "sha512-wPOzHYSsW+H97JkBLmnlOdJSpbb9mIiuNPycUCV5DgzSkJFaI/OFxXfZXAh1gqxK+hf0miKue1C9bltjWljrNA==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.42.0.tgz", + "integrity": "sha512-JLyyG7bb7XOda+w/sp8ch7rEVy6LnWs3qtxr6VJJ2XIINqGsY6U+0L3aJ6QFliBRNUeEAr2QBDxSm8u9Sal5uA==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.20.3.tgz", - "integrity": "sha512-XE3iduH9lA7iTQacDGofBQyIyIgaX8qbTRRdj1bOCmfzc9b98CoiMwhNwdTifmmMewmN0EhVF3hP8KjKWwX7Yw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.42.0.tgz", + "integrity": "sha512-SkCrvtZpdSWjNq9NGu/TtOg4TbzRuUToXlQqV6lLePa2s/WQlEyFw7QYjrz4itprWG9ASuH+StDlq7n49F2sBA==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.3.tgz", - "integrity": "sha512-IYRd/A/R3BXeaQVT2805lZEdWo54v39Lqa7ABOxIYnUvX2vvOMW1AyzCuT0U7Q+uPdD4UW48zksUKRixShcWxA==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.42.0.tgz", + "integrity": "sha512-6iiFbm2tRn6B2OqFv9XDTcw5LdWPudiJWIbRk+fsTX+hkPrPm4e1/SbU+lEYBciPoaTShLkDbRge4UePEyCPMQ==", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.3.tgz", - "integrity": "sha512-QGc/bmDUBgzB71rDL6kihI2e1Mx6G6PxYO5Ks84iL3tDcIel1aFuxtRF14P8saGgdIe1B6I6QkpkeIddZ6vWQw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.42.0.tgz", + "integrity": "sha512-iEokmw2k6FBa8g/TT7ClyEriaP/FUEmz3iczRoCklEHWSgoABMkaeYrxRXrA2yx76AN+gyZoC8FX0iCJ55dsOg==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.20.3.tgz", - "integrity": "sha512-zuM31VNPDJ1LBIwKbYGz/7+CSm+M8EhlljDamTg8AnDilnCpKjBebWZR5Tftv/FdWSro4tnYGOIz1AURQgZ+tQ==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.42.0.tgz", + "integrity": "sha512-ivVniRqX2ARd+jGvRHTxpWeOtO9VT+rK+OmiuRgkSunoTyxk0vjeDO7QkU7+lzBOXiYgakNjkZrBtIpW9c+muw==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.3.tgz", - "integrity": "sha512-Nn872PuOI8qzi1bxMMhJ0t2AzVBqN01jbymBQOkypvZHrrjZPso3iTpuuLLo9gi3yc/08vaaWTAwJfPhxPwJUw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.42.0.tgz", + "integrity": "sha512-9+BIw6rerUfA+eLMIS2lF4mgoeBGTCIHiqb35PLn3699Rm3CaJXz03hChdwAWcA6SwGw0haYXYJa7LF0xI6EpA==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.3.tgz", - "integrity": "sha512-9+Fm1ahV8/2goSIPIqZnVitV5yHW5E5xTdKy33xnqGd45A9yVv5tTkudWzEXsbfBB47j9Xb3uYPZjAvV5RHbKA==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.42.0.tgz", + "integrity": "sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" @@ -188,92 +256,80 @@ "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" }, "node_modules/@algolia/ingestion": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.20.3.tgz", - "integrity": "sha512-5GHNTiZ3saLjTNyr6WkP5hzDg2eFFAYWomvPcm9eHWskjzXt8R0IOiW9kkTS6I6hXBwN5H9Zna5mZDSqqJdg+g==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.42.0.tgz", + "integrity": "sha512-MBkjRymf4BT6VOvMpJlg6kq8K+PkH9q+N+K4YMNdzTXlL40YwOa1wIWQ5LxP/Jhlz64kW5g9/oaMWY06Sy9dcw==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.20.3.tgz", - "integrity": "sha512-KUWQbTPoRjP37ivXSQ1+lWMfaifCCMzTnEcEnXwAmherS5Tp7us6BAqQDMGOD4E7xyaS2I8pto6WlOzxH+CxmA==", + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.42.0.tgz", + "integrity": "sha512-kmLs7YfjT4cpr4FnhhRmnoSX4psh9KYZ9NAiWt/YcUV33m0B/Os5L4QId30zVXkOqAPAEpV5VbDPWep+/aoJdQ==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.20.3.tgz", - "integrity": "sha512-oo/gG77xTTTclkrdFem0Kmx5+iSRFiwuRRdxZETDjwzCI7svutdbwBgV/Vy4D4QpYaX4nhY/P43k84uEowCE4Q==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.42.0.tgz", + "integrity": "sha512-U5yZ8+Jj+A4ZC0IMfElpPcddQ9NCoawD1dKyWmjHP49nzN2Z4284IFVMAJWR6fq/0ddGf4OMjjYO9cnF8L+5tw==", "dependencies": { - "@algolia/client-common": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "@algolia/client-common": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.3.tgz", - "integrity": "sha512-BkkW7otbiI/Er1AiEPZs1h7lxbtSO9p09jFhv3/iT8/0Yz0CY79VJ9iq+Wv1+dq/l0OxnMpBy8mozrieGA3mXQ==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.42.0.tgz", + "integrity": "sha512-EbuxgteaYBlKgc2Fs3JzoPIKAIaevAIwmv1F+fakaEXeibG4pkmVNsyTUjpOZIgJ1kXeqNvDrcjRb6g3vYBJ9A==", "dependencies": { - "@algolia/client-common": "5.20.3" + "@algolia/client-common": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.3.tgz", - "integrity": "sha512-eAVlXz7UNzTsA1EDr+p0nlIH7WFxo7k3NMxYe8p38DH8YVWLgm2MgOVFUMNg9HCi6ZNOi/A2w/id2ZZ4sKgUOw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.42.0.tgz", + "integrity": "sha512-4vnFvY5Q8QZL9eDNkywFLsk/eQCRBXCBpE8HWs8iUsFNHYoamiOxAeYMin0W/nszQj6abc+jNxMChHmejO+ftQ==", "dependencies": { - "@algolia/client-common": "5.20.3" + "@algolia/client-common": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.3.tgz", - "integrity": "sha512-FqR3pQPfHfQyX1wgcdK6iyqu86yP76MZd4Pzj1y/YLMj9rRmRCY0E0AffKr//nrOFEwv6uY8BQY4fd9/6b0ZCg==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.42.0.tgz", + "integrity": "sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w==", "dependencies": { - "@algolia/client-common": "5.20.3" + "@algolia/client-common": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@antfu/install-pkg": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", @@ -295,41 +351,41 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -353,14 +409,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", - "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", - "dependencies": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -368,23 +424,23 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -402,16 +458,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", - "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.26.9", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "engines": { @@ -430,12 +486,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.2.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -454,52 +510,60 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -509,32 +573,32 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -544,13 +608,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", - "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.26.5" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -560,73 +624,72 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", - "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", - "license": "MIT", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dependencies": { - "@babel/types": "^7.26.9" + "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -636,12 +699,12 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -651,11 +714,11 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -665,11 +728,11 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -679,13 +742,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -695,12 +758,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -732,11 +795,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -746,11 +809,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -760,11 +823,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -774,11 +837,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -803,11 +866,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -817,13 +880,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", - "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.26.8" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -833,13 +896,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -849,11 +912,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", - "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -863,11 +926,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -877,12 +940,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -892,12 +955,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -907,16 +970,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -926,12 +989,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -941,11 +1004,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -955,12 +1019,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -970,11 +1034,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -984,12 +1048,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -999,11 +1063,26 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1013,11 +1092,11 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", - "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1027,11 +1106,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1041,12 +1120,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", - "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1056,13 +1135,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1072,11 +1151,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1086,11 +1165,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1100,11 +1179,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1114,11 +1193,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1128,12 +1207,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1143,12 +1222,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", - "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dependencies": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1158,14 +1237,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1175,12 +1254,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1190,12 +1269,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1205,11 +1284,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1219,11 +1298,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.26.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", - "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1233,11 +1312,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1247,13 +1326,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1263,12 +1344,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1278,11 +1359,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1292,12 +1373,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1307,11 +1388,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1321,12 +1402,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1336,13 +1417,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1352,11 +1433,11 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1366,11 +1447,11 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz", - "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1380,11 +1461,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", - "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1394,15 +1475,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", - "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1412,11 +1493,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", - "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.25.9" + "@babel/plugin-transform-react-jsx": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1426,12 +1507,12 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", - "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1441,12 +1522,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1456,12 +1536,12 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1471,11 +1551,11 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1485,15 +1565,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.9.tgz", - "integrity": "sha512-Jf+8y9wXQbbxvVYTM8gO5oEF2POdNji0NMltEkG7FtmzD9PVz7/lxpqSdTvwsjTMU5HIHuDVNf2SOxLkWi+wPQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", + "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", "semver": "^6.3.1" }, "engines": { @@ -1512,11 +1592,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1526,12 +1606,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1541,11 +1621,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1555,11 +1635,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", - "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1569,11 +1649,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", - "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1583,15 +1663,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz", - "integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", + "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1601,11 +1681,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1615,12 +1695,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1630,12 +1710,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1645,12 +1725,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1660,78 +1740,79 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", - "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", - "dependencies": { - "@babel/compat-data": "^7.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", + "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", + "dependencies": { + "@babel/compat-data": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.26.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.26.8", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.5", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.4", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.28.5", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.4", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.4", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", "semver": "^6.3.1" }, "engines": { @@ -1741,18 +1822,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", - "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -1775,16 +1844,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", - "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-transform-react-display-name": "^7.25.9", - "@babel/plugin-transform-react-jsx": "^7.25.9", - "@babel/plugin-transform-react-jsx-development": "^7.25.9", - "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1794,15 +1863,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", - "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-typescript": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1824,56 +1893,53 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz", - "integrity": "sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==", - "license": "MIT", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", + "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", "dependencies": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" + "core-js-pure": "^3.43.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", - "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", - "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", - "license": "MIT", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1941,9 +2007,9 @@ } }, "node_modules/@csstools/cascade-layer-name-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.4.tgz", - "integrity": "sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", "funding": [ { "type": "github", @@ -1958,14 +2024,14 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", "funding": [ { "type": "github", @@ -1981,9 +2047,9 @@ } }, "node_modules/@csstools/css-calc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", - "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", "funding": [ { "type": "github", @@ -1998,14 +2064,14 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/css-color-parser": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", - "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "funding": [ { "type": "github", @@ -2017,21 +2083,21 @@ } ], "dependencies": { - "@csstools/color-helpers": "^5.0.2", - "@csstools/css-calc": "^2.1.2" + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "funding": [ { "type": "github", @@ -2046,13 +2112,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "funding": [ { "type": "github", @@ -2068,9 +2134,31 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", - "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", "funding": [ { "type": "github", @@ -2081,18 +2169,24 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, "engines": { "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-cascade-layers": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.1.tgz", - "integrity": "sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", "funding": [ { "type": "github", @@ -2148,9 +2242,37 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.8.tgz", - "integrity": "sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", "funding": [ { "type": "github", @@ -2162,10 +2284,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2176,9 +2298,37 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.8.tgz", - "integrity": "sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", "funding": [ { "type": "github", @@ -2190,10 +2340,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2204,9 +2354,36 @@ } }, "node_modules/@csstools/postcss-content-alt-text": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.4.tgz", - "integrity": "sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", "funding": [ { "type": "github", @@ -2218,9 +2395,10 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2231,9 +2409,9 @@ } }, "node_modules/@csstools/postcss-exponential-functions": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.7.tgz", - "integrity": "sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", "funding": [ { "type": "github", @@ -2245,9 +2423,9 @@ } ], "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -2282,9 +2460,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.8.tgz", - "integrity": "sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", "funding": [ { "type": "github", @@ -2296,9 +2474,9 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -2308,9 +2486,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.8.tgz", - "integrity": "sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", "funding": [ { "type": "github", @@ -2322,10 +2500,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2336,9 +2514,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.8.tgz", - "integrity": "sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", "funding": [ { "type": "github", @@ -2350,10 +2528,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2364,9 +2542,9 @@ } }, "node_modules/@csstools/postcss-ic-unit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.0.tgz", - "integrity": "sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", "funding": [ { "type": "github", @@ -2378,7 +2556,7 @@ } ], "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -2411,9 +2589,9 @@ } }, "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.1.tgz", - "integrity": "sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", "funding": [ { "type": "github", @@ -2469,9 +2647,9 @@ } }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.7.tgz", - "integrity": "sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", "funding": [ { "type": "github", @@ -2483,9 +2661,9 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2583,9 +2761,9 @@ } }, "node_modules/@csstools/postcss-logical-viewport-units": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.3.tgz", - "integrity": "sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", "funding": [ { "type": "github", @@ -2597,7 +2775,7 @@ } ], "dependencies": { - "@csstools/css-tokenizer": "^3.0.3", + "@csstools/css-tokenizer": "^3.0.4", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2608,9 +2786,9 @@ } }, "node_modules/@csstools/postcss-media-minmax": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.7.tgz", - "integrity": "sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", "funding": [ { "type": "github", @@ -2622,10 +2800,10 @@ } ], "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/media-query-list-parser": "^4.0.2" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -2635,9 +2813,9 @@ } }, "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.4.tgz", - "integrity": "sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", "funding": [ { "type": "github", @@ -2649,9 +2827,9 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/media-query-list-parser": "^4.0.2" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -2710,9 +2888,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.8.tgz", - "integrity": "sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", "funding": [ { "type": "github", @@ -2724,10 +2902,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2738,9 +2916,9 @@ } }, "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.0.0.tgz", - "integrity": "sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", "funding": [ { "type": "github", @@ -2762,9 +2940,9 @@ } }, "node_modules/@csstools/postcss-random-function": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.3.tgz", - "integrity": "sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", "funding": [ { "type": "github", @@ -2776,9 +2954,9 @@ } ], "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -2788,9 +2966,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.8.tgz", - "integrity": "sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", "funding": [ { "type": "github", @@ -2802,10 +2980,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2852,9 +3030,9 @@ } }, "node_modules/@csstools/postcss-sign-functions": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.2.tgz", - "integrity": "sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", "funding": [ { "type": "github", @@ -2866,9 +3044,9 @@ } ], "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -2878,9 +3056,9 @@ } }, "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.7.tgz", - "integrity": "sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", "funding": [ { "type": "github", @@ -2892,9 +3070,9 @@ } ], "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -2904,9 +3082,9 @@ } }, "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz", - "integrity": "sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", "funding": [ { "type": "github", @@ -2918,7 +3096,7 @@ } ], "dependencies": { - "@csstools/color-helpers": "^5.0.2", + "@csstools/color-helpers": "^5.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -2929,9 +3107,9 @@ } }, "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.7.tgz", - "integrity": "sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", "funding": [ { "type": "github", @@ -2943,9 +3121,9 @@ } ], "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" }, "engines": { "node": ">=18" @@ -3005,19 +3183,22 @@ } }, "node_modules/@docsearch/css": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", - "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.2.0.tgz", + "integrity": "sha512-65KU9Fw5fGsPPPlgIghonMcndyx1bszzrDQYLfierN+Ha29yotMHzVS94bPkZS6On9LS8dE4qmW4P/fGjtCf/g==" }, "node_modules/@docsearch/react": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", - "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.2.0.tgz", + "integrity": "sha512-zSN/KblmtBcerf7Z87yuKIHZQmxuXvYc6/m0+qnjyNu+Ir67AVOagTa1zBqcxkVUVkmBqUExdcyrdo9hbGbqTw==", "dependencies": { - "@algolia/autocomplete-core": "1.17.9", - "@algolia/autocomplete-preset-algolia": "1.17.9", - "@docsearch/css": "3.9.0", - "algoliasearch": "^5.14.2" + "@ai-sdk/react": "^2.0.30", + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/css": "4.2.0", + "ai": "^5.0.30", + "algoliasearch": "^5.28.0", + "marked": "^16.3.0", + "zod": "^4.1.8" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", @@ -3041,9 +3222,9 @@ } }, "node_modules/@docusaurus/babel": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.7.0.tgz", - "integrity": "sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.2.tgz", + "integrity": "sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA==", "dependencies": { "@babel/core": "^7.25.9", "@babel/generator": "^7.25.9", @@ -3055,41 +3236,40 @@ "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", - "@docusaurus/logger": "3.7.0", - "@docusaurus/utils": "3.7.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/bundler": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.7.0.tgz", - "integrity": "sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.2.tgz", + "integrity": "sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA==", "dependencies": { "@babel/core": "^7.25.9", - "@docusaurus/babel": "3.7.0", - "@docusaurus/cssnano-preset": "3.7.0", - "@docusaurus/logger": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", + "@docusaurus/babel": "3.9.2", + "@docusaurus/cssnano-preset": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", "babel-loader": "^9.2.1", - "clean-css": "^5.3.2", + "clean-css": "^5.3.3", "copy-webpack-plugin": "^11.0.0", - "css-loader": "^6.8.1", + "css-loader": "^6.11.0", "css-minimizer-webpack-plugin": "^5.0.1", "cssnano": "^6.1.2", "file-loader": "^6.2.0", "html-minifier-terser": "^7.2.0", - "mini-css-extract-plugin": "^2.9.1", + "mini-css-extract-plugin": "^2.9.2", "null-loader": "^4.0.1", - "postcss": "^8.4.26", - "postcss-loader": "^7.3.3", - "postcss-preset-env": "^10.1.0", - "react-dev-utils": "^12.0.1", + "postcss": "^8.5.4", + "postcss-loader": "^7.3.4", + "postcss-preset-env": "^10.2.1", "terser-webpack-plugin": "^5.3.9", "tslib": "^2.6.0", "url-loader": "^4.1.1", @@ -3097,7 +3277,7 @@ "webpackbar": "^6.0.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/faster": "*" @@ -3172,17 +3352,17 @@ } }, "node_modules/@docusaurus/core": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.7.0.tgz", - "integrity": "sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ==", - "dependencies": { - "@docusaurus/babel": "3.7.0", - "@docusaurus/bundler": "3.7.0", - "@docusaurus/logger": "3.7.0", - "@docusaurus/mdx-loader": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-common": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", + "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", + "dependencies": { + "@docusaurus/babel": "3.9.2", + "@docusaurus/bundler": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -3190,19 +3370,19 @@ "combine-promises": "^1.1.0", "commander": "^5.1.0", "core-js": "^3.31.1", - "del": "^6.1.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", + "execa": "5.1.1", "fs-extra": "^11.1.1", "html-tags": "^3.3.1", "html-webpack-plugin": "^5.6.0", "leven": "^3.1.0", "lodash": "^4.17.21", + "open": "^8.4.0", "p-map": "^4.0.0", "prompts": "^2.4.2", - "react-dev-utils": "^12.0.1", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", @@ -3211,19 +3391,19 @@ "react-router-dom": "^5.3.4", "semver": "^7.5.4", "serve-handler": "^6.1.6", - "shelljs": "^0.8.5", + "tinypool": "^1.0.2", "tslib": "^2.6.0", "update-notifier": "^6.0.2", "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2", - "webpack-dev-server": "^4.15.2", + "webpack-dev-server": "^5.2.2", "webpack-merge": "^6.0.1" }, "bin": { "docusaurus": "bin/docusaurus.mjs" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@mdx-js/react": "^3.0.0", @@ -3232,46 +3412,46 @@ } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.7.0.tgz", - "integrity": "sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.2.tgz", + "integrity": "sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ==", "dependencies": { "cssnano-preset-advanced": "^6.1.2", - "postcss": "^8.4.38", + "postcss": "^8.5.4", "postcss-sort-media-queries": "^5.2.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/logger": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.7.0.tgz", - "integrity": "sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.2.tgz", + "integrity": "sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA==", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/mdx-loader": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.7.0.tgz", - "integrity": "sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.2.tgz", + "integrity": "sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ==", "dependencies": { - "@docusaurus/logger": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", "estree-util-value-to-estree": "^3.0.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", - "image-size": "^1.0.2", + "image-size": "^2.0.2", "mdast-util-mdx": "^3.0.0", "mdast-util-to-string": "^4.0.0", "rehype-raw": "^7.0.0", @@ -3288,7 +3468,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3296,16 +3476,16 @@ } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.7.0.tgz", - "integrity": "sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz", + "integrity": "sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew==", "dependencies": { - "@docusaurus/types": "3.7.0", + "@docusaurus/types": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", - "react-helmet-async": "npm:@slorber/react-helmet-async@*", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { @@ -3314,23 +3494,23 @@ } }, "node_modules/@docusaurus/plugin-content-blog": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz", - "integrity": "sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/logger": "3.7.0", - "@docusaurus/mdx-loader": "3.7.0", - "@docusaurus/theme-common": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-common": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz", + "integrity": "sha512-3I2HXy3L1QcjLJLGAoTvoBnpOwa6DPUa3Q0dMK19UTY9mhPkKQg/DYhAGTiBUKcTR0f08iw7kLPqOhIgdV3eVQ==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", "lodash": "^4.17.21", - "reading-time": "^1.5.0", + "schema-dts": "^1.1.2", "srcset": "^4.0.0", "tslib": "^2.6.0", "unist-util-visit": "^5.0.0", @@ -3338,7 +3518,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", @@ -3347,30 +3527,31 @@ } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz", - "integrity": "sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/logger": "3.7.0", - "@docusaurus/mdx-loader": "3.7.0", - "@docusaurus/module-type-aliases": "3.7.0", - "@docusaurus/theme-common": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-common": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", + "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", "lodash": "^4.17.21", + "schema-dts": "^1.1.2", "tslib": "^2.6.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3378,70 +3559,74 @@ } }, "node_modules/@docusaurus/plugin-content-pages": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.7.0.tgz", - "integrity": "sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/mdx-loader": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.2.tgz", + "integrity": "sha512-s4849w/p4noXUrGpPUF0BPqIAfdAe76BLaRGAGKZ1gTDNiGxGcpsLcwJ9OTi1/V8A+AzvsmI9pkjie2zjIQZKA==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/plugin-css-cascade-layers": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.2.tgz", + "integrity": "sha512-w1s3+Ss+eOQbscGM4cfIFBlVg/QKxyYgj26k5AnakuHkKxH6004ZtuLe5awMBotIYF2bbGDoDhpgQ4r/kcj4rQ==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, "node_modules/@docusaurus/plugin-debug": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.7.0.tgz", - "integrity": "sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.9.2.tgz", + "integrity": "sha512-j7a5hWuAFxyQAkilZwhsQ/b3T7FfHZ+0dub6j/GxKNFJp2h9qk/P1Bp7vrGASnvA9KNQBBL1ZXTe7jlh4VdPdA==", "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", "fs-extra": "^11.1.1", - "react-json-view-lite": "^1.2.0", + "react-json-view-lite": "^2.3.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-debug/node_modules/react-json-view-lite": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz", - "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/@docusaurus/plugin-google-analytics": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.7.0.tgz", - "integrity": "sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.2.tgz", + "integrity": "sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw==", "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3449,18 +3634,18 @@ } }, "node_modules/@docusaurus/plugin-google-gtag": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.7.0.tgz", - "integrity": "sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.2.tgz", + "integrity": "sha512-YJ4lDCphabBtw19ooSlc1MnxtYGpjFV9rEdzjLsUnBCeis2djUyCozZaFhCg6NGEwOn7HDDyMh0yzcdRpnuIvA==", "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3468,17 +3653,17 @@ } }, "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.7.0.tgz", - "integrity": "sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.2.tgz", + "integrity": "sha512-LJtIrkZN/tuHD8NqDAW1Tnw0ekOwRTfobWPsdO15YxcicBo2ykKF0/D6n0vVBfd3srwr9Z6rzrIWYrMzBGrvNw==", "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3486,22 +3671,22 @@ } }, "node_modules/@docusaurus/plugin-sitemap": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.7.0.tgz", - "integrity": "sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/logger": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-common": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.2.tgz", + "integrity": "sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3509,21 +3694,21 @@ } }, "node_modules/@docusaurus/plugin-svgr": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.7.0.tgz", - "integrity": "sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.2.tgz", + "integrity": "sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@svgr/core": "8.1.0", "@svgr/webpack": "^8.1.0", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3531,27 +3716,28 @@ } }, "node_modules/@docusaurus/preset-classic": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.7.0.tgz", - "integrity": "sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/plugin-content-blog": "3.7.0", - "@docusaurus/plugin-content-docs": "3.7.0", - "@docusaurus/plugin-content-pages": "3.7.0", - "@docusaurus/plugin-debug": "3.7.0", - "@docusaurus/plugin-google-analytics": "3.7.0", - "@docusaurus/plugin-google-gtag": "3.7.0", - "@docusaurus/plugin-google-tag-manager": "3.7.0", - "@docusaurus/plugin-sitemap": "3.7.0", - "@docusaurus/plugin-svgr": "3.7.0", - "@docusaurus/theme-classic": "3.7.0", - "@docusaurus/theme-common": "3.7.0", - "@docusaurus/theme-search-algolia": "3.7.0", - "@docusaurus/types": "3.7.0" - }, - "engines": { - "node": ">=18.0" + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.9.2.tgz", + "integrity": "sha512-IgyYO2Gvaigi21LuDIe+nvmN/dfGXAiMcV/murFqcpjnZc7jxFAxW+9LEjdPt61uZLxG4ByW/oUmX/DDK9t/8w==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/plugin-css-cascade-layers": "3.9.2", + "@docusaurus/plugin-debug": "3.9.2", + "@docusaurus/plugin-google-analytics": "3.9.2", + "@docusaurus/plugin-google-gtag": "3.9.2", + "@docusaurus/plugin-google-tag-manager": "3.9.2", + "@docusaurus/plugin-sitemap": "3.9.2", + "@docusaurus/plugin-svgr": "3.9.2", + "@docusaurus/theme-classic": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-search-algolia": "3.9.2", + "@docusaurus/types": "3.9.2" + }, + "engines": { + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3559,30 +3745,29 @@ } }, "node_modules/@docusaurus/theme-classic": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.7.0.tgz", - "integrity": "sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/logger": "3.7.0", - "@docusaurus/mdx-loader": "3.7.0", - "@docusaurus/module-type-aliases": "3.7.0", - "@docusaurus/plugin-content-blog": "3.7.0", - "@docusaurus/plugin-content-docs": "3.7.0", - "@docusaurus/plugin-content-pages": "3.7.0", - "@docusaurus/theme-common": "3.7.0", - "@docusaurus/theme-translations": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-common": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.2.tgz", + "integrity": "sha512-IGUsArG5hhekXd7RDb11v94ycpJpFdJPkLnt10fFQWOVxAtq5/D7hT6lzc2fhyQKaaCE62qVajOMKL7OiAFAIA==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", - "copy-text-to-clipboard": "^3.2.0", "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", - "postcss": "^8.4.26", + "postcss": "^8.5.4", "prism-react-renderer": "^2.3.0", "prismjs": "^1.29.0", "react-router-dom": "^5.3.4", @@ -3591,7 +3776,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3599,14 +3784,14 @@ } }, "node_modules/@docusaurus/theme-common": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.7.0.tgz", - "integrity": "sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A==", - "dependencies": { - "@docusaurus/mdx-loader": "3.7.0", - "@docusaurus/module-type-aliases": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-common": "3.7.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz", + "integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==", + "dependencies": { + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -3617,7 +3802,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", @@ -3626,41 +3811,47 @@ } }, "node_modules/@docusaurus/theme-mermaid": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.7.0.tgz", - "integrity": "sha512-7kNDvL7hm+tshjxSxIqYMtsLUPsEBYnkevej/ext6ru9xyLgCed+zkvTfGzTWNeq8rJIEe2YSS8/OV5gCVaPCw==", - "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/module-type-aliases": "3.7.0", - "@docusaurus/theme-common": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", - "mermaid": ">=10.4", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.9.2.tgz", + "integrity": "sha512-5vhShRDq/ntLzdInsQkTdoKWSzw8d1jB17sNPYhA/KvYYFXfuVEGHLM6nrf8MFbV8TruAHDG21Fn3W4lO8GaDw==", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "mermaid": ">=11.6.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { + "@mermaid-js/layout-elk": "^0.1.9", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@mermaid-js/layout-elk": { + "optional": true + } } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.7.0.tgz", - "integrity": "sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g==", - "dependencies": { - "@docsearch/react": "^3.8.1", - "@docusaurus/core": "3.7.0", - "@docusaurus/logger": "3.7.0", - "@docusaurus/plugin-content-docs": "3.7.0", - "@docusaurus/theme-common": "3.7.0", - "@docusaurus/theme-translations": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-validation": "3.7.0", - "algoliasearch": "^5.17.1", - "algoliasearch-helper": "^3.22.6", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz", + "integrity": "sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw==", + "dependencies": { + "@docsearch/react": "^3.9.0 || ^4.1.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", @@ -3669,7 +3860,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3677,30 +3868,31 @@ } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.7.0.tgz", - "integrity": "sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.2.tgz", + "integrity": "sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA==", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/tsconfig": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.7.0.tgz", - "integrity": "sha512-vRsyj3yUZCjscgfgcFYjIsTcAru/4h4YH2/XAE8Rs7wWdnng98PgWKvP5ovVc4rmRpRg2WChVW0uOy2xHDvDBQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.9.2.tgz", + "integrity": "sha512-j6/Fp4Rlpxsc632cnRnl5HpOWeb6ZKssDj6/XzzAzVGXXfm9Eptx3rxCC+fDzySn9fHTS+CWJjPineCR1bB5WQ==", "dev": true }, "node_modules/@docusaurus/types": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.7.0.tgz", - "integrity": "sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.2.tgz", + "integrity": "sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q==", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", @@ -3728,14 +3920,15 @@ } }, "node_modules/@docusaurus/utils": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.7.0.tgz", - "integrity": "sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz", + "integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==", "dependencies": { - "@docusaurus/logger": "3.7.0", - "@docusaurus/types": "3.7.0", - "@docusaurus/utils-common": "3.7.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "escape-string-regexp": "^4.0.0", + "execa": "5.1.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", @@ -3745,38 +3938,38 @@ "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", + "p-queue": "^6.6.2", "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", - "shelljs": "^0.8.5", "tslib": "^2.6.0", "url-loader": "^4.1.1", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-common": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.7.0.tgz", - "integrity": "sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.2.tgz", + "integrity": "sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw==", "dependencies": { - "@docusaurus/types": "3.7.0", + "@docusaurus/types": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.7.0.tgz", - "integrity": "sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.2.tgz", + "integrity": "sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A==", "dependencies": { - "@docusaurus/logger": "3.7.0", - "@docusaurus/utils": "3.7.0", - "@docusaurus/utils-common": "3.7.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", @@ -3784,7 +3977,7 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@esbuild/aix-ppc64": { @@ -4356,16 +4549,21 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -4376,14 +4574,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", @@ -4399,28 +4589,137 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" }, "node_modules/@mdx-js/mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", @@ -4504,6 +4803,14 @@ "node": ">= 8" } }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -4926,6 +5233,11 @@ "micromark-util-symbol": "^1.0.1" } }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==" + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -5188,18 +5500,10 @@ "node": ">=10.13.0" } }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -5492,20 +5796,20 @@ } }, "node_modules/@types/express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", - "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", - "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -5547,14 +5851,14 @@ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==" }, "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dependencies": { "@types/node": "*" } @@ -5617,9 +5921,9 @@ } }, "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", "dependencies": { "@types/node": "*" } @@ -5627,7 +5931,8 @@ "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true }, "node_modules/@types/parse5": { "version": "5.0.3", @@ -5640,9 +5945,9 @@ "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==" }, "node_modules/@types/qs": { - "version": "6.9.18", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", - "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==" + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==" }, "node_modules/@types/range-parser": { "version": "1.2.7", @@ -5687,9 +5992,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" }, "node_modules/@types/sax": { "version": "1.2.7", @@ -5700,11 +6005,10 @@ } }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -5717,13 +6021,22 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, "node_modules/@types/sockjs": { @@ -5747,17 +6060,17 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/@types/ws": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", - "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", + "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", "dependencies": { "@types/yargs-parser": "*" } @@ -6176,6 +6489,14 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" }, + "node_modules/@vercel/oidc": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.3.tgz", + "integrity": "sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==", + "engines": { + "node": ">= 20" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -6424,6 +6745,23 @@ "node": ">=8" } }, + "node_modules/ai": { + "version": "5.0.86", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.86.tgz", + "integrity": "sha512-ooHwNTkLdedFf98iQhtSc5btc/P4UuXuOpYneoifq0190vqosLunNdW8Hs6CiE0Am7YOGNplDK56JIPlHZIL4w==", + "dependencies": { + "@ai-sdk/gateway": "2.0.5", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.15", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -6467,32 +6805,33 @@ } }, "node_modules/algoliasearch": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.3.tgz", - "integrity": "sha512-iNC6BGvipaalFfDfDnXUje8GUlW5asj0cTMsZJwO/0rhsyLx1L7GZFAY8wW+eQ6AM4Yge2p5GSE5hrBlfSD90Q==", - "dependencies": { - "@algolia/client-abtesting": "5.20.3", - "@algolia/client-analytics": "5.20.3", - "@algolia/client-common": "5.20.3", - "@algolia/client-insights": "5.20.3", - "@algolia/client-personalization": "5.20.3", - "@algolia/client-query-suggestions": "5.20.3", - "@algolia/client-search": "5.20.3", - "@algolia/ingestion": "1.20.3", - "@algolia/monitoring": "1.20.3", - "@algolia/recommend": "5.20.3", - "@algolia/requester-browser-xhr": "5.20.3", - "@algolia/requester-fetch": "5.20.3", - "@algolia/requester-node-http": "5.20.3" + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.42.0.tgz", + "integrity": "sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==", + "dependencies": { + "@algolia/abtesting": "1.8.0", + "@algolia/client-abtesting": "5.42.0", + "@algolia/client-analytics": "5.42.0", + "@algolia/client-common": "5.42.0", + "@algolia/client-insights": "5.42.0", + "@algolia/client-personalization": "5.42.0", + "@algolia/client-query-suggestions": "5.42.0", + "@algolia/client-search": "5.42.0", + "@algolia/ingestion": "1.42.0", + "@algolia/monitoring": "1.42.0", + "@algolia/recommend": "5.42.0", + "@algolia/requester-browser-xhr": "5.42.0", + "@algolia/requester-fetch": "5.42.0", + "@algolia/requester-node-http": "5.42.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.24.1.tgz", - "integrity": "sha512-knYRACqLH9UpeR+WRUrBzBFR2ulGuOjI2b525k4PNeqZxeFMHJE7YcL7s6Jh12Qza0rtHqZdgHMfeuaaAkf4wA==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.0.tgz", + "integrity": "sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw==", "dependencies": { "@algolia/events": "^4.0.1" }, @@ -6632,14 +6971,6 @@ "astring": "bin/astring" } }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/autocomplete.js": { "version": "0.37.1", "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.37.1.tgz", @@ -6649,9 +6980,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -6667,11 +6998,11 @@ } ], "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -6740,12 +7071,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", - "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { @@ -6761,23 +7092,23 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", - "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6797,6 +7128,14 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.22", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.22.tgz", + "integrity": "sha512-/tk9kky/d8T8CTXIQYASLyhAxR5VwL3zct1oAoVTaOUHwrmsGnfbRwNdEq+vOl2BN8i3PcDdP0o4Q+jjKQoFbQ==", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -6942,9 +7281,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", + "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", "funding": [ { "type": "opencollective", @@ -6960,10 +7299,11 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.8.19", + "caniuse-lite": "^1.0.30001751", + "electron-to-chromium": "^1.5.238", + "node-releases": "^2.0.26", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -6972,11 +7312,25 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -7040,12 +7394,12 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -7094,9 +7448,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001701", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001701.tgz", - "integrity": "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==", + "version": "1.0.30001752", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001752.tgz", + "integrity": "sha512-vKUk7beoukxE47P5gcVNKkDRzXdVofotshHwfR9vmpeFKxmI5PBpgOMC18LUJUA/DvJ70Y7RveasIBraqsyO/g==", "funding": [ { "type": "opencollective", @@ -7490,9 +7844,9 @@ } }, "node_modules/compressible/node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "engines": { "node": ">= 0.6" } @@ -7501,7 +7855,6 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -7582,9 +7935,9 @@ } }, "node_modules/consola": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz", - "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", "engines": { "node": "^14.18.0 || >=16.10.0" } @@ -7628,17 +7981,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, - "node_modules/copy-text-to-clipboard": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", - "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/copy-webpack-plugin": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", @@ -7739,11 +8081,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", - "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", + "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", "dependencies": { - "browserslist": "^4.24.3" + "browserslist": "^4.26.3" }, "funding": { "type": "opencollective", @@ -7751,9 +8093,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz", - "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==", + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz", + "integrity": "sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -7873,9 +8215,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", - "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", + "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", "engines": { "node": "^14 || ^16 || >=18" }, @@ -7884,9 +8226,9 @@ } }, "node_modules/css-has-pseudo": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz", - "integrity": "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", "funding": [ { "type": "github", @@ -8041,9 +8383,9 @@ } }, "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -8084,9 +8426,9 @@ } }, "node_modules/cssdb": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.3.tgz", - "integrity": "sha512-9BDG5XmJrJQQnJ51VFxXCAtpZ5ebDlAREmO8sxMOVU0aSxN/gocbctjIG5LMh3WBUq+xTlb/jw2LoljBEqraTA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.4.2.tgz", + "integrity": "sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==", "funding": [ { "type": "opencollective", @@ -8713,9 +9055,9 @@ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dependencies": { "ms": "^2.1.3" }, @@ -8781,15 +9123,30 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/defer-to-connect": { @@ -8840,27 +9197,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/delaunator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", @@ -8928,35 +9264,6 @@ "node": ">= 4.0.0" } }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -9261,9 +9568,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.5.107", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.107.tgz", - "integrity": "sha512-dJr1o6yCntRkXElnhsHh1bAV19bo/hKyFf7tCcWgpXbuFIF0Lakjgqv5LRfSDaNzAII8Fnxg2tqgHkgCvxdbxw==" + "version": "1.5.244", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.244.tgz", + "integrity": "sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -9583,10 +9890,9 @@ } }, "node_modules/estree-util-value-to-estree": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.3.3.tgz", - "integrity": "sha512-Db+m1WSD4+mUO7UgMeKkAwdbfNWwIxLt48XF2oFU9emPfXkIu+k5/nlOj313v7wqtAPo0f9REhUvznFrPkG8CQ==", - "license": "MIT", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz", + "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==", "dependencies": { "@types/estree": "^1.0.0" }, @@ -9667,6 +9973,14 @@ "node": ">=0.8.x" } }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -9955,14 +10269,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -10043,9 +10349,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -10061,126 +10367,6 @@ } } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" - } - }, "node_modules/form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -10238,16 +10424,6 @@ "node": ">=14.14" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -10383,26 +10559,6 @@ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -10414,6 +10570,21 @@ "node": ">= 6" } }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -10441,49 +10612,6 @@ "node": ">=10" } }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -10839,9 +10967,9 @@ } }, "node_modules/hast-util-raw/node_modules/property-information": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", - "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10945,9 +11073,9 @@ } }, "node_modules/hast-util-to-estree": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.2.tgz", - "integrity": "sha512-94SDoKOfop5gP8RHyw4vV1aj+oChuD42g08BONGAaWFbbO6iaWUqxk7SWfGybgcVzhK16KifZr3zD2dqQgx3jQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -10962,7 +11090,7 @@ "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^1.0.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" }, @@ -10993,9 +11121,9 @@ } }, "node_modules/hast-util-to-estree/node_modules/property-information": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", - "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11020,9 +11148,9 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz", - "integrity": "sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -11036,7 +11164,7 @@ "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^1.0.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" }, @@ -11067,9 +11195,9 @@ } }, "node_modules/hast-util-to-jsx-runtime/node_modules/property-information": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", - "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11292,21 +11420,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -11463,9 +11576,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", - "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==" + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==" }, "node_modules/http-proxy": { "version": "1.18.1", @@ -11480,6 +11593,40 @@ "node": ">=8.0.0" } }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", @@ -11497,7 +11644,15 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "engines": { - "node": ">=10.17.0" + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "engines": { + "node": ">=10.18" } }, "node_modules/iconv-lite": { @@ -11531,13 +11686,9 @@ } }, "node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", - "license": "MIT", - "dependencies": { - "queue": "6.0.2" - }, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", "bin": { "image-size": "bin/image-size.js" }, @@ -11550,15 +11701,6 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/immutable": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", @@ -11612,16 +11754,6 @@ "node": ">=12" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -11645,14 +11777,6 @@ "node": ">=12" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -11821,6 +11945,37 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -11836,6 +11991,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-npm": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", @@ -11863,14 +12029,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -11909,14 +12067,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "engines": { - "node": ">=6" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -12071,6 +12221,11 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -12188,12 +12343,12 @@ } }, "node_modules/launch-editor": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", - "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, "node_modules/layout-base": { @@ -12384,10 +12539,9 @@ } }, "node_modules/marked": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.2.0.tgz", - "integrity": "sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg==", - "license": "MIT", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.1.tgz", + "integrity": "sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==", "bin": { "marked": "bin/marked.js" }, @@ -12450,9 +12604,9 @@ } }, "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", "dependencies": { "@types/unist": "^3.0.0" }, @@ -12829,14 +12983,20 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.50.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.50.0.tgz", + "integrity": "sha512-N0LUYQMUA1yS5tJKmMtU9yprPm6ZIg24yr/OVv/7t6q0kKDIho4cBbXRi1XKttUmNYDYgF/q45qrKE/UhGO0CA==", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/merge-descriptors": { @@ -13459,9 +13619,9 @@ ] }, "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", - "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", "funding": [ { "type": "GitHub Sponsors", @@ -13537,11 +13697,10 @@ ] }, "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz", - "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", "dependencies": { - "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", @@ -13806,9 +13965,9 @@ ] }, "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz", - "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", "funding": [ { "type": "GitHub Sponsors", @@ -14310,9 +14469,9 @@ ] }, "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", - "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", "funding": [ { "type": "GitHub Sponsors", @@ -14324,7 +14483,6 @@ } ], "dependencies": { - "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", @@ -14650,9 +14808,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", - "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -14738,9 +14896,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -14806,9 +14964,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" }, "node_modules/nopt": { "version": "1.0.10", @@ -15013,19 +15171,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -15072,6 +15221,14 @@ "node": ">=12.20" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -15114,24 +15271,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/package-json": { @@ -15222,11 +15401,11 @@ "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" }, "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dependencies": { - "entities": "^4.5.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -15244,6 +15423,17 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -15274,14 +15464,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", @@ -15361,73 +15543,6 @@ "pathe": "^2.0.1" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/points-on-curve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", @@ -15443,9 +15558,9 @@ } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { "type": "opencollective", @@ -15461,7 +15576,7 @@ } ], "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -15535,9 +15650,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.8.tgz", - "integrity": "sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", "funding": [ { "type": "github", @@ -15549,10 +15664,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -15645,9 +15760,9 @@ } }, "node_modules/postcss-custom-media": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.5.tgz", - "integrity": "sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz", + "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==", "funding": [ { "type": "github", @@ -15659,10 +15774,10 @@ } ], "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/media-query-list-parser": "^4.0.2" + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" }, "engines": { "node": ">=18" @@ -15672,9 +15787,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.4.tgz", - "integrity": "sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==", + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz", + "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==", "funding": [ { "type": "github", @@ -15686,9 +15801,9 @@ } ], "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -15700,9 +15815,9 @@ } }, "node_modules/postcss-custom-selectors": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.4.tgz", - "integrity": "sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz", + "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==", "funding": [ { "type": "github", @@ -15714,9 +15829,9 @@ } ], "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", "postcss-selector-parser": "^7.0.0" }, "engines": { @@ -15833,9 +15948,9 @@ } }, "node_modules/postcss-double-position-gradients": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.0.tgz", - "integrity": "sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", "funding": [ { "type": "github", @@ -15847,7 +15962,7 @@ } ], "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -15985,9 +16100,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.8.tgz", - "integrity": "sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", "funding": [ { "type": "github", @@ -15999,10 +16114,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -16244,9 +16359,9 @@ } }, "node_modules/postcss-nesting": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.1.tgz", - "integrity": "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", "funding": [ { "type": "github", @@ -16258,7 +16373,7 @@ } ], "dependencies": { - "@csstools/selector-resolve-nested": "^3.0.0", + "@csstools/selector-resolve-nested": "^3.1.0", "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" }, @@ -16270,9 +16385,9 @@ } }, "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz", - "integrity": "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", "funding": [ { "type": "github", @@ -16540,9 +16655,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.5.tgz", - "integrity": "sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz", + "integrity": "sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==", "funding": [ { "type": "github", @@ -16554,62 +16669,66 @@ } ], "dependencies": { - "@csstools/postcss-cascade-layers": "^5.0.1", - "@csstools/postcss-color-function": "^4.0.8", - "@csstools/postcss-color-mix-function": "^3.0.8", - "@csstools/postcss-content-alt-text": "^2.0.4", - "@csstools/postcss-exponential-functions": "^2.0.7", + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", "@csstools/postcss-font-format-keywords": "^4.0.0", - "@csstools/postcss-gamut-mapping": "^2.0.8", - "@csstools/postcss-gradients-interpolation-method": "^5.0.8", - "@csstools/postcss-hwb-function": "^4.0.8", - "@csstools/postcss-ic-unit": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", "@csstools/postcss-initial": "^2.0.1", - "@csstools/postcss-is-pseudo-class": "^5.0.1", - "@csstools/postcss-light-dark-function": "^2.0.7", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", "@csstools/postcss-logical-float-and-clear": "^3.0.0", "@csstools/postcss-logical-overflow": "^2.0.0", "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", "@csstools/postcss-logical-resize": "^3.0.0", - "@csstools/postcss-logical-viewport-units": "^3.0.3", - "@csstools/postcss-media-minmax": "^2.0.7", - "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.4", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", - "@csstools/postcss-oklab-function": "^4.0.8", - "@csstools/postcss-progressive-custom-properties": "^4.0.0", - "@csstools/postcss-random-function": "^1.0.3", - "@csstools/postcss-relative-color-syntax": "^3.0.8", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", "@csstools/postcss-scope-pseudo-class": "^4.0.1", - "@csstools/postcss-sign-functions": "^1.1.2", - "@csstools/postcss-stepped-value-functions": "^4.0.7", - "@csstools/postcss-text-decoration-shorthand": "^4.0.2", - "@csstools/postcss-trigonometric-functions": "^4.0.7", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", "@csstools/postcss-unset-value": "^4.0.0", - "autoprefixer": "^10.4.19", - "browserslist": "^4.24.4", + "autoprefixer": "^10.4.21", + "browserslist": "^4.26.0", "css-blank-pseudo": "^7.0.1", - "css-has-pseudo": "^7.0.2", + "css-has-pseudo": "^7.0.3", "css-prefers-color-scheme": "^10.0.0", - "cssdb": "^8.2.3", + "cssdb": "^8.4.2", "postcss-attribute-case-insensitive": "^7.0.1", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^7.0.8", + "postcss-color-functional-notation": "^7.0.12", "postcss-color-hex-alpha": "^10.0.0", "postcss-color-rebeccapurple": "^10.0.0", - "postcss-custom-media": "^11.0.5", - "postcss-custom-properties": "^14.0.4", - "postcss-custom-selectors": "^8.0.4", + "postcss-custom-media": "^11.0.6", + "postcss-custom-properties": "^14.0.6", + "postcss-custom-selectors": "^8.0.5", "postcss-dir-pseudo-class": "^9.0.1", - "postcss-double-position-gradients": "^6.0.0", + "postcss-double-position-gradients": "^6.0.4", "postcss-focus-visible": "^10.0.1", "postcss-focus-within": "^9.0.1", "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^6.0.0", "postcss-image-set-function": "^7.0.0", - "postcss-lab-function": "^7.0.8", + "postcss-lab-function": "^7.0.12", "postcss-logical": "^8.1.0", - "postcss-nesting": "^13.0.1", + "postcss-nesting": "^13.0.2", "postcss-opacity-percentage": "^3.0.0", "postcss-overflow-shorthand": "^6.0.0", "postcss-page-break": "^3.0.4", @@ -16864,9 +16983,9 @@ } }, "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "engines": { "node": ">=6" } @@ -16986,14 +17105,6 @@ } ] }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dependencies": { - "inherits": "~2.0.3" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -17070,155 +17181,37 @@ "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "rc": "cli.js" } }, - "node_modules/react-dev-utils/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/react-dev-utils/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/react-dom": { @@ -17232,11 +17225,6 @@ "react": "^19.0.0" } }, - "node_modules/react-error-overlay": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", - "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==" - }, "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", @@ -17264,6 +17252,17 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-json-view-lite": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz", + "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0" + } + }, "node_modules/react-loadable": { "name": "@docusaurus/react-loadable", "version": "6.0.0", @@ -17376,22 +17375,6 @@ "node": ">=8.10.0" } }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/recma-build-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", @@ -17407,9 +17390,9 @@ } }, "node_modules/recma-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", - "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", @@ -17420,6 +17403,9 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/recma-parse": { @@ -17452,26 +17438,15 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dependencies": { "regenerate": "^1.4.2" }, @@ -17484,14 +17459,6 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regex-parser": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", @@ -17499,16 +17466,16 @@ "dev": true }, "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", + "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" @@ -17545,27 +17512,16 @@ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/rehype-parse": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz", @@ -17698,9 +17654,9 @@ } }, "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" @@ -17726,9 +17682,9 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", - "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -17985,21 +17941,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", @@ -18033,6 +17974,17 @@ "node": ">=12.0.0" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -18182,6 +18134,11 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" }, + "node_modules/schema-dts": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", + "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==" + }, "node_modules/schema-utils": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", @@ -18480,9 +18437,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "engines": { "node": ">= 0.4" }, @@ -18490,22 +18447,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -18675,11 +18616,11 @@ } }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-js": { @@ -18769,9 +18710,9 @@ } }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==" + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==" }, "node_modules/string_decoder": { "version": "1.3.0", @@ -18886,10 +18827,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-to-js": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.18.tgz", + "integrity": "sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==", + "dependencies": { + "style-to-object": "1.0.11" + } + }, "node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.11.tgz", + "integrity": "sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==", "dependencies": { "inline-style-parser": "0.2.4" } @@ -18973,6 +18922,18 @@ "node": ">= 10" } }, + "node_modules/swr": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.6.tgz", + "integrity": "sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -19063,10 +19024,31 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/thunky": { "version": "1.1.0", @@ -19088,6 +19070,14 @@ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -19173,6 +19163,21 @@ "node": ">=6" } }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -19277,6 +19282,7 @@ "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19324,17 +19330,17 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "engines": { "node": ">=4" } @@ -19508,9 +19514,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "funding": [ { "type": "opencollective", @@ -19704,6 +19710,14 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -19948,41 +19962,47 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-middleware/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "engines": { "node": ">= 0.6" } }, "node_modules/webpack-dev-middleware/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -19997,53 +20017,51 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.21.2", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -20054,66 +20072,38 @@ } } }, - "node_modules/webpack-dev-server/node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/webpack-dev-server/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" + "node": ">=12" }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-server/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "engines": { "node": ">=10.0.0" }, @@ -20369,11 +20359,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -20405,6 +20390,34 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", @@ -20444,14 +20457,15 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "engines": { "node": ">= 6" } }, "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "engines": { "node": ">=12.20" }, @@ -20459,6 +20473,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", diff --git a/package.json b/package.json index 46db5c6..e31ecfd 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,14 @@ "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", "typecheck": "tsc", - "generate-alphatabdoc": "tsx scripts/generate-alphatabdoc.mts" + "generate-alphatabdoc": "tsx scripts/generate-alphatabdoc.mts", + "generate-alphatabdoc-empty": "tsx scripts/generate-alphatabdoc.mts --empty" }, "dependencies": { "@coderline/alphatab": "^1.7.0-alpha.1515", - "@docusaurus/core": "^3.7.0", - "@docusaurus/preset-classic": "^3.7.0", - "@docusaurus/theme-mermaid": "^3.7.0", + "@docusaurus/core": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", + "@docusaurus/theme-mermaid": "^3.9.2", "@fontsource/noto-sans": "^5.1.1", "@fontsource/noto-serif": "^5.1.1", "@fortawesome/free-brands-svg-icons": "^6.7.2", @@ -40,8 +41,8 @@ "webpack": "^5.98.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^3.7.0", - "@docusaurus/tsconfig": "^3.7.0", + "@docusaurus/module-type-aliases": "^3.9.2", + "@docusaurus/tsconfig": "^3.9.2", "@types/react": "^19.0.10", "babel-plugin-macros": "^3.1.0", "copy-webpack-plugin": "^12.0.2", diff --git a/scripts/generate-alphatabdoc.mts b/scripts/generate-alphatabdoc.mts index 40460b0..9c548aa 100644 --- a/scripts/generate-alphatabdoc.mts +++ b/scripts/generate-alphatabdoc.mts @@ -32,6 +32,7 @@ const context: GenerateContext = { flatExports: new Map(), nameToExportName: new Map(), settings: null!, + emptyFiles: false }; function walkModuleDeclaration( @@ -150,8 +151,9 @@ for (const { d, identifier } of exports) { context.settings = context.flatExports.get( "alphaTab.Settings" ) as ts.ClassDeclaration; + +context.emptyFiles = process.argv.includes("--empty"); + await generateSettings(context); await generateTypeDocs(context); await generateApiDocs(context); - -// TODO: run prettier on MDX files \ No newline at end of file diff --git a/scripts/generate-api.mts b/scripts/generate-api.mts index b31dcba..cfdaf93 100644 --- a/scripts/generate-api.mts +++ b/scripts/generate-api.mts @@ -130,6 +130,9 @@ async function writeFrontMatter( await fileStream.write("---\n"); + if(context.emptyFiles) { + return; + } await writeCommonImports(fileStream); if (since) { @@ -157,6 +160,10 @@ async function writePropertyPage( await writeFrontMatter(context, fileStream, memberName, member, "property"); + if(context.emptyFiles){ + return; + } + await fileStream.write( "import { PropertyDescription } from '@site/src/components/PropertyDescription';\n\n" ); @@ -180,6 +187,9 @@ async function writeEventPage( await using fileStream = await openFileStream(filePath); await writeFrontMatter(context, fileStream, memberName, member, "event"); + if(context.emptyFiles){ + return; + } await writeEventDetails(context, fileStream, member); } @@ -195,5 +205,9 @@ async function writeMethodPage( await using fileStream = await openFileStream(filePath); await writeFrontMatter(context, fileStream, memberName, member, "method"); + if(context.emptyFiles){ + return; + } + await writeMethodDetails(context, fileStream, member); } diff --git a/scripts/generate-common.mts b/scripts/generate-common.mts index 82b96a0..b73627f 100644 --- a/scripts/generate-common.mts +++ b/scripts/generate-common.mts @@ -1019,6 +1019,10 @@ function shouldGenerateMember( // e.g. constructors return false; } + if (ts.isComputedPropertyName(m.name)) { + // e.g. [Symbol.iterator] + return false; + } // private if ( diff --git a/scripts/generate-settings.mts b/scripts/generate-settings.mts index a32a247..c904f8f 100644 --- a/scripts/generate-settings.mts +++ b/scripts/generate-settings.mts @@ -90,6 +90,10 @@ export async function generateSettings(context: GenerateContext) { await fileStream.write("---\n"); + if (context.emptyFiles) { + continue; + } + await writeCommonImports(fileStream); await fileStream.write( diff --git a/scripts/generate-typedocs.mts b/scripts/generate-typedocs.mts index 6887e50..e629655 100644 --- a/scripts/generate-typedocs.mts +++ b/scripts/generate-typedocs.mts @@ -45,6 +45,10 @@ export async function generateTypeDocs(context: GenerateContext) { await fileStream.write(`title: ${exportedName}\n`); await fileStream.write("---\n"); + if(context.emptyFiles){ + fileStream.suspend = true; + } + await writeCommonImports(fileStream); await fileStream.write( @@ -436,6 +440,10 @@ async function writeFrontMatter( await fileStream.write("---\n"); + if(context.emptyFiles){ + return; + } + await writeCommonImports(fileStream); if (since) { @@ -462,6 +470,10 @@ async function writePropertyPage( await using fileStream = await openFileStream(filePath); await writeFrontMatter(context, fileStream, memberName, member, "property"); + if(context.emptyFiles){ + return; + } + await writePropertyDetails(context, fileStream, member); } @@ -479,6 +491,10 @@ async function writeEventPage( await using fileStream = await openFileStream(filePath); await writeFrontMatter(context, fileStream, memberName, member, "event"); + if(context.emptyFiles){ + return; + } + await writeEventDetails(context, fileStream, member); } @@ -493,6 +509,10 @@ async function writeMethodPage( await using fileStream = await openFileStream(filePath); await writeFrontMatter(context, fileStream, memberName, member, "method"); + if(context.emptyFiles){ + return; + } + await writeMethodDetails(context, fileStream, member); } diff --git a/scripts/typeschema.mts b/scripts/typeschema.mts index fb28bf4..62ea34f 100644 --- a/scripts/typeschema.mts +++ b/scripts/typeschema.mts @@ -8,6 +8,7 @@ export const repositoryRoot = path.resolve( ); export type GenerateContext = { + emptyFiles: boolean; checker: ts.TypeChecker; settings: ts.ClassDeclaration; dts: string; diff --git a/scripts/util.mts b/scripts/util.mts index 616ef6f..ad2763b 100644 --- a/scripts/util.mts +++ b/scripts/util.mts @@ -1,6 +1,7 @@ import fs from "fs"; export interface FileStream extends AsyncDisposable { + suspend: boolean; readonly path: string; write(s: string): Promise; writeLine(s?: string): Promise; @@ -8,9 +9,12 @@ export interface FileStream extends AsyncDisposable { export async function openFileStream(path: string): Promise { const fileStream = await fs.promises.open(path, "w"); + let _suspended = false; const write = async (s: string) => { - await fileStream.write(s); + if(!_suspended) { + await fileStream.write(s); + } }; const writeLine = (s?: string) => { if (s) { @@ -28,6 +32,12 @@ export async function openFileStream(path: string): Promise { write, writeLine, [Symbol.asyncDispose]: asyncDispose, + get suspend() { + return _suspended + }, + set suspend(v:boolean){ + _suspended = v; + } }; } diff --git a/sidebars.ts b/sidebars.ts index cb42a14..d160d2c 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -143,16 +143,14 @@ const sidebars: SidebarsConfig = { alphaTex: { alphaTex: [ "alphatex/introduction", - "alphatex/metadata", - "alphatex/stylesheet", - "alphatex/notes", + "alphatex/syntax", + "alphatex/document-structure", + "alphatex/structural-metadata", + "alphatex/score-metadata", + "alphatex/staff-metadata", "alphatex/bar-metadata", - "alphatex/tracks-staves", - "alphatex/beat-effects", - "alphatex/note-effects", - "alphatex/percussion", - "alphatex/lyrics", - "alphatex/sync-points", + "alphatex/beat-properties", + "alphatex/note-properties" ], }, showcase: [ diff --git a/src/components/AlphaTabFull/styles.module.scss b/src/components/AlphaTabFull/styles.module.scss index 3efc986..a8be61d 100644 --- a/src/components/AlphaTabFull/styles.module.scss +++ b/src/components/AlphaTabFull/styles.module.scss @@ -34,6 +34,16 @@ margin-top: -2rem; } +[data-theme="light"] .at-wrap { + border: 1px solid rgba(0, 0, 0, 0.12); + background: #fff; +} + +[data-theme="dark"] .at-wrap { + border: 1px solid rgba(255, 255, 255, 0.12); + background: #1b1b1d; +} + .at-content { flex: 1 1 auto; overflow: hidden; @@ -49,16 +59,24 @@ color: #fff; } .at-logo { - background: #f7f7f7; height: 40px; display: flex; align-items: center; padding: 8px 4px; margin-right: 0 !important; - color: #8a8b8c; font-size: 14px; } +[data-theme="light"] .at-logo { + background: #f7f7f7; + color: #8a8b8c; +} + +[data-theme="dark"] .at-logo { + background: rgb(8,8,8); + color: rgb(117, 116, 115); +} + .at-logo img { height: 28px; } @@ -75,10 +93,21 @@ bottom: 0; overflow: hidden; border-right: 1px solid rgba(0, 0, 0, 0.12); +} + + +[data-theme="light"] .at-sidebar { + border-right-color: rgba(0, 0, 0, 0.12); background: #f7f7f7; color: #000; } +[data-theme="dark"] .at-sidebar { + border-right-color: rgba(255, 255, 255, 0.12); + background: rgb(8,8,8); + color: #fff; +} + .at-sidebar:hover { max-width: 400px; transition: max-width 0.2s; @@ -110,10 +139,15 @@ cursor: pointer; } -.at-track:hover { - background: rgba(0, 0, 0, 0.1); +[data-theme="light"] .at-track:hover { + background: rgba(0, 0, 0, 0.1); +} + +[data-theme="dark"] .at-track:hover { + background: rgba(255,255,255, 0.1); } + .at-track > .at-track-icon { grid-area: icon; font-size: 32px; @@ -130,8 +164,12 @@ opacity: 0.8; } -.at-track.active { - background: rgba(0, 0, 0, 0.03); +[data-theme="light"] .at-track.active { + background: rgba(0, 0, 0, 0.03); +} + +[data-theme="dark"] .at-track.active { + background: rgba(255,255,255, 0.03); } .at-track.active > .at-track-icon { @@ -194,18 +232,32 @@ input[type="range"]::-moz-range-thumb { bottom: 0; z-index: 1010; backdrop-filter: blur(3px); - background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: flex-start; } +[data-theme="light"] .at-overlay { + background: rgba(0, 0, 0, 0.5); +} + +[data-theme="dark"] .at-overlay { + background: rgba(255,255,255, 0.5); +} + .at-overlay-content { margin-top: 20px; background: #fff; - box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.3); padding: 10px; } +[data-theme="light"] .at-overlay-content { + box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.3); +} + +[data-theme="dark"] .at-overlay-content { + box-shadow: 0px 5px 10px 0px rgba(255, 255, 255, 0.3); +} + .at-overlay-content > .spinner-border { color: #4972a1; } diff --git a/src/components/AlphaTexSyncPointSample/styles.module.scss b/src/components/AlphaTexSyncPointSample/styles.module.scss index d17258c..d3e651f 100644 --- a/src/components/AlphaTexSyncPointSample/styles.module.scss +++ b/src/components/AlphaTexSyncPointSample/styles.module.scss @@ -1 +1,16 @@ -@import '../AlphaTab/styles.module.scss' \ No newline at end of file +.wrapper { + position: relative; + + > button { + position: absolute; + top: 2rem; + left: 2rem; + opacity: 0; + z-index: 100; + transition: all 0.2s ease-in-out; + } + + &:hover > button { + opacity: 1; + } +} diff --git a/src/components/RasgueadoPatterns/index.tsx b/src/components/RasgueadoPatterns/index.tsx index db98558..b5ddfbf 100644 --- a/src/components/RasgueadoPatterns/index.tsx +++ b/src/components/RasgueadoPatterns/index.tsx @@ -3,6 +3,7 @@ import * as alphaTab from "@coderline/alphatab"; import { useEffect, useRef } from "react"; import styles from "./styles.module.scss"; import environment from "@site/src/environment"; +import { useColorMode } from '@docusaurus/theme-common'; type RasguadoItemMode = "down" | "up" | "head"; type RasgueadoPatternItem = { @@ -141,7 +142,7 @@ const RasgueadoPatternDefinition = new Map< { finger: "i", mode: "up", - flag: alphaTab.model.MusicFontSymbol.FlagEighthUp, + flag: alphaTab.model.MusicFontSymbol.Flag8thUp, }, ], ], @@ -155,7 +156,7 @@ const RasgueadoPatternDefinition = new Map< { finger: "p", mode: "up", - flag: alphaTab.model.MusicFontSymbol.FlagEighthUp, + flag: alphaTab.model.MusicFontSymbol.Flag8thUp, }, ], ], @@ -199,11 +200,13 @@ type RasgueadoPatternProps = { const canvas = alphaTab.Environment.renderEngines.get("svg")!.createCanvas(); canvas.settings = new alphaTab.Settings(); -environment.setAlphaTabDefaults(canvas.settings); canvas.settings.display.scale = 1.5; export function RasgueadoPattern({ rasgueado }: RasgueadoPatternProps) { const pattern = RasgueadoPatternDefinition.get(rasgueado)!; + const { colorMode } = useColorMode(); + + environment.setAlphaTabDefaults(canvas.settings, colorMode); const canvasRef = useRef(null); @@ -233,7 +236,7 @@ export function RasgueadoPattern({ rasgueado }: RasgueadoPatternProps) { // canvas.fillRect(startX, 0, actualWidth, canvasHeight); - canvas.color = new alphaTab.model.Color(0, 0, 0); + canvas.color = canvas.settings.display.resources.mainGlyphColor; canvas.font = alphaTab.model.Font.fromJson(canvasStyle.font)!.withSize(10); canvas.font.families = [canvas.font.families[0]]; @@ -382,7 +385,7 @@ export function RasgueadoPattern({ rasgueado }: RasgueadoPatternProps) { } canvasRef.current!.innerHTML = canvas.endRender() as string; - }, []); + }, [colorMode]); return (
diff --git a/src/css/custom.scss b/src/css/custom.scss index dc960f7..ba7fe24 100644 --- a/src/css/custom.scss +++ b/src/css/custom.scss @@ -45,13 +45,13 @@ /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme="dark"] { - --ifm-color-primary: #70acf0; - --ifm-color-primary-dark: #509aed; - --ifm-color-primary-darker: #4090eb; - --ifm-color-primary-darkest: #1775df; - --ifm-color-primary-light: #90bef3; - --ifm-color-primary-lighter: #a0c8f5; - --ifm-color-primary-lightest: #d0e3fa; + --ifm-color-primary: #426d9d; + --ifm-color-primary-dark: #3b628d; + --ifm-color-primary-darker: #385d85; + --ifm-color-primary-darkest: #2e4c6e; + --ifm-color-primary-light: #4978ad; + --ifm-color-primary-lighter: #4c7db4; + --ifm-color-primary-lightest: #648ebe; } .docusaurus-highlight-code-line { @@ -119,26 +119,52 @@ li.types-item .menu__link { } /* Styles for player */ -:global(.at-cursor-bar) { - /* Defines the color of the bar background when a bar is played */ - background: rgba(255, 242, 0, 0.25); -} +[data-theme="dark"] { + .at-cursor-bar { + /* Defines the color of the bar background when a bar is played */ + background: rgba(66, 109, 157, 0.2); + } -:global(.at-selection div) { - /* Defines the color of the selection background */ - background: rgba(64, 64, 255, 0.1); -} + .at-selection div { + /* Defines the color of the selection background */ + background: rgba(64, 64, 255, 0.1); + } + + .at-cursor-beat { + /* Defines the beat cursor */ + background: rgba(61, 142, 234, 0.75); + width: 3px; + } -:global(.at-cursor-beat) { - /* Defines the beat cursor */ - background: rgba(64, 64, 255, 0.75); - width: 3px; + .at-highlight * { + /* Defines the color of the music symbols when they are being played (svg) */ + fill: #0078ff; + stroke: #0078ff; + } } -:global(.at-highlight) * { - /* Defines the color of the music symbols when they are being played (svg) */ - fill: #0078ff; - stroke: #0078ff; +[data-theme="light"] { + .at-cursor-bar { + /* Defines the color of the bar background when a bar is played */ + background: rgba(255, 242, 0, 0.25); + } + + .at-selection div { + /* Defines the color of the selection background */ + background: rgba(64, 64, 255, 0.1); + } + + .at-cursor-beat { + /* Defines the beat cursor */ + background: rgba(64, 64, 255, 0.75); + width: 3px; + } + + .at-highlight * { + /* Defines the color of the music symbols when they are being played (svg) */ + fill: #0078ff; + stroke: #0078ff; + } } @import "react-tooltip/dist/react-tooltip.css"; diff --git a/src/environment.ts b/src/environment.ts index e44e11e..f237e98 100644 --- a/src/environment.ts +++ b/src/environment.ts @@ -1,7 +1,27 @@ import * as alphaTab from "@coderline/alphatab"; +import type { ColorMode } from '@docusaurus/theme-common'; -export default { - setAlphaTabDefaults(settings: alphaTab.Settings) { +const defaultColors = (new alphaTab.Settings()).display.resources; + +function setAlphaTabColors(settings: alphaTab.Settings, colorMode: ColorMode) { + if (colorMode === 'dark') { + settings.display.resources.staffLineColor = alphaTab.model.Color.fromJson('rgb(90, 90, 90)')!; + settings.display.resources.barSeparatorColor = alphaTab.model.Color.fromJson('rgb(221, 221, 238)')!; + settings.display.resources.barNumberColor = alphaTab.model.Color.fromJson('rgb(225, 50, 56)')!; + settings.display.resources.mainGlyphColor = alphaTab.model.Color.fromJson('rgb(255,255,255)')!; + settings.display.resources.secondaryGlyphColor = alphaTab.model.Color.fromJson('rgba(255,255,255,0.4)')!; + settings.display.resources.scoreInfoColor = alphaTab.model.Color.fromJson('rgb(255,255,255)')!; + } else { + settings.display.resources.staffLineColor = defaultColors.staffLineColor; + settings.display.resources.barSeparatorColor =defaultColors.barSeparatorColor; + settings.display.resources.barNumberColor = defaultColors.barNumberColor; + settings.display.resources.mainGlyphColor = defaultColors.mainGlyphColor; + settings.display.resources.secondaryGlyphColor = defaultColors.secondaryGlyphColor; + settings.display.resources.scoreInfoColor = defaultColors.scoreInfoColor; + } +} + + function setAlphaTabDefaults(settings: alphaTab.Settings, colorMode: ColorMode) { settings.core.fontDirectory = "/font/"; settings.player.soundFont = "/soundfont/sonivox.sf3"; settings.player.scrollMode = alphaTab.ScrollMode.Off; @@ -15,6 +35,8 @@ export default { } }) } + + setAlphaTabColors(settings, colorMode); settings.display.resources.copyrightFont.families = ["Noto Sans"]; settings.display.resources.titleFont.families = ["Noto Serif"]; @@ -32,5 +54,9 @@ export default { settings.display.resources.directionsFont.families = ["Noto Serif"]; settings.display.resources.numberedNotationFont.families = ["Noto Sans"]; settings.display.resources.numberedNotationGraceFont.families = ["Noto Sans"]; - }, +} + +export default { + setAlphaTabColors, + setAlphaTabDefaults }; diff --git a/src/hooks.ts b/src/hooks.ts index d5d9ee2..19f401b 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -1,6 +1,7 @@ import React, { type DependencyList, type EffectCallback, useEffect, useRef, useState } from "react"; import * as alphaTab from "@coderline/alphatab"; import environment from "./environment"; +import {useColorMode} from '@docusaurus/theme-common'; export function useAlphaTab( settingsInit: (settings: alphaTab.Settings) => void, @@ -11,6 +12,27 @@ export function useAlphaTab( const [api, setApi] = useState(); const element = React.createRef(); + const { colorMode } = useColorMode(); + + useEffect(()=>{ + if(api) { + environment.setAlphaTabColors(api.settings, colorMode); + api.updateSettings(); + if(api.score) { + api.render(); + } + } + }, [api, colorMode]); + + // for easier testing and troubleshooting + useEffect(()=>{ + const e = element.current as any; + e.at = api; + return ()=>{ + e.at = undefined; + } + }, [api, element.current]) + useEffect( () => { const container = element.current; @@ -19,7 +41,7 @@ export function useAlphaTab( } const settings = new alphaTab.Settings(); - environment.setAlphaTabDefaults(settings); + environment.setAlphaTabDefaults(settings, colorMode); settingsInit(settings); const newApi = new alphaTab.AlphaTabApi(container, settings); @@ -33,8 +55,6 @@ export function useAlphaTab( [] ); - useEffect(() => { }); - return [api, element]; } diff --git a/src/theme/CodeBlock/Content/String.tsx b/src/theme/CodeBlock/Content/String.tsx deleted file mode 100644 index c661167..0000000 --- a/src/theme/CodeBlock/Content/String.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import React, { type ReactNode } from "react"; -import clsx from "clsx"; -import { useThemeConfig, usePrismTheme } from "@docusaurus/theme-common"; -import { - parseCodeBlockTitle, - parseLanguage, - parseLines, - containsLineNumbers, - useCodeWordWrap, -} from "@docusaurus/theme-common/internal"; -import { Highlight, type Language } from "prism-react-renderer"; -import Line from "../Line"; -import CopyButton from "@theme/CodeBlock/CopyButton"; -import WordWrapButton from "@theme/CodeBlock/WordWrapButton"; -import Container from "@theme/CodeBlock/Container"; -import type { Props } from "@theme/CodeBlock/Content/String"; - -import styles from "./styles.module.css"; -import { parseCodeBlockMeta, ParseLineOptions } from "../utils"; - -// Prism languages are always lowercase -// We want to fail-safe and allow both "php" and "PHP" -// See https://github.com/facebook/docusaurus/issues/9012 -function normalizeLanguage(language: string | undefined): string | undefined { - return language?.toLowerCase(); -} - -export default function CodeBlockString({ - children, - className: blockClassName = "", - metastring, - title: titleProp, - showLineNumbers: showLineNumbersProp, - language: languageProp, -}: Props): ReactNode { - const { - prism: { defaultLanguage, magicComments }, - } = useThemeConfig(); - const language = normalizeLanguage( - languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage - ); - - const prismTheme = usePrismTheme(); - const wordWrap = useCodeWordWrap(); - - // We still parse the metastring in case we want to support more syntax in the - // future. Note that MDX doesn't strip quotes when parsing metastring: - // "title=\"xyz\"" => title: "\"xyz\"" - const title = parseCodeBlockTitle(metastring) || titleProp; - - const options:ParseLineOptions = { - metastring, - language, - magicComments, - }; - - const { lineClassNames, code } = parseLines(children, options); - const showLineNumbers = - showLineNumbersProp ?? containsLineNumbers(metastring); - - const meta = parseCodeBlockMeta(options); - - return ( - - {title &&
{title}
} -
- - {({ className, style, tokens, getLineProps, getTokenProps }) => ( -
-              
-                {tokens.map((line, i) => (
-                  
-                ))}
-              
-            
- )} -
-
- {(wordWrap.isEnabled || wordWrap.isCodeScrollable) && ( - wordWrap.toggle()} - isEnabled={wordWrap.isEnabled} - /> - )} - -
-
-
- ); -} diff --git a/src/theme/CodeBlock/Content/styles.module.css b/src/theme/CodeBlock/Content/styles.module.css deleted file mode 100644 index 3760c53..0000000 --- a/src/theme/CodeBlock/Content/styles.module.css +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -.codeBlockContent { - position: relative; - /* rtl:ignore */ - direction: ltr; - border-radius: inherit; -} - -.codeBlockTitle { - border-bottom: 1px solid var(--ifm-color-emphasis-300); - font-size: var(--ifm-code-font-size); - font-weight: 500; - padding: 0.75rem var(--ifm-pre-padding); - border-top-left-radius: inherit; - border-top-right-radius: inherit; -} - -.codeBlock { - --ifm-pre-background: var(--prism-background-color); - margin: 0; - padding: 0; -} - -.codeBlockTitle + .codeBlockContent .codeBlock { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.codeBlockStandalone { - padding: 0; -} - -.codeBlockLines { - font: inherit; - /* rtl:ignore */ - float: left; - min-width: 100%; - padding: var(--ifm-pre-padding); -} - -.codeBlockLinesWithNumbering { - display: table; - padding: var(--ifm-pre-padding) 0; -} - -@media print { - .codeBlockLines { - white-space: pre-wrap; - } -} - -.buttonGroup { - display: flex; - column-gap: 0.2rem; - position: absolute; - /* rtl:ignore */ - right: calc(var(--ifm-pre-padding) / 2); - top: calc(var(--ifm-pre-padding) / 2); -} - -.buttonGroup button { - display: flex; - align-items: center; - background: var(--prism-background-color); - color: var(--prism-color); - border: 1px solid var(--ifm-color-emphasis-300); - border-radius: var(--ifm-global-radius); - padding: 0.4rem; - line-height: 0; - transition: opacity var(--ifm-transition-fast) ease-in-out; - opacity: 0; -} - -.buttonGroup button:focus-visible, -.buttonGroup button:hover { - opacity: 1 !important; -} - -:global(.theme-code-block:hover) .buttonGroup button { - opacity: 0.4; -} diff --git a/src/theme/CodeBlock/Line/index.tsx b/src/theme/CodeBlock/Line/index.tsx deleted file mode 100644 index a175c07..0000000 --- a/src/theme/CodeBlock/Line/index.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { type ReactNode } from "react"; -import clsx from "clsx"; -import type { Props } from "@theme/CodeBlock/Line"; - -import styles from "./styles.module.css"; -import { CodeBlockMeta } from "../utils"; -import Link from "@docusaurus/Link"; - -export type ExtendedCodeLineProps = Props & { - meta: CodeBlockMeta; -}; - - -export default function CodeBlockLine({ - line, - classNames, - showLineNumbers, - getLineProps, - getTokenProps, - meta, -}: ExtendedCodeLineProps): ReactNode { - if (line.length === 1 && line[0]!.content === "\n") { - line[0]!.content = ""; - } - - const lineProps = getLineProps({ - line, - className: clsx(classNames, showLineNumbers && styles.codeLine), - }); - - const lineTokens = line.map((token, key) => { - const trimmed = token.content.trim(); - const makeLink = token.types.some((t) => t === "plain" || t === "function"); - if (makeLink) { - const link = meta.options[`link${trimmed}`.toLowerCase()]; - if (typeof link === "string") { - const index = token.content.indexOf(trimmed); - let before = token.content.substring(0, index); - let after = token.content.substring(index + trimmed.length); - return ( - <> - {before && ( - - )} - - {after && ( - - )} - - ); - } - } - - return ; - }); - - return ( - - {showLineNumbers ? ( - <> - - {lineTokens} - - ) : ( - lineTokens - )} -
-
- ); -} diff --git a/src/theme/CodeBlock/Line/styles.module.css b/src/theme/CodeBlock/Line/styles.module.css deleted file mode 100644 index 7c28ed9..0000000 --- a/src/theme/CodeBlock/Line/styles.module.css +++ /dev/null @@ -1,45 +0,0 @@ -/* Intentionally has zero specificity, so that to be able to override -the background in custom CSS file due bug https://github.com/facebook/docusaurus/issues/3678 */ -:where(:root) { - --docusaurus-highlighted-code-line-bg: rgb(72 77 91); -} - -:where([data-theme='dark']) { - --docusaurus-highlighted-code-line-bg: rgb(100 100 100); -} - -:global(.theme-code-block-highlighted-line) { - background-color: var(--docusaurus-highlighted-code-line-bg); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -.codeLine { - display: table-row; - counter-increment: line-count; -} - -.codeLineNumber { - display: table-cell; - text-align: right; - width: 1%; - position: sticky; - left: 0; - padding: 0 var(--ifm-pre-padding); - background: var(--ifm-pre-background); - overflow-wrap: normal; -} - -.codeLineNumber::before { - content: counter(line-count); - opacity: 0.4; -} - -:global(.theme-code-block-highlighted-line) .codeLineNumber::before { - opacity: 0.8; -} - -.codeLineContent { - padding-right: var(--ifm-pre-padding); -} diff --git a/src/theme/CodeBlock/utils.ts b/src/theme/CodeBlock/utils.ts deleted file mode 100644 index 5054260..0000000 --- a/src/theme/CodeBlock/utils.ts +++ /dev/null @@ -1,151 +0,0 @@ -import rangeParser from "parse-numeric-range"; -import { useThemeConfig } from "@docusaurus/theme-common"; - -type MagicCommentConfig = ReturnType< - typeof useThemeConfig ->["prism"]["magicComments"][0]; - -/** - * The supported types for {@link CodeBlockMeta.options} values. - */ -export type CodeMetaOptionValue = string | boolean | number; - -/** - * Any options as specified by the user in the "metastring" of codeblocks. - */ -export interface CodeBlockMeta { - /** - * The highlighted lines, 0-indexed. e.g. `{ 0: ["highlight", "sample"] }` - * means the 1st line should have `highlight` and `sample` as class names. - */ - readonly lineClassNames: { [lineIndex: number]: string[] }; - - /** - * The parsed options, key converted to lowercase. - * e.g. `"title" => "file.js", "showlinenumbers" => true` - */ - readonly options: { [key: string]: CodeMetaOptionValue }; -} - -// note: regexp/no-useless-non-capturing-group is a false positive -// the group is required or it breaks the correct alternation of -// | -const optionRegex = - // eslint-disable-next-line regexp/no-useless-non-capturing-group - /(?\w+)(?:=(?:(?:(?["'])(?.*?)\k)|(?\S*)))?/g; -const metastringLinesRangeRegex = /\{(?[\d,-]+)\}/g; -const highlightOptionKey = "highlight"; - -function parseCodeBlockOptions( - meta: CodeBlockMeta, - originalMetastring: string, - metastring: string, - magicComments: MagicCommentConfig[] -) { - if (metastring) { - optionRegex.lastIndex = 0; - - let match = optionRegex.exec(metastring); - - while (match) { - const { stringValue, rawValue } = match.groups!; - - const key = match.groups!.key!.toLowerCase(); - - // special highlight option - if (key === highlightOptionKey) { - if (magicComments.length === 0) { - throw new Error( - `A highlight range has been given in code block's metastring (\`\`\` ${originalMetastring}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.` - ); - } - const metastringRangeClassName = magicComments[0]!.className; - rangeParser(stringValue ?? rawValue!) - .filter((n) => n > 0) - .forEach((n) => { - meta.lineClassNames[n - 1] = [metastringRangeClassName]; - }); - } else if (stringValue === undefined && rawValue === undefined) { - // flag options - meta.options[key] = true; - } else if (stringValue !== undefined) { - // string option - meta.options[key] = stringValue; - } else if (rawValue === "true") { - // boolean option - meta.options[key] = true; - } else if (rawValue === "false") { - meta.options[key] = false; - } else { - const number = parseFloat(rawValue!); - if (!Number.isNaN(number)) { - // number value - meta.options[key] = number; - } else { - // non quoted string - meta.options[key] = rawValue!; - } - } - - match = optionRegex.exec(metastring); - } - } -} - -export type ParseLineOptions = { - /** - * The full metastring, as received from MDX. Line ranges declared here - * start at 1. Or alternatively the parsed {@link CodeBlockMeta}. - */ - metastring: string | undefined; - /** - * Language of the code block, used to determine which kinds of magic - * comment styles to enable. - */ - language: string | undefined; - /** - * Magic comment types that we should try to parse. Each entry would - * correspond to one class name to apply to each line. - */ - magicComments: MagicCommentConfig[]; -}; - -/** - * Rewrites the range syntax to special options. e.g. - * `{1,2,3-4,5} => highlight=1 highlight=2 highlight=3-4 highlight=5` - * @param metastring The input metastring with the range syntax - * @returns The string where the range syntax has been rewritten - */ -function rewriteLinesRange(metastring: string): string { - metastringLinesRangeRegex.lastIndex = 0; - - return metastring.replaceAll(metastringLinesRangeRegex, (_, range) => { - return (range as string) - .split(",") - .map((r) => `${highlightOptionKey}=${r}`) - .join(" "); - }); -} - -export function parseCodeBlockMeta(options: ParseLineOptions): CodeBlockMeta { - if (typeof options.metastring === "object") { - return options.metastring; - } - - const meta: CodeBlockMeta = { - lineClassNames: {}, - options: {}, - }; - - const { metastring, magicComments } = options; - - // exit early if nothing to do. - if (!metastring) { - return meta; - } - - const rewritten = rewriteLinesRange(metastring); - parseCodeBlockOptions(meta, metastring, rewritten, magicComments); - - return meta; -}