{"id":16323461,"url":"https://github.com/you54f/deno-pact","last_synced_at":"2026-05-06T04:03:59.743Z","repository":{"id":64465161,"uuid":"575214881","full_name":"YOU54F/deno-pact","owner":"YOU54F","description":"Pact 🔗 Contract Testing for Deno 🦕, Powered by Rust 🦀","archived":false,"fork":false,"pushed_at":"2023-08-22T23:02:53.000Z","size":2234,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-18T08:34:47.072Z","etag":null,"topics":["cdc","cdct","contract-testing","deno","deno-grpc","ffi","grpc","interop","pact","rust","testing","ts","typescript"],"latest_commit_sha":null,"homepage":"https://deno.land/x/pact","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/YOU54F.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":"2022-12-07T02:16:39.000Z","updated_at":"2023-03-08T20:01:46.000Z","dependencies_parsed_at":"2024-12-25T22:32:53.483Z","dependency_job_id":null,"html_url":"https://github.com/YOU54F/deno-pact","commit_stats":{"total_commits":25,"total_committers":1,"mean_commits":25.0,"dds":0.0,"last_synced_commit":"95bae748e9ed42409b523de2e4bdada3eb6eda1c"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YOU54F%2Fdeno-pact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YOU54F%2Fdeno-pact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YOU54F%2Fdeno-pact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YOU54F%2Fdeno-pact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YOU54F","download_url":"https://codeload.github.com/YOU54F/deno-pact/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254160611,"owners_count":22024575,"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":["cdc","cdct","contract-testing","deno","deno-grpc","ffi","grpc","interop","pact","rust","testing","ts","typescript"],"created_at":"2024-10-10T22:54:53.012Z","updated_at":"2026-05-06T04:03:59.718Z","avatar_url":"https://github.com/YOU54F.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deno Pact\n\n\u003cimg src=\"https://avatars.githubusercontent.com/u/42048915?s=200\u0026v=4\" height=\"80\" width=\"80\"\u003e\u003cimg src=\"https://i.pinimg.com/originals/01/9e/e0/019ee012b9ca5318b09d2f5696fc54ee.png\" height=\"80\" width=\"80\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/19932401/206557102-f5141b7d-a4f4-441b-84f6-ede3552c4696.png\" height=\"80\" width=\"80\"\u003e\n\nTry out Deno-Pact in your browser, via our [interactive tutorial](https://killercoda.com/deno-pact/course/tutorials/deno-pact)\n\n## Pre-Reqs\n\nYou need to\n[Download](https://github.com/pact-foundation/pact-reference/releases?q=%22Pact+FFI+Library%22\u0026expanded=true)\nthe\n[Pact FFI](https://github.com/pact-foundation/pact-reference/tree/master/rust/pact_ffi#pact-ffi)\nLibrary for your platform\n\n| OS      | Architecture | Supported |\n| ------- | ------------ | --------- |\n| OSX     | x86_64       | ✅        |\n| OSX     | arm          | ✅        |\n| Linux   | x86_64       | ✅        |\n| Linux   | arm          | ✅        |\n| Windows | x86_64       | ✅        |\n\n```sh\ndeno run -A --unstable https://deno.land/x/pact/src/downloadFfi.ts --run\n```\n\n- Checks if it exists in `${HOME}/.pact/ffi/\u003cpact_ffi_version\u003e`\n- Downloads the necessary library for your architecture\n- Executes the library to ensure it works\n\nYou can also do this in code\n\n```ts\nimport { downloadFfiForPlatform } from \"https://deno.land/x/pact/src/mod.ts\";\nawait downloadFfiForPlatform();\n```\n\n## How to get started\n\n- `touch helloPactDeno.ts`\n\n```ts\nimport { DenoPact, Pact } from \"https://deno.land/x/pact/src/mod.ts\";\nconst denoPact = new DenoPact();\nconsole.log(denoPact.getPactFfiVersion());\n```\n\n- `deno run -A --unstable helloPactDeno.ts`\n\n### Egg Users\n\nYou can install via nest.land - Check the [package](https://nest.land/package/pact) for the latest version\n\n```sh\nimport { DenoPact, Pact } from \"https://x.nest.land/pact@0.0.6/src/mod.ts\"\n```\n\n## Examples\n\nThere is a handy helper script to run the examples\n\nTry `./run help` for available commands or take a look at the [run](./run)\nscript\n\n### gRPC Area Calculator\n\n- The Proto File -\n  [area_calculator.proto](./src/usage/areaCalculator/area_calculator.proto)\n- The Server -\n  [areaCalculatorServer.ts](./src/usage/areaCalculator/areaCalculatorServer.ts)\n- The Client -\n  [areaCalculator/areaCalculatorClient.ts](./src/usage/areaCalculator/areaCalculatorClient.ts)\n- The Client Pact test\n  [areaCalculatorClientTest.ts](./src/usage/areaCalculatorClientTest.ts)\n- The Server Pact verification\n  [areaCalculatorProviderTest.ts](./src/usage/areaCalculatorProviderTest.ts)\n\n### gRPC Greeter\n\n- The Proto File - [greeter.proto](./src/usage/greeter/greeter.proto)\n- The Server - [greeterServer.ts](./src/usage/greeter/greeterServer.ts)\n- The Client - [greeterClient.ts](./src/usage/greeter/greeterClient.ts)\n- The Client Pact test [greeterClientTest.ts](./src/usage/greeterClientTest.ts)\n\n### HTTP service - Swagger Mock Validator\n\n- The Service -\n  [swaggerMockValidatorService.ts](./src/usage/swaggerMockValidator/swaggerMockValidatorService.ts)\n- The Service Unit Test -\n  [swaggerMockValidatorService.test.ts](./src/usage/swaggerMockValidator/swaggerMockValidatorService.test.ts)\n- The Server -\n  [swaggerMockValidatorServer.ts](./src/usage/swaggerMockValidator/swaggerMockValidatorServer.ts)\n- The Server Integration Test -\n  [swaggerMockValidatorServer.test.ts](./src/usage/swaggerMockValidator/swaggerMockValidatorServer.test.ts)\n- The Client Pact test\n  [swaggerMockValidatorServer.consumer.pact.ts](./src/usage/swaggerMockValidator/swaggerMockValidatorServer.consumer.pact.ts)\n- The Server Pact verification\n  [swaggerMockValidatorServer.provider.pact.ts](./src/usage/swaggerMockValidator/swaggerMockValidatorServer.provider.pact.ts)\n\n### Pact Verifications\n\n- Pact verification task, tests multiple transport protocols\n  [verifier.test.ts](./src/usage/verifier.test.ts)\n\n### Docker\n\nYou can spin up various services with Docker to help you play around with the\npact files generated, and the examples\n\n- Pact Broker via Deno [pactBroker.ts](./docker/pactBroker.ts)\n- Pact Broker via Docker-Compose\n  [docker-compose.yml](./docker/docker-compose.yml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyou54f%2Fdeno-pact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyou54f%2Fdeno-pact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyou54f%2Fdeno-pact/lists"}