{"id":32042770,"url":"https://github.com/stackb/rules_tsickle","last_synced_at":"2026-02-19T16:02:14.588Z","repository":{"id":318196365,"uuid":"1069989937","full_name":"stackb/rules_tsickle","owner":"stackb","description":"Bazel rules to drive the angular/tsickle tool","archived":false,"fork":false,"pushed_at":"2025-11-03T23:12:12.000Z","size":468,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-10T20:20:38.597Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Starlark","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stackb.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-05T03:08:39.000Z","updated_at":"2025-11-03T23:11:28.000Z","dependencies_parsed_at":"2025-10-05T19:25:42.219Z","dependency_job_id":"8e154fd4-3a3e-48c1-9a4a-764433a9ce4b","html_url":"https://github.com/stackb/rules_tsickle","commit_stats":null,"previous_names":["pcj/rules_tsickle"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/stackb/rules_tsickle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackb%2Frules_tsickle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackb%2Frules_tsickle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackb%2Frules_tsickle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackb%2Frules_tsickle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stackb","download_url":"https://codeload.github.com/stackb/rules_tsickle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackb%2Frules_tsickle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29621897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"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":"2025-10-17T16:12:13.172Z","updated_at":"2026-02-19T16:02:14.579Z","avatar_url":"https://github.com/stackb.png","language":"Starlark","readme":"# rules_tsickle\n\n## What?\n\n`rules_tsickle` provides a `closure_ts_compile` rule that transforms `.ts` files\ninto closure-annotated `.js` files.  It contains a vendored copy of\n\u003chttps://github.com/angular/tsickle\u003e (which was archived in May 2025).\n\n## Why?\n\nThe primary reason `rules_tsickle` was created was to perform `.ts` to `.js`\ntranslation of \u003chttps://github.com/google/safevalues\u003e for\n\u003chttps://github.com/google/closure-templates/tree/master/javascript\u003e.  Several\nof the `soyutils` files in that repo have closure dependencies like:\n\n```js\ngoog.require('google3.third_party.javascript.safevalues.index');\n```\n\nNo open-source copy of the translated `.js` files could be located, so\n`rules_tsickle` was created to perform that translation.\n\n## How?\n\nTo use `rules_tsickle` in your own bazel workspace (lookup most recent version):\n\n```py\nbazel_dep(\"rules_tsickle\", version = \"0.0.0\")\n```\n\nThen, in a package containing `.ts` and/or `.d.ts` files:\n\n```py\nload(\"//rules:defs.bzl\", \"closure_ts_compile\")\n\nclosure_ts_compile(\n    name = \"index\",\n    srcs = [\"index.ts\"],\n)\n```\n\n`bazel build :index` will:\n\n- download npm deps and prepare the `js_binary` tsickle runner\n  (`//tools/tsicklecompiler`).\n- run the tool, which roughly works as follows:\n  - prepare an internal/minimal `tsconfig.json` configuration.\n  - runs `tsc` over the inputs to generate a `ts.Program`\n  - runs tsickle over the `ts.Program` to AST-rewrite/transform it.\n  - emits the transformed `.js` files.\n- output files:\n  - each `{basename}.ts` will produce an equivalent `{basename}.js` file\n  - if any `.d.ts` files are present, a single `{name}-externs.js` file will be\n    produced.\n\n`closure_ts_compile` can take `deps` on other `closure_ts_compile` rules.  The\nsource `.ts` files will be made available to `tsc`.  Only direct `.ts` files in\nthe primary rule will emitted.\n\n### Versioning\n\nThe `rules_tsickle` initial version is `1.0.0` not because of a long history of\ndevelopment, but because it is anticipated this repo will not see a large amount\nof future development.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackb%2Frules_tsickle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstackb%2Frules_tsickle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackb%2Frules_tsickle/lists"}