)]}'
{
  "commit": "cb688bf392513601939bce5558d735be9951ec58",
  "tree": "a500a11b488e4f118cfdff992f8dbf9057f82715",
  "parents": [
    "3599677b9380683799069fc752fb17bc0e3de8df"
  ],
  "author": {
    "name": "Alex Eagle",
    "email": "alex@aspect.dev",
    "time": "Tue Mar 18 11:54:32 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Mar 18 11:54:32 2025 -0700"
  },
  "message": "feat: add examples of Rust and TypeScript (#53)\n\n* feat: demonstrate rust client/server\n\n* feat: demonstrate TypeScript node client\n\n* feat: add typescript server\n\n* refactor: remove non-functional cc toolchain\n\nRust depends on having one that works. We can find a more surgical way to prevent protoc cc_binary from getting built.\n\n* chore: missing file\n\n* refactor: move to tools",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "630e0fa5078b01022d4cff16ca972f96a9323d84",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "bc8024312b5654d3d9a3f3721d04c8028f7c2b27",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "modify",
      "old_id": "2e117bf0467b692278916c17650247718c6eddeb",
      "old_mode": 33188,
      "old_path": ".prettierignore",
      "new_id": "57efff1fd68cf964478836fa3d6de264e26858d8",
      "new_mode": 33188,
      "new_path": ".prettierignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c3629e647f5ddf82548912e337bea9826b434af",
      "new_mode": 33188,
      "new_path": "examples/.bazelignore"
    },
    {
      "type": "modify",
      "old_id": "06d1d1b75cb4eabdbddfe9fbc1e265a97325e91b",
      "old_mode": 33188,
      "old_path": "examples/.bazelrc",
      "new_id": "6c89af40d3cef21f9a2c598ff08c4c7ee66538ee",
      "new_mode": 33188,
      "new_path": "examples/.bazelrc"
    },
    {
      "type": "modify",
      "old_id": "5eda38d4e06204e6e1140cca8dc3dc8603941dba",
      "old_mode": 33188,
      "old_path": "examples/BUILD.bazel",
      "new_id": "20bd431d34d2163a76fc3073a33f1dcb4cf2ae04",
      "new_mode": 33188,
      "new_path": "examples/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "a7180ec3d8b829fce78d3bb3881f63388e1cca3e",
      "old_mode": 33188,
      "old_path": "examples/MODULE.bazel",
      "new_id": "c70cebd6e2f2634dfcc2d5936d231697eff012d4",
      "new_mode": 33188,
      "new_path": "examples/MODULE.bazel"
    },
    {
      "type": "delete",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "examples/WORKSPACE.bazel",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "465255bc2b6c352c7b5fc1f3dcee34b346613e4d",
      "old_mode": 33188,
      "old_path": "examples/foo.proto",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "db2b1078383a0f12db5c5199547e608b8f2306da",
      "old_mode": 33188,
      "old_path": "examples/go/BUILD",
      "new_id": "05689b64a5a553f90933d288dbd67c1aab5b354b",
      "new_mode": 33188,
      "new_path": "examples/go/BUILD"
    },
    {
      "type": "delete",
      "old_id": "114188af6131e67aadbcae535d0f996d91d5703d",
      "old_mode": 33188,
      "old_path": "examples/go/foo_proto_test.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "691d6c006905b6949283d1c64e9571e89ddc327f",
      "new_mode": 33188,
      "new_path": "examples/go/greeter_proto_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "359776332c1cc4f94880565c89c328b729f86442",
      "new_mode": 33188,
      "new_path": "examples/package.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f2b58ab15f34e6be3a38dd362a3af97141172104",
      "new_mode": 33188,
      "new_path": "examples/pnpm-lock.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "88c206c3ae9f4bbf352df8cf93bbcef457f0a2e0",
      "new_mode": 33188,
      "new_path": "examples/proto/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c2c6d1ce445c119d0a360e5f5bf201daba9517da",
      "new_mode": 33188,
      "new_path": "examples/proto/greeter.proto"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "67922cd146b446595818db820c7ebb990ba7b1b4",
      "new_mode": 33188,
      "new_path": "examples/proto/greeter_pb.d.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "860d77e5a11dddf4905d4046c0d7c31131ebb4a2",
      "new_mode": 33188,
      "new_path": "examples/proto/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "952987991a7ca1389ec14cc32bc574fbc8dbb296",
      "old_mode": 33188,
      "old_path": "examples/python/BUILD",
      "new_id": "34becda0ab767917eaa480b76586470e9372c939",
      "new_mode": 33188,
      "new_path": "examples/python/BUILD"
    },
    {
      "type": "modify",
      "old_id": "0ea07820e26df424203c62514567a134c3cfca5e",
      "old_mode": 33188,
      "old_path": "examples/python/message_test.py",
      "new_id": "2e03b51f2b1969fd7f6d7afda6b89187cfd932ae",
      "new_mode": 33188,
      "new_path": "examples/python/message_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "08a422c190eb4eae083378809c9406f00baac250",
      "new_mode": 33188,
      "new_path": "examples/rust/client/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f4949aad413384182962dbe7654370c720f23efe",
      "new_mode": 33188,
      "new_path": "examples/rust/client/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f273a901ca6007c138ef0f29f7f053c8a3bfa034",
      "new_mode": 33188,
      "new_path": "examples/rust/server/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7d22bb8fecbc5f7f6701b587c9bf787cd8eeb9f6",
      "new_mode": 33188,
      "new_path": "examples/rust/server/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4984721d5f10949450c3c00bebb32ff77f2fc6a1",
      "new_mode": 33188,
      "new_path": "examples/rust/server/src/server.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20d60e1b8ceeee038cd65c0e546ed2576f41e597",
      "new_mode": 33188,
      "new_path": "examples/rust/server/src/shutdown_utils.rs"
    },
    {
      "type": "modify",
      "old_id": "8d490c077ee10591cd423b303c0cd8ec050ef83a",
      "old_mode": 33188,
      "old_path": "examples/tools/BUILD.bazel",
      "new_id": "a8918799b2c58480362b6add04712325d62552da",
      "new_mode": 33188,
      "new_path": "examples/tools/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "1286682f856d054d4bb695f62572819282dfe746",
      "old_mode": 33188,
      "old_path": "examples/tools/toolchains/BUILD.bazel",
      "new_id": "ccb0c7255efb6ab40c5576e51053930a23a46fae",
      "new_mode": 33188,
      "new_path": "examples/tools/toolchains/BUILD.bazel"
    },
    {
      "type": "delete",
      "old_id": "4aeee59a849b04c59d1243af1a48919c25b83366",
      "old_mode": 33188,
      "old_path": "examples/tools/toolchains/defs.bzl",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d5cb4dfc3b1d4bc9ccf6f62524a531466007fd35",
      "new_mode": 33188,
      "new_path": "examples/tsconfig.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "464ce97de2a21dd5272d407aaa4fa95599b41569",
      "new_mode": 33188,
      "new_path": "examples/typescript/client/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c8613ce3b0f6c64049d9a8bfe06b0e197010e38",
      "new_mode": 33188,
      "new_path": "examples/typescript/client/main.mts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "99559a5771885d4bba45a7452610a3157066d6e4",
      "new_mode": 33188,
      "new_path": "examples/typescript/server/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "23e63eb955752a448fe29e0631d0d7061830e76f",
      "new_mode": 33188,
      "new_path": "examples/typescript/server/connect.mts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ecf9c0f2b526500715d60214012a05b387d56ec1",
      "new_mode": 33188,
      "new_path": "examples/typescript/server/main.mts"
    }
  ]
}
