# `Parts`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Interface · `import type { Parts } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 6. Queries, rules and parts

A saved search. `list()` and `first()` use document order: models in scene-model order (depth
first over `root`), each model's parts in glTF node order (pre-order, so a model's root comes
before its descendants), then collections in creation order and their items in spec order.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="count"></a>[`count`](Parts.count.md) | property | Current members, sync. |
| <a id="list"></a>[`list`](Parts.list.md) | method | A one-time snapshot of the current members, in document order. |
| <a id="first"></a>[`first`](Parts.first.md) | method | The first member in document order, or null. |

Inherited from [`PartActions`](PartActions.md): [`set`](PartActions.set.md), [`bounds`](PartActions.bounds.md), [`find`](PartActions.find.md), [`follow`](PartActions.follow.md).

## Declaration

```ts
export interface Parts<C extends object = NoCommitOptions> extends PartActions<C> {
  readonly count: number;
  list(): Part<C>[];
  first(): Part<C> | null;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `Parts` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | pass: 28 apps (fleet cross-check: app-04c2774145, app-0c773a4ee3, app-37356bf09f, app-378d190f1b, app-4762caacdc, app-4f16d2f6da, app-4fd23bc869, app-510d750508 and 20 more) |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
