loopwind 0.23.0 → 0.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -117
- package/dist/cli.js +16 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +6 -10
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/agent.d.ts +8 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +101 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/render.d.ts.map +1 -1
- package/dist/commands/render.js +17 -19
- package/dist/commands/render.js.map +1 -1
- package/dist/default-templates/AGENTS.md +10 -24
- package/dist/lib/config.d.ts +2 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +4 -9
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -3
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -4
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/installer.d.ts +2 -0
- package/dist/lib/installer.d.ts.map +1 -1
- package/dist/lib/installer.js +6 -7
- package/dist/lib/installer.js.map +1 -1
- package/dist/lib/renderer.d.ts.map +1 -1
- package/dist/lib/renderer.js +4 -1
- package/dist/lib/renderer.js.map +1 -1
- package/dist/lib/utils.d.ts +13 -29
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +45 -155
- package/dist/lib/utils.js.map +1 -1
- package/dist/types/config.d.ts +0 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/package.json +1 -15
- package/REGISTRY_SETUP.md +0 -363
- package/dist/default-templates/image/template.d.ts +0 -20
- package/dist/default-templates/image/template.d.ts.map +0 -1
- package/dist/default-templates/image/template.js +0 -18
- package/dist/default-templates/image/template.js.map +0 -1
- package/dist/default-templates/image/template.tsx +0 -20
- package/dist/default-templates/kitchen-sink/template.tsx +0 -64
- package/dist/default-templates/page/template.tsx +0 -37
- package/dist/default-templates/video/template.d.ts +0 -26
- package/dist/default-templates/video/template.d.ts.map +0 -1
- package/dist/default-templates/video/template.js +0 -33
- package/dist/default-templates/video/template.js.map +0 -1
- package/dist/default-templates/video/template.tsx +0 -37
- package/dist/default-templates/website/pages/home.tsx +0 -17
- package/dist/default-templates/website/parts/footer.tsx +0 -17
- package/dist/default-templates/website/parts/header.tsx +0 -17
- package/dist/default-templates/website/template.tsx +0 -17
- package/dist/default-templates/website-template/pages/home.tsx +0 -13
- package/dist/default-templates/website-template/parts/footer.tsx +0 -15
- package/dist/default-templates/website-template/parts/header.tsx +0 -15
- package/dist/default-templates/website-template/template.tsx +0 -32
- package/dist/lib/encode-worker.d.ts +0 -2
- package/dist/lib/encode-worker.d.ts.map +0 -1
- package/dist/lib/encode-worker.js +0 -29
- package/dist/lib/encode-worker.js.map +0 -1
- package/dist/lib/mjpeg-muxer.d.ts +0 -46
- package/dist/lib/mjpeg-muxer.d.ts.map +0 -1
- package/dist/lib/mjpeg-muxer.js +0 -513
- package/dist/lib/mjpeg-muxer.js.map +0 -1
- package/dist/lib/render-core.d.ts +0 -63
- package/dist/lib/render-core.d.ts.map +0 -1
- package/dist/lib/render-core.js +0 -65
- package/dist/lib/render-core.js.map +0 -1
- package/dist/lib/tailwind-browser.d.ts +0 -27
- package/dist/lib/tailwind-browser.d.ts.map +0 -1
- package/dist/lib/tailwind-browser.js +0 -853
- package/dist/lib/tailwind-browser.js.map +0 -1
- package/dist/lib/video-player.d.ts +0 -25
- package/dist/lib/video-player.d.ts.map +0 -1
- package/dist/lib/video-player.js +0 -392
- package/dist/lib/video-player.js.map +0 -1
- package/dist/sdk/compiler.d.ts +0 -94
- package/dist/sdk/compiler.d.ts.map +0 -1
- package/dist/sdk/compiler.js +0 -122
- package/dist/sdk/compiler.js.map +0 -1
- package/dist/sdk/edge/index.d.ts +0 -91
- package/dist/sdk/edge/index.d.ts.map +0 -1
- package/dist/sdk/edge/index.js +0 -187
- package/dist/sdk/edge/index.js.map +0 -1
- package/dist/sdk/index.d.ts +0 -62
- package/dist/sdk/index.d.ts.map +0 -1
- package/dist/sdk/index.js +0 -141
- package/dist/sdk/index.js.map +0 -1
- package/dist/sdk/preview.d.ts +0 -65
- package/dist/sdk/preview.d.ts.map +0 -1
- package/dist/sdk/preview.js +0 -262
- package/dist/sdk/preview.js.map +0 -1
- package/dist/sdk/template.d.ts +0 -162
- package/dist/sdk/template.d.ts.map +0 -1
- package/dist/sdk/template.js +0 -231
- package/dist/sdk/template.js.map +0 -1
- package/dist/sdk/workers/index.d.ts +0 -135
- package/dist/sdk/workers/index.d.ts.map +0 -1
- package/dist/sdk/workers/index.js +0 -271
- package/dist/sdk/workers/index.js.map +0 -1
- package/dist/sdk/workers/tailwind-config.d.ts +0 -48
- package/dist/sdk/workers/tailwind-config.d.ts.map +0 -1
- package/dist/sdk/workers/tailwind-config.js +0 -187
- package/dist/sdk/workers/tailwind-config.js.map +0 -1
- package/dist/sdk/workers/tailwind.d.ts +0 -9
- package/dist/sdk/workers/tailwind.d.ts.map +0 -1
- package/dist/sdk/workers/tailwind.js +0 -8
- package/dist/sdk/workers/tailwind.js.map +0 -1
- package/examples/code-editor-templates.ts +0 -173
- package/examples/nextjs-api/README.md +0 -180
- package/examples/nextjs-api/package.json +0 -21
- package/examples/nextjs-api/pages/api/intro-video.ts +0 -53
- package/examples/nextjs-api/pages/api/og-image.ts +0 -50
- package/examples/nextjs-template-import.ts +0 -58
- package/examples/sdk-video-preview.tsx +0 -120
- package/examples/template-compiler-workflow.ts +0 -251
- package/examples/visual-builder-templates.ts +0 -336
- package/render-examples-600x400.mjs +0 -161
- package/render-spring-variants-fixed.mjs +0 -60
- package/render-staggered-text.mjs +0 -56
- package/test-cloudflare-worker/README.md +0 -64
- package/test-cloudflare-worker/dist/README.md +0 -1
- package/test-cloudflare-worker/dist/index.js +0 -23743
- package/test-cloudflare-worker/dist/index.js.map +0 -8
- package/test-cloudflare-worker/package-lock.json +0 -1773
- package/test-cloudflare-worker/package.json +0 -25
- package/test-cloudflare-worker/test-sdk.mjs +0 -75
- package/test-cloudflare-worker/wrangler.toml +0 -14
- package/test-font-files.mjs +0 -72
- package/test-jsx-support.mjs +0 -146
- package/test-sdk-config.mjs +0 -454
- package/test-sdk-source-config.mjs +0 -427
- package/test-sdk-user-templates.mjs +0 -469
- package/test-static-debug.tsx +0 -19
- package/test-templates/TESTS.md +0 -63
- package/test-templates/config-test.mjs +0 -17
- package/test-templates/demo-intro-props.json +0 -4
- package/test-templates/run-tests.sh +0 -44
- package/test-templates/test-sdk.mjs +0 -139
- package/test-video-720p.mjs +0 -96
- package/test-video-breakdown.mjs +0 -98
- package/test-video-perf-1080.mjs +0 -67
- package/test-video-perf.mjs +0 -56
- package/test-video-props.json +0 -3
- package/test-worker-1080p.mjs +0 -103
- package/test-worker-viability.mjs +0 -140
- package/website/.astro/content.db +0 -0
- package/website/.astro/integrations/_inox-tools_astro-when/types.d.ts +0 -1
- package/website/.astro/integrations/astro_db/db.d.ts +0 -15
- package/website/.astro/settings.json +0 -5
- package/website/.astro/types.d.ts +0 -2
- package/website/DEPLOYMENT.md +0 -143
- package/website/OG_IMAGES.md +0 -142
- package/website/README.md +0 -158
- package/website/astro.config.mjs +0 -41
- package/website/dist/.gitkeep +0 -5
- package/website/dist/_astro/PlaygroundEditor.DzFavsm8.js +0 -26
- package/website/dist/_astro/VideoPreviewClient.BrajhYmh.js +0 -1
- package/website/dist/_astro/agents.CZXv4DCM.css +0 -1
- package/website/dist/_astro/client.BHSq4mdQ.js +0 -33
- package/website/dist/_astro/index.CTbGshLK.js +0 -9
- package/website/dist/_astro/jsx-runtime.BjG_zV1W.js +0 -9
- package/website/dist/_routes.json +0 -31
- package/website/dist/_worker.js/_@astrojs-ssr-adapter.mjs +0 -1033
- package/website/dist/_worker.js/_astro-internal_middleware.mjs +0 -40
- package/website/dist/_worker.js/chunks/Logo_Cud5QvBJ.mjs +0 -22
- package/website/dist/_worker.js/chunks/_@astro-renderers_-YVK7NHa.mjs +0 -15015
- package/website/dist/_worker.js/chunks/abap_BTmsHiP5.mjs +0 -1
- package/website/dist/_worker.js/chunks/actionscript-3_DmBelb1E.mjs +0 -1
- package/website/dist/_worker.js/chunks/ada_8-E0ahCN.mjs +0 -1
- package/website/dist/_worker.js/chunks/andromeeda_XI-CXx50.mjs +0 -1
- package/website/dist/_worker.js/chunks/angular-html_DKGh3gGH.mjs +0 -1
- package/website/dist/_worker.js/chunks/angular-ts_-qZGsJoA.mjs +0 -1
- package/website/dist/_worker.js/chunks/apache_ijTUt0Ee.mjs +0 -1
- package/website/dist/_worker.js/chunks/apex_agu1c6Sh.mjs +0 -1
- package/website/dist/_worker.js/chunks/apl_Bj2f7Art.mjs +0 -1
- package/website/dist/_worker.js/chunks/applescript_B_vXrOh3.mjs +0 -1
- package/website/dist/_worker.js/chunks/ara_DCEQ2rnh.mjs +0 -1
- package/website/dist/_worker.js/chunks/asciidoc_CGN_EkYS.mjs +0 -1
- package/website/dist/_worker.js/chunks/asm_BBWZgnDp.mjs +0 -1
- package/website/dist/_worker.js/chunks/astro/assets-service_j52rQLzU.mjs +0 -721
- package/website/dist/_worker.js/chunks/astro/server_CsUrSZgd.mjs +0 -2512
- package/website/dist/_worker.js/chunks/astro-designed-error-pages_1ELXm5Tt.mjs +0 -542
- package/website/dist/_worker.js/chunks/astro_Dr_hht3h.mjs +0 -1
- package/website/dist/_worker.js/chunks/aurora-x_9GHG8nSq.mjs +0 -1
- package/website/dist/_worker.js/chunks/awk_DHRvhXot.mjs +0 -1
- package/website/dist/_worker.js/chunks/ayu-dark_CcvqmEHE.mjs +0 -1
- package/website/dist/_worker.js/chunks/ballerina_C7SdeSZb.mjs +0 -1
- package/website/dist/_worker.js/chunks/bat_Dv4A3u45.mjs +0 -1
- package/website/dist/_worker.js/chunks/beancount_BfPf9Luv.mjs +0 -1
- package/website/dist/_worker.js/chunks/berry_B8rfM3lL.mjs +0 -1
- package/website/dist/_worker.js/chunks/bibtex_TcjYgtJM.mjs +0 -1
- package/website/dist/_worker.js/chunks/bicep_CrlFWCdN.mjs +0 -1
- package/website/dist/_worker.js/chunks/blade_lanKVYID.mjs +0 -1
- package/website/dist/_worker.js/chunks/bsl_BhppzXMB.mjs +0 -1
- package/website/dist/_worker.js/chunks/c_6FBALJTK.mjs +0 -1
- package/website/dist/_worker.js/chunks/cadence_2txU9LVE.mjs +0 -1
- package/website/dist/_worker.js/chunks/cairo_BkrFAIlP.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-frappe_CkEqIYhU.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-latte_DG4Gx_-v.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-macchiato_Cwi3vCXf.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-mocha_L9_OPlFX.mjs +0 -1
- package/website/dist/_worker.js/chunks/clarity_BEAe4Ulu.mjs +0 -1
- package/website/dist/_worker.js/chunks/clojure_VnUX6p2g.mjs +0 -1
- package/website/dist/_worker.js/chunks/cmake_0-SGkZEj.mjs +0 -1
- package/website/dist/_worker.js/chunks/cobol_92M_KGaE.mjs +0 -1
- package/website/dist/_worker.js/chunks/codeowners_CzMwskBv.mjs +0 -1
- package/website/dist/_worker.js/chunks/codeql_DWJZNHv1.mjs +0 -1
- package/website/dist/_worker.js/chunks/coffee_CQjKU2fh.mjs +0 -1
- package/website/dist/_worker.js/chunks/common-lisp_BBLWDpS5.mjs +0 -1
- package/website/dist/_worker.js/chunks/coq_hedRFV3D.mjs +0 -1
- package/website/dist/_worker.js/chunks/cpp_DlS1i6Zs.mjs +0 -1
- package/website/dist/_worker.js/chunks/crystal_D6n65fKV.mjs +0 -1
- package/website/dist/_worker.js/chunks/csharp_C6FCVFzc.mjs +0 -1
- package/website/dist/_worker.js/chunks/css_C5uJEgmJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/csv_CtMYuuJl.mjs +0 -1
- package/website/dist/_worker.js/chunks/cue_BsPexqx6.mjs +0 -1
- package/website/dist/_worker.js/chunks/cypher_apzf6OBi.mjs +0 -1
- package/website/dist/_worker.js/chunks/d_DcvIRcgm.mjs +0 -1
- package/website/dist/_worker.js/chunks/dark-plus_C01ONtzj.mjs +0 -1
- package/website/dist/_worker.js/chunks/dart_WkzM5WrV.mjs +0 -1
- package/website/dist/_worker.js/chunks/dax_DjXAO5V4.mjs +0 -1
- package/website/dist/_worker.js/chunks/desktop_C92LCxdc.mjs +0 -1
- package/website/dist/_worker.js/chunks/diff_CVwM_9XJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/docker_DPzgJf6Z.mjs +0 -1
- package/website/dist/_worker.js/chunks/dotenv_D_vgANvA.mjs +0 -1
- package/website/dist/_worker.js/chunks/dracula-soft_CLnUBwFm.mjs +0 -1
- package/website/dist/_worker.js/chunks/dracula_lBVpb6Lb.mjs +0 -1
- package/website/dist/_worker.js/chunks/dream-maker_DTLbzd_J.mjs +0 -1
- package/website/dist/_worker.js/chunks/edge_i54JYm3_.mjs +0 -1
- package/website/dist/_worker.js/chunks/elixir_BJCIjTu4.mjs +0 -1
- package/website/dist/_worker.js/chunks/elm_BbXD39-_.mjs +0 -1
- package/website/dist/_worker.js/chunks/emacs-lisp_pxa5cXaN.mjs +0 -1
- package/website/dist/_worker.js/chunks/erb_Ccjijeee.mjs +0 -1
- package/website/dist/_worker.js/chunks/erlang_B2VM_hi7.mjs +0 -1
- package/website/dist/_worker.js/chunks/everforest-dark_BxvIPBim.mjs +0 -1
- package/website/dist/_worker.js/chunks/everforest-light_B7VoyaJM.mjs +0 -1
- package/website/dist/_worker.js/chunks/fennel_D-uo7X6c.mjs +0 -1
- package/website/dist/_worker.js/chunks/fish_BjePoK3m.mjs +0 -1
- package/website/dist/_worker.js/chunks/fluent_C8fgkzLX.mjs +0 -1
- package/website/dist/_worker.js/chunks/fortran-fixed-form_D1pu5zrc.mjs +0 -1
- package/website/dist/_worker.js/chunks/fortran-free-form_CSGOhJD6.mjs +0 -1
- package/website/dist/_worker.js/chunks/fsharp_B0xy-A4Y.mjs +0 -1
- package/website/dist/_worker.js/chunks/gdresource_CWppjlHq.mjs +0 -1
- package/website/dist/_worker.js/chunks/gdscript_eQCHchcS.mjs +0 -1
- package/website/dist/_worker.js/chunks/gdshader_C4kxepX7.mjs +0 -1
- package/website/dist/_worker.js/chunks/genie_ACtQLcDW.mjs +0 -1
- package/website/dist/_worker.js/chunks/gherkin_BFp2uKUd.mjs +0 -1
- package/website/dist/_worker.js/chunks/git-commit_CLg9ZwMV.mjs +0 -1
- package/website/dist/_worker.js/chunks/git-rebase_DG8A80Nt.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark-default_BI0EP2Kv.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark-dimmed_a_NIC0Xb.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark-high-contrast_jZGqT7hk.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark_CHCDNd2O.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-light-default_DRbOW5RG.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-light-high-contrast_tn_kWutM.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-light_D9brYzot.mjs +0 -1
- package/website/dist/_worker.js/chunks/gleam_Dmhu1oxW.mjs +0 -1
- package/website/dist/_worker.js/chunks/glimmer-js_BfZbXy8A.mjs +0 -1
- package/website/dist/_worker.js/chunks/glimmer-ts_B9QVICrD.mjs +0 -1
- package/website/dist/_worker.js/chunks/glsl_DD2PPwOs.mjs +0 -1
- package/website/dist/_worker.js/chunks/gnuplot_D2OYChUX.mjs +0 -1
- package/website/dist/_worker.js/chunks/go_DYGFTe3h.mjs +0 -1
- package/website/dist/_worker.js/chunks/graphql_B7XsT3nH.mjs +0 -1
- package/website/dist/_worker.js/chunks/groovy_BO12Uwkl.mjs +0 -1
- package/website/dist/_worker.js/chunks/hack_CB2_ztCP.mjs +0 -1
- package/website/dist/_worker.js/chunks/haml_CyfDcDD3.mjs +0 -1
- package/website/dist/_worker.js/chunks/handlebars_CfpxpWm2.mjs +0 -1
- package/website/dist/_worker.js/chunks/haskell_jUeC5uN5.mjs +0 -1
- package/website/dist/_worker.js/chunks/haxe_B6GxP1WB.mjs +0 -1
- package/website/dist/_worker.js/chunks/hcl_DwoHV2oh.mjs +0 -1
- package/website/dist/_worker.js/chunks/hjson_DV7cJRk4.mjs +0 -1
- package/website/dist/_worker.js/chunks/hlsl_BlFCscPI.mjs +0 -1
- package/website/dist/_worker.js/chunks/houston_COBFG1Mx.mjs +0 -1
- package/website/dist/_worker.js/chunks/html-derivative_C9pJ337h.mjs +0 -1
- package/website/dist/_worker.js/chunks/html_D1OkrZS5.mjs +0 -1
- package/website/dist/_worker.js/chunks/http_DIGXRqvJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/hxml_DEwh9i-c.mjs +0 -1
- package/website/dist/_worker.js/chunks/hy_DDoIgW1K.mjs +0 -1
- package/website/dist/_worker.js/chunks/imba_B00zbHo4.mjs +0 -1
- package/website/dist/_worker.js/chunks/index_BDWR1Q-q.mjs +0 -1861
- package/website/dist/_worker.js/chunks/ini_D7XQA_p8.mjs +0 -1
- package/website/dist/_worker.js/chunks/java_B9wdFd8K.mjs +0 -1
- package/website/dist/_worker.js/chunks/javascript_CLsPGOON.mjs +0 -1
- package/website/dist/_worker.js/chunks/jinja_jarBCAN1.mjs +0 -1
- package/website/dist/_worker.js/chunks/jison_oGg3J708.mjs +0 -1
- package/website/dist/_worker.js/chunks/json5_DlZ1Kyaa.mjs +0 -1
- package/website/dist/_worker.js/chunks/json_DaYk_FMp.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsonc_DlwgfSDs.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsonl_BbCCVaZF.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsonnet_Dt-G75xe.mjs +0 -1
- package/website/dist/_worker.js/chunks/jssm_BtKFTj2A.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsx_DDx_xAZ8.mjs +0 -1
- package/website/dist/_worker.js/chunks/julia_CK0lv68l.mjs +0 -1
- package/website/dist/_worker.js/chunks/kanagawa-dragon_BldAK3Oo.mjs +0 -1
- package/website/dist/_worker.js/chunks/kanagawa-lotus_DVM8FX9_.mjs +0 -1
- package/website/dist/_worker.js/chunks/kanagawa-wave_Dpih0AKP.mjs +0 -1
- package/website/dist/_worker.js/chunks/kotlin_kWneB9V_.mjs +0 -1
- package/website/dist/_worker.js/chunks/kusto_BKVATd95.mjs +0 -1
- package/website/dist/_worker.js/chunks/laserwave_BqatxsVl.mjs +0 -1
- package/website/dist/_worker.js/chunks/latex_LVDcGBbc.mjs +0 -1
- package/website/dist/_worker.js/chunks/lean_W7qo-5M2.mjs +0 -1
- package/website/dist/_worker.js/chunks/less_DFNwJnBH.mjs +0 -1
- package/website/dist/_worker.js/chunks/light-plus_Dp0AoWsO.mjs +0 -1
- package/website/dist/_worker.js/chunks/liquid_D24qs0pc.mjs +0 -1
- package/website/dist/_worker.js/chunks/log_IPWMXriF.mjs +0 -1
- package/website/dist/_worker.js/chunks/logo_C6KaatrQ.mjs +0 -1
- package/website/dist/_worker.js/chunks/lua_CwnEf-T7.mjs +0 -1
- package/website/dist/_worker.js/chunks/luau_Br3-CXjS.mjs +0 -1
- package/website/dist/_worker.js/chunks/make_UBNG-kOo.mjs +0 -1
- package/website/dist/_worker.js/chunks/markdown_C7mhJFCm.mjs +0 -1
- package/website/dist/_worker.js/chunks/marko_4tchUvI7.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-darker_SKtaNEPn.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-lighter_zOX_DZCH.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-ocean_BN9WbhdC.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-palenight_DT_covjH.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme_6RpeM3kc.mjs +0 -1
- package/website/dist/_worker.js/chunks/matlab_DCOXsPKR.mjs +0 -1
- package/website/dist/_worker.js/chunks/mdc_B9gb2UFP.mjs +0 -1
- package/website/dist/_worker.js/chunks/mdx_DGU7Nu9u.mjs +0 -1
- package/website/dist/_worker.js/chunks/mermaid_B69URzsZ.mjs +0 -1
- package/website/dist/_worker.js/chunks/min-dark_BgxifOMI.mjs +0 -1
- package/website/dist/_worker.js/chunks/min-light_BrPjXxUp.mjs +0 -1
- package/website/dist/_worker.js/chunks/mipsasm_9U-4_t7k.mjs +0 -1
- package/website/dist/_worker.js/chunks/mojo_B0wt7ug3.mjs +0 -1
- package/website/dist/_worker.js/chunks/monokai_B6Pxpoyi.mjs +0 -1
- package/website/dist/_worker.js/chunks/move_1eid4CyR.mjs +0 -1
- package/website/dist/_worker.js/chunks/narrat_Ds6-p5JZ.mjs +0 -1
- package/website/dist/_worker.js/chunks/nextflow_v2N1Qlqa.mjs +0 -1
- package/website/dist/_worker.js/chunks/nginx_Bp9Ab2NH.mjs +0 -1
- package/website/dist/_worker.js/chunks/night-owl_CdwOw_sc.mjs +0 -1
- package/website/dist/_worker.js/chunks/nim_BXGDUe53.mjs +0 -1
- package/website/dist/_worker.js/chunks/nix_CUig1nJH.mjs +0 -1
- package/website/dist/_worker.js/chunks/noop-middleware_B8fH5jha.mjs +0 -10
- package/website/dist/_worker.js/chunks/nord_SPoG1iae.mjs +0 -1
- package/website/dist/_worker.js/chunks/nushell_DJw1Lca8.mjs +0 -1
- package/website/dist/_worker.js/chunks/objective-c_Bktzl_CO.mjs +0 -1
- package/website/dist/_worker.js/chunks/objective-cpp_CP4DWdDp.mjs +0 -1
- package/website/dist/_worker.js/chunks/ocaml_CeEAs7bZ.mjs +0 -1
- package/website/dist/_worker.js/chunks/one-dark-pro_-hIwCNMi.mjs +0 -1
- package/website/dist/_worker.js/chunks/one-light_DSmYvJ05.mjs +0 -1
- package/website/dist/_worker.js/chunks/pascal_C-S_Ms_o.mjs +0 -1
- package/website/dist/_worker.js/chunks/perl_CKamvo15.mjs +0 -1
- package/website/dist/_worker.js/chunks/php_BlmcX_F3.mjs +0 -1
- package/website/dist/_worker.js/chunks/plastic_Ryt8tVoA.mjs +0 -1
- package/website/dist/_worker.js/chunks/plsql_Cb3v7cBj.mjs +0 -1
- package/website/dist/_worker.js/chunks/po_DZbdNRlo.mjs +0 -1
- package/website/dist/_worker.js/chunks/poimandres_bYmE3_5d.mjs +0 -1
- package/website/dist/_worker.js/chunks/polar_pJkMGwoW.mjs +0 -1
- package/website/dist/_worker.js/chunks/postcss_BAXSOKgk.mjs +0 -1
- package/website/dist/_worker.js/chunks/powerquery_oITMGN4x.mjs +0 -1
- package/website/dist/_worker.js/chunks/powershell_6306-xIF.mjs +0 -1
- package/website/dist/_worker.js/chunks/prisma_DSDxnZGz.mjs +0 -1
- package/website/dist/_worker.js/chunks/prolog_CxG7tjZR.mjs +0 -1
- package/website/dist/_worker.js/chunks/proto_CS9ByXm1.mjs +0 -1
- package/website/dist/_worker.js/chunks/pug_BMtLJo6U.mjs +0 -1
- package/website/dist/_worker.js/chunks/puppet_BfeeSzee.mjs +0 -1
- package/website/dist/_worker.js/chunks/purescript_BFfueNaH.mjs +0 -1
- package/website/dist/_worker.js/chunks/python_Cc4Faapv.mjs +0 -1
- package/website/dist/_worker.js/chunks/qml_C1CTJTK8.mjs +0 -1
- package/website/dist/_worker.js/chunks/qmldir_nG1KaqKR.mjs +0 -1
- package/website/dist/_worker.js/chunks/qss_Cncxk263.mjs +0 -1
- package/website/dist/_worker.js/chunks/r_ChR54Ihi.mjs +0 -1
- package/website/dist/_worker.js/chunks/racket_BDrhptDs.mjs +0 -1
- package/website/dist/_worker.js/chunks/raku_07OUHa0P.mjs +0 -1
- package/website/dist/_worker.js/chunks/razor_DIP3INLa.mjs +0 -1
- package/website/dist/_worker.js/chunks/red_DOPXfj-6.mjs +0 -1
- package/website/dist/_worker.js/chunks/reg_B64SwEDj.mjs +0 -1
- package/website/dist/_worker.js/chunks/regexp_ButFGoB5.mjs +0 -1
- package/website/dist/_worker.js/chunks/rel_BWJAWqZD.mjs +0 -1
- package/website/dist/_worker.js/chunks/riscv_79gXlbsF.mjs +0 -1
- package/website/dist/_worker.js/chunks/rose-pine-dawn_DHIjVGd3.mjs +0 -1
- package/website/dist/_worker.js/chunks/rose-pine-moon_t86aEbs0.mjs +0 -1
- package/website/dist/_worker.js/chunks/rose-pine_BHgrcDCs.mjs +0 -1
- package/website/dist/_worker.js/chunks/rst_D3F4Fcpj.mjs +0 -1
- package/website/dist/_worker.js/chunks/ruby_Cs7vM9iv.mjs +0 -1
- package/website/dist/_worker.js/chunks/rust_DpyRVatH.mjs +0 -1
- package/website/dist/_worker.js/chunks/sas_DW45xZXN.mjs +0 -1
- package/website/dist/_worker.js/chunks/sass_C6SiMwN_.mjs +0 -1
- package/website/dist/_worker.js/chunks/scala_DlZOjNZk.mjs +0 -1
- package/website/dist/_worker.js/chunks/scheme_D2ezSJXu.mjs +0 -1
- package/website/dist/_worker.js/chunks/scss_DG5Spjqu.mjs +0 -1
- package/website/dist/_worker.js/chunks/sdbl_ZCYaj4VN.mjs +0 -1
- package/website/dist/_worker.js/chunks/shaderlab_CAcRkg1_.mjs +0 -1
- package/website/dist/_worker.js/chunks/shellscript_BWwhkDVh.mjs +0 -1
- package/website/dist/_worker.js/chunks/shellsession_BfEA3juK.mjs +0 -1
- package/website/dist/_worker.js/chunks/slack-dark_CL3lSpCc.mjs +0 -1
- package/website/dist/_worker.js/chunks/slack-ochin_DdZKOQVh.mjs +0 -1
- package/website/dist/_worker.js/chunks/smalltalk_DgilzSui.mjs +0 -1
- package/website/dist/_worker.js/chunks/snazzy-light_eJU08Pz_.mjs +0 -1
- package/website/dist/_worker.js/chunks/solarized-dark_Dg_YQywx.mjs +0 -1
- package/website/dist/_worker.js/chunks/solarized-light_BnIsrA6p.mjs +0 -1
- package/website/dist/_worker.js/chunks/solidity_DkseH8pQ.mjs +0 -1
- package/website/dist/_worker.js/chunks/soy_DU7bOYoG.mjs +0 -1
- package/website/dist/_worker.js/chunks/sparql_BuI1DBDH.mjs +0 -1
- package/website/dist/_worker.js/chunks/splunk_B8Ha9Pkg.mjs +0 -1
- package/website/dist/_worker.js/chunks/sql_BniHwea5.mjs +0 -1
- package/website/dist/_worker.js/chunks/ssh-config_CkE1GuVe.mjs +0 -1
- package/website/dist/_worker.js/chunks/stata_Dtqpbd_l.mjs +0 -1
- package/website/dist/_worker.js/chunks/stylus_CXTtglzO.mjs +0 -1
- package/website/dist/_worker.js/chunks/svelte_BjWYcUCN.mjs +0 -1
- package/website/dist/_worker.js/chunks/swift_BzHql_rM.mjs +0 -1
- package/website/dist/_worker.js/chunks/synthwave-84_DLRNhxNA.mjs +0 -1
- package/website/dist/_worker.js/chunks/system-verilog_ChyInPph.mjs +0 -1
- package/website/dist/_worker.js/chunks/systemd_Bi9Qa2qD.mjs +0 -1
- package/website/dist/_worker.js/chunks/talonscript_B3sH_Y-V.mjs +0 -1
- package/website/dist/_worker.js/chunks/tasl_BJ5yipRs.mjs +0 -1
- package/website/dist/_worker.js/chunks/tcl_CoJQjNoP.mjs +0 -1
- package/website/dist/_worker.js/chunks/templ_CrU7Ffil.mjs +0 -1
- package/website/dist/_worker.js/chunks/terraform_DT9JSFpC.mjs +0 -1
- package/website/dist/_worker.js/chunks/tex_5PKu2yA0.mjs +0 -1
- package/website/dist/_worker.js/chunks/tokyo-night_Buo8OK7-.mjs +0 -1
- package/website/dist/_worker.js/chunks/toml_CPuXX3oc.mjs +0 -1
- package/website/dist/_worker.js/chunks/ts-tags_D0M_1VSH.mjs +0 -1
- package/website/dist/_worker.js/chunks/tsv_CuivVNot.mjs +0 -1
- package/website/dist/_worker.js/chunks/tsx_MkuGr8MY.mjs +0 -1
- package/website/dist/_worker.js/chunks/turtle_BqgEPK7f.mjs +0 -1
- package/website/dist/_worker.js/chunks/twig_r1G9rpYJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/typescript_Au5buqzM.mjs +0 -1
- package/website/dist/_worker.js/chunks/typespec_47rhBK_z.mjs +0 -1
- package/website/dist/_worker.js/chunks/typst_BAtuQLh-.mjs +0 -1
- package/website/dist/_worker.js/chunks/v_BIvWImHg.mjs +0 -1
- package/website/dist/_worker.js/chunks/vala_DYEacj30.mjs +0 -1
- package/website/dist/_worker.js/chunks/vb_CikQuqGJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/verilog_BQRENwI-.mjs +0 -1
- package/website/dist/_worker.js/chunks/vesper_DA0kvTmj.mjs +0 -1
- package/website/dist/_worker.js/chunks/vhdl_DHscJIyg.mjs +0 -1
- package/website/dist/_worker.js/chunks/viml_F2pvMwvG.mjs +0 -1
- package/website/dist/_worker.js/chunks/vitesse-black_D9tjNzd0.mjs +0 -1
- package/website/dist/_worker.js/chunks/vitesse-dark_Bnm5d0hd.mjs +0 -1
- package/website/dist/_worker.js/chunks/vitesse-light_CHwbyjNR.mjs +0 -1
- package/website/dist/_worker.js/chunks/vue-html_DyYtbbMK.mjs +0 -1
- package/website/dist/_worker.js/chunks/vue_DofN6juy.mjs +0 -1
- package/website/dist/_worker.js/chunks/vyper_CiR0m-OV.mjs +0 -1
- package/website/dist/_worker.js/chunks/wasm_CwIGgRGf.mjs +0 -1
- package/website/dist/_worker.js/chunks/wasm_jKWhg0J0.mjs +0 -1
- package/website/dist/_worker.js/chunks/wenyan_DKvVZKXW.mjs +0 -1
- package/website/dist/_worker.js/chunks/wgsl_BOWZY7yw.mjs +0 -1
- package/website/dist/_worker.js/chunks/wikitext_CXDhhHPy.mjs +0 -1
- package/website/dist/_worker.js/chunks/wolfram_ChkmGnW0.mjs +0 -1
- package/website/dist/_worker.js/chunks/xml_DXH3hHIu.mjs +0 -1
- package/website/dist/_worker.js/chunks/xsl_DuP2mFjg.mjs +0 -1
- package/website/dist/_worker.js/chunks/yaml_IGiEkTge.mjs +0 -1
- package/website/dist/_worker.js/chunks/zenscript_59iXGyNw.mjs +0 -1
- package/website/dist/_worker.js/chunks/zig_DKzb0zdT.mjs +0 -1
- package/website/dist/_worker.js/index.js +0 -61
- package/website/dist/_worker.js/manifest_Bk6136-u.mjs +0 -98
- package/website/dist/_worker.js/pages/_image.astro.mjs +0 -24
- package/website/dist/_worker.js/pages/agents.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/animation.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/api/playground/render.astro.mjs +0 -25562
- package/website/dist/_worker.js/pages/api/playground/templates.astro.mjs +0 -92
- package/website/dist/_worker.js/pages/api/raw-markdown/_---path_.astro.mjs +0 -44
- package/website/dist/_worker.js/pages/config.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/fonts.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/getting-started.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/helpers.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/images.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/index.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/llm.txt.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/playground/_example_.astro.mjs +0 -95
- package/website/dist/_worker.js/pages/playground.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/preview.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/sdk.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/sitemap.xml.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/styling.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/templates.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/video.astro.mjs +0 -1
- package/website/dist/_worker.js/renderers.mjs +0 -2
- package/website/dist/agents/index.html +0 -54
- package/website/dist/animation/index.html +0 -1505
- package/website/dist/config/index.html +0 -186
- package/website/dist/fonts/index.html +0 -200
- package/website/dist/getting-started/index.html +0 -109
- package/website/dist/helpers/index.html +0 -350
- package/website/dist/images/index.html +0 -337
- package/website/dist/index.html +0 -141
- package/website/dist/llm.txt +0 -3626
- package/website/dist/playground/index.html +0 -6
- package/website/dist/preview/index.html +0 -113
- package/website/dist/robots.txt +0 -40
- package/website/dist/sdk/index.html +0 -1588
- package/website/dist/sitemap.xml +0 -76
- package/website/dist/styling/index.html +0 -368
- package/website/dist/templates/index.html +0 -76
- package/website/dist/video/index.html +0 -354
- package/website/package-lock.json +0 -8099
- package/website/package.json +0 -43
- package/website/public/.gitkeep +0 -5
- package/website/public/robots.txt +0 -40
- package/website/templates/og-image.tsx +0 -60
- package/website/wrangler.toml +0 -9
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { renderSVG, initWasm, defineTemplate } from './dist/sdk/workers/index.js';
|
|
2
|
-
import { Resvg } from '@resvg/resvg-wasm';
|
|
3
|
-
import HME from 'h264-mp4-encoder';
|
|
4
|
-
import React from 'react';
|
|
5
|
-
|
|
6
|
-
// Typical real-world template
|
|
7
|
-
const template = defineTemplate({
|
|
8
|
-
name: 'worker-test',
|
|
9
|
-
type: 'video',
|
|
10
|
-
size: { width: 1280, height: 720 },
|
|
11
|
-
video: { fps: 30, duration: 10 }, // 10 second clip
|
|
12
|
-
render: ({ tw, progress, frame }) => React.createElement(
|
|
13
|
-
'div',
|
|
14
|
-
{ style: tw('flex flex-col items-center justify-center w-full h-full bg-gradient-to-br from-indigo-900 via-purple-900 to-pink-800') },
|
|
15
|
-
React.createElement('h1', {
|
|
16
|
-
style: tw('text-7xl font-black text-white ease-out-cubic enter-bounce-in-up/0/800')
|
|
17
|
-
}, 'LOOPWIND'),
|
|
18
|
-
React.createElement('p', {
|
|
19
|
-
style: tw('text-2xl text-white/80 mt-4 ease-out enter-fade-in-up/400/600')
|
|
20
|
-
}, 'Worker Viability Test'),
|
|
21
|
-
React.createElement('div', { style: tw('flex gap-4 mt-8') },
|
|
22
|
-
React.createElement('div', {
|
|
23
|
-
style: tw('px-4 py-2 bg-white/10 rounded-full text-white ease-out enter-fade-in-up/900/400')
|
|
24
|
-
}, 'Feature 1'),
|
|
25
|
-
React.createElement('div', {
|
|
26
|
-
style: tw('px-4 py-2 bg-white/10 rounded-full text-white ease-out enter-fade-in-up/1050/400')
|
|
27
|
-
}, 'Feature 2'),
|
|
28
|
-
React.createElement('div', {
|
|
29
|
-
style: tw('px-4 py-2 bg-white/10 rounded-full text-white ease-out enter-fade-in-up/1200/400')
|
|
30
|
-
}, 'Feature 3')
|
|
31
|
-
)
|
|
32
|
-
)
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
async function runTests() {
|
|
36
|
-
console.log('=== Worker Viability Tests ===\n');
|
|
37
|
-
console.log('Testing various configurations to find what works in Workers');
|
|
38
|
-
console.log('Cloudflare Workers limits: 30s CPU time (paid), 128MB memory\n');
|
|
39
|
-
|
|
40
|
-
await initWasm();
|
|
41
|
-
|
|
42
|
-
const configs = [
|
|
43
|
-
{ width: 640, height: 360, fps: 24, duration: 5, name: '360p/24fps/5s' },
|
|
44
|
-
{ width: 640, height: 360, fps: 24, duration: 10, name: '360p/24fps/10s' },
|
|
45
|
-
{ width: 854, height: 480, fps: 24, duration: 5, name: '480p/24fps/5s' },
|
|
46
|
-
{ width: 854, height: 480, fps: 24, duration: 10, name: '480p/24fps/10s' },
|
|
47
|
-
{ width: 1280, height: 720, fps: 24, duration: 5, name: '720p/24fps/5s' },
|
|
48
|
-
{ width: 1280, height: 720, fps: 24, duration: 10, name: '720p/24fps/10s' },
|
|
49
|
-
{ width: 1280, height: 720, fps: 30, duration: 5, name: '720p/30fps/5s' },
|
|
50
|
-
{ width: 1280, height: 720, fps: 30, duration: 10, name: '720p/30fps/10s' },
|
|
51
|
-
];
|
|
52
|
-
|
|
53
|
-
const results = [];
|
|
54
|
-
|
|
55
|
-
for (const config of configs) {
|
|
56
|
-
const { width, height, fps, duration, name } = config;
|
|
57
|
-
const totalFrames = fps * duration;
|
|
58
|
-
|
|
59
|
-
console.log(`\nTesting ${name} (${totalFrames} frames)...`);
|
|
60
|
-
const start = Date.now();
|
|
61
|
-
|
|
62
|
-
// SVG generation
|
|
63
|
-
const svgStart = Date.now();
|
|
64
|
-
const svgs = [];
|
|
65
|
-
for (let i = 0; i < totalFrames; i++) {
|
|
66
|
-
const progress = i / (totalFrames - 1);
|
|
67
|
-
const svg = await renderSVG(template, { progress, frame: i });
|
|
68
|
-
svgs.push(svg);
|
|
69
|
-
}
|
|
70
|
-
const svgTime = Date.now() - svgStart;
|
|
71
|
-
|
|
72
|
-
// RGBA conversion
|
|
73
|
-
const rgbaStart = Date.now();
|
|
74
|
-
const rgbaFrames = [];
|
|
75
|
-
for (let i = 0; i < totalFrames; i++) {
|
|
76
|
-
const resvg = new Resvg(svgs[i], { fitTo: { mode: 'width', value: width } });
|
|
77
|
-
const rendered = resvg.render();
|
|
78
|
-
rgbaFrames.push(rendered.pixels);
|
|
79
|
-
}
|
|
80
|
-
const rgbaTime = Date.now() - rgbaStart;
|
|
81
|
-
|
|
82
|
-
// H.264 encoding
|
|
83
|
-
const encodeStart = Date.now();
|
|
84
|
-
const encoder = await HME.createH264MP4Encoder();
|
|
85
|
-
encoder.width = width;
|
|
86
|
-
encoder.height = height;
|
|
87
|
-
encoder.frameRate = fps;
|
|
88
|
-
encoder.quantizationParameter = 23;
|
|
89
|
-
encoder.speed = 10;
|
|
90
|
-
encoder.groupOfPictures = fps;
|
|
91
|
-
encoder.initialize();
|
|
92
|
-
|
|
93
|
-
for (const frame of rgbaFrames) {
|
|
94
|
-
encoder.addFrameRgba(frame);
|
|
95
|
-
}
|
|
96
|
-
encoder.finalize();
|
|
97
|
-
const output = encoder.FS.readFile(encoder.outputFilename);
|
|
98
|
-
encoder.delete();
|
|
99
|
-
const encodeTime = Date.now() - encodeStart;
|
|
100
|
-
|
|
101
|
-
const totalTime = Date.now() - start;
|
|
102
|
-
const realTimeRatio = totalTime / (duration * 1000);
|
|
103
|
-
const workerViable = totalTime < 30000;
|
|
104
|
-
|
|
105
|
-
results.push({
|
|
106
|
-
name,
|
|
107
|
-
totalTime,
|
|
108
|
-
svgTime,
|
|
109
|
-
rgbaTime,
|
|
110
|
-
encodeTime,
|
|
111
|
-
realTimeRatio,
|
|
112
|
-
workerViable,
|
|
113
|
-
outputSize: output.length
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
console.log(` Total: ${totalTime}ms (${realTimeRatio.toFixed(2)}x real-time)`);
|
|
117
|
-
console.log(` SVG: ${svgTime}ms, RGBA: ${rgbaTime}ms, H.264: ${encodeTime}ms`);
|
|
118
|
-
console.log(` Worker viable: ${workerViable ? 'YES ✓' : 'NO ✗'}`);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
console.log('\n\n=== SUMMARY ===\n');
|
|
122
|
-
console.log('Config | Total | RGBA/frame | Ratio | Worker OK');
|
|
123
|
-
console.log('--------------------|----------|------------|--------|----------');
|
|
124
|
-
for (const r of results) {
|
|
125
|
-
const frames = parseInt(r.name.split('/')[1]) * parseInt(r.name.split('/')[2].replace('s', ''));
|
|
126
|
-
const rgbaPerFrame = (r.rgbaTime / frames).toFixed(0);
|
|
127
|
-
console.log(
|
|
128
|
-
`${r.name.padEnd(19)} | ${(r.totalTime + 'ms').padEnd(8)} | ${(rgbaPerFrame + 'ms').padEnd(10)} | ${r.realTimeRatio.toFixed(2)}x | ${r.workerViable ? 'YES ✓' : 'NO ✗'}`
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
console.log('\n=== CONCLUSIONS ===');
|
|
133
|
-
const viableConfigs = results.filter(r => r.workerViable);
|
|
134
|
-
if (viableConfigs.length > 0) {
|
|
135
|
-
console.log('Worker-viable configurations (< 30s):');
|
|
136
|
-
viableConfigs.forEach(r => console.log(` - ${r.name}: ${r.totalTime}ms`));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
runTests().catch(console.error);
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@inox-tools/astro-when';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// This file is generated by Astro DB
|
|
2
|
-
declare module 'astro:db' {
|
|
3
|
-
export const Team: import("@astrojs/db/runtime").Table<
|
|
4
|
-
"Team",
|
|
5
|
-
{"id":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"id","collection":"Team","primaryKey":true}},"name":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"name","collection":"Team","primaryKey":false,"optional":false}},"slug":{"type":"text","schema":{"unique":true,"deprecated":false,"name":"slug","collection":"Team","primaryKey":false,"optional":false}},"createdAt":{"type":"date","schema":{"optional":false,"unique":false,"deprecated":false,"name":"createdAt","collection":"Team","default":"2025-11-21T18:59:54.504Z"}},"updatedAt":{"type":"date","schema":{"optional":false,"unique":false,"deprecated":false,"name":"updatedAt","collection":"Team","default":"2025-11-21T18:59:54.504Z"}}}
|
|
6
|
-
>;
|
|
7
|
-
export const UserTeam: import("@astrojs/db/runtime").Table<
|
|
8
|
-
"UserTeam",
|
|
9
|
-
{"id":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"id","collection":"UserTeam","primaryKey":true}},"userId":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"userId","collection":"UserTeam","primaryKey":false,"optional":false}},"teamId":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"teamId","collection":"UserTeam","primaryKey":false,"optional":false,"references":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"id","collection":"Team","primaryKey":true}}}},"role":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"role","collection":"UserTeam","default":"member","primaryKey":false,"optional":false}},"joinedAt":{"type":"date","schema":{"optional":false,"unique":false,"deprecated":false,"name":"joinedAt","collection":"UserTeam","default":"2025-11-21T18:59:54.504Z"}}}
|
|
10
|
-
>;
|
|
11
|
-
export const Loop: import("@astrojs/db/runtime").Table<
|
|
12
|
-
"Loop",
|
|
13
|
-
{"id":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"id","collection":"Loop","primaryKey":true}},"userId":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"userId","collection":"Loop","primaryKey":false,"optional":false}},"teamId":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"teamId","collection":"Loop","primaryKey":false,"optional":false,"references":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"id","collection":"Team","primaryKey":true}}}},"name":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"name","collection":"Loop","primaryKey":false,"optional":false}},"slug":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"slug","collection":"Loop","primaryKey":false,"optional":false}},"description":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"description","collection":"Loop","primaryKey":false,"optional":true}},"templateCode":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"templateCode","collection":"Loop","primaryKey":false,"optional":false}},"propsCode":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"propsCode","collection":"Loop","primaryKey":false,"optional":false}},"configCode":{"type":"text","schema":{"unique":false,"deprecated":false,"name":"configCode","collection":"Loop","primaryKey":false,"optional":true}},"isPublic":{"type":"boolean","schema":{"optional":false,"unique":false,"deprecated":false,"name":"isPublic","collection":"Loop","default":false}},"createdAt":{"type":"date","schema":{"optional":false,"unique":false,"deprecated":false,"name":"createdAt","collection":"Loop","default":"2025-11-21T18:59:54.504Z"}},"updatedAt":{"type":"date","schema":{"optional":false,"unique":false,"deprecated":false,"name":"updatedAt","collection":"Loop","default":"2025-11-21T18:59:54.504Z"}}}
|
|
14
|
-
>;
|
|
15
|
-
}
|
package/website/DEPLOYMENT.md
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
# Deployment Guide
|
|
2
|
-
|
|
3
|
-
This documentation website is configured for deployment on **Cloudflare Pages/Workers** with hybrid rendering.
|
|
4
|
-
|
|
5
|
-
## Quick Deploy
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
cd website
|
|
9
|
-
|
|
10
|
-
# Install dependencies
|
|
11
|
-
npm install
|
|
12
|
-
|
|
13
|
-
# Build and deploy
|
|
14
|
-
npm run deploy
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## What's Included
|
|
18
|
-
|
|
19
|
-
### 1. Dynamic OG Image Generation
|
|
20
|
-
|
|
21
|
-
Every documentation page automatically generates its own Open Graph image using **loopwind SDK**.
|
|
22
|
-
|
|
23
|
-
- **API Route**: `/api/og/[...slug].tsx`
|
|
24
|
-
- **Format**: 1200x630 PNG
|
|
25
|
-
- **Generation**: Pre-rendered at build time for known pages, generated on-demand for others
|
|
26
|
-
- **Caching**: Immutable cache headers for optimal performance
|
|
27
|
-
|
|
28
|
-
**Example URLs:**
|
|
29
|
-
- `/api/og/sdk` → SDK page OG image
|
|
30
|
-
- `/api/og/config` → Config page OG image
|
|
31
|
-
- `/api/og/getting-started` → Getting Started OG image
|
|
32
|
-
|
|
33
|
-
### 2. Cloudflare Workers Adapter
|
|
34
|
-
|
|
35
|
-
- **File**: `astro.config.mjs`
|
|
36
|
-
- **Adapter**: `@astrojs/cloudflare`
|
|
37
|
-
- **Output**: Hybrid (SSG + SSR)
|
|
38
|
-
- **Platform**: Cloudflare Workers with Assets
|
|
39
|
-
|
|
40
|
-
### 3. Build Configuration
|
|
41
|
-
|
|
42
|
-
The Vite config externalizes Node.js built-ins for Cloudflare compatibility:
|
|
43
|
-
|
|
44
|
-
```javascript
|
|
45
|
-
vite: {
|
|
46
|
-
ssr: {
|
|
47
|
-
external: ['node:fs', 'fs', 'path', etc.],
|
|
48
|
-
noExternal: ['loopwind'], // Bundle loopwind SDK
|
|
49
|
-
},
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Deployment Steps
|
|
54
|
-
|
|
55
|
-
### First Time Setup
|
|
56
|
-
|
|
57
|
-
1. **Install Wrangler CLI** (if not already installed):
|
|
58
|
-
```bash
|
|
59
|
-
npm install -g wrangler
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
2. **Login to Cloudflare**:
|
|
63
|
-
```bash
|
|
64
|
-
npx wrangler login
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
3. **Build and Deploy**:
|
|
68
|
-
```bash
|
|
69
|
-
npm run deploy
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Subsequent Deployments
|
|
73
|
-
|
|
74
|
-
Just run:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
npm run deploy
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
Or separately:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
npm run build
|
|
84
|
-
npm run cf:deploy
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## Environment
|
|
88
|
-
|
|
89
|
-
- **Node.js**: 18+ recommended
|
|
90
|
-
- **Package Manager**: npm
|
|
91
|
-
- **Platform**: Cloudflare Workers + Assets
|
|
92
|
-
- **Build Time**: ~2-3 seconds
|
|
93
|
-
|
|
94
|
-
## Performance
|
|
95
|
-
|
|
96
|
-
- **Build**: ~2.7s
|
|
97
|
-
- **OG Images**: Generated at build time (< 100ms each)
|
|
98
|
-
- **Caching**: Immutable cache headers for all OG images
|
|
99
|
-
- **CDN**: Cloudflare's global network
|
|
100
|
-
|
|
101
|
-
## Verify Deployment
|
|
102
|
-
|
|
103
|
-
After deployment, test:
|
|
104
|
-
|
|
105
|
-
1. **Home page**: `https://your-domain.com`
|
|
106
|
-
2. **OG image**: `https://your-domain.com/api/og/sdk`
|
|
107
|
-
3. **API routes**: All `/api/*` routes should work
|
|
108
|
-
|
|
109
|
-
## Troubleshooting
|
|
110
|
-
|
|
111
|
-
### Build Fails
|
|
112
|
-
|
|
113
|
-
- Check Node.js version (18+)
|
|
114
|
-
- Run `npm install` to ensure dependencies are up to date
|
|
115
|
-
- Check `npm run build` output for errors
|
|
116
|
-
|
|
117
|
-
### OG Images Not Generating
|
|
118
|
-
|
|
119
|
-
- Verify loopwind is installed: `npm list loopwind`
|
|
120
|
-
- Check `/api/og/[...slug].tsx` is present
|
|
121
|
-
- Test locally: `npm run dev` then visit `http://localhost:4321/api/og/sdk`
|
|
122
|
-
|
|
123
|
-
### Cloudflare Deploy Fails
|
|
124
|
-
|
|
125
|
-
- Ensure you're logged in: `npx wrangler whoami`
|
|
126
|
-
- Check `wrangler.toml` configuration (should not exist for Pages)
|
|
127
|
-
- Verify Cloudflare account has Pages enabled
|
|
128
|
-
|
|
129
|
-
## Local Development
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
npm run dev
|
|
133
|
-
# Visit: http://localhost:4321
|
|
134
|
-
# Test OG: http://localhost:4321/api/og/sdk
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Documentation
|
|
138
|
-
|
|
139
|
-
- [loopwind SDK Docs](/sdk)
|
|
140
|
-
- [OG Images Setup](./OG_IMAGES.md)
|
|
141
|
-
- [Cloudflare Astro Guide](https://developers.cloudflare.com/workers/framework-guides/web-apps/astro/)
|
|
142
|
-
|
|
143
|
-
|
package/website/OG_IMAGES.md
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# Dynamic OG Image Generation with loopwind SDK
|
|
2
|
-
|
|
3
|
-
This website generates Open Graph images dynamically for each documentation page using the **loopwind SDK**.
|
|
4
|
-
|
|
5
|
-
## How It Works
|
|
6
|
-
|
|
7
|
-
1. **API Route**: `/src/pages/api/og/[...slug].ts`
|
|
8
|
-
- Uses `loopwind/sdk` to define and render OG image templates
|
|
9
|
-
- Generates 1200x630 PNG images on-the-fly
|
|
10
|
-
- Pre-renders images at build time for all known pages
|
|
11
|
-
- Falls back to runtime generation for unknown pages
|
|
12
|
-
|
|
13
|
-
2. **Base Layout**: `/src/layouts/BaseLayout.astro`
|
|
14
|
-
- Automatically generates OG image URL from page slug
|
|
15
|
-
- Format: `/api/og/{page-slug}`
|
|
16
|
-
- Falls back to static image if custom image is provided
|
|
17
|
-
|
|
18
|
-
3. **Docs Layout**: `/src/layouts/DocsLayout.astro`
|
|
19
|
-
- Same dynamic OG image generation
|
|
20
|
-
- Integrated with all MDX documentation pages
|
|
21
|
-
|
|
22
|
-
## OG Image Template
|
|
23
|
-
|
|
24
|
-
The template uses:
|
|
25
|
-
- **loopwind SDK** with `defineTemplate()` and `renderImage()`
|
|
26
|
-
- **shadcn/ui dark theme** colors
|
|
27
|
-
- **Responsive design** with title, description, logo, and branding
|
|
28
|
-
- **Static rendering** at build time for performance
|
|
29
|
-
|
|
30
|
-
## Page Metadata
|
|
31
|
-
|
|
32
|
-
Page metadata is defined in the API route at `/src/pages/api/og/[...slug].ts`:
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
const pageMetadata: Record<string, { title: string; description: string }> = {
|
|
36
|
-
'index': {
|
|
37
|
-
title: 'Getting Started',
|
|
38
|
-
description: 'CLI-based Image & Video Generator',
|
|
39
|
-
},
|
|
40
|
-
'sdk': {
|
|
41
|
-
title: 'SDK',
|
|
42
|
-
description: 'Use loopwind programmatically',
|
|
43
|
-
},
|
|
44
|
-
// ... more pages
|
|
45
|
-
};
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Adding a New Page
|
|
49
|
-
|
|
50
|
-
When you add a new MDX page, add its metadata to the `pageMetadata` object:
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
'your-new-page': {
|
|
54
|
-
title: 'Your Page Title',
|
|
55
|
-
description: 'Your page description for OG image',
|
|
56
|
-
},
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
The OG image will be automatically generated and available at:
|
|
60
|
-
- Build time: `/api/og/your-new-page` (pre-rendered)
|
|
61
|
-
- Runtime: Generated on first request if not pre-rendered
|
|
62
|
-
|
|
63
|
-
## Testing OG Images
|
|
64
|
-
|
|
65
|
-
**Local development:**
|
|
66
|
-
```bash
|
|
67
|
-
npm run dev
|
|
68
|
-
# Visit: http://localhost:4321/api/og/sdk
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**Check OG tags:**
|
|
72
|
-
```bash
|
|
73
|
-
curl -I http://localhost:4321/api/og/sdk
|
|
74
|
-
# Should return: Content-Type: image/png
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**View in browser:**
|
|
78
|
-
Open any page and check the `<meta property="og:image">` tag in the HTML source.
|
|
79
|
-
|
|
80
|
-
## Benefits
|
|
81
|
-
|
|
82
|
-
✅ **Zero static assets** - No need to generate and commit OG images
|
|
83
|
-
✅ **Auto-updates** - OG images update when content changes
|
|
84
|
-
✅ **Consistent design** - All pages use the same template
|
|
85
|
-
✅ **Fast** - Pre-rendered at build time for production
|
|
86
|
-
✅ **SEO-friendly** - Proper OG tags for social sharing
|
|
87
|
-
✅ **Type-safe** - Full TypeScript support with loopwind SDK
|
|
88
|
-
|
|
89
|
-
## Performance
|
|
90
|
-
|
|
91
|
-
- **Build time**: ~50-100ms per image
|
|
92
|
-
- **Runtime**: Cached with `immutable` headers
|
|
93
|
-
- **Size**: ~50-80KB per PNG
|
|
94
|
-
- **Format**: 1200x630 PNG (standard OG size)
|
|
95
|
-
|
|
96
|
-
## Example Usage
|
|
97
|
-
|
|
98
|
-
Every MDX page automatically gets an OG image:
|
|
99
|
-
|
|
100
|
-
```astro
|
|
101
|
-
---
|
|
102
|
-
layout: ../layouts/DocsLayout.astro
|
|
103
|
-
title: My Page Title
|
|
104
|
-
description: My page description
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
# My Page
|
|
108
|
-
|
|
109
|
-
Content here...
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
This automatically generates:
|
|
113
|
-
- OG image at `/api/og/my-page`
|
|
114
|
-
- Meta tags: `<meta property="og:image" content="https://loopwind.dev/api/og/my-page" />`
|
|
115
|
-
- Pre-rendered at build time for Cloudflare deployment
|
|
116
|
-
|
|
117
|
-
## Customization
|
|
118
|
-
|
|
119
|
-
To customize the OG image template, edit `/src/pages/api/og/[...slug].ts`:
|
|
120
|
-
|
|
121
|
-
```typescript
|
|
122
|
-
const ogTemplate = defineTemplate({
|
|
123
|
-
name: 'loopwind-og',
|
|
124
|
-
size: { width: 1200, height: 630 },
|
|
125
|
-
config: {
|
|
126
|
-
colors: {
|
|
127
|
-
// Your custom colors
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
render: ({ tw, title, description }) => (
|
|
131
|
-
// Your custom JSX
|
|
132
|
-
),
|
|
133
|
-
});
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
## Related Documentation
|
|
137
|
-
|
|
138
|
-
- [loopwind SDK](/sdk) - Using loopwind programmatically
|
|
139
|
-
- [Styling](/styling) - Tailwind CSS styling guide
|
|
140
|
-
- [Config](/config) - loopwind.json configuration
|
|
141
|
-
|
|
142
|
-
|
package/website/README.md
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
# loopwind Documentation Website
|
|
2
|
-
|
|
3
|
-
This is the documentation website for loopwind, built with [Astro](https://astro.build/) and styled with [Tailwind CSS 4](https://tailwindcss.com/) using shadcn/ui design tokens.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- **Dynamic OG Images**: Each page generates its own Open Graph image on-the-fly using the loopwind SDK
|
|
8
|
-
- **Dark Theme**: Beautiful dark mode optimized for readability
|
|
9
|
-
- **Responsive Design**: Works perfectly on desktop, tablet, and mobile
|
|
10
|
-
- **AI-Friendly**: Copy raw markdown for LLM context
|
|
11
|
-
|
|
12
|
-
## Development
|
|
13
|
-
|
|
14
|
-
Install dependencies:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
cd website
|
|
18
|
-
npm install
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Start the dev server:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm run dev
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Open http://localhost:4321
|
|
28
|
-
|
|
29
|
-
## Build
|
|
30
|
-
|
|
31
|
-
Build for production:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
npm run build
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Preview the build:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
npm run preview
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Dynamic OG Images
|
|
44
|
-
|
|
45
|
-
Each documentation page automatically gets a custom OG image generated using the loopwind SDK. The images are:
|
|
46
|
-
|
|
47
|
-
- Generated at build time (pre-rendered)
|
|
48
|
-
- Cached indefinitely
|
|
49
|
-
- Customized per page with title and description
|
|
50
|
-
|
|
51
|
-
The OG image API route is at `src/pages/api/og/[...slug].ts`.
|
|
52
|
-
|
|
53
|
-
## Deployment
|
|
54
|
-
|
|
55
|
-
### Netlify (Current)
|
|
56
|
-
|
|
57
|
-
This site is configured to deploy on Netlify. The `netlify.toml` file in the root directory handles the configuration.
|
|
58
|
-
|
|
59
|
-
**Netlify Settings:**
|
|
60
|
-
- Base directory: `website`
|
|
61
|
-
- Build command: `npm run build`
|
|
62
|
-
- Publish directory: `dist`
|
|
63
|
-
|
|
64
|
-
Just connect your GitHub repo to Netlify and it will automatically deploy!
|
|
65
|
-
|
|
66
|
-
### Other Platforms
|
|
67
|
-
|
|
68
|
-
You can also deploy to:
|
|
69
|
-
- **Vercel**: Connect repo, set build settings
|
|
70
|
-
- **Cloudflare Pages**: Install `@astrojs/cloudflare` adapter
|
|
71
|
-
- **GitHub Pages**: May need additional configuration
|
|
72
|
-
|
|
73
|
-
## Adding Documentation
|
|
74
|
-
|
|
75
|
-
Documentation pages are in `src/pages/` as `.mdx` files. They use the `DocsLayout` for consistent styling and navigation.
|
|
76
|
-
|
|
77
|
-
To add a new page:
|
|
78
|
-
|
|
79
|
-
1. Create `src/pages/your-page.mdx`
|
|
80
|
-
2. Add frontmatter:
|
|
81
|
-
```yaml
|
|
82
|
-
---
|
|
83
|
-
layout: ../layouts/DocsLayout.astro
|
|
84
|
-
title: Your Page Title
|
|
85
|
-
description: Page description
|
|
86
|
-
---
|
|
87
|
-
```
|
|
88
|
-
3. Add to navigation in `src/layouts/DocsLayout.astro`
|
|
89
|
-
4. Add metadata to `src/pages/api/og/[...slug].ts` for OG images
|
|
90
|
-
|
|
91
|
-
## Styling
|
|
92
|
-
|
|
93
|
-
The site uses **Tailwind CSS 4** with shadcn/ui-inspired design tokens defined in `src/styles/global.css`:
|
|
94
|
-
|
|
95
|
-
- Dark theme optimized for readability
|
|
96
|
-
- Semantic color names (`background`, `foreground`, `muted`, `accent`, etc.)
|
|
97
|
-
- Consistent spacing and typography
|
|
98
|
-
- Custom brand gradient for the logo
|
|
99
|
-
|
|
100
|
-
All styles use Tailwind utility classes and the `@theme` directive for design tokens.
|
|
101
|
-
|
|
102
|
-
## Structure
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
website/
|
|
106
|
-
├── src/
|
|
107
|
-
│ ├── components/
|
|
108
|
-
│ │ ├── Hero.astro # Home page hero
|
|
109
|
-
│ │ ├── Logo.astro # loopwind logo
|
|
110
|
-
│ │ └── CodeVideoDemo.astro # Code + video side-by-side
|
|
111
|
-
│ ├── layouts/
|
|
112
|
-
│ │ ├── BaseLayout.astro # Base HTML with meta tags
|
|
113
|
-
│ │ └── DocsLayout.astro # Docs with sidebar
|
|
114
|
-
│ ├── pages/
|
|
115
|
-
│ │ ├── index.mdx # Getting Started
|
|
116
|
-
│ │ ├── getting-started.mdx # Installation guide
|
|
117
|
-
│ │ ├── templates.mdx # Installing Templates
|
|
118
|
-
│ │ ├── images.mdx # Image Rendering
|
|
119
|
-
│ │ ├── video.mdx # Video Rendering
|
|
120
|
-
│ │ ├── animation.mdx # Animation Classes
|
|
121
|
-
│ │ ├── helpers.mdx # QR & Composition
|
|
122
|
-
│ │ ├── styling.mdx # Tailwind & shadcn/ui
|
|
123
|
-
│ │ ├── fonts.mdx # Font Handling
|
|
124
|
-
│ │ ├── config.mdx # loopwind.json reference
|
|
125
|
-
│ │ ├── agents.mdx # AI Agents & Cursor
|
|
126
|
-
│ │ ├── sdk.mdx # Programmatic SDK
|
|
127
|
-
│ │ ├── preview.mdx # Preview Mode
|
|
128
|
-
│ │ ├── llm.txt.ts # Combined docs endpoint
|
|
129
|
-
│ │ └── api/
|
|
130
|
-
│ │ ├── og/[...slug].ts # Dynamic OG image generation
|
|
131
|
-
│ │ └── raw-markdown/[...path].ts # Raw markdown API
|
|
132
|
-
│ └── styles/
|
|
133
|
-
│ └── global.css # Tailwind 4 + design tokens
|
|
134
|
-
├── public/
|
|
135
|
-
│ ├── favicon.svg
|
|
136
|
-
│ ├── demo-intro.mp4 # Generated demo video
|
|
137
|
-
│ └── robots.txt
|
|
138
|
-
├── scripts/
|
|
139
|
-
│ └── generate-demo-video.mjs # Script to generate demo
|
|
140
|
-
├── astro.config.mjs # Includes @tailwindcss/vite
|
|
141
|
-
├── package.json
|
|
142
|
-
└── tsconfig.json
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Technologies
|
|
146
|
-
|
|
147
|
-
- **[Astro](https://astro.build/)** - Static site generator
|
|
148
|
-
- **[Tailwind CSS 4](https://tailwindcss.com/)** - Utility-first CSS
|
|
149
|
-
- **[MDX](https://mdxjs.com/)** - Markdown with JSX
|
|
150
|
-
- **[loopwind SDK](https://loopwind.dev/sdk)** - Dynamic OG image generation
|
|
151
|
-
- **[shadcn/ui](https://ui.shadcn.com/)** - Design system tokens
|
|
152
|
-
|
|
153
|
-
## Performance
|
|
154
|
-
|
|
155
|
-
- Fast page loads with Astro's static generation
|
|
156
|
-
- Pre-rendered OG images for instant social previews
|
|
157
|
-
- Optimized fonts and assets
|
|
158
|
-
- Minimal JavaScript bundle
|
package/website/astro.config.mjs
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'astro/config';
|
|
2
|
-
import mdx from '@astrojs/mdx';
|
|
3
|
-
import tailwindcss from '@tailwindcss/vite';
|
|
4
|
-
import cloudflare from '@astrojs/cloudflare';
|
|
5
|
-
import react from '@astrojs/react';
|
|
6
|
-
|
|
7
|
-
// https://astro.build/config
|
|
8
|
-
export default defineConfig({
|
|
9
|
-
site: 'https://loopwind.dev',
|
|
10
|
-
output: 'hybrid',
|
|
11
|
-
adapter: cloudflare({
|
|
12
|
-
platformProxy: {
|
|
13
|
-
enabled: true,
|
|
14
|
-
},
|
|
15
|
-
}),
|
|
16
|
-
integrations: [mdx(), react()],
|
|
17
|
-
vite: {
|
|
18
|
-
plugins: [tailwindcss()],
|
|
19
|
-
ssr: {
|
|
20
|
-
// Only external Node.js built-ins that aren't used in workers paths
|
|
21
|
-
external: [
|
|
22
|
-
'node:fs/promises',
|
|
23
|
-
'node:fs',
|
|
24
|
-
'node:path',
|
|
25
|
-
'node:os',
|
|
26
|
-
'fs',
|
|
27
|
-
'fs/promises',
|
|
28
|
-
'path',
|
|
29
|
-
'os',
|
|
30
|
-
],
|
|
31
|
-
},
|
|
32
|
-
optimizeDeps: {
|
|
33
|
-
exclude: ['@resvg/resvg-wasm'],
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
markdown: {
|
|
37
|
-
shikiConfig: {
|
|
38
|
-
theme: 'github-dark',
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
});
|