{"id":18416644,"url":"https://github.com/mcaptcha/glue","last_synced_at":"2025-08-20T03:31:27.488Z","repository":{"id":40670402,"uuid":"345965252","full_name":"mCaptcha/glue","owner":"mCaptcha","description":"glue code to setup mCaptcha on your website","archived":false,"fork":false,"pushed_at":"2024-07-15T10:21:58.000Z","size":5227,"stargazers_count":8,"open_issues_count":13,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-15T23:36:15.144Z","etag":null,"topics":["browser","captcha","javascript","mcaptcha","pow","proof-of-work","react","rust","svelte","sveltejs","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mCaptcha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSES/Apache-2.0.txt","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},"funding":{"open_collective":null,"liberapay":"mcaptcha","issuehunt":null,"custom":["https://mcaptcha.org/donate"]}},"created_at":"2021-03-09T10:17:30.000Z","updated_at":"2024-11-04T03:11:02.000Z","dependencies_parsed_at":"2023-02-08T09:31:11.127Z","dependency_job_id":"5f1c094e-f8a1-4535-9f8b-15860a29008e","html_url":"https://github.com/mCaptcha/glue","commit_stats":{"total_commits":83,"total_committers":3,"mean_commits":"27.666666666666668","dds":0.02409638554216864,"last_synced_commit":"303e29761683a3b47f4717d89845bfd497657eb8"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fglue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fglue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fglue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fglue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mCaptcha","download_url":"https://codeload.github.com/mCaptcha/glue/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230388131,"owners_count":18217755,"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":["browser","captcha","javascript","mcaptcha","pow","proof-of-work","react","rust","svelte","sveltejs","typescript"],"created_at":"2024-11-06T04:06:24.520Z","updated_at":"2024-12-19T06:09:45.048Z","avatar_url":"https://github.com/mCaptcha.png","language":"TypeScript","funding_links":["https://liberapay.com/mcaptcha","https://mcaptcha.org/donate"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eGlue\u003c/h1\u003e\n\u003cstrong\u003eCode to embed mCaptcha widget\u003c/strong\u003e\n\n[![0.1.0](https://img.shields.io/badge/TypeScript_docs-master-2b7489)](https://mcaptcha.github.io/glue/)\n![Build)](\u003chttps://github.com/mCaptcha/glue/workflows/CI%20(Linux)/badge.svg\u003e)\n[![codecov](https://codecov.io/gh/mCaptcha/glue/branch/master/graph/badge.svg)](https://codecov.io/gh/mCaptcha/glue)\n\n\u003c/div\u003e\n\nmCaptcha widget should be loaded within an `iframe`\n\n1. The user clicks on the validation button\n2. The widget(within the `iframe`) computes proof-of-work\n3. Sends it to the mCaptcha (backend)instance\n4. If proof is valid, mCaptcha instance will send a verification token\n5. Widget sends parent webpage(webpage containing the `iframe`) a\n   message containing the verification token\n6. Glue code receives message and embeds the token in a hidden input\n   field with name and ID `mcaptcha__token`\n\nThe glue code is responsible receiving and embedding the token and\noptionally create the `iframe` itself.\n\n## Framework Support\n\nTo provide a smooth migration experience, glue code is implemented for\nthe following frameworks. If you wish to see your framework supported,\nplease open an issue!\n\n| Framework                        | Source Code                            | Documentation                                                                                                   | npm package name                                                                                                        |\n| -------------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |\n| Vanilla JavaScript(No Framework) | [packages/vanilla](./packages/vanilla) | [![0.1.0](https://img.shields.io/badge/TypeScript_docs-master-2b7489)](https://mcaptcha.github.io/glue/vanilla) | [![NPM](https://img.shields.io/npm/v/@mcaptcha/vanilla-glue.svg)](https://www.npmjs.com/package/@mcaptcha/vanilla-glue) |\n| React JS                         | [packages/react](./packages/react)     | [![0.1.0](https://img.shields.io/badge/TypeScript_docs-master-2b7489)](https://mcaptcha.github.io/glue/react/)  | [![NPM](https://img.shields.io/npm/v/@mcaptcha/react-glue.svg)](https://www.npmjs.com/package/@mcaptcha/react-glue)     |\n| Next.JS                         | [packages/react](./packages/react)     | [![0.1.0](https://img.shields.io/badge/TypeScript_docs-master-2b7489)](https://mcaptcha.github.io/glue/react/)  | [![NPM](https://img.shields.io/npm/v/@mcaptcha/react-glue.svg)](https://www.npmjs.com/package/@mcaptcha/react-glue)     |\n| Svelte JS                        | [packages/svelte](./packages/svelte)   | [![0.1.0](https://img.shields.io/badge/TypeScript_docs-master-2b7489)](https://mcaptcha.github.io/glue/svelte/) | [![NPM](https://img.shields.io/npm/v/@mcaptcha/svelte-glue.svg)](https://www.npmjs.com/package/@mcaptcha/svelte-glue)   |\n\n## Core library\n\n[![NPM](https://img.shields.io/npm/v/@mcaptcha/core-glue.svg)](https://www.npmjs.com/package/@mcaptcha/core-glue)\n\nFramework-specific implementation provide markup(HTML) and hooks into\nreactive state, the core functionality is implemented in\n`@mcaptcha/core-glue`.\n\nTo implement `glue` for an unsupported framework, checkout\n[`@mcaptcha/core-glue`](https://www.npmjs.com/package/@mcaptcha/core-glue).\n\n## Funding\n\n### NLnet\n\n\u003cdiv align=\"center\"\u003e\n\t\u003cimg\n\t\theight=\"150px\"\n\t\talt=\"NLnet NGIZero logo\"\n\t\tsrc=\"./static/third-party/NGIZero-green.hex.svg\"\n\t/\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n2023 development is funded through the [NGI0 Entrust\nFund](https://nlnet.nl/entrust), via [NLnet](https://nlnet.nl/). Please\nsee [here](https://nlnet.nl/project/mCaptcha/) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcaptcha%2Fglue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcaptcha%2Fglue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcaptcha%2Fglue/lists"}