{"id":18552467,"url":"https://github.com/andrejewski/raj-ts","last_synced_at":"2025-09-22T03:12:03.914Z","repository":{"id":64630071,"uuid":"577051722","full_name":"andrejewski/raj-ts","owner":"andrejewski","description":"Raj written in Typescript","archived":false,"fork":false,"pushed_at":"2023-01-01T21:36:27.000Z","size":9,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-30T09:37:08.952Z","etag":null,"topics":["effects","framework","messages","runtime"],"latest_commit_sha":null,"homepage":"https://jew.ski/raj","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/andrejewski.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}},"created_at":"2022-12-11T20:26:48.000Z","updated_at":"2025-06-19T05:40:06.000Z","dependencies_parsed_at":"2023-02-01T01:01:55.204Z","dependency_job_id":null,"html_url":"https://github.com/andrejewski/raj-ts","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrejewski/raj-ts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejewski%2Fraj-ts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejewski%2Fraj-ts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejewski%2Fraj-ts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejewski%2Fraj-ts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrejewski","download_url":"https://codeload.github.com/andrejewski/raj-ts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrejewski%2Fraj-ts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276338747,"owners_count":25624904,"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","status":"online","status_checked_at":"2025-09-22T02:00:08.972Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["effects","framework","messages","runtime"],"created_at":"2024-11-06T21:14:19.192Z","updated_at":"2025-09-22T03:12:03.876Z","avatar_url":"https://github.com/andrejewski.png","language":"TypeScript","readme":"# Raj.ts\n\n\u003e The web framework [Raj](https://github.com/andrejewski/raj) written in Typescript.\n\n```sh\nnpm install raj-ts\n```\n\nRaj was written in 2018 when Typescript and Flow were in competition.\nIt wasn't the right time to hitch to any type system on top of JavaScript.\nThe author of Raj wasn't writing any Typescript at the time.\n\nNow in 2022, TypeScript has come to dominate the typed JavaScript space.\nThe author of Raj is now writing Typescript over JavaScript well enough to feel comfortable putting out Typescript definitions of the framework for others.\nThis should make Raj and its design more approachable to newcomers accustom to type definitions.\n\n## Why not a Raj 2.0?\n\nThe existing Raj repository has remained unchanged since the 1.0 release in 2018.\nThere's nothing wrong with that version so it won't be repurposed.\n\nAdding types to any project is a breaking change, even for something as compact as Raj.\nAdditionally Typescript itself has breaking changes regularly.\nHitching to a type system that itself has breaking changes ought to invite only packages willing to be broken along the way.\n\nTypescript is an incredible way to document and enforce code be used in the way the author intended.\nRaj.ts is the proper package to make the most out of it.\n\n## Why one package instead of a few packages?\n\nRaj.ts re-packages the standard library of Raj packages in a single package:\n\n- `raj` =\u003e `raj-ts/runtime`\n- `raj-compose` =\u003e `raj-ts/runtime`\n- `raj-subscription` =\u003e `raj-ts/subscription`\n- `raj-spa` =\u003e `raj-ts/route`\n\nThe original decision to divide these small modules as full packages was influenced by:\n\n- Wanting to move at different paces with regard to versioning\n- Transpilation and tree-shaking not being widely adopted\n- Generally not knowing what a \"standard library\" would evolve to be\n\nSince `raj-ts` is a more modern take on Raj, we can be more lax and lean on tooling assumptions Raj could not.\nFor example, the very fact this is a Typescript version means the projects using it have access to transpilation.\nAfter years of using Raj in production, the standard library has become clear enough to curate.\n\n## What are the major behavioral differences between Raj and Raj.ts?\n\nNothing is fundamentally different between the versions.\nType annotations provide constraints and a common vocabulary for talking about things like `Program` and `Effect` which previously had to be grokked from documentation and variable names.\n\nBesides a few minor renames, the documentation for Raj is applicable to Raj.ts.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejewski%2Fraj-ts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrejewski%2Fraj-ts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejewski%2Fraj-ts/lists"}