@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,336 @@
1
+ {
2
+ "scenarioVersion": 1,
3
+ "name": "bounds",
4
+ "description": "The longest review PlayerVox answers, 8000 characters: folded to three lines, then unfolded in a list that scrolls while the count and the pager stay below it. A review of exactly 120 characters has no Read more, one of 121 has; so has a short review of four lines. A blank review shows no text, and a blank original is no translation. The count follows the user's number format.",
5
+ "host": {
6
+ "mode": "interactive"
7
+ },
8
+ "fixtures": {
9
+ "calls": {
10
+ "playervox.reviews.page": [
11
+ {
12
+ "value": {
13
+ "gameName": "Portal 2",
14
+ "items": [
15
+ {
16
+ "id": "r61",
17
+ "author": "Mira_Quill",
18
+ "grade": "S+",
19
+ "score": 90,
20
+ "text": "Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it.",
21
+ "original": null,
22
+ "hidden": false,
23
+ "publishedAt": 1789900200000,
24
+ "offsetMinutes": 120
25
+ },
26
+ {
27
+ "id": "r60",
28
+ "author": "Kestrel42",
29
+ "grade": "A",
30
+ "score": 74,
31
+ "text": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
32
+ "original": null,
33
+ "hidden": false,
34
+ "publishedAt": 1789813800000,
35
+ "offsetMinutes": 120
36
+ },
37
+ {
38
+ "id": "r59",
39
+ "author": "Tavish",
40
+ "grade": "D",
41
+ "score": 38,
42
+ "text": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
43
+ "original": null,
44
+ "hidden": false,
45
+ "publishedAt": 1789727400000,
46
+ "offsetMinutes": 120
47
+ }
48
+ ],
49
+ "page": 1,
50
+ "totalPages": 428,
51
+ "count": 1284
52
+ }
53
+ },
54
+ {
55
+ "value": {
56
+ "gameName": "Portal 2",
57
+ "items": [
58
+ {
59
+ "id": "r61",
60
+ "author": "Mira_Quill",
61
+ "grade": "S+",
62
+ "score": 90,
63
+ "text": "Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it.",
64
+ "original": null,
65
+ "hidden": false,
66
+ "publishedAt": 1789900200000,
67
+ "offsetMinutes": 120
68
+ },
69
+ {
70
+ "id": "r60",
71
+ "author": "Kestrel42",
72
+ "grade": "A",
73
+ "score": 74,
74
+ "text": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
75
+ "original": null,
76
+ "hidden": false,
77
+ "publishedAt": 1789813800000,
78
+ "offsetMinutes": 120
79
+ },
80
+ {
81
+ "id": "r59",
82
+ "author": "Tavish",
83
+ "grade": "D",
84
+ "score": 38,
85
+ "text": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
86
+ "original": null,
87
+ "hidden": false,
88
+ "publishedAt": 1789727400000,
89
+ "offsetMinutes": 120
90
+ }
91
+ ],
92
+ "page": 1,
93
+ "totalPages": 428,
94
+ "count": 1284
95
+ }
96
+ },
97
+ {
98
+ "value": {
99
+ "gameName": "Portal 2",
100
+ "items": [
101
+ {
102
+ "id": "r61",
103
+ "author": "Mira_Quill",
104
+ "grade": "S+",
105
+ "score": 90,
106
+ "text": "Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it. Chamber after chamber, the game keeps finding one more thing to do with two portals. It never repeats a trick without bending it.",
107
+ "original": null,
108
+ "hidden": false,
109
+ "publishedAt": 1789900200000,
110
+ "offsetMinutes": 120
111
+ },
112
+ {
113
+ "id": "r60",
114
+ "author": "Kestrel42",
115
+ "grade": "A",
116
+ "score": 74,
117
+ "text": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
118
+ "original": null,
119
+ "hidden": false,
120
+ "publishedAt": 1789813800000,
121
+ "offsetMinutes": 120
122
+ },
123
+ {
124
+ "id": "r59",
125
+ "author": "Tavish",
126
+ "grade": "D",
127
+ "score": 38,
128
+ "text": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
129
+ "original": null,
130
+ "hidden": false,
131
+ "publishedAt": 1789727400000,
132
+ "offsetMinutes": 120
133
+ }
134
+ ],
135
+ "page": 1,
136
+ "totalPages": 428,
137
+ "count": 1284
138
+ }
139
+ },
140
+ {
141
+ "value": {
142
+ "gameName": "Portal 2",
143
+ "items": [
144
+ {
145
+ "id": "r58",
146
+ "author": "Wren",
147
+ "grade": "C",
148
+ "score": 55,
149
+ "text": "one\ntwo\nthree\nfour",
150
+ "original": null,
151
+ "hidden": false,
152
+ "publishedAt": 1789641000000,
153
+ "offsetMinutes": 120
154
+ },
155
+ {
156
+ "id": "r57",
157
+ "author": "Onyx Vale",
158
+ "grade": "D",
159
+ "score": 20,
160
+ "text": " ",
161
+ "original": null,
162
+ "hidden": false,
163
+ "publishedAt": 1789554600000,
164
+ "offsetMinutes": 120
165
+ },
166
+ {
167
+ "id": "r56",
168
+ "author": "Lune-Bleue",
169
+ "grade": "F",
170
+ "score": 19,
171
+ "text": "ok",
172
+ "original": " ",
173
+ "hidden": false,
174
+ "publishedAt": 1789468200000,
175
+ "offsetMinutes": 120
176
+ }
177
+ ],
178
+ "page": 2,
179
+ "totalPages": 428,
180
+ "count": 1284
181
+ }
182
+ }
183
+ ]
184
+ },
185
+ "subscriptions": {
186
+ "playervox.reviews.subscribe": {
187
+ "state": "ready",
188
+ "revision": 1,
189
+ "offline": false
190
+ }
191
+ }
192
+ },
193
+ "steps": [
194
+ {
195
+ "expect": {
196
+ "text": [
197
+ "1,284 reviews",
198
+ "1 / 428",
199
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
200
+ ],
201
+ "image": "folded",
202
+ "calls": [
203
+ {
204
+ "service": "playervox.reviews.subscribe",
205
+ "outcome": "ok"
206
+ },
207
+ {
208
+ "service": "playervox.reviews.page",
209
+ "params": {
210
+ "page": 1,
211
+ "followedOnly": false
212
+ },
213
+ "outcome": "ok"
214
+ }
215
+ ]
216
+ }
217
+ },
218
+ {
219
+ "pointer": {
220
+ "click": {
221
+ "text": "Read more"
222
+ }
223
+ }
224
+ },
225
+ {
226
+ "expect": {
227
+ "text": [
228
+ "Show less",
229
+ "1,284 reviews",
230
+ "1 / 428"
231
+ ],
232
+ "image": "expanded-scrolls"
233
+ }
234
+ },
235
+ {
236
+ "pointer": {
237
+ "wheel": {
238
+ "target": {
239
+ "at": [
240
+ 175,
241
+ 200
242
+ ]
243
+ },
244
+ "dx": 0,
245
+ "dy": 40
246
+ }
247
+ }
248
+ },
249
+ {
250
+ "expect": {
251
+ "text": [
252
+ "1,284 reviews",
253
+ "1 / 428"
254
+ ],
255
+ "image": "expanded-scrolled"
256
+ }
257
+ },
258
+ {
259
+ "host": {
260
+ "locale": "fr",
261
+ "theme": "light",
262
+ "region": {
263
+ "numberFormat": "fr",
264
+ "dateOrder": "dmy"
265
+ }
266
+ }
267
+ },
268
+ {
269
+ "expect": {
270
+ "text": [
271
+ "1 284 avis",
272
+ "1 / 428"
273
+ ],
274
+ "calls": [
275
+ {
276
+ "service": "playervox.reviews.page",
277
+ "params": {
278
+ "page": 1,
279
+ "followedOnly": false
280
+ },
281
+ "outcome": "ok"
282
+ }
283
+ ]
284
+ }
285
+ },
286
+ {
287
+ "host": {
288
+ "locale": "en",
289
+ "theme": "dark",
290
+ "region": {
291
+ "numberFormat": "us",
292
+ "dateOrder": "mdy"
293
+ }
294
+ }
295
+ },
296
+ {
297
+ "pointer": {
298
+ "click": {
299
+ "label": "Next page"
300
+ }
301
+ }
302
+ },
303
+ {
304
+ "expect": {
305
+ "text": [
306
+ "2 / 428",
307
+ "Read more",
308
+ "ok"
309
+ ],
310
+ "noText": [
311
+ "Translated",
312
+ "Show original"
313
+ ],
314
+ "image": "lines-and-blank",
315
+ "calls": [
316
+ {
317
+ "service": "playervox.reviews.page",
318
+ "params": {
319
+ "page": 1,
320
+ "followedOnly": false
321
+ },
322
+ "outcome": "ok"
323
+ },
324
+ {
325
+ "service": "playervox.reviews.page",
326
+ "params": {
327
+ "page": 2,
328
+ "followedOnly": false
329
+ },
330
+ "outcome": "ok"
331
+ }
332
+ ]
333
+ }
334
+ }
335
+ ]
336
+ }