{"id":20857565,"url":"https://github.com/openlayers/eslint-config-openlayers","last_synced_at":"2025-09-11T04:45:04.762Z","repository":{"id":1210808,"uuid":"41608503","full_name":"openlayers/eslint-config-openlayers","owner":"openlayers","description":"ESLint config for OpenLayers","archived":false,"fork":false,"pushed_at":"2025-08-25T04:13:20.000Z","size":874,"stargazers_count":3,"open_issues_count":8,"forks_count":5,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-08-31T17:17:08.916Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/openlayers.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-08-29T21:57:01.000Z","updated_at":"2025-08-04T16:37:50.000Z","dependencies_parsed_at":"2023-12-04T08:25:51.504Z","dependency_job_id":"489b9fcc-ae7e-4dc0-b01e-830b811b8ca3","html_url":"https://github.com/openlayers/eslint-config-openlayers","commit_stats":{"total_commits":118,"total_committers":5,"mean_commits":23.6,"dds":"0.48305084745762716","last_synced_commit":"8d2938c7d7bd55326ded10d68a9b25cff3c273f7"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/openlayers/eslint-config-openlayers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlayers%2Feslint-config-openlayers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlayers%2Feslint-config-openlayers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlayers%2Feslint-config-openlayers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlayers%2Feslint-config-openlayers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openlayers","download_url":"https://codeload.github.com/openlayers/eslint-config-openlayers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlayers%2Feslint-config-openlayers/sbom","scorecard":{"id":709689,"data":{"date":"2025-08-11","repo":{"name":"github.com/openlayers/eslint-config-openlayers","commit":"9fb55a4b3ce742be447721178da037f9aa7737ca"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"Maintained","score":10,"reason":"12 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":-1,"reason":"Found no human activity in the last 15 changesets","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":"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":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/openlayers/eslint-config-openlayers/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/openlayers/eslint-config-openlayers/test.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"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":"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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 30 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":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw"],"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-22T07:46:08.723Z","repository_id":1210808,"created_at":"2025-08-22T07:46:08.723Z","updated_at":"2025-08-22T07:46:08.723Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274578521,"owners_count":25310958,"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-09-11T02:00:13.660Z","response_time":74,"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":[],"created_at":"2024-11-18T04:41:07.299Z","updated_at":"2025-09-11T04:45:04.712Z","avatar_url":"https://github.com/openlayers.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## eslint-config-openlayers\n\nThis package provides shareable [ESLint](http://eslint.org/) configurations for JavaScript projects that conform with the OpenLayers coding style.\n\n### Installation\n\nTo make use of this config, install ESLint and this package as a development dependency of your project:\n\n    npm install eslint eslint-config-openlayers --save-dev\n\nNext, create a `eslint.config.js` file at the root of your project.  This file should export the openlayers configuration along with any overrides your project might include:\n\n```js\n// eslint.config.js\nimport openlayers from 'eslint-config-openlayers';\n\nexport default [\n  ...openlayers\n];\n```\n\nSee the ESLint [configuration guide](http://eslint.org/docs/user-guide/configuring) for details on additional configuration options.  Any rules configured in your `eslint.config.js` file will override those provided by the `eslint-config-openlayers` package.\n\n### Use\n\nYou should run the linter as part of (or before) your tests.  Assuming tests are run before any proposed changes are merged, this will ensure coding standards are maintained in your default branch.  Using [npm scripts](https://docs.npmjs.com/misc/scripts) is the preferred way to run the linter without requiring it to be a global dependency.  Assuming you want to lint all JavaScript files in your project, add the following entry to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"pretest\": \"eslint src\"\n  }\n}\n```\n\nWith this `pretest` entry in your `package.json`, ESLint will run on all JavaScript files in the `src` directory of your project using your `.eslintrc` config when tests are run:\n\n    npm test\n\nSee the ESLint [CLI guide](http://eslint.org/docs/user-guide/command-line-interface) for additional options when running ESLint.\n\nIn addition to running the linter when your tests are run, you should configure your editor to run the linter as well.  See the [ESLint integration page](http://eslint.org/docs/user-guide/integrations#editors) to find details on configuring your editor to warn you of ESLint errors.\n\nIf you are using VSCode, you'll need to configure it to use ESLint's flat config syntax:\n```json\n{\n  \"eslint.useFlatConfig\": true\n}\n```\n\nSee the [examples directory](https://github.com/openlayers/eslint-config-openlayers/tree/main/examples) for more usage examples.\n\n### Development\n\nTo add another configuration profile, add a new config script to the root of the repository directory (e.g. `new-config.js`).  This script should export an ESLint config object and should have an `extends: './index.js' property`.  People using this config will add `extends/new-config` to their own ESLint config.\n\nYou should add and example for your new profile and ensure that tests pass with any changes.\n\n    npm test\n\nAfter adding a new config profile or modifying an existing one, publish a new version of the package.  Adding a new \"error\" level rule constitutes a major release.  A new profile or non-breaking modification to an existing profile (e.g. a \"warning\" level rule) can be a minor release.\n\nPublishing a new minor release would look like this:\n\n    # commit and push any changes first\n    npm version minor # this bumps the package.json version number and tags\n    git push --tags origin main\n    npm publish\n\n![Build Status](https://github.com/openlayers/eslint-config-openlayers/workflows/Test/badge.svg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenlayers%2Feslint-config-openlayers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenlayers%2Feslint-config-openlayers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenlayers%2Feslint-config-openlayers/lists"}