{"id":28719187,"url":"https://github.com/soenneker/soenneker.blazor.thumbmarkjs","last_synced_at":"2026-06-17T07:01:20.723Z","repository":{"id":298780098,"uuid":"1001117630","full_name":"soenneker/soenneker.blazor.thumbmarkjs","owner":"soenneker","description":"A Blazor interop library for the javascript fingerprinting library, thumbmarkjs","archived":false,"fork":false,"pushed_at":"2026-06-14T06:14:55.000Z","size":1018,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-14T08:08:40.303Z","etag":null,"topics":["blazor","blazorlibrary","csharp","dotnet","fingerprint","fingerprinting","id","identification","thumbmark","thumbmarkjs","thumbmarkjsinterop"],"latest_commit_sha":null,"homepage":"https://soenneker.com","language":"CSS","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/soenneker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","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},"funding":{"github":"soenneker","thanks_dev":"soenneker"}},"created_at":"2025-06-12T21:12:45.000Z","updated_at":"2026-06-14T06:14:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"77be0a7b-95c6-41ea-8c95-f43adf16f2d3","html_url":"https://github.com/soenneker/soenneker.blazor.thumbmarkjs","commit_stats":null,"previous_names":["soenneker/soenneker.blazor.thumbmarkjs"],"tags_count":236,"template":false,"template_full_name":null,"purl":"pkg:github/soenneker/soenneker.blazor.thumbmarkjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.thumbmarkjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.thumbmarkjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.thumbmarkjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.thumbmarkjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soenneker","download_url":"https://codeload.github.com/soenneker/soenneker.blazor.thumbmarkjs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soenneker%2Fsoenneker.blazor.thumbmarkjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34437451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"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":["blazor","blazorlibrary","csharp","dotnet","fingerprint","fingerprinting","id","identification","thumbmark","thumbmarkjs","thumbmarkjsinterop"],"created_at":"2025-06-15T06:00:36.427Z","updated_at":"2026-06-17T07:01:20.689Z","avatar_url":"https://github.com/soenneker.png","language":"CSS","funding_links":["https://github.com/sponsors/soenneker","https://thanks.dev/soenneker"],"categories":[],"sub_categories":[],"readme":"[![](https://img.shields.io/nuget/v/soenneker.blazor.thumbmarkjs.svg?style=for-the-badge)](https://www.nuget.org/packages/soenneker.blazor.thumbmarkjs/)\n[![](https://img.shields.io/github/actions/workflow/status/soenneker/soenneker.blazor.thumbmarkjs/publish-package.yml?style=for-the-badge)](https://github.com/soenneker/soenneker.blazor.thumbmarkjs/actions/workflows/publish-package.yml)\n[![](https://img.shields.io/nuget/dt/soenneker.blazor.thumbmarkjs.svg?style=for-the-badge)](https://www.nuget.org/packages/soenneker.blazor.thumbmarkjs/)\n[![](https://img.shields.io/github/actions/workflow/status/soenneker/soenneker.blazor.thumbmarkjs/codeql.yml?label=CodeQL\u0026style=for-the-badge)](https://github.com/soenneker/soenneker.blazor.thumbmarkjs/actions/workflows/codeql.yml)\n\n# ![](https://user-images.githubusercontent.com/4441470/224455560-91ed3ee7-f510-4041-a8d2-3fc093025112.png) Soenneker.Blazor.Thumbmarkjs\n### A Blazor interop library for the javascript fingerprinting library, [thumbmarkjs](https://github.com/thumbmarkjs/thumbmarkjs)\n\n[Demo](https://soenneker.github.io/soenneker.blazor.thumbmarkjs)\n\n## Installation\n\n```\ndotnet add package Soenneker.Blazor.Thumbmarkjs\n```\n\n## Usage\n\n### Basic Setup\n\n1. Register the service in your `Program.cs`:\n\n```csharp\nbuilder.Services.AddThumbmarkjsInteropAsScoped();\n```\n\n2. Add the component to your page or component:\n\n```razor\n\u003cThumbmarkjs @ref=\"_thumbmarkjs\" OnGenerated=\"OnGenerated\"\u003e\u003c/Thumbmarkjs\u003e\n```\n\n### Getting a Thumbmark (Fingerprint)\n\n```csharp\nprivate Thumbmarkjs _thumbmarkjs;\n\nprivate async Task Get()\n{\n    string fingerprint = await _thumbmarkjs.Get();\n}\n\npublic void OnGenerated(string thumbmark)\n{\n    // Handle the fingerprint when it's generated\n}\n\npublic void OnFingerprintDataGenerated(JsonElement data)\n{\n    // Handle the fingerprint when it's generated\n}\n```\n\n### Getting Detailed Data\n\n```csharp\nprivate async Task GetData()\n{\n    JsonElement? data = await _thumbmarkjs.GetData();\n    string jsonData = data?.ToString();\n    // Use the detailed data...\n}\n```\n\n### Configuring Options\n\n```csharp\nprivate async Task ConfigureOptions()\n{\n    var options = new ThumbmarkjsOptions\n    {\n        Exclude = [\"webgl\", \"audio\"], // Components to exclude\n        Timeout = 1000, // Timeout in milliseconds\n    };\n\n    await _thumbmarkjs.SetOptions(options);\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoenneker%2Fsoenneker.blazor.thumbmarkjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoenneker%2Fsoenneker.blazor.thumbmarkjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoenneker%2Fsoenneker.blazor.thumbmarkjs/lists"}