@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.
- package/LICENSE +21 -0
- package/README.md +91 -1
- 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 +50 -4
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# Manifest reference (widget API v1)
|
|
2
|
+
|
|
3
|
+
Generated from the creator documentation (pages `manifest`, `services`) and the SDK types. The manifest is `manifest.json`: strict JSON, no unknown field, no duplicate key.
|
|
4
|
+
|
|
5
|
+
## Top-level fields
|
|
6
|
+
|
|
7
|
+
| Field | Type | Required | Meaning |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| `schemaVersion` | integer 1 to 1 | yes | Manifest document version. |
|
|
10
|
+
| `apiVersion` | integer 1 to 1 | yes | Widget API version; selects this schema. |
|
|
11
|
+
| `id` | `widget ID` | yes | Reverse-DNS ID, from 3 bytes to 128 bytes: at least two dot-separated segments of `[a-z0-9-]`, each at most 63 bytes and not starting or ending with `-`. `com.playervox` and `com.playervox.*` are reserved for packages signed by PlayerVox. |
|
|
12
|
+
| `version` | `version` | yes | SemVer 2.0.0 `MAJOR.MINOR.PATCH[-PRERELEASE]` in canonical form, at most 64 bytes; build metadata is rejected. |
|
|
13
|
+
| `name` | `WidgetName` | yes | Localized widget name shown by the host. |
|
|
14
|
+
| `sizing` | `Sizing` | yes | Size and fit rules applied by the widget's frame. |
|
|
15
|
+
| `vm` | `VmRequest` | no | VM budget request; absent means the defaults. |
|
|
16
|
+
| `permissions` | `Permissions` | no | Requested permissions; absent means none. |
|
|
17
|
+
| `wrapper` | `wrapper` | no | Widget rows of the host options menu. |
|
|
18
|
+
| `requires` | `host features` | no | Distinct host data sources the widget cannot work without, as in a `wrapper.menu` row's `requires`. On a machine that lacks one, the host neither starts nor shows the widget and keeps its layout; the widget comes back when the source does. |
|
|
19
|
+
|
|
20
|
+
## name
|
|
21
|
+
|
|
22
|
+
| Field | Type | Required | Meaning |
|
|
23
|
+
| --- | --- | --- | --- |
|
|
24
|
+
| `en` | `name text` | yes | English name. |
|
|
25
|
+
| `fr` | `name text` | yes | French name. |
|
|
26
|
+
|
|
27
|
+
## sizing
|
|
28
|
+
|
|
29
|
+
| Field | Type | Required | Meaning |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| `fit` | `none` \| `both` \| `height` | yes | Content fitting the widget supports: `both` axes, `height` only, or `none`. Manual resizing is always available. |
|
|
32
|
+
| `defaultMode` | `fit` \| `manual` | no | Mode of a newly placed widget; default `fit` when `fit` is not `none`, else `manual`. `fit` with `fit: none` is rejected. |
|
|
33
|
+
| `preferred` | `Dimensions` | yes | Initial size; within `min` and `max`. |
|
|
34
|
+
| `min` | `Dimensions` | yes | Smallest size. |
|
|
35
|
+
| `max` | `Dimensions` | yes | Largest size. |
|
|
36
|
+
|
|
37
|
+
## Dimensions
|
|
38
|
+
|
|
39
|
+
| Field | Type | Required | Meaning |
|
|
40
|
+
| --- | --- | --- | --- |
|
|
41
|
+
| `width` | integer 1 to 4096 | yes | Logical pixels. |
|
|
42
|
+
| `height` | integer 1 to 4096 | yes | Logical pixels. |
|
|
43
|
+
|
|
44
|
+
## permissions
|
|
45
|
+
|
|
46
|
+
| Field | Type | Required | Meaning |
|
|
47
|
+
| --- | --- | --- | --- |
|
|
48
|
+
| `network` | list of `NetworkRule` ≤ 32 | no | Distinct network rules. |
|
|
49
|
+
| `storage` | boolean | no | Host key-value storage; default `false`. |
|
|
50
|
+
| `clipboardWrite` | boolean | no | Clipboard text writes; default `false`. |
|
|
51
|
+
| `gameEvents` | list of `game event` ≤ 32 | no | Distinct `overcrow.game.<name>.v1` event names. |
|
|
52
|
+
| `capabilities` | `capability names` | no | Distinct capabilities of the schema. |
|
|
53
|
+
|
|
54
|
+
## vm
|
|
55
|
+
|
|
56
|
+
| Field | Type | Required | Meaning |
|
|
57
|
+
| --- | --- | --- | --- |
|
|
58
|
+
| `heapMiB` | integer 16 to 48 | yes | QuickJS heap ceiling in MiB, from 16 MiB to 48 MiB. The VM process ceiling (64 MiB) does not change. |
|
|
59
|
+
|
|
60
|
+
## wrapper.menu rows
|
|
61
|
+
|
|
62
|
+
| Field | Type | Required | Meaning |
|
|
63
|
+
| --- | --- | --- | --- |
|
|
64
|
+
| `type` | `toggle` \| `slider` \| `choice` \| `action` \| `group` | yes | Row type. |
|
|
65
|
+
| `id` | identifier ≤ 48 bytes | yes | Unique among all rows of the widget; key of the stored value. |
|
|
66
|
+
| `label` | `MenuLabel` | yes | Localized row label. |
|
|
67
|
+
| `icon` | Lucide icon name | no | Leading icon from the host list, drawn by the host. |
|
|
68
|
+
| `visibleWhen` | identifier ≤ 48 bytes | no | ID of a `toggle` row declared earlier; this row is shown only while that toggle is on. |
|
|
69
|
+
| `requires` | `fps` \| `telemetry.cpuTemperature` \| `telemetry.gpuTemperature` | no | Host data source; the host hides the row when it cannot supply it. |
|
|
70
|
+
|
|
71
|
+
## Permissions
|
|
72
|
+
|
|
73
|
+
| Permission | Meaning | With a sensitive capability |
|
|
74
|
+
| --- | --- | --- |
|
|
75
|
+
| `network` | Exact HTTPS routes reachable through the host broker, at most 32 rules. | manifest rejected |
|
|
76
|
+
| `storage` | Host-managed key-value storage partitioned by widget ID, within 256 KiB. | process-lifetime data only |
|
|
77
|
+
| `clipboardWrite` | Text clipboard writes, during a user action in Interactive mode. | manifest rejected |
|
|
78
|
+
| `gameEvents` | Named semantic game events `overcrow.game.<name>.v1`, at most 32. | allowed |
|
|
79
|
+
| `capabilities` | Host services listed with the capabilities. | allowed |
|
|
80
|
+
|
|
81
|
+
## Network rule fields
|
|
82
|
+
|
|
83
|
+
| Field | Type | Required | Meaning |
|
|
84
|
+
| --- | --- | --- | --- |
|
|
85
|
+
| `origin` | `origin` | yes | Canonical `https://host[:port]` origin, host ≤ 253 bytes with labels ≤ 63 bytes; no credentials, IP literal or local name. |
|
|
86
|
+
| `method` | `GET` \| `POST` \| `PUT` \| `PATCH` \| `DELETE` | yes | One method. |
|
|
87
|
+
| `path` | text ≤ 1 KiB | yes | Complete path; `{name}` segments are typed path parameters. |
|
|
88
|
+
| `pathParams` | `name → ParameterConstraint` | no | Constraint of every `{name}` segment, at most 8. |
|
|
89
|
+
| `queryParams` | `name → ParameterConstraint` | no | Allowed query parameters, at most 16, each optionally `required`; others are refused. |
|
|
90
|
+
| `maxResponseBytes` | integer 1 to 3145728 | no | Largest response body of this route, from 1 to 3 MiB; 1 MiB when absent. Not for `as: "image"`, which keeps 1 MiB. When several rules allow a request, the largest bound applies. |
|
|
91
|
+
|
|
92
|
+
## Path and query parameter constraints
|
|
93
|
+
|
|
94
|
+
| Type | Shape | Accepts |
|
|
95
|
+
| --- | --- | --- |
|
|
96
|
+
| `integer` | `{ min, max }` | Decimal without leading zero, from 0 to 2^53 - 1. |
|
|
97
|
+
| `slug` | `{ maxLength }` | ASCII letters of either case, digits, `_` and `-`, at least one character; `maxLength` from 1 to 128 bytes. |
|
|
98
|
+
| `enum` | list of `literal segment` ≤ 32 | One of the listed values, each ≤ 128 bytes. |
|
|
99
|
+
| `string` | `{ maxLength }` | Query parameters only; any text without control characters; `maxLength` from 1 to 256 bytes. |
|
|
100
|
+
|
|
101
|
+
## Capabilities
|
|
102
|
+
|
|
103
|
+
| Capability | Sensitive | Account | Meaning |
|
|
104
|
+
| --- | --- | --- | --- |
|
|
105
|
+
| `telemetry.read` | no | — | CPU, RAM and temperature samples of the active game. |
|
|
106
|
+
| `fps.read` | no | — | Frame rate of the active game when the host has a source. |
|
|
107
|
+
| `media.read` | **yes** | — | Now-playing metadata and the image of its cover art. |
|
|
108
|
+
| `media.control` | **yes** | — | Previous, play/pause and next. |
|
|
109
|
+
| `session.read` | no | — | Duration of the active game session, without the game identity. |
|
|
110
|
+
| `stopwatch.read` | no | — | State of the host's single manual stopwatch and its shortcuts. |
|
|
111
|
+
| `stopwatch.control` | no | — | Start, pause and reset the host's single manual stopwatch. |
|
|
112
|
+
| `notes.read` | **yes** | — | The user's notes and checklists: one document shared by every game. |
|
|
113
|
+
| `notes.write` | **yes** | — | Create, select, save, check and delete notes; text only through a form bound to a write intent. |
|
|
114
|
+
| `playervox.score.read` | **yes** | — | Public PlayerVox score of the active game; sensitive because it reveals the game. |
|
|
115
|
+
| `playervox.rating.read` | **yes** | PlayerVox | The user's own rating of the active game. |
|
|
116
|
+
| `playervox.rating.write` | **yes** | PlayerVox | Publish a rating and review through a form bound to a write intent. |
|
|
117
|
+
| `playervox.reviews.read` | **yes** | PlayerVox | Paged player reviews of the active game, optionally from followed players only. |
|
|
118
|
+
| `journal.read` | **yes** | — | Play sessions of the active game: local ones, plus cloud ones while PlayerVox is connected. |
|
|
119
|
+
| `journal.delete` | **yes** | — | Delete a journal session after a confirmation asked by the host; cloud sessions need PlayerVox. |
|
|
120
|
+
| `twitch.chat.read` | **yes** | Twitch | Join, read and leave a Twitch channel chat, and keep favourite channels. |
|
|
121
|
+
| `twitch.chat.compose` | **yes** | Twitch | Send a chat message through a form bound to a write intent; the host allows 20 messages per 30 s and answers `busy` beyond. |
|
|
122
|
+
|
|
123
|
+
## SDK types
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
export type Permission =
|
|
127
|
+
| "network"
|
|
128
|
+
| "storage"
|
|
129
|
+
| "clipboardWrite"
|
|
130
|
+
| "gameEvents"
|
|
131
|
+
| "capabilities";
|
|
132
|
+
|
|
133
|
+
/** A capability; declaring one grants nothing until the user consents. */
|
|
134
|
+
export type Capability =
|
|
135
|
+
| "telemetry.read"
|
|
136
|
+
| "fps.read"
|
|
137
|
+
| "media.read"
|
|
138
|
+
| "media.control"
|
|
139
|
+
| "session.read"
|
|
140
|
+
| "stopwatch.read"
|
|
141
|
+
| "stopwatch.control"
|
|
142
|
+
| "notes.read"
|
|
143
|
+
| "notes.write"
|
|
144
|
+
| "playervox.score.read"
|
|
145
|
+
| "playervox.rating.read"
|
|
146
|
+
| "playervox.rating.write"
|
|
147
|
+
| "playervox.reviews.read"
|
|
148
|
+
| "journal.read"
|
|
149
|
+
| "journal.delete"
|
|
150
|
+
| "twitch.chat.read"
|
|
151
|
+
| "twitch.chat.compose";
|
|
152
|
+
|
|
153
|
+
/** Capabilities that reveal user data: a widget declaring one gets no `network` or `clipboardWrite`, and only process-lifetime storage. */
|
|
154
|
+
export type SensitiveCapability =
|
|
155
|
+
| "media.read"
|
|
156
|
+
| "media.control"
|
|
157
|
+
| "notes.read"
|
|
158
|
+
| "notes.write"
|
|
159
|
+
| "playervox.score.read"
|
|
160
|
+
| "playervox.rating.read"
|
|
161
|
+
| "playervox.rating.write"
|
|
162
|
+
| "playervox.reviews.read"
|
|
163
|
+
| "journal.read"
|
|
164
|
+
| "journal.delete"
|
|
165
|
+
| "twitch.chat.read"
|
|
166
|
+
| "twitch.chat.compose";
|
|
167
|
+
|
|
168
|
+
/** The services each capability authorizes. */
|
|
169
|
+
export interface CapabilityServices {
|
|
170
|
+
/** CPU, RAM and temperature samples of the active game. */
|
|
171
|
+
readonly "telemetry.read": "telemetry.subscribe";
|
|
172
|
+
/** Frame rate of the active game when the host has a source. */
|
|
173
|
+
readonly "fps.read": "fps.subscribe";
|
|
174
|
+
/** Now-playing metadata and cover art handle. */
|
|
175
|
+
readonly "media.read": "media.subscribe";
|
|
176
|
+
/** Previous, play/pause and next. */
|
|
177
|
+
readonly "media.control": "media.previous" | "media.playPause" | "media.next";
|
|
178
|
+
/** Duration of the active game session, without the game identity. */
|
|
179
|
+
readonly "session.read": "session.subscribe";
|
|
180
|
+
/** State of the host's single manual stopwatch and its shortcuts. */
|
|
181
|
+
readonly "stopwatch.read": "stopwatch.subscribe";
|
|
182
|
+
/** Start, pause and reset the host's single manual stopwatch. */
|
|
183
|
+
readonly "stopwatch.control": "stopwatch.toggle" | "stopwatch.reset";
|
|
184
|
+
/** The user's notes and checklists: one document shared by every game. */
|
|
185
|
+
readonly "notes.read": "notes.subscribe";
|
|
186
|
+
/** Create, select, save, check and delete notes; text only through host-bound intents. */
|
|
187
|
+
readonly "notes.write": "notes.create" | "notes.select" | "notes.setItem" | "notes.delete";
|
|
188
|
+
/** Public PlayerVox score of the active game; sensitive because it reveals the game. */
|
|
189
|
+
readonly "playervox.score.read": "playervox.score.subscribe";
|
|
190
|
+
/** The user's own rating of the active game. */
|
|
191
|
+
readonly "playervox.rating.read": "playervox.rating.subscribe";
|
|
192
|
+
/** Publish a rating and review through a host-bound intent. */
|
|
193
|
+
readonly "playervox.rating.write": never;
|
|
194
|
+
/** Paged player reviews of the active game, optionally from followed players only. */
|
|
195
|
+
readonly "playervox.reviews.read": "playervox.reviews.subscribe" | "playervox.reviews.page";
|
|
196
|
+
/** Play sessions of the active game: local ones, plus cloud ones while PlayerVox is connected. */
|
|
197
|
+
readonly "journal.read": "journal.subscribe" | "journal.page";
|
|
198
|
+
/** Delete a journal session after native confirmation; cloud rows need PlayerVox. */
|
|
199
|
+
readonly "journal.delete": "journal.delete";
|
|
200
|
+
/** Join, read and leave a Twitch channel chat, and keep favourite channels. */
|
|
201
|
+
readonly "twitch.chat.read": "twitch.chat.subscribe" | "twitch.chat.join" | "twitch.chat.leave" | "twitch.chat.favorite";
|
|
202
|
+
/** Send a chat message through a host-bound intent; the host allows 20 messages per 30 s and answers `busy` beyond. */
|
|
203
|
+
readonly "twitch.chat.compose": never;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** The services each permission authorizes. */
|
|
207
|
+
export interface PermissionServices {
|
|
208
|
+
/** Exact HTTPS routes reachable through the host broker, at most `MAX_NETWORK_RULES` rules. */
|
|
209
|
+
readonly "network": "http.fetch";
|
|
210
|
+
/** Host-managed key-value storage partitioned by widget ID, within `STORAGE_QUOTA_BYTES`. */
|
|
211
|
+
readonly "storage": "storage.get" | "storage.set" | "storage.remove" | "storage.keys";
|
|
212
|
+
/** Text clipboard writes on a current Interactive gesture. */
|
|
213
|
+
readonly "clipboardWrite": "clipboard.writeText";
|
|
214
|
+
/** Named semantic game events `overcrow.game.<name>.v1`, at most `MAX_GAME_EVENTS`. */
|
|
215
|
+
readonly "gameEvents": "gameEvents.subscribe";
|
|
216
|
+
/** Host services listed below. */
|
|
217
|
+
readonly "capabilities": never;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Design tokens.
|
|
221
|
+
|
|
222
|
+
/** A colour token. */
|
|
223
|
+
```
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"network": {
|
|
4
|
+
"services": [
|
|
5
|
+
{
|
|
6
|
+
"service": "http.fetch",
|
|
7
|
+
"when": "At any time"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"en": {
|
|
11
|
+
"meaning": "Exact HTTPS routes reachable through the host broker, at most 32 rules.",
|
|
12
|
+
"withSensitive": "manifest rejected"
|
|
13
|
+
},
|
|
14
|
+
"fr": {
|
|
15
|
+
"meaning": "Routes HTTPS exactes, joignables par le broker de l’hôte ; au plus 32 règles.",
|
|
16
|
+
"withSensitive": "manifeste refusé"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"storage": {
|
|
20
|
+
"services": [
|
|
21
|
+
{
|
|
22
|
+
"service": "storage.get",
|
|
23
|
+
"when": "At any time"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"service": "storage.set",
|
|
27
|
+
"when": "At any time"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"service": "storage.remove",
|
|
31
|
+
"when": "At any time"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"service": "storage.keys",
|
|
35
|
+
"when": "At any time"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"en": {
|
|
39
|
+
"meaning": "Host-managed key-value storage partitioned by widget ID, within 256 KiB.",
|
|
40
|
+
"withSensitive": "process-lifetime data only"
|
|
41
|
+
},
|
|
42
|
+
"fr": {
|
|
43
|
+
"meaning": "Stockage clé-valeur tenu par l’hôte, cloisonné par ID de widget, dans la limite de 256 Kio.",
|
|
44
|
+
"withSensitive": "données conservées le temps du processus seulement"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"clipboardWrite": {
|
|
48
|
+
"services": [
|
|
49
|
+
{
|
|
50
|
+
"service": "clipboard.writeText",
|
|
51
|
+
"when": "Only during a user action"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"en": {
|
|
55
|
+
"meaning": "Text clipboard writes, during a user action in Interactive mode.",
|
|
56
|
+
"withSensitive": "manifest rejected"
|
|
57
|
+
},
|
|
58
|
+
"fr": {
|
|
59
|
+
"meaning": "Écriture de texte dans le presse-papiers, pendant une action de l’utilisateur en mode interactif.",
|
|
60
|
+
"withSensitive": "manifeste refusé"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"gameEvents": {
|
|
64
|
+
"services": [
|
|
65
|
+
{
|
|
66
|
+
"service": "gameEvents.subscribe",
|
|
67
|
+
"when": "At any time"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"en": {
|
|
71
|
+
"meaning": "Named semantic game events `overcrow.game.<name>.v1`, at most 32.",
|
|
72
|
+
"withSensitive": "allowed"
|
|
73
|
+
},
|
|
74
|
+
"fr": {
|
|
75
|
+
"meaning": "Événements de jeu sémantiques nommés `overcrow.game.<name>.v1`, au plus 32.",
|
|
76
|
+
"withSensitive": "admis"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"capabilities": {
|
|
80
|
+
"services": [],
|
|
81
|
+
"en": {
|
|
82
|
+
"meaning": "Host services listed with the capabilities.",
|
|
83
|
+
"withSensitive": "allowed"
|
|
84
|
+
},
|
|
85
|
+
"fr": {
|
|
86
|
+
"meaning": "Services de l’hôte listés avec les capabilities.",
|
|
87
|
+
"withSensitive": "admis"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"capabilities": {
|
|
92
|
+
"telemetry.read": {
|
|
93
|
+
"services": [
|
|
94
|
+
{
|
|
95
|
+
"service": "telemetry.subscribe",
|
|
96
|
+
"when": "At any time"
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"sensitive": false,
|
|
100
|
+
"account": null,
|
|
101
|
+
"en": {
|
|
102
|
+
"meaning": "CPU, RAM and temperature samples of the active game."
|
|
103
|
+
},
|
|
104
|
+
"fr": {
|
|
105
|
+
"meaning": "Mesures de CPU, de mémoire et de température du jeu actif."
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"fps.read": {
|
|
109
|
+
"services": [
|
|
110
|
+
{
|
|
111
|
+
"service": "fps.subscribe",
|
|
112
|
+
"when": "At any time"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"sensitive": false,
|
|
116
|
+
"account": null,
|
|
117
|
+
"en": {
|
|
118
|
+
"meaning": "Frame rate of the active game when the host has a source."
|
|
119
|
+
},
|
|
120
|
+
"fr": {
|
|
121
|
+
"meaning": "Fréquence d’images du jeu actif, quand l’hôte dispose d’une source."
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"media.read": {
|
|
125
|
+
"services": [
|
|
126
|
+
{
|
|
127
|
+
"service": "media.subscribe",
|
|
128
|
+
"when": "At any time"
|
|
129
|
+
}
|
|
130
|
+
],
|
|
131
|
+
"sensitive": true,
|
|
132
|
+
"account": null,
|
|
133
|
+
"en": {
|
|
134
|
+
"meaning": "Now-playing metadata and the image of its cover art."
|
|
135
|
+
},
|
|
136
|
+
"fr": {
|
|
137
|
+
"meaning": "Métadonnées du morceau en cours de lecture, et l’image de sa pochette."
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"media.control": {
|
|
141
|
+
"services": [
|
|
142
|
+
{
|
|
143
|
+
"service": "media.previous",
|
|
144
|
+
"when": "Only during a user action"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"service": "media.playPause",
|
|
148
|
+
"when": "Only during a user action"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"service": "media.next",
|
|
152
|
+
"when": "Only during a user action"
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"sensitive": true,
|
|
156
|
+
"account": null,
|
|
157
|
+
"en": {
|
|
158
|
+
"meaning": "Previous, play/pause and next."
|
|
159
|
+
},
|
|
160
|
+
"fr": {
|
|
161
|
+
"meaning": "Précédent, lecture/pause et suivant."
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"session.read": {
|
|
165
|
+
"services": [
|
|
166
|
+
{
|
|
167
|
+
"service": "session.subscribe",
|
|
168
|
+
"when": "At any time"
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"sensitive": false,
|
|
172
|
+
"account": null,
|
|
173
|
+
"en": {
|
|
174
|
+
"meaning": "Duration of the active game session, without the game identity."
|
|
175
|
+
},
|
|
176
|
+
"fr": {
|
|
177
|
+
"meaning": "Durée de la session du jeu actif, sans l’identité du jeu."
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"stopwatch.read": {
|
|
181
|
+
"services": [
|
|
182
|
+
{
|
|
183
|
+
"service": "stopwatch.subscribe",
|
|
184
|
+
"when": "At any time"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"sensitive": false,
|
|
188
|
+
"account": null,
|
|
189
|
+
"en": {
|
|
190
|
+
"meaning": "State of the host's single manual stopwatch and its shortcuts."
|
|
191
|
+
},
|
|
192
|
+
"fr": {
|
|
193
|
+
"meaning": "État du chronomètre manuel de l’hôte, unique, et de ses raccourcis."
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"stopwatch.control": {
|
|
197
|
+
"services": [
|
|
198
|
+
{
|
|
199
|
+
"service": "stopwatch.toggle",
|
|
200
|
+
"when": "Only during a user action"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"service": "stopwatch.reset",
|
|
204
|
+
"when": "Only during a user action"
|
|
205
|
+
}
|
|
206
|
+
],
|
|
207
|
+
"sensitive": false,
|
|
208
|
+
"account": null,
|
|
209
|
+
"en": {
|
|
210
|
+
"meaning": "Start, pause and reset the host's single manual stopwatch."
|
|
211
|
+
},
|
|
212
|
+
"fr": {
|
|
213
|
+
"meaning": "Démarrer, mettre en pause et réinitialiser le chronomètre manuel de l’hôte, unique."
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"notes.read": {
|
|
217
|
+
"services": [
|
|
218
|
+
{
|
|
219
|
+
"service": "notes.subscribe",
|
|
220
|
+
"when": "At any time"
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"sensitive": true,
|
|
224
|
+
"account": null,
|
|
225
|
+
"en": {
|
|
226
|
+
"meaning": "The user's notes and checklists: one document shared by every game."
|
|
227
|
+
},
|
|
228
|
+
"fr": {
|
|
229
|
+
"meaning": "Les notes et listes de tâches de l’utilisateur : un seul document, commun à tous les jeux."
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
"notes.write": {
|
|
233
|
+
"services": [
|
|
234
|
+
{
|
|
235
|
+
"service": "notes.create",
|
|
236
|
+
"when": "Only during a user action"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"service": "notes.select",
|
|
240
|
+
"when": "Only during a user action"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"service": "notes.setItem",
|
|
244
|
+
"when": "Only during a user action"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"service": "notes.delete",
|
|
248
|
+
"when": "Only during a user action"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"service": "form notes.save",
|
|
252
|
+
"when": "When the user submits the form"
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"sensitive": true,
|
|
256
|
+
"account": null,
|
|
257
|
+
"en": {
|
|
258
|
+
"meaning": "Create, select, save, check and delete notes; text only through a form bound to a write intent."
|
|
259
|
+
},
|
|
260
|
+
"fr": {
|
|
261
|
+
"meaning": "Créer, sélectionner, enregistrer, cocher et supprimer des notes ; le texte ne passe que par un formulaire lié à un intent d’écriture."
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"playervox.score.read": {
|
|
265
|
+
"services": [
|
|
266
|
+
{
|
|
267
|
+
"service": "playervox.score.subscribe",
|
|
268
|
+
"when": "At any time"
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"sensitive": true,
|
|
272
|
+
"account": null,
|
|
273
|
+
"en": {
|
|
274
|
+
"meaning": "Public PlayerVox score of the active game; sensitive because it reveals the game."
|
|
275
|
+
},
|
|
276
|
+
"fr": {
|
|
277
|
+
"meaning": "Note publique PlayerVox du jeu actif ; sensible parce qu’elle révèle le jeu."
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"playervox.rating.read": {
|
|
281
|
+
"services": [
|
|
282
|
+
{
|
|
283
|
+
"service": "playervox.rating.subscribe",
|
|
284
|
+
"when": "At any time"
|
|
285
|
+
}
|
|
286
|
+
],
|
|
287
|
+
"sensitive": true,
|
|
288
|
+
"account": "PlayerVox",
|
|
289
|
+
"en": {
|
|
290
|
+
"meaning": "The user's own rating of the active game."
|
|
291
|
+
},
|
|
292
|
+
"fr": {
|
|
293
|
+
"meaning": "La note que l’utilisateur a lui-même donnée au jeu actif."
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"playervox.rating.write": {
|
|
297
|
+
"services": [
|
|
298
|
+
{
|
|
299
|
+
"service": "form playervox.rating.publish",
|
|
300
|
+
"when": "When the user submits the form"
|
|
301
|
+
}
|
|
302
|
+
],
|
|
303
|
+
"sensitive": true,
|
|
304
|
+
"account": "PlayerVox",
|
|
305
|
+
"en": {
|
|
306
|
+
"meaning": "Publish a rating and review through a form bound to a write intent."
|
|
307
|
+
},
|
|
308
|
+
"fr": {
|
|
309
|
+
"meaning": "Publier une note et un avis, par un formulaire lié à un intent d’écriture."
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"playervox.reviews.read": {
|
|
313
|
+
"services": [
|
|
314
|
+
{
|
|
315
|
+
"service": "playervox.reviews.subscribe",
|
|
316
|
+
"when": "At any time"
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"service": "playervox.reviews.page",
|
|
320
|
+
"when": "At any time"
|
|
321
|
+
}
|
|
322
|
+
],
|
|
323
|
+
"sensitive": true,
|
|
324
|
+
"account": "PlayerVox",
|
|
325
|
+
"en": {
|
|
326
|
+
"meaning": "Paged player reviews of the active game, optionally from followed players only."
|
|
327
|
+
},
|
|
328
|
+
"fr": {
|
|
329
|
+
"meaning": "Avis des joueurs sur le jeu actif, par pages, limités sur demande aux joueurs suivis."
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"journal.read": {
|
|
333
|
+
"services": [
|
|
334
|
+
{
|
|
335
|
+
"service": "journal.subscribe",
|
|
336
|
+
"when": "At any time"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"service": "journal.page",
|
|
340
|
+
"when": "At any time"
|
|
341
|
+
}
|
|
342
|
+
],
|
|
343
|
+
"sensitive": true,
|
|
344
|
+
"account": null,
|
|
345
|
+
"en": {
|
|
346
|
+
"meaning": "Play sessions of the active game: local ones, plus cloud ones while PlayerVox is connected."
|
|
347
|
+
},
|
|
348
|
+
"fr": {
|
|
349
|
+
"meaning": "Sessions de jeu du jeu actif : les sessions locales, plus celles du cloud tant que PlayerVox est connecté."
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
"journal.delete": {
|
|
353
|
+
"services": [
|
|
354
|
+
{
|
|
355
|
+
"service": "journal.delete",
|
|
356
|
+
"when": "Only during a user action"
|
|
357
|
+
}
|
|
358
|
+
],
|
|
359
|
+
"sensitive": true,
|
|
360
|
+
"account": null,
|
|
361
|
+
"en": {
|
|
362
|
+
"meaning": "Delete a journal session after a confirmation asked by the host; cloud sessions need PlayerVox."
|
|
363
|
+
},
|
|
364
|
+
"fr": {
|
|
365
|
+
"meaning": "Supprimer une session du journal, après une confirmation demandée par l’hôte ; les sessions du cloud exigent PlayerVox."
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
"twitch.chat.read": {
|
|
369
|
+
"services": [
|
|
370
|
+
{
|
|
371
|
+
"service": "twitch.chat.subscribe",
|
|
372
|
+
"when": "At any time"
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"service": "twitch.chat.join",
|
|
376
|
+
"when": "Only during a user action"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"service": "twitch.chat.leave",
|
|
380
|
+
"when": "Only during a user action"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"service": "twitch.chat.favorite",
|
|
384
|
+
"when": "Only during a user action"
|
|
385
|
+
}
|
|
386
|
+
],
|
|
387
|
+
"sensitive": true,
|
|
388
|
+
"account": "Twitch",
|
|
389
|
+
"en": {
|
|
390
|
+
"meaning": "Join, read and leave a Twitch channel chat, and keep favourite channels."
|
|
391
|
+
},
|
|
392
|
+
"fr": {
|
|
393
|
+
"meaning": "Rejoindre, lire et quitter le chat d’une chaîne Twitch, et conserver des chaînes favorites."
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
"twitch.chat.compose": {
|
|
397
|
+
"services": [
|
|
398
|
+
{
|
|
399
|
+
"service": "form twitch.chat.send",
|
|
400
|
+
"when": "When the user submits the form"
|
|
401
|
+
}
|
|
402
|
+
],
|
|
403
|
+
"sensitive": true,
|
|
404
|
+
"account": "Twitch",
|
|
405
|
+
"en": {
|
|
406
|
+
"meaning": "Send a chat message through a form bound to a write intent; the host allows 20 messages per 30 s and answers `busy` beyond."
|
|
407
|
+
},
|
|
408
|
+
"fr": {
|
|
409
|
+
"meaning": "Envoyer un message dans le chat, par un formulaire lié à un intent d’écriture ; l’hôte admet 20 messages par 30 s et répond `busy` au-delà."
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// The logic module: the widget state and the functions the view calls
|
|
2
|
+
// (https://overcrow.playervox.com/docs/en/logic/). It runs in the
|
|
3
|
+
// sandboxed widget VM, not in a browser:
|
|
4
|
+
// only @overcrow/sdk reaches the host.
|
|
5
|
+
import { initState } from "@overcrow/sdk";
|
|
6
|
+
|
|
7
|
+
initState({});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"apiVersion": 1,
|
|
4
|
+
"id": "{{id}}",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"name": {
|
|
7
|
+
"en": "{{name}}",
|
|
8
|
+
"fr": "{{name}}"
|
|
9
|
+
},
|
|
10
|
+
"sizing": {
|
|
11
|
+
"fit": "none",
|
|
12
|
+
"preferred": { "width": 220, "height": 80 },
|
|
13
|
+
"min": { "width": 120, "height": 48 },
|
|
14
|
+
"max": { "width": 640, "height": 640 }
|
|
15
|
+
}
|
|
16
|
+
}
|