# core/predicates/invocation.predicate.ts

> 11 lines of code and 2 definitions.

Tree: Argv Contract
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/argv#file-argv-core-predicates-invocation-predicate-ts
Source text: https://banes-lab.com/source/argv/core/predicates/invocation.predicate.ts.txt

Listed in [core/predicates](https://banes-lab.com/api/source/argv/core/predicates.md).

## Definitions

- `isMainModule` (lexical_declaration, line 6, exported)
- `script` (lexical_declaration, line 7, exported)

## Contained in

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

## Source

```typescript
import { SCRIPT_AT } from "#configuration/constants/invocation.constants";
import { fileURLToPath } from "node:url";
import process from "node:process";
import { resolve } from "node:path";

export const isMainModule = function isMainModule(moduleUrl: string): boolean {
    const script = process.argv.at(SCRIPT_AT);
    if (script === undefined) {
        return false;
    }
    return resolve(script) === resolve(fileURLToPath(moduleUrl));
};
```
