{"id":19168441,"url":"https://github.com/vaadin-developer/id-generator-for-flow","last_synced_at":"2025-08-25T07:18:15.001Z","repository":{"id":57745210,"uuid":"181709800","full_name":"vaadin-developer/id-generator-for-flow","owner":"vaadin-developer","description":"IDGenerator for Flow","archived":false,"fork":false,"pushed_at":"2020-05-15T05:46:42.000Z","size":93,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-02T07:41:20.031Z","etag":null,"topics":["flow","idgenerator","ruppert","sven","vaadin"],"latest_commit_sha":null,"homepage":null,"language":"Java","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/vaadin-developer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-16T14:47:12.000Z","updated_at":"2022-04-08T22:53:10.000Z","dependencies_parsed_at":"2022-08-30T12:31:14.181Z","dependency_job_id":null,"html_url":"https://github.com/vaadin-developer/id-generator-for-flow","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/vaadin-developer/id-generator-for-flow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaadin-developer%2Fid-generator-for-flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaadin-developer%2Fid-generator-for-flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaadin-developer%2Fid-generator-for-flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaadin-developer%2Fid-generator-for-flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vaadin-developer","download_url":"https://codeload.github.com/vaadin-developer/id-generator-for-flow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaadin-developer%2Fid-generator-for-flow/sbom","scorecard":{"id":914175,"data":{"date":"2025-08-11","repo":{"name":"github.com/vaadin-developer/id-generator-for-flow","commit":"c05058647f8063e24196de4321524d9447d19cf4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.2,"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":"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":"Code-Review","score":0,"reason":"Found 0/14 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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"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":"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":"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":"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":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating svenruppert/maven-3.6.2-adopt:1.8.212-04 to svenruppert/maven-3.6.2-adopt:1.8.212-04@sha256:2b754e23af99bfdecb1f866003e909ee375b78ea57e06edf241b35be535ceda5","Warn: downloadThenRun not pinned by hash: Dockerfile:23-26","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"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":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-25xc-jwfq-39jw","Warn: Project is vulnerable to: GHSA-49r2-73m6-pp8f","Warn: Project is vulnerable to: GHSA-5f9v-mv5g-jh5q","Warn: Project is vulnerable to: GHSA-8vfw-v2jv-9hwc","Warn: Project is vulnerable to: GHSA-c57f-4vp2-jqhm","Warn: Project is vulnerable to: GHSA-ch48-9r3q-pv7x","Warn: Project is vulnerable to: GHSA-fr26-qjc8-mvjx","Warn: Project is vulnerable to: GHSA-xwg3-qrcg-w9x6","Warn: Project is vulnerable to: GHSA-crh4-294p-vcfq","Warn: Project is vulnerable to: GHSA-hfrx-6qgj-fp6c","Warn: Project is vulnerable to: GHSA-vv7r-c36w-3prj","Warn: Project is vulnerable to: GHSA-78wr-2p64-hpwj","Warn: Project is vulnerable to: GHSA-gwrp-pvrq-jmwv","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-2qp4-g3q3-f92w","Warn: Project is vulnerable to: GHSA-cqj8-47ch-rvvq","Warn: Project is vulnerable to: GHSA-gp7f-rwcx-9369","Warn: Project is vulnerable to: GHSA-m72m-mhq2-9p6c","Warn: Project is vulnerable to: GHSA-93c4-vf86-3rj7"],"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-24T20:22:39.328Z","repository_id":57745210,"created_at":"2025-08-24T20:22:39.328Z","updated_at":"2025-08-24T20:22:39.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272022507,"owners_count":24860205,"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","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"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":["flow","idgenerator","ruppert","sven","vaadin"],"created_at":"2024-11-09T09:42:40.748Z","updated_at":"2025-08-25T07:18:14.961Z","avatar_url":"https://github.com/vaadin-developer.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IDGenerator for Flow\n\n## No Vaadin Directory anymore\n**This AddOn is no longer available in the Vaadin Directory**\nThe deployment process is way to manually. So I decided to use maven central only.\n\n## Why this IDGenerator?\nIf IDs for components needed in a project, it makes sense to use an ID generator. \nWith this, you get in a project ID's that always built according to the same scheme.\nRelevant here is that these numbers kept in human-readable form. \nThis strategy facilitates the assignment of log messages to the particular source code point later during operation.\n\nAnother requirement is the uniqueness of identification numbers. \nWith this, it is the only way to guarantee that the tests based on it work flawlessly.\n\nTo use this ID generator now, you can use the static methods in the interface named **VaadinIDGenerator**. \nThe method **genericID** returns a generic and neutral ID generator. \nThis result is a function with three input parameters. \nBased on these parameters, the ID will be generated.\n\n```java\n  static TriFunction\u003cClass, Class, String, String\u003e genericID() {\n    return (uiClass , componentClass , label)\n        -\u003e (uiClass.getSimpleName()\n            + \"-\" + componentClass.getSimpleName()\n            + \"-\" + label.replace(\" \" , \"-\"))\n        .toLowerCase(Locale.US);\n  }\n```\n\nTo take the next step, you can specialise the ID generators on the particular component types. \nThis refers to the components contained in Vaadin Flow, such as the button.\n\n```java\n  static Function\u003cClass, BiFunction\u003cClass, String, String\u003e\u003e typedComponentIDGenerator() {\n    return (clazz) -\u003e (uiClass , label) -\u003e genericID().apply(uiClass , clazz , label);\n  }\n  \n  static BiFunction\u003cClass, String, String\u003e buttonID() {\n    return typedComponentIDGenerator().apply(Button.class);\n  }\n```\n\nTo use this ID generator, only the class which should hold the \nparticular element and a logical identifier which then leads to the \ndomain-specific name of the individual components is needed at the place of use.\n\n```java\n  public static final String BTN_CLICK_ME_ID = buttonID().apply(ClickCounterWorkspace.class, \"btn-click-me\");\n  public static final String LB_CLICK_COUNT_ID = spanID().apply(ClickCounterWorkspace.class, \"lb-click-count\");\n```\n\nBut not only identification numbers benefit from this ID generator. \nYou can just as well use this method to generate unique keys for the I18n mechanism. \nHere only a slightly modified structure is used.\n\n```java\n  static Function\u003cString, String\u003e caption() {\n    return (id) -\u003e id + \".\" + \"caption\";\n  }\n\n  static Function\u003cString, String\u003e placeholder() {\n    return (id) -\u003e id + \".\" + \"placeholder\";\n  }\n```\n\n## Available / typed IDGenerators\n* Vaadin Grid \n* Vaadin Button \n* Vaadin Combo Box\n* Vaadin Date Picker\n* Vaadin Label\n* Vaadin Span\n* Vaadin Text Field - Text / Password\n* Vaadin Checkbox\n* Vaadin Ordered Layout - Horizontal / Vertical\n* Vaadin Context Menu\n* Vaadin Time Picker\n* Vaadin Details \n* Vaadin Dialog \n* Vaadin Select\n* Vaadin Form Layout\n* Vaadin Icons\n* Vaadin List Box \n* Vaadin Progress Bar \n* Vaadin Radio Button\n* Vaadin Split Layout\n* Vaadin Tabs \n* Vaadin Upload \n* Vaadin Custom Field \n\n* Vaadin Charts \n* Vaadin Grid Pro \n* Vaadin Rich Text Editor \n* Vaadin Crud \n* Vaadin Cookie Consent \n* Vaadin Confirm Dialog \n\n\n## Backlog\n* Vaadin Accordion\n* Vaadin Item \n* Vaadin Notification \n* Vaadin App Layout \n* Vaadin Login \n* Vaadin Board \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaadin-developer%2Fid-generator-for-flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaadin-developer%2Fid-generator-for-flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaadin-developer%2Fid-generator-for-flow/lists"}