Ctrl K
ComunidadGuías…

shared/validations.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
export const AttachmentValidation = {
  /** The limited allowable mime-types for user and team avatars */
  avatarContentTypes: ["image/jpg", "image/jpeg", "image/png"],

  /**
   * The mime-types and file extensions offered by the avatar file picker. HEIC
   * and HEIF images are converted to a type in `avatarContentTypes` by the
   * client before they are uploaded. Extensions are included because some
   * platforms report an empty mime-type for these files.
   */
  avatarInputContentTypes: [
    "image/jpg",
    "image/jpeg",
    "image/png",
    "image/heic",
    "image/heif",
    ".heic",
    ".heif",
  ],

  /** The most widely supported mime-types across modern browsers */
  emojiContentTypes: [
    "image/png",
    "image/webp",
    "image/gif",
    "image/jpeg",
    "image/jpg",
  ],

  /** The maximum file size for emoji uploads */
  emojiMaxFileSize: 1 * 1000 * 1000,

  /** Image mime-types commonly supported by modern browsers */
  imageContentTypes: [
    "image/jpg",
    "image/jpeg",
    "image/pjpeg",
    "image/png",
    "image/apng",
    "image/avif",
    "image/gif",
    "image/webp",
    "image/svg",
    "image/svg+xml",
    "image/bmp",
    "image/tiff",
    "image/heic",
  ],
};

export const ApiKeyValidation = {
  /** The minimum length of the API key name */
  minNameLength: 3,
  /** The maximum length of the API key name */
  maxNameLength: 255,
};

export const CollectionValidation = {
  /** The maximum length of the collection description */
  maxDescriptionLength: 100 * 1000,

  /** The maximum length of the collection name */
  maxNameLength: 100,
};

export const CommentValidation = {
  /** The maximum length of a comment */
  maxLength: 10_000,
};

export const DeprecationValidation = {
  /** The maximum length of an archive or deletion reason. */
  maxReasonLength: 2000,
};

export const DocumentValidation = {
  /** The maximum length of the document title */
  maxTitleLength: 100,

  /** The maximum length of the document summary */
  maxSummaryLength: 1000,

  /** The maximum size of the collaborative document state */
  maxStateLength: 1500 * 1024,

  /** The maximum recommended size of the document content */
  maxRecommendedLength: 250000,

  /** The maximum length of the document text content */
  maxLength: 1500 * 1024,
};

export const GroupValidation = {
  /** The maximum length of the group name */
  maxNameLength: 255,
  /** The maximum length of the group description */
  maxDescriptionLength: 2000,
};

export const ImportValidation = {
  /** The maximum length of the import name */
  maxNameLength: 100,
};

export const OAuthClientValidation = {
  /** The maximum length of the OAuth client name */
  maxNameLength: 100,

  /** The maximum length of the OAuth client description */
  maxDescriptionLength: 255,

  /** The maximum length of the OAuth client developer name */
  maxDeveloperNameLength: 100,

  /** The maximum length of the OAuth client developer URL */
  maxDeveloperUrlLength: 1024,

  /** The maximum length of the OAuth client avatar URL */
  maxAvatarUrlLength: 1024,

  /** The maximum length of an OAuth client redirect URI */
  maxRedirectUriLength: 1024,

  /** The maximum length of an OAuth client ID, which can be a metadata document URL */
  maxClientIdLength: 1024,

  /** The prefix of client IDs that are the URL of a client ID metadata document */
  metadataDocumentClientIdPrefix: "https://",

  /** The maximum number of redirect URIs for an OAuth client */
  maxRedirectUris: 20,

  /** The allowed OAuth client types */
  clientTypes: ["confidential", "public"] as const,
};

export const ShareValidation = {
  /** The maximum length of the share title */
  maxTitleLength: 255,

  /** The maximum length of the share iconUrl */
  maxIconUrlLength: 4096,
};

export const RevisionValidation = {
  minNameLength: 1,
  maxNameLength: 255,
};

export const UserPasskeyValidation = {
  minNameLength: 1,
  maxNameLength: 255,
};

export const PinValidation = {
  /** The maximum number of pinned documents on an individual collection or home screen */
  max: 8,
};

export const TeamValidation = {
  /** The choices for the default share link expiry in days, 0 for no expiry. */
  defaultShareExpiryDays: [0, 7, 30, 60, 90],

  /** The maximum number of domains per team on cloud hosted */
  maxDomains: 10,

  /** The maximum length of the team name */
  maxNameLength: 255,

  /** The maximum length of the team description */
  maxDescriptionLength: 1000,

  /** The minimum length of the team subdomain */
  minSubdomainLength: 2,

  /** The maximum length of the team subdomain for cloud */
  maxSubdomainLength: 32,

  /** The maximum length of the team subdomain for self-hosted */
  maxSubdomainSelfHostedLength: 255,

  /** The maximum length of a team domain */
  maxDomainLength: 255,

  /** The maximum length of MCP workspace guidance */
  maxGuidanceMCPLength: 10000,

  /** The recommended length of MCP workspace guidance, beyond which a warning is shown */
  warnGuidanceMCPLength: 2000,
};

export const UserValidation = {
  /** The maximum number of invites per request */
  maxInvitesPerRequest: 20,

  /** The maximum length of the user name */
  maxNameLength: 255,

  /** The maximum length of the user email */
  maxEmailLength: 255,
};

export const WebhookSubscriptionValidation = {
  /** The maximum number of webhooks per team */
  maxSubscriptions: 10,
  /** The maximum length of the webhook name */
  maxNameLength: 255,
  /** The maximum length of the webhook url */
  maxUrlLength: 1024,
};

export const FilterValidation = {
  /** The maximum nesting depth of a filter expression */
  maxDepth: 5,

  /** The maximum number of values in an `in` / `notIn` array */
  maxInValues: 100,

  /** The maximum number of conditions and groups a filter may contain */
  maxNodes: 50,
};

export const EmojiValidation = {
  /** The maximum length of the emoji name */
  maxNameLength: 25,
  /* the characters allowed in the name */
  allowedNameCharacters: /^[a-z0-9_]*$/,
};