@vxil/feature-configs
v0.22.0
Published
The per-feature configuration schemas and validators behind vxil.config.ts (published for @vxil/cli and @vxil/config).
Readme
@vxil/feature-configs
The typed config schemas for every Vxil feature — the shapes a vxil.config.ts
is built on, published so your editor and your CI can read the same contract the
platform validates against.
npm i -D @vxil/feature-configsMost people never import this directly: writing
defineConfig gives you these
types automatically. Reach for it when you want to validate a manifest yourself,
generate config, or type a helper.
What's in it
- One schema per feature, all 19 of them —
NotificationsConfigSchema,AuthConfigSchema,CmsConfigSchema,PaymentsConfigSchema,FunctionsConfigSchema, … — plus the matchingStatic<>types (NotificationsConfig,AuthConfig, …). FEATURE_KEYS— the canonical feature list, andFEATURE_SCHEMAS— the key → schema map.validateFeatureConfig(feature, raw)— the exact validation the control plane runs, returning{ ok, errors }with JSON-pointer-style messages. Use it in a pre-commit hook or a test to fail on a bad config before you push it.hooks(@vxil/feature-configs/hooks) — the CMS lifecycle-hook expression grammar: the same closed, sandboxed parser/validator the server uses, so a malformedvalidate/deriveexpression is caught in your editor.
import { validateFeatureConfig, FEATURE_KEYS } from '@vxil/feature-configs';
const result = validateFeatureConfig('notifications', {
enabled: true,
// provider 'resend' (the default) needs its key ref; 'mock' needs none
resendApiKeyRef: 'secret:RESEND_API_KEY',
fromEmail: '[email protected]',
});
if (!result.ok) throw new Error(result.errors.join('\n'));Why the schemas are small on purpose
Every feature's config is capped at a fixed number of top-level leaves. A knob earns its slot by having a reader; one that nothing reads gets deleted rather than left to rot as a promise the product does not keep. That is why the schemas here are the whole truth about what a feature can be configured to do — and why a version bump may remove a knob that was never wired. Removals are listed in the feature reference at vxil.com.
Related
@vxil/config—defineConfig().@vxil/cli— thevxilcommand (plan/push/gen).@vxil/sdk— the typed runtime client.
Docs: vxil.com · Dashboard: vxil.com/dashboard
MIT © techmaker.io
