{"id":13726775,"url":"https://github.com/google/webbundle","last_synced_at":"2025-05-07T22:30:31.079Z","repository":{"id":51610348,"uuid":"236893206","full_name":"google/webbundle","owner":"google","description":"WebBundle library for packaging web sites","archived":false,"fork":false,"pushed_at":"2023-04-10T00:39:29.000Z","size":245,"stargazers_count":100,"open_issues_count":0,"forks_count":21,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-19T22:27:44.516Z","etag":null,"topics":["rust","webbundle"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","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}},"created_at":"2020-01-29T03:11:19.000Z","updated_at":"2025-03-30T00:46:26.000Z","dependencies_parsed_at":"2024-01-06T07:48:58.388Z","dependency_job_id":"a99d6588-7054-4f92-83e1-d8a32a6a7165","html_url":"https://github.com/google/webbundle","commit_stats":{"total_commits":121,"total_committers":6,"mean_commits":"20.166666666666668","dds":0.09917355371900827,"last_synced_commit":"ffc36d1014e2194a85bd3cb19343a6fd36503468"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fwebbundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fwebbundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fwebbundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fwebbundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/webbundle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252965070,"owners_count":21832817,"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":["rust","webbundle"],"created_at":"2024-08-03T01:03:21.202Z","updated_at":"2025-05-07T22:30:30.709Z","avatar_url":"https://github.com/google.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Web bundles\n\n[![build](https://github.com/google/webbundle/workflows/build/badge.svg)](https://github.com/google/webbundle/actions)\n\n`google/webbundle` is a project which aims to provide a high-performace library\nand various tools for handling Web bundles format.\n\nThis is not an officially supported Google product.\n\n# Specification\n\n- [Web Bundles (IETF draft)](https://wpack-wg.github.io/bundled-responses/draft-ietf-wpack-bundled-responses.html)\n- [Subresource Loading](https://wicg.github.io/webpackage/subresource-loading.html)\n   ([Explainer](https://github.com/WICG/webpackage/blob/main/explainers/subresource-loading.md)):\n\n# Crates\n\nThere are several crates in the repository.\n\n## [webbundle](https://github.com/google/webbundle/tree/main/webbundle)\n\n[![crates.io](https://img.shields.io/crates/v/webbundle.svg)](https://crates.io/crates/webbundle?label=webbundle)\n\nThe core library. See [the documentation](https://docs.rs/webbundle).\n\n## [webbundle-cli](https://github.com/google/webbundle/tree/main/webbundle-cli)\n\n[![crates.io](https://img.shields.io/crates/v/webbundle-cli.svg)](https://crates.io/crates/webbundle-cli)\n\nThe command line tool for packaging resources as Web Bundles.\n\n### Installation\n\n[Archives of precompiled binaries for `webbundle-cli` are available for Windows, macOS and Linux](https://github.com/google/webbundle/releases).\n\nIf you're using Rust, `webbundle-cli` can be installed with `cargo`.\n\n```shell\ncargo install webbundle-cli\n```\n\n### Examples\n\nThe binary name for `webbundle-cli` is `webbundle`.\n\n#### create\n\nCreate `example.wbn` from the files under `build/dist` directory. This is\nsimilar to `tar cvf example.tar build/dist`.\n\n```\n$ webbundle create example.wbn build/dist\n```\n\n#### list\n\nList the contents of `example.wbn`. This is similar to `tar tvf example.tar`.\n\n```\n$ webbundle list ./example.wbn\n```\n\n#### extract\n\nExtract the contents of `example.wbn`. This is similar to `tar xvf example.tar`.\n\n```\n$ webbundle extract ./example.wbn\n```\n\nSee `webbundle --help` for detail usage.\n\n## [webbundle-server](https://github.com/google/webbundle/tree/main/webbundle-server)\n\n[![crates.io](https://img.shields.io/crates/v/webbundle-server.svg)](https://crates.io/crates/webbundle-server)\n\nThe experimental web server which dynamically serves Web bundles from underlying resources.\n\n## [webbundle-bench](https://github.com/google/webbundle/tree/main/webbundle-bench)\n\n[![crates.io](https://img.shields.io/crates/v/webbundle-bench.svg)](https://crates.io/crates/webbundle-bench)\n\nThe benchmark tool for measuring the browser's loading performance with Web bundles.\n\n# TODO\n\nThe development is at very early stage. There are many TODO items:\n\n- [x] Parser\n  - [x] Support b2 format\n- [x] Encoder\n  - [x] Support b2 format\n- [x] Web Bundles Builder\n  - [x] Create a Web Bundle from a directory structure\n  - [x] Low-level APIs to create and manipulate Web Bundle file\n- [x] Use `http::Request`, `http::Response` and `http::Uri` for better\n  ergonomics\n- [ ] Use async/await to avoid blocking operations\n- [ ] More CLI subcommands\n  - [x] `create`\n  - [x] `list`\n  - [x] `extract`\n  - [ ] Make these subcommands more ergonomics\n- [ ] Focus the performance. Avoid copy as much as possible.\n- [ ] Split this crate into several crates:\n  - [x] `webbundle`: Core library\n  - [x] `webbundle-cli`: CLI, like a `tar` command\n  - [x] `webbundle-ffi`: Foreign function interface for C or C++ program, like a\n    chromium.\n  - [x] `webbundle-server`: Experimental http server which can assemble and\n    serve a webbundle dynamically, based on request parameters\n  - [ ] `webbundle-wasm`: WebAssembly binding\n  - [X] `webbundle-bench`: The benchmark tool\n\n## Contributing\n\nSee [contributing.md](contributing.md) for instructions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fwebbundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fwebbundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fwebbundle/lists"}