# core/predicates/code.typescript.predicate.ts

> 22 lines of code and 5 definitions.

Tree: GovLab Docs
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/docs#file-docs-core-predicates-code-typescript-predicate-ts
Source text: https://banes-lab.com/source/docs/core/predicates/code.typescript.predicate.ts.txt

Listed in [core/predicates](https://banes-lab.com/api/source/docs/core/predicates.md), after [core/predicates/character.predicate.ts](https://banes-lab.com/source/docs/core/predicates/character.predicate.ts.md) and before [core/predicates/document.predicate.ts](https://banes-lab.com/source/docs/core/predicates/document.predicate.ts.md).

## Definitions

- `isFunctionLike` (lexical_declaration, line 5, exported)
- `inPackage` (lexical_declaration, line 24, exported)
- `CREATE` (lexical_declaration, line 3)
- `isFactoryName` (lexical_declaration, line 16, exported)
- `char` (lexical_declaration, line 20, exported)

## Contained in

- [core/predicates](https://banes-lab.com/anatomy/docs/folder-docs-core-predicates.md)

## Used by

- [core/factories/graph.typescript.factory.ts](https://banes-lab.com/source/docs/core/factories/graph.typescript.factory.ts.md)
- [core/selectors/code.typescript.selector.ts](https://banes-lab.com/source/docs/core/selectors/code.typescript.selector.ts.md)
- [core/selectors/surface.selector.ts](https://banes-lab.com/source/docs/core/selectors/surface.selector.ts.md)
- [core/visitors/code.typescript.visitor.ts](https://banes-lab.com/source/docs/core/visitors/code.typescript.visitor.ts.md)

## Linked from

- [core/factories](https://banes-lab.com/anatomy/docs/folder-docs-core-factories.md)
- [core/selectors](https://banes-lab.com/anatomy/docs/folder-docs-core-selectors.md)
- [core/visitors](https://banes-lab.com/anatomy/docs/folder-docs-core-visitors.md)

## Source

```typescript
import ts from "typescript";

const CREATE = "create";

export const isFunctionLike = function isFunctionLike(
    node: ts.Node,
): node is ts.ArrowFunction | ts.FunctionDeclaration | ts.FunctionExpression | ts.MethodDeclaration {
    return (
        ts.isFunctionDeclaration(node) ||
        ts.isFunctionExpression(node) ||
        ts.isArrowFunction(node) ||
        ts.isMethodDeclaration(node)
    );
};

export const isFactoryName = function isFactoryName(name: string): boolean {
    if (!name.startsWith(CREATE) || name.length <= CREATE.length) {
        return false;
    }
    const char = name.charAt(CREATE.length);
    return char >= "A" && char <= "Z";
};

export const inPackage = function inPackage(decl: ts.Declaration, dirPosix: string): boolean {
    return decl.getSourceFile().fileName.split("\\").join("/").startsWith(dirPosix);
};
```
