arvo-core
    Preparing search index...

    Function createSimpleArvoContract

    • Creates an ArvoContract with standardized naming conventions and a simplified event pattern. Use this to create contracts with one emit type only.

      Type Parameters

      • TUri extends string
      • TType extends string
      • TVersions extends Record<
            `${number}.${number}.${number}`,
            { accepts: ZodTypeAny; emits: ZodTypeAny },
        >
      • TMetaData extends Record<string, any>

      Parameters

      • param: {
            description?: string;
            domain?: string;
            metadata?: TMetaData;
            type: TType;
            uri: TUri;
            versions: TVersions;
        }

        Contract configuration

        • Optionaldescription?: string

          Optional contract description

        • Optionaldomain?: string
        • Optionalmetadata?: TMetaData

          Optional metadata for the contract

        • type: TType

          Base event type (will be prefixed with "com.")

        • uri: TUri

          Contract identifier URI

        • versions: TVersions

          Version-specific schema definitions

      Returns SimpleArvoContract<TUri, TType, TVersions, TMetaData>

      ArvoContract with standardized type formatting and metadata

      If any of the validations in ArvoContract or createArvoContract fail

      const contract = createSimpleArvoContract({
      uri: 'api.example/contracts/user',
      type: 'user.create',
      description: 'User creation contract',
      versions: {
      '1.0.0': {
      accepts: z.object({
      name: z.string(),
      email: z.string().email()
      }),
      emits: z.object({
      userId: z.string(),
      timestamp: z.date()
      })
      }
      }
      });

      Provides a simplified contract creation pattern with standardized conventions:

      • Automatically prefixes accept types with "com."
      • Creates a single emit type with "evt." prefix and ".success" suffix
      • Adds standard metadata identifying it as a SimpleArvoContract