VDL Plugin SDK

assertValidIrForPolicy

Import from @varavel/vdl-plugin-sdk/utils/policy.

function assertValidIrForPolicy(ir): ValidatedPolicy[];

Asserts that policy IR structures follow VPP-3 conventions.

This helper validates @policy types in one fail-fast pass and returns resolved policies with typed expressions for code generation.

Validation covers annotation shape, policy type shape, expression syntax, reference existence, comparison compatibility, enum values and optional access guards. Every violation throws PluginError.

Parameters

ParameterTypeDescription
irIrSchemaFully resolved VDL IR schema to validate.

Returns

ValidatedPolicy[]

Validated policies with resolved expressions, sorted by name.

Example

import { definePlugin } from "@varavel/vdl-plugin-sdk";
import { assertValidIrForPolicy } from "@varavel/vdl-plugin-sdk/utils/policy";

export const generate = definePlugin((input) => {
  const policies = assertValidIrForPolicy(input.ir);

  return {
    files: [{ path: "policies.ts", content: `// ${policies.length} policies` }],
  };
});