{"id":14990886,"url":"https://github.com/js13kgames/bot","last_synced_at":"2025-10-19T13:31:51.925Z","repository":{"id":50656999,"uuid":"198402344","full_name":"js13kGames/bot","owner":"js13kGames","description":"js13kGames automatic submission validation","archived":false,"fork":false,"pushed_at":"2023-09-05T11:36:54.000Z","size":842,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-29T16:37:41.632Z","etag":null,"topics":["github-app","js13kgames"],"latest_commit_sha":null,"homepage":"https://js13kgames.github.io/bot/demo-xhr.html","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/js13kGames.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-23T09:53:22.000Z","updated_at":"2022-09-13T01:50:37.000Z","dependencies_parsed_at":"2024-09-24T16:04:50.276Z","dependency_job_id":"6400b1de-6c99-440e-b0ea-d68614bf7bf2","html_url":"https://github.com/js13kGames/bot","commit_stats":{"total_commits":146,"total_committers":2,"mean_commits":73.0,"dds":0.006849315068493178,"last_synced_commit":"c584a633e30baffb82da72977a0bcbb1574f29a9"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js13kGames%2Fbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js13kGames%2Fbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js13kGames%2Fbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js13kGames%2Fbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/js13kGames","download_url":"https://codeload.github.com/js13kGames/bot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237143104,"owners_count":19262132,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-app","js13kgames"],"created_at":"2024-09-24T14:21:02.069Z","updated_at":"2025-10-19T13:31:51.522Z","avatar_url":"https://github.com/js13kGames.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# js13kGames bot\n\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) [![type: typescript](https://img.shields.io/npm/types/typescript.svg?style=flat-square)](https://github.com/microsoft/TypeScript) [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/js13kGames/bot/main.yml?style=flat-square)](https://github.com/js13kGames/bot/actions/workflows/main.yml)\n\n\u003e js13kGames automatic submission validation\n\nExposes an endpoint to run checks on a bundle.zip\n\n- valid size\n- valid zip file\n- contains index.html\n- runs without errors\n- runs without requesting external resources\n- runs without display a blank screen at launch\n\n## Table of Content\n\n- [Usage](#Usage)\n  - [Endpoint](#Endpoint)\n  - [Result](#Result)\n  - [Demo](#Demo)\n    - [xhr](https://js13kgames.github.io/bot/demo-xhr.html)\n    - [pure html](https://js13kgames.github.io/bot/demo-pure-html.html)\n- [Third party](#Third-party)\n- [License](#License)\n\n## Usage\n\n### Endpoint\n\n```sh\n\ncurl -X POST \\\n\n  # upload your bundle.zip\n  --form bundle=@bundle.zip \\\n\n  # set the rules for the desktop + mobile categories\n  --form category=desktop \\\n  --form category=mobile \\\n\n  # temporary dev endpoint\n  https://wdbnnia6lj.execute-api.eu-west-1.amazonaws.com/stage/analyze-bundle\n```\n\n### Result\n\n```typescript\ntype Res = {\n  // list of checks runs\n  checks: {\n    id: string;\n\n    // description of what is expected for this check to succeed\n    description: string;\n\n    // result of the check\n    result: \"ok\" | \"failed\" | \"untested\";\n\n    // if failed, some details / hint on how to fix\n    details?: string;\n  }[];\n\n  // url to the deployed game, or null if it did not get that far\n  deployUrl?: string;\n\n  // list of categories found in the request\n  categories: (\n    | \"desktop\"\n    | \"mobile\"\n    | \"webxr\"\n    | \"server\"\n    | \"webmonetization\"\n    | \"decentralized\"\n    | \"unfinished\"\n  )[];\n\n  // rules applying to this combinaison of categories\n  // or null if no rule could be applied\n  rules: Rules | null;\n};\n```\n\n### Demo\n\n[A very simple form](https://js13kgames.github.io/bot/demo-xhr.html)\n\nAnd an even [simpler one without js](https://js13kgames.github.io/bot/demo-pure-html.html)\n\nThere is some bundle.zip samples in [packages/bundle-analyzer/\\_\\_fixtures\\_\\_](packages/bundle-analyzer/__fixtures__)\n\n## Third party\n\n![browserstack logo](https://d2ogrdw2mh0rsl.cloudfront.net/production/images/static/header/header-logo.svg)\n\nThanks to browserstack for supporting open source projects.\n\n## License\n\n[MIT](./license)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs13kgames%2Fbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjs13kgames%2Fbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs13kgames%2Fbot/lists"}