@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,139 @@
|
|
|
1
|
+
# Le paquet
|
|
2
|
+
|
|
3
|
+
Un widget PlayerVox OverCrow est distribué en un seul fichier,
|
|
4
|
+
`<id>-<version>.ocpkg` : une archive qui réunit le manifeste, la vue
|
|
5
|
+
compilée, le style, un script, les messages, les images et la licence.
|
|
6
|
+
`overcrow-widget package` la construit, et OverCrow la lit avec le code
|
|
7
|
+
même qui l’a construite.
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
overcrow-widget package
|
|
11
|
+
overcrow-widget inspect dist/com.example.my-widget-0.1.0.ocpkg
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`package` vérifie le projet, écrit l’archive dans `dist/` et affiche sa
|
|
15
|
+
taille et son SHA-256. `inspect` montre ce qu’un paquet contient et ce
|
|
16
|
+
qu’il demande, tel que le voit un relecteur.
|
|
17
|
+
|
|
18
|
+
## Ce qu’il contient
|
|
19
|
+
|
|
20
|
+
<!-- generated:package-files -->
|
|
21
|
+
| Chemin | Obligatoire | Limite | Signification |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| `manifest.json` | oui | 64 Kio | Le manifeste, tel qu’il a été écrit. |
|
|
24
|
+
| `ledger.json` | oui | 64 Kio | Registre canonique du SHA-256 et de la taille de chaque autre entrée, écrit par la CLI. |
|
|
25
|
+
| `logic.js` | oui | 512 Kio | Le seul contenu exécutable : un script ES2023 sans import, expressions compilées de la vue comprises. UTF-8, non vide. |
|
|
26
|
+
| `view.json` | oui | 512 Kio | La vue compilée. Le source `view.ocml` n’est pas embarqué. |
|
|
27
|
+
| `style.ocss` | non | 128 Kio | Source de la feuille de style, analysée par l’hôte au démarrage du widget. UTF-8. |
|
|
28
|
+
| `locales/en.json` | non | 256 Kio | Messages en anglais ; présent si et seulement si `locales/fr.json` l’est, avec les mêmes clés. |
|
|
29
|
+
| `locales/fr.json` | non | 256 Kio | Messages en français. |
|
|
30
|
+
| `LICENSE` | oui | 64 Kio | Texte de la licence du paquet. UTF-8, non vide. |
|
|
31
|
+
| `assets/<path>.{png,jpg,jpeg,webp}` | non | 2 Mio | Images dont la signature correspond à l’extension ; segments en minuscules `[a-z0-9_-]`, au plus 4 sous `assets/`. |
|
|
32
|
+
<!-- /generated:package-files -->
|
|
33
|
+
|
|
34
|
+
Toute autre entrée fait refuser le paquet : un second script, un fichier
|
|
35
|
+
HTML, un module WebAssembly, du code natif, un fichier caché, une autre
|
|
36
|
+
langue. Les fichiers texte sont en UTF-8, sans marque d’ordre d’octets.
|
|
37
|
+
|
|
38
|
+
Tout ce que vous écrivez n’est pas empaqueté tel quel :
|
|
39
|
+
|
|
40
|
+
| Dans le projet | Dans le paquet |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `manifest.json` | les mêmes octets |
|
|
43
|
+
| `view.ocml` | `view.json`, la vue compilée ; le fichier source n’est pas livré |
|
|
44
|
+
| `logic.ts` ou `logic.js` | `logic.js` : votre module, le SDK et les expressions compilées de la vue, en un seul script |
|
|
45
|
+
| `style.ocss`, `locales/`, `assets/`, `LICENSE` | les mêmes octets |
|
|
46
|
+
| `package.json`, `tsconfig.json`, `node_modules/`, `listing.json`, `tests/` | non empaquetés |
|
|
47
|
+
|
|
48
|
+
Les images sont des fichiers PNG, JPEG ou WebP placés sous `assets/`, à des
|
|
49
|
+
chemins en minuscules, et le contenu de chaque fichier doit correspondre à
|
|
50
|
+
son extension. La vue en désigne une par `src="assets/logo.png"`, et
|
|
51
|
+
l’aperçu (`preview`) d’une [fiche](publishing.md#la-fiche) est l’une de ces
|
|
52
|
+
images empaquetées.
|
|
53
|
+
|
|
54
|
+
## Le script
|
|
55
|
+
|
|
56
|
+
`logic.js` est le seul contenu exécutable d’un paquet. L’outil le construit
|
|
57
|
+
à partir de votre module de logique, du SDK qu’il embarque et d’une
|
|
58
|
+
fonction par expression et par gestionnaire de la vue, puis retire ce qui
|
|
59
|
+
ne sert pas et raccourcit les noms locaux. Deux conséquences :
|
|
60
|
+
|
|
61
|
+
- le SDK de votre `node_modules` ne sert qu’à la vérification des types :
|
|
62
|
+
celui qui s’exécute est celui de l’outil, et `inspect` affiche sa
|
|
63
|
+
version ;
|
|
64
|
+
- la vue elle-même ne contient aucun code : `view.json` désigne les
|
|
65
|
+
fonctions de `logic.js` par leur numéro.
|
|
66
|
+
|
|
67
|
+
Un paquet contient des sources qu’OverCrow peut lire et vérifier, jamais de
|
|
68
|
+
bytecode compilé.
|
|
69
|
+
|
|
70
|
+
## Les mêmes octets à chaque fois
|
|
71
|
+
|
|
72
|
+
L’empaquetage est déterministe : les mêmes sources et la même version de
|
|
73
|
+
l’outil donnent la même archive, octet pour octet, à chaque exécution et
|
|
74
|
+
sur chaque système. C’est ce qui permet à un relecteur de reconstruire
|
|
75
|
+
votre paquet à partir des sources que vous soumettez, puis de comparer.
|
|
76
|
+
C’est aussi ce qui permet au catalogue de désigner un paquet par son
|
|
77
|
+
SHA-256.
|
|
78
|
+
|
|
79
|
+
Pour cela, l’archive n’admet qu’une seule structure, exacte : un zip non
|
|
80
|
+
compressé, aux entrées triées, aux dates fixes et sans champ
|
|
81
|
+
supplémentaire. Écrivez-la avec `overcrow-widget package` ; une archive
|
|
82
|
+
produite par un autre outil zip est refusée.
|
|
83
|
+
|
|
84
|
+
## Le registre
|
|
85
|
+
|
|
86
|
+
`ledger.json`, écrit par l’outil, liste tous les autres fichiers avec leur
|
|
87
|
+
taille et leur SHA-256. OverCrow le recalcule à partir de l’archive et
|
|
88
|
+
exige les mêmes octets. C’est lui qui lie chaque fichier au paquet : un
|
|
89
|
+
fichier modifié, ajouté ou retiré après l’empaquetage ne correspond plus.
|
|
90
|
+
|
|
91
|
+
## Comment OverCrow vérifie un paquet
|
|
92
|
+
|
|
93
|
+
OverCrow valide un paquet en entier lors de son admission au catalogue,
|
|
94
|
+
lors de son installation, puis **à chaque démarrage du widget** :
|
|
95
|
+
|
|
96
|
+
1. la taille de l’archive, sa structure exacte et la somme de contrôle de
|
|
97
|
+
chaque entrée ;
|
|
98
|
+
2. chaque chemin, comparé à la liste de fichiers ci-dessus et à leurs
|
|
99
|
+
limites de taille, ainsi que la présence des fichiers obligatoires ;
|
|
100
|
+
3. le registre, octet pour octet ;
|
|
101
|
+
4. le manifeste, le script, le style, la paire de langues, la licence,
|
|
102
|
+
chaque image et la vue compilée : des éléments connus à des emplacements
|
|
103
|
+
autorisés, des attributs connus dont les valeurs ont le bon type, des
|
|
104
|
+
événements propres à leur élément, des composants utilisés comme ils
|
|
105
|
+
sont déclarés, les limites de la vue, et la présence dans le paquet de
|
|
106
|
+
chaque image statique.
|
|
107
|
+
|
|
108
|
+
Pour un paquet du catalogue, la taille et le SHA-256 de l’archive doivent
|
|
109
|
+
d’abord être ceux qu’indique le catalogue signé, et le manifeste doit être
|
|
110
|
+
identique à celui que liste le catalogue. Un widget dont le paquet échoue à
|
|
111
|
+
l’une de ces vérifications ne démarre pas. `overcrow-widget check` et
|
|
112
|
+
`package` exécutent les mêmes vérifications : vous voyez donc un problème
|
|
113
|
+
avant qu’un utilisateur ne le rencontre.
|
|
114
|
+
|
|
115
|
+
## Installé depuis le catalogue, ou localement
|
|
116
|
+
|
|
117
|
+
- Un paquet **issu du catalogue signé** est vérifié : c’est ainsi que les
|
|
118
|
+
utilisateurs obtiennent les widgets. Voir
|
|
119
|
+
[publication et revue](publishing.md).
|
|
120
|
+
- Un paquet envoyé par `overcrow-widget dev` est un **paquet de
|
|
121
|
+
développement** : marqué « Unverified », pour la durée de la session
|
|
122
|
+
seulement. Voir [le canal de développement](dev-channel.md).
|
|
123
|
+
|
|
124
|
+
Un paquet qui ne vient pas du catalogue ne peut pas utiliser un ID sous
|
|
125
|
+
`com.playervox`.
|
|
126
|
+
|
|
127
|
+
## Limites d’un paquet
|
|
128
|
+
|
|
129
|
+
Les tailles de chaque fichier et de l’archive figurent dans les
|
|
130
|
+
[limites](limits.md#fichiers-du-projet-et-paquet). Quand un paquet dépasse
|
|
131
|
+
une limite, `check` indique laquelle :
|
|
132
|
+
|
|
133
|
+
| Code | Problème |
|
|
134
|
+
| --- | --- |
|
|
135
|
+
| `project.file_size` | Un fichier source dépasse sa limite. |
|
|
136
|
+
| `project.entry_limit` | Le projet compte plus de fichiers qu’un paquet ne peut en contenir. |
|
|
137
|
+
| `project.asset_path` | Le chemin d’une image n’est pas en minuscules, est trop profond ou porte une autre extension. |
|
|
138
|
+
| `package.file_size` | Un fichier construit (`logic.js`, `view.json`) dépasse sa limite. |
|
|
139
|
+
| `package.archive_size` | L’archive dépasse 16 Mio. |
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Publication et revue
|
|
2
|
+
|
|
3
|
+
Les widgets atteignent les utilisateurs de PlayerVox OverCrow par le
|
|
4
|
+
catalogue signé des widgets : OverCrow n’installe que ce que liste ce
|
|
5
|
+
catalogue. Cette page va du dossier de sources d’un widget à une version
|
|
6
|
+
listée. Ni une pull request ni une fusion ne publient quoi que ce soit : la
|
|
7
|
+
publication est une étape distincte des mainteneurs, hors de la CI.
|
|
8
|
+
|
|
9
|
+
## La soumission
|
|
10
|
+
|
|
11
|
+
Une soumission est le dossier de sources d’un widget, placé sous
|
|
12
|
+
`widgets/<dir>/` du
|
|
13
|
+
[dépôt public](https://github.com/Valhallab/playervox-overcrow-releases),
|
|
14
|
+
dans une pull request vers sa branche `candidate` :
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
widgets/<dir>/
|
|
18
|
+
manifest.json view.ocml style.ocss? logic.ts | logic.js
|
|
19
|
+
locales/en.json + locales/fr.json? assets/**? LICENSE
|
|
20
|
+
listing.json (marketplace text, never packaged)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Vous soumettez des sources, pas un paquet : le catalogue livre toujours le
|
|
24
|
+
paquet reconstruit à partir des sources relues.
|
|
25
|
+
|
|
26
|
+
Les IDs de paquet sous `com.playervox` sont réservés aux widgets publiés
|
|
27
|
+
par PlayerVox. Utilisez un ID en DNS inversé sous un domaine que vous
|
|
28
|
+
contrôlez, et gardez-le : l’ID est l’identité du widget dans le catalogue.
|
|
29
|
+
|
|
30
|
+
## La fiche
|
|
31
|
+
|
|
32
|
+
`listing.json` contient ce qu’affiche la marketplace :
|
|
33
|
+
|
|
34
|
+
<!-- source: docs/content/examples/weather/listing.json -->
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"author": "Example Studio",
|
|
38
|
+
"spdxLicense": "MIT",
|
|
39
|
+
"sourceUrl": "https://github.com/example/weather-widget",
|
|
40
|
+
"defaultLocale": "en",
|
|
41
|
+
"localizations": [
|
|
42
|
+
{ "locale": "en", "name": "Weather", "description": "The temperature of a city, refreshed every 30 minutes." },
|
|
43
|
+
{ "locale": "fr", "name": "Météo", "description": "La température d’une ville, actualisée toutes les 30 minutes." }
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
<!-- generated:listing-fields -->
|
|
49
|
+
| Champ | Type | Obligatoire | Signification |
|
|
50
|
+
| --- | --- | --- | --- |
|
|
51
|
+
| `author` | texte ≤ 128 octets | oui | Texte brut, sans espaces en début ni en fin, sans `<` ni `>`. |
|
|
52
|
+
| `spdxLicense` | texte ≤ 64 octets | oui | Expression SPDX, faite des caractères `[A-Za-z0-9.+-]`. |
|
|
53
|
+
| `sourceUrl` | texte ≤ 2 Kio | oui | URL HTTPS canonique des sources relues, sans port, requête ni fragment. |
|
|
54
|
+
| `defaultLocale` | `locale` | oui | L’une des localisations. |
|
|
55
|
+
| `localizations` | liste de `Localization` ≤ 16 | oui | `{ locale, name, description }` avec des locales distinctes de la forme `xx` ou `xx-YY` ; nom ≤ 128 octets, description ≤ 512 octets. |
|
|
56
|
+
<!-- /generated:listing-fields -->
|
|
57
|
+
|
|
58
|
+
- `author`, les noms et les descriptions sont du texte brut, sans espace au
|
|
59
|
+
début ni à la fin, sans `<` ni `>` ; les langues sont de la forme `xx` ou
|
|
60
|
+
`xx-YY`, l’une d’elles étant `defaultLocale`.
|
|
61
|
+
- `spdxLicense` est une expression SPDX ; le `LICENSE` du paquet en
|
|
62
|
+
contient le texte. Les widgets PlayerVox sont sous MIT. La politique pour
|
|
63
|
+
les licences des tiers n’est pas encore arrêtée : une expression valide
|
|
64
|
+
est relue, pas approuvée par les métadonnées
|
|
65
|
+
([licences](../../../LICENSING.md)).
|
|
66
|
+
- `sourceUrl` est une URL HTTPS canonique des sources relues, sans port,
|
|
67
|
+
requête ni fragment.
|
|
68
|
+
- `preview` (facultatif) désigne un PNG empaqueté sous `assets/`, de
|
|
69
|
+
256 Kio au plus, par exemple `"preview": "assets/preview.png"`. Le
|
|
70
|
+
Centre de contrôle et la marketplace le montrent entier dans un cadre
|
|
71
|
+
4:3, centré sur la couleur `#1e242e`, à 1,5 pixel par point d’écran au
|
|
72
|
+
plus : rendez le widget à 150 % (`"scale": 1500` dans un scénario) et
|
|
73
|
+
donnez à l’image un format 4:3, il apparaît à sa taille réelle, jamais
|
|
74
|
+
recadré ni agrandi.
|
|
75
|
+
|
|
76
|
+
## L’admission : lancez-la vous-même
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
overcrow-widget admit widgets/<dir>
|
|
80
|
+
overcrow-widget admit widgets/<dir> --package dist/<id>-<version>.ocpkg
|
|
81
|
+
overcrow-widget admit widgets/<dir> --format json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`admit` est exactement l’admission statique de la marketplace. Elle
|
|
85
|
+
n’exécute jamais votre code ni `tsc` :
|
|
86
|
+
|
|
87
|
+
1. elle construit le dossier comme le fait `package` : toutes les
|
|
88
|
+
vérifications des sources, du style, de la logique et du paquet, puis le
|
|
89
|
+
lecteur de paquets d’OverCrow lui-même ;
|
|
90
|
+
2. avec `--package`, la vue compilée de votre archive doit être, octet pour
|
|
91
|
+
octet, le résultat de la compilation de `view.ocml` ;
|
|
92
|
+
3. elle vérifie les limites du schéma, les IDs réservés, `listing.json`,
|
|
93
|
+
l’aperçu et, pour les widgets PlayerVox, la licence MIT ;
|
|
94
|
+
4. elle liste pour le relecteur l’autorité que demande le widget :
|
|
95
|
+
capabilities sensibles, chaque route réseau, écritures dans le
|
|
96
|
+
presse-papiers, stockage et événements de jeu.
|
|
97
|
+
|
|
98
|
+
La commande se termine avec le code de sortie 1 quand la soumission serait
|
|
99
|
+
refusée. Ses codes sont listés avec la [commande `admit`](cli.md#admit).
|
|
100
|
+
|
|
101
|
+
Sur une pull request, l’outil d’admission est construit depuis la branche
|
|
102
|
+
de base relue, jamais depuis votre révision, et il lit vos fichiers comme
|
|
103
|
+
des données : votre JavaScript, votre TypeScript, vos commandes de build,
|
|
104
|
+
vos tests et vos scripts n’y sont jamais exécutés. Une pull request ne peut
|
|
105
|
+
pas modifier les outils de l’admission eux-mêmes.
|
|
106
|
+
|
|
107
|
+
## La revue
|
|
108
|
+
|
|
109
|
+
Un mainteneur lit le rapport d’admission et les sources, puis fusionne dans
|
|
110
|
+
`candidate`. Les relecteurs vérifient :
|
|
111
|
+
|
|
112
|
+
- **L’identité.** Un nouvel ID sous un domaine que l’auteur contrôle. Une
|
|
113
|
+
nouvelle version pour tout changement : les versions publiées sont
|
|
114
|
+
immuables, et une version inférieure à une version listée est refusée.
|
|
115
|
+
- **La reproductibilité.** Le paquet est reconstruit à partir des sources
|
|
116
|
+
relues.
|
|
117
|
+
- **L’autorité.** Chaque capability, surtout les sensibles ; chaque route
|
|
118
|
+
réseau, qui doit servir l’objet annoncé du widget ; les écritures dans le
|
|
119
|
+
presse-papiers, le stockage et les événements de jeu. Voir
|
|
120
|
+
[services et permissions](services.md).
|
|
121
|
+
- **La fiche.** Un texte exact et brut dans chaque langue, une URL de
|
|
122
|
+
sources canonique, un aperçu qui montre le widget.
|
|
123
|
+
- **La licence.** `LICENSE` correspond à `spdxLicense`, et chaque
|
|
124
|
+
ressource, police ou code tiers embarqué garde sa mention.
|
|
125
|
+
|
|
126
|
+
À la fusion, la révision exacte est admise de nouveau, et un reçu lie le
|
|
127
|
+
paquet admis au commit relu. Accepter une soumission ne signe et ne publie
|
|
128
|
+
rien.
|
|
129
|
+
|
|
130
|
+
## Le catalogue
|
|
131
|
+
|
|
132
|
+
Les mainteneurs préparent le catalogue suivant à partir des révisions
|
|
133
|
+
admises et le signent hors de la CI avec la clé du catalogue, dont la moitié
|
|
134
|
+
publique est dans [`keys/`](../../../keys/). Le catalogue :
|
|
135
|
+
|
|
136
|
+
- liste chaque version avec le SHA-256 et la taille de son paquet ; une
|
|
137
|
+
version publiée ne change jamais, et un changement est une nouvelle
|
|
138
|
+
version ;
|
|
139
|
+
- porte un numéro de séquence strictement croissant et expire au bout de
|
|
140
|
+
90 jours au plus : OverCrow refuse une séquence plus ancienne et un
|
|
141
|
+
catalogue expiré ;
|
|
142
|
+
- marque `built-in` les widgets de référence PlayerVox (IDs
|
|
143
|
+
`com.playervox.*` uniquement) : ils sont installés sur un nouveau profil
|
|
144
|
+
avec leurs permissions déclarées accordées, sauf pour une mise à jour qui
|
|
145
|
+
en demande davantage.
|
|
146
|
+
|
|
147
|
+
OverCrow vérifie la signature, l’empreinte du paquet, son registre et sa
|
|
148
|
+
vue compilée avant l’installation, puis à chaque démarrage du widget. Voir
|
|
149
|
+
[le paquet](package.md#comment-overcrow-vérifie-un-paquet).
|
|
150
|
+
|
|
151
|
+
## Mises à jour
|
|
152
|
+
|
|
153
|
+
Une nouvelle version de votre widget est une nouvelle soumission, avec une
|
|
154
|
+
`version` plus élevée : une version publiée n’est jamais remplacée. Une
|
|
155
|
+
mise à jour dont le manifeste demande plus que la version installée (une
|
|
156
|
+
règle réseau, un événement de jeu, une capability, le stockage ou le
|
|
157
|
+
presse-papiers) exige l’accord de l’utilisateur, dans le Centre de
|
|
158
|
+
contrôle, avant de s’exécuter.
|
|
159
|
+
|
|
160
|
+
## Statuts des versions
|
|
161
|
+
|
|
162
|
+
Chaque version listée a un statut :
|
|
163
|
+
|
|
164
|
+
| Statut | Signification |
|
|
165
|
+
| --- | --- |
|
|
166
|
+
| `verified` | Installable. |
|
|
167
|
+
| `security-suspended` | Soupçonnée de compromission : ni installée ni proposée en mise à jour, et une copie installée est arrêtée. Réversible dans un catalogue ultérieur. |
|
|
168
|
+
| `revoked` | Définitif : plus jamais installée, et une copie installée est arrêtée. |
|
|
169
|
+
|
|
170
|
+
Omettre une version dans un catalogue ne change jamais son statut. La
|
|
171
|
+
signature d’un catalogue ne contourne jamais la validation du paquet, le
|
|
172
|
+
consentement de l’utilisateur ni le sandbox.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Référence
|
|
2
|
+
|
|
3
|
+
La référence des widgets PlayerVox OverCrow liste chaque élément, chaque
|
|
4
|
+
propriété de style, chaque service et chaque fonction du SDK de l’API
|
|
5
|
+
widget v1. Cette page indique où trouver chaque réponse. Les pages de la
|
|
6
|
+
rubrique « Écrire un widget » expliquent comment les parties fonctionnent
|
|
7
|
+
ensemble ; celles qui suivent sont à garder ouvertes pendant que vous
|
|
8
|
+
écrivez.
|
|
9
|
+
|
|
10
|
+
| Question | Page |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| Que contient `manifest.json` ? | [Le manifeste](manifest.md) |
|
|
13
|
+
| Quels éléments, attributs et événements une vue peut-elle utiliser ? | [Éléments et attributs](elements.md) |
|
|
14
|
+
| Quelles propriétés de style et quelles valeurs sont acceptées ? | [Propriétés de style et tokens](style-properties.md) |
|
|
15
|
+
| Quels tokens du design system et quelles icônes existent ? | [Tokens du design system](style-properties.md#tokens-du-design-system), [icônes](style-properties.md#icônes) |
|
|
16
|
+
| Quelles fonctions `@overcrow/sdk` exporte-t-il ? | [Référence du SDK](sdk.md) |
|
|
17
|
+
| Comment formater les heures, les dates et les nombres ? | [Heure, dates et nombres](sdk.md#heure-dates-et-nombres) |
|
|
18
|
+
| Qu’autorise chaque permission et chaque capability ? | [Services et permissions](services.md) |
|
|
19
|
+
| Quels sont les paramètres et le résultat d’un service ? | [Référence des services](service-reference.md), [formes de résultat](result-shapes.md) |
|
|
20
|
+
| Que signifie un code d’erreur ? | [Erreurs](services.md#erreurs) |
|
|
21
|
+
| Quels champs un intent d’écriture prend-il ? | [Les intents](forms.md#les-intents) |
|
|
22
|
+
| Quelles sont les limites (tailles, nombres, budgets) ? | [Limites](limits.md) |
|
|
23
|
+
| Que fait chaque commande et chaque diagnostic de la CLI ? | [L’outil en ligne de commande](cli.md) |
|
|
24
|
+
| Comment écrire un scénario de test ? | [Tester un widget](testing.md#scénarios) |
|
|
25
|
+
| Que contient un `.ocpkg` ? | [Le paquet](package.md) |
|
|
26
|
+
|
|
27
|
+
## Comment la référence reste exacte
|
|
28
|
+
|
|
29
|
+
- Les tableaux des éléments, des attributs, des propriétés de style, des
|
|
30
|
+
tokens, des services, des formes de résultat et des limites sont
|
|
31
|
+
**générés à partir du schéma des widgets**, les mêmes tables qu’OverCrow
|
|
32
|
+
et l’outil en ligne de commande compilent dans leurs validateurs. Une
|
|
33
|
+
vérification échoue dès qu’une page diffère du schéma, en anglais ou en
|
|
34
|
+
français.
|
|
35
|
+
- Les **types du SDK** sont générés à partir du même schéma : un élément,
|
|
36
|
+
une icône, une capability ou un paramètre de service erroné est donc une
|
|
37
|
+
erreur TypeScript dans votre logique.
|
|
38
|
+
- La **référence du SDK** est vérifiée par les tests du SDK : chaque export
|
|
39
|
+
de `@overcrow/sdk` y figure.
|
|
40
|
+
- Chaque **exemple de code** de ces pages est un extrait d’un projet que
|
|
41
|
+
l’outil en ligne de commande vérifie, empaquette et admet à chaque
|
|
42
|
+
changement : un template, un widget de référence ou l’un des deux
|
|
43
|
+
exemples.
|
|
44
|
+
|
|
45
|
+
## Versions
|
|
46
|
+
|
|
47
|
+
Ces pages décrivent l’API widget v1 (`"apiVersion": 1` dans le manifeste)
|
|
48
|
+
et `@overcrow/sdk` 1.0.
|
|
49
|
+
|
|
50
|
+
## Spécifications pour les implémenteurs
|
|
51
|
+
|
|
52
|
+
Trois spécifications, dans le dépôt public, s’adressent à ceux qui
|
|
53
|
+
implémentent un hôte ou un autre outil plutôt qu’un widget : la
|
|
54
|
+
[référence complète du schéma, générée](../../widget-schema-v1.md), qui
|
|
55
|
+
couvre aussi le protocole entre OverCrow et le processus du widget ainsi que
|
|
56
|
+
les données du catalogue ; le
|
|
57
|
+
[protocole du canal de développement](../../dev-channel.md) ; et le
|
|
58
|
+
[format de l’archive et du catalogue](../../widget-package-v1.md). L’auteur
|
|
59
|
+
d’un widget n’en a pas besoin.
|