The SDK no longer depends on zod. drift.config.json is validated by a small hand-written checker with the same accepted shape. driftConfigSchema is kept as a plain { parse(input) } object (no longer a zod schema; parse throws a plain Error naming the bad path) and parseDriftConfig is exported alongside it; normalizeConfig is unchanged. Consumers that only build page documents no longer load zod at startup.
Changelog
Every release, straight from the changesets. Newest first.
A member used inside a code comment counts as mentioned, so it is not reported as missing.
Bump @openpkg-ts/sdk to ^0.54.11. ArrayLike and ArrayBufferLike are inlined instead of emitted as a $ref that is never registered. Spec stays ^0.54.9.
Bump @openpkg-ts/sdk to ^0.54.10. Schema expansion is budgeted per export, so large packages no longer degrade by export order (zod: 27% -> 100% of exports with full schemas; valibot 64% -> 100%). An interface or class records extends even when the base is unresolved, and its shape stays open; generic aliases written in a signature (StateCreator<...>) stay as written refs; type parameters are never type refs; an export { X } of an imported binding resolves. Spec stays ^0.54.9.
prose-unknown-key: an overload that takes an object at that position whose keys cannot be seen (unresolved, generic, open) silences the rule instead of being skipped, so a key only that overload declares is not reported (zod toJSONSchema(registry, { uri })). Overloads that take a primitive or a function there still do not count.
PageDocument claim coverage and attribution. A name an earlier fence of the page declares at its top level (const useStore = create(...), function, class, destructured) shadows the export of the same name in later fences for call-site rules, bindings, the deprecated check and inventory claims, until a fence imports it from the package again; a printed signature or declare is not a shadow. ns.f(...) through a namespace alias (imported, or the page's conventional alias) is an inventory claim per (fence, export) with text as written (z.string), routed to the fence's alsoSpecs entry; a chained member that resolves through spec return types alone is one too (z.string().email() cites ZodString.email on the email token), and in a fence that names no entry only when no other entry types the same chain. A backticked .member() ignores owners outside the public surface ($ / _ names; types neither exported nor declared as an export's parameter / return type): .parse() on zod is ZodType.parse. A backticked bare builtin name is the export on its own API reference section (a code or call-form heading ancestor, or the H1 / frontmatter title, that is exactly that name) and before schema / function / action / method / hook / component / API / export / util / utility / helper. New rule prose-literal-type-mismatch: a string / number / boolean literal argument, object-literal property value (closed parameter shape) or JSX attribute where every applicable overload declares exactly another primitive; locator is the literal.