@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,367 @@
|
|
|
1
|
+
# L’outil en ligne de commande
|
|
2
|
+
|
|
3
|
+
`overcrow-widget` crée, vérifie et empaquette les widgets PlayerVox
|
|
4
|
+
OverCrow, les exécute dans OverCrow pendant que vous les écrivez, et les
|
|
5
|
+
teste. C’est un seul programme pour Linux et Windows. Il contient les mêmes
|
|
6
|
+
validateurs que ceux qu’OverCrow exécute quand il installe et démarre un
|
|
7
|
+
widget : un paquet qu’il accepte est un paquet qu’OverCrow lit.
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
overcrow-widget init my-widget --template counter
|
|
11
|
+
cd my-widget
|
|
12
|
+
overcrow-widget check
|
|
13
|
+
overcrow-widget package
|
|
14
|
+
overcrow-widget inspect dist/com.example.my-widget-0.1.0.ocpkg
|
|
15
|
+
overcrow-widget doctor
|
|
16
|
+
overcrow-widget dev
|
|
17
|
+
overcrow-widget test
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
| Commande | Rôle |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| [`init`](#init) | Crée un projet à partir d’un template. |
|
|
23
|
+
| [`check`](#check) | Valide un projet sans rien écrire. |
|
|
24
|
+
| [`package`](#package) | Vérifie, puis écrit le paquet `.ocpkg`. |
|
|
25
|
+
| [`inspect`](#inspect) | Montre ce qu’un paquet contient et demande. |
|
|
26
|
+
| [`dev`](#dev) | Exécute le widget dans OverCrow et le recharge à chaque enregistrement. |
|
|
27
|
+
| [`test`](#test) | Joue les scénarios de test du projet et compare leurs images. |
|
|
28
|
+
| [`doctor`](#doctor) | Indique ce que votre installation a et ce qui lui manque. |
|
|
29
|
+
| [`admit`](#admit) | Exécute l’admission de la marketplace sur votre soumission. |
|
|
30
|
+
|
|
31
|
+
Chaque commande prend le dossier du projet en argument ; sans argument,
|
|
32
|
+
elle utilise le dossier courant.
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
Chaque [release d’OverCrow](https://github.com/Valhallab/playervox-overcrow-releases/releases)
|
|
37
|
+
contient les outils créateurs dans un ZIP par plateforme : l’outil avec
|
|
38
|
+
sa licence et ses notices tierces, le runtime headless d’OverCrow
|
|
39
|
+
qu’utilise [`test`](#test), un `README.txt` et un `SHA256SUMS` de tous
|
|
40
|
+
les fichiers.
|
|
41
|
+
|
|
42
|
+
| Plateforme | ZIP | Outil dans le ZIP |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| Linux x86-64 | `overcrow-creator-tools-VERSION-linux-x86_64.zip` | `overcrow-widget-VERSION-linux-x86_64` |
|
|
45
|
+
| Windows x64 | `overcrow-creator-tools-VERSION-windows-x86_64.zip` | `overcrow-widget-VERSION-windows-x86_64.exe` |
|
|
46
|
+
|
|
47
|
+
Décompressez-le, vérifiez les fichiers, renommez l’outil `overcrow-widget`
|
|
48
|
+
(`overcrow-widget.exe` sous Windows), rendez-le exécutable sous Linux
|
|
49
|
+
(`chmod +x`) et placez-le dans votre `PATH`. Il n’a besoin de rien d’autre
|
|
50
|
+
pour vérifier et empaqueter un widget. `overcrow-widget --version` donne sa
|
|
51
|
+
version et celle du SDK qu’il embarque.
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
unzip overcrow-creator-tools-VERSION-linux-x86_64.zip
|
|
55
|
+
cd overcrow-creator-tools-VERSION-linux-x86_64
|
|
56
|
+
sha256sum --check SHA256SUMS
|
|
57
|
+
install -m 755 overcrow-widget-*-linux-x86_64 ~/.local/bin/overcrow-widget
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
L’outil se compile aussi avec Rust depuis le
|
|
61
|
+
[dépôt public](https://github.com/Valhallab/playervox-overcrow-releases) ;
|
|
62
|
+
le dépôt épingle la toolchain nécessaire. Le programme est alors
|
|
63
|
+
`target/dist/overcrow-widget`.
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
cargo build -p overcrow-widget-cli --profile dist --locked
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Les types du SDK
|
|
70
|
+
|
|
71
|
+
`check` vérifie les types de votre logique avec le TypeScript du projet, si
|
|
72
|
+
Node.js 22 ou plus récent et `node_modules/typescript` sont présents. Sinon,
|
|
73
|
+
il signale par un avertissement que les types n’ont pas été vérifiés
|
|
74
|
+
(`typecheck.skipped`) et continue. Le SDK lui-même est inclus dans l’outil :
|
|
75
|
+
l’empaquetage ne dépend donc jamais de `node_modules`.
|
|
76
|
+
|
|
77
|
+
`@overcrow/sdk` est sur [npm](https://www.npmjs.com/package/@overcrow/sdk).
|
|
78
|
+
Le `package.json` d’un projet créé par `init` nomme TypeScript et la version
|
|
79
|
+
du SDK que l’outil embarque : lancez `npm install` dans le projet. Dans un
|
|
80
|
+
autre projet, installez le SDK avec :
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
npm install --save-dev --save-exact @overcrow/sdk@1.0.0
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Gardez la version que l’outil embarque (`overcrow-widget --version`).
|
|
87
|
+
`overcrow-widget doctor` signale l’absence de TypeScript, ainsi qu’un SDK
|
|
88
|
+
dans `node_modules` dont la version diffère de celle que l’outil embarque.
|
|
89
|
+
|
|
90
|
+
## Fichiers d’un projet
|
|
91
|
+
|
|
92
|
+
| Fichier | Rôle | Empaqueté |
|
|
93
|
+
| --- | --- | --- |
|
|
94
|
+
| `manifest.json` | [Le manifeste](manifest.md), empaqueté tel quel. | oui |
|
|
95
|
+
| `view.ocml` | [La vue](view.md), compilée en `view.json`. | compilé |
|
|
96
|
+
| `style.ocss` | [Le style](style.md) ; facultatif. | oui |
|
|
97
|
+
| `logic.ts` ou `logic.js` | [La logique](logic.md), un seul module ; regroupée avec le SDK dans `logic.js`. | regroupé |
|
|
98
|
+
| `locales/en.json`, `locales/fr.json` | [Les messages](logic.md#messages) ; les deux fichiers ou aucun, avec les mêmes clés. | oui |
|
|
99
|
+
| `LICENSE` | Le texte de la licence du paquet. Les templates partent de la licence MIT ; choisissez la vôtre. | oui |
|
|
100
|
+
| `assets/` | Images PNG, JPEG ou WebP ; facultatif. | oui |
|
|
101
|
+
| `package.json`, `tsconfig.json` | Outillage uniquement : TypeScript et les types du SDK. | non |
|
|
102
|
+
| `listing.json` | Le texte de marketplace d’une [soumission](publishing.md#la-fiche) ; lu par `admit`. | non |
|
|
103
|
+
| `tests/` | Les [scénarios](testing.md#scénarios) (`tests/<name>.scenario.json`), leurs images de référence (`tests/reference/`) et vos tests unitaires. `tests/output/` contient les images des exécutions en échec. | non |
|
|
104
|
+
|
|
105
|
+
## init
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
overcrow-widget init my-widget --template list --id com.example.my-widget --name "My widget"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Écrit un nouveau projet dans le dossier, qui ne doit pas exister ou doit
|
|
112
|
+
être vide : `init` n’écrase jamais un fichier.
|
|
113
|
+
|
|
114
|
+
| Template | Montre |
|
|
115
|
+
| --- | --- |
|
|
116
|
+
| `blank` (par défaut) | Un titre tiré des messages et un état vide. |
|
|
117
|
+
| `counter` | Une valeur et deux boutons dont la logique exporte les gestionnaires. |
|
|
118
|
+
| `list` | Une liste de tâches à clés : `for`, gestionnaires avec arguments, `t()` avec paramètres. |
|
|
119
|
+
| `chart` | Un graphique en direct, mis à jour par un minuteur. |
|
|
120
|
+
|
|
121
|
+
Par défaut, l’ID vaut `com.example.<dir>`. Passez `--id` avec un ID en DNS
|
|
122
|
+
inversé, sous un domaine que vous contrôlez (`com.playervox.*` est réservé).
|
|
123
|
+
Chaque template est livré avec un scénario de test,
|
|
124
|
+
`tests/example.scenario.json` ; `counter`, `list` et `chart` fournissent
|
|
125
|
+
aussi ses images de référence.
|
|
126
|
+
|
|
127
|
+
## check
|
|
128
|
+
|
|
129
|
+
```sh
|
|
130
|
+
overcrow-widget check
|
|
131
|
+
overcrow-widget check --deny-warnings --format json
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Exécute toutes les vérifications, dans cet ordre, et n’écrit rien :
|
|
135
|
+
|
|
136
|
+
1. **Fichiers du projet** : les fichiers requis sont présents et respectent
|
|
137
|
+
leurs limites de taille, il y a un seul module de logique, et les deux
|
|
138
|
+
fichiers de langue ou aucun.
|
|
139
|
+
2. **Manifeste** : le validateur de manifeste d’OverCrow lui-même.
|
|
140
|
+
3. **Vue** : `view.ocml` est compilé et le résultat validé ; les images
|
|
141
|
+
statiques doivent exister dans `assets/`.
|
|
142
|
+
4. **Style** : `style.ocss` est analysé avec l’analyseur syntaxique
|
|
143
|
+
d’OverCrow.
|
|
144
|
+
5. **Fichiers de langue** : des objets de chaînes aux clés valides, avec les
|
|
145
|
+
mêmes clés dans les deux fichiers. Un `t("key")` de la vue dont la clé
|
|
146
|
+
n’a pas de message donne un avertissement.
|
|
147
|
+
6. **Logique** : son
|
|
148
|
+
[analyse statique](logic.md#ce-que-la-logique-ne-peut-pas-utiliser), et
|
|
149
|
+
les exports que la vue appelle.
|
|
150
|
+
7. **Types** : le `tsc --noEmit -p tsconfig.json` du projet.
|
|
151
|
+
8. **Paquet** : `logic.js` est construit, puis le paquet est écrit en
|
|
152
|
+
mémoire et relu exactement comme OverCrow le lira.
|
|
153
|
+
|
|
154
|
+
Options : `--no-typecheck`, `--deny-warnings` (un avertissement fait échouer
|
|
155
|
+
la commande), `--format json`.
|
|
156
|
+
|
|
157
|
+
## package
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
overcrow-widget package
|
|
161
|
+
overcrow-widget package --out build/my-widget.ocpkg
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Exécute `check`, puis écrit le paquet dans `dist/<id>-<version>.ocpkg`, ou
|
|
165
|
+
à l’emplacement donné par `--out`. La commande affiche le chemin, la taille
|
|
166
|
+
et le SHA-256 de l’archive.
|
|
167
|
+
|
|
168
|
+
L’empaquetage est déterministe : les mêmes sources et la même version de
|
|
169
|
+
l’outil donnent les mêmes octets à chaque exécution et sur tous les
|
|
170
|
+
systèmes. Le contenu du paquet est décrit dans [le paquet](package.md).
|
|
171
|
+
|
|
172
|
+
## inspect
|
|
173
|
+
|
|
174
|
+
```sh
|
|
175
|
+
overcrow-widget inspect dist/com.example.my-widget-0.1.0.ocpkg
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Valide un paquet comme le fait OverCrow, puis le montre tel qu’un relecteur
|
|
179
|
+
le voit : l’ID, la version et les noms ; la taille et le SHA-256 de
|
|
180
|
+
l’archive ; la version du SDK que contient son `logic.js` ; chaque
|
|
181
|
+
permission en toutes lettres (routes réseau avec les contraintes de leurs
|
|
182
|
+
paramètres et la limite de réponse déclarée, stockage, presse-papiers,
|
|
183
|
+
événements de jeu) ; chaque capability avec son résumé, en précisant si
|
|
184
|
+
elle est sensible ou demande un compte ; le nombre de lignes du menu ; et
|
|
185
|
+
chaque fichier avec sa taille et son SHA-256. Quand OverCrow refuserait le
|
|
186
|
+
paquet, la commande le signale à la place, avec la raison.
|
|
187
|
+
|
|
188
|
+
## dev
|
|
189
|
+
|
|
190
|
+
```sh
|
|
191
|
+
overcrow-widget dev
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Exécute le widget dans l’overlay OverCrow qui tourne sur votre machine,
|
|
195
|
+
pendant que vous le modifiez :
|
|
196
|
+
|
|
197
|
+
1. la commande se connecte à l’overlay, qui doit avoir été lancé avec les
|
|
198
|
+
installations de développement autorisées ;
|
|
199
|
+
2. elle construit le paquet comme le fait `package` et l’envoie à l’overlay,
|
|
200
|
+
qui le valide entièrement et l’affiche avec la mention
|
|
201
|
+
**Unverified · development package**, les permissions de son manifeste
|
|
202
|
+
étant accordées pour la session seulement ;
|
|
203
|
+
3. elle surveille les fichiers du projet et, 200 ms après la dernière
|
|
204
|
+
modification, reconstruit et recharge le widget. Une construction en
|
|
205
|
+
erreur n’est pas envoyée : le widget continue de s’exécuter avec sa
|
|
206
|
+
dernière construction valide ;
|
|
207
|
+
4. elle affiche ce que l’overlay rapporte : les états du widget (`starting`,
|
|
208
|
+
`running`, `restarting` avec l’échec, `failed`…) et les sorties `log.*`
|
|
209
|
+
de sa logique ;
|
|
210
|
+
5. sur **Ctrl+C**, elle retire le widget de l’overlay.
|
|
211
|
+
|
|
212
|
+
Options : `--no-typecheck`, `--format json` (un objet JSON par ligne).
|
|
213
|
+
Codes de sortie : 0 après Ctrl+C, 1 quand l’overlay met fin à la session,
|
|
214
|
+
2 quand aucun overlay n’est joignable.
|
|
215
|
+
[Le canal de développement](dev-channel.md) explique comment lancer OverCrow
|
|
216
|
+
pour cela, et ce que signifient chaque état et chaque refus.
|
|
217
|
+
|
|
218
|
+
## test
|
|
219
|
+
|
|
220
|
+
```sh
|
|
221
|
+
overcrow-widget test
|
|
222
|
+
overcrow-widget test --scenario example
|
|
223
|
+
overcrow-widget test --update
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Joue les scénarios de `tests/` dans le runtime headless d’OverCrow et
|
|
227
|
+
compare les images qu’il rend avec les références :
|
|
228
|
+
|
|
229
|
+
1. la commande construit le paquet comme le fait `package` ;
|
|
230
|
+
2. elle lit chaque `tests/<name>.scenario.json` et le vérifie par rapport au
|
|
231
|
+
manifeste avant toute exécution ; une erreur dans un scénario donne un
|
|
232
|
+
diagnostic `test.scenario` dans son fichier ;
|
|
233
|
+
3. elle exécute chaque scénario dans le [runtime headless](testing.md#le-runtime-headless)
|
|
234
|
+
que l’outil épingle, ou celui donné par `--runtime`, et affiche la
|
|
235
|
+
version et le SHA-256 de ce runtime. La première fois, elle télécharge
|
|
236
|
+
le runtime épinglé ;
|
|
237
|
+
4. elle compare chaque image capturée avec
|
|
238
|
+
`tests/reference/<name>/<image>.png`. Une différence, un changement de
|
|
239
|
+
taille ou une référence manquante fait échouer le scénario et écrit
|
|
240
|
+
`tests/output/<name>/<image>.actual.png` et, pour une différence,
|
|
241
|
+
`<image>.diff.png`.
|
|
242
|
+
|
|
243
|
+
Options : `--runtime <path>` (un autre programme `overcrow-widget-headless`),
|
|
244
|
+
`--offline` (ne jamais télécharger le runtime), `--scenario <name>` (ce scénario seulement), `--update` (enregistre les
|
|
245
|
+
images capturées comme références : examinez-les avant de les commiter),
|
|
246
|
+
`--format json`, `--no-typecheck`.
|
|
247
|
+
|
|
248
|
+
Codes de sortie : 0 quand tous les scénarios ont réussi, 1 quand l’un d’eux
|
|
249
|
+
a échoué, 2 quand aucun runtime ne peut s’exécuter. Les scénarios sont
|
|
250
|
+
décrits dans [tester un widget](testing.md).
|
|
251
|
+
|
|
252
|
+
## doctor
|
|
253
|
+
|
|
254
|
+
```sh
|
|
255
|
+
overcrow-widget doctor
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
| Ligne | Ce qui est vérifié |
|
|
259
|
+
| --- | --- |
|
|
260
|
+
| `cli`, `sdk` | La version de l’outil, son API de widgets et le `@overcrow/sdk` qu’il embarque. |
|
|
261
|
+
| `platform` | Le système d’exploitation et l’architecture. |
|
|
262
|
+
| `overcrow` | Un OverCrow installé. |
|
|
263
|
+
| `development` | Un overlay en cours d’exécution qui autorise les installations de développement, et sa version. |
|
|
264
|
+
| `node`, `typescript`, `project sdk` | Dans un projet de widget : Node.js dans le `PATH`, `node_modules/typescript` et la version de `node_modules/@overcrow/sdk`. |
|
|
265
|
+
|
|
266
|
+
| Code | Sévérité | Signification |
|
|
267
|
+
| --- | --- | --- |
|
|
268
|
+
| `doctor.overcrow_missing` | avertissement | OverCrow n’est pas installé. |
|
|
269
|
+
| `doctor.development_off` | avertissement | Aucun overlay n’autorise les installations de développement ; l’aide donne les commandes pour relancer OverCrow en les autorisant. |
|
|
270
|
+
| `doctor.channel_busy` | avertissement | L’overlay sert déjà son nombre maximal de sessions `dev`. |
|
|
271
|
+
| `doctor.channel_io` | avertissement | La connexion à l’overlay a échoué. |
|
|
272
|
+
| `doctor.channel_untrusted` | erreur | Ce qui répond n’est pas l’overlay de cet utilisateur. |
|
|
273
|
+
| `doctor.protocol_version` | erreur | L’overlay et l’outil ne parlent pas la même version du canal de développement. |
|
|
274
|
+
| `doctor.node_missing`, `doctor.node_version` | avertissement | Pas de Node.js, ou une version antérieure à la 22 : `check` ne peut pas vérifier les types. |
|
|
275
|
+
| `doctor.typescript_missing`, `doctor.sdk_missing` | avertissement | TypeScript ou les types du SDK ne sont pas installés dans le projet. |
|
|
276
|
+
| `doctor.sdk_version` | avertissement | `node_modules/@overcrow/sdk` diffère du SDK de l’outil. |
|
|
277
|
+
|
|
278
|
+
Options : `--format json`, `--deny-warnings`.
|
|
279
|
+
|
|
280
|
+
## admit
|
|
281
|
+
|
|
282
|
+
```sh
|
|
283
|
+
overcrow-widget admit
|
|
284
|
+
overcrow-widget admit --package dist/com.example.my-widget-0.1.0.ocpkg
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Exécute l’admission statique par laquelle passe une soumission à la
|
|
288
|
+
marketplace, exactement comme la marketplace l’exécute. La commande
|
|
289
|
+
n’exécute jamais votre code ni `tsc` :
|
|
290
|
+
|
|
291
|
+
1. le dossier est construit comme `package` le construit ;
|
|
292
|
+
2. avec `--package`, la vue compilée de cette archive doit être, à l’octet
|
|
293
|
+
près, ce que donne la compilation de `view.ocml` ;
|
|
294
|
+
3. l’ID n’est pas réservé, `listing.json` est valide, son aperçu est un PNG
|
|
295
|
+
empaqueté d’au plus 256 Kio ;
|
|
296
|
+
4. les pouvoirs que le widget demande sont listés pour le relecteur :
|
|
297
|
+
capabilities (les sensibles sont signalées), routes réseau avec leur
|
|
298
|
+
limite de réponse, écritures dans le presse-papiers, stockage et
|
|
299
|
+
événements de jeu.
|
|
300
|
+
|
|
301
|
+
| Code | Sévérité | Signification |
|
|
302
|
+
| --- | --- | --- |
|
|
303
|
+
| `admission.reserved_id` | erreur | Un ID `com.playervox.*`, réservé à PlayerVox. |
|
|
304
|
+
| `admission.listing_missing`, `admission.listing` | erreur | Pas de `listing.json`, ou un fichier qui enfreint les règles de la fiche. |
|
|
305
|
+
| `admission.preview` | erreur | `preview` ne désigne pas un PNG empaqueté dans les limites. |
|
|
306
|
+
| `admission.license` | erreur | Un widget PlayerVox dont la licence n’est pas MIT. |
|
|
307
|
+
| `admission.view_not_reproducible` | erreur | La vue compilée soumise diffère de ce que donne la compilation de `view.ocml`. |
|
|
308
|
+
| `admission.package_rebuilt` | avertissement | L’archive soumise diffère de la reconstruction dans d’autres fichiers. |
|
|
309
|
+
| `admission.not_rebuilt` | avertissement | Une archive a été admise sans ses sources. |
|
|
310
|
+
|
|
311
|
+
Options : `--package FILE`, `--out DIR` (écrit le paquet admis, sa fiche et
|
|
312
|
+
un rapport dans un dossier vide), `--format json`, `--deny-warnings`.
|
|
313
|
+
`admit <file.ocpkg> --listing FILE` vérifie une archive sans ses sources.
|
|
314
|
+
Codes de sortie : 0 admis, 1 refusé, 2 pour une erreur d’utilisation ou de
|
|
315
|
+
fichier. Voir [publication et revue](publishing.md).
|
|
316
|
+
|
|
317
|
+
## Diagnostics
|
|
318
|
+
|
|
319
|
+
Chaque problème est un diagnostic, avec un code stable, une position et,
|
|
320
|
+
quand il y en a une, une suggestion :
|
|
321
|
+
|
|
322
|
+
```text
|
|
323
|
+
error[view.unknown_attribute]: `clas` is not an attribute of <text>
|
|
324
|
+
--> view.ocml:4:9
|
|
325
|
+
|
|
|
326
|
+
4 | <text clas="value">{state.count}</text>
|
|
327
|
+
| ^
|
|
328
|
+
= help: did you mean `class`?
|
|
329
|
+
check: 1 error(s), 0 warning(s)
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Le code a la forme `<domain>.<category>` :
|
|
333
|
+
|
|
334
|
+
| Domaine | Origine | Codes |
|
|
335
|
+
| --- | --- | --- |
|
|
336
|
+
| `project` | Les fichiers du projet | `missing_file`, `file_size`, `encoding`, `ambiguous_logic`, `asset_path`, `entry_limit`, `read` |
|
|
337
|
+
| `manifest` | `manifest.json` | voir [le manifeste](manifest.md#comment-le-manifeste-est-vérifié) |
|
|
338
|
+
| `view` | `view.ocml` | voir [la vue](view.md#quand-la-vue-est-incorrecte) |
|
|
339
|
+
| `style` | `style.ocss` | voir [le style](style.md#quand-le-style-est-incorrect) |
|
|
340
|
+
| `locales` | `locales/*.json` | `missing_file`, `json`, `shape`, `key`, `value`, `keys`, `entry_limit`, `unknown_key` |
|
|
341
|
+
| `logic` | `logic.ts` | voir [la logique](logic.md#ce-que-la-logique-ne-peut-pas-utiliser) |
|
|
342
|
+
| `typecheck` | TypeScript | `tsc` (le message de TypeScript lui-même), `skipped`, `sdk_version`, `timeout` |
|
|
343
|
+
| `package` | Le paquet relu | `archive_size`, `file_size` et les catégories du lecteur de paquets d’OverCrow |
|
|
344
|
+
| `test` | Les scénarios | `scenario`, `scenario_name`, `too_many_scenarios` |
|
|
345
|
+
| `init`, `doctor`, `admission` | Ces commandes | listés ci-dessus |
|
|
346
|
+
|
|
347
|
+
- Les lignes et les colonnes commencent à 1 ; une colonne compte des
|
|
348
|
+
caractères, pas des octets.
|
|
349
|
+
- Un nom inconnu est accompagné du nom existant le plus proche.
|
|
350
|
+
- Avec `--format json`, chaque diagnostic est un objet JSON sur une ligne de
|
|
351
|
+
la sortie standard :
|
|
352
|
+
`{"severity","code","file","line","column","message","help"}`, avec
|
|
353
|
+
`null` pour ce qui est inconnu. `package --format json` se termine par un
|
|
354
|
+
objet `{"package","bytes","sha256","logicBytes"}`.
|
|
355
|
+
- Les textes qui viennent d’un widget (ses journaux, ses noms) sont affichés
|
|
356
|
+
avec les caractères de contrôle du terminal neutralisés.
|
|
357
|
+
|
|
358
|
+
Dans vos scripts, appuyez-vous sur les codes : les messages et les textes
|
|
359
|
+
d’aide peuvent être reformulés.
|
|
360
|
+
|
|
361
|
+
## Codes de sortie
|
|
362
|
+
|
|
363
|
+
| Code | Signification |
|
|
364
|
+
| --- | --- |
|
|
365
|
+
| 0 | Succès. Les avertissements sont admis, sauf avec `--deny-warnings`. |
|
|
366
|
+
| 1 | Des erreurs ont été trouvées ; `admit` a refusé la soumission ; un scénario de `test` a échoué ; l’overlay a mis fin à une session `dev`. |
|
|
367
|
+
| 2 | Une erreur d’utilisation ou de fichier ; pas d’overlay pour `dev` ; pas de runtime pour `test`. |
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Le canal de développement
|
|
2
|
+
|
|
3
|
+
`overcrow-widget dev` affiche votre widget dans l’overlay PlayerVox OverCrow
|
|
4
|
+
qui tourne sur votre machine, par-dessus votre jeu, et le recharge chaque
|
|
5
|
+
fois que vous enregistrez un fichier. La commande joint l’overlay par le
|
|
6
|
+
**canal de développement**, qu’OverCrow n’ouvre que si vous le demandez.
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
overcrow-widget doctor
|
|
10
|
+
overcrow-widget dev
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`doctor` indique si un overlay en cours d’exécution propose le canal ; `dev`
|
|
14
|
+
construit ensuite le widget, l’envoie et reste au premier plan jusqu’à
|
|
15
|
+
Ctrl+C.
|
|
16
|
+
|
|
17
|
+
## L’activer
|
|
18
|
+
|
|
19
|
+
Le canal n’existe que tant qu’OverCrow s’exécute avec les installations de
|
|
20
|
+
développement autorisées, c’est-à-dire lancé avec la variable
|
|
21
|
+
d’environnement `OVERCROW_WIDGET_DEVELOPMENT=1`. Sans elle, l’overlay
|
|
22
|
+
n’ouvre rien.
|
|
23
|
+
|
|
24
|
+
**Linux.** Définissez la variable pour les services de votre session, puis
|
|
25
|
+
redémarrez l’overlay :
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
systemctl --user set-environment OVERCROW_WIDGET_DEVELOPMENT=1
|
|
29
|
+
systemctl --user restart overcrow-overlay.service
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Pour désactiver le canal, supprimez la variable et redémarrez de nouveau
|
|
33
|
+
(ou fermez votre session) :
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
systemctl --user unset-environment OVERCROW_WIDGET_DEVELOPMENT
|
|
37
|
+
systemctl --user restart overcrow-overlay.service
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Windows.** Quittez OverCrow depuis son icône de la zone de notification,
|
|
41
|
+
puis lancez-le depuis PowerShell :
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
$env:OVERCROW_WIDGET_DEVELOPMENT='1'; & "$env:LOCALAPPDATA\Programs\OverCrow\OverCrow.exe"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`overcrow-widget doctor` affiche ces commandes quand il trouve un overlay
|
|
48
|
+
sans le canal (`doctor.development_off`).
|
|
49
|
+
|
|
50
|
+
## Ce qu’est un widget de développement
|
|
51
|
+
|
|
52
|
+
L’overlay traite ce que `dev` envoie comme un **paquet de développement** :
|
|
53
|
+
|
|
54
|
+
- il est validé entièrement, exactement comme un paquet installé, et
|
|
55
|
+
s’exécute dans le même sandbox : rien de ce qui passe par le canal
|
|
56
|
+
n’échappe à une vérification ;
|
|
57
|
+
- il porte la mention **Unverified · development package** dans les deux
|
|
58
|
+
modes : on ne peut donc pas le prendre pour un widget du catalogue ;
|
|
59
|
+
- les permissions que son manifeste déclare sont accordées pour la session
|
|
60
|
+
seulement ;
|
|
61
|
+
- rien de lui n’est conservé : son stockage dure le temps de la session, et
|
|
62
|
+
il ne lit ni n’écrit jamais les données d’un widget installé ;
|
|
63
|
+
- il prend la place d’un widget installé de même ID pendant la session, et
|
|
64
|
+
le widget installé revient quand il est retiré ;
|
|
65
|
+
- les ID sous `com.playervox.` sont refusés.
|
|
66
|
+
|
|
67
|
+
Quand `dev` se termine, quelle qu’en soit la raison, l’overlay retire le
|
|
68
|
+
widget.
|
|
69
|
+
|
|
70
|
+
## Ce qu’affiche `dev`
|
|
71
|
+
|
|
72
|
+
À chaque enregistrement, `dev` reconstruit le paquet et affiche les mêmes
|
|
73
|
+
diagnostics que `check`. Une construction en erreur n’est pas envoyée : le
|
|
74
|
+
widget continue de s’exécuter avec sa dernière construction valide. Viennent
|
|
75
|
+
ensuite les rapports de l’overlay.
|
|
76
|
+
|
|
77
|
+
**États** du widget :
|
|
78
|
+
|
|
79
|
+
| État | Signification |
|
|
80
|
+
| --- | --- |
|
|
81
|
+
| `starting` | L’overlay démarre le processus du widget. |
|
|
82
|
+
| `running` | Le widget s’exécute. |
|
|
83
|
+
| `restarting` | Il a échoué et redémarre ; l’échec est affiché. |
|
|
84
|
+
| `failed` | Il a échoué trop souvent : il attend votre prochain enregistrement. |
|
|
85
|
+
| `refused` | L’overlay a refusé de le démarrer. |
|
|
86
|
+
| `stopped` | Il a été arrêté. |
|
|
87
|
+
|
|
88
|
+
**Échecs** qui accompagnent `restarting` et `failed` :
|
|
89
|
+
|
|
90
|
+
<!-- generated:failure-categories -->
|
|
91
|
+
| Catégorie | Relancé | Signification |
|
|
92
|
+
| --- | --- | --- |
|
|
93
|
+
| `invalid_bundle` | non | Paquet, registre ou contenu compilé refusé. |
|
|
94
|
+
| `permission_denied` | non | Ce que le widget déclare, ce que l’utilisateur a accordé et ce qui est demandé ne concordent pas. |
|
|
95
|
+
| `protocol_violation` | non | Ce que le widget a envoyé à l’hôte est mal formé, inconnu ou dans le désordre. |
|
|
96
|
+
| `resource_limit` | oui | Un plafond de mémoire, de CPU, de file, de débit ou de taille a été dépassé. |
|
|
97
|
+
| `unresponsive` | oui | Le widget n’a pas démarré ou répondu dans le délai, ou a dépassé le budget de temps d’un tour. |
|
|
98
|
+
| `vm_exited` | oui | Le processus du widget s’est terminé sans signaler de faute (tué par le sandbox, mémoire épuisée). |
|
|
99
|
+
<!-- /generated:failure-categories -->
|
|
100
|
+
|
|
101
|
+
**Journaux** : chaque `log.debug`, `log.info`, `log.warn` et `log.error` de
|
|
102
|
+
la logique, avec son niveau. Une ligne de journal est coupée à
|
|
103
|
+
512 caractères. Les caractères de contrôle, les séquences d’échappement du
|
|
104
|
+
terminal et les contrôles bidirectionnels sont affichés échappés
|
|
105
|
+
(`\u{1b}`), jamais interprétés : le texte d’un widget ne peut pas prendre le
|
|
106
|
+
contrôle de votre terminal.
|
|
107
|
+
|
|
108
|
+
Avec `--format json`, chacun de ces éléments est un objet JSON par ligne :
|
|
109
|
+
les diagnostics, `{"type":"built",…}` à chaque construction, puis les
|
|
110
|
+
messages de l’overlay (`state`, `log`, `event`…) au fil de leur arrivée.
|
|
111
|
+
|
|
112
|
+
## Quand la connexion échoue
|
|
113
|
+
|
|
114
|
+
| Ce que vous voyez | Cause |
|
|
115
|
+
| --- | --- |
|
|
116
|
+
| `doctor.development_off` | Aucun overlay en cours d’exécution n’autorise les installations de développement : [activez le canal](#lactiver). |
|
|
117
|
+
| `doctor.overcrow_missing` | OverCrow n’est pas installé. |
|
|
118
|
+
| `doctor.channel_busy`, `too_many_sessions` | Quatre sessions `dev` sont déjà connectées à cet overlay. |
|
|
119
|
+
| `doctor.protocol_version`, `unsupported_protocol` | L’overlay et l’outil ne parlent pas la même version du canal : mettez à jour le plus ancien des deux. |
|
|
120
|
+
| `doctor.channel_untrusted` | Ce qui répond à l’adresse du canal n’est pas votre propre overlay. |
|
|
121
|
+
| `busy` | Une autre installation ou un autre retrait est en cours : `dev` réessaie. |
|
|
122
|
+
| `conflict` | Une autre session `dev` a installé un widget avec cet ID. |
|
|
123
|
+
| `invalid_bundle` | La validation de l’overlay a refusé le paquet ; un ID réservé `com.playervox.*` en est une cause. |
|
|
124
|
+
| `development_disabled` | L’overlay n’autorise plus les installations de développement. |
|
|
125
|
+
| `unavailable` | L’overlay n’a pas pu démarrer son runtime de widgets, ou n’a pas répondu dans les 30 secondes. |
|
|
126
|
+
| `rate_limited` | Plus de 10 requêtes par seconde : les enregistrements arrivent plus vite que l’overlay ne les accepte. |
|
|
127
|
+
|
|
128
|
+
## Qui peut utiliser le canal
|
|
129
|
+
|
|
130
|
+
Seuls les programmes qui s’exécutent en tant que **votre propre
|
|
131
|
+
utilisateur**, sur la même machine. Le canal est un socket local (Linux) ou
|
|
132
|
+
un tube nommé (Windows) que les autres utilisateurs, les autres machines et
|
|
133
|
+
les programmes en sandbox ne peuvent pas ouvrir, et chaque extrémité vérifie
|
|
134
|
+
l’autre avant qu’une session ne commence. Les widgets ne peuvent pas
|
|
135
|
+
l’utiliser : leur sandbox n’y a pas accès.
|
|
136
|
+
|
|
137
|
+
C’est pourquoi le canal est désactivé par défaut. Une fois activé, tout
|
|
138
|
+
programme que vous lancez peut afficher un widget non vérifié dans votre
|
|
139
|
+
overlay, aussi longtemps qu’OverCrow s’exécute. Désactivez-le quand vous
|
|
140
|
+
avez terminé.
|