{"id":42272980,"url":"https://github.com/immutable/gu-composited-card","last_synced_at":"2026-01-27T07:30:21.285Z","repository":{"id":35122063,"uuid":"202462664","full_name":"immutable/gu-composited-card","owner":"immutable","description":"A simple, framework agnostic web component to facilitate the display of Gods Unchained card element(s).","archived":false,"fork":false,"pushed_at":"2025-02-27T01:42:43.000Z","size":5697,"stargazers_count":16,"open_issues_count":6,"forks_count":8,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-09-17T15:09:20.791Z","etag":null,"topics":["card","ethereum","gods-unchained","immutable"],"latest_commit_sha":null,"homepage":"https://immutable.github.io/gu-composited-card/","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/immutable.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}},"created_at":"2019-08-15T02:50:31.000Z","updated_at":"2025-02-27T01:42:04.000Z","dependencies_parsed_at":"2023-12-06T23:26:57.069Z","dependency_job_id":"8bc8a54b-f5e7-4367-ab35-b31a8fc74eca","html_url":"https://github.com/immutable/gu-composited-card","commit_stats":{"total_commits":265,"total_committers":6,"mean_commits":"44.166666666666664","dds":0.2075471698113207,"last_synced_commit":"25f29584b5e5d517f91840c546946bdb823c4fbd"},"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/immutable/gu-composited-card","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immutable%2Fgu-composited-card","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immutable%2Fgu-composited-card/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immutable%2Fgu-composited-card/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immutable%2Fgu-composited-card/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/immutable","download_url":"https://codeload.github.com/immutable/gu-composited-card/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immutable%2Fgu-composited-card/sbom","scorecard":{"id":485928,"data":{"date":"2025-08-11","repo":{"name":"github.com/immutable/gu-composited-card","commit":"5fcd97dc2847b3c10fa63b1d72d8b49df47812b9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/11 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"42 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-phwq-j96m-2c2q","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-5rrq-pxf6-6jx5","Warn: Project is vulnerable to: GHSA-8fr3-hfg3-gpgp","Warn: Project is vulnerable to: GHSA-gf8q-jrpm-jvxq","Warn: Project is vulnerable to: GHSA-2r2c-g63r-vccr","Warn: Project is vulnerable to: GHSA-cfm4-qjh2-4765","Warn: Project is vulnerable to: GHSA-x4jg-mjrx-434g","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T17:47:36.382Z","repository_id":35122063,"created_at":"2025-08-19T17:47:36.383Z","updated_at":"2025-08-19T17:47:36.383Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28808012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:14:39.408Z","status":"ssl_error","status_checked_at":"2026-01-27T07:14:39.098Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["card","ethereum","gods-unchained","immutable"],"created_at":"2026-01-27T07:30:16.380Z","updated_at":"2026-01-27T07:30:21.271Z","avatar_url":"https://github.com/immutable.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \\\u003ccomposited-card\\\u003e\n\nA simple, framework agnostic [web component](https://developer.mozilla.org/en-US/docs/Web/Web_Components) to facilitate the display of [Gods Unchained](https://godsunchained.com/) card element(s).\n\n## Component inputs\n\n### @property({ type: Number }) protoId\n\nA card's id/proto number. Either a protoId or inputProtoData must be provided for a card to render.\n\n### [Depreciated] @property({ type: Object }) inputProtoData\n\nAll the information needed to render a card. When this complete input is provided, the composited-card component will skip the card-data endpoint call.\nThis input should contain the following fields:\n\n```javascript\ntype: string; // \"creature\" | \"weapon\" | \"spell\" | \"god-power\";\neffect: string;\nname: string;\nrarity: string; // \"common\" | \"rare\" | \"epic\" | \"legendary\" | \"mythic\";\ngod: string; // \"war\" | \"magic\" | \"death\" | \"deception\" | \"nature\" | \"light\";\nset: string; // \"genesis\" | \"core\" | \"etherbots\"\ntribe: string; // \"amazon\" | \"aether\" | \"nether\" | \"atlantean\" | \"anubian\" | \"mystic\" | \"viking\" | \"dragon\" | \"guild\" | \"olympian\" | \"structure\" | \"wild\"\nmana: number;\nid: number;\nattack: number;\nhealth: number;\n```\n\n### @property({ type: Object }) inputCompositionData\n\nAll the information needed to render a card. When this complete input is provided, the composited-card component will skip the card-data endpoint call. \nThis input should contain the following fields:\n\n```javascript\ntype: string; // \"creature\" | \"weapon\" | \"spell\" | \"god-power\";\neffect: string;\nname: string;\nrarity: string; // \"common\" | \"rare\" | \"epic\" | \"legendary\" | \"mythic\";\ngod: string; // \"war\" | \"magic\" | \"death\" | \"deception\" | \"nature\" | \"light\";\nset: string; // \"genesis\" | \"core\" | \"etherbots\"\ntribe: string; // \"amazon\" | \"aether\" | \"nether\" | \"atlantean\" | \"anubian\" | \"mystic\" | \"viking\" | \"dragon\" | \"guild\" | \"olympian\" | \"structure\" | \"wild\"\nmana: number;\nid: number;\nattack: number;\nhealth: number;\ncomposition: object {\n  illustration: []string,\n  frame: []string,\n  rosette: []string,\n  gems: []string,\n  wreath: []string,\n  lock: []string,\n  tribe_bar: []string,\n  set: []string,\n}\n```\n\n### @property({ type: Boolean }) useLegacyQualityMapping\n\nOPTIONAL: A new kind of quality system has been developed in order to better support the on-chaining process for cards. This new system has a reduced number of qualities, in reversed order. We will be eventually deprecating the old quality system, but for now you can choose to use the old quality numbering system.\n\n### @property({ type: Number }) compositionVersion\n\nOPTIONAL: When set to 1 (the default) this will use the original card composition without support for card Variants.\n\n| Version        | Value          | Notes  |\n| :-------------: |:-------------:| :-----:|\n| ```V1``` | ![1](https://img.shields.io/badge/-1-lightgrey.svg) | [Default] original card composition without variants |\n| ```V2``` | ![2](https://img.shields.io/badge/-2-lightgrey.svg) | Uses the original card composition including variants support |\n\n### @property({ type: Number }) quality (5 - 1) | (0 - 7 for legacy) | (\u003e10 for Variants)\n\nOPTIONAL: a card's quality setting. When this input is missing, the a default quality setting of 5 will be used for all artwork/layers. 5 = 'plain', ... 1 = 'diamond'. \n\n*NOTE: if you choose to use the legacy quality mappings, then 0 \u0026 1 = 'plain' ... 8 = 'diamond'.\n\n### @property({ type: String }) filter\n\nOPTIONAL: a filter to apply to card illustrations. Applies to pre-supported cards.\n\n### @property({ type: String }) responsiveSrcsetSizes\n\nOPTIONAL: a sizes string to indicate to the browser, roughly how big images will be once they are rendered into the layout. If this input is missing, the cards will automatically use the lowest resolution assets available. To read more about this syntax and how it's used, go [here](https://css-tricks.com/sometimes-sizes-is-quite-important/). \\*NOTE: this needs to be an absolute measurement to work. For relative measurements, use calc() with vh/vw.\n\n## To use in any web project\n\n```bash\n$ yarn add composited-card\n```\nthen import it in your app's entry point eg:\n```javascript\nimport 'composited-card';\n```\nor you can also simply embed the bundled web component script in any HTML page eg:\n```html\n\u003cscript src=\"https://unpkg.com/composited-card@latest/dist/composited-card.packed.js\"\u003e\u003c/script\u003e\n```\nand then use it inside any markup file by inserting the following web-component tag:\n\n```html\n\u003ccomposited-card\n  protoId=\"584\"\n  quality=\"4\"\n  responsiveSrcsetSizes=\"(min-width: 600px) 160px, 320px\"\n\u003e\u003c/composited-card\u003e\n```\n*Note: just about all modern javascript frameworks can support and work with WebComponents, however some will need varying amounts of configuration to do so. To read more about implementing a web component into a specific framerwork, go [here](https://custom-elements-everywhere.com).\n\n## View a demo page\n\nload up a test page, with many different card types and sizes\n\n```bash\n$ yarn dev:demo\n```\n\n## For component contributers\n\n### Install dependencies\n\n```bash\n$ yarn install\n```\n\n### Viewing/developing docs\n\n```bash\n$ yarn dev:docs\n```\n\n#### Deploying docs\n\nThe github pages site hosts a demo page where you can play with the component. You must build the project following the below steps and commit the final webpack bundles before pushing it to the master branch which will trigger a github pages deployment.\n\n### Building for prod\n\n```bash\n$ yarn build\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimmutable%2Fgu-composited-card","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimmutable%2Fgu-composited-card","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimmutable%2Fgu-composited-card/lists"}