{"id":24774213,"url":"https://github.com/flex-development/log","last_synced_at":"2025-10-11T23:30:35.638Z","repository":{"id":46303623,"uuid":"398562711","full_name":"flex-development/log","owner":"flex-development","description":":knot: a small logging library","archived":false,"fork":false,"pushed_at":"2025-10-02T23:06:03.000Z","size":4948,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-03T01:14:38.708Z","etag":null,"topics":["log","log-util","logging"],"latest_commit_sha":null,"homepage":"https://github.com/flex-development/log","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flex-development.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/funding.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["flex-development"]}},"created_at":"2021-08-21T13:18:38.000Z","updated_at":"2025-10-02T23:06:06.000Z","dependencies_parsed_at":"2025-04-29T01:29:41.044Z","dependency_job_id":"61b925a1-e720-4cdc-acb3-f6b703b6a576","html_url":"https://github.com/flex-development/log","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/flex-development/log","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flex-development%2Flog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flex-development%2Flog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flex-development%2Flog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flex-development%2Flog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flex-development","download_url":"https://codeload.github.com/flex-development/log/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flex-development%2Flog/sbom","scorecard":{"id":403119,"data":{"date":"2025-08-11","repo":{"name":"github.com/flex-development/log","commit":"0e555a9ab42f92399780533ac7106802186dfae3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/6 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":"Maintained","score":10,"reason":"30 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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: script injection with untrusted input ' startsWith(github.head_ref || github.ref_name, 'release/') \u0026\u0026 steps.version-manifest.outputs.result || format('{0}+{1}', steps.version-manifest.outputs.result, github.event.pull_request.head.sha || github.sha) ': .github/workflows/ci.yml:94","Warn: script injection with untrusted input ' github.event.head_commit.message ': .github/workflows/release-chore.yml:82"],"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 5.0.0-alpha.4 not signed: https://api.github.com/repos/flex-development/log/releases/239832020","Warn: release artifact 5.0.0-alpha.3 not signed: https://api.github.com/repos/flex-development/log/releases/224470018","Warn: release artifact 5.0.0-alpha.2 not signed: https://api.github.com/repos/flex-development/log/releases/221960651","Warn: release artifact 5.0.0-alpha.1 not signed: https://api.github.com/repos/flex-development/log/releases/209095413","Warn: release artifact log@4.0.1-dev.3 not signed: https://api.github.com/repos/flex-development/log/releases/52419223","Warn: release artifact 5.0.0-alpha.4 does not have provenance: https://api.github.com/repos/flex-development/log/releases/239832020","Warn: release artifact 5.0.0-alpha.3 does not have provenance: https://api.github.com/repos/flex-development/log/releases/224470018","Warn: release artifact 5.0.0-alpha.2 does not have provenance: https://api.github.com/repos/flex-development/log/releases/221960651","Warn: release artifact 5.0.0-alpha.1 does not have provenance: https://api.github.com/repos/flex-development/log/releases/209095413","Warn: release artifact log@4.0.1-dev.3 does not have provenance: https://api.github.com/repos/flex-development/log/releases/52419223"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish.yml:111","Warn: jobLevel 'packages' permission set to 'write': .github/workflows/publish.yml:113","Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish.yml:39","Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish.yml:75","Warn: jobLevel 'packages' permission set to 'write': .github/workflows/publish.yml:77","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:48","Warn: no topLevel permission defined: .github/workflows/add-to-project.yml:1","Warn: no topLevel permission defined: .github/workflows/auto-merge.yml:1","Warn: no topLevel permission defined: .github/workflows/auto-review.yml:1","Warn: topLevel 'actions' permission set to 'write': .github/workflows/cache-cleanup.yml:32","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:39","Warn: no topLevel permission defined: .github/workflows/dependabot-dedupe.yml:1","Warn: no topLevel permission defined: .github/workflows/infrastructure.yml:1","Warn: no topLevel permission defined: .github/workflows/integrity.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/release-chore.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1"],"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":"Branch-Protection","score":8,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Warn: codeowners review is not required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Info: 'up-to-date branches' is required to merge on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: invalid parameter name: .github/workflows/ci.yml:94","Info: Possibly incomplete results: error parsing shell code: invalid parameter name: .github/workflows/ci.yml:361","Info: Possibly incomplete results: error parsing shell code: invalid parameter name: .github/workflows/publish.yml:59","Info: Possibly incomplete results: error parsing shell code: invalid parameter name: .github/workflows/release-chore.yml:173","Info: Possibly incomplete results: error parsing shell code: invalid parameter name: .github/workflows/release.yml:71","Warn: third-party GitHubAction not pinned by hash: .github/workflows/add-to-project.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/add-to-project.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add-to-project.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/add-to-project.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add-to-project.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/add-to-project.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/auto-merge.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/auto-merge.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/auto-merge.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/auto-merge.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/auto-merge.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/auto-merge.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/auto-review.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/auto-review.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/auto-review.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/auto-review.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/auto-review.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/auto-review.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/auto-review.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/auto-review.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cache-cleanup.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/cache-cleanup.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cache-cleanup.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/cache-cleanup.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:182: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:188: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:195: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:211: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:217: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:224: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:242: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:248: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:255: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:267: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:290: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:296: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:304: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:318: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:324: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:330: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:365: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:372: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:379: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:402: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:109: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:116: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:135: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:153: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:159: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:166: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot-dedupe.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/dependabot-dedupe.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dependabot-dedupe.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/dependabot-dedupe.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dependabot-dedupe.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/dependabot-dedupe.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dependabot-dedupe.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/dependabot-dedupe.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot-dedupe.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/dependabot-dedupe.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/infrastructure.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/infrastructure.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/infrastructure.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/infrastructure.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/infrastructure.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/infrastructure.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/infrastructure.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/infrastructure.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integrity.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/integrity.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/label-linked-issues.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/label-linked-issues.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/label-linked-issues.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/label-linked-issues.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/label-linked-issues.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/label-linked-issues.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/label-linked-issues.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/label-linked-issues.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:92: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:128: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-chore.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-chore.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:112: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:129: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:135: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:143: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-chore.yml:165: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:184: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-chore.yml:190: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release-chore.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:92: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:111: update your workflow using https://app.stepsecurity.io/secureworkflow/flex-development/log/release.yml/main?enable=pin","Info:   0 out of  60 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  22 third-party GitHubAction 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":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-cj7v-w2c7-cp7c","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 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"}}]},"last_synced_at":"2025-08-18T20:33:02.231Z","repository_id":46303623,"created_at":"2025-08-18T20:33:02.232Z","updated_at":"2025-08-18T20:33:02.232Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009392,"owners_count":26084580,"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-10-11T02:00:06.511Z","response_time":55,"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":["log","log-util","logging"],"created_at":"2025-01-29T05:35:46.272Z","updated_at":"2025-10-11T23:30:35.630Z","avatar_url":"https://github.com/flex-development.png","language":"TypeScript","funding_links":["https://github.com/sponsors/flex-development"],"categories":[],"sub_categories":[],"readme":"# \\:knot: log\n\n[![ci](https://github.com/flex-development/log/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/flex-development/log/actions/workflows/ci.yml)\n[![github release](https://img.shields.io/github/v/release/flex-development/log.svg?include_prereleases\\\u0026sort=semver)](https://github.com/flex-development/log/releases/latest)\n[![npm](https://img.shields.io/npm/v/@flex-development/log.svg)](https://npmjs.com/package/@flex-development/log)\n[![npm downloads](https://img.shields.io/npm/dm/@flex-development/log.svg)](https://www.npmcharts.com/compare/@flex-development/log?interval=30)\n[![install size](https://packagephobia.now.sh/badge?p=@flex-development/log)](https://packagephobia.now.sh/result?p=@flex-development/log)\n[![codecov](https://codecov.io/gh/flex-development/log/graph/badge.svg?token=WUMNLAPIDX)](https://codecov.io/gh/flex-development/log)\n[![module type: esm](https://img.shields.io/badge/module%20type-esm-brightgreen)](https://github.com/voxpelli/badges-cjs-esm)\n[![license](https://img.shields.io/github/license/flex-development/log.svg)](LICENSE.md)\n[![conventional commits](https://img.shields.io/badge/-conventional%20commits-fe5196?logo=conventional-commits\\\u0026logoColor=ffffff)](https://conventionalcommits.org)\n[![typescript](https://img.shields.io/badge/-typescript-3178c6?logo=typescript\\\u0026logoColor=ffffff)](https://typescriptlang.org)\n[![vitest](https://img.shields.io/badge/-vitest-6e9f18?style=flat\\\u0026logo=vitest\\\u0026logoColor=ffffff)](https://vitest.dev)\n[![yarn](https://img.shields.io/badge/-yarn-2c8ebb?style=flat\\\u0026logo=yarn\\\u0026logoColor=ffffff)](https://yarnpkg.com)\n\nLog messages in the terminal and browser\n\n## Contents\n\n- [What is this?](#what-is-this)\n- [Why this package?](#why-this-package)\n- [Install](#install)\n- [Use](#use)\n- [API](#api)\n  - [`logger`](#logger)\n  - [`createLogger`](#createloggeroptions)\n  - [`logLevels`](#loglevels)\n  - [`Reporter`](#reporter)\n  - [`BaseReporter`](#basereporter)\n  - [`FancyReporter`](#fancyreporter)\n- [Types](#types)\n  - [`Logger`](#logger-1)\n  - [`Create`](#create)\n  - [`InputLogObject`](#inputlogobject)\n  - [`Inspect`](#inspect)\n  - [`InspectOptions`](#inspectoptions)\n  - [`LogFormatOptions`](#logformatoptions)\n  - [`LogFunction`](#logfunction)\n  - [`LogFunctions`](#logfunctions)\n  - [`LogLevel`](#loglevel)\n  - [`LogLevelMap`](#loglevelmap)\n  - [`LogLevelOption`](#logleveloption)\n  - [`LogLevelType`](#logleveltype)\n  - [`LogObject`](#logobject)\n  - [`LogType`](#logtype)\n  - [`LogTypeFunctions`](#logtypefunctions)\n  - [`LogTypeMap`](#logtypemap)\n  - [`LoggerOptions`](#loggeroptions)\n  - [`ReportersOption`](#reportersoption)\n  - [`WithDefaults`](#withdefaults)\n  - [`WithTag`](#withtag)\n  - [`Write`](#write)\n  - [`WriteStream`](#writestream)\n- [Contribute](#contribute)\n\n## What is this?\n\nThis is a small, but useful, library for logging messages in the terminal and browser consoles.\n\nColorful messages can be logged in the terminal and browser consoles that support ANSI colors.\n\n## Why this package?\n\n\\:ok\\_hand: Easy to use\\\n\\:electric\\_plug: Pluggable reporters\\\n\\:computer: Consistent terminal experience\\\n\\:bookmark: Tag support\\\n\\:globe\\_with\\_meridians: Browser support\n\n## Install\n\nThis package is [ESM only][esm].\n\nIn Node.js (20+) with [yarn][]:\n\n```sh\nyarn add @flex-development/log\n```\n\n\u003cblockquote\u003e\n  \u003csmall\u003e\n    See \u003ca href='https://yarnpkg.com/protocol/git'\u003eGit - Protocols | Yarn\u003c/a\u003e\n    \u0026nbsp;for details regarding installing from Git.\n  \u003c/small\u003e\n\u003c/blockquote\u003e\n\nIn Deno with [`esm.sh`][esmsh]:\n\n```ts\nimport { createLogger } from 'https://esm.sh/@flex-development/log'\n```\n\nIn browsers with [`esm.sh`][esmsh]:\n\n```html\n\u003cscript type=\"module\"\u003e\n  import { logger } from 'https://esm.sh/@flex-development/log'\n\u003c/script\u003e\n```\n\nWith [bun][]:\n\n```sh\nbun add @flex-development/log\n```\n\n\u003cblockquote\u003e\n  \u003csmall\u003e\n    See \u003ca href='https://bun.com/docs/cli/add'\u003e\u003ccode\u003ebun add\u003c/code\u003e\u003c/a\u003e for more details.\n  \u003c/small\u003e\n\u003c/blockquote\u003e\n\n## Use\n\n```js\nimport { logger } from '@flex-development/log'\n\nlogger.info('Using @flex-development/log 5.0.0')\nlogger.start('Building project...')\nlogger.warn('A new version of @flex-development/log is available: 5.0.1')\nlogger.success('Project built!')\nlogger.fail(new Error('This is an example error. Everything is fine!'))\n```\n\nWill display in the terminal:\n\n![preview](./preview.png)\n\n## API\n\nThis package exports the following identifiers:\n\n- [`logger`](#logger)\n- [`createLogger`](#createloggeroptions)\n- [`logLevels`](#loglevels)\n- [`Reporter`](#reporter)\n- [`BaseReporter`](#basereporter)\n- [`FancyReporter`](#fancyreporter)\n\nThe default export is `logger`.\n\n### `logger`\n\n([`Logger`](#logger-1)) The default, pre-configured logger.\nLogs are written using the [`FancyReporter`](#fancyreporter).\n\n### `createLogger([options])`\n\nCreate a new logger.\n\n#### Parameters\n\n- `options` ([`LogLevelOption`](#logleveloption) | [`LoggerOptions`](#loggeroptions), optional)\n  — Log level or configuration options\n\n#### Returns\n\n([`Logger`](#logger-1)) Logger object\n\n### `logLevels`\n\n(`Readonly\u003cRecord\u003cLogType, LogLevel\u003e\u003e`) Map where each key is a [log type](#logtype)\nand each value is a [log level](#loglevel).\n\n### `Reporter`\n\nLog reporter (`abstract class`).\n\n#### Properties\n\n- `logger` ([`Logger`](#logger-1))\n  — the logger `this` reporter writes to\n\n#### Methods\n\n##### `init(logger)`\n\nInitialize the reporter.\n\n###### Parameters\n\n- `logger` ([`Logger`](#logger-1))\n  — the logger `this` reporter writes to\n\n###### Returns\n\n(`this`) `this` reporter\n\n##### `abstract report(info)`\n\nDefine how a log message is processed and displayed by `this` reporter.\n\n###### Parameters\n\n- `info` ([`LogObject`](#logobject))\n  — the log information to process\n\n###### Returns\n\n(`undefined | void`) Nothing.\n\n### `BaseReporter`\n\nLog reporter with basic utilities (`abstract class`).\n\n#### Extends\n\n- [`Reporter`](#reporter)\n\n### `FancyReporter`\n\nFancy log reporter (`class`).\n\n#### Extends\n\n- [`BaseReporter`](#basereporter)\n\n## Types\n\nThis package is fully typed with [TypeScript][].\n\n### `Logger`\n\nLogger API (TypeScript interface).\n\n#### Extends\n\n- [`LogFunctions`](#logfunctions)\n\n#### Properties\n\n- `browser` (`boolean`, `readonly`)\n  — whether the logger is operating in a browser environment\n- `get color(): boolean`\n  — whether color logs are enabled\n- `set color(color: boolean | null | undefined)`\n  — enable or disable color log. color will be disabled if not supported\n  - `color` (`boolean | null | undefined`)\n    — color logs enabled?\n- `get colors():` [`Colors`][colors-color]\n  — get a colorizer based on the current `color` configuration\n- `create` ([`Create`](#create))\n  — create a new logger, inheriting options from the current instance, with possible overrides\n- `defaults` ([`InputLogObject`](#inputlogobject))\n  — properties to apply to all logs, regardless of log type or level\n- `eol` (`string`)\n  — the character, or characters, used to signify the end of a line\n- `format` ([`LogFormatOptions`](#logformatoptions))\n  — formatting options\n- `get level():` [`LogLevel`](#loglevel)\n  — get the current log level\n- `set level(level: LogLevelOption | null | undefined)`\n  — set the maximum log level to output\n  - `level` ([`LogLevelOption`](#logleveloption) | `null` | `undefined`)\n    — maximum log level (inclusive)\n- `levels` ([`Readonly\u003cLogLevelMap\u003e`](#loglevelmap), `readonly`)\n  — log level map\n- `reporters` ([`Set\u003cReporter\u003e`](#reporter), `readonly`)\n  — list of reporter instances used to handle and output log messages\n- `stderr` ([`WriteStream`](#writestream))\n  — the writeable stream for standard error output\n- `stdout` ([`WriteStream`](#writestream))\n  — the writeable stream for standard output\n- `types` (`Record\u003cLogType, InputLogObject\u003e`)\n  — record, where each key is a [`LogType`](#logtype) and each value is an [`InputLogObject`](#inputlogobject) defining\n  the configuration for the log type\n- `unicode` (`boolean`)\n  — whether unicode is supported\n- `withDefaults` ([`WithDefaults`](#withdefaults))\n  — create a new logger with the specified default log object properties\n- `withTag` ([`WithTag`](#withtag))\n  — create a new logger with the specified tag. the tag will be included in any logs sent from the new logger\n\n### `Create`\n\nCreate a new logger, inheriting options from the current instance, with possible overrides (TypeScript interface).\n\nPlain objects (i.e. `options.format`, `options.types`) are merged recursively.\n\n#### Parameters\n\n- `options` ([`LoggerOptions`](#loggeroptions), optional)\n  — overrides for the new logger\n\n#### Returns\n\n([`Logger`](#logger-1)) The new logger.\n\n### `InputLogObject`\n\nInput log data object (TypeScript interface).\n\n#### Properties\n\n- `additional?` (`string | string[]`, optional)\n  — an additional line, or list of lines, to be logged with the message\n- `args?` (`unknown[]`, optional)\n  — format arguments\n- `color?` ([`Color`][colors-color], optional)\n  — color associated with the log\n- `date?` (`Date`, optional)\n  — timestamp\n- `format?` ([`LogFormatOptions`](#logformatoptions), optional)\n  — format options\n- `icon?` (`string`, optional)\n  — icon to display\n- `level?` ([`LogLevelOption`](#logleveloption), optional)\n  — log level\n- `message?` (`unknown`, optional)\n  — log message; inserted into `args` as the first format argument if defined\n- `stack?` (`string`, optional)\n  — stack trace\n- `tag?` (`string`, optional)\n  — a string to categorize or identify the log\n- `type?` ([`LogType`](#logtype), optional)\n  — log type\n\n### `Inspect`\n\nUse [`util.inspect`][util] on `value` and print its string representation (TypeScript type).\n\n#### Parameters\n\n- `value` (`unknown`)\n  — the thing to inspect\n- `options` ([`InspectOptions`](#inspectoptions), optional)\n  — inspection options\n\n#### Returns\n\n(`undefined`) Nothing.\n\n### `InspectOptions`\n\nOptions for inspecting a value (TypeScript interface).\n\n#### Extends\n\n- [`Omit\u003cutil.InspectOptions, 'colors'\u003e`][util]\n\n#### Properties\n\n- `colors` (`boolean`, optional)\n  — whether to use color\n\n### `LogFormatOptions`\n\nLog formatting options (TypeScript interface).\n\n#### Extends\n\n- [`InspectOptions`](#inspectoptions)\n\n#### Properties\n\n- `badge?` (`boolean`, optional)\n  — whether to display the log type as a badge\n- `columns?` (`number`, optional)\n  — the maximum number of columns to output\n- `date?` (`boolean`, optional)\n  — whether to include timestamp information in log messages\n- `icon?` (`boolean`, optional)\n  — whether to display the icon associated with the log\n\n### `LogFunction`\n\nSend a message to all reporter instances (TypeScript interface).\n\n#### Overloads\n\n- `(message: InputLogObject | string, ...args: unknown[]) =\u003e undefined | void`\n- `(message: unknown, ...args: unknown[]) =\u003e undefined | void`\n\n#### Parameters\n\n- `message` ([`InputLogObject`](#inputlogobject) | `unknown`)\n  — the message to write\n- `...args` (`unknown[]`, optional)\n  — message arguments\n\n#### Returns\n\n(`undefined | void`) Nothing.\n\n### `LogFunctions`\n\nLog formatting options (TypeScript interface).\n\n#### Extends\n\n- [`LogTypeFunctions`](#logtypefunctions)\n\n#### Properties\n\n- `inspect` ([`Inspect`](#inspect))\n  — use [`util.inspect`][util] on a value and print its string representation\n\n### `LogLevel`\n\nUnion of log levels (TypeScript type).\n\nTo register custom log levels, augment [`LogLevelMap`](#loglevelmap).\nThey will be added to the union automatically.\n\n```ts\ntype LogLevel = LogLevelMap[keyof LogLevelMap]\n```\n\n### `LogLevelMap`\n\nRegistry of log levels (TypeScript interface).\n\n```ts\ninterface LogLevelMap {/* see code */}\n```\n\nWhen developing extensions that use additional levels, augment `LogLevelMap` to register custom log levels:\n\n```ts\ndeclare module '@flex-development/log' {\n  interface LogLevelMap {\n    box: 3\n  }\n}\n```\n\n### `LogLevelOption`\n\nUnion of log level options (TypeScript type).\n\n```ts\ntype LogLevelOption = LogLevel | LogLevelType\n```\n\n### `LogLevelType`\n\nUnion of log level types (TypeScript type).\n\nTo register custom log level types, augment [`LogLevelMap`](#loglevelmap).\nThey will be added to the union automatically.\n\n```ts\ntype LogLevelType = Extract\u003ckeyof LogLevelMap, string\u003e\n```\n\n### `LogObject`\n\nLog data object (TypeScript interface).\n\n#### Extends\n\n- [`InputLogObject`](#inputlogobject)\n\n#### Properties\n\n- `additional?` (`string[]`, optional)\n  — additional lines to be logged with the message\n- `args` (`unknown[]`)\n  — format arguments\n- `date` (`Date`)\n  — timestamp\n- `level` ([`LogLevel`](#loglevel))\n  — log level\n- `message?` (`null | undefined`, optional)\n  — log message\n- `type` ([`LogType`](#logtype))\n  — log type\n\n### `LogType`\n\nUnion of log types (TypeScript type).\n\nTo register custom log types, augment [`LogTypeMap`](#logtypemap).\nThey will be added to the union automatically.\n\n```ts\ntype LogType = LogTypeMap[keyof LogTypeMap]\n```\n\n### `LogTypeFunctions`\n\nDictionary of log type functions (TypeScript type).\n\nTo register custom log type functions, augment [`LogTypeMap`](#logtypemap).\nThey will be added to the union automatically.\n\n```ts\ntype LogTypeFunctions = { [T in LogType]: LogFunction }\n```\n\n### `LogTypeMap`\n\nRegistry of log types (TypeScript interface).\n\n```ts\ninterface LogTypeMap {/* see code */}\n```\n\nWhen developing extensions that use additional types, augment `LogTypeMap` to register custom log types:\n\n```ts\ndeclare module '@flex-development/log' {\n  interface LogTypeMap {\n    box: 'box'\n  }\n}\n```\n\n### `LoggerOptions`\n\nLogger configuration options (TypeScript interface).\n\n#### Properties\n\n- `defaults?` ([`InputLogObject`](#inputlogobject), optional)\n  — properties to apply to all logs, regardless of log type or level.\n  defaults can be overridden per log type using `types`\n- `eol?` (`string`, optional)\n  — the character, or characters, used to signify the end of a line\n- `color?` ([`Color`][colors-color])\n  — color associated with the log\n- `format?` ([`LogFormatOptions`](#logformatoptions), optional)\n  — formatting options\n- `level?` ([`LogLevelOption`](#logleveloption), optional)\n  — the maximum log level to output\n- `reporters?` ([`ReportersOption`](#reportersoption), optional)\n  — reporter instances used to handle and output log messages\n- `stderr?` ([`WriteStream`](#writestream), optional)\n  — the writeable stream for standard error output\n- `stdout?` ([`WriteStream`](#writestream), optional)\n  — the writeable stream for standard output\n- `types?` (`Partial\u003cRecord\u003cLogType, InputLogObject\u003e\u003e`, optional)\n  — record, where each key is a [`LogType`](#logtype) and each value is an [`InputLogObject`](#inputlogobject) defining\n  the configuration for the log type\n\n### `ReportersOption`\n\nUnion of values used to configure reporters (TypeScript type).\n\n```ts\ntype ReportersOption =\n  | Reporter\n  | Set\u003cReporter | false | null | undefined\u003e\n  | readonly (Reporter | false | null | undefined)[]\n```\n\n### `Write`\n\nWrite data to the stream (TypeScript type).\n\n#### Parameters\n\n- `buffer` (`string`)\n  — the data to write\n\n#### Returns\n\n(`boolean | undefined | void`) `true` if all data was flushed successfully, `false` if all or part of the data was\nqueued in user memory, or nothing.\n\n### `WithDefaults`\n\nCreate a new logger with the specified default log object properties (TypeScript interface).\n\n#### Parameters\n\n- `defaults` ([`InputLogObject`](#inputlogobject), optional)\n  — default properties to apply to any log reported from the new logger\n\n#### Returns\n\n([`Logger`](#logger-1)) The new logger.\n\n### `WithTag`\n\nCreate a new logger with the specified `tag` (TypeScript interface).\n\n#### Parameters\n\n- `tag` (`string`)\n  — the tag to include in each log reported from the new logger\n- `separator` (`string`, optional)\n  — the string to used separate tags\n  - default: `':'`\n\n#### Returns\n\n([`Logger`](#logger-1)) The new logger.\n\n### `WriteStream`\n\nWrite stream API (TypeScript interface).\n\n#### Properties\n\n- `columns?` (`number`, optional)\n  — number of columns the tty currently has\n- `write` ([`Write`](#write))\n  — write data to the stream\n\n## Contribute\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\nThis project has a [code of conduct](./CODE_OF_CONDUCT.md). By interacting with this repository, organization, or\ncommunity you agree to abide by its terms.\n\n[bun]: https://bun.sh\n\n[colors-color]: https://github.com/flex-development/colors#color\n\n[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c\n\n[esmsh]: https://esm.sh\n\n[typescript]: https://www.typescriptlang.org\n\n[util]: https://github.com/hildjj/node-inspect-extracted\n\n[yarn]: https://yarnpkg.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflex-development%2Flog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflex-development%2Flog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflex-development%2Flog/lists"}