shared/validations.ts
Rama main · réplica de lectura del repositorio original.
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_]*$/,
};