# @ifc-lite/ids

> IDS (Information Delivery Specification) support for IFC-Lite

Latest version **2.0.0** (published 2026-09-22) · MPL-2.0 license · 0 weekly downloads

## Install

```sh
npm install @ifc-lite/ids
pnpm add @ifc-lite/ids
yarn add @ifc-lite/ids
bun add @ifc-lite/ids
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2026-09-22 |
| First published | 2026-02-03 |
| Weekly downloads | 0 |
| License | MPL-2.0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 6 |
| Unpacked size | 818.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 353 |
| Author | Louis True |
| Maintainers | louistrue |
| Keywords | ifc, bim, ids, buildingsmart, validation, information-delivery-specification, aec |

## Links

- npm: https://www.npmjs.com/package/@ifc-lite/ids
- Repository: https://github.com/LTplus-AG/ifc-lite
- Homepage: https://ifclite.dev/docs/
- Issues: https://github.com/LTplus-AG/ifc-lite/issues
- npm.io page: https://npm.io/package/@ifc-lite/ids

## Dependencies (6)

- [@ifc-lite/data](https://npm.io/package/@ifc-lite/data.md) 5.0.0
- [@xmldom/xmldom](https://npm.io/package/@xmldom/xmldom.md) ^0.9.12
- [@ifc-lite/parser](https://npm.io/package/@ifc-lite/parser.md) 8.0.0
- [@ifc-lite/codegen](https://npm.io/package/@ifc-lite/codegen.md) 1.18.0
- [@ifc-lite/encoding](https://npm.io/package/@ifc-lite/encoding.md) 2.2.0
- [@ifc-lite/regex-guard](https://npm.io/package/@ifc-lite/regex-guard.md) 0.2.0

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 2.0.0 (latest) — 2026-09-22
- 1.17.4 — 2026-09-20
- 1.17.3 — 2026-09-18
- 1.17.2 — 2026-09-17
- 1.17.1 — 2026-09-15
- 1.17.0 — 2026-09-14
- 1.16.6 — 2026-09-14
- 1.16.5 — 2026-09-13
- 1.16.4 — 2026-09-13
- 1.16.2 — 2026-09-12
- 1.16.0 — 2026-09-08
- 1.15.54 — 2026-09-06
- 1.15.53 — 2026-09-04
- 1.15.52 — 2026-08-27
- 1.15.51 — 2026-08-27
- … 74 more at https://npm.io/package/@ifc-lite/ids/versions

## README

# @ifc-lite/ids

IDS (Information Delivery Specification) support for IFClite. Parses buildingSMART IDS XML files and validates an `IfcDataStore` against them — every facet type, every constraint type, with multi-language reports.

## Installation

```bash
npm install @ifc-lite/ids
```

## Validate against an IDS file

```typescript
import { parseIDS, validateIDS, createTranslationService } from '@ifc-lite/ids';
import { createDataAccessor } from '@ifc-lite/ids/bridge';

const idsXml = await fetch('project-requirements.ids').then(r => r.text());
const idsSpec = parseIDS(idsXml);

// Bridge a parsed IfcDataStore into the validator's data-accessor interface
const accessor = createDataAccessor(store);

const translator = createTranslationService('en');
const report = await validateIDS(
  idsSpec,
  accessor,
  { modelId: 'model.ifc', schemaVersion: store.schemaVersion, entityCount: store.entityCount },
  { translator },
);

console.log(`Overall: ${report.summary.totalEntitiesPassed} / ${report.summary.totalEntitiesChecked} passed`);

for (const spec of report.specificationResults) {
  console.log(`\n${spec.specification.name}: ${spec.passRate}%`);

  for (const entity of spec.entityResults) {
    if (!entity.passed) {
      for (const req of entity.requirementResults.filter(r => r.status === 'fail')) {
        console.log(`  ✗ ${entity.entityType} #${entity.expressId}: ${translator.describeFailure(req)}`);
      }
    }
  }
}
```

## Multi-language reports

Reports translate automatically. Supported languages: English (`en`), German (`de`), French (`fr`).

```typescript
import { parseIDS, validateIDS, createTranslationService } from '@ifc-lite/ids';

const idsSpec = parseIDS(idsXml);
const de = createTranslationService('de');
const report = await validateIDS(idsSpec, accessor, modelInfo, { translator: de });
// Failures now read: "Anforderung 'FireRating' nicht erfüllt..."
```

## Audit an IDS document

Check an IDS file itself for authoring mistakes (broken restrictions, impossible cardinalities, unknown entity names) before running it against a model:

```typescript
import { auditIDSDocument } from '@ifc-lite/ids';

const audit = await auditIDSDocument(idsXml);
for (const issue of audit.issues) {
  console.log(`${issue.severity}: ${issue.message}`);
}
```

## Inspect an IDS specification

```typescript
import { parseIDS } from '@ifc-lite/ids';

const idsSpec = parseIDS(idsXml);

for (const spec of idsSpec.specifications) {
  console.log(`Spec: ${spec.name} (${spec.identifier})`);
  console.log(`  Applies to: ${spec.applicability.facets.length} facet(s)`);
  console.log(`  Requires:   ${spec.requirements.length} requirement(s)`);
}
```

## Supported facets

| Facet | Matches |
|---|---|
| `Entity` | IFC entity type (`IfcWall`, `IfcDoor`, …) |
| `Attribute` | IfcRoot attributes (`Name`, `Description`, `Tag`, …) |
| `Property` | Property set + property name + value |
| `Classification` | Classification system + reference code |
| `Material` | Material assignment |
| `PartOf` | Spatial / compositional relationship |

## Supported constraints

| Constraint | Matches |
|---|---|
| `SimpleValue` | Exact match |
| `Pattern` | Regex match |
| `Enumeration` | One-of-list |
| `Bounds` | Numeric range (min/max, inclusive/exclusive) |

## API

See the [IDS Guide](https://ifclite.dev/docs/guide/ids/) and [API Reference](https://ifclite.dev/docs/api/typescript/#ifc-liteids).

## License

[MPL-2.0](../../LICENSE)

---
_Source: https://npm.io/package/@ifc-lite/ids · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
