From ab143a6814e33dc76c924603e2eb9ef246effb2c Mon Sep 17 00:00:00 2001 From: Novus Nota <68142933+novusnota@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:22:57 +0100 Subject: [PATCH] feat: described the stack, described Tact-flavored assembly And updated the version of Starlight used --- docs/cspell.json | 3 + docs/package.json | 4 +- docs/src/content/docs/book/functions.mdx | 124 +++++-- docs/yarn.lock | 395 +++++++++++------------ 4 files changed, 285 insertions(+), 241 deletions(-) diff --git a/docs/cspell.json b/docs/cspell.json index d3df340f0..6671892be 100644 --- a/docs/cspell.json +++ b/docs/cspell.json @@ -50,6 +50,7 @@ "Stateinit", "SΓ‘nchez", "TIMELOCK", + "Tactina", "Tarjan", "Timeouted", "Toncoin", @@ -61,10 +62,12 @@ "assgn", "astrojs", "augmentedassign", + "babecafe", "basechain", "basechain", "bitcode", "bitstring", + "bitstrings", "blockstore", "bounceable", "bounceable", diff --git a/docs/package.json b/docs/package.json index 91a438685..348c768ff 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,8 +16,8 @@ "dependencies": { "@astrojs/check": "0.9.4", "@astrojs/markdown-remark": "5.3.0", - "@astrojs/starlight": "0.28.4", - "astro": "4.16.7", + "@astrojs/starlight": "0.29.2", + "astro": "4.16.14", "cspell": "^8.14.4", "hast-util-to-string": "^3.0.0", "rehype-autolink-headings": "7.1.0", diff --git a/docs/src/content/docs/book/functions.mdx b/docs/src/content/docs/book/functions.mdx index a1436e4ff..62799569c 100644 --- a/docs/src/content/docs/book/functions.mdx +++ b/docs/src/content/docs/book/functions.mdx @@ -128,44 +128,60 @@ extends mutates native loadInt(self: Slice, l: Int): Int; ::: -Assembly functions (or `asm{:tact}` functions for short) are module-level functions that allow writing [TVM][tvm] assembly directly in Tact. Unlike all other functions, their bodies consist only of [TVM instructions][tvm-instructions], and don't use any [Tact statements](/book/statements). +Assembly functions (or asm functions for short) are module-level functions that allow you to write [Tact assembly](#asm-tact). Unlike all other functions, their bodies consist only of [TVM instructions][tvm-instructions] and [some other primitives](#asm-tact), and don't use any [Tact statements](/book/statements). ```tact // all assembly functions must start with "asm" keyword // ↓ asm fun answer(): Int { 42 INT } // ------ -// Notice, that the body contains -// only of numbers, strings and TVM instructions +// Notice, that the body contains only of +// TVM instructions and some primitives, +// like numbers or bitstrings ``` -### Caveats {#asm-caveats} +### Tact assembly {#asm-tact} -[TVM instructions][tvm-instructions] are case-sensitive and are always written in upper case (capital letters). +Since [TVM][tvm] is a stack machine, writing assembly for it means manipulating the stack entries with [TVM instructions][tvm-instructions]. However, many instructions require the use of additional primitives, such as numbers or bitstrings. All needed primitives are provided in the Tact assembly, whose syntax looks familiar to Fift, but is much more minimal and comfortable to use. + +Except for comments, everything in `asm{:tact}` function bodies must be separated by spaces or newline characters. ```tact -/// ERROR! -asm fun bad1(): Cell { mycode } +asm fun theLegendOfAsmTactina() { + // String literals, useful for debug instructions + "Anything inside double-quotes that's not a double-quote" -/// ERROR! -asm fun bad2(): Cell { MyCoDe } + // Hex bitstrings with optional padding via _, + // which are represented by Slices without references + // with up to 1023 data bits + x{babecafe_} -/// πŸ‘ -asm fun good(): Cell { MYCODE } -``` + // Binary bitstrings, which are like their hex counterparts, + // but do not have the optional padding + b{0101} -It is not necessary to enclose TVM instructions in double quotes. On the contrary, they are then interpreted as strings, which is probably _not_ what you want: + // Number literals, represented by Int values on TVM + 42 -13 -```tact -// Pushes the string "MYCODE" onto the compile-time stack, -// where it gets discarded even before the compute phase starts -asm fun wrongMyCode() { "MYCODE" } + // TVM control registers + c0 // c0, c1, ..., c15 -// Invokes the TVM instruction MYCODE during the compute phase, -// which returns the contract code as a Cell -asm fun myCode(): Cell { MYCODE } + // TVM stack registers + s0 // s0, s1, ..., s255 + + // TVM instructions themselves + MYCODE // without wrapping in double-quotes "..."! +} ``` +:::caution + + The `i s()` syntax for referring to stack registers beyond the $0 - 15$ range is deprecated and recognized as an error. Whenever you see `[ii] s()` in the [TVM instructions list][tvm-instructions], use one of `s0`, `s1`, ..., `s255` instead. + +::: + +### Stack calling conventions {#asm-calling} + The syntax for parameters and return values is the same as for other function kinds, but there is one caveat β€” argument values are pushed to the stack before the function body is executed, and return values are what's left on the stack afterward. Since the bodies of `asm{:tact}` functions do not contain Tact statements, any direct references to parameters in function bodies will be recognized as [TVM][tvm] instructions, which can easily lead to very obscure error messages. @@ -210,9 +226,35 @@ asm fun sliceLoadInt(s: Slice, len: Int): Int { LDIX } // the Slice one produced by LDIX instruction ``` +### Stack registers {#asm-stack-registers} + +The so-called _stack registers_ are conventional way of referring to the values at the top of the stack. In total, there are $256$ stack registers, i.e. values held on the stack at any given time. You can refer to any of them using any of `s0`, `s1`, ..., `s255`. + +Register `s0` is the value at the top of the stack, register `s1` is the value immediately after it, and so on, until we reach the bottom of the stack, represented by `s255`, i.e. the $256$th stack register. When a value `x` is pushed onto a stack, it becomes the new `s0`. At the same time, old `s0` becomes new `s1`, old `s1` β€” new `s2`, and so on. + +```tact +asm fun takeSecond(a: Int, b: Int): Int { + // ↑ ↑ + // | Pushed last, sits on top of the stack + // Pushed first, sits second from the top of the stack + + // Now, let's swap the s0 (top of the stack) with s1 (second-to-top): + s1 XCHG0 + + // Then, let's drop the value from the top of the stack + DROP + + // At the end, we have only one value on the stack, which is b +} + +fun showcase() { + takeFirst(5, 10); // 10, i.e. b +} +``` + ### Arrangements {#asm-arrangements} -Sometimes it's useful to change the order of arguments pushed to the stack or the order of return values. You can do that with `asm{:tact}` arrangements in the following manner: +Often times it's useful to change the order of arguments pushed to the stack or the order of return values without referring to stack registers in the body. You can do that with `asm{:tact}` arrangements in the following manner: ```tact // Changing the order of arguments to match the STDICT signature: @@ -223,9 +265,11 @@ asm(c self) extends fun asmStoreDict(self: Builder, c: Cell?): Builder { STDICT // Changing the order of return values of LDVARUINT16, // capturing only the last one as the return value of the whole function asm(-> 1 0) extends mutates fun asmLoadCoins(self: Slice): Int { LDVARUINT16 } -// --- -// Notice, that return values are best thought as tuples with indexed access into them -// and not as bottom-up representation of stack values +// ↑ ↑ +// | Value of the stack register 0, +// | which is the topmost value in the stack +// Value of the stack register 1, +// which is second-to-top value in the stack // Changing the order of return values while explicitly stating // the default order of arguments as it is @@ -233,11 +277,8 @@ asm(self len -> 1 0) extends fun asmLoadInt(self: Slice, len: Int): SliceInt { L // Used to map onto values placed by LDIX on the stack in reversed order struct SliceInt { a: Slice; b: Int } -``` -Putting the above all together we get: - -```tact +// Putting the above all together we get: fun showcase() { let b = beginCell() .storeCoins(42) @@ -250,6 +291,33 @@ fun showcase() { } ``` +### Caveats {#asm-caveats} + +[TVM instructions][tvm-instructions] are case-sensitive and are always written in upper case (capital letters). + +```tact +/// ERROR! +asm fun bad1(): Cell { mycode } + +/// ERROR! +asm fun bad2(): Cell { MyCoDe } + +/// πŸ‘ +asm fun good(): Cell { MYCODE } +``` + +It is not necessary to enclose [TVM instructions][tvm-instructions] in double quotes. On the contrary, they are then interpreted as strings, which is probably _not_ what you want: + +```tact +// Pushes the string "MYCODE" onto the compile-time stack, +// where it gets discarded even before the compute phase starts +asm fun wrongMyCode() { "MYCODE" } + +// Invokes the TVM instruction MYCODE during the compute phase, +// which returns the contract code as a Cell +asm fun myCode(): Cell { MYCODE } +``` + ### Attributes {#asm-attributes} The following attributes can be specified: diff --git a/docs/yarn.lock b/docs/yarn.lock index 6ae2db214..e1b2169a8 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -138,23 +138,24 @@ stream-replace-string "^2.0.0" zod "^3.23.8" -"@astrojs/starlight@0.28.4": - version "0.28.4" - resolved "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.28.4.tgz#7919226382eb99f0d2ba608561682df15beea057" - integrity sha512-SU0vgCQCQZ6AuA84doxpGr5Aowr9L/PalddUbeDWSzkjE/YierFcvmBg78cSB0pdL0Q1v4k4l+wqhz176wHmTA== +"@astrojs/starlight@0.29.2": + version "0.29.2" + resolved "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.29.2.tgz#157b1edf8dcd7e6d13905e89b2cbe3ee1d745f7d" + integrity sha512-xv9AhWkP3fxCB6EF6MlT4yEbxzye3aMSbuVbFEGbQh8G/w1MPhdNCnQakIHpmIwwyxwG9cW3mQdAZum4oOO39w== dependencies: "@astrojs/mdx" "^3.1.3" "@astrojs/sitemap" "^3.1.6" "@pagefind/default-ui" "^1.0.3" "@types/hast" "^3.0.4" "@types/mdast" "^4.0.4" - astro-expressive-code "^0.35.6" + astro-expressive-code "^0.38.3" bcp-47 "^2.1.0" hast-util-from-html "^2.0.1" hast-util-select "^6.0.2" hast-util-to-string "^3.0.0" hastscript "^9.0.0" i18next "^23.11.5" + js-yaml "^4.1.0" mdast-util-directive "^3.0.0" mdast-util-to-markdown "^2.1.0" mdast-util-to-string "^4.0.0" @@ -186,14 +187,6 @@ dependencies: yaml "^2.5.0" -"@babel/code-frame@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" - integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== - dependencies: - "@babel/highlight" "^7.25.7" - picocolors "^1.0.0" - "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz#9374b5cd068d128dac0b94ff482594273b1c2815" @@ -208,7 +201,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz#f02ba6d34e88fadd5e8861e8b38902f43cc1c819" integrity sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA== -"@babel/core@^7.25.8": +"@babel/core@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== @@ -229,16 +222,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" - integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== - dependencies: - "@babel/types" "^7.25.7" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - "@babel/generator@^7.25.9", "@babel/generator@^7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz#505cc7c90d92513f458a477e5ef0703e7c91b8d7" @@ -250,12 +233,12 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz#63f02dbfa1f7cb75a9bdb832f300582f30bb8972" - integrity sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA== +"@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: - "@babel/types" "^7.25.7" + "@babel/types" "^7.25.9" "@babel/helper-compilation-targets@^7.25.9": version "7.25.9" @@ -268,14 +251,6 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-module-imports@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" - integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - "@babel/helper-module-imports@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" @@ -293,10 +268,10 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-plugin-utils@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" - integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== +"@babel/helper-plugin-utils@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== "@babel/helper-string-parser@^7.25.7": version "7.25.7" @@ -331,16 +306,6 @@ "@babel/template" "^7.25.9" "@babel/types" "^7.26.0" -"@babel/highlight@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" - integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== - dependencies: - "@babel/helper-validator-identifier" "^7.25.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.4": version "7.25.6" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz" @@ -348,13 +313,6 @@ dependencies: "@babel/types" "^7.25.6" -"@babel/parser@^7.25.7": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2" - integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ== - dependencies: - "@babel/types" "^7.25.8" - "@babel/parser@^7.25.9", "@babel/parser@^7.26.0": version "7.26.1" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz#44e02499960df2cdce2c456372a3e8e0c3c5c975" @@ -362,23 +320,23 @@ dependencies: "@babel/types" "^7.26.0" -"@babel/plugin-syntax-jsx@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz#5352d398d11ea5e7ef330c854dea1dae0bf18165" - integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw== +"@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz#f5e2af6020a562fe048dd343e571c4428e6c5632" - integrity sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q== +"@babel/plugin-transform-react-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-module-imports" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-jsx" "^7.25.7" - "@babel/types" "^7.25.7" + "@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/runtime@^7.23.2": version "7.25.6" @@ -387,15 +345,6 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" - integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== - dependencies: - "@babel/code-frame" "^7.25.7" - "@babel/parser" "^7.25.7" - "@babel/types" "^7.25.7" - "@babel/template@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" @@ -405,19 +354,6 @@ "@babel/parser" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/traverse@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" - integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== - dependencies: - "@babel/code-frame" "^7.25.7" - "@babel/generator" "^7.25.7" - "@babel/parser" "^7.25.7" - "@babel/template" "^7.25.7" - "@babel/types" "^7.25.7" - debug "^4.3.1" - globals "^11.1.0" - "@babel/traverse@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" @@ -431,7 +367,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.4", "@babel/types@^7.25.6", "@babel/types@^7.25.7", "@babel/types@^7.25.8": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.4", "@babel/types@^7.25.6": version "7.25.8" resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1" integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg== @@ -1001,10 +937,10 @@ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz" integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== -"@expressive-code/core@^0.35.6": - version "0.35.6" - resolved "https://registry.npmjs.org/@expressive-code/core/-/core-0.35.6.tgz" - integrity sha512-xGqCkmfkgT7lr/rvmfnYdDSeTdCSp1otAHgoFS6wNEeO7wGDPpxdosVqYiIcQ8CfWUABh/pGqWG90q+MV3824A== +"@expressive-code/core@^0.38.3": + version "0.38.3" + resolved "https://registry.npmjs.org/@expressive-code/core/-/core-0.38.3.tgz#e5ae46ba527846370c862c534792c2f98b51f760" + integrity sha512-s0/OtdRpBONwcn23O8nVwDNQqpBGKscysejkeBkwlIeHRLZWgiTVrusT5Idrdz1d8cW5wRk9iGsAIQmwDPXgJg== dependencies: "@ctrl/tinycolor" "^4.0.4" hast-util-select "^6.0.2" @@ -1016,27 +952,27 @@ unist-util-visit "^5.0.0" unist-util-visit-parents "^6.0.1" -"@expressive-code/plugin-frames@^0.35.6": - version "0.35.6" - resolved "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.35.6.tgz" - integrity sha512-CqjSWjDJ3wabMJZfL9ZAzH5UAGKg7KWsf1TBzr4xvUbZvWoBtLA/TboBML0U1Ls8h/4TRCIvR4VEb8dv5+QG3w== +"@expressive-code/plugin-frames@^0.38.3": + version "0.38.3" + resolved "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.38.3.tgz#c0ddc5f3aa170e8009aecce508e91a10366b8203" + integrity sha512-qL2oC6FplmHNQfZ8ZkTR64/wKo9x0c8uP2WDftR/ydwN/yhe1ed7ZWYb8r3dezxsls+tDokCnN4zYR594jbpvg== dependencies: - "@expressive-code/core" "^0.35.6" + "@expressive-code/core" "^0.38.3" -"@expressive-code/plugin-shiki@^0.35.6": - version "0.35.6" - resolved "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.35.6.tgz" - integrity sha512-xm+hzi9BsmhkDUGuyAWIydOAWer7Cs9cj8FM0t4HXaQ+qCubprT6wJZSKUxuvFJIUsIOqk1xXFaJzGJGnWtKMg== +"@expressive-code/plugin-shiki@^0.38.3": + version "0.38.3" + resolved "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.38.3.tgz#07186d1f76fccf9fcd288ee64990fc065586a382" + integrity sha512-kqHnglZeesqG3UKrb6e9Fq5W36AZ05Y9tCREmSN2lw8LVTqENIeCIkLDdWtQ5VoHlKqwUEQFTVlRehdwoY7Gmw== dependencies: - "@expressive-code/core" "^0.35.6" - shiki "^1.1.7" + "@expressive-code/core" "^0.38.3" + shiki "^1.22.2" -"@expressive-code/plugin-text-markers@^0.35.6": - version "0.35.6" - resolved "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.35.6.tgz" - integrity sha512-/k9eWVZSCs+uEKHR++22Uu6eIbHWEciVHbIuD8frT8DlqTtHYaaiwHPncO6KFWnGDz5i/gL7oyl6XmOi/E6GVg== +"@expressive-code/plugin-text-markers@^0.38.3": + version "0.38.3" + resolved "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.38.3.tgz#86dadb812df4bc8ebb35dd748ad3dd9fdccc1a3d" + integrity sha512-dPK3+BVGTbTmGQGU3Fkj3jZ3OltWUAlxetMHI6limUGCWBCucZiwoZeFM/WmqQa71GyKRzhBT+iEov6kkz2xVA== dependencies: - "@expressive-code/core" "^0.35.6" + "@expressive-code/core" "^0.38.3" "@img/sharp-darwin-arm64@0.33.5": version "0.33.5" @@ -1268,14 +1204,14 @@ resolved "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.1.1.tgz" integrity sha512-b7/qPqgIl+lMzkQ8fJt51SfguB396xbIIR+VZ3YrL2tLuyifDJ1wL5mEm+ddmHxJ2Fki340paPcDan9en5OmAw== -"@rollup/pluginutils@^5.1.2": - version "5.1.2" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz#d3bc9f0fea4fd4086aaac6aa102f3fa587ce8bd9" - integrity sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw== +"@rollup/pluginutils@^5.1.3": + version "5.1.3" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz#3001bf1a03f3ad24457591f2c259c8e514e0dbdf" + integrity sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" - picomatch "^2.3.1" + picomatch "^4.0.2" "@rollup/rollup-android-arm-eabi@4.24.0": version "4.24.0" @@ -1369,6 +1305,18 @@ "@types/hast" "^3.0.4" hast-util-to-html "^9.0.3" +"@shikijs/core@1.23.1": + version "1.23.1" + resolved "https://registry.npmjs.org/@shikijs/core/-/core-1.23.1.tgz#911473e672e4f2d15ca36b28b28179c0959aa7af" + integrity sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA== + dependencies: + "@shikijs/engine-javascript" "1.23.1" + "@shikijs/engine-oniguruma" "1.23.1" + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + "@types/hast" "^3.0.4" + hast-util-to-html "^9.0.3" + "@shikijs/engine-javascript@1.22.0": version "1.22.0" resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.0.tgz#2e5db29f0421755492f5279f8224ef7a7f907a29" @@ -1378,6 +1326,15 @@ "@shikijs/vscode-textmate" "^9.3.0" oniguruma-to-js "0.4.3" +"@shikijs/engine-javascript@1.23.1": + version "1.23.1" + resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.23.1.tgz#0f634bea22cb14f471835b7b5f1da66bc34bd359" + integrity sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg== + dependencies: + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + oniguruma-to-es "0.4.1" + "@shikijs/engine-oniguruma@1.22.0": version "1.22.0" resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.0.tgz#74c661fac4cd1f08f2c09b5d6e2fd2a6720d0401" @@ -1386,6 +1343,14 @@ "@shikijs/types" "1.22.0" "@shikijs/vscode-textmate" "^9.3.0" +"@shikijs/engine-oniguruma@1.23.1": + version "1.23.1" + resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.23.1.tgz#c6c34c9152cf90c1ee75fcdbd124253c8ad0635f" + integrity sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ== + dependencies: + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + "@shikijs/types@1.22.0": version "1.22.0" resolved "https://registry.npmjs.org/@shikijs/types/-/types-1.22.0.tgz#d2a572381395c9308b472c8199b8e0289753b9ad" @@ -1394,6 +1359,14 @@ "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" +"@shikijs/types@1.23.1": + version "1.23.1" + resolved "https://registry.npmjs.org/@shikijs/types/-/types-1.23.1.tgz#2386d49258be03e7b40fea1f28fda952739ad93d" + integrity sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g== + dependencies: + "@shikijs/vscode-textmate" "^9.3.0" + "@types/hast" "^3.0.4" + "@shikijs/vscode-textmate@^9.3.0": version "9.3.0" resolved "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz#b2f1776e488c1d6c2b6cd129bab62f71bbc9c7ab" @@ -1621,7 +1594,7 @@ acorn@^8.0.0, acorn@^8.12.1: resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== -acorn@^8.13.0: +acorn@^8.14.0: version "8.14.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -1653,13 +1626,6 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -1709,30 +1675,30 @@ astring@^1.8.0: resolved "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz" integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== -astro-expressive-code@^0.35.6: - version "0.35.6" - resolved "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.35.6.tgz" - integrity sha512-1U4KrvFuodaCV3z4I1bIR16SdhQlPkolGsYTtiANxPZUVv/KitGSCTjzksrkPonn1XuwVqvnwmUUVzTLWngnBA== +astro-expressive-code@^0.38.3: + version "0.38.3" + resolved "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.38.3.tgz#121d852aeeea70699c802ae42bcfa9940d427f2c" + integrity sha512-Tvdc7RV0G92BbtyEOsfJtXU35w41CkM94fOAzxbQP67Wj5jArfserJ321FO4XA7WG9QMV0GIBmQq77NBIRDzpQ== dependencies: - rehype-expressive-code "^0.35.6" + rehype-expressive-code "^0.38.3" -astro@4.16.7: - version "4.16.7" - resolved "https://registry.npmjs.org/astro/-/astro-4.16.7.tgz#7896148d638dab4e7f0e5eec8816a446c1178e3e" - integrity sha512-nON+8MUEkWTFwXbS4zsQIq4t0Fs42eulM4x236AL+qNnWfqNAOOqAnFxO1dxfJ1q+XopIBbbT9Mtev+0zH47PQ== +astro@4.16.14: + version "4.16.14" + resolved "https://registry.npmjs.org/astro/-/astro-4.16.14.tgz#a3c1a4f6e904d9b28229ea903c9e125449a89e9d" + integrity sha512-2IuLkIp4idyspugq+F52rHZyNqHHi2AdQzuKp3SGytg/YAm50dNeWhP/7l+enjgWZLloLq5xsH5gVQpoDFoyFg== dependencies: "@astrojs/compiler" "^2.10.3" "@astrojs/internal-helpers" "0.4.1" "@astrojs/markdown-remark" "5.3.0" "@astrojs/telemetry" "3.1.0" - "@babel/core" "^7.25.8" - "@babel/plugin-transform-react-jsx" "^7.25.7" - "@babel/types" "^7.25.8" + "@babel/core" "^7.26.0" + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/types" "^7.26.0" "@oslojs/encoding" "^1.1.0" - "@rollup/pluginutils" "^5.1.2" + "@rollup/pluginutils" "^5.1.3" "@types/babel__core" "^7.20.5" "@types/cookie" "^0.6.0" - acorn "^8.13.0" + acorn "^8.14.0" aria-query "^5.3.2" axobject-query "^4.1.0" boxen "8.0.1" @@ -1763,25 +1729,25 @@ astro@4.16.7: micromatch "^4.0.8" mrmime "^2.0.0" neotraverse "^0.6.18" - ora "^8.1.0" + ora "^8.1.1" p-limit "^6.1.0" p-queue "^8.0.1" preferred-pm "^4.0.0" prompts "^2.4.2" rehype "^13.0.2" semver "^7.6.3" - shiki "^1.22.0" + shiki "^1.22.2" tinyexec "^0.3.1" tsconfck "^3.1.4" unist-util-visit "^5.0.0" vfile "^6.0.3" - vite "^5.4.9" + vite "^5.4.10" vitefu "^1.0.3" which-pm "^3.0.0" xxhash-wasm "^1.0.2" yargs-parser "^21.1.1" zod "^3.23.8" - zod-to-json-schema "^3.23.3" + zod-to-json-schema "^3.23.5" zod-to-ts "^1.2.0" optionalDependencies: sharp "^0.33.3" @@ -1939,15 +1905,6 @@ chalk-template@^1.1.0: dependencies: chalk "^5.2.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^5.2.0, chalk@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" @@ -2034,13 +1991,6 @@ collapse-white-space@^2.0.0: resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz" integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" @@ -2048,11 +1998,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" @@ -2335,6 +2280,11 @@ emmet@^2.4.3: "@emmetio/abbreviation" "^2.3.3" "@emmetio/css-abbreviation" "^2.1.8" +emoji-regex-xs@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" + integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== + emoji-regex@^10.3.0: version "10.4.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" @@ -2401,11 +2351,6 @@ escalade@^3.1.1, escalade@^3.1.2: resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" @@ -2477,15 +2422,15 @@ expand-template@^2.0.3: resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expressive-code@^0.35.6: - version "0.35.6" - resolved "https://registry.npmjs.org/expressive-code/-/expressive-code-0.35.6.tgz" - integrity sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g== +expressive-code@^0.38.3: + version "0.38.3" + resolved "https://registry.npmjs.org/expressive-code/-/expressive-code-0.38.3.tgz#9ac4e24e4ad83fe0df67b001faf0834b3d4e56ef" + integrity sha512-COM04AiUotHCKJgWdn7NtW2lqu8OW8owAidMpkXt1qxrZ9Q2iC7+tok/1qIn2ocGnczvr9paIySgGnEwFeEQ8Q== dependencies: - "@expressive-code/core" "^0.35.6" - "@expressive-code/plugin-frames" "^0.35.6" - "@expressive-code/plugin-shiki" "^0.35.6" - "@expressive-code/plugin-text-markers" "^0.35.6" + "@expressive-code/core" "^0.38.3" + "@expressive-code/plugin-frames" "^0.38.3" + "@expressive-code/plugin-shiki" "^0.38.3" + "@expressive-code/plugin-text-markers" "^0.38.3" extend-shallow@^2.0.1: version "2.0.1" @@ -2674,11 +2619,6 @@ gray-matter@^4.0.3: section-matter "^1.0.0" strip-bom-string "^1.0.0" -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-own-prop@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz" @@ -4048,6 +3988,15 @@ onetime@^7.0.0: dependencies: mimic-function "^5.0.0" +oniguruma-to-es@0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.4.1.tgz#112fbcd5fafe4f635983425a6db88f3e2de37107" + integrity sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ== + dependencies: + emoji-regex-xs "^1.0.0" + regex "^5.0.0" + regex-recursion "^4.2.1" + oniguruma-to-js@0.4.3: version "0.4.3" resolved "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz" @@ -4055,10 +4004,10 @@ oniguruma-to-js@0.4.3: dependencies: regex "^4.3.2" -ora@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/ora/-/ora-8.1.0.tgz" - integrity sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ== +ora@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/ora/-/ora-8.1.1.tgz#8efc8865e44c87e4b55468a47e80a03e678b0e54" + integrity sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw== dependencies: chalk "^5.3.0" cli-cursor "^5.0.0" @@ -4191,7 +4140,7 @@ picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz" integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== -picomatch@4.0.2: +picomatch@4.0.2, picomatch@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== @@ -4334,11 +4283,30 @@ regenerator-runtime@^0.14.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== +regex-recursion@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.2.1.tgz#024ee28593b8158e568307b99bf1b7a3d5ea31e9" + integrity sha512-QHNZyZAeKdndD1G3bKAbBEKOSSK4KOHQrAJ01N1LJeb0SoH4DJIeFhp0uUpETgONifS4+P3sOgoA1dhzgrQvhA== + dependencies: + regex-utilities "^2.3.0" + +regex-utilities@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz#87163512a15dce2908cf079c8960d5158ff43280" + integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== + regex@^4.3.2: version "4.3.2" resolved "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz" integrity sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw== +regex@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/regex/-/regex-5.0.2.tgz#291d960467e6499a79ceec022d20a4e0df67c54f" + integrity sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ== + dependencies: + regex-utilities "^2.3.0" + rehype-autolink-headings@7.1.0: version "7.1.0" resolved "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz" @@ -4351,12 +4319,12 @@ rehype-autolink-headings@7.1.0: unified "^11.0.0" unist-util-visit "^5.0.0" -rehype-expressive-code@^0.35.6: - version "0.35.6" - resolved "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.35.6.tgz" - integrity sha512-pPdE+pRcRw01kxMOwHQjuRxgwlblZt5+wAc3w2aPGgmcnn57wYjn07iKO7zaznDxYVxMYVvYlnL+R3vWFQS4Gw== +rehype-expressive-code@^0.38.3: + version "0.38.3" + resolved "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.38.3.tgz#53d9933b1d5f579b36cb38c34b7368c0cf4f133e" + integrity sha512-RYSSDkMBikoTbycZPkcWp6ELneANT4eTpND1DSRJ6nI2eVFUwTBDCvE2vO6jOOTaavwnPiydi4i/87NRyjpdOA== dependencies: - expressive-code "^0.35.6" + expressive-code "^0.38.3" rehype-format@^5.0.0: version "5.0.1" @@ -4712,7 +4680,7 @@ sharp@^0.33.3: "@img/sharp-win32-ia32" "0.33.5" "@img/sharp-win32-x64" "0.33.5" -shiki@^1.1.7, shiki@^1.10.3, shiki@^1.22.0: +shiki@^1.10.3, shiki@^1.22.0: version "1.22.0" resolved "https://registry.npmjs.org/shiki/-/shiki-1.22.0.tgz#45d1dfff0e03a598af70e2ec8592f14ef07827b4" integrity sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw== @@ -4724,6 +4692,18 @@ shiki@^1.1.7, shiki@^1.10.3, shiki@^1.22.0: "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" +shiki@^1.22.2: + version "1.23.1" + resolved "https://registry.npmjs.org/shiki/-/shiki-1.23.1.tgz#02f149e8f2592509e701f3a806fd4f3dd64d17e9" + integrity sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig== + dependencies: + "@shikijs/core" "1.23.1" + "@shikijs/engine-javascript" "1.23.1" + "@shikijs/engine-oniguruma" "1.23.1" + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + "@types/hast" "^3.0.4" + signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" @@ -4897,13 +4877,6 @@ style-to-object@^1.0.0: dependencies: inline-style-parser "0.2.4" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" @@ -5149,10 +5122,10 @@ vfile@^6.0.0, vfile@^6.0.2, vfile@^6.0.3: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -vite@^5.4.9: - version "5.4.10" - resolved "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18" - integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ== +vite@^5.4.10: + version "5.4.11" + resolved "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz#3b415cd4aed781a356c1de5a9ebafb837715f6e5" + integrity sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q== dependencies: esbuild "^0.21.3" postcss "^8.4.43" @@ -5446,10 +5419,10 @@ yocto-queue@^1.1.1: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz" integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== -zod-to-json-schema@^3.23.3: - version "3.23.3" - resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.3.tgz#56cf4e0bd5c4096ab46e63159e20998ec7b19c39" - integrity sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog== +zod-to-json-schema@^3.23.5: + version "3.23.5" + resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.5.tgz#ec23def47dcafe3a4d640eba6a346b34f9a693a5" + integrity sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA== zod-to-ts@^1.2.0: version "1.2.0"