{"id":40052381,"url":"https://github.com/rollercodester/spa-tools","last_synced_at":"2026-01-19T06:30:31.834Z","repository":{"id":228304427,"uuid":"773611764","full_name":"rollercodester/spa-tools","owner":"rollercodester","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-19T15:08:59.000Z","size":2677,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T00:38:22.372Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/rollercodester.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":"2024-03-18T04:26:12.000Z","updated_at":"2024-04-23T02:19:26.000Z","dependencies_parsed_at":"2024-04-13T00:35:46.427Z","dependency_job_id":"1ede273f-8772-42ac-ae01-72200485d15b","html_url":"https://github.com/rollercodester/spa-tools","commit_stats":{"total_commits":37,"total_committers":2,"mean_commits":18.5,"dds":"0.45945945945945943","last_synced_commit":"3cb311af62a30c830431a307f2904633b205b8ae"},"previous_names":["rollercodester/spa-tools"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/rollercodester/spa-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollercodester%2Fspa-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollercodester%2Fspa-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollercodester%2Fspa-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollercodester%2Fspa-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rollercodester","download_url":"https://codeload.github.com/rollercodester/spa-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollercodester%2Fspa-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28562404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-19T06:30:28.074Z","updated_at":"2026-01-19T06:30:31.822Z","avatar_url":"https://github.com/rollercodester.png","language":"TypeScript","readme":"\u003cimg alt=\"@spa-tools\" height=\"150\" src=\"./website/static/img/logo.svg?raw=true\"\u003e\n\n# @spa-tools\n\n\n## Introduction\n\n_@spa-tools_ is a collection of packages aimed at helping engineers to _better-build_ Single-Page Applications.\nIt came about from years of shipping real-world, business-focused SPAs and taking a handful of the resulting wants+learnings\nand distilling them into a set of packages that can be used in any modern Web project.\n\n### Motivation\n\nAside from the earnest intent of giving back to the community, the other is to offer frontend developers simple and efficient alternatives to other webapp tools.\n\n## Docsite\n\nView the [@spa-tools documentation site](https://rollercodester.github.io/spa-tools/) for complete reference.\n\n## Contributing\n\nIf you're interested in contributing to @spa-tools, please search and see if there's already an  [existing issue for the feature/bug](https://github.com/rollercodester/spa-tools/issues).\n\nIf you find an existing issue for what you'd like contribute, please addd acomment on the respective issue. If you can't find an existing issue or you'e short on time, please go ahead and\n[create a new issue](https://github.com/rollercodester/spa-tools/issues/new/choose).\n\nFrom there we can discuss the feature or bugfix you're interested in and how best to approach it.\nIn terms of workflow, we use the standard approach of forking the repo, creating a PR, and merging after tesing/approval. If you have questions regarding contributing in general, please take a gander at the [Contributions Board](https://github.com/rollercodester/spa-tools/discussions/categories/contributing).\n\n### Unit Test Coverage\n\nAll packages in @spa-tools require 100% unit test coverage. This is a condition for all PRs to be merged whether you're adding a new feature or fixing a bug.\n\nThe only exception is when native code is being wrapped and coverage is either not possible or redundant, which can be discussed on a case-by-case basis\nduring the approval process.\n\n#### To run CI/CD tests for all packages\n\n```bash\npnpm test:cicd\n```\n\n#### To run CI/CD tests for a single package\n\n```bash\npnpm test:cicd --filter=api-client\n```\n\n#### To run DEV tests locally in watch mode with test UI\n\n```bash\npnpm test:dev\n```\n\n#### To run DEV tests locally for a single package\n\n```bash\npnpm test:dev --filter=api-client\n```\n\n## Bugs\n\nFound a bug? We'd super appreciate you reporting it by [creating a new bug report](https://github.com/rollercodester/spa-tools/issues/new?assignees=\u0026labels=\u0026projects=\u0026template=bug_report.md\u0026title=).\n\n## Feature/Package Ideas\n\nDo you have ideas for tools/features to add but don't have time to contribute? No worries, we still want to capture your idea for discussion: please create a post under the [Ideas Board](https://github.com/rollercodester/spa-tools/discussions/categories/ideas).\n\n## Got Questions?\n\nPost your question on the [Q/A Board](https://github.com/rollercodester/spa-tools/discussions/categories/q-a).\n\n## License\n\nAll packages in @spa-tools are licensed under the [MIT](https://en.wikipedia.org/wiki/MIT_License) license. Copyright © 2024, Ryan Howard (rollercodester). All rights reserved.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollercodester%2Fspa-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frollercodester%2Fspa-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollercodester%2Fspa-tools/lists"}