@overcrow/mcp 0.0.0-stage → 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.
- package/LICENSE +21 -0
- package/README.md +90 -2
- package/dist/audit/index.js +103 -0
- package/dist/audit/lexer.js +417 -0
- package/dist/audit/project.js +200 -0
- package/dist/audit/rules.js +661 -0
- package/dist/bootstrap/download.js +229 -0
- package/dist/bootstrap/install.js +280 -0
- package/dist/bootstrap/pin.js +85 -0
- package/dist/bootstrap/pin.json +119 -0
- package/dist/bootstrap/zip.js +258 -0
- package/dist/cli.js +200 -0
- package/dist/confine.js +244 -0
- package/dist/content/docs/en/cli.md +353 -0
- package/dist/content/docs/en/dev-channel.md +130 -0
- package/dist/content/docs/en/elements.md +469 -0
- package/dist/content/docs/en/forms.md +328 -0
- package/dist/content/docs/en/guide.md +253 -0
- package/dist/content/docs/en/index.md +85 -0
- package/dist/content/docs/en/limits.md +241 -0
- package/dist/content/docs/en/logic.md +446 -0
- package/dist/content/docs/en/manifest.md +381 -0
- package/dist/content/docs/en/mcp.md +165 -0
- package/dist/content/docs/en/package.md +131 -0
- package/dist/content/docs/en/publishing.md +162 -0
- package/dist/content/docs/en/reference.md +55 -0
- package/dist/content/docs/en/result-shapes.md +332 -0
- package/dist/content/docs/en/sdk.md +295 -0
- package/dist/content/docs/en/security.md +115 -0
- package/dist/content/docs/en/service-reference.md +344 -0
- package/dist/content/docs/en/services.md +517 -0
- package/dist/content/docs/en/style-properties.md +270 -0
- package/dist/content/docs/en/style.md +266 -0
- package/dist/content/docs/en/testing.md +400 -0
- package/dist/content/docs/en/view.md +338 -0
- package/dist/content/docs/en/widgets.md +76 -0
- package/dist/content/docs/fr/cli.md +367 -0
- package/dist/content/docs/fr/dev-channel.md +140 -0
- package/dist/content/docs/fr/elements.md +475 -0
- package/dist/content/docs/fr/forms.md +341 -0
- package/dist/content/docs/fr/guide.md +264 -0
- package/dist/content/docs/fr/index.md +90 -0
- package/dist/content/docs/fr/limits.md +244 -0
- package/dist/content/docs/fr/logic.md +461 -0
- package/dist/content/docs/fr/manifest.md +392 -0
- package/dist/content/docs/fr/mcp.md +173 -0
- package/dist/content/docs/fr/package.md +139 -0
- package/dist/content/docs/fr/publishing.md +172 -0
- package/dist/content/docs/fr/reference.md +59 -0
- package/dist/content/docs/fr/result-shapes.md +333 -0
- package/dist/content/docs/fr/sdk.md +301 -0
- package/dist/content/docs/fr/security.md +129 -0
- package/dist/content/docs/fr/service-reference.md +346 -0
- package/dist/content/docs/fr/services.md +540 -0
- package/dist/content/docs/fr/style-properties.md +272 -0
- package/dist/content/docs/fr/style.md +281 -0
- package/dist/content/docs/fr/testing.md +417 -0
- package/dist/content/docs/fr/view.md +352 -0
- package/dist/content/docs/fr/widgets.md +81 -0
- package/dist/content/examples/clock/LICENSE +21 -0
- package/dist/content/examples/clock/README.md +75 -0
- package/dist/content/examples/clock/listing.json +19 -0
- package/dist/content/examples/clock/locales/en.json +4 -0
- package/dist/content/examples/clock/locales/fr.json +4 -0
- package/dist/content/examples/clock/logic.ts +85 -0
- package/dist/content/examples/clock/manifest.json +44 -0
- package/dist/content/examples/clock/package.json +16 -0
- package/dist/content/examples/clock/style.ocss +26 -0
- package/dist/content/examples/clock/tests/hidden.scenario.json +68 -0
- package/dist/content/examples/clock/tests/load-logic.mjs +22 -0
- package/dist/content/examples/clock/tests/logic.test.mjs +89 -0
- package/dist/content/examples/clock/tests/options.scenario.json +108 -0
- package/dist/content/examples/clock/tests/preview.scenario.json +25 -0
- package/dist/content/examples/clock/tests/render.scenario.json +94 -0
- package/dist/content/examples/clock/tests/summer-time.scenario.json +74 -0
- package/dist/content/examples/clock/tests/ticks.scenario.json +120 -0
- package/dist/content/examples/clock/tsconfig.json +16 -0
- package/dist/content/examples/clock/view.ocml +8 -0
- package/dist/content/examples/countdown/LICENSE +20 -0
- package/dist/content/examples/countdown/listing.json +10 -0
- package/dist/content/examples/countdown/locales/en.json +15 -0
- package/dist/content/examples/countdown/locales/fr.json +15 -0
- package/dist/content/examples/countdown/logic.ts +179 -0
- package/dist/content/examples/countdown/manifest.json +34 -0
- package/dist/content/examples/countdown/package.json +15 -0
- package/dist/content/examples/countdown/style.ocss +94 -0
- package/dist/content/examples/countdown/tsconfig.json +16 -0
- package/dist/content/examples/countdown/view.ocml +42 -0
- package/dist/content/examples/fps/LICENSE +21 -0
- package/dist/content/examples/fps/README.md +64 -0
- package/dist/content/examples/fps/listing.json +19 -0
- package/dist/content/examples/fps/locales/en.json +11 -0
- package/dist/content/examples/fps/locales/fr.json +11 -0
- package/dist/content/examples/fps/logic.ts +64 -0
- package/dist/content/examples/fps/manifest.json +30 -0
- package/dist/content/examples/fps/package.json +16 -0
- package/dist/content/examples/fps/style.ocss +31 -0
- package/dist/content/examples/fps/tests/label.scenario.json +63 -0
- package/dist/content/examples/fps/tests/load-logic.mjs +22 -0
- package/dist/content/examples/fps/tests/logic.test.mjs +60 -0
- package/dist/content/examples/fps/tests/preview.scenario.json +29 -0
- package/dist/content/examples/fps/tests/refused.scenario.json +20 -0
- package/dist/content/examples/fps/tests/render.scenario.json +96 -0
- package/dist/content/examples/fps/tests/stale.scenario.json +91 -0
- package/dist/content/examples/fps/tests/unavailable.scenario.json +111 -0
- package/dist/content/examples/fps/tsconfig.json +16 -0
- package/dist/content/examples/fps/view.ocml +11 -0
- package/dist/content/examples/media/LICENSE +21 -0
- package/dist/content/examples/media/README.md +147 -0
- package/dist/content/examples/media/listing.json +19 -0
- package/dist/content/examples/media/locales/en.json +11 -0
- package/dist/content/examples/media/locales/fr.json +11 -0
- package/dist/content/examples/media/logic.ts +191 -0
- package/dist/content/examples/media/manifest.json +35 -0
- package/dist/content/examples/media/package.json +16 -0
- package/dist/content/examples/media/style.ocss +148 -0
- package/dist/content/examples/media/tests/covers.scenario.json +144 -0
- package/dist/content/examples/media/tests/gesture.scenario.json +173 -0
- package/dist/content/examples/media/tests/load-logic.mjs +22 -0
- package/dist/content/examples/media/tests/logic.test.mjs +176 -0
- package/dist/content/examples/media/tests/marquee.scenario.json +127 -0
- package/dist/content/examples/media/tests/preview.scenario.json +52 -0
- package/dist/content/examples/media/tests/read-only.scenario.json +53 -0
- package/dist/content/examples/media/tests/refused.scenario.json +22 -0
- package/dist/content/examples/media/tests/refused.test.mjs +31 -0
- package/dist/content/examples/media/tests/render.scenario.json +136 -0
- package/dist/content/examples/media/tests/states.scenario.json +257 -0
- package/dist/content/examples/media/tests/unavailable.scenario.json +120 -0
- package/dist/content/examples/media/tsconfig.json +16 -0
- package/dist/content/examples/media/view.ocml +41 -0
- package/dist/content/examples/notes/LICENSE +21 -0
- package/dist/content/examples/notes/README.md +219 -0
- package/dist/content/examples/notes/listing.json +19 -0
- package/dist/content/examples/notes/locales/en.json +25 -0
- package/dist/content/examples/notes/locales/fr.json +25 -0
- package/dist/content/examples/notes/logic.ts +799 -0
- package/dist/content/examples/notes/manifest.json +40 -0
- package/dist/content/examples/notes/package.json +16 -0
- package/dist/content/examples/notes/style.ocss +469 -0
- package/dist/content/examples/notes/tests/checks.scenario.json +237 -0
- package/dist/content/examples/notes/tests/create.scenario.json +260 -0
- package/dist/content/examples/notes/tests/delete.scenario.json +342 -0
- package/dist/content/examples/notes/tests/drafts.scenario.json +714 -0
- package/dist/content/examples/notes/tests/editor.scenario.json +232 -0
- package/dist/content/examples/notes/tests/frame.scenario.json +93 -0
- package/dist/content/examples/notes/tests/interactive.scenario.json +344 -0
- package/dist/content/examples/notes/tests/limits.scenario.json +1351 -0
- package/dist/content/examples/notes/tests/load-logic.mjs +22 -0
- package/dist/content/examples/notes/tests/logic.test.mjs +514 -0
- package/dist/content/examples/notes/tests/preview.scenario.json +99 -0
- package/dist/content/examples/notes/tests/read-only.scenario.json +105 -0
- package/dist/content/examples/notes/tests/refused.scenario.json +33 -0
- package/dist/content/examples/notes/tests/save.scenario.json +378 -0
- package/dist/content/examples/notes/tests/states.scenario.json +640 -0
- package/dist/content/examples/notes/tests/typing.scenario.json +562 -0
- package/dist/content/examples/notes/tests/unavailable.scenario.json +246 -0
- package/dist/content/examples/notes/tsconfig.json +16 -0
- package/dist/content/examples/notes/view.ocml +154 -0
- package/dist/content/examples/performance/LICENSE +21 -0
- package/dist/content/examples/performance/README.md +134 -0
- package/dist/content/examples/performance/listing.json +19 -0
- package/dist/content/examples/performance/locales/en.json +20 -0
- package/dist/content/examples/performance/locales/fr.json +20 -0
- package/dist/content/examples/performance/logic.ts +210 -0
- package/dist/content/examples/performance/manifest.json +83 -0
- package/dist/content/examples/performance/package.json +16 -0
- package/dist/content/examples/performance/style.ocss +75 -0
- package/dist/content/examples/performance/tests/fahrenheit.scenario.json +110 -0
- package/dist/content/examples/performance/tests/horizontal.scenario.json +96 -0
- package/dist/content/examples/performance/tests/load-logic.mjs +22 -0
- package/dist/content/examples/performance/tests/logic.test.mjs +226 -0
- package/dist/content/examples/performance/tests/menu.scenario.json +170 -0
- package/dist/content/examples/performance/tests/no-fps-source.scenario.json +47 -0
- package/dist/content/examples/performance/tests/preview.scenario.json +45 -0
- package/dist/content/examples/performance/tests/refused.scenario.json +20 -0
- package/dist/content/examples/performance/tests/refused.test.mjs +19 -0
- package/dist/content/examples/performance/tests/region.scenario.json +89 -0
- package/dist/content/examples/performance/tests/render.scenario.json +112 -0
- package/dist/content/examples/performance/tests/sources.scenario.json +151 -0
- package/dist/content/examples/performance/tests/stale.scenario.json +111 -0
- package/dist/content/examples/performance/tests/telemetry-only.scenario.json +44 -0
- package/dist/content/examples/performance/tests/thresholds.scenario.json +147 -0
- package/dist/content/examples/performance/tests/waiting.scenario.json +105 -0
- package/dist/content/examples/performance/tsconfig.json +16 -0
- package/dist/content/examples/performance/view.ocml +18 -0
- package/dist/content/examples/playervox-journal/LICENSE +21 -0
- package/dist/content/examples/playervox-journal/README.md +150 -0
- package/dist/content/examples/playervox-journal/listing.json +19 -0
- package/dist/content/examples/playervox-journal/locales/en.json +25 -0
- package/dist/content/examples/playervox-journal/locales/fr.json +25 -0
- package/dist/content/examples/playervox-journal/logic.ts +556 -0
- package/dist/content/examples/playervox-journal/manifest.json +19 -0
- package/dist/content/examples/playervox-journal/package.json +16 -0
- package/dist/content/examples/playervox-journal/style.ocss +142 -0
- package/dist/content/examples/playervox-journal/tests/changes.scenario.json +482 -0
- package/dist/content/examples/playervox-journal/tests/delete.scenario.json +432 -0
- package/dist/content/examples/playervox-journal/tests/frame.scenario.json +169 -0
- package/dist/content/examples/playervox-journal/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-journal/tests/logic.test.mjs +349 -0
- package/dist/content/examples/playervox-journal/tests/paging.scenario.json +428 -0
- package/dist/content/examples/playervox-journal/tests/preview.scenario.json +184 -0
- package/dist/content/examples/playervox-journal/tests/read-only.scenario.json +157 -0
- package/dist/content/examples/playervox-journal/tests/refused.scenario.json +39 -0
- package/dist/content/examples/playervox-journal/tests/scale.scenario.json +286 -0
- package/dist/content/examples/playervox-journal/tests/signed-out.scenario.json +134 -0
- package/dist/content/examples/playervox-journal/tests/states.scenario.json +741 -0
- package/dist/content/examples/playervox-journal/tests/unavailable.scenario.json +183 -0
- package/dist/content/examples/playervox-journal/tsconfig.json +16 -0
- package/dist/content/examples/playervox-journal/view.ocml +52 -0
- package/dist/content/examples/playervox-rating/LICENSE +21 -0
- package/dist/content/examples/playervox-rating/README.md +166 -0
- package/dist/content/examples/playervox-rating/listing.json +19 -0
- package/dist/content/examples/playervox-rating/locales/en.json +35 -0
- package/dist/content/examples/playervox-rating/locales/fr.json +35 -0
- package/dist/content/examples/playervox-rating/logic.ts +581 -0
- package/dist/content/examples/playervox-rating/manifest.json +19 -0
- package/dist/content/examples/playervox-rating/package.json +16 -0
- package/dist/content/examples/playervox-rating/style.ocss +333 -0
- package/dist/content/examples/playervox-rating/tests/account.scenario.json +125 -0
- package/dist/content/examples/playervox-rating/tests/bounds.scenario.json +73 -0
- package/dist/content/examples/playervox-rating/tests/draft.scenario.json +199 -0
- package/dist/content/examples/playervox-rating/tests/form.scenario.json +142 -0
- package/dist/content/examples/playervox-rating/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-rating/tests/logic.test.mjs +346 -0
- package/dist/content/examples/playervox-rating/tests/offline.scenario.json +142 -0
- package/dist/content/examples/playervox-rating/tests/preview.scenario.json +44 -0
- package/dist/content/examples/playervox-rating/tests/publish-keyboard.scenario.json +221 -0
- package/dist/content/examples/playervox-rating/tests/publish-pointer.scenario.json +314 -0
- package/dist/content/examples/playervox-rating/tests/read-only.scenario.json +70 -0
- package/dist/content/examples/playervox-rating/tests/refused.scenario.json +45 -0
- package/dist/content/examples/playervox-rating/tests/states.scenario.json +362 -0
- package/dist/content/examples/playervox-rating/tsconfig.json +16 -0
- package/dist/content/examples/playervox-rating/view.ocml +62 -0
- package/dist/content/examples/playervox-reviews/LICENSE +21 -0
- package/dist/content/examples/playervox-reviews/README.md +194 -0
- package/dist/content/examples/playervox-reviews/listing.json +19 -0
- package/dist/content/examples/playervox-reviews/locales/en.json +32 -0
- package/dist/content/examples/playervox-reviews/locales/fr.json +32 -0
- package/dist/content/examples/playervox-reviews/logic.ts +822 -0
- package/dist/content/examples/playervox-reviews/manifest.json +30 -0
- package/dist/content/examples/playervox-reviews/package.json +16 -0
- package/dist/content/examples/playervox-reviews/style.ocss +260 -0
- package/dist/content/examples/playervox-reviews/tests/account.scenario.json +249 -0
- package/dist/content/examples/playervox-reviews/tests/bounds.scenario.json +336 -0
- package/dist/content/examples/playervox-reviews/tests/changes.scenario.json +515 -0
- package/dist/content/examples/playervox-reviews/tests/filter.scenario.json +400 -0
- package/dist/content/examples/playervox-reviews/tests/frame.scenario.json +185 -0
- package/dist/content/examples/playervox-reviews/tests/keyboard.scenario.json +188 -0
- package/dist/content/examples/playervox-reviews/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-reviews/tests/logic.test.mjs +559 -0
- package/dist/content/examples/playervox-reviews/tests/offline-start.scenario.json +152 -0
- package/dist/content/examples/playervox-reviews/tests/offline.scenario.json +311 -0
- package/dist/content/examples/playervox-reviews/tests/paging.scenario.json +497 -0
- package/dist/content/examples/playervox-reviews/tests/preview.scenario.json +286 -0
- package/dist/content/examples/playervox-reviews/tests/reading.scenario.json +591 -0
- package/dist/content/examples/playervox-reviews/tests/refused.scenario.json +54 -0
- package/dist/content/examples/playervox-reviews/tests/scale.scenario.json +303 -0
- package/dist/content/examples/playervox-reviews/tests/states.scenario.json +700 -0
- package/dist/content/examples/playervox-reviews/tests/unavailable.scenario.json +192 -0
- package/dist/content/examples/playervox-reviews/tsconfig.json +16 -0
- package/dist/content/examples/playervox-reviews/view.ocml +110 -0
- package/dist/content/examples/playervox-score/LICENSE +21 -0
- package/dist/content/examples/playervox-score/README.md +131 -0
- package/dist/content/examples/playervox-score/listing.json +19 -0
- package/dist/content/examples/playervox-score/locales/en.json +23 -0
- package/dist/content/examples/playervox-score/locales/fr.json +23 -0
- package/dist/content/examples/playervox-score/logic.ts +430 -0
- package/dist/content/examples/playervox-score/manifest.json +47 -0
- package/dist/content/examples/playervox-score/package.json +16 -0
- package/dist/content/examples/playervox-score/style.ocss +247 -0
- package/dist/content/examples/playervox-score/tests/grades.scenario.json +279 -0
- package/dist/content/examples/playervox-score/tests/load-logic.mjs +22 -0
- package/dist/content/examples/playervox-score/tests/logic.test.mjs +229 -0
- package/dist/content/examples/playervox-score/tests/options.scenario.json +302 -0
- package/dist/content/examples/playervox-score/tests/preview.scenario.json +68 -0
- package/dist/content/examples/playervox-score/tests/pulse.scenario.json +157 -0
- package/dist/content/examples/playervox-score/tests/refused.scenario.json +21 -0
- package/dist/content/examples/playervox-score/tests/signed-out.scenario.json +46 -0
- package/dist/content/examples/playervox-score/tests/states.scenario.json +450 -0
- package/dist/content/examples/playervox-score/tests/unavailable.scenario.json +84 -0
- package/dist/content/examples/playervox-score/tsconfig.json +16 -0
- package/dist/content/examples/playervox-score/view.ocml +51 -0
- package/dist/content/examples/session/LICENSE +21 -0
- package/dist/content/examples/session/README.md +57 -0
- package/dist/content/examples/session/listing.json +19 -0
- package/dist/content/examples/session/locales/en.json +3 -0
- package/dist/content/examples/session/locales/fr.json +3 -0
- package/dist/content/examples/session/logic.ts +26 -0
- package/dist/content/examples/session/manifest.json +19 -0
- package/dist/content/examples/session/package.json +16 -0
- package/dist/content/examples/session/style.ocss +16 -0
- package/dist/content/examples/session/tests/hidden.scenario.json +45 -0
- package/dist/content/examples/session/tests/load-logic.mjs +22 -0
- package/dist/content/examples/session/tests/logic.test.mjs +37 -0
- package/dist/content/examples/session/tests/preview.scenario.json +28 -0
- package/dist/content/examples/session/tests/refused.scenario.json +20 -0
- package/dist/content/examples/session/tests/refused.test.mjs +16 -0
- package/dist/content/examples/session/tests/render.scenario.json +95 -0
- package/dist/content/examples/session/tests/ticks.scenario.json +139 -0
- package/dist/content/examples/session/tests/unknown.scenario.json +37 -0
- package/dist/content/examples/session/tsconfig.json +16 -0
- package/dist/content/examples/session/view.ocml +11 -0
- package/dist/content/examples/stopwatch/LICENSE +21 -0
- package/dist/content/examples/stopwatch/README.md +99 -0
- package/dist/content/examples/stopwatch/listing.json +19 -0
- package/dist/content/examples/stopwatch/locales/en.json +8 -0
- package/dist/content/examples/stopwatch/locales/fr.json +8 -0
- package/dist/content/examples/stopwatch/logic.ts +93 -0
- package/dist/content/examples/stopwatch/manifest.json +19 -0
- package/dist/content/examples/stopwatch/package.json +16 -0
- package/dist/content/examples/stopwatch/style.ocss +54 -0
- package/dist/content/examples/stopwatch/tests/errors.scenario.json +121 -0
- package/dist/content/examples/stopwatch/tests/gesture.scenario.json +154 -0
- package/dist/content/examples/stopwatch/tests/hidden.scenario.json +57 -0
- package/dist/content/examples/stopwatch/tests/hundredths.scenario.json +173 -0
- package/dist/content/examples/stopwatch/tests/load-logic.mjs +22 -0
- package/dist/content/examples/stopwatch/tests/logic.test.mjs +99 -0
- package/dist/content/examples/stopwatch/tests/preview.scenario.json +36 -0
- package/dist/content/examples/stopwatch/tests/read-only.scenario.json +42 -0
- package/dist/content/examples/stopwatch/tests/read-only.test.mjs +18 -0
- package/dist/content/examples/stopwatch/tests/refused.scenario.json +22 -0
- package/dist/content/examples/stopwatch/tests/refused.test.mjs +18 -0
- package/dist/content/examples/stopwatch/tests/render.scenario.json +105 -0
- package/dist/content/examples/stopwatch/tests/states.scenario.json +246 -0
- package/dist/content/examples/stopwatch/tests/unknown.scenario.json +40 -0
- package/dist/content/examples/stopwatch/tsconfig.json +16 -0
- package/dist/content/examples/stopwatch/view.ocml +29 -0
- package/dist/content/examples/twitch-chat/LICENSE +21 -0
- package/dist/content/examples/twitch-chat/README.md +283 -0
- package/dist/content/examples/twitch-chat/listing.json +19 -0
- package/dist/content/examples/twitch-chat/locales/en.json +52 -0
- package/dist/content/examples/twitch-chat/locales/fr.json +52 -0
- package/dist/content/examples/twitch-chat/logic.ts +887 -0
- package/dist/content/examples/twitch-chat/manifest.json +33 -0
- package/dist/content/examples/twitch-chat/package.json +16 -0
- package/dist/content/examples/twitch-chat/style.ocss +544 -0
- package/dist/content/examples/twitch-chat/tests/account.scenario.json +325 -0
- package/dist/content/examples/twitch-chat/tests/burst.scenario.json +1866 -0
- package/dist/content/examples/twitch-chat/tests/channel-refused.scenario.json +372 -0
- package/dist/content/examples/twitch-chat/tests/channel.scenario.json +480 -0
- package/dist/content/examples/twitch-chat/tests/draft.scenario.json +279 -0
- package/dist/content/examples/twitch-chat/tests/fade.scenario.json +269 -0
- package/dist/content/examples/twitch-chat/tests/failures.scenario.json +420 -0
- package/dist/content/examples/twitch-chat/tests/favorites.scenario.json +376 -0
- package/dist/content/examples/twitch-chat/tests/frame.scenario.json +152 -0
- package/dist/content/examples/twitch-chat/tests/lifetime.scenario.json +186 -0
- package/dist/content/examples/twitch-chat/tests/load-logic.mjs +22 -0
- package/dist/content/examples/twitch-chat/tests/logic.test.mjs +1053 -0
- package/dist/content/examples/twitch-chat/tests/passive.scenario.json +536 -0
- package/dist/content/examples/twitch-chat/tests/preview.scenario.json +147 -0
- package/dist/content/examples/twitch-chat/tests/read-only.scenario.json +202 -0
- package/dist/content/examples/twitch-chat/tests/read-only.test.mjs +63 -0
- package/dist/content/examples/twitch-chat/tests/refused.scenario.json +65 -0
- package/dist/content/examples/twitch-chat/tests/refused.test.mjs +43 -0
- package/dist/content/examples/twitch-chat/tests/render.scenario.json +347 -0
- package/dist/content/examples/twitch-chat/tests/reply.scenario.json +384 -0
- package/dist/content/examples/twitch-chat/tests/send-refused.scenario.json +383 -0
- package/dist/content/examples/twitch-chat/tests/send.scenario.json +300 -0
- package/dist/content/examples/twitch-chat/tests/states.scenario.json +455 -0
- package/dist/content/examples/twitch-chat/tests/unavailable.scenario.json +256 -0
- package/dist/content/examples/twitch-chat/tests/unread.scenario.json +997 -0
- package/dist/content/examples/twitch-chat/tsconfig.json +16 -0
- package/dist/content/examples/twitch-chat/view.ocml +141 -0
- package/dist/content/examples/warframe-market/LICENSE +21 -0
- package/dist/content/examples/warframe-market/README.md +176 -0
- package/dist/content/examples/warframe-market/listing.json +19 -0
- package/dist/content/examples/warframe-market/locales/en.json +44 -0
- package/dist/content/examples/warframe-market/locales/fr.json +44 -0
- package/dist/content/examples/warframe-market/logic.ts +1265 -0
- package/dist/content/examples/warframe-market/manifest.json +92 -0
- package/dist/content/examples/warframe-market/package.json +16 -0
- package/dist/content/examples/warframe-market/style.ocss +422 -0
- package/dist/content/examples/warframe-market/tests/bounds.scenario.json +60 -0
- package/dist/content/examples/warframe-market/tests/cached.scenario.json +70 -0
- package/dist/content/examples/warframe-market/tests/detail.scenario.json +251 -0
- package/dist/content/examples/warframe-market/tests/errors.scenario.json +105 -0
- package/dist/content/examples/warframe-market/tests/fixtures.json +295 -0
- package/dist/content/examples/warframe-market/tests/load-logic.mjs +22 -0
- package/dist/content/examples/warframe-market/tests/logic.test.mjs +505 -0
- package/dist/content/examples/warframe-market/tests/no-clipboard.scenario.json +104 -0
- package/dist/content/examples/warframe-market/tests/passive.scenario.json +87 -0
- package/dist/content/examples/warframe-market/tests/preview.scenario.json +146 -0
- package/dist/content/examples/warframe-market/tests/refresh.scenario.json +56 -0
- package/dist/content/examples/warframe-market/tests/refused.scenario.json +74 -0
- package/dist/content/examples/warframe-market/tests/render.scenario.json +210 -0
- package/dist/content/examples/warframe-market/tests/search.scenario.json +189 -0
- package/dist/content/examples/warframe-market/tests/unavailable.scenario.json +54 -0
- package/dist/content/examples/warframe-market/tsconfig.json +16 -0
- package/dist/content/examples/warframe-market/view.ocml +116 -0
- package/dist/content/examples/weather/LICENSE +20 -0
- package/dist/content/examples/weather/listing.json +10 -0
- package/dist/content/examples/weather/locales/en.json +9 -0
- package/dist/content/examples/weather/locales/fr.json +9 -0
- package/dist/content/examples/weather/logic.ts +62 -0
- package/dist/content/examples/weather/manifest.json +51 -0
- package/dist/content/examples/weather/package.json +15 -0
- package/dist/content/examples/weather/style.ocss +29 -0
- package/dist/content/examples/weather/tsconfig.json +16 -0
- package/dist/content/examples/weather/view.ocml +12 -0
- package/dist/content/index.json +3601 -0
- package/dist/content/reference/errors.json +1712 -0
- package/dist/content/reference/limits.json +1154 -0
- package/dist/content/reference/manifest.md +223 -0
- package/dist/content/reference/permissions.json +413 -0
- package/dist/content/templates/blank/locales/en.json +3 -0
- package/dist/content/templates/blank/locales/fr.json +3 -0
- package/dist/content/templates/blank/logic.ts +7 -0
- package/dist/content/templates/blank/manifest.json +16 -0
- package/dist/content/templates/blank/style.ocss +10 -0
- package/dist/content/templates/blank/tests/example.scenario.json +10 -0
- package/dist/content/templates/blank/view.ocml +6 -0
- package/dist/content/templates/chart/locales/en.json +3 -0
- package/dist/content/templates/chart/locales/fr.json +3 -0
- package/dist/content/templates/chart/logic.ts +27 -0
- package/dist/content/templates/chart/manifest.json +16 -0
- package/dist/content/templates/chart/style.ocss +27 -0
- package/dist/content/templates/chart/tests/example.scenario.json +10 -0
- package/dist/content/templates/chart/view.ocml +10 -0
- package/dist/content/templates/counter/locales/en.json +4 -0
- package/dist/content/templates/counter/locales/fr.json +4 -0
- package/dist/content/templates/counter/logic.ts +20 -0
- package/dist/content/templates/counter/manifest.json +16 -0
- package/dist/content/templates/counter/style.ocss +26 -0
- package/dist/content/templates/counter/tests/example.scenario.json +11 -0
- package/dist/content/templates/counter/view.ocml +13 -0
- package/dist/content/templates/list/locales/en.json +8 -0
- package/dist/content/templates/list/locales/fr.json +8 -0
- package/dist/content/templates/list/logic.ts +35 -0
- package/dist/content/templates/list/manifest.json +16 -0
- package/dist/content/templates/list/style.ocss +42 -0
- package/dist/content/templates/list/tests/example.scenario.json +10 -0
- package/dist/content/templates/list/view.ocml +17 -0
- package/dist/content/templates/shared/LICENSE +20 -0
- package/dist/content/templates/shared/package.json +14 -0
- package/dist/content/templates/shared/tsconfig.json +16 -0
- package/dist/content.js +68 -0
- package/dist/env.js +156 -0
- package/dist/fingerprint.js +32 -0
- package/dist/ids.js +27 -0
- package/dist/index.js +82 -0
- package/dist/knowledge.js +222 -0
- package/dist/npm.js +149 -0
- package/dist/prompts.js +47 -0
- package/dist/resources.js +82 -0
- package/dist/run.js +120 -0
- package/dist/server.js +43 -0
- package/dist/session.js +205 -0
- package/dist/sources.js +218 -0
- package/dist/text.js +80 -0
- package/dist/texts.js +44 -0
- package/dist/tools/audit.js +105 -0
- package/dist/tools/build.js +453 -0
- package/dist/tools/common.js +122 -0
- package/dist/tools/docs.js +196 -0
- package/dist/tools/preview.js +87 -0
- package/dist/tools/project.js +178 -0
- package/dist/tools/setup.js +146 -0
- package/dist/tools/submission.js +369 -0
- package/dist/version.js +3 -0
- package/npm-shrinkwrap.json +402 -0
- package/package.json +52 -4
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
# Service reference
|
|
2
|
+
|
|
3
|
+
Every service that the logic of a PlayerVox OverCrow widget can call, with
|
|
4
|
+
what it requires, when it can be called, its parameters and its result.
|
|
5
|
+
[Services and permissions](services.md) explains how calls, subscriptions,
|
|
6
|
+
errors and user actions work; this page is the list.
|
|
7
|
+
|
|
8
|
+
<!-- source: widgets/stopwatch/logic.ts -->
|
|
9
|
+
```ts
|
|
10
|
+
if (canRead) {
|
|
11
|
+
state.stopwatch = next;
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
() => {},
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
In the SDK, a service `stopwatch.subscribe` is the function
|
|
20
|
+
`stopwatch.subscribe` of the `stopwatch` namespace. A call returns a
|
|
21
|
+
promise of its result; a subscription takes a listener that receives each
|
|
22
|
+
update.
|
|
23
|
+
|
|
24
|
+
## How to read a service
|
|
25
|
+
|
|
26
|
+
- **Kind**: a *call* is answered once; a *subscription* delivers a value at
|
|
27
|
+
once, then each new value.
|
|
28
|
+
- **Requires**: the permission or the capability to declare in
|
|
29
|
+
[the manifest](manifest.md#permissions), which the user must grant.
|
|
30
|
+
- **When it can be called**: at any time, or only during a
|
|
31
|
+
[user action](services.md#calls-that-need-a-user-action).
|
|
32
|
+
- **Parameters**: the members of the object to pass; a `?` marks an
|
|
33
|
+
optional one. A type such as "text ≤ 128 bytes" gives a
|
|
34
|
+
[limit](limits.md).
|
|
35
|
+
- **Result**, or **Each update** for a subscription: what the service
|
|
36
|
+
answers, and the error codes that are specific to it. Every service can
|
|
37
|
+
also fail with the general [error codes](services.md#errors).
|
|
38
|
+
- **Shape**: the type of the result, described in
|
|
39
|
+
[result shapes](result-shapes.md).
|
|
40
|
+
|
|
41
|
+
## Services
|
|
42
|
+
|
|
43
|
+
<!-- generated:services -->
|
|
44
|
+
### `storage.get`
|
|
45
|
+
|
|
46
|
+
- **Kind**: call, answered once
|
|
47
|
+
- **Requires**: permission `storage`
|
|
48
|
+
- **When it can be called**: At any time
|
|
49
|
+
- **Parameters**: `key`: text ≤ 128 bytes
|
|
50
|
+
- **Result**: stored JSON value or `null`
|
|
51
|
+
- **Shape**: JSON
|
|
52
|
+
|
|
53
|
+
### `storage.set`
|
|
54
|
+
|
|
55
|
+
- **Kind**: call, answered once
|
|
56
|
+
- **Requires**: permission `storage`
|
|
57
|
+
- **When it can be called**: At any time
|
|
58
|
+
- **Parameters**: `key`: text ≤ 128 bytes; `value`: JSON
|
|
59
|
+
- **Result**: `null`; `quota_exceeded` beyond 256 KiB
|
|
60
|
+
- **Shape**: `null`
|
|
61
|
+
|
|
62
|
+
### `storage.remove`
|
|
63
|
+
|
|
64
|
+
- **Kind**: call, answered once
|
|
65
|
+
- **Requires**: permission `storage`
|
|
66
|
+
- **When it can be called**: At any time
|
|
67
|
+
- **Parameters**: `key`: text ≤ 128 bytes
|
|
68
|
+
- **Result**: `null`
|
|
69
|
+
|
|
70
|
+
### `storage.keys`
|
|
71
|
+
|
|
72
|
+
- **Kind**: call, answered once
|
|
73
|
+
- **Requires**: permission `storage`
|
|
74
|
+
- **When it can be called**: At any time
|
|
75
|
+
- **Parameters**: none
|
|
76
|
+
- **Result**: list of keys
|
|
77
|
+
- **Shape**: list of text
|
|
78
|
+
|
|
79
|
+
### `http.fetch`
|
|
80
|
+
|
|
81
|
+
- **Kind**: call, answered once
|
|
82
|
+
- **Requires**: permission `network`
|
|
83
|
+
- **When it can be called**: At any time
|
|
84
|
+
- **Parameters**: `url`: text ≤ 2 KiB; `method`: `GET` \| `POST` \| `PUT` \| `PATCH` \| `DELETE`; `contentType?`: `application/json` \| `text/plain`; `as`: `json` \| `text` \| `bytes` \| `image`
|
|
85
|
+
- **Result**: `{ status, contentType }` with the body, ≤ the rule's `maxResponseBytes` (1 MiB when absent), or `{ status, asset }` from a body ≤ 1 MiB
|
|
86
|
+
- **Shape**: [`HttpResponse`](result-shapes.md#httpresponse)
|
|
87
|
+
|
|
88
|
+
### `clipboard.writeText`
|
|
89
|
+
|
|
90
|
+
- **Kind**: call, answered once
|
|
91
|
+
- **Requires**: permission `clipboardWrite`
|
|
92
|
+
- **When it can be called**: Only during a user action
|
|
93
|
+
- **Parameters**: `text`: text ≤ 16 KiB
|
|
94
|
+
- **Result**: `null`
|
|
95
|
+
|
|
96
|
+
### `gameEvents.subscribe`
|
|
97
|
+
|
|
98
|
+
- **Kind**: subscription
|
|
99
|
+
- **Requires**: permission `gameEvents`
|
|
100
|
+
- **When it can be called**: At any time
|
|
101
|
+
- **Parameters**: none
|
|
102
|
+
- **Each update**: `{ event, at }` for each declared event
|
|
103
|
+
- **Shape**: [`GameEvent`](result-shapes.md#gameevent)
|
|
104
|
+
|
|
105
|
+
### `session.subscribe`
|
|
106
|
+
|
|
107
|
+
- **Kind**: subscription
|
|
108
|
+
- **Requires**: capability `session.read`
|
|
109
|
+
- **When it can be called**: At any time
|
|
110
|
+
- **Parameters**: none
|
|
111
|
+
- **Each update**: `{ elapsedMs, at }` counted from the start of the game process, or `null` without an active game
|
|
112
|
+
- **Shape**: [`Session`](result-shapes.md#session) or `null`
|
|
113
|
+
|
|
114
|
+
### `telemetry.subscribe`
|
|
115
|
+
|
|
116
|
+
- **Kind**: subscription
|
|
117
|
+
- **Requires**: capability `telemetry.read`
|
|
118
|
+
- **When it can be called**: At any time
|
|
119
|
+
- **Parameters**: none
|
|
120
|
+
- **Each update**: `{ cpu, ram, cpuTemperature, gpuTemperature, sources }`, or `null` without an active game: `cpu` is the game's share of the whole machine in % (0–100), `ram` its resident bytes, temperatures are °C or `null`, `sources` `{ cpuTemperature, gpuTemperature }` says whether the host has each sensor
|
|
121
|
+
- **Shape**: [`Telemetry`](result-shapes.md#telemetry) or `null`
|
|
122
|
+
|
|
123
|
+
### `fps.subscribe`
|
|
124
|
+
|
|
125
|
+
- **Kind**: subscription
|
|
126
|
+
- **Requires**: capability `fps.read`
|
|
127
|
+
- **When it can be called**: At any time
|
|
128
|
+
- **Parameters**: none
|
|
129
|
+
- **Each update**: `{ fps, stale, status }`: `fps` a number or `null`; the host sets `stale` 3 s after the last sample; `status` is `ready`, `waiting`, `unsupported`, `permission_denied`, `ambiguous`, `events_lost` or `unavailable`
|
|
130
|
+
- **Shape**: [`Fps`](result-shapes.md#fps)
|
|
131
|
+
|
|
132
|
+
### `media.subscribe`
|
|
133
|
+
|
|
134
|
+
- **Kind**: subscription
|
|
135
|
+
- **Requires**: capability `media.read`
|
|
136
|
+
- **When it can be called**: At any time
|
|
137
|
+
- **Parameters**: `cover?`: boolean
|
|
138
|
+
- **Each update**: `null` without a player, or `{ player, title, artists, playing, canPrevious, canPlayPause, canNext, cover }`: `player` an opaque ID, `artists` a list, `cover` an `asset:` handle of at most 512 px or `null`
|
|
139
|
+
- **Shape**: [`Media`](result-shapes.md#media) or `null`
|
|
140
|
+
|
|
141
|
+
### `media.previous`
|
|
142
|
+
|
|
143
|
+
- **Kind**: call, answered once
|
|
144
|
+
- **Requires**: capability `media.control`
|
|
145
|
+
- **When it can be called**: Only during a user action
|
|
146
|
+
- **Parameters**: `player?`: text ≤ 128 bytes
|
|
147
|
+
- **Result**: `null`; `stale_context` when `player` is no longer current
|
|
148
|
+
- **Shape**: `null`
|
|
149
|
+
|
|
150
|
+
### `media.playPause`
|
|
151
|
+
|
|
152
|
+
- **Kind**: call, answered once
|
|
153
|
+
- **Requires**: capability `media.control`
|
|
154
|
+
- **When it can be called**: Only during a user action
|
|
155
|
+
- **Parameters**: `player?`: text ≤ 128 bytes
|
|
156
|
+
- **Result**: `null`; `stale_context` when `player` is no longer current
|
|
157
|
+
- **Shape**: `null`
|
|
158
|
+
|
|
159
|
+
### `media.next`
|
|
160
|
+
|
|
161
|
+
- **Kind**: call, answered once
|
|
162
|
+
- **Requires**: capability `media.control`
|
|
163
|
+
- **When it can be called**: Only during a user action
|
|
164
|
+
- **Parameters**: `player?`: text ≤ 128 bytes
|
|
165
|
+
- **Result**: `null`; `stale_context` when `player` is no longer current
|
|
166
|
+
- **Shape**: `null`
|
|
167
|
+
|
|
168
|
+
### `stopwatch.subscribe`
|
|
169
|
+
|
|
170
|
+
- **Kind**: subscription
|
|
171
|
+
- **Requires**: capability `stopwatch.read`
|
|
172
|
+
- **When it can be called**: At any time
|
|
173
|
+
- **Parameters**: none
|
|
174
|
+
- **Each update**: `{ running, elapsedMs, at, shortcuts }`, or `null` without an active game; `shortcuts` `{ toggle, reset, bound }` holds host-formatted key chords
|
|
175
|
+
- **Shape**: [`Stopwatch`](result-shapes.md#stopwatch) or `null`
|
|
176
|
+
|
|
177
|
+
### `stopwatch.toggle`
|
|
178
|
+
|
|
179
|
+
- **Kind**: call, answered once
|
|
180
|
+
- **Requires**: capability `stopwatch.control`
|
|
181
|
+
- **When it can be called**: Only during a user action
|
|
182
|
+
- **Parameters**: none
|
|
183
|
+
- **Result**: the new state, as in `stopwatch.subscribe`; `unavailable` when the host cannot act
|
|
184
|
+
- **Shape**: [`Stopwatch`](result-shapes.md#stopwatch) or `null`
|
|
185
|
+
|
|
186
|
+
### `stopwatch.reset`
|
|
187
|
+
|
|
188
|
+
- **Kind**: call, answered once
|
|
189
|
+
- **Requires**: capability `stopwatch.control`
|
|
190
|
+
- **When it can be called**: Only during a user action
|
|
191
|
+
- **Parameters**: none
|
|
192
|
+
- **Result**: the new state, as in `stopwatch.subscribe`; `unavailable` when the host cannot act
|
|
193
|
+
- **Shape**: [`Stopwatch`](result-shapes.md#stopwatch) or `null`
|
|
194
|
+
|
|
195
|
+
### `notes.subscribe`
|
|
196
|
+
|
|
197
|
+
- **Kind**: subscription
|
|
198
|
+
- **Requires**: capability `notes.read`
|
|
199
|
+
- **When it can be called**: At any time
|
|
200
|
+
- **Parameters**: none
|
|
201
|
+
- **Each update**: `{ active, notes }` of the user's single notes document; each note `{ id, title, body, items }`, each item `{ id, text, checked }`
|
|
202
|
+
- **Shape**: [`Notes`](result-shapes.md#notes)
|
|
203
|
+
|
|
204
|
+
### `notes.create`
|
|
205
|
+
|
|
206
|
+
- **Kind**: call, answered once
|
|
207
|
+
- **Requires**: capability `notes.write`
|
|
208
|
+
- **When it can be called**: Only during a user action
|
|
209
|
+
- **Parameters**: none
|
|
210
|
+
- **Result**: `{ note }`, a new empty active note titled `Note {n}` in the user's language; `quota_exceeded` beyond 8
|
|
211
|
+
- **Shape**: [`CreatedNote`](result-shapes.md#creatednote)
|
|
212
|
+
|
|
213
|
+
### `notes.select`
|
|
214
|
+
|
|
215
|
+
- **Kind**: call, answered once
|
|
216
|
+
- **Requires**: capability `notes.write`
|
|
217
|
+
- **When it can be called**: Only during a user action
|
|
218
|
+
- **Parameters**: `note`: text ≤ 128 bytes
|
|
219
|
+
- **Result**: `null`; the host stores the active note
|
|
220
|
+
- **Shape**: `null`
|
|
221
|
+
|
|
222
|
+
### `notes.setItem`
|
|
223
|
+
|
|
224
|
+
- **Kind**: call, answered once
|
|
225
|
+
- **Requires**: capability `notes.write`
|
|
226
|
+
- **When it can be called**: Only during a user action
|
|
227
|
+
- **Parameters**: `note`: text ≤ 128 bytes; `item`: text ≤ 128 bytes; `checked`: boolean
|
|
228
|
+
- **Result**: `null`
|
|
229
|
+
|
|
230
|
+
### `notes.delete`
|
|
231
|
+
|
|
232
|
+
- **Kind**: call, answered once; the user confirms it first, in a dialog drawn by OverCrow
|
|
233
|
+
- **Requires**: capability `notes.write`
|
|
234
|
+
- **When it can be called**: Only during a user action
|
|
235
|
+
- **Parameters**: `note`: text ≤ 128 bytes
|
|
236
|
+
- **Result**: `null`, or `cancelled` when the user declines
|
|
237
|
+
- **Shape**: `null`
|
|
238
|
+
|
|
239
|
+
### `playervox.score.subscribe`
|
|
240
|
+
|
|
241
|
+
- **Kind**: subscription
|
|
242
|
+
- **Requires**: capability `playervox.score.read`
|
|
243
|
+
- **When it can be called**: At any time
|
|
244
|
+
- **Parameters**: none
|
|
245
|
+
- **Each update**: `{ state, name, score, grade, ratingsCount, criteria }`: `state` is `idle`, `unsupported`, `loading`, `ready`, `no_ratings`, `not_found` or `unavailable`; `criteria` `{ gameplay, art, tech }`, each from 0 to 100 or `null`
|
|
246
|
+
- **Shape**: [`Score`](result-shapes.md#score)
|
|
247
|
+
|
|
248
|
+
### `playervox.rating.subscribe`
|
|
249
|
+
|
|
250
|
+
- **Kind**: subscription
|
|
251
|
+
- **Requires**: capability `playervox.rating.read`
|
|
252
|
+
- **When it can be called**: At any time
|
|
253
|
+
- **Parameters**: none
|
|
254
|
+
- **Each update**: `{ state, name, offline, rating }`: `state` is `idle`, `unsupported`, `loading`, `ready` or `unavailable`; `rating` is `null` before the user's first rating, or `{ gameplay, art, tech, review, publishedAt, offsetMinutes }`. Nothing is sent while the PlayerVox account is signed out, pending or expired. A published rating is sent again by the subscription. The host fills the `playervox.rating.publish` controls from it
|
|
255
|
+
- **Shape**: [`RatingState`](result-shapes.md#ratingstate)
|
|
256
|
+
|
|
257
|
+
### `playervox.reviews.subscribe`
|
|
258
|
+
|
|
259
|
+
- **Kind**: subscription
|
|
260
|
+
- **Requires**: capability `playervox.reviews.read`
|
|
261
|
+
- **When it can be called**: At any time
|
|
262
|
+
- **Parameters**: none
|
|
263
|
+
- **Each update**: `{ state, revision, offline }`: `state` is `idle`, `unsupported` or `ready`; `revision` changes whenever the reviews to read change (another game, another PlayerVox account, reviews changed on PlayerVox), so the widget reads its page again; `offline` while PlayerVox is unreachable. Nothing is sent while the PlayerVox account is signed out, pending or expired. Holding this subscription is what keeps the host's reviews source running
|
|
264
|
+
- **Shape**: [`ReviewsState`](result-shapes.md#reviewsstate)
|
|
265
|
+
|
|
266
|
+
### `playervox.reviews.page`
|
|
267
|
+
|
|
268
|
+
- **Kind**: call, answered once
|
|
269
|
+
- **Requires**: capability `playervox.reviews.read`
|
|
270
|
+
- **When it can be called**: At any time
|
|
271
|
+
- **Parameters**: `page?`: integer 1 to 100000; `followedOnly?`: boolean
|
|
272
|
+
- **Result**: `{ gameName, items, page, totalPages, count }`: three reviews of the active game per page, in the language of the host's interface; a page past the end answers the last page; each item `{ id, author, grade, score, text, original, hidden, publishedAt, offsetMinutes }`, `text` translated when a translation exists, `original` the untranslated text of a translated review or `null`, both cut by the host to 16 KiB. Each call reads its own page: the host keeps no page position or filter shared between widgets
|
|
273
|
+
- **Shape**: [`ReviewsPage`](result-shapes.md#reviewspage)
|
|
274
|
+
|
|
275
|
+
### `journal.subscribe`
|
|
276
|
+
|
|
277
|
+
- **Kind**: subscription
|
|
278
|
+
- **Requires**: capability `journal.read`
|
|
279
|
+
- **When it can be called**: At any time
|
|
280
|
+
- **Parameters**: none
|
|
281
|
+
- **Each update**: `null` without an active game, or `{ revision, notice }`: `revision` changes whenever the merged journal of the active game changes (a session recorded or deleted, cloud sessions merged, the PlayerVox account or sync changed), so the widget reads its page again; `notice` is `null`, `offline`, `storage_unavailable`, `full`, `expired`, `busy` or `unavailable`. Holding this subscription is what keeps the host's journal source running
|
|
282
|
+
- **Shape**: [`JournalState`](result-shapes.md#journalstate) or `null`
|
|
283
|
+
|
|
284
|
+
### `journal.page`
|
|
285
|
+
|
|
286
|
+
- **Kind**: call, answered once
|
|
287
|
+
- **Requires**: capability `journal.read`
|
|
288
|
+
- **When it can be called**: At any time
|
|
289
|
+
- **Parameters**: `cursor?`: text ≤ 128 bytes
|
|
290
|
+
- **Result**: `{ gameName, items, page, next, previous }`: five local and cloud sessions of the active game, merged and deduplicated, newest first; without `cursor`, the first page; each item `{ id, startedAt, offsetMinutes, durationMs, source }`; cursors are host handles that stay valid for the widget whatever other widgets read, and a cursor past the end answers the last page
|
|
291
|
+
- **Shape**: [`JournalPage`](result-shapes.md#journalpage)
|
|
292
|
+
|
|
293
|
+
### `journal.delete`
|
|
294
|
+
|
|
295
|
+
- **Kind**: call, answered once; the user confirms it first, in a dialog drawn by OverCrow
|
|
296
|
+
- **Requires**: capability `journal.delete`
|
|
297
|
+
- **When it can be called**: Only during a user action
|
|
298
|
+
- **Parameters**: `session`: text ≤ 128 bytes
|
|
299
|
+
- **Result**: `null`, or `cancelled` when the user declines; `not_connected` for a cloud session while PlayerVox is disconnected
|
|
300
|
+
- **Shape**: `null`
|
|
301
|
+
|
|
302
|
+
### `twitch.chat.subscribe`
|
|
303
|
+
|
|
304
|
+
- **Kind**: subscription
|
|
305
|
+
- **Requires**: capability `twitch.chat.read`
|
|
306
|
+
- **When it can be called**: At any time
|
|
307
|
+
- **Parameters**: none
|
|
308
|
+
- **Each update**: `{ account, channel, joinState, failure, favorites, canSend, generation, reset, messages, removed, skipped }`: `account` is `signed_out`, `pending`, `connected` or `expired` (sign-in is drawn by the host); `failure` is the fixed category of a `failed` join; messages arrive as deltas, at most one update per 100 ms, with `reset` after subscribing, a generation change or a show, and nothing while the widget is hidden; a faster chat is sampled, `skipped` counting the new messages left out; each message `{ id, author, color, badges, fragments, reply, deleted, receivedAt }` with at most 16 fragments, emotes and badges as `asset:` handles for the current theme and scale
|
|
309
|
+
- **Shape**: [`TwitchChat`](result-shapes.md#twitchchat)
|
|
310
|
+
|
|
311
|
+
### `twitch.chat.join`
|
|
312
|
+
|
|
313
|
+
- **Kind**: call, answered once
|
|
314
|
+
- **Requires**: capability `twitch.chat.read`
|
|
315
|
+
- **When it can be called**: Only during a user action
|
|
316
|
+
- **Parameters**: `channel`: text ≤ 25 bytes
|
|
317
|
+
- **Result**: `null`; the host remembers the channel and rejoins it when the widget starts
|
|
318
|
+
- **Shape**: `null`
|
|
319
|
+
|
|
320
|
+
### `twitch.chat.leave`
|
|
321
|
+
|
|
322
|
+
- **Kind**: call, answered once
|
|
323
|
+
- **Requires**: capability `twitch.chat.read`
|
|
324
|
+
- **When it can be called**: Only during a user action
|
|
325
|
+
- **Parameters**: none
|
|
326
|
+
- **Result**: `null`; the host forgets the channel
|
|
327
|
+
- **Shape**: `null`
|
|
328
|
+
|
|
329
|
+
### `twitch.chat.favorite`
|
|
330
|
+
|
|
331
|
+
- **Kind**: call, answered once
|
|
332
|
+
- **Requires**: capability `twitch.chat.read`
|
|
333
|
+
- **When it can be called**: Only during a user action
|
|
334
|
+
- **Parameters**: `channel`: text ≤ 25 bytes; `favorite`: boolean
|
|
335
|
+
- **Result**: `null`; `quota_exceeded` beyond 20
|
|
336
|
+
- **Shape**: `null`
|
|
337
|
+
<!-- /generated:services -->
|
|
338
|
+
|
|
339
|
+
## Writes that go through a form
|
|
340
|
+
|
|
341
|
+
Saving a note, publishing a rating and sending a chat message are not in
|
|
342
|
+
this list: they are write intents, sent by a `form` from the values that
|
|
343
|
+
the user typed. See
|
|
344
|
+
[forms that write user data](forms.md#forms-that-write-user-data).
|