DeepReadonly ​

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.

Type · import type { DeepReadonly } from '@holostep-configurators/runtime-client/contract'; · stable · since 2.0.0 · section 1. Basics

A value you may read and must not change: every property and array is readonly, at every depth. Inputs that take a DeepReadonly<T> accept a plain T as well.

Declaration ​

ts
export type DeepReadonly<T> = T extends (...args: never[]) => unknown ? T : T extends object ? {
  readonly [K in keyof T]: DeepReadonly<T[K]>;
} : T;

Generic-API test (spec 3.1) ​

Rule Result
1. Neutral name pass: DeepReadonly 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: 20 apps (fleet cross-check: app-04c2774145, app-0c773a4ee3, app-37356bf09f, app-4762caacdc, app-4fd23bc869, app-822bb9d6aa, app-8675b3225c, app-b362a81c85 and 12 more)
4. The cheaper fix first not recorded per member (Appendix B decides it per need)