# tools/core/predicates/file.predicate.ts

> 14 lines of code and 4 definitions.

Tree: Coordination tree
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-predicates-file-predicate-ts
Source text: https://banes-lab.com/source/coordination/tools/core/predicates/file.predicate.ts.txt

Listed in [tools/core/predicates](https://banes-lab.com/api/source/coordination/tools/core/predicates.md), after [tools/core/predicates/fence.predicate.ts](https://banes-lab.com/source/coordination/tools/core/predicates/fence.predicate.ts.md) and before [tools/core/predicates/literal.predicate.ts](https://banes-lab.com/source/coordination/tools/core/predicates/literal.predicate.ts.md).

## Definitions

- `isFilesystemRefusal` (lexical_declaration, line 11, exported)
- `isUnreadableJson` (lexical_declaration, line 15, exported)
- `hasErrorCode` (lexical_declaration, line 3, exported)
- `code` (lexical_declaration, line 7, exported)

## Used by

- [tools/core/analyzers/graph.analyzer.ts](https://banes-lab.com/source/coordination/tools/core/analyzers/graph.analyzer.ts.md)
- [tools/core/entrypoints/corpus.entrypoint.ts](https://banes-lab.com/source/coordination/tools/core/entrypoints/corpus.entrypoint.ts.md)
- [tools/core/inspectors/manifest.inspector.ts](https://banes-lab.com/source/coordination/tools/core/inspectors/manifest.inspector.ts.md)
- [tools/core/inspectors/taxonomy.inspector.ts](https://banes-lab.com/source/coordination/tools/core/inspectors/taxonomy.inspector.ts.md)
- [tools/core/iterators/file.iterator.ts](https://banes-lab.com/source/coordination/tools/core/iterators/file.iterator.ts.md)
- [tools/core/readers/snapshot.reader.ts](https://banes-lab.com/source/coordination/tools/core/readers/snapshot.reader.ts.md)
- [tools/core/reporters/rule.reporter.ts](https://banes-lab.com/source/coordination/tools/core/reporters/rule.reporter.ts.md)
- [tools/core/resolvers/artifact.resolver.ts](https://banes-lab.com/source/coordination/tools/core/resolvers/artifact.resolver.ts.md)
- [tools/core/resolvers/dependency.resolver.ts](https://banes-lab.com/source/coordination/tools/core/resolvers/dependency.resolver.ts.md)
- [tools/core/steps/gate.step.ts](https://banes-lab.com/source/coordination/tools/core/steps/gate.step.ts.md)
- [tools/core/transformers/reference.transformer.ts](https://banes-lab.com/source/coordination/tools/core/transformers/reference.transformer.ts.md)

## Source

```typescript
import { FILESYSTEM_REFUSALS } from "../constants/file.constants.ts";

export const hasErrorCode = function hasErrorCode(error: unknown, codes: ReadonlySet<string>): boolean {
    if (!(error instanceof Error) || !("code" in error)) {
        return false;
    }
    const code: unknown = error.code;
    return typeof code === "string" && codes.has(code);
};

export const isFilesystemRefusal = function isFilesystemRefusal(error: unknown): boolean {
    return hasErrorCode(error, FILESYSTEM_REFUSALS);
};

export const isUnreadableJson = function isUnreadableJson(error: unknown): boolean {
    return error instanceof SyntaxError || isFilesystemRefusal(error);
};
```
