An open API service providing repository metadata for many open source software ecosystems.

GitHub / immutable-js / immutable-js

Immutable persistent data collections for Javascript which increase efficiency and simplicity.

JSON API: http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immutable-js%2Fimmutable-js
PURL: pkg:github/immutable-js/immutable-js

Stars: 33,097
Forks: 1,777
Open issues: 114

License: mit
Language: TypeScript
Size: 124 MB
Dependencies parsed at: Pending

Created at: over 11 years ago
Updated at: 5 days ago
Pushed at: 4 days ago
Last synced at: 4 days ago

Commit Stats

Commits: 1610
Authors: 228
Mean commits per author: 7.06
Development Distribution Score: 0.328
More commit stats: https://commits.ecosyste.ms/hosts/GitHub/repositories/immutable-js/immutable-js

Funding Links https://github.com/sponsors/jdeniau

OpenSSF Scorecard report

6.5

Overall Score

10/10 Critical Risk
27/50 High Risk
35/50 Medium Risk
10/20 Low Risk
Generated on August 11, 2025 | Scorecard vv5.2.1-40-gf6ed084d
Security Checks
10/10
Binary-Artifacts
High Risk

no binaries found in the repo

Determines if the project has generated executable (binary) artifacts in the source repository.

10/10
Dangerous-Workflow
Critical Risk

no dangerous workflow patterns detected

Determines if the project's GitHub Action workflows avoid dangerous patterns.

10/10
Fuzzing
Medium Risk

project is fuzzed

Determines if the project uses fuzzing.

Show details
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Conversion.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Equality.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/KeyedSeq.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/List.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Map.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Range.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Stack.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/hash.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/join.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/minmax.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/slice.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/splice.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/zip.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Conversion.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Equality.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/KeyedSeq.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/List.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Map.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Range.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/Stack.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/hash.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/join.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/minmax.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/slice.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/splice.ts:2
ℹ️ Info: TypeScriptPropertyBasedTesting integration found: __tests__/zip.ts:2
10/10
License
Low Risk

license file detected

Determines if the project has defined a license.

Show details
ℹ️ Info: project has a license file: LICENSE:0
ℹ️ Info: FSF or OSI recognized license: MIT License: LICENSE:0
10/10
Maintained
High Risk

30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10

Determines if the project is "actively maintained".

10/10
Packaging
Medium Risk

packaging workflow detected

Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.

Show details
ℹ️ Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:9
10/10
Security-Policy
Medium Risk

security policy file detected

Determines if the project has published a security policy.

Show details
ℹ️ Info: security policy file detected: SECURITY.md:1
ℹ️ Info: Found linked content: SECURITY.md:1
ℹ️ Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1
ℹ️ Info: Found text in security policy: SECURITY.md:1
6/10
Vulnerabilities
High Risk

4 existing vulnerabilities detected

Determines if the project has open, known unfixed vulnerabilities.

Show details
⚠️ Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7
⚠️ Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw
⚠️ Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4
⚠️ Warn: Project is vulnerable to: GHSA-r2fc-ccr8-96c4
5/10
Pinned-Dependencies
Medium Risk

dependency not pinned by hash detected -- score normalized to 5

Determines if the project has declared and pinned the dependencies of its build process.

Show details
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:110: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:123: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:133: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:89: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:92: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/ci.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/output_diff.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/output_diff.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/output_diff.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/output_diff.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/output_diff.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/output_diff.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/output_diff.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/output_diff.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/release.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/release.yml/main?enable=pin
⚠️ Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/immutable-js/immutable-js/release.yml/main?enable=pin
ℹ️ Info: 0 out of 23 GitHub-owned GitHubAction dependencies pinned
ℹ️ Info: 0 out of 2 third-party GitHubAction dependencies pinned
ℹ️ Info: 8 out of 8 npmCommand dependencies pinned
1/10
Code-Review
High Risk

Found 2/14 approved changesets -- score normalized to 1

Determines if the project requires human code review before pull requests (aka merge requests) are merged.

0/10
CII-Best-Practices
Low Risk

no effort to earn an OpenSSF best practices badge detected

Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.

0/10
SAST
Medium Risk

SAST tool is not run on all commits -- score normalized to 0

Determines if the project uses static code analysis.

Show details
⚠️ Warn: 0 commits out of 25 are checked with a SAST tool
0/10
Token-Permissions
High Risk

detected GitHub workflow tokens with excessive permissions

Determines if the project's workflows follow the principle of least privilege.

Show details
ℹ️ Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:12
⚠️ Warn: no topLevel permission defined: .github/workflows/ci.yml:1
⚠️ Warn: no topLevel permission defined: .github/workflows/output_diff.yml:1
⚠️ Warn: no topLevel permission defined: .github/workflows/release.yml:1
ℹ️ Info: no jobLevel write permissions found
N/A
Branch-Protection
Not Applicable

internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration

Determines if the default and release branches are protected with GitHub's branch protection settings.

N/A
Signed-Releases
Not Applicable

no releases found

Determines if the project cryptographically signs release artifacts.