loopwind 0.23.0 → 0.24.0

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.
Files changed (497) hide show
  1. package/README.md +13 -117
  2. package/dist/cli.js +16 -10
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +6 -10
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/agent.d.ts +8 -0
  8. package/dist/commands/agent.d.ts.map +1 -0
  9. package/dist/commands/agent.js +101 -0
  10. package/dist/commands/agent.js.map +1 -0
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +17 -7
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/render.d.ts.map +1 -1
  15. package/dist/commands/render.js +17 -19
  16. package/dist/commands/render.js.map +1 -1
  17. package/dist/default-templates/AGENTS.md +10 -24
  18. package/dist/lib/config.d.ts +2 -3
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +4 -9
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/constants.d.ts +1 -3
  23. package/dist/lib/constants.d.ts.map +1 -1
  24. package/dist/lib/constants.js +2 -4
  25. package/dist/lib/constants.js.map +1 -1
  26. package/dist/lib/installer.d.ts +2 -0
  27. package/dist/lib/installer.d.ts.map +1 -1
  28. package/dist/lib/installer.js +6 -7
  29. package/dist/lib/installer.js.map +1 -1
  30. package/dist/lib/renderer.d.ts.map +1 -1
  31. package/dist/lib/renderer.js +4 -1
  32. package/dist/lib/renderer.js.map +1 -1
  33. package/dist/lib/utils.d.ts +13 -29
  34. package/dist/lib/utils.d.ts.map +1 -1
  35. package/dist/lib/utils.js +45 -155
  36. package/dist/lib/utils.js.map +1 -1
  37. package/dist/types/config.d.ts +0 -2
  38. package/dist/types/config.d.ts.map +1 -1
  39. package/dist/types/config.js.map +1 -1
  40. package/package.json +1 -15
  41. package/REGISTRY_SETUP.md +0 -363
  42. package/dist/default-templates/image/template.d.ts +0 -20
  43. package/dist/default-templates/image/template.d.ts.map +0 -1
  44. package/dist/default-templates/image/template.js +0 -18
  45. package/dist/default-templates/image/template.js.map +0 -1
  46. package/dist/default-templates/image/template.tsx +0 -20
  47. package/dist/default-templates/kitchen-sink/template.tsx +0 -64
  48. package/dist/default-templates/page/template.tsx +0 -37
  49. package/dist/default-templates/video/template.d.ts +0 -26
  50. package/dist/default-templates/video/template.d.ts.map +0 -1
  51. package/dist/default-templates/video/template.js +0 -33
  52. package/dist/default-templates/video/template.js.map +0 -1
  53. package/dist/default-templates/video/template.tsx +0 -37
  54. package/dist/default-templates/website/pages/home.tsx +0 -17
  55. package/dist/default-templates/website/parts/footer.tsx +0 -17
  56. package/dist/default-templates/website/parts/header.tsx +0 -17
  57. package/dist/default-templates/website/template.tsx +0 -17
  58. package/dist/default-templates/website-template/pages/home.tsx +0 -13
  59. package/dist/default-templates/website-template/parts/footer.tsx +0 -15
  60. package/dist/default-templates/website-template/parts/header.tsx +0 -15
  61. package/dist/default-templates/website-template/template.tsx +0 -32
  62. package/dist/lib/encode-worker.d.ts +0 -2
  63. package/dist/lib/encode-worker.d.ts.map +0 -1
  64. package/dist/lib/encode-worker.js +0 -29
  65. package/dist/lib/encode-worker.js.map +0 -1
  66. package/dist/lib/mjpeg-muxer.d.ts +0 -46
  67. package/dist/lib/mjpeg-muxer.d.ts.map +0 -1
  68. package/dist/lib/mjpeg-muxer.js +0 -513
  69. package/dist/lib/mjpeg-muxer.js.map +0 -1
  70. package/dist/lib/render-core.d.ts +0 -63
  71. package/dist/lib/render-core.d.ts.map +0 -1
  72. package/dist/lib/render-core.js +0 -65
  73. package/dist/lib/render-core.js.map +0 -1
  74. package/dist/lib/tailwind-browser.d.ts +0 -27
  75. package/dist/lib/tailwind-browser.d.ts.map +0 -1
  76. package/dist/lib/tailwind-browser.js +0 -853
  77. package/dist/lib/tailwind-browser.js.map +0 -1
  78. package/dist/lib/video-player.d.ts +0 -25
  79. package/dist/lib/video-player.d.ts.map +0 -1
  80. package/dist/lib/video-player.js +0 -392
  81. package/dist/lib/video-player.js.map +0 -1
  82. package/dist/sdk/compiler.d.ts +0 -94
  83. package/dist/sdk/compiler.d.ts.map +0 -1
  84. package/dist/sdk/compiler.js +0 -122
  85. package/dist/sdk/compiler.js.map +0 -1
  86. package/dist/sdk/edge/index.d.ts +0 -91
  87. package/dist/sdk/edge/index.d.ts.map +0 -1
  88. package/dist/sdk/edge/index.js +0 -187
  89. package/dist/sdk/edge/index.js.map +0 -1
  90. package/dist/sdk/index.d.ts +0 -62
  91. package/dist/sdk/index.d.ts.map +0 -1
  92. package/dist/sdk/index.js +0 -141
  93. package/dist/sdk/index.js.map +0 -1
  94. package/dist/sdk/preview.d.ts +0 -65
  95. package/dist/sdk/preview.d.ts.map +0 -1
  96. package/dist/sdk/preview.js +0 -262
  97. package/dist/sdk/preview.js.map +0 -1
  98. package/dist/sdk/template.d.ts +0 -162
  99. package/dist/sdk/template.d.ts.map +0 -1
  100. package/dist/sdk/template.js +0 -231
  101. package/dist/sdk/template.js.map +0 -1
  102. package/dist/sdk/workers/index.d.ts +0 -135
  103. package/dist/sdk/workers/index.d.ts.map +0 -1
  104. package/dist/sdk/workers/index.js +0 -271
  105. package/dist/sdk/workers/index.js.map +0 -1
  106. package/dist/sdk/workers/tailwind-config.d.ts +0 -48
  107. package/dist/sdk/workers/tailwind-config.d.ts.map +0 -1
  108. package/dist/sdk/workers/tailwind-config.js +0 -187
  109. package/dist/sdk/workers/tailwind-config.js.map +0 -1
  110. package/dist/sdk/workers/tailwind.d.ts +0 -9
  111. package/dist/sdk/workers/tailwind.d.ts.map +0 -1
  112. package/dist/sdk/workers/tailwind.js +0 -8
  113. package/dist/sdk/workers/tailwind.js.map +0 -1
  114. package/examples/code-editor-templates.ts +0 -173
  115. package/examples/nextjs-api/README.md +0 -180
  116. package/examples/nextjs-api/package.json +0 -21
  117. package/examples/nextjs-api/pages/api/intro-video.ts +0 -53
  118. package/examples/nextjs-api/pages/api/og-image.ts +0 -50
  119. package/examples/nextjs-template-import.ts +0 -58
  120. package/examples/sdk-video-preview.tsx +0 -120
  121. package/examples/template-compiler-workflow.ts +0 -251
  122. package/examples/visual-builder-templates.ts +0 -336
  123. package/render-examples-600x400.mjs +0 -161
  124. package/render-spring-variants-fixed.mjs +0 -60
  125. package/render-staggered-text.mjs +0 -56
  126. package/test-cloudflare-worker/README.md +0 -64
  127. package/test-cloudflare-worker/dist/README.md +0 -1
  128. package/test-cloudflare-worker/dist/index.js +0 -23743
  129. package/test-cloudflare-worker/dist/index.js.map +0 -8
  130. package/test-cloudflare-worker/package-lock.json +0 -1773
  131. package/test-cloudflare-worker/package.json +0 -25
  132. package/test-cloudflare-worker/test-sdk.mjs +0 -75
  133. package/test-cloudflare-worker/wrangler.toml +0 -14
  134. package/test-font-files.mjs +0 -72
  135. package/test-jsx-support.mjs +0 -146
  136. package/test-sdk-config.mjs +0 -454
  137. package/test-sdk-source-config.mjs +0 -427
  138. package/test-sdk-user-templates.mjs +0 -469
  139. package/test-static-debug.tsx +0 -19
  140. package/test-templates/TESTS.md +0 -63
  141. package/test-templates/config-test.mjs +0 -17
  142. package/test-templates/demo-intro-props.json +0 -4
  143. package/test-templates/run-tests.sh +0 -44
  144. package/test-templates/test-sdk.mjs +0 -139
  145. package/test-video-720p.mjs +0 -96
  146. package/test-video-breakdown.mjs +0 -98
  147. package/test-video-perf-1080.mjs +0 -67
  148. package/test-video-perf.mjs +0 -56
  149. package/test-video-props.json +0 -3
  150. package/test-worker-1080p.mjs +0 -103
  151. package/test-worker-viability.mjs +0 -140
  152. package/website/.astro/content.db +0 -0
  153. package/website/.astro/integrations/_inox-tools_astro-when/types.d.ts +0 -1
  154. package/website/.astro/integrations/astro_db/db.d.ts +0 -15
  155. package/website/.astro/settings.json +0 -5
  156. package/website/.astro/types.d.ts +0 -2
  157. package/website/DEPLOYMENT.md +0 -143
  158. package/website/OG_IMAGES.md +0 -142
  159. package/website/README.md +0 -158
  160. package/website/astro.config.mjs +0 -41
  161. package/website/dist/.gitkeep +0 -5
  162. package/website/dist/_astro/PlaygroundEditor.DzFavsm8.js +0 -26
  163. package/website/dist/_astro/VideoPreviewClient.BrajhYmh.js +0 -1
  164. package/website/dist/_astro/agents.CZXv4DCM.css +0 -1
  165. package/website/dist/_astro/client.BHSq4mdQ.js +0 -33
  166. package/website/dist/_astro/index.CTbGshLK.js +0 -9
  167. package/website/dist/_astro/jsx-runtime.BjG_zV1W.js +0 -9
  168. package/website/dist/_routes.json +0 -31
  169. package/website/dist/_worker.js/_@astrojs-ssr-adapter.mjs +0 -1033
  170. package/website/dist/_worker.js/_astro-internal_middleware.mjs +0 -40
  171. package/website/dist/_worker.js/chunks/Logo_Cud5QvBJ.mjs +0 -22
  172. package/website/dist/_worker.js/chunks/_@astro-renderers_-YVK7NHa.mjs +0 -15015
  173. package/website/dist/_worker.js/chunks/abap_BTmsHiP5.mjs +0 -1
  174. package/website/dist/_worker.js/chunks/actionscript-3_DmBelb1E.mjs +0 -1
  175. package/website/dist/_worker.js/chunks/ada_8-E0ahCN.mjs +0 -1
  176. package/website/dist/_worker.js/chunks/andromeeda_XI-CXx50.mjs +0 -1
  177. package/website/dist/_worker.js/chunks/angular-html_DKGh3gGH.mjs +0 -1
  178. package/website/dist/_worker.js/chunks/angular-ts_-qZGsJoA.mjs +0 -1
  179. package/website/dist/_worker.js/chunks/apache_ijTUt0Ee.mjs +0 -1
  180. package/website/dist/_worker.js/chunks/apex_agu1c6Sh.mjs +0 -1
  181. package/website/dist/_worker.js/chunks/apl_Bj2f7Art.mjs +0 -1
  182. package/website/dist/_worker.js/chunks/applescript_B_vXrOh3.mjs +0 -1
  183. package/website/dist/_worker.js/chunks/ara_DCEQ2rnh.mjs +0 -1
  184. package/website/dist/_worker.js/chunks/asciidoc_CGN_EkYS.mjs +0 -1
  185. package/website/dist/_worker.js/chunks/asm_BBWZgnDp.mjs +0 -1
  186. package/website/dist/_worker.js/chunks/astro/assets-service_j52rQLzU.mjs +0 -721
  187. package/website/dist/_worker.js/chunks/astro/server_CsUrSZgd.mjs +0 -2512
  188. package/website/dist/_worker.js/chunks/astro-designed-error-pages_1ELXm5Tt.mjs +0 -542
  189. package/website/dist/_worker.js/chunks/astro_Dr_hht3h.mjs +0 -1
  190. package/website/dist/_worker.js/chunks/aurora-x_9GHG8nSq.mjs +0 -1
  191. package/website/dist/_worker.js/chunks/awk_DHRvhXot.mjs +0 -1
  192. package/website/dist/_worker.js/chunks/ayu-dark_CcvqmEHE.mjs +0 -1
  193. package/website/dist/_worker.js/chunks/ballerina_C7SdeSZb.mjs +0 -1
  194. package/website/dist/_worker.js/chunks/bat_Dv4A3u45.mjs +0 -1
  195. package/website/dist/_worker.js/chunks/beancount_BfPf9Luv.mjs +0 -1
  196. package/website/dist/_worker.js/chunks/berry_B8rfM3lL.mjs +0 -1
  197. package/website/dist/_worker.js/chunks/bibtex_TcjYgtJM.mjs +0 -1
  198. package/website/dist/_worker.js/chunks/bicep_CrlFWCdN.mjs +0 -1
  199. package/website/dist/_worker.js/chunks/blade_lanKVYID.mjs +0 -1
  200. package/website/dist/_worker.js/chunks/bsl_BhppzXMB.mjs +0 -1
  201. package/website/dist/_worker.js/chunks/c_6FBALJTK.mjs +0 -1
  202. package/website/dist/_worker.js/chunks/cadence_2txU9LVE.mjs +0 -1
  203. package/website/dist/_worker.js/chunks/cairo_BkrFAIlP.mjs +0 -1
  204. package/website/dist/_worker.js/chunks/catppuccin-frappe_CkEqIYhU.mjs +0 -1
  205. package/website/dist/_worker.js/chunks/catppuccin-latte_DG4Gx_-v.mjs +0 -1
  206. package/website/dist/_worker.js/chunks/catppuccin-macchiato_Cwi3vCXf.mjs +0 -1
  207. package/website/dist/_worker.js/chunks/catppuccin-mocha_L9_OPlFX.mjs +0 -1
  208. package/website/dist/_worker.js/chunks/clarity_BEAe4Ulu.mjs +0 -1
  209. package/website/dist/_worker.js/chunks/clojure_VnUX6p2g.mjs +0 -1
  210. package/website/dist/_worker.js/chunks/cmake_0-SGkZEj.mjs +0 -1
  211. package/website/dist/_worker.js/chunks/cobol_92M_KGaE.mjs +0 -1
  212. package/website/dist/_worker.js/chunks/codeowners_CzMwskBv.mjs +0 -1
  213. package/website/dist/_worker.js/chunks/codeql_DWJZNHv1.mjs +0 -1
  214. package/website/dist/_worker.js/chunks/coffee_CQjKU2fh.mjs +0 -1
  215. package/website/dist/_worker.js/chunks/common-lisp_BBLWDpS5.mjs +0 -1
  216. package/website/dist/_worker.js/chunks/coq_hedRFV3D.mjs +0 -1
  217. package/website/dist/_worker.js/chunks/cpp_DlS1i6Zs.mjs +0 -1
  218. package/website/dist/_worker.js/chunks/crystal_D6n65fKV.mjs +0 -1
  219. package/website/dist/_worker.js/chunks/csharp_C6FCVFzc.mjs +0 -1
  220. package/website/dist/_worker.js/chunks/css_C5uJEgmJ.mjs +0 -1
  221. package/website/dist/_worker.js/chunks/csv_CtMYuuJl.mjs +0 -1
  222. package/website/dist/_worker.js/chunks/cue_BsPexqx6.mjs +0 -1
  223. package/website/dist/_worker.js/chunks/cypher_apzf6OBi.mjs +0 -1
  224. package/website/dist/_worker.js/chunks/d_DcvIRcgm.mjs +0 -1
  225. package/website/dist/_worker.js/chunks/dark-plus_C01ONtzj.mjs +0 -1
  226. package/website/dist/_worker.js/chunks/dart_WkzM5WrV.mjs +0 -1
  227. package/website/dist/_worker.js/chunks/dax_DjXAO5V4.mjs +0 -1
  228. package/website/dist/_worker.js/chunks/desktop_C92LCxdc.mjs +0 -1
  229. package/website/dist/_worker.js/chunks/diff_CVwM_9XJ.mjs +0 -1
  230. package/website/dist/_worker.js/chunks/docker_DPzgJf6Z.mjs +0 -1
  231. package/website/dist/_worker.js/chunks/dotenv_D_vgANvA.mjs +0 -1
  232. package/website/dist/_worker.js/chunks/dracula-soft_CLnUBwFm.mjs +0 -1
  233. package/website/dist/_worker.js/chunks/dracula_lBVpb6Lb.mjs +0 -1
  234. package/website/dist/_worker.js/chunks/dream-maker_DTLbzd_J.mjs +0 -1
  235. package/website/dist/_worker.js/chunks/edge_i54JYm3_.mjs +0 -1
  236. package/website/dist/_worker.js/chunks/elixir_BJCIjTu4.mjs +0 -1
  237. package/website/dist/_worker.js/chunks/elm_BbXD39-_.mjs +0 -1
  238. package/website/dist/_worker.js/chunks/emacs-lisp_pxa5cXaN.mjs +0 -1
  239. package/website/dist/_worker.js/chunks/erb_Ccjijeee.mjs +0 -1
  240. package/website/dist/_worker.js/chunks/erlang_B2VM_hi7.mjs +0 -1
  241. package/website/dist/_worker.js/chunks/everforest-dark_BxvIPBim.mjs +0 -1
  242. package/website/dist/_worker.js/chunks/everforest-light_B7VoyaJM.mjs +0 -1
  243. package/website/dist/_worker.js/chunks/fennel_D-uo7X6c.mjs +0 -1
  244. package/website/dist/_worker.js/chunks/fish_BjePoK3m.mjs +0 -1
  245. package/website/dist/_worker.js/chunks/fluent_C8fgkzLX.mjs +0 -1
  246. package/website/dist/_worker.js/chunks/fortran-fixed-form_D1pu5zrc.mjs +0 -1
  247. package/website/dist/_worker.js/chunks/fortran-free-form_CSGOhJD6.mjs +0 -1
  248. package/website/dist/_worker.js/chunks/fsharp_B0xy-A4Y.mjs +0 -1
  249. package/website/dist/_worker.js/chunks/gdresource_CWppjlHq.mjs +0 -1
  250. package/website/dist/_worker.js/chunks/gdscript_eQCHchcS.mjs +0 -1
  251. package/website/dist/_worker.js/chunks/gdshader_C4kxepX7.mjs +0 -1
  252. package/website/dist/_worker.js/chunks/genie_ACtQLcDW.mjs +0 -1
  253. package/website/dist/_worker.js/chunks/gherkin_BFp2uKUd.mjs +0 -1
  254. package/website/dist/_worker.js/chunks/git-commit_CLg9ZwMV.mjs +0 -1
  255. package/website/dist/_worker.js/chunks/git-rebase_DG8A80Nt.mjs +0 -1
  256. package/website/dist/_worker.js/chunks/github-dark-default_BI0EP2Kv.mjs +0 -1
  257. package/website/dist/_worker.js/chunks/github-dark-dimmed_a_NIC0Xb.mjs +0 -1
  258. package/website/dist/_worker.js/chunks/github-dark-high-contrast_jZGqT7hk.mjs +0 -1
  259. package/website/dist/_worker.js/chunks/github-dark_CHCDNd2O.mjs +0 -1
  260. package/website/dist/_worker.js/chunks/github-light-default_DRbOW5RG.mjs +0 -1
  261. package/website/dist/_worker.js/chunks/github-light-high-contrast_tn_kWutM.mjs +0 -1
  262. package/website/dist/_worker.js/chunks/github-light_D9brYzot.mjs +0 -1
  263. package/website/dist/_worker.js/chunks/gleam_Dmhu1oxW.mjs +0 -1
  264. package/website/dist/_worker.js/chunks/glimmer-js_BfZbXy8A.mjs +0 -1
  265. package/website/dist/_worker.js/chunks/glimmer-ts_B9QVICrD.mjs +0 -1
  266. package/website/dist/_worker.js/chunks/glsl_DD2PPwOs.mjs +0 -1
  267. package/website/dist/_worker.js/chunks/gnuplot_D2OYChUX.mjs +0 -1
  268. package/website/dist/_worker.js/chunks/go_DYGFTe3h.mjs +0 -1
  269. package/website/dist/_worker.js/chunks/graphql_B7XsT3nH.mjs +0 -1
  270. package/website/dist/_worker.js/chunks/groovy_BO12Uwkl.mjs +0 -1
  271. package/website/dist/_worker.js/chunks/hack_CB2_ztCP.mjs +0 -1
  272. package/website/dist/_worker.js/chunks/haml_CyfDcDD3.mjs +0 -1
  273. package/website/dist/_worker.js/chunks/handlebars_CfpxpWm2.mjs +0 -1
  274. package/website/dist/_worker.js/chunks/haskell_jUeC5uN5.mjs +0 -1
  275. package/website/dist/_worker.js/chunks/haxe_B6GxP1WB.mjs +0 -1
  276. package/website/dist/_worker.js/chunks/hcl_DwoHV2oh.mjs +0 -1
  277. package/website/dist/_worker.js/chunks/hjson_DV7cJRk4.mjs +0 -1
  278. package/website/dist/_worker.js/chunks/hlsl_BlFCscPI.mjs +0 -1
  279. package/website/dist/_worker.js/chunks/houston_COBFG1Mx.mjs +0 -1
  280. package/website/dist/_worker.js/chunks/html-derivative_C9pJ337h.mjs +0 -1
  281. package/website/dist/_worker.js/chunks/html_D1OkrZS5.mjs +0 -1
  282. package/website/dist/_worker.js/chunks/http_DIGXRqvJ.mjs +0 -1
  283. package/website/dist/_worker.js/chunks/hxml_DEwh9i-c.mjs +0 -1
  284. package/website/dist/_worker.js/chunks/hy_DDoIgW1K.mjs +0 -1
  285. package/website/dist/_worker.js/chunks/imba_B00zbHo4.mjs +0 -1
  286. package/website/dist/_worker.js/chunks/index_BDWR1Q-q.mjs +0 -1861
  287. package/website/dist/_worker.js/chunks/ini_D7XQA_p8.mjs +0 -1
  288. package/website/dist/_worker.js/chunks/java_B9wdFd8K.mjs +0 -1
  289. package/website/dist/_worker.js/chunks/javascript_CLsPGOON.mjs +0 -1
  290. package/website/dist/_worker.js/chunks/jinja_jarBCAN1.mjs +0 -1
  291. package/website/dist/_worker.js/chunks/jison_oGg3J708.mjs +0 -1
  292. package/website/dist/_worker.js/chunks/json5_DlZ1Kyaa.mjs +0 -1
  293. package/website/dist/_worker.js/chunks/json_DaYk_FMp.mjs +0 -1
  294. package/website/dist/_worker.js/chunks/jsonc_DlwgfSDs.mjs +0 -1
  295. package/website/dist/_worker.js/chunks/jsonl_BbCCVaZF.mjs +0 -1
  296. package/website/dist/_worker.js/chunks/jsonnet_Dt-G75xe.mjs +0 -1
  297. package/website/dist/_worker.js/chunks/jssm_BtKFTj2A.mjs +0 -1
  298. package/website/dist/_worker.js/chunks/jsx_DDx_xAZ8.mjs +0 -1
  299. package/website/dist/_worker.js/chunks/julia_CK0lv68l.mjs +0 -1
  300. package/website/dist/_worker.js/chunks/kanagawa-dragon_BldAK3Oo.mjs +0 -1
  301. package/website/dist/_worker.js/chunks/kanagawa-lotus_DVM8FX9_.mjs +0 -1
  302. package/website/dist/_worker.js/chunks/kanagawa-wave_Dpih0AKP.mjs +0 -1
  303. package/website/dist/_worker.js/chunks/kotlin_kWneB9V_.mjs +0 -1
  304. package/website/dist/_worker.js/chunks/kusto_BKVATd95.mjs +0 -1
  305. package/website/dist/_worker.js/chunks/laserwave_BqatxsVl.mjs +0 -1
  306. package/website/dist/_worker.js/chunks/latex_LVDcGBbc.mjs +0 -1
  307. package/website/dist/_worker.js/chunks/lean_W7qo-5M2.mjs +0 -1
  308. package/website/dist/_worker.js/chunks/less_DFNwJnBH.mjs +0 -1
  309. package/website/dist/_worker.js/chunks/light-plus_Dp0AoWsO.mjs +0 -1
  310. package/website/dist/_worker.js/chunks/liquid_D24qs0pc.mjs +0 -1
  311. package/website/dist/_worker.js/chunks/log_IPWMXriF.mjs +0 -1
  312. package/website/dist/_worker.js/chunks/logo_C6KaatrQ.mjs +0 -1
  313. package/website/dist/_worker.js/chunks/lua_CwnEf-T7.mjs +0 -1
  314. package/website/dist/_worker.js/chunks/luau_Br3-CXjS.mjs +0 -1
  315. package/website/dist/_worker.js/chunks/make_UBNG-kOo.mjs +0 -1
  316. package/website/dist/_worker.js/chunks/markdown_C7mhJFCm.mjs +0 -1
  317. package/website/dist/_worker.js/chunks/marko_4tchUvI7.mjs +0 -1
  318. package/website/dist/_worker.js/chunks/material-theme-darker_SKtaNEPn.mjs +0 -1
  319. package/website/dist/_worker.js/chunks/material-theme-lighter_zOX_DZCH.mjs +0 -1
  320. package/website/dist/_worker.js/chunks/material-theme-ocean_BN9WbhdC.mjs +0 -1
  321. package/website/dist/_worker.js/chunks/material-theme-palenight_DT_covjH.mjs +0 -1
  322. package/website/dist/_worker.js/chunks/material-theme_6RpeM3kc.mjs +0 -1
  323. package/website/dist/_worker.js/chunks/matlab_DCOXsPKR.mjs +0 -1
  324. package/website/dist/_worker.js/chunks/mdc_B9gb2UFP.mjs +0 -1
  325. package/website/dist/_worker.js/chunks/mdx_DGU7Nu9u.mjs +0 -1
  326. package/website/dist/_worker.js/chunks/mermaid_B69URzsZ.mjs +0 -1
  327. package/website/dist/_worker.js/chunks/min-dark_BgxifOMI.mjs +0 -1
  328. package/website/dist/_worker.js/chunks/min-light_BrPjXxUp.mjs +0 -1
  329. package/website/dist/_worker.js/chunks/mipsasm_9U-4_t7k.mjs +0 -1
  330. package/website/dist/_worker.js/chunks/mojo_B0wt7ug3.mjs +0 -1
  331. package/website/dist/_worker.js/chunks/monokai_B6Pxpoyi.mjs +0 -1
  332. package/website/dist/_worker.js/chunks/move_1eid4CyR.mjs +0 -1
  333. package/website/dist/_worker.js/chunks/narrat_Ds6-p5JZ.mjs +0 -1
  334. package/website/dist/_worker.js/chunks/nextflow_v2N1Qlqa.mjs +0 -1
  335. package/website/dist/_worker.js/chunks/nginx_Bp9Ab2NH.mjs +0 -1
  336. package/website/dist/_worker.js/chunks/night-owl_CdwOw_sc.mjs +0 -1
  337. package/website/dist/_worker.js/chunks/nim_BXGDUe53.mjs +0 -1
  338. package/website/dist/_worker.js/chunks/nix_CUig1nJH.mjs +0 -1
  339. package/website/dist/_worker.js/chunks/noop-middleware_B8fH5jha.mjs +0 -10
  340. package/website/dist/_worker.js/chunks/nord_SPoG1iae.mjs +0 -1
  341. package/website/dist/_worker.js/chunks/nushell_DJw1Lca8.mjs +0 -1
  342. package/website/dist/_worker.js/chunks/objective-c_Bktzl_CO.mjs +0 -1
  343. package/website/dist/_worker.js/chunks/objective-cpp_CP4DWdDp.mjs +0 -1
  344. package/website/dist/_worker.js/chunks/ocaml_CeEAs7bZ.mjs +0 -1
  345. package/website/dist/_worker.js/chunks/one-dark-pro_-hIwCNMi.mjs +0 -1
  346. package/website/dist/_worker.js/chunks/one-light_DSmYvJ05.mjs +0 -1
  347. package/website/dist/_worker.js/chunks/pascal_C-S_Ms_o.mjs +0 -1
  348. package/website/dist/_worker.js/chunks/perl_CKamvo15.mjs +0 -1
  349. package/website/dist/_worker.js/chunks/php_BlmcX_F3.mjs +0 -1
  350. package/website/dist/_worker.js/chunks/plastic_Ryt8tVoA.mjs +0 -1
  351. package/website/dist/_worker.js/chunks/plsql_Cb3v7cBj.mjs +0 -1
  352. package/website/dist/_worker.js/chunks/po_DZbdNRlo.mjs +0 -1
  353. package/website/dist/_worker.js/chunks/poimandres_bYmE3_5d.mjs +0 -1
  354. package/website/dist/_worker.js/chunks/polar_pJkMGwoW.mjs +0 -1
  355. package/website/dist/_worker.js/chunks/postcss_BAXSOKgk.mjs +0 -1
  356. package/website/dist/_worker.js/chunks/powerquery_oITMGN4x.mjs +0 -1
  357. package/website/dist/_worker.js/chunks/powershell_6306-xIF.mjs +0 -1
  358. package/website/dist/_worker.js/chunks/prisma_DSDxnZGz.mjs +0 -1
  359. package/website/dist/_worker.js/chunks/prolog_CxG7tjZR.mjs +0 -1
  360. package/website/dist/_worker.js/chunks/proto_CS9ByXm1.mjs +0 -1
  361. package/website/dist/_worker.js/chunks/pug_BMtLJo6U.mjs +0 -1
  362. package/website/dist/_worker.js/chunks/puppet_BfeeSzee.mjs +0 -1
  363. package/website/dist/_worker.js/chunks/purescript_BFfueNaH.mjs +0 -1
  364. package/website/dist/_worker.js/chunks/python_Cc4Faapv.mjs +0 -1
  365. package/website/dist/_worker.js/chunks/qml_C1CTJTK8.mjs +0 -1
  366. package/website/dist/_worker.js/chunks/qmldir_nG1KaqKR.mjs +0 -1
  367. package/website/dist/_worker.js/chunks/qss_Cncxk263.mjs +0 -1
  368. package/website/dist/_worker.js/chunks/r_ChR54Ihi.mjs +0 -1
  369. package/website/dist/_worker.js/chunks/racket_BDrhptDs.mjs +0 -1
  370. package/website/dist/_worker.js/chunks/raku_07OUHa0P.mjs +0 -1
  371. package/website/dist/_worker.js/chunks/razor_DIP3INLa.mjs +0 -1
  372. package/website/dist/_worker.js/chunks/red_DOPXfj-6.mjs +0 -1
  373. package/website/dist/_worker.js/chunks/reg_B64SwEDj.mjs +0 -1
  374. package/website/dist/_worker.js/chunks/regexp_ButFGoB5.mjs +0 -1
  375. package/website/dist/_worker.js/chunks/rel_BWJAWqZD.mjs +0 -1
  376. package/website/dist/_worker.js/chunks/riscv_79gXlbsF.mjs +0 -1
  377. package/website/dist/_worker.js/chunks/rose-pine-dawn_DHIjVGd3.mjs +0 -1
  378. package/website/dist/_worker.js/chunks/rose-pine-moon_t86aEbs0.mjs +0 -1
  379. package/website/dist/_worker.js/chunks/rose-pine_BHgrcDCs.mjs +0 -1
  380. package/website/dist/_worker.js/chunks/rst_D3F4Fcpj.mjs +0 -1
  381. package/website/dist/_worker.js/chunks/ruby_Cs7vM9iv.mjs +0 -1
  382. package/website/dist/_worker.js/chunks/rust_DpyRVatH.mjs +0 -1
  383. package/website/dist/_worker.js/chunks/sas_DW45xZXN.mjs +0 -1
  384. package/website/dist/_worker.js/chunks/sass_C6SiMwN_.mjs +0 -1
  385. package/website/dist/_worker.js/chunks/scala_DlZOjNZk.mjs +0 -1
  386. package/website/dist/_worker.js/chunks/scheme_D2ezSJXu.mjs +0 -1
  387. package/website/dist/_worker.js/chunks/scss_DG5Spjqu.mjs +0 -1
  388. package/website/dist/_worker.js/chunks/sdbl_ZCYaj4VN.mjs +0 -1
  389. package/website/dist/_worker.js/chunks/shaderlab_CAcRkg1_.mjs +0 -1
  390. package/website/dist/_worker.js/chunks/shellscript_BWwhkDVh.mjs +0 -1
  391. package/website/dist/_worker.js/chunks/shellsession_BfEA3juK.mjs +0 -1
  392. package/website/dist/_worker.js/chunks/slack-dark_CL3lSpCc.mjs +0 -1
  393. package/website/dist/_worker.js/chunks/slack-ochin_DdZKOQVh.mjs +0 -1
  394. package/website/dist/_worker.js/chunks/smalltalk_DgilzSui.mjs +0 -1
  395. package/website/dist/_worker.js/chunks/snazzy-light_eJU08Pz_.mjs +0 -1
  396. package/website/dist/_worker.js/chunks/solarized-dark_Dg_YQywx.mjs +0 -1
  397. package/website/dist/_worker.js/chunks/solarized-light_BnIsrA6p.mjs +0 -1
  398. package/website/dist/_worker.js/chunks/solidity_DkseH8pQ.mjs +0 -1
  399. package/website/dist/_worker.js/chunks/soy_DU7bOYoG.mjs +0 -1
  400. package/website/dist/_worker.js/chunks/sparql_BuI1DBDH.mjs +0 -1
  401. package/website/dist/_worker.js/chunks/splunk_B8Ha9Pkg.mjs +0 -1
  402. package/website/dist/_worker.js/chunks/sql_BniHwea5.mjs +0 -1
  403. package/website/dist/_worker.js/chunks/ssh-config_CkE1GuVe.mjs +0 -1
  404. package/website/dist/_worker.js/chunks/stata_Dtqpbd_l.mjs +0 -1
  405. package/website/dist/_worker.js/chunks/stylus_CXTtglzO.mjs +0 -1
  406. package/website/dist/_worker.js/chunks/svelte_BjWYcUCN.mjs +0 -1
  407. package/website/dist/_worker.js/chunks/swift_BzHql_rM.mjs +0 -1
  408. package/website/dist/_worker.js/chunks/synthwave-84_DLRNhxNA.mjs +0 -1
  409. package/website/dist/_worker.js/chunks/system-verilog_ChyInPph.mjs +0 -1
  410. package/website/dist/_worker.js/chunks/systemd_Bi9Qa2qD.mjs +0 -1
  411. package/website/dist/_worker.js/chunks/talonscript_B3sH_Y-V.mjs +0 -1
  412. package/website/dist/_worker.js/chunks/tasl_BJ5yipRs.mjs +0 -1
  413. package/website/dist/_worker.js/chunks/tcl_CoJQjNoP.mjs +0 -1
  414. package/website/dist/_worker.js/chunks/templ_CrU7Ffil.mjs +0 -1
  415. package/website/dist/_worker.js/chunks/terraform_DT9JSFpC.mjs +0 -1
  416. package/website/dist/_worker.js/chunks/tex_5PKu2yA0.mjs +0 -1
  417. package/website/dist/_worker.js/chunks/tokyo-night_Buo8OK7-.mjs +0 -1
  418. package/website/dist/_worker.js/chunks/toml_CPuXX3oc.mjs +0 -1
  419. package/website/dist/_worker.js/chunks/ts-tags_D0M_1VSH.mjs +0 -1
  420. package/website/dist/_worker.js/chunks/tsv_CuivVNot.mjs +0 -1
  421. package/website/dist/_worker.js/chunks/tsx_MkuGr8MY.mjs +0 -1
  422. package/website/dist/_worker.js/chunks/turtle_BqgEPK7f.mjs +0 -1
  423. package/website/dist/_worker.js/chunks/twig_r1G9rpYJ.mjs +0 -1
  424. package/website/dist/_worker.js/chunks/typescript_Au5buqzM.mjs +0 -1
  425. package/website/dist/_worker.js/chunks/typespec_47rhBK_z.mjs +0 -1
  426. package/website/dist/_worker.js/chunks/typst_BAtuQLh-.mjs +0 -1
  427. package/website/dist/_worker.js/chunks/v_BIvWImHg.mjs +0 -1
  428. package/website/dist/_worker.js/chunks/vala_DYEacj30.mjs +0 -1
  429. package/website/dist/_worker.js/chunks/vb_CikQuqGJ.mjs +0 -1
  430. package/website/dist/_worker.js/chunks/verilog_BQRENwI-.mjs +0 -1
  431. package/website/dist/_worker.js/chunks/vesper_DA0kvTmj.mjs +0 -1
  432. package/website/dist/_worker.js/chunks/vhdl_DHscJIyg.mjs +0 -1
  433. package/website/dist/_worker.js/chunks/viml_F2pvMwvG.mjs +0 -1
  434. package/website/dist/_worker.js/chunks/vitesse-black_D9tjNzd0.mjs +0 -1
  435. package/website/dist/_worker.js/chunks/vitesse-dark_Bnm5d0hd.mjs +0 -1
  436. package/website/dist/_worker.js/chunks/vitesse-light_CHwbyjNR.mjs +0 -1
  437. package/website/dist/_worker.js/chunks/vue-html_DyYtbbMK.mjs +0 -1
  438. package/website/dist/_worker.js/chunks/vue_DofN6juy.mjs +0 -1
  439. package/website/dist/_worker.js/chunks/vyper_CiR0m-OV.mjs +0 -1
  440. package/website/dist/_worker.js/chunks/wasm_CwIGgRGf.mjs +0 -1
  441. package/website/dist/_worker.js/chunks/wasm_jKWhg0J0.mjs +0 -1
  442. package/website/dist/_worker.js/chunks/wenyan_DKvVZKXW.mjs +0 -1
  443. package/website/dist/_worker.js/chunks/wgsl_BOWZY7yw.mjs +0 -1
  444. package/website/dist/_worker.js/chunks/wikitext_CXDhhHPy.mjs +0 -1
  445. package/website/dist/_worker.js/chunks/wolfram_ChkmGnW0.mjs +0 -1
  446. package/website/dist/_worker.js/chunks/xml_DXH3hHIu.mjs +0 -1
  447. package/website/dist/_worker.js/chunks/xsl_DuP2mFjg.mjs +0 -1
  448. package/website/dist/_worker.js/chunks/yaml_IGiEkTge.mjs +0 -1
  449. package/website/dist/_worker.js/chunks/zenscript_59iXGyNw.mjs +0 -1
  450. package/website/dist/_worker.js/chunks/zig_DKzb0zdT.mjs +0 -1
  451. package/website/dist/_worker.js/index.js +0 -61
  452. package/website/dist/_worker.js/manifest_Bk6136-u.mjs +0 -98
  453. package/website/dist/_worker.js/pages/_image.astro.mjs +0 -24
  454. package/website/dist/_worker.js/pages/agents.astro.mjs +0 -1
  455. package/website/dist/_worker.js/pages/animation.astro.mjs +0 -1
  456. package/website/dist/_worker.js/pages/api/playground/render.astro.mjs +0 -25562
  457. package/website/dist/_worker.js/pages/api/playground/templates.astro.mjs +0 -92
  458. package/website/dist/_worker.js/pages/api/raw-markdown/_---path_.astro.mjs +0 -44
  459. package/website/dist/_worker.js/pages/config.astro.mjs +0 -1
  460. package/website/dist/_worker.js/pages/fonts.astro.mjs +0 -1
  461. package/website/dist/_worker.js/pages/getting-started.astro.mjs +0 -1
  462. package/website/dist/_worker.js/pages/helpers.astro.mjs +0 -1
  463. package/website/dist/_worker.js/pages/images.astro.mjs +0 -1
  464. package/website/dist/_worker.js/pages/index.astro.mjs +0 -1
  465. package/website/dist/_worker.js/pages/llm.txt.astro.mjs +0 -1
  466. package/website/dist/_worker.js/pages/playground/_example_.astro.mjs +0 -95
  467. package/website/dist/_worker.js/pages/playground.astro.mjs +0 -1
  468. package/website/dist/_worker.js/pages/preview.astro.mjs +0 -1
  469. package/website/dist/_worker.js/pages/sdk.astro.mjs +0 -1
  470. package/website/dist/_worker.js/pages/sitemap.xml.astro.mjs +0 -1
  471. package/website/dist/_worker.js/pages/styling.astro.mjs +0 -1
  472. package/website/dist/_worker.js/pages/templates.astro.mjs +0 -1
  473. package/website/dist/_worker.js/pages/video.astro.mjs +0 -1
  474. package/website/dist/_worker.js/renderers.mjs +0 -2
  475. package/website/dist/agents/index.html +0 -54
  476. package/website/dist/animation/index.html +0 -1505
  477. package/website/dist/config/index.html +0 -186
  478. package/website/dist/fonts/index.html +0 -200
  479. package/website/dist/getting-started/index.html +0 -109
  480. package/website/dist/helpers/index.html +0 -350
  481. package/website/dist/images/index.html +0 -337
  482. package/website/dist/index.html +0 -141
  483. package/website/dist/llm.txt +0 -3626
  484. package/website/dist/playground/index.html +0 -6
  485. package/website/dist/preview/index.html +0 -113
  486. package/website/dist/robots.txt +0 -40
  487. package/website/dist/sdk/index.html +0 -1588
  488. package/website/dist/sitemap.xml +0 -76
  489. package/website/dist/styling/index.html +0 -368
  490. package/website/dist/templates/index.html +0 -76
  491. package/website/dist/video/index.html +0 -354
  492. package/website/package-lock.json +0 -8099
  493. package/website/package.json +0 -43
  494. package/website/public/.gitkeep +0 -5
  495. package/website/public/robots.txt +0 -40
  496. package/website/templates/og-image.tsx +0 -60
  497. package/website/wrangler.toml +0 -9
@@ -1,139 +0,0 @@
1
- import { defineTemplate, renderImage, renderVideo } from '../dist/sdk/index.js';
2
- import fs from 'fs/promises';
3
- import React from 'react';
4
-
5
- // Helper to create inline template modules for testing
6
- function createTemplateModule(meta, render) {
7
- return { meta, default: render };
8
- }
9
-
10
- // Test 1: Static image template
11
- const staticTemplateModule = createTemplateModule(
12
- {
13
- name: 'sdk-static',
14
- type: 'image',
15
- size: { width: 1200, height: 630 },
16
- props: {
17
- title: 'string',
18
- subtitle: 'string',
19
- },
20
- },
21
- ({ tw, title, subtitle }) => (
22
- React.createElement('div', { style: tw('flex flex-col w-full h-full bg-gradient-to-br from-green-600 to-teal-700 p-12 justify-center items-center') },
23
- React.createElement('h1', { style: tw('text-6xl font-bold text-white mb-4') }, title),
24
- React.createElement('p', { style: tw('text-2xl text-white/80') }, subtitle),
25
- React.createElement('p', { style: tw('text-white/60 mt-8') }, 'Rendered via SDK')
26
- )
27
- )
28
- );
29
- const staticTemplate = defineTemplate(staticTemplateModule);
30
-
31
- // Test 2: Animated video template
32
- const animatedTemplateModule = createTemplateModule(
33
- {
34
- name: 'sdk-animated',
35
- type: 'video',
36
- size: { width: 1920, height: 1080 },
37
- video: { fps: 30, duration: 2 },
38
- props: {
39
- title: 'string',
40
- },
41
- },
42
- ({ tw, title }) => (
43
- React.createElement('div', { style: tw('flex flex-col items-center justify-center w-full h-full bg-gray-900') },
44
- React.createElement('div', { style: tw('w-20 h-20 rounded-full bg-gradient-to-br from-pink-500 to-orange-500 mb-8 ease-out enter-bounce-in/0/300') }),
45
- React.createElement('h1', { style: tw('text-7xl font-bold text-white ease-out enter-fade-in-up/200/600') }, title),
46
- React.createElement('p', { style: tw('text-2xl text-white/60 mt-4 ease-out enter-fade-in/500/900') }, 'SDK Video Test')
47
- )
48
- )
49
- );
50
- const animatedTemplate = defineTemplate(animatedTemplateModule);
51
-
52
- // Test 3: QR code template
53
- const qrTemplateModule = createTemplateModule(
54
- {
55
- name: 'sdk-qr',
56
- type: 'image',
57
- size: { width: 800, height: 800 },
58
- props: {
59
- url: 'string',
60
- },
61
- },
62
- ({ tw, qr, url }) => (
63
- React.createElement('div', { style: tw('flex flex-col items-center justify-center w-full h-full bg-white p-8') },
64
- React.createElement('h2', { style: tw('text-3xl font-bold text-gray-900 mb-6') }, 'SDK QR Test'),
65
- React.createElement('img', {
66
- src: qr(url, { width: 400, margin: 2 }),
67
- style: tw('w-80 h-80')
68
- }),
69
- React.createElement('p', { style: tw('text-gray-600 mt-6') }, url)
70
- )
71
- )
72
- );
73
- const qrTemplate = defineTemplate(qrTemplateModule);
74
-
75
- async function runTests() {
76
- console.log('Testing loopwind SDK...\n');
77
-
78
- // Test 1: Static image
79
- console.log('1. Rendering static image...');
80
- try {
81
- const imageBuffer = await renderImage(staticTemplate, {
82
- title: 'Hello SDK',
83
- subtitle: 'Programmatic rendering works!'
84
- }, { format: 'png' });
85
- await fs.writeFile('output/sdk-static.png', imageBuffer);
86
- console.log(` ✔ sdk-static.png (${(imageBuffer.length / 1024).toFixed(1)}KB)\n`);
87
- } catch (err) {
88
- console.log(` ✖ Failed: ${err.message}\n`);
89
- }
90
-
91
- // Test 2: Animated video
92
- console.log('2. Rendering animated video...');
93
- try {
94
- const videoBuffer = await renderVideo(animatedTemplate, {
95
- title: 'SDK Animation'
96
- }, { format: 'mp4' });
97
- await fs.writeFile('output/sdk-animated.mp4', videoBuffer);
98
- console.log(` ✔ sdk-animated.mp4 (${(videoBuffer.length / 1024).toFixed(1)}KB)\n`);
99
- } catch (err) {
100
- console.log(` ✖ Failed: ${err.message}\n`);
101
- }
102
-
103
- // Test 3: QR code
104
- console.log('3. Rendering QR code...');
105
- try {
106
- const qrBuffer = await renderImage(qrTemplate, {
107
- url: 'https://loopwind.dev'
108
- }, { format: 'png' });
109
- await fs.writeFile('output/sdk-qr.png', qrBuffer);
110
- console.log(` ✔ sdk-qr.png (${(qrBuffer.length / 1024).toFixed(1)}KB)\n`);
111
- } catch (err) {
112
- console.log(` ✖ Failed: ${err.message}\n`);
113
- }
114
-
115
- // Test 4: Different formats
116
- console.log('4. Testing different formats (JPEG, WebP)...');
117
- try {
118
- const jpegBuffer = await renderImage(staticTemplate, {
119
- title: 'JPEG Test',
120
- subtitle: 'Quality 85'
121
- }, { format: 'jpeg', quality: 85 });
122
- await fs.writeFile('output/sdk-static.jpg', jpegBuffer);
123
-
124
- const webpBuffer = await renderImage(staticTemplate, {
125
- title: 'WebP Test',
126
- subtitle: 'Modern format'
127
- }, { format: 'webp' });
128
- await fs.writeFile('output/sdk-static.webp', webpBuffer);
129
-
130
- console.log(` ✔ sdk-static.jpg (${(jpegBuffer.length / 1024).toFixed(1)}KB)`);
131
- console.log(` ✔ sdk-static.webp (${(webpBuffer.length / 1024).toFixed(1)}KB)\n`);
132
- } catch (err) {
133
- console.log(` ✖ Failed: ${err.message}\n`);
134
- }
135
-
136
- console.log('SDK tests complete!');
137
- }
138
-
139
- runTests().catch(console.error);
@@ -1,96 +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
- // Same complex template but at 720p
7
- const template = defineTemplate({
8
- name: 'perf-test-720',
9
- type: 'video',
10
- size: { width: 1280, height: 720 },
11
- video: { fps: 30, duration: 5 },
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
- }, 'Performance 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
- }, 'Box 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
- }, 'Box 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
- }, 'Box 3')
31
- )
32
- )
33
- });
34
-
35
- async function runTest() {
36
- console.log('Initializing WASM...');
37
- await initWasm();
38
-
39
- const totalFrames = 150;
40
- const width = 1280;
41
- const height = 720;
42
-
43
- // Phase 1: SVG generation
44
- console.log('\n=== 720p Complex Template Test ===');
45
- const svgStart = Date.now();
46
- const svgs = [];
47
- for (let i = 0; i < totalFrames; i++) {
48
- const progress = i / (totalFrames - 1);
49
- const svg = await renderSVG(template, { progress, frame: i });
50
- svgs.push(svg);
51
- }
52
- const svgTime = Date.now() - svgStart;
53
- console.log('SVG generation: ' + svgTime + 'ms (' + (svgTime/totalFrames).toFixed(1) + 'ms/frame)');
54
-
55
- // Phase 2: RGBA conversion (resvg)
56
- const rgbaStart = Date.now();
57
- const rgbaFrames = [];
58
- for (let i = 0; i < totalFrames; i++) {
59
- const resvg = new Resvg(svgs[i], { fitTo: { mode: 'width', value: width } });
60
- const rendered = resvg.render();
61
- rgbaFrames.push(rendered.pixels);
62
- }
63
- const rgbaTime = Date.now() - rgbaStart;
64
- console.log('RGBA conversion: ' + rgbaTime + 'ms (' + (rgbaTime/totalFrames).toFixed(1) + 'ms/frame)');
65
-
66
- // Phase 3: H.264 encoding
67
- const encodeStart = Date.now();
68
- const encoder = await HME.createH264MP4Encoder();
69
- encoder.width = width;
70
- encoder.height = height;
71
- encoder.frameRate = 30;
72
- encoder.quantizationParameter = 23;
73
- encoder.speed = 10;
74
- encoder.groupOfPictures = 30;
75
- encoder.initialize();
76
-
77
- for (let i = 0; i < rgbaFrames.length; i++) {
78
- encoder.addFrameRgba(rgbaFrames[i]);
79
- }
80
- encoder.finalize();
81
- const output = encoder.FS.readFile(encoder.outputFilename);
82
- encoder.delete();
83
- const encodeTime = Date.now() - encodeStart;
84
- console.log('H.264 encoding: ' + encodeTime + 'ms (' + (encodeTime/totalFrames).toFixed(1) + 'ms/frame)');
85
-
86
- // Summary
87
- const totalTime = svgTime + rgbaTime + encodeTime;
88
- console.log('\n=== SUMMARY (720p) ===');
89
- console.log('SVG generation: ' + svgTime + 'ms (' + ((svgTime/totalTime)*100).toFixed(0) + '%)');
90
- console.log('RGBA conversion: ' + rgbaTime + 'ms (' + ((rgbaTime/totalTime)*100).toFixed(0) + '%)');
91
- console.log('H.264 encoding: ' + encodeTime + 'ms (' + ((encodeTime/totalTime)*100).toFixed(0) + '%)');
92
- console.log('TOTAL: ' + totalTime + 'ms');
93
- console.log('Real-time ratio: ' + (totalTime/5000).toFixed(2) + 'x');
94
- }
95
-
96
- runTest().catch(console.error);
@@ -1,98 +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
- // Same complex template
7
- const template = defineTemplate({
8
- name: 'perf-test-1080',
9
- type: 'video',
10
- size: { width: 1920, height: 1080 },
11
- video: { fps: 30, duration: 5 },
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-9xl font-black text-white ease-out-cubic enter-bounce-in-up/0/800')
17
- }, 'LOOPWIND'),
18
- React.createElement('p', {
19
- style: tw('text-3xl text-white/80 mt-6 ease-out enter-fade-in-up/400/600')
20
- }, 'Performance Test'),
21
- React.createElement('div', { style: tw('flex gap-6 mt-12') },
22
- React.createElement('div', {
23
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/900/400')
24
- }, 'Box 1'),
25
- React.createElement('div', {
26
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/1050/400')
27
- }, 'Box 2'),
28
- React.createElement('div', {
29
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/1200/400')
30
- }, 'Box 3')
31
- )
32
- )
33
- });
34
-
35
- async function runTest() {
36
- console.log('Initializing WASM...');
37
- await initWasm();
38
-
39
- const totalFrames = 150;
40
- const width = 1920;
41
- const height = 1080;
42
-
43
- // Phase 1: SVG generation
44
- console.log('\n=== Phase 1: SVG Generation ===');
45
- const svgStart = Date.now();
46
- const svgs = [];
47
- for (let i = 0; i < totalFrames; i++) {
48
- const progress = i / (totalFrames - 1);
49
- const svg = await renderSVG(template, { progress, frame: i });
50
- svgs.push(svg);
51
- }
52
- const svgTime = Date.now() - svgStart;
53
- console.log('SVG generation: ' + svgTime + 'ms (' + (svgTime/totalFrames).toFixed(1) + 'ms/frame)');
54
-
55
- // Phase 2: RGBA conversion (resvg)
56
- console.log('\n=== Phase 2: RGBA Conversion (resvg) ===');
57
- const rgbaStart = Date.now();
58
- const rgbaFrames = [];
59
- for (let i = 0; i < totalFrames; i++) {
60
- const resvg = new Resvg(svgs[i], { fitTo: { mode: 'width', value: width } });
61
- const rendered = resvg.render();
62
- rgbaFrames.push(rendered.pixels);
63
- }
64
- const rgbaTime = Date.now() - rgbaStart;
65
- console.log('RGBA conversion: ' + rgbaTime + 'ms (' + (rgbaTime/totalFrames).toFixed(1) + 'ms/frame)');
66
-
67
- // Phase 3: H.264 encoding
68
- console.log('\n=== Phase 3: H.264 Encoding ===');
69
- const encodeStart = Date.now();
70
- const encoder = await HME.createH264MP4Encoder();
71
- encoder.width = width;
72
- encoder.height = height;
73
- encoder.frameRate = 30;
74
- encoder.quantizationParameter = 23;
75
- encoder.speed = 10;
76
- encoder.groupOfPictures = 30;
77
- encoder.initialize();
78
-
79
- for (let i = 0; i < rgbaFrames.length; i++) {
80
- encoder.addFrameRgba(rgbaFrames[i]);
81
- }
82
- encoder.finalize();
83
- const output = encoder.FS.readFile(encoder.outputFilename);
84
- encoder.delete();
85
- const encodeTime = Date.now() - encodeStart;
86
- console.log('H.264 encoding: ' + encodeTime + 'ms (' + (encodeTime/totalFrames).toFixed(1) + 'ms/frame)');
87
-
88
- // Summary
89
- const totalTime = svgTime + rgbaTime + encodeTime;
90
- console.log('\n=== SUMMARY ===');
91
- console.log('SVG generation: ' + svgTime + 'ms (' + ((svgTime/totalTime)*100).toFixed(0) + '%)');
92
- console.log('RGBA conversion: ' + rgbaTime + 'ms (' + ((rgbaTime/totalTime)*100).toFixed(0) + '%)');
93
- console.log('H.264 encoding: ' + encodeTime + 'ms (' + ((encodeTime/totalTime)*100).toFixed(0) + '%)');
94
- console.log('TOTAL: ' + totalTime + 'ms');
95
- console.log('Real-time ratio: ' + (totalTime/5000).toFixed(2) + 'x');
96
- }
97
-
98
- runTest().catch(console.error);
@@ -1,67 +0,0 @@
1
- import { renderVideo, initWasm, defineTemplate } from './dist/sdk/workers/index.js';
2
- import React from 'react';
3
-
4
- // More complex video template at 1080p
5
- const template = defineTemplate({
6
- name: 'perf-test-1080',
7
- type: 'video',
8
- size: { width: 1920, height: 1080 }, // 1080p
9
- video: { fps: 30, duration: 5 },
10
- render: ({ tw, progress, frame }) => React.createElement(
11
- 'div',
12
- { 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') },
13
- React.createElement('h1', {
14
- style: tw('text-9xl font-black text-white ease-out-cubic enter-bounce-in-up/0/800')
15
- }, 'LOOPWIND'),
16
- React.createElement('p', {
17
- style: tw('text-3xl text-white/80 mt-6 ease-out enter-fade-in-up/400/600')
18
- }, 'Performance Test'),
19
- React.createElement('div', { style: tw('flex gap-6 mt-12') },
20
- React.createElement('div', {
21
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/900/400')
22
- }, 'Box 1'),
23
- React.createElement('div', {
24
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/1050/400')
25
- }, 'Box 2'),
26
- React.createElement('div', {
27
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/1200/400')
28
- }, 'Box 3')
29
- )
30
- )
31
- });
32
-
33
- async function runTest() {
34
- console.log('Initializing WASM...');
35
- const wasmStart = Date.now();
36
- await initWasm();
37
- console.log('WASM init: ' + (Date.now() - wasmStart) + 'ms\n');
38
-
39
- console.log('=== Video Render Performance Test (1080p, Complex) ===');
40
- console.log('Resolution: 1920x1080 (1080p)');
41
- console.log('Duration: 5 seconds');
42
- console.log('FPS: 30');
43
- console.log('Total frames: 150\n');
44
-
45
- const start = Date.now();
46
-
47
- const mp4 = await renderVideo(template, {}, {
48
- onProgress: (frame, total) => {
49
- if (frame % 30 === 0 || frame === total) {
50
- const now = Date.now();
51
- const elapsed = now - start;
52
- const fps = frame / (elapsed / 1000);
53
- console.log('Frame ' + frame + '/' + total + ' - ' + elapsed + 'ms elapsed - ' + fps.toFixed(1) + ' frames/sec');
54
- }
55
- }
56
- });
57
-
58
- const totalTime = Date.now() - start;
59
- console.log('\n=== Results ===');
60
- console.log('Total time: ' + totalTime + 'ms (' + (totalTime/1000).toFixed(2) + 's)');
61
- console.log('Frames: 150');
62
- console.log('Avg per frame: ' + (totalTime/150).toFixed(1) + 'ms');
63
- console.log('Real-time ratio: ' + (totalTime/5000).toFixed(2) + 'x');
64
- console.log('Output size: ' + (mp4.length / 1024).toFixed(0) + 'KB');
65
- }
66
-
67
- runTest().catch(console.error);
@@ -1,56 +0,0 @@
1
- import { renderVideo, initWasm, defineTemplate } from './dist/sdk/workers/index.js';
2
- import React from 'react';
3
-
4
- // Simple video template
5
- const template = defineTemplate({
6
- name: 'perf-test',
7
- type: 'video',
8
- size: { width: 1280, height: 720 }, // 720p
9
- video: { fps: 30, duration: 5 },
10
- render: ({ tw, progress }) => React.createElement(
11
- 'div',
12
- { style: tw('flex items-center justify-center w-full h-full bg-blue-600') },
13
- React.createElement('div', {
14
- style: {
15
- ...tw('text-8xl font-bold text-white'),
16
- opacity: progress
17
- }
18
- }, 'TEST')
19
- )
20
- });
21
-
22
- async function runTest() {
23
- console.log('Initializing WASM...');
24
- const wasmStart = Date.now();
25
- await initWasm();
26
- console.log('WASM init: ' + (Date.now() - wasmStart) + 'ms\n');
27
-
28
- console.log('=== Video Render Performance Test ===');
29
- console.log('Resolution: 1280x720 (720p)');
30
- console.log('Duration: 5 seconds');
31
- console.log('FPS: 30');
32
- console.log('Total frames: 150\n');
33
-
34
- const start = Date.now();
35
-
36
- const mp4 = await renderVideo(template, {}, {
37
- onProgress: (frame, total) => {
38
- if (frame % 30 === 0 || frame === total) {
39
- const now = Date.now();
40
- const elapsed = now - start;
41
- const fps = frame / (elapsed / 1000);
42
- console.log('Frame ' + frame + '/' + total + ' - ' + elapsed + 'ms elapsed - ' + fps.toFixed(1) + ' frames/sec');
43
- }
44
- }
45
- });
46
-
47
- const totalTime = Date.now() - start;
48
- console.log('\n=== Results ===');
49
- console.log('Total time: ' + totalTime + 'ms (' + (totalTime/1000).toFixed(2) + 's)');
50
- console.log('Frames: 150');
51
- console.log('Avg per frame: ' + (totalTime/150).toFixed(1) + 'ms');
52
- console.log('Real-time ratio: ' + (totalTime/5000).toFixed(2) + 'x');
53
- console.log('Output size: ' + (mp4.length / 1024).toFixed(0) + 'KB');
54
- }
55
-
56
- runTest().catch(console.error);
@@ -1,3 +0,0 @@
1
- {
2
- "title": "Welcome!"
3
- }
@@ -1,103 +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
- // Test 1080p limits
7
- const template = defineTemplate({
8
- name: 'worker-test-1080',
9
- type: 'video',
10
- size: { width: 1920, height: 1080 },
11
- video: { fps: 30, duration: 10 },
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-9xl font-black text-white ease-out-cubic enter-bounce-in-up/0/800')
17
- }, 'LOOPWIND'),
18
- React.createElement('p', {
19
- style: tw('text-3xl text-white/80 mt-6 ease-out enter-fade-in-up/400/600')
20
- }, 'Worker Test'),
21
- React.createElement('div', { style: tw('flex gap-6 mt-12') },
22
- React.createElement('div', {
23
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/900/400')
24
- }, 'Feature 1'),
25
- React.createElement('div', {
26
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/1050/400')
27
- }, 'Feature 2'),
28
- React.createElement('div', {
29
- style: tw('px-6 py-3 bg-white/10 rounded-full text-white text-lg ease-out enter-fade-in-up/1200/400')
30
- }, 'Feature 3')
31
- )
32
- )
33
- });
34
-
35
- async function runTests() {
36
- console.log('=== 1080p Worker Limits Test ===\n');
37
- await initWasm();
38
-
39
- const configs = [
40
- { width: 1920, height: 1080, fps: 24, duration: 5, name: '1080p/24fps/5s' },
41
- { width: 1920, height: 1080, fps: 24, duration: 10, name: '1080p/24fps/10s' },
42
- { width: 1920, height: 1080, fps: 30, duration: 5, name: '1080p/30fps/5s' },
43
- ];
44
-
45
- for (const config of configs) {
46
- const { width, height, fps, duration, name } = config;
47
- const totalFrames = fps * duration;
48
-
49
- console.log(`\nTesting ${name} (${totalFrames} frames)...`);
50
- const start = Date.now();
51
-
52
- // SVG generation
53
- const svgStart = Date.now();
54
- const svgs = [];
55
- for (let i = 0; i < totalFrames; i++) {
56
- const progress = i / (totalFrames - 1);
57
- const svg = await renderSVG(template, { progress, frame: i });
58
- svgs.push(svg);
59
- }
60
- const svgTime = Date.now() - svgStart;
61
-
62
- // RGBA conversion
63
- const rgbaStart = Date.now();
64
- const rgbaFrames = [];
65
- for (let i = 0; i < totalFrames; i++) {
66
- const resvg = new Resvg(svgs[i], { fitTo: { mode: 'width', value: width } });
67
- const rendered = resvg.render();
68
- rgbaFrames.push(rendered.pixels);
69
- }
70
- const rgbaTime = Date.now() - rgbaStart;
71
-
72
- // H.264 encoding
73
- const encodeStart = Date.now();
74
- const encoder = await HME.createH264MP4Encoder();
75
- encoder.width = width;
76
- encoder.height = height;
77
- encoder.frameRate = fps;
78
- encoder.quantizationParameter = 23;
79
- encoder.speed = 10;
80
- encoder.groupOfPictures = fps;
81
- encoder.initialize();
82
-
83
- for (const frame of rgbaFrames) {
84
- encoder.addFrameRgba(frame);
85
- }
86
- encoder.finalize();
87
- const output = encoder.FS.readFile(encoder.outputFilename);
88
- encoder.delete();
89
- const encodeTime = Date.now() - encodeStart;
90
-
91
- const totalTime = Date.now() - start;
92
- const realTimeRatio = totalTime / (duration * 1000);
93
- const workerViable = totalTime < 30000;
94
-
95
- console.log(` Total: ${totalTime}ms (${realTimeRatio.toFixed(2)}x real-time)`);
96
- console.log(` SVG: ${svgTime}ms, RGBA: ${rgbaTime}ms, H.264: ${encodeTime}ms`);
97
- console.log(` RGBA/frame: ${(rgbaTime/totalFrames).toFixed(0)}ms`);
98
- console.log(` Worker viable (<30s): ${workerViable ? 'YES ✓' : 'NO ✗'}`);
99
- console.log(` Output size: ${(output.length / 1024).toFixed(0)}KB`);
100
- }
101
- }
102
-
103
- runTests().catch(console.error);