# valid-ci-uses

Ensures that interface accesses on `Ci` are valid, and property accesses on
`Ci.<interface>` are also valid.

This rule requires a full build to run, and is not turned on by default. To run
this rule manually, use:

```console
MOZ_OBJDIR=objdir-ff-opt ./mach eslint --rule="mozilla/valid-ci-uses: error" *
```

:::{note}
Note that for platform-specific interfaces, you need to manually add the
interface in question to
{searchfox}`the rule <tools/lint/eslint/eslint-plugin-mozilla/lib/rules/valid-ci-uses.mjs>`
(as a build on any given platform cannot find out about interfaces that are
not available on that platform).
:::

## Examples of incorrect code for this rule

`nsIFoo` does not exist.

```js
Ci.nsIFoo
```

`UNKNOWN_CONSTANT` does not exist on nsIURIFixup.

```js
Ci.nsIURIFixup.UNKNOWN_CONSTANT
```

## Examples of correct code for this rule

`nsIFile` does exist.

```js
Ci.nsIFile
```

`FIXUP_FLAG_NONE` does exist on nsIURIFixup.

```js
Ci.nsIURIFixup.FIXUP_FLAG_NONE
```
