You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
2.9 KiB
124 lines
2.9 KiB
/** |
|
* Search and Event Utility Constants |
|
* |
|
* This file centralizes all magic numbers used throughout the search and event utilities |
|
* to improve maintainability and reduce code duplication. |
|
*/ |
|
|
|
// Timeout constants (in milliseconds) |
|
export const TIMEOUTS = { |
|
/** Default timeout for event fetching operations */ |
|
EVENT_FETCH: 10000, |
|
|
|
/** Timeout for profile search operations */ |
|
PROFILE_SEARCH: 15000, |
|
|
|
/** Timeout for subscription search operations */ |
|
SUBSCRIPTION_SEARCH: 10000, |
|
|
|
/** Timeout for second-order search operations */ |
|
SECOND_ORDER_SEARCH: 5000, |
|
|
|
/** Timeout for relay diagnostics */ |
|
RELAY_DIAGNOSTICS: 5000, |
|
|
|
/** Timeout for general operations */ |
|
GENERAL: 5000, |
|
|
|
/** Cache cleanup interval */ |
|
CACHE_CLEANUP: 60000, |
|
} as const; |
|
|
|
// Cache duration constants (in milliseconds) |
|
export const CACHE_DURATIONS = { |
|
/** Default cache duration for search results */ |
|
SEARCH_CACHE: 5 * 60 * 1000, // 5 minutes |
|
|
|
/** Cache duration for index events */ |
|
INDEX_EVENT_CACHE: 10 * 60 * 1000, // 10 minutes |
|
} as const; |
|
|
|
// Search limits |
|
export const SEARCH_LIMITS = { |
|
/** Limit for specific profile searches (npub, NIP-05) */ |
|
SPECIFIC_PROFILE: 10, |
|
|
|
/** Limit for general profile searches */ |
|
GENERAL_PROFILE: 500, |
|
|
|
/** Limit for community relay checks */ |
|
COMMUNITY_CHECK: 1, |
|
|
|
/** Limit for second-order search results */ |
|
SECOND_ORDER_RESULTS: 100, |
|
} as const; |
|
|
|
// Nostr event kind ranges |
|
export const EVENT_KINDS = { |
|
/** Replaceable event kinds (0, 3, 10000-19999) */ |
|
REPLACEABLE: { |
|
MIN: 0, |
|
MAX: 19999, |
|
SPECIFIC: [0, 3], |
|
}, |
|
|
|
/** Parameterized replaceable event kinds (20000-29999) */ |
|
PARAMETERIZED_REPLACEABLE: { |
|
MIN: 20000, |
|
MAX: 29999, |
|
}, |
|
|
|
/** Addressable event kinds (30000-39999) */ |
|
ADDRESSABLE: { |
|
MIN: 30000, |
|
MAX: 39999, |
|
}, |
|
|
|
/** Comment event kind */ |
|
COMMENT: 1111, |
|
|
|
/** Text note event kind */ |
|
TEXT_NOTE: 1, |
|
|
|
/** Profile metadata event kind */ |
|
PROFILE_METADATA: 0, |
|
} as const; |
|
|
|
// Relay-specific constants |
|
export const RELAY_CONSTANTS = { |
|
/** Request ID for community relay checks */ |
|
COMMUNITY_REQUEST_ID: "alexandria-forest", |
|
|
|
/** Default relay request kinds for community checks */ |
|
COMMUNITY_REQUEST_KINDS: [1], |
|
} as const; |
|
|
|
// Time constants |
|
export const TIME_CONSTANTS = { |
|
/** Unix timestamp conversion factor (seconds to milliseconds) */ |
|
UNIX_TIMESTAMP_FACTOR: 1000, |
|
|
|
/** Current timestamp in seconds */ |
|
CURRENT_TIMESTAMP: Math.floor(Date.now() / 1000), |
|
} as const; |
|
|
|
// Validation constants |
|
export const VALIDATION = { |
|
/** Hex string length for event IDs and pubkeys */ |
|
HEX_LENGTH: 64, |
|
|
|
/** Minimum length for Nostr identifiers */ |
|
MIN_NOSTR_IDENTIFIER_LENGTH: 4, |
|
} as const; |
|
|
|
// HTTP status codes |
|
export const HTTP_STATUS = { |
|
/** OK status code */ |
|
OK: 200, |
|
|
|
/** Not found status code */ |
|
NOT_FOUND: 404, |
|
|
|
/** Internal server error status code */ |
|
INTERNAL_SERVER_ERROR: 500, |
|
} as const;
|
|
|