jmap-kit
    Preparing search index...

    Interface CapabilityRegistryInterface

    Public interface for the JMAP Capability Registry

    This interface defines all the public methods and properties that a capability registry should provide.

    interface CapabilityRegistryInterface {
        executeBuildTransformers(
            execution: {
                context: PluginContext<"pre-serialization">;
                hook?: "pre-serialization";
            },
        ): Promise<JMAPRequest>;
        executeSerializationTransformers(
            execution: {
                context: PluginContext<"post-serialization">;
                hook?: "post-serialization";
            },
        ): Promise<{ body: string | Blob | ArrayBuffer | File; headers: Headers }>;
        executeValidators<THook extends ValidationPluginLifecycleHook>(
            execution: ValidatorExecutionContext<THook>,
        ): Promise<ValidationResult>;
        get(uri: keyof JMAPServerCapabilities): CapabilityDefinition | undefined;
        getAll(): CapabilityDefinition[];
        getInvocationFactoryByDataType(
            dataType: JMAPDataType,
        ): InvocationFactoryCollection | undefined;
        getInvocationRequestFactory(
            dataType: JMAPDataType,
            methodName: JMAPMethodName,
        ): GenericInvocationFactory | undefined;
        getInvocationResponseFactory(
            dataType: JMAPDataType,
            methodName: JMAPMethodName,
        ): GenericInvocationFactory | undefined;
        getTransformersByHook<
            THook extends "pre-serialization"
            | "post-serialization",
        >(
            hook: THook,
        ): TransformationPlugin<THook>[];
        getValidatorsByHook<THook extends ValidationPluginLifecycleHook>(
            hook: THook,
        ): ValidationPlugin<THook, BaseInvocationArgs>[];
        has(uri: keyof JMAPServerCapabilities): boolean;
        register(capability: CapabilityDefinition): boolean;
        validateAccountCapabilities(
            accounts: Record<
                string,
                { accountCapabilities: Record<string, unknown> },
            >,
        ): Promise<AccountCapabilityValidationResult[]>;
        validateCapabilityDefinition(
            capability: CapabilityDefinition,
            serverCapabilities: Record<string, unknown>,
            accounts: Record<string, { accountCapabilities: Record<string, unknown> }>,
        ): Promise<
            {
                accountCapabilities: (
                    { errors: Error[]; valid: false } & {
                        accountId: string;
                        uri: keyof JMAPServerCapabilities;
                    }
                )[];
                serverCapabilities: (
                    { errors: Error[]; valid: false } & {
                        uri: keyof JMAPServerCapabilities;
                    }
                )[];
            },
        >;
        validateServerCapabilities(
            capabilities: Record<string, unknown>,
        ): Promise<ServerCapabilityValidationResult[]>;
    }

    Implemented by

    Index

    Methods

    • Execute build transformers for the pre-serialization hook type

      Transforms the provided context data using all registered transformation plugins for the pre-serialization hook type.

      Parameters

      • execution: { context: PluginContext<"pre-serialization">; hook?: "pre-serialization" }

        The transformation execution context containing hook type and context data

      Returns Promise<JMAPRequest>

      The transformed plugin data

    • Execute serialisation transformers for the post-serialization hook type

      Transforms the provided context data using all registered transformation plugins for the post-serialization hook type.

      Parameters

      • execution: { context: PluginContext<"post-serialization">; hook?: "post-serialization" }

        The transformation execution context containing hook type and context data

      Returns Promise<{ body: string | Blob | ArrayBuffer | File; headers: Headers }>

      The transformed plugin data

    • Validate account capability data against registered capability schemas.

      For each registered capability with a schema.accountCapability, validates the corresponding entry in each account's accountCapabilities using the StandardSchema ~standard.validate() protocol.

      This is a pure validation function — it does not mutate the input or emit events. The caller is responsible for filtering invalid capabilities from the session and emitting appropriate events.

      Parameters

      • accounts: Record<string, { accountCapabilities: Record<string, unknown> }>

        The accounts object from the parsed JMAP session

      Returns Promise<AccountCapabilityValidationResult[]>

      An array of validation results for each registered capability present per account

    • Validate a single capability definition's schemas against session data without requiring the capability to be registered.

      This is a pure validation function — it does not mutate the input, register the capability, or emit events. The caller is responsible for acting on the validation results.

      Parameters

      • capability: CapabilityDefinition

        The capability definition to validate

      • serverCapabilities: Record<string, unknown>

        The server capabilities from the session

      • accounts: Record<string, { accountCapabilities: Record<string, unknown> }>

        The accounts from the session

      Returns Promise<
          {
              accountCapabilities: (
                  { errors: Error[]; valid: false } & {
                      accountId: string;
                      uri: keyof JMAPServerCapabilities;
                  }
              )[];
              serverCapabilities: (
                  { errors: Error[]; valid: false } & {
                      uri: keyof JMAPServerCapabilities;
                  }
              )[];
          },
      >

      An object containing arrays of server and account capability validation failures

    • Validate server capability data against registered capability schemas.

      For each registered capability with a schema.serverCapability, validates the corresponding entry in capabilities using the StandardSchema ~standard.validate() protocol.

      This is a pure validation function — it does not mutate the input or emit events. The caller is responsible for filtering invalid capabilities from the session and emitting appropriate events.

      Parameters

      • capabilities: Record<string, unknown>

        The server capabilities object from the parsed JMAP session

      Returns Promise<ServerCapabilityValidationResult[]>

      An array of validation results for each registered capability present in the input