@overcrow/mcp 0.0.0 → 0.1.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 (461) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -1
  3. package/dist/audit/index.js +103 -0
  4. package/dist/audit/lexer.js +417 -0
  5. package/dist/audit/project.js +200 -0
  6. package/dist/audit/rules.js +661 -0
  7. package/dist/bootstrap/download.js +229 -0
  8. package/dist/bootstrap/install.js +280 -0
  9. package/dist/bootstrap/pin.js +85 -0
  10. package/dist/bootstrap/pin.json +119 -0
  11. package/dist/bootstrap/zip.js +258 -0
  12. package/dist/cli.js +200 -0
  13. package/dist/confine.js +244 -0
  14. package/dist/content/docs/en/cli.md +353 -0
  15. package/dist/content/docs/en/dev-channel.md +130 -0
  16. package/dist/content/docs/en/elements.md +469 -0
  17. package/dist/content/docs/en/forms.md +328 -0
  18. package/dist/content/docs/en/guide.md +253 -0
  19. package/dist/content/docs/en/index.md +85 -0
  20. package/dist/content/docs/en/limits.md +241 -0
  21. package/dist/content/docs/en/logic.md +446 -0
  22. package/dist/content/docs/en/manifest.md +381 -0
  23. package/dist/content/docs/en/mcp.md +165 -0
  24. package/dist/content/docs/en/package.md +131 -0
  25. package/dist/content/docs/en/publishing.md +162 -0
  26. package/dist/content/docs/en/reference.md +55 -0
  27. package/dist/content/docs/en/result-shapes.md +332 -0
  28. package/dist/content/docs/en/sdk.md +295 -0
  29. package/dist/content/docs/en/security.md +115 -0
  30. package/dist/content/docs/en/service-reference.md +344 -0
  31. package/dist/content/docs/en/services.md +517 -0
  32. package/dist/content/docs/en/style-properties.md +270 -0
  33. package/dist/content/docs/en/style.md +266 -0
  34. package/dist/content/docs/en/testing.md +400 -0
  35. package/dist/content/docs/en/view.md +338 -0
  36. package/dist/content/docs/en/widgets.md +76 -0
  37. package/dist/content/docs/fr/cli.md +367 -0
  38. package/dist/content/docs/fr/dev-channel.md +140 -0
  39. package/dist/content/docs/fr/elements.md +475 -0
  40. package/dist/content/docs/fr/forms.md +341 -0
  41. package/dist/content/docs/fr/guide.md +264 -0
  42. package/dist/content/docs/fr/index.md +90 -0
  43. package/dist/content/docs/fr/limits.md +244 -0
  44. package/dist/content/docs/fr/logic.md +461 -0
  45. package/dist/content/docs/fr/manifest.md +392 -0
  46. package/dist/content/docs/fr/mcp.md +173 -0
  47. package/dist/content/docs/fr/package.md +139 -0
  48. package/dist/content/docs/fr/publishing.md +172 -0
  49. package/dist/content/docs/fr/reference.md +59 -0
  50. package/dist/content/docs/fr/result-shapes.md +333 -0
  51. package/dist/content/docs/fr/sdk.md +301 -0
  52. package/dist/content/docs/fr/security.md +129 -0
  53. package/dist/content/docs/fr/service-reference.md +346 -0
  54. package/dist/content/docs/fr/services.md +540 -0
  55. package/dist/content/docs/fr/style-properties.md +272 -0
  56. package/dist/content/docs/fr/style.md +281 -0
  57. package/dist/content/docs/fr/testing.md +417 -0
  58. package/dist/content/docs/fr/view.md +352 -0
  59. package/dist/content/docs/fr/widgets.md +81 -0
  60. package/dist/content/examples/clock/LICENSE +21 -0
  61. package/dist/content/examples/clock/README.md +75 -0
  62. package/dist/content/examples/clock/listing.json +19 -0
  63. package/dist/content/examples/clock/locales/en.json +4 -0
  64. package/dist/content/examples/clock/locales/fr.json +4 -0
  65. package/dist/content/examples/clock/logic.ts +85 -0
  66. package/dist/content/examples/clock/manifest.json +44 -0
  67. package/dist/content/examples/clock/package.json +16 -0
  68. package/dist/content/examples/clock/style.ocss +26 -0
  69. package/dist/content/examples/clock/tests/hidden.scenario.json +68 -0
  70. package/dist/content/examples/clock/tests/load-logic.mjs +22 -0
  71. package/dist/content/examples/clock/tests/logic.test.mjs +89 -0
  72. package/dist/content/examples/clock/tests/options.scenario.json +108 -0
  73. package/dist/content/examples/clock/tests/preview.scenario.json +25 -0
  74. package/dist/content/examples/clock/tests/render.scenario.json +94 -0
  75. package/dist/content/examples/clock/tests/summer-time.scenario.json +74 -0
  76. package/dist/content/examples/clock/tests/ticks.scenario.json +120 -0
  77. package/dist/content/examples/clock/tsconfig.json +16 -0
  78. package/dist/content/examples/clock/view.ocml +8 -0
  79. package/dist/content/examples/countdown/LICENSE +20 -0
  80. package/dist/content/examples/countdown/listing.json +10 -0
  81. package/dist/content/examples/countdown/locales/en.json +15 -0
  82. package/dist/content/examples/countdown/locales/fr.json +15 -0
  83. package/dist/content/examples/countdown/logic.ts +179 -0
  84. package/dist/content/examples/countdown/manifest.json +34 -0
  85. package/dist/content/examples/countdown/package.json +15 -0
  86. package/dist/content/examples/countdown/style.ocss +94 -0
  87. package/dist/content/examples/countdown/tsconfig.json +16 -0
  88. package/dist/content/examples/countdown/view.ocml +42 -0
  89. package/dist/content/examples/fps/LICENSE +21 -0
  90. package/dist/content/examples/fps/README.md +64 -0
  91. package/dist/content/examples/fps/listing.json +19 -0
  92. package/dist/content/examples/fps/locales/en.json +11 -0
  93. package/dist/content/examples/fps/locales/fr.json +11 -0
  94. package/dist/content/examples/fps/logic.ts +64 -0
  95. package/dist/content/examples/fps/manifest.json +30 -0
  96. package/dist/content/examples/fps/package.json +16 -0
  97. package/dist/content/examples/fps/style.ocss +31 -0
  98. package/dist/content/examples/fps/tests/label.scenario.json +63 -0
  99. package/dist/content/examples/fps/tests/load-logic.mjs +22 -0
  100. package/dist/content/examples/fps/tests/logic.test.mjs +60 -0
  101. package/dist/content/examples/fps/tests/preview.scenario.json +29 -0
  102. package/dist/content/examples/fps/tests/refused.scenario.json +20 -0
  103. package/dist/content/examples/fps/tests/render.scenario.json +96 -0
  104. package/dist/content/examples/fps/tests/stale.scenario.json +91 -0
  105. package/dist/content/examples/fps/tests/unavailable.scenario.json +111 -0
  106. package/dist/content/examples/fps/tsconfig.json +16 -0
  107. package/dist/content/examples/fps/view.ocml +11 -0
  108. package/dist/content/examples/media/LICENSE +21 -0
  109. package/dist/content/examples/media/README.md +147 -0
  110. package/dist/content/examples/media/listing.json +19 -0
  111. package/dist/content/examples/media/locales/en.json +11 -0
  112. package/dist/content/examples/media/locales/fr.json +11 -0
  113. package/dist/content/examples/media/logic.ts +191 -0
  114. package/dist/content/examples/media/manifest.json +35 -0
  115. package/dist/content/examples/media/package.json +16 -0
  116. package/dist/content/examples/media/style.ocss +148 -0
  117. package/dist/content/examples/media/tests/covers.scenario.json +144 -0
  118. package/dist/content/examples/media/tests/gesture.scenario.json +173 -0
  119. package/dist/content/examples/media/tests/load-logic.mjs +22 -0
  120. package/dist/content/examples/media/tests/logic.test.mjs +176 -0
  121. package/dist/content/examples/media/tests/marquee.scenario.json +127 -0
  122. package/dist/content/examples/media/tests/preview.scenario.json +52 -0
  123. package/dist/content/examples/media/tests/read-only.scenario.json +53 -0
  124. package/dist/content/examples/media/tests/refused.scenario.json +22 -0
  125. package/dist/content/examples/media/tests/refused.test.mjs +31 -0
  126. package/dist/content/examples/media/tests/render.scenario.json +136 -0
  127. package/dist/content/examples/media/tests/states.scenario.json +257 -0
  128. package/dist/content/examples/media/tests/unavailable.scenario.json +120 -0
  129. package/dist/content/examples/media/tsconfig.json +16 -0
  130. package/dist/content/examples/media/view.ocml +41 -0
  131. package/dist/content/examples/notes/LICENSE +21 -0
  132. package/dist/content/examples/notes/README.md +219 -0
  133. package/dist/content/examples/notes/listing.json +19 -0
  134. package/dist/content/examples/notes/locales/en.json +25 -0
  135. package/dist/content/examples/notes/locales/fr.json +25 -0
  136. package/dist/content/examples/notes/logic.ts +799 -0
  137. package/dist/content/examples/notes/manifest.json +40 -0
  138. package/dist/content/examples/notes/package.json +16 -0
  139. package/dist/content/examples/notes/style.ocss +469 -0
  140. package/dist/content/examples/notes/tests/checks.scenario.json +237 -0
  141. package/dist/content/examples/notes/tests/create.scenario.json +260 -0
  142. package/dist/content/examples/notes/tests/delete.scenario.json +342 -0
  143. package/dist/content/examples/notes/tests/drafts.scenario.json +714 -0
  144. package/dist/content/examples/notes/tests/editor.scenario.json +232 -0
  145. package/dist/content/examples/notes/tests/frame.scenario.json +93 -0
  146. package/dist/content/examples/notes/tests/interactive.scenario.json +344 -0
  147. package/dist/content/examples/notes/tests/limits.scenario.json +1351 -0
  148. package/dist/content/examples/notes/tests/load-logic.mjs +22 -0
  149. package/dist/content/examples/notes/tests/logic.test.mjs +514 -0
  150. package/dist/content/examples/notes/tests/preview.scenario.json +99 -0
  151. package/dist/content/examples/notes/tests/read-only.scenario.json +105 -0
  152. package/dist/content/examples/notes/tests/refused.scenario.json +33 -0
  153. package/dist/content/examples/notes/tests/save.scenario.json +378 -0
  154. package/dist/content/examples/notes/tests/states.scenario.json +640 -0
  155. package/dist/content/examples/notes/tests/typing.scenario.json +562 -0
  156. package/dist/content/examples/notes/tests/unavailable.scenario.json +246 -0
  157. package/dist/content/examples/notes/tsconfig.json +16 -0
  158. package/dist/content/examples/notes/view.ocml +154 -0
  159. package/dist/content/examples/performance/LICENSE +21 -0
  160. package/dist/content/examples/performance/README.md +134 -0
  161. package/dist/content/examples/performance/listing.json +19 -0
  162. package/dist/content/examples/performance/locales/en.json +20 -0
  163. package/dist/content/examples/performance/locales/fr.json +20 -0
  164. package/dist/content/examples/performance/logic.ts +210 -0
  165. package/dist/content/examples/performance/manifest.json +83 -0
  166. package/dist/content/examples/performance/package.json +16 -0
  167. package/dist/content/examples/performance/style.ocss +75 -0
  168. package/dist/content/examples/performance/tests/fahrenheit.scenario.json +110 -0
  169. package/dist/content/examples/performance/tests/horizontal.scenario.json +96 -0
  170. package/dist/content/examples/performance/tests/load-logic.mjs +22 -0
  171. package/dist/content/examples/performance/tests/logic.test.mjs +226 -0
  172. package/dist/content/examples/performance/tests/menu.scenario.json +170 -0
  173. package/dist/content/examples/performance/tests/no-fps-source.scenario.json +47 -0
  174. package/dist/content/examples/performance/tests/preview.scenario.json +45 -0
  175. package/dist/content/examples/performance/tests/refused.scenario.json +20 -0
  176. package/dist/content/examples/performance/tests/refused.test.mjs +19 -0
  177. package/dist/content/examples/performance/tests/region.scenario.json +89 -0
  178. package/dist/content/examples/performance/tests/render.scenario.json +112 -0
  179. package/dist/content/examples/performance/tests/sources.scenario.json +151 -0
  180. package/dist/content/examples/performance/tests/stale.scenario.json +111 -0
  181. package/dist/content/examples/performance/tests/telemetry-only.scenario.json +44 -0
  182. package/dist/content/examples/performance/tests/thresholds.scenario.json +147 -0
  183. package/dist/content/examples/performance/tests/waiting.scenario.json +105 -0
  184. package/dist/content/examples/performance/tsconfig.json +16 -0
  185. package/dist/content/examples/performance/view.ocml +18 -0
  186. package/dist/content/examples/playervox-journal/LICENSE +21 -0
  187. package/dist/content/examples/playervox-journal/README.md +150 -0
  188. package/dist/content/examples/playervox-journal/listing.json +19 -0
  189. package/dist/content/examples/playervox-journal/locales/en.json +25 -0
  190. package/dist/content/examples/playervox-journal/locales/fr.json +25 -0
  191. package/dist/content/examples/playervox-journal/logic.ts +556 -0
  192. package/dist/content/examples/playervox-journal/manifest.json +19 -0
  193. package/dist/content/examples/playervox-journal/package.json +16 -0
  194. package/dist/content/examples/playervox-journal/style.ocss +142 -0
  195. package/dist/content/examples/playervox-journal/tests/changes.scenario.json +482 -0
  196. package/dist/content/examples/playervox-journal/tests/delete.scenario.json +432 -0
  197. package/dist/content/examples/playervox-journal/tests/frame.scenario.json +169 -0
  198. package/dist/content/examples/playervox-journal/tests/load-logic.mjs +22 -0
  199. package/dist/content/examples/playervox-journal/tests/logic.test.mjs +349 -0
  200. package/dist/content/examples/playervox-journal/tests/paging.scenario.json +428 -0
  201. package/dist/content/examples/playervox-journal/tests/preview.scenario.json +184 -0
  202. package/dist/content/examples/playervox-journal/tests/read-only.scenario.json +157 -0
  203. package/dist/content/examples/playervox-journal/tests/refused.scenario.json +39 -0
  204. package/dist/content/examples/playervox-journal/tests/scale.scenario.json +286 -0
  205. package/dist/content/examples/playervox-journal/tests/signed-out.scenario.json +134 -0
  206. package/dist/content/examples/playervox-journal/tests/states.scenario.json +741 -0
  207. package/dist/content/examples/playervox-journal/tests/unavailable.scenario.json +183 -0
  208. package/dist/content/examples/playervox-journal/tsconfig.json +16 -0
  209. package/dist/content/examples/playervox-journal/view.ocml +52 -0
  210. package/dist/content/examples/playervox-rating/LICENSE +21 -0
  211. package/dist/content/examples/playervox-rating/README.md +166 -0
  212. package/dist/content/examples/playervox-rating/listing.json +19 -0
  213. package/dist/content/examples/playervox-rating/locales/en.json +35 -0
  214. package/dist/content/examples/playervox-rating/locales/fr.json +35 -0
  215. package/dist/content/examples/playervox-rating/logic.ts +581 -0
  216. package/dist/content/examples/playervox-rating/manifest.json +19 -0
  217. package/dist/content/examples/playervox-rating/package.json +16 -0
  218. package/dist/content/examples/playervox-rating/style.ocss +333 -0
  219. package/dist/content/examples/playervox-rating/tests/account.scenario.json +125 -0
  220. package/dist/content/examples/playervox-rating/tests/bounds.scenario.json +73 -0
  221. package/dist/content/examples/playervox-rating/tests/draft.scenario.json +199 -0
  222. package/dist/content/examples/playervox-rating/tests/form.scenario.json +142 -0
  223. package/dist/content/examples/playervox-rating/tests/load-logic.mjs +22 -0
  224. package/dist/content/examples/playervox-rating/tests/logic.test.mjs +346 -0
  225. package/dist/content/examples/playervox-rating/tests/offline.scenario.json +142 -0
  226. package/dist/content/examples/playervox-rating/tests/preview.scenario.json +44 -0
  227. package/dist/content/examples/playervox-rating/tests/publish-keyboard.scenario.json +221 -0
  228. package/dist/content/examples/playervox-rating/tests/publish-pointer.scenario.json +314 -0
  229. package/dist/content/examples/playervox-rating/tests/read-only.scenario.json +70 -0
  230. package/dist/content/examples/playervox-rating/tests/refused.scenario.json +45 -0
  231. package/dist/content/examples/playervox-rating/tests/states.scenario.json +362 -0
  232. package/dist/content/examples/playervox-rating/tsconfig.json +16 -0
  233. package/dist/content/examples/playervox-rating/view.ocml +62 -0
  234. package/dist/content/examples/playervox-reviews/LICENSE +21 -0
  235. package/dist/content/examples/playervox-reviews/README.md +194 -0
  236. package/dist/content/examples/playervox-reviews/listing.json +19 -0
  237. package/dist/content/examples/playervox-reviews/locales/en.json +32 -0
  238. package/dist/content/examples/playervox-reviews/locales/fr.json +32 -0
  239. package/dist/content/examples/playervox-reviews/logic.ts +822 -0
  240. package/dist/content/examples/playervox-reviews/manifest.json +30 -0
  241. package/dist/content/examples/playervox-reviews/package.json +16 -0
  242. package/dist/content/examples/playervox-reviews/style.ocss +260 -0
  243. package/dist/content/examples/playervox-reviews/tests/account.scenario.json +249 -0
  244. package/dist/content/examples/playervox-reviews/tests/bounds.scenario.json +336 -0
  245. package/dist/content/examples/playervox-reviews/tests/changes.scenario.json +515 -0
  246. package/dist/content/examples/playervox-reviews/tests/filter.scenario.json +400 -0
  247. package/dist/content/examples/playervox-reviews/tests/frame.scenario.json +185 -0
  248. package/dist/content/examples/playervox-reviews/tests/keyboard.scenario.json +188 -0
  249. package/dist/content/examples/playervox-reviews/tests/load-logic.mjs +22 -0
  250. package/dist/content/examples/playervox-reviews/tests/logic.test.mjs +559 -0
  251. package/dist/content/examples/playervox-reviews/tests/offline-start.scenario.json +152 -0
  252. package/dist/content/examples/playervox-reviews/tests/offline.scenario.json +311 -0
  253. package/dist/content/examples/playervox-reviews/tests/paging.scenario.json +497 -0
  254. package/dist/content/examples/playervox-reviews/tests/preview.scenario.json +286 -0
  255. package/dist/content/examples/playervox-reviews/tests/reading.scenario.json +591 -0
  256. package/dist/content/examples/playervox-reviews/tests/refused.scenario.json +54 -0
  257. package/dist/content/examples/playervox-reviews/tests/scale.scenario.json +303 -0
  258. package/dist/content/examples/playervox-reviews/tests/states.scenario.json +700 -0
  259. package/dist/content/examples/playervox-reviews/tests/unavailable.scenario.json +192 -0
  260. package/dist/content/examples/playervox-reviews/tsconfig.json +16 -0
  261. package/dist/content/examples/playervox-reviews/view.ocml +110 -0
  262. package/dist/content/examples/playervox-score/LICENSE +21 -0
  263. package/dist/content/examples/playervox-score/README.md +131 -0
  264. package/dist/content/examples/playervox-score/listing.json +19 -0
  265. package/dist/content/examples/playervox-score/locales/en.json +23 -0
  266. package/dist/content/examples/playervox-score/locales/fr.json +23 -0
  267. package/dist/content/examples/playervox-score/logic.ts +430 -0
  268. package/dist/content/examples/playervox-score/manifest.json +47 -0
  269. package/dist/content/examples/playervox-score/package.json +16 -0
  270. package/dist/content/examples/playervox-score/style.ocss +247 -0
  271. package/dist/content/examples/playervox-score/tests/grades.scenario.json +279 -0
  272. package/dist/content/examples/playervox-score/tests/load-logic.mjs +22 -0
  273. package/dist/content/examples/playervox-score/tests/logic.test.mjs +229 -0
  274. package/dist/content/examples/playervox-score/tests/options.scenario.json +302 -0
  275. package/dist/content/examples/playervox-score/tests/preview.scenario.json +68 -0
  276. package/dist/content/examples/playervox-score/tests/pulse.scenario.json +157 -0
  277. package/dist/content/examples/playervox-score/tests/refused.scenario.json +21 -0
  278. package/dist/content/examples/playervox-score/tests/signed-out.scenario.json +46 -0
  279. package/dist/content/examples/playervox-score/tests/states.scenario.json +450 -0
  280. package/dist/content/examples/playervox-score/tests/unavailable.scenario.json +84 -0
  281. package/dist/content/examples/playervox-score/tsconfig.json +16 -0
  282. package/dist/content/examples/playervox-score/view.ocml +51 -0
  283. package/dist/content/examples/session/LICENSE +21 -0
  284. package/dist/content/examples/session/README.md +57 -0
  285. package/dist/content/examples/session/listing.json +19 -0
  286. package/dist/content/examples/session/locales/en.json +3 -0
  287. package/dist/content/examples/session/locales/fr.json +3 -0
  288. package/dist/content/examples/session/logic.ts +26 -0
  289. package/dist/content/examples/session/manifest.json +19 -0
  290. package/dist/content/examples/session/package.json +16 -0
  291. package/dist/content/examples/session/style.ocss +16 -0
  292. package/dist/content/examples/session/tests/hidden.scenario.json +45 -0
  293. package/dist/content/examples/session/tests/load-logic.mjs +22 -0
  294. package/dist/content/examples/session/tests/logic.test.mjs +37 -0
  295. package/dist/content/examples/session/tests/preview.scenario.json +28 -0
  296. package/dist/content/examples/session/tests/refused.scenario.json +20 -0
  297. package/dist/content/examples/session/tests/refused.test.mjs +16 -0
  298. package/dist/content/examples/session/tests/render.scenario.json +95 -0
  299. package/dist/content/examples/session/tests/ticks.scenario.json +139 -0
  300. package/dist/content/examples/session/tests/unknown.scenario.json +37 -0
  301. package/dist/content/examples/session/tsconfig.json +16 -0
  302. package/dist/content/examples/session/view.ocml +11 -0
  303. package/dist/content/examples/stopwatch/LICENSE +21 -0
  304. package/dist/content/examples/stopwatch/README.md +99 -0
  305. package/dist/content/examples/stopwatch/listing.json +19 -0
  306. package/dist/content/examples/stopwatch/locales/en.json +8 -0
  307. package/dist/content/examples/stopwatch/locales/fr.json +8 -0
  308. package/dist/content/examples/stopwatch/logic.ts +93 -0
  309. package/dist/content/examples/stopwatch/manifest.json +19 -0
  310. package/dist/content/examples/stopwatch/package.json +16 -0
  311. package/dist/content/examples/stopwatch/style.ocss +54 -0
  312. package/dist/content/examples/stopwatch/tests/errors.scenario.json +121 -0
  313. package/dist/content/examples/stopwatch/tests/gesture.scenario.json +154 -0
  314. package/dist/content/examples/stopwatch/tests/hidden.scenario.json +57 -0
  315. package/dist/content/examples/stopwatch/tests/hundredths.scenario.json +173 -0
  316. package/dist/content/examples/stopwatch/tests/load-logic.mjs +22 -0
  317. package/dist/content/examples/stopwatch/tests/logic.test.mjs +99 -0
  318. package/dist/content/examples/stopwatch/tests/preview.scenario.json +36 -0
  319. package/dist/content/examples/stopwatch/tests/read-only.scenario.json +42 -0
  320. package/dist/content/examples/stopwatch/tests/read-only.test.mjs +18 -0
  321. package/dist/content/examples/stopwatch/tests/refused.scenario.json +22 -0
  322. package/dist/content/examples/stopwatch/tests/refused.test.mjs +18 -0
  323. package/dist/content/examples/stopwatch/tests/render.scenario.json +105 -0
  324. package/dist/content/examples/stopwatch/tests/states.scenario.json +246 -0
  325. package/dist/content/examples/stopwatch/tests/unknown.scenario.json +40 -0
  326. package/dist/content/examples/stopwatch/tsconfig.json +16 -0
  327. package/dist/content/examples/stopwatch/view.ocml +29 -0
  328. package/dist/content/examples/twitch-chat/LICENSE +21 -0
  329. package/dist/content/examples/twitch-chat/README.md +283 -0
  330. package/dist/content/examples/twitch-chat/listing.json +19 -0
  331. package/dist/content/examples/twitch-chat/locales/en.json +52 -0
  332. package/dist/content/examples/twitch-chat/locales/fr.json +52 -0
  333. package/dist/content/examples/twitch-chat/logic.ts +887 -0
  334. package/dist/content/examples/twitch-chat/manifest.json +33 -0
  335. package/dist/content/examples/twitch-chat/package.json +16 -0
  336. package/dist/content/examples/twitch-chat/style.ocss +544 -0
  337. package/dist/content/examples/twitch-chat/tests/account.scenario.json +325 -0
  338. package/dist/content/examples/twitch-chat/tests/burst.scenario.json +1866 -0
  339. package/dist/content/examples/twitch-chat/tests/channel-refused.scenario.json +372 -0
  340. package/dist/content/examples/twitch-chat/tests/channel.scenario.json +480 -0
  341. package/dist/content/examples/twitch-chat/tests/draft.scenario.json +279 -0
  342. package/dist/content/examples/twitch-chat/tests/fade.scenario.json +269 -0
  343. package/dist/content/examples/twitch-chat/tests/failures.scenario.json +420 -0
  344. package/dist/content/examples/twitch-chat/tests/favorites.scenario.json +376 -0
  345. package/dist/content/examples/twitch-chat/tests/frame.scenario.json +152 -0
  346. package/dist/content/examples/twitch-chat/tests/lifetime.scenario.json +186 -0
  347. package/dist/content/examples/twitch-chat/tests/load-logic.mjs +22 -0
  348. package/dist/content/examples/twitch-chat/tests/logic.test.mjs +1053 -0
  349. package/dist/content/examples/twitch-chat/tests/passive.scenario.json +536 -0
  350. package/dist/content/examples/twitch-chat/tests/preview.scenario.json +147 -0
  351. package/dist/content/examples/twitch-chat/tests/read-only.scenario.json +202 -0
  352. package/dist/content/examples/twitch-chat/tests/read-only.test.mjs +63 -0
  353. package/dist/content/examples/twitch-chat/tests/refused.scenario.json +65 -0
  354. package/dist/content/examples/twitch-chat/tests/refused.test.mjs +43 -0
  355. package/dist/content/examples/twitch-chat/tests/render.scenario.json +347 -0
  356. package/dist/content/examples/twitch-chat/tests/reply.scenario.json +384 -0
  357. package/dist/content/examples/twitch-chat/tests/send-refused.scenario.json +383 -0
  358. package/dist/content/examples/twitch-chat/tests/send.scenario.json +300 -0
  359. package/dist/content/examples/twitch-chat/tests/states.scenario.json +455 -0
  360. package/dist/content/examples/twitch-chat/tests/unavailable.scenario.json +256 -0
  361. package/dist/content/examples/twitch-chat/tests/unread.scenario.json +997 -0
  362. package/dist/content/examples/twitch-chat/tsconfig.json +16 -0
  363. package/dist/content/examples/twitch-chat/view.ocml +141 -0
  364. package/dist/content/examples/warframe-market/LICENSE +21 -0
  365. package/dist/content/examples/warframe-market/README.md +176 -0
  366. package/dist/content/examples/warframe-market/listing.json +19 -0
  367. package/dist/content/examples/warframe-market/locales/en.json +44 -0
  368. package/dist/content/examples/warframe-market/locales/fr.json +44 -0
  369. package/dist/content/examples/warframe-market/logic.ts +1265 -0
  370. package/dist/content/examples/warframe-market/manifest.json +92 -0
  371. package/dist/content/examples/warframe-market/package.json +16 -0
  372. package/dist/content/examples/warframe-market/style.ocss +422 -0
  373. package/dist/content/examples/warframe-market/tests/bounds.scenario.json +60 -0
  374. package/dist/content/examples/warframe-market/tests/cached.scenario.json +70 -0
  375. package/dist/content/examples/warframe-market/tests/detail.scenario.json +251 -0
  376. package/dist/content/examples/warframe-market/tests/errors.scenario.json +105 -0
  377. package/dist/content/examples/warframe-market/tests/fixtures.json +295 -0
  378. package/dist/content/examples/warframe-market/tests/load-logic.mjs +22 -0
  379. package/dist/content/examples/warframe-market/tests/logic.test.mjs +505 -0
  380. package/dist/content/examples/warframe-market/tests/no-clipboard.scenario.json +104 -0
  381. package/dist/content/examples/warframe-market/tests/passive.scenario.json +87 -0
  382. package/dist/content/examples/warframe-market/tests/preview.scenario.json +146 -0
  383. package/dist/content/examples/warframe-market/tests/refresh.scenario.json +56 -0
  384. package/dist/content/examples/warframe-market/tests/refused.scenario.json +74 -0
  385. package/dist/content/examples/warframe-market/tests/render.scenario.json +210 -0
  386. package/dist/content/examples/warframe-market/tests/search.scenario.json +189 -0
  387. package/dist/content/examples/warframe-market/tests/unavailable.scenario.json +54 -0
  388. package/dist/content/examples/warframe-market/tsconfig.json +16 -0
  389. package/dist/content/examples/warframe-market/view.ocml +116 -0
  390. package/dist/content/examples/weather/LICENSE +20 -0
  391. package/dist/content/examples/weather/listing.json +10 -0
  392. package/dist/content/examples/weather/locales/en.json +9 -0
  393. package/dist/content/examples/weather/locales/fr.json +9 -0
  394. package/dist/content/examples/weather/logic.ts +62 -0
  395. package/dist/content/examples/weather/manifest.json +51 -0
  396. package/dist/content/examples/weather/package.json +15 -0
  397. package/dist/content/examples/weather/style.ocss +29 -0
  398. package/dist/content/examples/weather/tsconfig.json +16 -0
  399. package/dist/content/examples/weather/view.ocml +12 -0
  400. package/dist/content/index.json +3601 -0
  401. package/dist/content/reference/errors.json +1712 -0
  402. package/dist/content/reference/limits.json +1154 -0
  403. package/dist/content/reference/manifest.md +223 -0
  404. package/dist/content/reference/permissions.json +413 -0
  405. package/dist/content/templates/blank/locales/en.json +3 -0
  406. package/dist/content/templates/blank/locales/fr.json +3 -0
  407. package/dist/content/templates/blank/logic.ts +7 -0
  408. package/dist/content/templates/blank/manifest.json +16 -0
  409. package/dist/content/templates/blank/style.ocss +10 -0
  410. package/dist/content/templates/blank/tests/example.scenario.json +10 -0
  411. package/dist/content/templates/blank/view.ocml +6 -0
  412. package/dist/content/templates/chart/locales/en.json +3 -0
  413. package/dist/content/templates/chart/locales/fr.json +3 -0
  414. package/dist/content/templates/chart/logic.ts +27 -0
  415. package/dist/content/templates/chart/manifest.json +16 -0
  416. package/dist/content/templates/chart/style.ocss +27 -0
  417. package/dist/content/templates/chart/tests/example.scenario.json +10 -0
  418. package/dist/content/templates/chart/view.ocml +10 -0
  419. package/dist/content/templates/counter/locales/en.json +4 -0
  420. package/dist/content/templates/counter/locales/fr.json +4 -0
  421. package/dist/content/templates/counter/logic.ts +20 -0
  422. package/dist/content/templates/counter/manifest.json +16 -0
  423. package/dist/content/templates/counter/style.ocss +26 -0
  424. package/dist/content/templates/counter/tests/example.scenario.json +11 -0
  425. package/dist/content/templates/counter/view.ocml +13 -0
  426. package/dist/content/templates/list/locales/en.json +8 -0
  427. package/dist/content/templates/list/locales/fr.json +8 -0
  428. package/dist/content/templates/list/logic.ts +35 -0
  429. package/dist/content/templates/list/manifest.json +16 -0
  430. package/dist/content/templates/list/style.ocss +42 -0
  431. package/dist/content/templates/list/tests/example.scenario.json +10 -0
  432. package/dist/content/templates/list/view.ocml +17 -0
  433. package/dist/content/templates/shared/LICENSE +20 -0
  434. package/dist/content/templates/shared/package.json +14 -0
  435. package/dist/content/templates/shared/tsconfig.json +16 -0
  436. package/dist/content.js +68 -0
  437. package/dist/env.js +156 -0
  438. package/dist/fingerprint.js +32 -0
  439. package/dist/ids.js +27 -0
  440. package/dist/index.js +82 -0
  441. package/dist/knowledge.js +222 -0
  442. package/dist/npm.js +149 -0
  443. package/dist/prompts.js +47 -0
  444. package/dist/resources.js +82 -0
  445. package/dist/run.js +120 -0
  446. package/dist/server.js +43 -0
  447. package/dist/session.js +205 -0
  448. package/dist/sources.js +218 -0
  449. package/dist/text.js +80 -0
  450. package/dist/texts.js +44 -0
  451. package/dist/tools/audit.js +105 -0
  452. package/dist/tools/build.js +453 -0
  453. package/dist/tools/common.js +122 -0
  454. package/dist/tools/docs.js +196 -0
  455. package/dist/tools/preview.js +87 -0
  456. package/dist/tools/project.js +178 -0
  457. package/dist/tools/setup.js +146 -0
  458. package/dist/tools/submission.js +369 -0
  459. package/dist/version.js +3 -0
  460. package/npm-shrinkwrap.json +402 -0
  461. package/package.json +50 -4
@@ -0,0 +1,90 @@
1
+ # Créer des widgets pour PlayerVox OverCrow
2
+
3
+ Un widget PlayerVox OverCrow est un petit paquet que l’overlay dessine
4
+ par-dessus votre jeu : une horloge, un compteur d’images par seconde, une
5
+ liste de tâches, un chat. Vous décrivez sa vue en balisage, vous la stylez
6
+ avec un petit sous-ensemble de CSS et vous écrivez sa logique en TypeScript
7
+ avec `@overcrow/sdk`. L’outil en ligne de commande `overcrow-widget` le
8
+ vérifie, le teste et l’empaquette ; le catalogue signé l’apporte aux
9
+ utilisateurs.
10
+
11
+ Tous les widgets intégrés d’OverCrow sont écrits ainsi, avec le même SDK
12
+ public, le même format de paquet et le même sandbox que les vôtres. Leurs
13
+ sources sont les [widgets de référence](widgets.md).
14
+
15
+ ## De quoi est fait un widget
16
+
17
+ | Fichier | Rôle | Page |
18
+ | --- | --- | --- |
19
+ | `manifest.json` | Identité, version, noms, règles de taille, menu d’options et permissions que le widget demande. | [Le manifeste](manifest.md) |
20
+ | `view.ocml` | La vue : des éléments comme `box`, `text`, `button`, `list` ou `chart`, liés à l’état par des expressions `{…}`. | [La vue](view.md) |
21
+ | `style.ocss` | Le style, facultatif : mise en page flex et grid, couleurs, bordures, typographie, avec les tokens du thème. | [Le style](style.md) |
22
+ | `logic.ts` | La logique : l’état, les gestionnaires d’événements, les minuteurs et les appels aux services. | [La logique](logic.md) |
23
+ | `locales/en.json`, `locales/fr.json` | Les messages en anglais et en français, facultatifs. | [Messages](logic.md#messages) |
24
+ | `LICENSE` | La licence de votre widget. | [Le paquet](package.md) |
25
+
26
+ La vue et la logique se rejoignent ainsi : la vue lit `state.count` et
27
+ appelle les gestionnaires que la logique exporte.
28
+
29
+ <!-- source: templates/counter/view.ocml -->
30
+ ```xml
31
+ <box class="counter">
32
+ <text class="value">{state.count}</text>
33
+ <box class="actions">
34
+ <button class="step" label={t("decrement")} on:activate={decrement}>
35
+ <icon name="minus"/>
36
+ </button>
37
+ <button class="step" label={t("increment")} on:activate={increment}>
38
+ <icon name="plus"/>
39
+ </button>
40
+ </box>
41
+ </box>
42
+ ```
43
+
44
+ <!-- source: templates/counter/logic.ts -->
45
+ ```ts
46
+ const state = initState({ count: 0 });
47
+
48
+ export function increment(): void {
49
+ state.count += 1;
50
+ }
51
+ ```
52
+
53
+ ## Comment un widget s’exécute
54
+
55
+ - La logique tourne dans sa propre petite VM JavaScript, dans son propre
56
+ processus, enfermé dans un sandbox. Elle n’a ni DOM, ni système de
57
+ fichiers, ni réseau, ni accès aux autres widgets : elle n’atteint OverCrow
58
+ que par le SDK.
59
+ - Après chaque événement, déclenchement de minuteur ou réponse d’un service,
60
+ la VM évalue de nouveau la vue et n’envoie à OverCrow que ce qui a changé.
61
+ OverCrow met en page et dessine le widget lui-même : aucun moteur web
62
+ n’intervient.
63
+ - Tout ce qui touche à l’extérieur (réseau, stockage, presse-papiers,
64
+ données de jeu) est un service d’OverCrow. À chaque appel, celui-ci
65
+ vérifie les permissions que le widget a déclarées et que l’utilisateur a
66
+ accordées. Voir [services et permissions](services.md).
67
+
68
+ Ces pages appellent OverCrow **l’hôte** quand elles décrivent ce qu’il fait
69
+ pour un widget : l’hôte dessine la vue, répond aux services et conserve les
70
+ données de l’utilisateur.
71
+
72
+ ## Par où commencer
73
+
74
+ 1. Suivez le [guide du créateur](guide.md) : de `overcrow-widget init` à un
75
+ widget soumis, en douze courtes étapes.
76
+ 2. Lisez les [widgets de référence](widgets.md) : les widgets intégrés, avec
77
+ leurs tests.
78
+ 3. Approfondissez, un thème par page : le [manifeste](manifest.md), la
79
+ [vue](view.md), le [style](style.md), la [logique](logic.md), les
80
+ [services et permissions](services.md), les [formulaires](forms.md).
81
+ 4. Servez-vous des outils : la [CLI](cli.md), les [tests](testing.md) et le
82
+ [canal de développement](dev-channel.md), qui exécute votre widget dans
83
+ OverCrow pendant que vous l’écrivez.
84
+ 5. Cherchez un élément, une propriété de style, un service ou une fonction
85
+ du SDK dans la [référence](reference.md).
86
+ 6. Avant de publier, lisez [le paquet](package.md),
87
+ [sécurité](security.md) et [publication et revue](publishing.md).
88
+
89
+ Les widgets fonctionnent de la même façon sous Windows et sous Linux : le
90
+ même paquet, le même SDK et le même rendu.
@@ -0,0 +1,244 @@
1
+ # Limites
2
+
3
+ Tout est borné dans un widget PlayerVox OverCrow : la taille de ses
4
+ fichiers, le nombre d’éléments de sa vue, la durée d’un tour de sa logique,
5
+ les octets d’une réponse. Ces limites gardent un widget petit et empêchent
6
+ qu’un widget ralentisse le jeu ou les autres widgets. Cette page liste
7
+ celles que rencontre l’auteur d’un widget.
8
+
9
+ ```text
10
+ error[view.too_many_children]: the view exceeds a size bound of the schema
11
+ --> view.ocml:15:14375
12
+ = help: split long static content, or render repeated content with <for>
13
+ check: 1 error(s), 0 warning(s)
14
+ ```
15
+
16
+ Un élément de plus de 1024 enfants : `check` nomme la limite, l’endroit et
17
+ une façon d’en sortir.
18
+
19
+ ## Ce qui se passe à une limite
20
+
21
+ - **Dans les fichiers du projet**, une limite est une erreur
22
+ d’`overcrow-widget check`, avec un code qui la nomme
23
+ (`view.too_many_elements`, `style.too_many_rules`, `project.file_size`…).
24
+ Rien n’est tronqué.
25
+ - **Dans un appel de service**, un paramètre hors limites échoue avec
26
+ `invalid_request`, un quota plein avec `quota_exceeded`, et trop de
27
+ requêtes simultanées avec `busy`. Voir [erreurs](services.md#erreurs).
28
+ - **Pendant que la logique s’exécute**, dépasser un budget de la VM (la
29
+ durée d’un tour, le tas, les messages d’un tour) arrête le widget ;
30
+ OverCrow le redémarre quelques fois. Voir
31
+ [ce qui se passe en cas d’échec](logic.md#ce-qui-se-passe-en-cas-déchec).
32
+ - **Dans ce que le widget affiche**, OverCrow refuse une valeur hors limites
33
+ (un texte trop long pour un attribut, trop de nœuds), ce qui arrête aussi
34
+ le widget : bornez ce que vous affichez, par exemple le nombre de lignes
35
+ d’une liste.
36
+
37
+ Les longueurs sont en pixels logiques, à une échelle du contenu de 100 %.
38
+ Les limites de texte comptent des octets UTF-8, sauf quand l’unité indique
39
+ des caractères. Un Kio vaut 1024 octets et un Mio 1024² octets. Les limites
40
+ que la logique peut lire sont aussi des constantes du SDK : voir
41
+ [constantes de limites](sdk.md#constantes-de-limites).
42
+
43
+ ## Limites par thème
44
+
45
+ <!-- generated:limits -->
46
+ ### Fichiers du projet et paquet
47
+
48
+ | Limite | Valeur | Signification |
49
+ | --- | --- | --- |
50
+ | `MAX_VIEW_SOURCE_BYTES` | 256 Kio | Taille du fichier source `view.ocml`. |
51
+ | `MAX_STYLE_SOURCE_BYTES` | 128 Kio | Taille du fichier source `style.ocss`. |
52
+ | `MAX_LOGIC_BYTES` | 512 Kio | Le script `logic.js`, code compilé de la vue compris. |
53
+ | `MAX_LOCALE_ENTRIES` | 2048 | Messages d’un fichier `locales/<locale>.json`. |
54
+ | `MAX_LOCALE_KEY_BYTES` | 128 octets | Longueur d’une clé de message. |
55
+ | `MAX_LOCALE_VALUE_BYTES` | 4 Kio | Longueur du texte d’un message. |
56
+ | `MAX_LOCALE_FILE_BYTES` | 256 Kio | Un fichier `locales/<locale>.json`. |
57
+ | `MAX_MANIFEST_BYTES` | 64 Kio | Taille de `manifest.json`. |
58
+ | `MAX_LICENSE_BYTES` | 64 Kio | Texte de `LICENSE`. |
59
+ | `MAX_COMPILED_VIEW_BYTES` | 512 Kio | `view.json`, la vue compilée. |
60
+ | `MAX_PACKAGE_BYTES` | 16 Mio | Taille d’une archive `.ocpkg`. |
61
+ | `MAX_PACKAGE_FILES` | 256 | Entrées d’une archive, `manifest.json` et `ledger.json` compris. |
62
+ | `MAX_PACKAGE_PATH_BYTES` | 128 octets | Chemin d’une entrée de l’archive. |
63
+ | `MAX_ASSET_PATH_SEGMENTS` | 4 | Segments de chemin sous `assets/`, nom du fichier compris. |
64
+
65
+ ### Manifeste et menu d’options
66
+
67
+ | Limite | Valeur | Signification |
68
+ | --- | --- | --- |
69
+ | `MIN_WIDGET_ID_BYTES` | 3 octets | ID de widget le plus court. |
70
+ | `MAX_WIDGET_ID_BYTES` | 128 octets | ID de widget le plus long ; chaque segment séparé par un point fait au plus 63 octets. |
71
+ | `MAX_VERSION_BYTES` | 64 octets | Texte de la version du paquet. |
72
+ | `MAX_WIDGET_NAME_CHARS` | 48 caractères | Un nom du widget, en anglais ou en français, dans le manifeste. |
73
+ | `MAX_WIDGET_EDGE_PX` | 4096 px | Largeur ou hauteur du cadre d’un widget. |
74
+ | `MIN_CONTENT_SCALE` | 500 ‰ | Plus petite échelle du contenu (50 %). |
75
+ | `MAX_CONTENT_SCALE` | 1750 ‰ | Plus grande échelle du contenu (175 %). |
76
+ | `MAX_GAME_EVENTS` | 32 | Événements de jeu sémantiques déclarés par un paquet. |
77
+ | `MAX_MENU_ROWS` | 16 | Lignes du widget dans `wrapper.menu`, lignes de groupe et leurs enfants compris. |
78
+ | `MAX_MENU_DEPTH` | 1 | Niveaux de sous-menu : un `group` ne peut pas contenir un autre `group`. |
79
+ | `MAX_MENU_LABEL_CHARS` | 80 caractères | Un libellé de ligne ou de choix, en anglais ou en français. |
80
+ | `MAX_MENU_ID_BYTES` | 48 octets | ID d’une ligne et valeur d’un choix. |
81
+ | `MIN_MENU_CHOICES` | 2 | Choix d’une ligne `choice`, borne inférieure. |
82
+ | `MAX_MENU_CHOICES` | 16 | Choix d’une ligne `choice`, borne supérieure. |
83
+ | `MAX_MENU_NUMBER` | 1000000 en valeur absolue | Valeur absolue d’une borne, d’un pas ou d’une valeur par défaut de curseur. |
84
+ | `MAX_SLIDER_STEPS` | 10000 | `(max - min) / step` d’une ligne de curseur. |
85
+
86
+ ### Règles réseau
87
+
88
+ | Limite | Valeur | Signification |
89
+ | --- | --- | --- |
90
+ | `MAX_NETWORK_RULES` | 32 | Règles réseau déclarées par un paquet. |
91
+ | `MAX_NETWORK_PATH_BYTES` | 1 Kio | Modèle `path` d’une règle réseau. |
92
+ | `MAX_PATH_PARAMS` | 8 | `pathParams` d’une règle réseau. |
93
+ | `MAX_QUERY_PARAMS` | 16 | `queryParams` d’une règle réseau. |
94
+ | `MAX_ENUM_VALUES` | 32 | Valeurs d’une contrainte de paramètre `enum`. |
95
+ | `MAX_ENUM_VALUE_BYTES` | 128 octets | Une valeur d’un paramètre `enum`. |
96
+ | `MAX_PARAMETER_NAME_BYTES` | 32 octets | Nom d’un paramètre de chemin ou de requête. |
97
+ | `MAX_SLUG_PARAMETER_BYTES` | 128 octets | Plus grand `maxLength` d’une contrainte de paramètre `slug`. |
98
+ | `MAX_STRING_PARAMETER_BYTES` | 256 octets | Plus grand `maxLength` d’une contrainte de paramètre de requête `string`. |
99
+ | `MAX_DNS_LABEL_BYTES` | 63 octets | Un label, entre deux points, du nom d’hôte d’une origine réseau ou d’un ID de widget. |
100
+ | `MAX_DNS_NAME_BYTES` | 253 octets | Nom d’hôte d’une origine réseau. |
101
+ | `MAX_REQUEST_URL_BYTES` | 2 Kio | Texte de l’URL d’une requête. |
102
+ | `MAX_HTTP_REQUEST_BYTES` | 256 Kio | Corps d’une requête sortante. |
103
+ | `MAX_HTTP_RESPONSE_BYTES` | 1 Mio | Corps d’une réponse remise au widget quand sa règle réseau ne déclare pas de `maxResponseBytes`, et de toute réponse `as: "image"`. |
104
+ | `MAX_HTTP_DECLARED_RESPONSE_BYTES` | 3 Mio | Plus grand `maxResponseBytes` d’une règle réseau : le corps d’une réponse que la règle autorise, remis au widget. |
105
+ | `MAX_HTTP_RESPONSE_BYTES_PER_WIDGET` | 4 Mio | Octets de réponse que les requêtes en cours d’un widget peuvent réserver, chacune à hauteur de la limite de sa règle ; `busy` au-delà. Vaut `MAX_HTTP_CONCURRENT_PER_WIDGET` × `MAX_HTTP_RESPONSE_BYTES` : les règles sans `maxResponseBytes` ne l’atteignent jamais. |
106
+ | `MAX_HTTP_RESPONSE_BYTES_GLOBAL` | 64 Mio | Octets de réponse que les requêtes en cours de tous les widgets peuvent réserver ; `busy` au-delà. Vaut `MAX_HTTP_CONCURRENT_GLOBAL` × `MAX_HTTP_RESPONSE_BYTES`. |
107
+ | `MAX_HTTP_CONCURRENT_PER_WIDGET` | 4 | Requêtes en cours d’un widget. |
108
+ | `MAX_HTTP_CONCURRENT_GLOBAL` | 64 | Requêtes en cours de tous les widgets. |
109
+ | `HTTP_TIMEOUT_MS` | 30000 ms | Durée totale d’une requête. |
110
+
111
+ ### Fiche
112
+
113
+ | Limite | Valeur | Signification |
114
+ | --- | --- | --- |
115
+ | `MAX_LISTING_LOCALIZATIONS` | 16 | Textes localisés de la fiche d’une version. |
116
+ | `MAX_LISTING_NAME_BYTES` | 128 octets | Nom d’une localisation, affiché par la marketplace. |
117
+ | `MAX_LISTING_DESCRIPTION_BYTES` | 512 octets | Description d’une localisation, affichée par la marketplace. |
118
+ | `MAX_AUTHOR_BYTES` | 128 octets | Auteur affiché dans une fiche. |
119
+ | `MAX_SPDX_LICENSE_BYTES` | 64 octets | Expression de licence SPDX d’une fiche. |
120
+ | `MAX_CATALOG_URL_BYTES` | 2 Kio | URL des sources d’une fiche. |
121
+ | `MAX_PREVIEW_BYTES` | 256 Kio | Image PNG d’aperçu d’une fiche. |
122
+
123
+ ### Vue
124
+
125
+ | Limite | Valeur | Signification |
126
+ | --- | --- | --- |
127
+ | `MAX_VIEW_ELEMENTS` | 4096 | Éléments écrits dans `view.ocml`, composants compris. |
128
+ | `MAX_COMPONENTS` | 64 | Composants locaux déclarés dans une vue. |
129
+ | `MAX_COMPONENT_PROPS` | 32 | Propriétés déclarées d’un composant local. |
130
+ | `MAX_VIEW_EXPRESSIONS` | 4096 | Expressions compilées d’une vue, gestionnaires compris. |
131
+ | `MAX_EXPRESSION_BYTES` | 1 Kio | Longueur du source d’une expression `{expr}`. |
132
+ | `MAX_EXPRESSION_DEPTH` | 32 | Imbrication des opérateurs, des appels, des accès aux membres et des littéraux dans une expression. |
133
+ | `MAX_CALL_ARGUMENTS` | 8 | Arguments d’un appel, et entrées d’un littéral d’objet ou de tableau, dans une expression. |
134
+ | `MAX_SCENE_NODES` | 4096 | Éléments présents dans la vue d’un widget en cours d’exécution, éléments des listes compris. |
135
+ | `MAX_TREE_DEPTH` | 32 | Profondeur de l’arbre de la vue sous sa racine ; c’est aussi la limite d’imbrication de `if`, `for` et des composants. |
136
+ | `MAX_CHILDREN` | 1024 | Enfants d’un élément. |
137
+ | `MAX_NODE_TEXT_BYTES` | 16 Kio | Contenu textuel d’un élément `text`, `span`, `badge` ou `option`. |
138
+ | `MAX_ATTRIBUTE_TEXT_BYTES` | 1 Kio | Tout attribut de texte qui n’a pas de limite plus stricte. |
139
+ | `MAX_LABEL_BYTES` | 256 octets | Attributs `label`, `tooltip` et `placeholder`. |
140
+ | `MAX_IDENTIFIER_BYTES` | 64 octets | Noms de classes, de composants, de champs, de blocs `@keyframes` et autres identifiants du même genre. |
141
+ | `MAX_INITIALS_BYTES` | 16 octets | Texte de remplacement `initials` d’un `avatar`. |
142
+ | `MAX_CLASSES_PER_NODE` | 16 | Classes d’un élément. |
143
+ | `MAX_FIELD_TEXT_BYTES` | 16 Kio | Contenu d’un `field` ou d’un `textarea`, et d’un événement `input` ou `change`. |
144
+ | `MAX_CHART_POINTS` | 1024 | Valeurs d’une série de graphique. |
145
+ | `MAX_CHART_SERIES` | 4 | Enfants `series` d’un `chart`. |
146
+ | `MAX_KEY_BYTES` | 32 octets | `key` d’un événement `keydown` : un caractère affichable ou une touche nommée. |
147
+
148
+ ### Style
149
+
150
+ | Limite | Valeur | Signification |
151
+ | --- | --- | --- |
152
+ | `MAX_STYLE_RULES` | 1024 | Règles d’une feuille de style, blocs `@keyframes` exclus. |
153
+ | `MAX_SELECTORS_PER_RULE` | 8 | Sélecteurs d’une règle, séparés par des virgules. |
154
+ | `MAX_COMPOUNDS_PER_SELECTOR` | 4 | Sélecteurs composés reliés par des combinateurs dans un sélecteur. |
155
+ | `MAX_SIMPLE_SELECTORS_PER_COMPOUND` | 6 | Sélecteurs de type, de classe et d’état dans un sélecteur composé. |
156
+ | `MAX_DECLARATIONS_PER_RULE` | 64 | Déclarations d’une règle ou d’une étape de `@keyframes`. |
157
+ | `MAX_KEYFRAMES` | 32 | Blocs `@keyframes` d’une feuille de style. |
158
+ | `MAX_KEYFRAME_STOPS` | 16 | Étapes d’un bloc `@keyframes`. |
159
+ | `MAX_SHADOWS` | 2 | Couches d’une valeur `box-shadow`. |
160
+ | `MAX_SHADOW_BLUR_PX` | 64 px | Rayon de flou et d’étalement d’une ombre. |
161
+ | `MAX_GRADIENT_STOPS` | 8 | Arrêts de couleur d’un `linear-gradient()`. |
162
+ | `MAX_GRID_TRACKS` | 24 | Pistes d’un `grid-template-rows` ou d’un `grid-template-columns`. |
163
+ | `MAX_GRID_FRACTION` | 1000 en valeur absolue | Plus grand facteur `<fr>` d’une piste de grille. |
164
+ | `MAX_TRANSITIONS` | 8 | Entrées d’une liste `transition` ou `animation`. |
165
+ | `MAX_ANIMATION_MS` | 300000 ms | Durée ou délai d’une transition ou d’une animation. |
166
+ | `MAX_ACTIVE_ANIMATIONS` | 64 | Transitions et animations en cours en même temps dans un widget ; les suivantes passent directement à leur état final. |
167
+ | `ANIMATION_RATE_HZ` | 60 Hz | Cadence maximale de repeinture pendant une animation ; rien n’est repeint quand rien ne change. |
168
+ | `MAX_LENGTH_PX` | 16384 px | Valeur absolue de toute longueur, de tout décalage et de toute coordonnée. |
169
+ | `MIN_FONT_SIZE_PX` | 6 px | Plus petit `font-size`, avant l’échelle du contenu. |
170
+ | `MAX_FONT_SIZE_PX` | 96 px | Plus grand `font-size`, avant l’échelle du contenu. |
171
+ | `MAX_PERCENT` | 1000 en valeur absolue | Valeur absolue de tout `<percent>` dans une valeur de style. |
172
+ | `MAX_ANGLE_DEG` | 3600 en valeur absolue | Valeur absolue de tout `<angle>`, en degrés (dix tours). |
173
+ | `MAX_TRANSFORM_FUNCTIONS` | 4 | Fonctions d’une valeur `transform`. |
174
+ | `MAX_TRANSFORM_SCALE` | 8 en valeur absolue | Plus grand facteur de `scale()` ; le plus petit est 0. |
175
+ | `MAX_EASING_STEPS` | 60 | Pas d’une fonction de progression `steps()`. |
176
+ | `MAX_ANIMATION_ITERATIONS` | 10000 | Nombre fini d’itérations d’une animation ; `infinite` reste admis. |
177
+
178
+ ### Dessin et images
179
+
180
+ | Limite | Valeur | Signification |
181
+ | --- | --- | --- |
182
+ | `MAX_CANVASES` | 8 | Éléments `canvas` d’un widget. |
183
+ | `MAX_DRAW_COMMANDS` | 4096 | Commandes d’un appel à `draw`, qui remplace le contenu du canvas. |
184
+ | `MAX_PATH_POINTS` | 16384 | Sommets que l’hôte dessine pour un appel à `draw`, tous chemins confondus, comptés selon un plafond fixe par commande : `moveTo` et `lineTo` 1, `quadTo` 8, `cubicTo` 16, `arc` et `circle` 64, `rect` 36, les autres commandes 0. |
185
+ | `MAX_DRAW_STATE_DEPTH` | 16 | Commandes `save` imbriquées. |
186
+ | `MAX_IMAGE_EDGE_PX` | 2048 px | Largeur ou hauteur d’une image décodée. |
187
+ | `MAX_IMAGE_ENCODED_BYTES` | 2 Mio | Taille encodée d’une image PNG, JPEG ou WebP, avant décodage. |
188
+
189
+ ### Logique
190
+
191
+ | Limite | Valeur | Signification |
192
+ | --- | --- | --- |
193
+ | `VM_HEAP_BYTES` | 16 Mio | Plafond du tas de la VM quand le manifeste n’en demande pas. |
194
+ | `VM_MAX_HEAP_BYTES` | 48 Mio | Plus grand plafond de tas qu’un manifeste peut demander. |
195
+ | `VM_STACK_BYTES` | 256 Kio | Plafond de la pile de la VM. |
196
+ | `VM_PROCESS_MEMORY_BYTES` | 64 Mio | Plafond de mémoire, strict, du processus d’un widget. |
197
+ | `VM_CPU_PERCENT` | 25 % d’un cœur | Plafond de CPU du processus d’un widget. |
198
+ | `VM_TURN_BUDGET_MS` | 50 ms | Durée d’un tour de la logique avant que la VM ne l’interrompe. |
199
+ | `VM_JOBS_PER_TURN` | 1024 | Tâches de promesses traitées dans un tour ; une file plus longue est un dépassement de ressources. |
200
+ | `VM_MESSAGES_PER_TURN` | 64 | Messages que le widget peut émettre pendant un tour. |
201
+ | `MAX_VM_MESSAGES_PER_SECOND` | 120 par seconde | Débit soutenu des messages du widget vers l’hôte. |
202
+ | `MAX_VM_MESSAGE_BURST` | 240 | Rafale de messages admise au-dessus de ce débit. |
203
+ | `MAX_PATCH_BYTES` | 256 Kio | Taille de ce que le widget envoie en une fois : un changement de la vue ou un appel à `draw`. |
204
+ | `MAX_PATCH_OPS` | 4096 | Opérations d’un changement de la vue (éléments créés, retirés, déplacés ou modifiés) après un tour. |
205
+ | `MAX_TIMERS` | 16 | Minuteurs actifs d’un widget. |
206
+ | `MIN_TIMER_INTERVAL_MS` | 100 ms | Plus courte période d’un minuteur ; l’animation relève du style, pas des minuteurs. |
207
+ | `CLOCK_RESOLUTION_MS` | 1 ms | Résolution de `Date.now()` dans la VM. |
208
+ | `MAX_LOG_BYTES` | 4 Kio | Texte d’un appel à `log`. |
209
+
210
+ ### Services
211
+
212
+ | Limite | Valeur | Signification |
213
+ | --- | --- | --- |
214
+ | `MAX_SERVICE_CALLS_IN_FLIGHT` | 16 | Appels de service sans réponse d’un widget, abonnements exclus. |
215
+ | `MAX_SUBSCRIPTIONS` | 16 | Abonnements ouverts d’un widget. |
216
+ | `STORAGE_QUOTA_BYTES` | 256 Kio | Clés et valeurs stockées par un widget. |
217
+ | `MAX_STORAGE_KEYS` | 512 | Clés stockées par un widget. |
218
+ | `MAX_STORAGE_KEY_BYTES` | 128 octets | Longueur d’une clé de stockage. |
219
+ | `MAX_STORAGE_VALUE_BYTES` | 64 Kio | Taille, en JSON sérialisé, d’une valeur stockée. |
220
+ | `MAX_CLIPBOARD_BYTES` | 16 Kio | Texte d’une écriture dans le presse-papiers. |
221
+ | `MAX_OBJECT_ID_BYTES` | 128 octets | ID opaque d’un objet, ou curseur, échangé avec un service. |
222
+
223
+ ### Notes, avis et chat
224
+
225
+ | Limite | Valeur | Signification |
226
+ | --- | --- | --- |
227
+ | `MAX_NOTES` | 8 | Notes du document de notes de l’utilisateur ; `notes.create` échoue au-delà. |
228
+ | `MAX_NOTE_TITLE_BYTES` | 96 octets | Titre d’une note, non vide une fois les espaces de début et de fin retirés. |
229
+ | `MAX_NOTE_BODY_BYTES` | 8 Kio | Corps d’une note. |
230
+ | `MAX_NOTE_ITEMS` | 64 | Entrées de la liste de tâches d’une note. |
231
+ | `MAX_NOTE_ITEM_BYTES` | 256 octets | Une entrée de liste de tâches. |
232
+ | `MAX_REVIEW_CHARS` | 2000 caractères | Texte d’un avis PlayerVox. |
233
+ | `MAX_CHAT_MESSAGE_CHARS` | 500 caractères | Message de chat Twitch, la limite de Twitch ; ni vide ni fait seulement d’espaces, sans caractère de contrôle. |
234
+ | `MAX_CHAT_FRAGMENTS` | 16 | Portions de texte et emotes d’un message de chat remis au widget ; l’hôte fond le reste en texte. |
235
+ | `MAX_CHAT_FAVORITES` | 20 | Chaînes Twitch favorites conservées par l’hôte. |
236
+ | `MAX_CHAT_CHANNEL_BYTES` | 25 octets | Identifiant d’une chaîne Twitch après normalisation : lettres ASCII, chiffres et `_`, en minuscules. |
237
+
238
+ ### Images de référence
239
+
240
+ | Limite | Valeur | Signification |
241
+ | --- | --- | --- |
242
+ | `PARITY_CHANNEL_TOLERANCE` | 2 niveaux sur 255 | Plus grand écart par canal pour qu’un pixel compte comme identique à celui de l’image de référence. |
243
+ | `PARITY_MAX_DIFFERENT_PIXELS` | 100 ppm | Part des pixels admise au-delà de la tolérance par canal. Une seule lettre fausse de 10 px dans un widget de 360 × 260 représente 385 ppm. |
244
+ <!-- /generated:limits -->