From fff99b6522ace73eeaf115b6353832ef30b0bd3d Mon Sep 17 00:00:00 2001 From: ZhymabekRoman Date: Mon, 18 Nov 2024 20:13:01 +0500 Subject: [PATCH] feat: new markdown compiler & shiki syntax hightlighting & copy code button --- new-web/bun.lockb | Bin 96873 -> 115788 bytes new-web/package.json | 7 +- new-web/src/app.css | 96 +++++ .../lib/components/ui/sonner/sonner.svelte | 23 +- new-web/src/lib/elements/ArticlePage.svelte | 328 +++++++++++++----- new-web/src/lib/elements/ReportProblem.svelte | 4 +- new-web/src/lib/test/blog01.md | 67 ++++ new-web/svelte.config.js | 60 +++- 8 files changed, 472 insertions(+), 113 deletions(-) create mode 100644 new-web/src/lib/test/blog01.md diff --git a/new-web/bun.lockb b/new-web/bun.lockb index 57046fa71b3b1bb707686404512ef90d8d296897..cbfca21655f8bc698b89a1bcdde6dab33ecc012a 100755 GIT binary patch delta 28374 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 z zoak*wZycoLU;=7tmG`)h^_Jbj$sTxMRGPEsJlS!a?4t)Mv_c?7b}=Wr^Fa!x9#tee zor8lPJ$d*Uk0k6~ROp}E`l;R%?IZiBlidM98VzBrcmMm&)BjI;?;liv+8+-`d9EZ$ z?&f6IK0;HgXAzDMReqAHlVo3YvR@#iNK;StW+!_Ns!q9KFFZ*U%g&CF;x88Zhp7j( zUs$4k%)a7}r=INSPxh$;8omyklUAG1hy1}OVol2TBS>@HCD%!CwCH@)JY zjS3fj!r?;pmQ<}m1yX2Bk^LzlMH-H>J3!g#P*C>WgcPWa`HyW8;^ldks>oQIYHyt2*UFasP?5zm?I$Pgr%Kza{-G zMRxlrd)Pu5Y0DYxEWG$FmVIzlr^v1&WiMTyN@*%O@TyLd{YuI%yu=i~OFhmm?UP+7 z?>qlIjz7^V(jDv5GU@m%yYoV2v=#^RnQ9zJ{e!Vseqvw0&y7LcAaKuW)BNcYG;yvzs<9gf>d)a}d z&9;ThBg)*LLHl4I;TT!$!7r+Z!=dc@a(VYgrx(mRvlBV|vCd-)fXs9CP{%b7KD_=v z<;1kXqqdMEK$*~t&qhwrt)TXteUO*XS**aqo#V1M|1(LK9c&tzX_{^0zCKo+gYyyH2Oh57gYS4RV}Er@Lm%F!0m{lw zJNGM|L^i#zY+ap0cI$b0+>nm`b1EyUQ+oRFqfypgb_AMe`9@ve!Qw@AjzS-P9Z8p6 zhaP@W>@a$1Usj!?44O4WUo5oq+i~`OQe1V)79ai{m6hF*npm~Jzi>^#57jwtqAcx7 zD?6se=R~+Is7`t5!*?-9&(`zhhnREil^0v^tIW9z_Ogdf|A?ioqsN)qqKE038N+8{ z5Wmm@ZIOL)t~Y7?%cQBxy@fF#Jg3YL;(Itj=1edC5#^MCVrF{oKdjEPx!VA`S;>vTbfvC67&ONgPk2elV206>JY`FC+LeV*gmwzOfoH>Rws?8) zNlOSPmVfTAYy5m$yos37mfwO(l(XCN4{W(EL9!>+2R)NU_4vwt3@StC`GjJTXeTa5 zjSjx*b|Jp&kE)9oEqk$Vo3vGTQMw>>%5&1OEi+K`tG{M`;J; z&4E3iJjsRxI>+K*CA&+VU^*Z@eLS~7knN8*JBpAFe7HTVBs*qZQTM{T_wCLHR@eTz z1D}l?N>xXGvOQ{>(vja|k6|<@lCRqc+PFpuzf2TIMDeW~K?~XQYV6)8ss+~`yF(In z5r&QIi#4X_xvufgkKCxP<3cBX8p`&Ny|XSWe3#XHkzE@D!8+7gvOm_h>D;<(=l1k! zr3LJU-DXy2@m0gi*P~MR_xrkB$&Eq`o$eNQ=GQquY6WJ3B94tmNTCNhf8%ElJv&+$D7l{yV}Y3FT7F<-wDS`h;VFp5 z)neo{M$SggH=68IJJSma=>S)x^nis>zo6MCbe1NpWGj2w|7{$%;Bv=5 zzo9WCEiZBo*@5k&3HMJ!`9Zsl)LvgV$wKW1VV9u~%fFTKH)y#hC%l~hzwy67{E%0A*amHh@s z?i&v3z*`{W@;n3vcHzIWjQf$v-t86hC)_w&{*WsdsGOkY-$0zb z?522TlRqMQXD`H*rDc-NbK$7g#WvPT@h z)PwU>#>R=g3Goj+I7j7*IKHkY7ho&9PaZw9BChs6$5JI1-Ctaf_?8}McaA4#OEpYG zX5)3qIML%;r{j-$a&39jW}Kh?3C0Dj_v1ra9OFjTdzY7xmOdgaGdZ&VnWj>#=E; zk$~14{$2C7>Fcx&Hb4Nq#P9s_NV@9RC4D|jm%Vy#Ihb8%e%FRMK5fPPm-~)d8ne>T zCKNo?H`c0ez4sP@{jYUEgef8ph7Rf-QPA?@|E&T)({J*)HXYb%>xEb7X06kbvNGYg z+*g*&J9%?%_Vkkj{yB(*%-kVaIdFdNos^Yb=$)9KmzR~vM|yKE{LLuNZcYYQo1YlS z^+CXJ>l1J8jf(F$jI-N%C6M#0*Hif6;-94Wdi(xsx;HjpoO$w6itukpa4rPepqN@qR71CN2I+W61)aYK(Uv|8rli32z$8)pnxta$efa0&CbQ zKQk>ik00yLIhzYX1;aNbKPNvUp(;V> z{#5=}6n;_pdnB|G61_-|& zUp~OUtUxmsveLZ^@K1SoV?oHEf8`}3xoWAPx@aZJ%SpqK98&0wbh1HiYF=J;ZcF}N z6xYyPe8Y;G#egswiqkl!#E*+1)5no8v@|)BQn6$u!GHm2YwmD*DWib8Y^KWTD1SmlTqC$2iUvKWcwyBoz5L(i<SfrEEvoduVX-PR*83{SV#7@dh$b_+rbl&+nY3P9r?{usRxxzZtSX%wE za*-n|Q(U`*)x97MQG#8Zg;%>!OQ7C#uogyv$Y$tra})R*{kTT$Yeb~b(EA%N^iBXZ zphhLtorr(lMbJQ~G2&mdK=Qw)*Ic~Kgq&3+uzU;aYtI@2goak-sBXKr@XGrGh0{c{ ziB=Oz(l&@uCM+$%ABvR{X|DcL64_H&O&x0FNc*4!{;ifEVMl6KBa>{hzYCXRy;}$c z?5aB)`KlRjG6gN-`hOWLDDf|;;vPo^`XE!)WcVOnmq~lp2a&4W!i>Z$VHxuOAW2A} zrRbCK!umih_^_B*&Bw*W_^M((K9E|a^~WWvl2DjFEcv*}v@;4r;6q)-@eBE}O#zFjkN6?A>?J4ZC^zjZE z6E6u`1o2)Ocw-jeC#(QYe_K0H=5M?pnA+2(#&r02EkUt=O&7$_af>%^!8NW$zd#I6 u&oBj%h~aTk(~3^Un02)0sjjg|5k(m delta 16906 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"); + } + + & .success { + display: none; + background-image: url("data:image/svg+xml;utf8,"); + } + + &.copied { + & .success { + display: block; + } + + & .ready { + display: none; + } + } +} diff --git a/new-web/src/lib/components/ui/sonner/sonner.svelte b/new-web/src/lib/components/ui/sonner/sonner.svelte index 7d5b2f1..dcff20b 100644 --- a/new-web/src/lib/components/ui/sonner/sonner.svelte +++ b/new-web/src/lib/components/ui/sonner/sonner.svelte @@ -1,8 +1,16 @@ diff --git a/new-web/src/lib/elements/ArticlePage.svelte b/new-web/src/lib/elements/ArticlePage.svelte index b78f40e..d07b5b6 100644 --- a/new-web/src/lib/elements/ArticlePage.svelte +++ b/new-web/src/lib/elements/ArticlePage.svelte @@ -1,10 +1,10 @@ @@ -89,76 +57,244 @@ Stay tuned for more exciting updates as we continue to revolutionize the world o
-
- {#if data.postImage} - - {/if} -
-

{formatDate(data.date)}

-

{data.title}

-
- -
-

{data.author.name}

-

{data.author.role}

+
+ {#if !contentLoaded} + +
+ + +
+ +
+ + +
-
- -
-
- {#if contentLoaded} - - {:else} -

Loading content...

- {/if} +
+
+ + + +
-
+ {:else} + {#if data.postImage} + + {/if} +
+

{formatDate(data.date)}

+

{data.title}

+
+ +
+

{data.author.name}

+

{data.author.role}

+
+
+
+ +
+
+ {#if contentLoaded} + {#if compiledContent} + + {:else} +

Error loading content

+ {/if} + {:else} +

Loading content...

+ {/if} +
+
+ {/if}
diff --git a/new-web/src/lib/elements/ReportProblem.svelte b/new-web/src/lib/elements/ReportProblem.svelte index a54f2e2..b76ad60 100644 --- a/new-web/src/lib/elements/ReportProblem.svelte +++ b/new-web/src/lib/elements/ReportProblem.svelte @@ -43,7 +43,7 @@ possible.

-
+
Problem Type @@ -111,7 +111,7 @@
-
+
Problem Type diff --git a/new-web/src/lib/test/blog01.md b/new-web/src/lib/test/blog01.md new file mode 100644 index 0000000..33eb71b --- /dev/null +++ b/new-web/src/lib/test/blog01.md @@ -0,0 +1,67 @@ +# V7 Is Here! 🚀 + +> "The best file upload solution just got even better!" - _Tech Weekly_ + +This release has been an absurd amount of work. So proud of the team and what we've built. Huge thanks to [Julius](https://github.com/julius) and [Mark](https://github.com/mark) for making this happen. + +--- + +It is so, so hard to not go straight into the nerdy details, but the whole point of UploadThing is that you don't need to know ANY of those details. With that in mind, here's what's relevant for most y'all: + +- UploadThing is now _way_ faster +- Uploads can be **paused** and _resumed_ seamlessly +- ~~Old limitations removed~~ +- More details... + +## Performance Comparison + +| Feature | V6 | V7 | +| ------------------ | ------ | --------- | +| Upload Speed | 10MB/s | 50MB/s | +| Concurrent Uploads | 100 | Unlimited | +| Max File Size | 2GB | 10GB | + +## Revolutionary Features + +We've completely overhauled our backend infrastructure to bring you unparalleled performance. Our new distributed processing system can handle millions of concurrent uploads without breaking a sweat. + +### Code Example + +```typescript +import { createUploadthing } from 'uploadthing/next'; + +const f = createUploadthing(); + +export const ourFileRouter = { + imageUploader: f({ image: { maxFileSize: '4MB' } }) + .middleware(async () => { + return { userId: 1234 }; + }) + .onUploadComplete(async ({ metadata, file }) => { + console.log('Upload complete for userId:', metadata.userId); + }) +}; +``` + +![Upload Dashboard](https://example.com/dashboard.png) + +### AI-Powered Optimization + +UploadThing now leverages cutting-edge machine learning algorithms to optimize your uploads in real-time. + +
+Technical Details + +- Uses TensorFlow.js for client-side optimizations +- Implements WebAssembly for performance +- Leverages Web Workers for background processing + +
+ +--- + +_For more information, visit our [documentation](https://docs.uploadthing.com)._ + +```js +console.log('Hello, world!'); +``` diff --git a/new-web/svelte.config.js b/new-web/svelte.config.js index 4a82086..58dafd3 100644 --- a/new-web/svelte.config.js +++ b/new-web/svelte.config.js @@ -1,16 +1,64 @@ +import { mdsvex, escapeSvelte } from 'mdsvex'; +import { createHighlighter } from 'shiki'; import adapter from '@sveltejs/adapter-auto'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; +import { h } from 'hastscript'; + +export function addCopyButton(options = {}) { + const toggleMs = options.toggle || 3000; + + return { + name: 'shiki-transformer-copy-button', + pre(node) { + const button = h( + 'button', + { + class: 'copy', + 'data-code': this.source, + onclick: ` + navigator.clipboard.writeText(this.dataset.code); + this.classList.add('copied'); + setTimeout(() => this.classList.remove('copied'), ${toggleMs}); + window.dispatchEvent(new CustomEvent('toast', { detail: { message: 'Copied to clipboard' } })); + ` + }, + [h('span', { class: 'ready' }), h('span', { class: 'success' })] + ); + + node.children.push(button); + } + }; +} + +/** @type {import('mdsvex').MdsvexOptions} */ +const mdsvexOptions = { + extensions: ['.md'], + highlight: { + highlighter: async (code, lang = 'text') => { + const highlighter = await createHighlighter({ + themes: ['poimandres'], + langs: ['javascript', 'typescript'] + }); + await highlighter.loadLanguage('javascript', 'typescript'); + const html = escapeSvelte( + highlighter.codeToHtml(code, { + lang, + theme: 'poimandres', + transformers: [addCopyButton({ toggle: 1200 })] + }) + ); + return `{@html \`${html}\` }`; + } + } +}; + /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), + extensions: ['.svelte', '.md'], + preprocess: [vitePreprocess(), mdsvex(mdsvexOptions)], kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. - // If your environment is not supported, or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. adapter: adapter() } };