@overcrow/mcp 0.0.0 → 0.1.1
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 +768 -0
- package/dist/content/docs/en/creator-space.md +78 -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 +252 -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 +388 -0
- package/dist/content/docs/en/mcp.md +165 -0
- package/dist/content/docs/en/package.md +131 -0
- package/dist/content/docs/en/publish-a-widget.md +94 -0
- package/dist/content/docs/en/publish-keys.md +95 -0
- package/dist/content/docs/en/publishing.md +167 -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/verified-domain.md +46 -0
- package/dist/content/docs/en/view.md +338 -0
- package/dist/content/docs/en/widget-listing.md +65 -0
- package/dist/content/docs/en/widget-review.md +57 -0
- package/dist/content/docs/en/widget-statistics.md +134 -0
- package/dist/content/docs/en/widgets.md +76 -0
- package/dist/content/docs/fr/cli.md +802 -0
- package/dist/content/docs/fr/creator-space.md +83 -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 +263 -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 +401 -0
- package/dist/content/docs/fr/mcp.md +173 -0
- package/dist/content/docs/fr/package.md +139 -0
- package/dist/content/docs/fr/publish-a-widget.md +101 -0
- package/dist/content/docs/fr/publish-keys.md +97 -0
- package/dist/content/docs/fr/publishing.md +177 -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/verified-domain.md +49 -0
- package/dist/content/docs/fr/view.md +352 -0
- package/dist/content/docs/fr/widget-listing.md +69 -0
- package/dist/content/docs/fr/widget-review.md +59 -0
- package/dist/content/docs/fr/widget-statistics.md +141 -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/submission.json +8 -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/submission.json +12 -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/submission.json +12 -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/submission.json +12 -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/submission.json +12 -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/submission.json +12 -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/submission.json +8 -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/submission.json +8 -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/submission.json +8 -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/submission.json +12 -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/submission.json +12 -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/submission.json +24 -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/submission.json +17 -0
- package/dist/content/examples/weather/tsconfig.json +16 -0
- package/dist/content/examples/weather/view.ocml +12 -0
- package/dist/content/index.json +3705 -0
- package/dist/content/reference/errors.json +1924 -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/hidden.js +47 -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 +183 -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,101 @@
|
|
|
1
|
+
# Publier un widget
|
|
2
|
+
|
|
3
|
+
Dans l’espace créateurs de PlayerVox OverCrow, à l’adresse
|
|
4
|
+
`creators.playervox.com`, un widget arrive aux joueurs en quatre
|
|
5
|
+
étapes : vous envoyez ses sources, elles sont contrôlées automatiquement,
|
|
6
|
+
PlayerVox les relit, puis la version est publiée dans le catalogue. Cette
|
|
7
|
+
page couvre les deux premières et l’écran qui envoie une version en revue ;
|
|
8
|
+
la [revue](widget-review.md) et la [fiche](widget-listing.md) ont leur
|
|
9
|
+
propre page.
|
|
10
|
+
|
|
11
|
+
## Avant d’envoyer
|
|
12
|
+
|
|
13
|
+
- L’identifiant de votre widget est réservé dans l’espace créateurs
|
|
14
|
+
([démarrer](creator-space.md)), et `manifest.json` l’utilise.
|
|
15
|
+
- `overcrow-widget check` passe dans le dossier du widget.
|
|
16
|
+
- La version de `manifest.json` est plus récente que la dernière approuvée :
|
|
17
|
+
`1.2.1` ou plus après `1.2.0`.
|
|
18
|
+
|
|
19
|
+
## Envoyer les sources
|
|
20
|
+
|
|
21
|
+
Ouvrez le widget dans **Widgets**, puis **Envoyer une version**.
|
|
22
|
+
|
|
23
|
+
- Sur un ordinateur, déposez le dossier du widget sur la page, ou
|
|
24
|
+
choisissez-le. Vous pouvez aussi envoyer un `.zip` du dossier.
|
|
25
|
+
- Sur un téléphone ou une tablette, qui ne savent pas choisir un dossier,
|
|
26
|
+
choisissez le `.zip`.
|
|
27
|
+
|
|
28
|
+
L’espace créateurs lit un dossier avec les mêmes règles que
|
|
29
|
+
`overcrow-widget submit`, sur votre ordinateur, et envoie les mêmes
|
|
30
|
+
fichiers. Il laisse de côté les fichiers et dossiers cachés (`.env`,
|
|
31
|
+
`.git/`…), `node_modules/`, `dist/`, `tests/output/`, `__MACOSX/`, les
|
|
32
|
+
paquets déjà construits, les fichiers de clés, les fichiers système et les
|
|
33
|
+
noms qui ne sont pas en ASCII portable ; la page liste ce qu’il a laissé de
|
|
34
|
+
côté. Un `.zip` est envoyé tel quel. Les bornes et les refus sont ceux des
|
|
35
|
+
[archives de sources](cli.md#archives-de-sources) : 32 Mio pour l’archive,
|
|
36
|
+
64 Mio et 2 000 fichiers une fois décompressé, 16 niveaux de dossiers, des
|
|
37
|
+
chemins de 255 octets au plus, aucun nom qui ne diffère d’un autre que par
|
|
38
|
+
la casse.
|
|
39
|
+
|
|
40
|
+
- Un `.zip` fait par Windows PowerShell 5.1 (`Compress-Archive`) sépare les
|
|
41
|
+
dossiers par `\` et est refusé aussitôt : déposez plutôt le dossier.
|
|
42
|
+
- Un nom de fichier ou de dossier avec `\ : * ? " < > |` est refusé avant
|
|
43
|
+
tout envoi : Windows ne peut pas l’utiliser. Renommez-le.
|
|
44
|
+
- Un navigateur lit le fichier vers lequel pointe un lien, là où l’outil en
|
|
45
|
+
ligne de commande laisse le lien de côté. Gardez les liens hors du dossier
|
|
46
|
+
du widget.
|
|
47
|
+
- Vos sources restent privées : seuls les relecteurs PlayerVox les lisent,
|
|
48
|
+
et chaque consultation apparaît dans l’espace créateurs.
|
|
49
|
+
|
|
50
|
+
Un éditeur fait au plus 20 envois en 24 heures ; la page dit quand le
|
|
51
|
+
suivant est possible. Si la page se ferme ou si la connexion se coupe
|
|
52
|
+
pendant l’envoi, déposez à nouveau le même dossier : l’envoi reprend, et
|
|
53
|
+
rien n’est compté deux fois.
|
|
54
|
+
|
|
55
|
+
## Les contrôles
|
|
56
|
+
|
|
57
|
+
Les contrôles prennent environ une minute : le manifeste, le numéro de
|
|
58
|
+
version, le code, la construction du paquet, les permissions, la taille.
|
|
59
|
+
Vous pouvez quitter la page : un e-mail vous prévient quand ils sont finis.
|
|
60
|
+
|
|
61
|
+
- Quand un contrôle échoue, chaque problème est montré dans vos propres
|
|
62
|
+
fichiers, avec la ligne et la correction. Corrigez et envoyez à nouveau ;
|
|
63
|
+
rien n’arrive aux relecteurs.
|
|
64
|
+
- « Problème de notre côté » signifie que PlayerVox n’a pas pu faire les
|
|
65
|
+
contrôles : votre code n’est pas en cause. PlayerVox est prévenu et les
|
|
66
|
+
relance.
|
|
67
|
+
|
|
68
|
+
## Soumettre pour revue
|
|
69
|
+
|
|
70
|
+
Quand les contrôles passent, la page de la version dit ce qui change pour
|
|
71
|
+
les joueurs :
|
|
72
|
+
|
|
73
|
+
- **Permissions.** Expliquez pourquoi le widget a besoin de chaque
|
|
74
|
+
permission nouvelle ou élargie, avec des mots que les joueurs comprennent.
|
|
75
|
+
Une première version les explique toutes.
|
|
76
|
+
- **Politique de confidentialité.** Obligatoire dès que le widget utilise
|
|
77
|
+
le réseau. L’adresse tapée ici est aussi enregistrée dans la fiche.
|
|
78
|
+
- **Fiche.** Une première version part en revue avec sa fiche, qui demande
|
|
79
|
+
une description en anglais, une licence et un contact d’assistance.
|
|
80
|
+
- **Notes de version**, visibles par les joueurs : facultatives. L’anglais
|
|
81
|
+
vient d’abord ; **Ajouter une langue** en ajoute d’autres, 16 au plus. Dès
|
|
82
|
+
que vous en écrivez, écrivez-les aussi en anglais.
|
|
83
|
+
- **Message pour la revue**, lu seulement par PlayerVox : un compte de test,
|
|
84
|
+
un contexte utile.
|
|
85
|
+
|
|
86
|
+
La page dit aussi quelle revue la version reçoit (rapide ou complète) et ce
|
|
87
|
+
qui a changé depuis la dernière version approuvée. **Soumettre pour revue**
|
|
88
|
+
l’envoie.
|
|
89
|
+
|
|
90
|
+
## Depuis un terminal ou une CI
|
|
91
|
+
|
|
92
|
+
`overcrow-widget submit` envoie une version avec une clé de publication, et
|
|
93
|
+
s’arrête au même écran quand il manque quelque chose : voir
|
|
94
|
+
[`submit`](cli.md#submit) et [clés de publication et CI](publish-keys.md).
|
|
95
|
+
|
|
96
|
+
## Après la revue
|
|
97
|
+
|
|
98
|
+
Une version approuvée est publiée sous 24 heures ouvrées. Dans l’espace
|
|
99
|
+
créateurs, vous pouvez ensuite la retirer, ou retirer le widget entier
|
|
100
|
+
(**Réglages**) : il sort du catalogue à la prochaine publication, et les
|
|
101
|
+
copies installées continuent de fonctionner.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Clés de publication et CI
|
|
2
|
+
|
|
3
|
+
Une clé de publication permet à `overcrow-widget submit` d’envoyer les
|
|
4
|
+
versions d’un widget PlayerVox OverCrow depuis un terminal ou une CI, sans
|
|
5
|
+
votre mot de passe.
|
|
6
|
+
Elle ne permet rien d’autre.
|
|
7
|
+
|
|
8
|
+
## Ce qu’une clé permet
|
|
9
|
+
|
|
10
|
+
- Soumettre des versions d’**un seul** widget, et suivre leurs contrôles.
|
|
11
|
+
Chaque version passe toujours par la revue avant d’arriver aux joueurs.
|
|
12
|
+
- Elle ne permet ni de publier, ni de modifier la fiche, ni d’accéder à
|
|
13
|
+
votre compte ou à vos autres widgets.
|
|
14
|
+
- Elle dure de 1 à 365 jours (90 par défaut). Nous vous prévenons par e-mail
|
|
15
|
+
et dans l’espace créateurs 14 jours avant son expiration.
|
|
16
|
+
- PlayerVox n’en garde qu’une empreinte : la clé est affichée **une seule
|
|
17
|
+
fois**, à sa création.
|
|
18
|
+
|
|
19
|
+
## Créer une clé
|
|
20
|
+
|
|
21
|
+
Dans l’espace créateurs, **Clés de publication**, **Créer une clé** :
|
|
22
|
+
|
|
23
|
+
1. Nommez-la d’après l’endroit où elle servira (`GitHub Actions`,
|
|
24
|
+
`Portable`).
|
|
25
|
+
2. Choisissez le widget et la durée.
|
|
26
|
+
3. Confirmez avec un code récent de votre application d’authentification.
|
|
27
|
+
|
|
28
|
+
Copiez aussitôt la clé dans les secrets de votre CI : elle commence par
|
|
29
|
+
`ocw_pub_` et ne sera plus jamais affichée. Si vous la perdez, révoquez-la et
|
|
30
|
+
créez-en une autre. Un widget a au plus dix clés actives.
|
|
31
|
+
|
|
32
|
+
## L’utiliser
|
|
33
|
+
|
|
34
|
+
`overcrow-widget submit` lit la clé dans la variable d’environnement
|
|
35
|
+
`OVERCROW_PUBLISH_KEY`, et seulement là : ne la mettez jamais dans un fichier
|
|
36
|
+
du projet ni dans une ligne de commande.
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
export OVERCROW_PUBLISH_KEY=ocw_pub_…
|
|
40
|
+
overcrow-widget submit
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
La [commande submit](cli.md#submit) contrôle la version comme le fera
|
|
44
|
+
l’espace créateurs, l’envoie, puis suit ses contrôles, environ une minute.
|
|
45
|
+
|
|
46
|
+
## Dans GitHub Actions
|
|
47
|
+
|
|
48
|
+
Gardez la clé comme secret du dépôt, `OVERCROW_PUBLISH_KEY`. Ce workflow
|
|
49
|
+
soumet le widget à chaque tag de version :
|
|
50
|
+
|
|
51
|
+
<!-- source: docs/content/examples/weather/.github/workflows/submit.yml -->
|
|
52
|
+
```yaml
|
|
53
|
+
# Sends the widget to the OverCrow creator space when a version tag is
|
|
54
|
+
# pushed. The publish key is a secret of the repository, and the OverCrow
|
|
55
|
+
# release whose creator tools to use is a variable of the repository.
|
|
56
|
+
name: Submit to OverCrow
|
|
57
|
+
|
|
58
|
+
on:
|
|
59
|
+
push:
|
|
60
|
+
tags: ["v*"]
|
|
61
|
+
|
|
62
|
+
permissions:
|
|
63
|
+
contents: read
|
|
64
|
+
|
|
65
|
+
jobs:
|
|
66
|
+
submit:
|
|
67
|
+
runs-on: ubuntu-24.04
|
|
68
|
+
env:
|
|
69
|
+
OVERCROW_VERSION: ${{ vars.OVERCROW_VERSION }}
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@v4
|
|
72
|
+
- name: Install overcrow-widget
|
|
73
|
+
run: |
|
|
74
|
+
tools="overcrow-creator-tools-$OVERCROW_VERSION-linux-x86_64"
|
|
75
|
+
curl --fail --location --silent --show-error --remote-name \
|
|
76
|
+
"https://github.com/Valhallab/playervox-overcrow-releases/releases/download/v$OVERCROW_VERSION/$tools.zip"
|
|
77
|
+
unzip -q "$tools.zip"
|
|
78
|
+
(cd "$tools" && sha256sum --check --quiet SHA256SUMS)
|
|
79
|
+
install -D -m 755 "$tools"/overcrow-widget-*-linux-x86_64 "$HOME/.local/bin/overcrow-widget"
|
|
80
|
+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
81
|
+
- name: Submit to OverCrow
|
|
82
|
+
run: overcrow-widget submit --submission submission.json
|
|
83
|
+
env:
|
|
84
|
+
OVERCROW_PUBLISH_KEY: ${{ secrets.OVERCROW_PUBLISH_KEY }}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
La tâche échoue quand les contrôles échouent, avec chaque problème sur la
|
|
88
|
+
ligne de votre fichier. Une version que l’espace créateurs a déjà n’est pas
|
|
89
|
+
renvoyée : `submit` donne son état, et la même tâche peut aussi tourner à
|
|
90
|
+
chaque push sur votre branche principale.
|
|
91
|
+
|
|
92
|
+
## Révoquer une clé
|
|
93
|
+
|
|
94
|
+
**Révoquer** arrête la clé aussitôt : un envoi en cours avec elle échoue.
|
|
95
|
+
Les versions qu’elle a déjà envoyées restent, mais n’entrent plus seules en
|
|
96
|
+
revue : envoyez-les en revue depuis l’espace créateurs. Révoquez une clé dès
|
|
97
|
+
que vous pensez qu’elle a fuité, puis créez-en une nouvelle.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Publication et revue
|
|
2
|
+
|
|
3
|
+
> **Les pull requests sont fermées.** Les widgets ne sont plus proposés par
|
|
4
|
+
> pull request : ceux de PlayerVox passent déjà par l’espace créateurs
|
|
5
|
+
> OverCrow, et le vôtre y passera à son ouverture. D’ici là, cette page
|
|
6
|
+
> décrit l’admission, la revue et le catalogue que suit un widget.
|
|
7
|
+
|
|
8
|
+
Les widgets atteignent les utilisateurs de PlayerVox OverCrow par le
|
|
9
|
+
catalogue signé des widgets : OverCrow n’installe que ce que liste ce
|
|
10
|
+
catalogue. Cette page va du dossier de sources d’un widget à une version
|
|
11
|
+
listée. Ni une pull request ni une fusion ne publient quoi que ce soit : la
|
|
12
|
+
publication est une étape distincte des mainteneurs, hors de la CI.
|
|
13
|
+
|
|
14
|
+
## La soumission
|
|
15
|
+
|
|
16
|
+
Une soumission est le dossier de sources d’un widget, placé sous
|
|
17
|
+
`widgets/<dir>/` du
|
|
18
|
+
[dépôt public](https://github.com/Valhallab/playervox-overcrow-releases),
|
|
19
|
+
dans une pull request vers sa branche `candidate` :
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
widgets/<dir>/
|
|
23
|
+
manifest.json view.ocml style.ocss? logic.ts | logic.js
|
|
24
|
+
locales/en.json + locales/fr.json? assets/**? LICENSE
|
|
25
|
+
listing.json (marketplace text, never packaged)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Vous soumettez des sources, pas un paquet : le catalogue livre toujours le
|
|
29
|
+
paquet reconstruit à partir des sources relues.
|
|
30
|
+
|
|
31
|
+
Les IDs de paquet sous `com.playervox` sont réservés aux widgets publiés
|
|
32
|
+
par PlayerVox. Utilisez un ID en DNS inversé sous un domaine que vous
|
|
33
|
+
contrôlez, et gardez-le : l’ID est l’identité du widget dans le catalogue.
|
|
34
|
+
|
|
35
|
+
## La fiche
|
|
36
|
+
|
|
37
|
+
`listing.json` contient ce qu’affiche la marketplace :
|
|
38
|
+
|
|
39
|
+
<!-- source: docs/content/examples/weather/listing.json -->
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"author": "Example Studio",
|
|
43
|
+
"spdxLicense": "MIT",
|
|
44
|
+
"sourceUrl": "https://github.com/example/weather-widget",
|
|
45
|
+
"defaultLocale": "en",
|
|
46
|
+
"localizations": [
|
|
47
|
+
{ "locale": "en", "name": "Weather", "description": "The temperature of a city, refreshed every 30 minutes." },
|
|
48
|
+
{ "locale": "fr", "name": "Météo", "description": "La température d’une ville, actualisée toutes les 30 minutes." }
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
<!-- generated:listing-fields -->
|
|
54
|
+
| Champ | Type | Obligatoire | Signification |
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| `author` | texte ≤ 128 octets | oui | Texte brut, sans espaces en début ni en fin, sans `<` ni `>`. |
|
|
57
|
+
| `spdxLicense` | texte ≤ 64 octets | oui | Expression SPDX, faite des caractères `[A-Za-z0-9.+-]`. |
|
|
58
|
+
| `sourceUrl` | texte ≤ 2 Kio | oui | URL HTTPS canonique des sources relues, sans port, requête ni fragment. |
|
|
59
|
+
| `defaultLocale` | `locale` | oui | L’une des localisations. |
|
|
60
|
+
| `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. |
|
|
61
|
+
<!-- /generated:listing-fields -->
|
|
62
|
+
|
|
63
|
+
- `author`, les noms et les descriptions sont du texte brut, sans espace au
|
|
64
|
+
début ni à la fin, sans `<` ni `>` ; les langues sont de la forme `xx` ou
|
|
65
|
+
`xx-YY`, l’une d’elles étant `defaultLocale`.
|
|
66
|
+
- `spdxLicense` est une expression SPDX ; le `LICENSE` du paquet en
|
|
67
|
+
contient le texte. Les widgets PlayerVox sont sous MIT. La politique pour
|
|
68
|
+
les licences des tiers n’est pas encore arrêtée : une expression valide
|
|
69
|
+
est relue, pas approuvée par les métadonnées
|
|
70
|
+
([licences](../../../LICENSING.md)).
|
|
71
|
+
- `sourceUrl` est une URL HTTPS canonique des sources relues, sans port,
|
|
72
|
+
requête ni fragment.
|
|
73
|
+
- `preview` (facultatif) désigne un PNG empaqueté sous `assets/`, de
|
|
74
|
+
256 Kio au plus, par exemple `"preview": "assets/preview.png"`. Le
|
|
75
|
+
Centre de contrôle et la marketplace le montrent entier dans un cadre
|
|
76
|
+
4:3, centré sur la couleur `#1e242e`, à 1,5 pixel par point d’écran au
|
|
77
|
+
plus : rendez le widget à 150 % (`"scale": 1500` dans un scénario) et
|
|
78
|
+
donnez à l’image un format 4:3, il apparaît à sa taille réelle, jamais
|
|
79
|
+
recadré ni agrandi.
|
|
80
|
+
|
|
81
|
+
## L’admission : lancez-la vous-même
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
overcrow-widget admit widgets/<dir>
|
|
85
|
+
overcrow-widget admit widgets/<dir> --package dist/<id>-<version>.ocpkg
|
|
86
|
+
overcrow-widget admit widgets/<dir> --format json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`admit` est exactement l’admission statique de la marketplace. Elle
|
|
90
|
+
n’exécute jamais votre code ni `tsc` :
|
|
91
|
+
|
|
92
|
+
1. elle construit le dossier comme le fait `package` : toutes les
|
|
93
|
+
vérifications des sources, du style, de la logique et du paquet, puis le
|
|
94
|
+
lecteur de paquets d’OverCrow lui-même ;
|
|
95
|
+
2. avec `--package`, la vue compilée de votre archive doit être, octet pour
|
|
96
|
+
octet, le résultat de la compilation de `view.ocml` ;
|
|
97
|
+
3. elle vérifie les limites du schéma, les IDs réservés, `listing.json`,
|
|
98
|
+
l’aperçu et, pour les widgets PlayerVox, la licence MIT ;
|
|
99
|
+
4. elle liste pour le relecteur l’autorité que demande le widget :
|
|
100
|
+
capabilities sensibles, chaque route réseau, écritures dans le
|
|
101
|
+
presse-papiers, stockage et événements de jeu.
|
|
102
|
+
|
|
103
|
+
La commande se termine avec le code de sortie 1 quand la soumission serait
|
|
104
|
+
refusée. Ses codes sont listés avec la [commande `admit`](cli.md#admit).
|
|
105
|
+
|
|
106
|
+
Sur une pull request, l’outil d’admission est construit depuis la branche
|
|
107
|
+
de base relue, jamais depuis votre révision, et il lit vos fichiers comme
|
|
108
|
+
des données : votre JavaScript, votre TypeScript, vos commandes de build,
|
|
109
|
+
vos tests et vos scripts n’y sont jamais exécutés. Une pull request ne peut
|
|
110
|
+
pas modifier les outils de l’admission eux-mêmes.
|
|
111
|
+
|
|
112
|
+
## La revue
|
|
113
|
+
|
|
114
|
+
Un mainteneur lit le rapport d’admission et les sources, puis fusionne dans
|
|
115
|
+
`candidate`. Les relecteurs vérifient :
|
|
116
|
+
|
|
117
|
+
- **L’identité.** Un nouvel ID sous un domaine que l’auteur contrôle. Une
|
|
118
|
+
nouvelle version pour tout changement : les versions publiées sont
|
|
119
|
+
immuables, et une version inférieure à une version listée est refusée.
|
|
120
|
+
- **La reproductibilité.** Le paquet est reconstruit à partir des sources
|
|
121
|
+
relues.
|
|
122
|
+
- **L’autorité.** Chaque capability, surtout les sensibles ; chaque route
|
|
123
|
+
réseau, qui doit servir l’objet annoncé du widget ; les écritures dans le
|
|
124
|
+
presse-papiers, le stockage et les événements de jeu. Voir
|
|
125
|
+
[services et permissions](services.md).
|
|
126
|
+
- **La fiche.** Un texte exact et brut dans chaque langue, une URL de
|
|
127
|
+
sources canonique, un aperçu qui montre le widget.
|
|
128
|
+
- **La licence.** `LICENSE` correspond à `spdxLicense`, et chaque
|
|
129
|
+
ressource, police ou code tiers embarqué garde sa mention.
|
|
130
|
+
|
|
131
|
+
À la fusion, la révision exacte est admise de nouveau, et un reçu lie le
|
|
132
|
+
paquet admis au commit relu. Accepter une soumission ne signe et ne publie
|
|
133
|
+
rien.
|
|
134
|
+
|
|
135
|
+
## Le catalogue
|
|
136
|
+
|
|
137
|
+
Les mainteneurs préparent le catalogue suivant à partir des révisions
|
|
138
|
+
admises et le signent hors de la CI avec la clé du catalogue, dont la moitié
|
|
139
|
+
publique est dans [`keys/`](../../../keys/). Le catalogue :
|
|
140
|
+
|
|
141
|
+
- liste chaque version avec le SHA-256 et la taille de son paquet ; une
|
|
142
|
+
version publiée ne change jamais, et un changement est une nouvelle
|
|
143
|
+
version ;
|
|
144
|
+
- porte un numéro de séquence strictement croissant et expire au bout de
|
|
145
|
+
90 jours au plus : OverCrow refuse une séquence plus ancienne et un
|
|
146
|
+
catalogue expiré ;
|
|
147
|
+
- marque `built-in` les widgets de référence PlayerVox (IDs
|
|
148
|
+
`com.playervox.*` uniquement) : ils sont installés sur un nouveau profil
|
|
149
|
+
avec leurs permissions déclarées accordées, sauf pour une mise à jour qui
|
|
150
|
+
en demande davantage.
|
|
151
|
+
|
|
152
|
+
OverCrow vérifie la signature, l’empreinte du paquet, son registre et sa
|
|
153
|
+
vue compilée avant l’installation, puis à chaque démarrage du widget. Voir
|
|
154
|
+
[le paquet](package.md#comment-overcrow-vérifie-un-paquet).
|
|
155
|
+
|
|
156
|
+
## Mises à jour
|
|
157
|
+
|
|
158
|
+
Une nouvelle version de votre widget est une nouvelle soumission, avec une
|
|
159
|
+
`version` plus élevée : une version publiée n’est jamais remplacée. Une
|
|
160
|
+
mise à jour dont le manifeste demande plus que la version installée (une
|
|
161
|
+
règle réseau, un événement de jeu, une capability, le stockage ou le
|
|
162
|
+
presse-papiers) exige l’accord de l’utilisateur, dans le Centre de
|
|
163
|
+
contrôle, avant de s’exécuter.
|
|
164
|
+
|
|
165
|
+
## Statuts des versions
|
|
166
|
+
|
|
167
|
+
Chaque version listée a un statut :
|
|
168
|
+
|
|
169
|
+
| Statut | Signification |
|
|
170
|
+
| --- | --- |
|
|
171
|
+
| `verified` | Installable. |
|
|
172
|
+
| `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. |
|
|
173
|
+
| `revoked` | Définitif : plus jamais installée, et une copie installée est arrêtée. |
|
|
174
|
+
|
|
175
|
+
Omettre une version dans un catalogue ne change jamais son statut. La
|
|
176
|
+
signature d’un catalogue ne contourne jamais la validation du paquet, le
|
|
177
|
+
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.
|