SYMBOL INDEX (1392 symbols across 560 files) FILE: packages/components/.storybook/main.ts method viteFinal (line 18) | async viteFinal(config) { function getAbsolutePath (line 26) | function getAbsolutePath(value: string): any { FILE: packages/components/.storybook/preview.tsx type ThemeName (line 30) | type ThemeName = keyof typeof themeColors; function getThemeCSSVariables (line 32) | function getThemeCSSVariables(themeName: ThemeName): string { function ThemeVariables (line 49) | function ThemeVariables({ themeName }: { themeName: ThemeName }) { FILE: packages/components/src/Accordion/Accordion.tsx type IProps (line 6) | interface IProps { FILE: packages/components/src/ActionSet/ActionSet.tsx type IProps (line 6) | interface IProps { FILE: packages/components/src/ArrowIcon/ArrowIcon.tsx type IProps (line 8) | interface IProps { FILE: packages/components/src/ArticleCallToActionSupabase/ArticleCallToActionSupabase.tsx type IProps (line 5) | interface IProps { FILE: packages/components/src/AuthorDisplay/AuthorDisplay.tsx type IProps (line 5) | interface IProps { FILE: packages/components/src/Banner/Banner.tsx type AlertVariants (line 5) | type AlertVariants = 'accent' | 'failure' | 'info' | 'success'; type IProps (line 7) | interface IProps { FILE: packages/components/src/BlockedRoute/BlockedRoute.tsx type BlockedRouteProps (line 6) | interface BlockedRouteProps { FILE: packages/components/src/Breadcrumbs/Breadcrumbs.tsx type Step (line 6) | type Step = { text: string; link?: string }; type BreadcrumbsProps (line 8) | interface BreadcrumbsProps { FILE: packages/components/src/Breadcrumbs/BreadcrumbsItem.tsx type BreadcrumbButtonProps (line 6) | interface BreadcrumbButtonProps { type BreadcrumbItemProps (line 11) | interface BreadcrumbItemProps { FILE: packages/components/src/Button/Button.tsx type IBtnProps (line 9) | interface IBtnProps extends React.ButtonHTMLAttributes { type ToArray (line 19) | type ToArray = [Type] extends [any] ? Type[] : never; type AvailableButtonProps (line 20) | type AvailableButtonProps = ToArray; type BtnProps (line 43) | type BtnProps = IBtnProps & ThemeUiButtonProps; function getSizeProps (line 45) | function getSizeProps(size: string, hasIcon: boolean) { function getScaleTransform (line 66) | function getScaleTransform(size: string) { function sanitizedProps (line 74) | function sanitizedProps(obj: BtnProps, keysToRemove: AvailableButtonProp... FILE: packages/components/src/ButtonIcon/ButtonIcon.tsx type IProps (line 6) | interface IProps extends React.ButtonHTMLAttributes { FILE: packages/components/src/ButtonShowReplies/ButtonShowReplies.tsx type Props (line 4) | interface Props { FILE: packages/components/src/CardButton/CardButton.tsx type IProps (line 4) | interface IProps extends BoxProps { FILE: packages/components/src/CardListItem/CardListItem.tsx type IProps (line 7) | interface IProps { FILE: packages/components/src/CardProfile/CardDetailsMemberProfile.tsx type IProps (line 8) | interface IProps { FILE: packages/components/src/CardProfile/CardDetailsSpaceProfile.tsx type IProps (line 7) | interface IProps { FILE: packages/components/src/CardProfile/CardProfile.tsx type IProps (line 6) | interface IProps { FILE: packages/components/src/Category/Category.tsx type Props (line 5) | interface Props { FILE: packages/components/src/CategoryHorizonalList/CategoryHorizonalList.tsx type IProps (line 8) | interface IProps { FILE: packages/components/src/CharacterCount/CharacterCount.tsx type ICharacterCountProps (line 3) | interface ICharacterCountProps { FILE: packages/components/src/CommentAvatar/CommentAvatar.tsx type CommentAvatarProps (line 6) | type CommentAvatarProps = { FILE: packages/components/src/CommentBody/CommentBody.tsx type IProps (line 6) | interface IProps { constant SHORT_COMMENT (line 9) | const SHORT_COMMENT = 129; FILE: packages/components/src/CommentDisplay/CommentDisplay.tsx type IProps (line 11) | interface IProps { constant DELETED_COMMENT (line 19) | const DELETED_COMMENT = 'The original comment got deleted'; FILE: packages/components/src/CommentsTitle/CommentsTitle.tsx constant NO_COMMENTS (line 5) | const NO_COMMENTS = 'Start the discussion'; constant ONE_COMMENT (line 6) | const ONE_COMMENT = '1 Comment'; constant COMMENTS (line 7) | const COMMENTS = 'Comments'; type IProps (line 9) | interface IProps { FILE: packages/components/src/ConfirmModal/ConfirmModal.tsx type Props (line 6) | interface Props { FILE: packages/components/src/ContentStatistics/ContentStatistics.tsx type IProps (line 9) | interface IProps { FILE: packages/components/src/ContentStatistics/ContentStatisticsList.tsx type Props (line 8) | interface Props { FILE: packages/components/src/ContentStatistics/types.ts type IStatistic (line 3) | type IStatistic = { FILE: packages/components/src/CreateComment/CreateComment.tsx type Props (line 10) | interface Props { FILE: packages/components/src/CreateReply/CreateReply.tsx type Props (line 6) | interface Props { FILE: packages/components/src/DisplayDate/DisplayDate.tsx type DateType (line 6) | type DateType = string | number | Date; type PublishedAction (line 8) | type PublishedAction = 'Published' | 'Started' | 'Asked'; type IProps (line 10) | interface IProps { function formatDistanceShort (line 72) | function formatDistanceShort(date: Date) { FILE: packages/components/src/DonationRequestModal/DonationRequestModal.tsx type IProps (line 5) | interface IProps { constant FALLBACK_DONATION_WIDGET (line 15) | const FALLBACK_DONATION_WIDGET = 'https://donorbox.org/embed/onearmy?a=b... constant REQUEST_THANKYOU (line 16) | const REQUEST_THANKYOU = 'Thank you for helping to make this possible!'; FILE: packages/components/src/DownloadButton/DownloadButton.tsx type IProps (line 7) | interface IProps { FILE: packages/components/src/DownloadCounter/DownloadCounter.tsx type IProps (line 3) | interface IProps { FILE: packages/components/src/DownloadStaticFile/DownloadStaticFile.tsx type IProps (line 9) | interface IProps { type IPropFileDetails (line 19) | interface IPropFileDetails { FILE: packages/components/src/EditComment/EditComment.tsx type IProps (line 9) | interface IProps { FILE: packages/components/src/ElWithBeforeIcon/ElWithBeforeIcon.tsx type ElWithBeforeIconProps (line 6) | interface ElWithBeforeIconProps { constant DEFAULT_ICON_SIZE (line 14) | const DEFAULT_ICON_SIZE = 22; FILE: packages/components/src/FieldCheckbox/FieldCheckbox.tsx type FieldProps (line 5) | type FieldProps = FieldRenderProps; type Props (line 7) | interface Props extends FieldProps { FILE: packages/components/src/FieldInput/FieldInput.tsx type FieldProps (line 5) | type FieldProps = FieldRenderProps & { children?: React.ReactN... type Props (line 7) | interface Props extends FieldProps { type InputModifiers (line 17) | type InputModifiers = { FILE: packages/components/src/FieldMarkdown/AddImage.tsx type IProps (line 10) | interface IProps { FILE: packages/components/src/FieldMarkdown/FieldMarkdown.tsx type FieldProps (line 30) | type FieldProps = FieldRenderProps & { children?: React.ReactN... type IProps (line 32) | interface IProps extends FieldProps { FILE: packages/components/src/FieldTextarea/FieldTextarea.tsx type FieldProps (line 6) | type FieldProps = FieldRenderProps & { children?: React.ReactN... type Props (line 7) | interface Props extends FieldProps { type InputModifiers (line 17) | type InputModifiers = { FILE: packages/components/src/FlagIcon/FlagIcon.tsx type IProps (line 3) | interface IProps { FILE: packages/components/src/FollowButton/FollowButton.tsx type FollowButtonProps (line 7) | interface FollowButtonProps { FILE: packages/components/src/FollowIcon/FollowIcon.tsx type FollowIconProps (line 6) | interface FollowIconProps { FILE: packages/components/src/GridForm/GridForm.tsx type GridFormFields (line 6) | interface GridFormFields { type IProps (line 13) | interface IProps { FILE: packages/components/src/Guidelines/Guidelines.tsx type IProps (line 3) | interface IProps { FILE: packages/components/src/HeroBanner/HeroBanner.tsx type IProps (line 6) | interface IProps { FILE: packages/components/src/Icon/Icon.tsx type IProps (line 42) | interface IProps extends React.ButtonHTMLAttributes { type IconProps (line 165) | type IconProps = IProps & VerticalAlignProps & SpaceProps; FILE: packages/components/src/Icon/svgs.tsx type IProps (line 93) | interface IProps { FILE: packages/components/src/Icon/types.ts type availableGlyphs (line 3) | type availableGlyphs = type IGlyphs (line 114) | type IGlyphs = { [k in availableGlyphs]: JSX.Element }; FILE: packages/components/src/IconCountWithTooltip/IconCountWithTooltip.tsx type IconCountWithTooltipProps (line 8) | interface IconCountWithTooltipProps { function shortFormatNumber (line 15) | function shortFormatNumber(num: number): string { FILE: packages/components/src/ImageGallery/ImageGallery.tsx type IImageGalleryItem (line 11) | interface IImageGalleryItem { type ImageGalleryProps (line 24) | interface ImageGalleryProps { type IState (line 32) | interface IState { FILE: packages/components/src/ImageGalleryThumbnail/ImageGalleryThumbnail.tsx type ImageGalleryThumbnailProps (line 8) | interface ImageGalleryThumbnailProps { FILE: packages/components/src/ImageInput/ImageInputDeleteOverlay.tsx type IProps (line 37) | interface IProps { FILE: packages/components/src/ImageInput/ImageInputV2.tsx type IProps (line 8) | interface IProps { constant ACCEPTED_FORMATS (line 15) | const ACCEPTED_FORMATS = '.jpeg,.jpg,.png,.gif,.svg,.webp'; constant DEFAULT_MAX_FILE_SIZE (line 16) | const DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024; FILE: packages/components/src/ImageInput/ImageInputWrapper.tsx type ITitleProps (line 6) | interface ITitleProps { FILE: packages/components/src/InformationTooltip/InformationTooltip.tsx type IProps (line 6) | interface IProps extends IconProps { FILE: packages/components/src/InternalLink/InternalLink.tsx type Props (line 7) | type Props = RouterLinkProps & ThemedUILinkProps; FILE: packages/components/src/LinkifyText/LinkifyText.tsx type Props (line 10) | interface Props { FILE: packages/components/src/Loader/Loader.tsx type LoaderProps (line 5) | interface LoaderProps { FILE: packages/components/src/Map/Map.client.tsx type IProps (line 8) | interface IProps { function MapEventHandler (line 20) | function MapEventHandler({ setZoom }: { setZoom: (zoom: number) => void ... FILE: packages/components/src/MapCardList/MapCardList.tsx type IProps (line 9) | interface IProps { constant EMPTY_LIST (line 16) | const EMPTY_LIST = 'Oh nos! Nothing to show!'; constant ITEMS_PER_RENDER (line 17) | const ITEMS_PER_RENDER = 20; FILE: packages/components/src/MapFilterListItem/MapFilterListItem.tsx type IProps (line 4) | interface IProps { FILE: packages/components/src/MapWithPin/MapPin.client.tsx type IProps (line 13) | interface IProps { FILE: packages/components/src/MapWithPin/MapWithPin.client.tsx type Props (line 13) | interface Props { function MapClickHandler (line 28) | function MapClickHandler({ FILE: packages/components/src/MemberBadge/MemberBadge.tsx type Props (line 6) | interface Props extends ImageProps { constant MINIMUM_SIZE (line 13) | const MINIMUM_SIZE = 40; FILE: packages/components/src/MemberHistory/MemberHistory.tsx type IProps (line 5) | interface IProps { FILE: packages/components/src/Modal/Modal.tsx type Props (line 5) | interface Props { FILE: packages/components/src/ModerationStatus/ModerationStatus.tsx type Props (line 12) | interface Props { FILE: packages/components/src/NotificationItemSupabase/NotificationItemSupabase.tsx type IProps (line 9) | interface IProps { FILE: packages/components/src/NotificationListSupabase/NotificationListSupabase.tsx type IProps (line 10) | interface IProps { FILE: packages/components/src/NotificationsModal/NotificationsModal.tsx type Props (line 4) | interface Props { FILE: packages/components/src/OsmGeocoding/OsmGeocoding.tsx type Props (line 10) | interface Props { function getGeocoding (line 50) | function getGeocoding(address = '') { FILE: packages/components/src/OsmGeocoding/OsmGeocodingResultsList.tsx type Props (line 6) | interface Props { FILE: packages/components/src/OsmGeocoding/types.tsx type Result (line 1) | interface Result { FILE: packages/components/src/Pagination/Pagination.tsx type Props (line 6) | interface Props { FILE: packages/components/src/PaginationIcons/PaginationIcons.tsx type IProps (line 3) | interface IProps { FILE: packages/components/src/PinProfile/PinProfile.tsx type IProps (line 9) | interface IProps { FILE: packages/components/src/ProfileBadgeContentLabel/ProfileBadgeContentLabel.tsx type Props (line 5) | interface Props { FILE: packages/components/src/ProfileLink/ProfileLink.tsx type Props (line 6) | interface Props { FILE: packages/components/src/ProfileList/ProfileList.tsx type IProps (line 7) | interface IProps { FILE: packages/components/src/ProfileTagsList/ProfileTagsList.tsx type IProps (line 7) | interface IProps { constant DEFAULT_COLOR (line 16) | const DEFAULT_COLOR = '#999999'; type TagProps (line 18) | type TagProps = ComponentProps & { FILE: packages/components/src/ResearchEditorOverview/ResearchEditorOverview.stories.tsx type Story (line 10) | type Story = StoryObj; FILE: packages/components/src/ResearchEditorOverview/ResearchEditorOverview.tsx type ResearchEditorOverviewUpdate (line 5) | type ResearchEditorOverviewUpdate = { type ResearchEditorOverviewProps (line 12) | interface ResearchEditorOverviewProps { FILE: packages/components/src/ReturnPathLink/ReturnPathLink.tsx type IProps (line 5) | type IProps = LinkProps & RefAttributes; FILE: packages/components/src/SearchField/SearchField.tsx type Props (line 5) | type Props = { FILE: packages/components/src/Select/Select.tsx type IOption (line 8) | type IOption = { type Props (line 13) | interface Props extends ReactSelectProps { FILE: packages/components/src/SiteFooter/SiteFooter.tsx type SiteFooterProps (line 7) | type SiteFooterProps = { FILE: packages/components/src/Tag/Tag.tsx type ITag (line 4) | interface ITag { type Props (line 8) | interface Props { FILE: packages/components/src/TagList/TagList.tsx type TagListProps (line 5) | interface TagListProps {} type IProps (line 7) | interface IProps { FILE: packages/components/src/TextNotification/TextNotification.tsx type TextNotificationProps (line 9) | interface TextNotificationProps { FILE: packages/components/src/Tooltip/Tooltip.tsx type TooltipProps (line 11) | type TooltipProps = { FILE: packages/components/src/UsefulStatsButton/UsefulButtonLite.tsx type UsefulConfig (line 8) | interface UsefulConfig { FILE: packages/components/src/UsefulStatsButton/UsefulStatsButton.tsx type IProps (line 8) | interface IProps { FILE: packages/components/src/UserEngagementWrapper/UserEngagementWrapper.tsx type Props (line 5) | interface Props { FILE: packages/components/src/UserStatistics/UserStatistics.stories.tsx type Story (line 10) | type Story = StoryObj; FILE: packages/components/src/UserStatistics/UserStatistics.tsx type UserStatisticsProps (line 13) | interface UserStatisticsProps { FILE: packages/components/src/Username/DisplayName.tsx type DisplayNameProps (line 10) | interface DisplayNameProps { FILE: packages/components/src/Username/UserBadge.tsx type IProps (line 6) | interface IProps { FILE: packages/components/src/Username/Username.tsx type IProps (line 11) | interface IProps { FILE: packages/components/src/VerticalList/VerticalList.client.tsx type IProps (line 13) | interface IProps { function onWheel (line 69) | function onWheel(apiObj: publicApiType, ev: React.WheelEvent): void { FILE: packages/components/src/VideoPlayer/VideoPlayer.stories.tsx type Story (line 10) | type Story = StoryObj; FILE: packages/components/src/VideoPlayer/VideoPlayer.tsx type Props (line 4) | interface Props { FILE: packages/components/src/VisitorModal/VisitorModal.tsx type VisitorModalProps (line 37) | type VisitorModalProps = HideProp & { FILE: packages/components/src/VisitorModal/VisitorModalHeader.tsx type HeaderProps (line 8) | type HeaderProps = HideProp & { data: DisplayData }; FILE: packages/components/src/VisitorModal/props.ts type DisplayData (line 3) | interface DisplayData { type HideProp (line 9) | interface HideProp { FILE: packages/components/src/hooks/useImageLightbox.tsx type Props (line 5) | interface Props { FILE: packages/components/src/hooks/usePhotoSwipeLightbox.ts type UsePhotoSwipeLightboxProps (line 7) | interface UsePhotoSwipeLightboxProps { FILE: packages/components/src/providers/AuthorsContext.ts type AuthorsContextType (line 3) | interface AuthorsContextType { FILE: packages/components/src/test/utils.tsx method Component (line 14) | Component() { FILE: packages/components/src/types/common.ts type User (line 1) | type User = { FILE: packages/components/types/emotion.d.ts type Theme (line 6) | interface Theme extends PlatformTheme {} FILE: packages/cypress/cypress.config.ts method log (line 33) | log(message) { method 'seed database' (line 38) | async 'seed database'() { method 'clear database' (line 68) | async 'clear database'() { FILE: packages/cypress/src/data/index.ts constant MOCK_DATA (line 17) | const MOCK_DATA = { FILE: packages/cypress/src/integration/library/write.spec.ts type Category (line 17) | type Category = 'brainstorm' | 'exhibition' | 'product'; type Duration (line 18) | type Duration = '<1 week' | '1-2 weeks' | '3-4 weeks'; FILE: packages/cypress/src/support/commands.ts type ExpectedNewNotification (line 3) | interface ExpectedNewNotification { type Chainable (line 12) | interface Chainable { FILE: packages/cypress/src/support/commandsUi.ts type UserMenuItem (line 6) | enum UserMenuItem { type IInfo (line 12) | interface IInfo { type IMapPin (line 19) | interface IMapPin { type Chainable (line 26) | interface Chainable { FILE: packages/cypress/src/utils/TestUtils.ts type IUserSignUpDetails (line 1) | interface IUserSignUpDetails { type Page (line 7) | enum Page { type DbCollectionName (line 23) | enum DbCollectionName { FILE: packages/cypress/src/utils/supabaseTestsService.ts type SeedData (line 8) | type SeedData = { class SupabaseTestsService (line 12) | class SupabaseTestsService { method constructor (line 17) | constructor(apiUrl: string, secretKey: string, tenantId: string) { method deleteAccounts (line 40) | async deleteAccounts() { method seedDatabase (line 65) | async seedDatabase(data: SeedData) { method clearDatabase (line 92) | async clearDatabase(tables: string[], tenantId: string) { method createStorage (line 99) | async createStorage(tenantId: string) { method clearStorage (line 107) | async clearStorage(tenantId: string) { method manuallyEmptyBucket (line 115) | async manuallyEmptyBucket (bucketName: string, path = '') { method getUserProfileByUsername (line 144) | async getUserProfileByUsername(username: string) { method seedResearch (line 154) | async seedResearch(profiles: DBProfile[], tagsData) { method seedCategories (line 214) | async seedCategories(type: string) { method seedProfileTags (line 224) | async seedProfileTags() { method seedProfileTypes (line 235) | async seedProfileTypes() { method seedTags (line 246) | async seedTags() { method seedTenantSettings (line 255) | async seedTenantSettings() { method seedQuestions (line 276) | async seedQuestions(profiles) { method seedUsefulVotes (line 294) | async seedUsefulVotes(profiles, sourceData, sourceType) { method seedComment (line 309) | async seedComment(profiles, sourceData, sourceType) { method seedReply (line 325) | async seedReply(profiles, comments, source) { method seedNews (line 341) | async seedNews(profiles, tagsData) { method seedMap (line 359) | async seedMap(profiles) { method seedLibrary (line 371) | async seedLibrary(profiles, tagsData) { method seedBadges (line 425) | async seedBadges() { method seedUpgradeBadges (line 436) | async seedUpgradeBadges(profileBadges: DBProfileBadge[]) { method seedProfileImages (line 458) | async seedProfileImages(): Promise<{ id: string; path: string; fullPat... method seedAccounts (line 466) | async seedAccounts(profileBadges, profileTags, profileTypes, profileIm... method createAuthAndProfile (line 492) | async createAuthAndProfile(user, profileBadgeId, profilTagIds, profile... method createProfile (line 530) | async createProfile( FILE: packages/themes/src/common/button.ts constant BASE_BUTTON (line 3) | const BASE_BUTTON = { type ButtonVariants (line 163) | type ButtonVariants = 'primary' | 'secondary' | 'outline' | 'disabled' |... FILE: packages/themes/src/common/index.ts type Colors (line 3) | type Colors = keyof typeof baseTheme.colors; FILE: packages/themes/src/types/index.ts type PlatformTheme (line 1) | interface PlatformTheme { FILE: shared/messages.ts constant FRIENDLY_MESSAGES (line 8) | const FRIENDLY_MESSAGES = { FILE: shared/mocks/auth/users.ts type IMockAuthUser (line 3) | interface IMockAuthUser { type IMockUsers (line 11) | type IMockUsers = { [key in UserRole]: IMockAuthUser }; constant MOCK_AUTH_USERS (line 14) | const MOCK_AUTH_USERS: IMockUsers = { FILE: shared/mocks/data/research.ts type ResearchSeed (line 3) | type ResearchSeed = Partial & { FILE: shared/mocks/data/users.ts type Users (line 4) | type Users = { FILE: shared/mocks/index.ts constant MOCKS (line 4) | const MOCKS = { FILE: shared/models/author.ts type DBAuthor (line 8) | type DBAuthor = { class Author (line 19) | class Author { method constructor (line 29) | constructor(author: Author) { method fromDB (line 33) | static fromDB(dbAuthor: DBAuthor, photo?: Image) { FILE: shared/models/banner.ts class DBBanner (line 3) | class DBBanner implements IDBDocSB { method constructor (line 11) | constructor(obj: any) { class Banner (line 16) | class Banner implements IDoc { method constructor (line 23) | constructor(obj: any) { method fromDB (line 27) | static fromDB(banner: DBBanner) { FILE: shared/models/category.ts class DBCategory (line 4) | class DBCategory implements IDBDocSB { method constructor (line 12) | constructor(obj: any) { method toDB (line 16) | static toDB(category: Category) { class Category (line 28) | class Category implements IDoc { method constructor (line 35) | constructor(obj: any) { method fromDB (line 39) | static fromDB(category: DBCategory) { FILE: shared/models/comment.ts class DBComment (line 6) | class DBComment implements IDBDocSB { method constructor (line 22) | constructor(comment: DBComment) { class Comment (line 27) | class Comment implements IDoc { method constructor (line 43) | constructor(comment: Comment) { method fromDB (line 47) | static fromDB(obj: DBComment, replies?: Reply[]) { type Reply (line 65) | type Reply = Omit; FILE: shared/models/common.ts type ISODateString (line 4) | type ISODateString = string; type FetchState (line 6) | type FetchState = 'idle' | 'fetching' | 'completed'; type ILatLng (line 8) | interface ILatLng { type Collaborator (line 13) | type Collaborator = { type ContentType (line 19) | type ContentType = 'questions' | 'projects' | 'research' | 'news'; type UsefulContentType (line 21) | type UsefulContentType = 'questions' | 'projects' | 'research' | 'news' ... type ContentFormType (line 23) | type ContentFormType = 'questions' | 'projects' | 'research' | 'research... type DiscussionContentType (line 31) | type DiscussionContentType = (typeof DiscussionContentTypes)[number]; type SubscribableContentTypes (line 33) | type SubscribableContentTypes = FILE: shared/models/content.ts type IDBContentDoc (line 6) | interface IDBContentDoc extends IDBDocSB { type IContentDoc (line 23) | interface IContentDoc extends IDoc { FILE: shared/models/db.ts constant DB_ENDPOINTS (line 45) | const DB_ENDPOINTS = generateDBEndpoints(); type DBEndpoint (line 47) | type DBEndpoint = keyof typeof DB_ENDPOINTS; FILE: shared/models/document.ts type IDBDocSB (line 2) | interface IDBDocSB { type IDoc (line 8) | interface IDoc { type IDBDownloadable (line 14) | interface IDBDownloadable { type IDownloadable (line 20) | interface IDownloadable { FILE: shared/models/filesForm.ts type IFilesForm (line 3) | interface IFilesForm { FILE: shared/models/library.ts type DifficultyLevel (line 13) | type DifficultyLevel = 'easy' | 'medium' | 'hard' | 'very-hard'; class DBProject (line 21) | class DBProject implements IDBContentDoc, IDBDownloadable, IDBModeration { method constructor (line 53) | constructor(obj: Omit) { method toFormData (line 57) | static toFormData(obj: DBProject, images: Image[]) { class Project (line 82) | class Project implements IContentDoc, IDownloadable, IModeration { method constructor (line 112) | constructor(obj: Project) { method fromDB (line 116) | static fromDB(obj: DBProject, tags: Tag[], images: Image[] = []) { class DBProjectStep (line 153) | class DBProjectStep { method constructor (line 162) | constructor(obj: Omit) { method toFormData (line 166) | static toFormData(obj: DBProjectStep, images: Image[]) { class ProjectStep (line 184) | class ProjectStep { method constructor (line 193) | constructor(obj: ProjectStep) { method fromDB (line 197) | static fromDB(obj: DBProjectStep, images?: Image[]) { type ProjectFormData (line 216) | interface ProjectFormData extends IFilesForm { type ProjectStepFormData (line 227) | type ProjectStepFormData = { type ProjectDTO (line 235) | type ProjectDTO = { type ProjectStepDTO (line 249) | type ProjectStepDTO = { FILE: shared/models/maps.ts type IMapGrouping (line 7) | interface IMapGrouping { type IBoundingBox (line 17) | interface IBoundingBox { type IPinGrouping (line 22) | enum IPinGrouping { type MapFilters (line 27) | type MapFilters = { type DBMapSettings (line 34) | type DBMapSettings = { type DefaultMapFilters (line 39) | type DefaultMapFilters = { type FilterResponse (line 43) | type FilterResponse = { FILE: shared/models/media.ts class DBMedia (line 1) | class DBMedia { method constructor (line 6) | constructor(obj: DBMedia) { method fromPublicMedia (line 12) | static fromPublicMedia(obj: MediaWithPublicUrl) { type IMedia (line 21) | interface IMedia { type IMediaFile (line 26) | interface IMediaFile { class Image (line 32) | class Image implements IMedia { method constructor (line 36) | constructor(obj: Image) { class MediaFile (line 41) | class MediaFile implements IMediaFile { method constructor (line 47) | constructor(obj: MediaFile) { type MediaWithPublicUrl (line 52) | type MediaWithPublicUrl = DBMedia & Image; FILE: shared/models/messages.ts type SendMessage (line 1) | type SendMessage = { FILE: shared/models/moderation.ts type IModeration (line 1) | interface IModeration { type IDBModeration (line 6) | interface IDBModeration { type Moderation (line 11) | type Moderation = 'awaiting-moderation' | 'improvements-needed' | 'rejec... FILE: shared/models/news.ts class DBNews (line 14) | class DBNews implements IDBContentDoc { method toFormData (line 38) | static toFormData(news: DBNews, publicHeroImage: Image | null) { type EditNews (line 64) | type EditNews = Omit & { class News (line 68) | class News implements IContentDoc { method constructor (line 92) | constructor(news: Partial) { method fromDB (line 96) | static fromDB(news: DBNews, tags: Tag[], heroImage?: Image | null) { type NewsFormData (line 132) | type NewsFormData = { type NewsDTO (line 142) | type NewsDTO = { FILE: shared/models/notifications.ts type EmailNotificationFrequency (line 4) | enum EmailNotificationFrequency { type NotificationType (line 28) | type NotificationType = (typeof NotificationTypes)[number]; type UserNotificationItem (line 30) | type UserNotificationItem = { type INotification (line 35) | interface INotification { type INotificationSettings (line 53) | type INotificationSettings = { type IPendingEmails (line 60) | interface IPendingEmails { FILE: shared/models/notificationsPreferences.ts class NotificationsPreferences (line 1) | class NotificationsPreferences { class DBNotificationsPreferencesFields (line 10) | class DBNotificationsPreferencesFields { class DBNotificationsPreferences (line 17) | class DBNotificationsPreferences extends DBNotificationsPreferencesFields { type DBPreferencesWithProfileContact (line 22) | interface DBPreferencesWithProfileContact { type NotificationsPreferenceTypes (line 27) | type NotificationsPreferenceTypes = 'comments' | 'replies' | 'research_u... type NotificationsPreferencesFormData (line 29) | interface NotificationsPreferencesFormData { type NotificationsPreferencesViaEmailFormData (line 36) | interface NotificationsPreferencesViaEmailFormData { FILE: shared/models/patreon.ts type IPatreonUserAttributes (line 1) | interface IPatreonUserAttributes { type IPatreonMembershipAttributes (line 13) | interface IPatreonMembershipAttributes { type IPatreonTierAttributes (line 28) | interface IPatreonTierAttributes { type IPatreonTier (line 41) | interface IPatreonTier { type IPatreonMembership (line 46) | interface IPatreonMembership { type IPatreonUser (line 52) | interface IPatreonUser { FILE: shared/models/patreonSettings.ts type PatreonTier (line 1) | type PatreonTier = { type PatreonSettings (line 7) | type PatreonSettings = { FILE: shared/models/profile.ts class DBProfile (line 18) | class DBProfile { method constructor (line 44) | constructor(obj: DBProfile) { class Profile (line 49) | class Profile { method constructor (line 73) | constructor(obj: Profile) { method fromDB (line 77) | static fromDB( type NotificationActionType (line 122) | type NotificationActionType = 'newContent' | 'newComment' | 'newReply'; type NotificationContentType (line 124) | type NotificationContentType = (typeof NotificationContentTypes)[number]; type BasicAuthorDetails (line 125) | type BasicAuthorDetails = Pick; type ProfileListItem (line 126) | type ProfileListItem = Pick< type NotificationContent (line 131) | type NotificationContent = News | Comment | Question | ResearchUpdate; type NotificationSourceContentType (line 132) | type NotificationSourceContentType = SubscribableContentTypes; class DBNotification (line 134) | class DBNotification implements IDBDocSB { method constructor (line 151) | constructor(obj: Partial) { class Notification (line 156) | class Notification implements IDoc { method constructor (line 173) | constructor(obj: Notification) { method fromDB (line 177) | static fromDB(dbNotification: DBNotification) { class NotificationDisplay (line 198) | class NotificationDisplay { method constructor (line 218) | constructor(obj: NotificationDisplay) { method setEmailBody (line 222) | static setEmailBody(notification: Notification): string { method setEmailButtonLabel (line 233) | static setEmailButtonLabel(notification: Notification) { method setEmailPreview (line 247) | static setEmailPreview(notification: Notification) { method setEmailSubject (line 270) | static setEmailSubject(notification: Notification) { method setBody (line 287) | static setBody(notification: Notification): string | undefined { method setDate (line 301) | static setDate(notification: Notification) { method setTitle (line 307) | static setTitle(notification: Notification) { method setSidebarIcon (line 324) | static setSidebarIcon(contentType: NotificationContentType): string { method setSidebarImage (line 338) | static setSidebarImage(author: BasicAuthorDetails | undefined): string { method setLink (line 342) | static setLink(notification: Notification) { method fromNotification (line 346) | static fromNotification(notification: Notification): NotificationDispl... type ProfileFormData (line 370) | type ProfileFormData = { type ProfileDTO (line 386) | type ProfileDTO = { class DBMapPin (line 401) | class DBMapPin implements IDBModeration { class MapPin (line 416) | class MapPin implements IModeration { method constructor (line 430) | constructor(obj: MapPin) { type MapPinFormData (line 435) | type MapPinFormData = { type DBAuthorVotes (line 445) | interface DBAuthorVotes { class AuthorVotes (line 450) | class AuthorVotes { method constructor (line 454) | constructor(obj: AuthorVotes) { method fromDB (line 458) | static fromDB(dbVotes: DBAuthorVotes) { type DBPinProfile (line 466) | type DBPinProfile = Pick< type PinProfile (line 482) | type PinProfile = Pick< type UpsertPin (line 498) | type UpsertPin = Omit) { class DBProfileBadgeJoin (line 18) | class DBProfileBadgeJoin { class ProfileBadge (line 22) | class ProfileBadge { method constructor (line 30) | constructor(obj: Partial) { method fromDBJoin (line 34) | static fromDBJoin(value: DBProfileBadgeJoin): ProfileBadge { method fromDB (line 46) | static fromDB(value: DBProfileBadge) { FILE: shared/models/profileTag.ts type ProfileCategory (line 1) | type ProfileCategory = 'member' | 'space'; class DBProfileTag (line 3) | class DBProfileTag { method constructor (line 9) | constructor(obj: Partial) { class DBProfileTagJoin (line 14) | class DBProfileTagJoin { class ProfileTag (line 18) | class ProfileTag { method constructor (line 24) | constructor(obj: Partial) { method fromDBJoin (line 28) | static fromDBJoin(value: DBProfileTagJoin) { method fromDB (line 38) | static fromDB(tag: DBProfileTag) { FILE: shared/models/profileType.ts class DBProfileType (line 1) | class DBProfileType { method constructor (line 12) | constructor(obj: Partial) { class ProfileType (line 17) | class ProfileType { method constructor (line 28) | constructor(obj: Partial) { method fromDB (line 32) | static fromDB(value: DBProfileType) { FILE: shared/models/question.ts class DBQuestion (line 10) | class DBQuestion implements IDBContentDoc { method constructor (line 33) | constructor(question: DBQuestion) { method toFormData (line 37) | static toFormData(obj: DBQuestion, images: Image[]) { class Question (line 58) | class Question implements IContentDoc { method constructor (line 80) | constructor(question: Question) { method fromDB (line 84) | static fromDB(obj: DBQuestion, tags: Tag[], images?: Image[]) { type QuestionFormData (line 109) | type QuestionFormData = { type QuestionDTO (line 118) | type QuestionDTO = { FILE: shared/models/research.ts type ResearchStatus (line 12) | type ResearchStatus = 'in-progress' | 'complete'; class DBResearchItem (line 18) | class DBResearchItem implements IDBContentDoc { method constructor (line 45) | constructor(obj: Omit) { method toFormData (line 49) | static toFormData(obj: DBResearchItem, publicImage: Image | null) { class ResearchItem (line 63) | class ResearchItem implements IContentDoc { method constructor (line 90) | constructor(obj: ResearchItem) { method fromDB (line 94) | static fromDB( class DBResearchUpdate (line 158) | class DBResearchUpdate implements IDBDocSB, IDBDownloadable { method constructor (line 177) | constructor(obj: Omit) { method toFormData (line 181) | static toFormData(obj: DBResearchUpdate, images: Image[]) { class ResearchUpdate (line 200) | class ResearchUpdate implements IDoc, IDownloadable { method constructor (line 219) | constructor(obj: ResearchUpdate) { method fromDB (line 223) | static fromDB(obj: DBResearchUpdate, images?: Image[]) { function calculateUpdateCommentCount (line 246) | function calculateUpdateCommentCount(research: DBResearchItem): number { type ResearchFormData (line 256) | type ResearchFormData = { type ResearchUpdateFormData (line 265) | interface ResearchUpdateFormData extends IFilesForm { type ResearchDTO (line 272) | type ResearchDTO = { type ResearchUpdateDTO (line 282) | type ResearchUpdateDTO = { FILE: shared/models/selectValue.ts type SelectValue (line 1) | type SelectValue = { label: string; value: string }; FILE: shared/models/subscriber.ts class DBSubscriber (line 3) | class DBSubscriber { FILE: shared/models/tag.ts class DBTag (line 3) | class DBTag implements IDBDocSB { method constructor (line 10) | constructor(obj: any) { method toDB (line 14) | static toDB(tag: Tag) { class Tag (line 25) | class Tag implements IDoc { method constructor (line 32) | constructor(obj: any) { method fromDB (line 36) | static fromDB(tag: DBTag) { FILE: shared/models/tags.ts type ISelectedTags (line 1) | interface ISelectedTags { FILE: shared/models/tenantSettings.ts class TenantSettings (line 3) | class TenantSettings { method constructor (line 26) | constructor(obj: Partial) { type PWAIcons (line 31) | interface PWAIcons { FILE: shared/models/upgradeBadge.ts class DBUpgradeBadge (line 4) | class DBUpgradeBadge { method constructor (line 13) | constructor(obj: Partial) { class UpgradeBadge (line 18) | class UpgradeBadge { method constructor (line 26) | constructor(obj: Partial) { method fromDB (line 30) | static fromDB(value: DBUpgradeBadge) { FILE: shared/models/user.ts type UserRole (line 3) | enum UserRole { type WorkspaceType (line 12) | type WorkspaceType = 'shredder' | 'sheetpress' | 'extrusion' | 'injectio... type IWorkspaceType (line 14) | interface IWorkspaceType { type UserMention (line 21) | type UserMention = { type UserVisitorPreferencePolicy (line 28) | type UserVisitorPreferencePolicy = (typeof userVisitorPreferencePolicies... type UserVisitorPreference (line 30) | type UserVisitorPreference = { type IUserBadges (line 35) | interface IUserBadges { type IImpactDataField (line 40) | interface IImpactDataField { type IUserImpact (line 46) | interface IUserImpact { type IImpactYear (line 50) | type IImpactYear = 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025; type INotificationUpdate (line 52) | type INotificationUpdate = { FILE: shared/models/userCreatedDocs.ts type UserCreatedDocs (line 5) | interface UserCreatedDocs { FILE: shared/models/userEmailData.ts type UserEmailData (line 1) | type UserEmailData = { FILE: shared/models/voteUseful.ts type IVotedUseful (line 1) | interface IVotedUseful { type ISharedFeatures (line 5) | interface ISharedFeatures extends IVotedUseful { type IVotedUsefulUpdate (line 10) | type IVotedUsefulUpdate = { FILE: shared/models/webmanifest.ts type WebAppManifest (line 1) | interface WebAppManifest { type ManifestIcon (line 34) | interface ManifestIcon { FILE: src/.server/models/messageSettings.ts type MessageSettings (line 1) | type MessageSettings = { FILE: src/.server/resend.ts type SendEmailArgs (line 4) | type SendEmailArgs = { function sendEmail (line 11) | async function sendEmail({ from, to, subject, emailTemplate }: SendEmail... type SendEmailsArgs (line 29) | type SendEmailsArgs = { function sendBatchEmails (line 35) | async function sendBatchEmails({ from, subject, emails }: SendEmailsArgs) { FILE: src/.server/templates/Layout.tsx type EmailType (line 14) | type EmailType = 'service' | 'moderation' | 'notification'; type LayoutArgs (line 16) | type LayoutArgs = { FILE: src/.server/templates/ReceiverMessage.tsx type ReceiverMessageArgs (line 4) | type ReceiverMessageArgs = { function ReceiverMessage (line 13) | function ReceiverMessage({ FILE: src/.server/templates/components/box-text.tsx type IProps (line 12) | interface IProps { FILE: src/.server/templates/components/button.tsx type IProps (line 4) | interface IProps { FILE: src/.server/templates/components/footer.tsx type IProps (line 4) | interface IProps { FILE: src/.server/templates/components/header.tsx type IProps (line 4) | interface IProps { FILE: src/.server/templates/components/heading.tsx type IProps (line 4) | interface IProps { FILE: src/.server/templates/instant-notification-email.tsx type IProps (line 15) | interface IProps { FILE: src/common/Analytics/index.tsx type EventAction (line 6) | type EventAction = type EventCategory (line 15) | type EventCategory = 'profiles' | SubscribableContentTypes; type TrackEventOptions (line 17) | type TrackEventOptions = Omit & { FILE: src/common/AuthWrapper.tsx type IProps (line 10) | interface IProps { FILE: src/common/DonationRequestModalContainer.tsx type DonationRequestModalContainerProps (line 5) | type DonationRequestModalContainerProps = { type DonationSettings (line 12) | type DonationSettings = { FILE: src/common/DownloadWrapper.tsx type IProps (line 10) | interface IProps { FILE: src/common/Form/ErrorsContainer.tsx type IProps (line 7) | interface IProps { FILE: src/common/Form/FieldContainer.ts type IFormElement (line 4) | interface IFormElement { FILE: src/common/Form/FileInput/FileDisplay.tsx type FileDisplayProps (line 7) | type FileDisplayProps = { FILE: src/common/Form/FileInput/FileInput.tsx type IProps (line 11) | interface IProps { type FileWithId (line 17) | type FileWithId = File & { id: string }; FILE: src/common/Form/FormWrapper.tsx type IProps (line 9) | interface IProps { constant DRAFT_LABEL (line 27) | const DRAFT_LABEL = 'Save as draft'; FILE: src/common/Form/Select.field.tsx type ISelectOption (line 9) | interface ISelectOption { type ISelectFieldProps (line 13) | interface ISelectFieldProps extends FieldProps { FILE: src/common/Form/UnsavedChangesDialog.tsx constant CONFIRM_DIALOG_MSG (line 4) | const CONFIRM_DIALOG_MSG = 'You have unsaved changes. Are you sure you w... type IProps (line 10) | type IProps = { FILE: src/common/Form/types.ts type FieldProps (line 7) | type FieldProps = FieldRenderProps & { type EmptyObj (line 14) | type EmptyObj = Record; type IStepErrorsList (line 16) | type IStepErrorsList = (INestedErrorList | EmptyObj)[]; type INestedErrorList (line 18) | interface INestedErrorList { type ITopLevelErrorsList (line 22) | interface ITopLevelErrorsList { type Label (line 26) | interface Label { type ILabels (line 33) | interface ILabels { type IErrorsListSet (line 37) | interface IErrorsListSet { type MainFormAction (line 44) | type MainFormAction = 'create' | 'edit'; FILE: src/common/HideDiscussionContainer.tsx type IProps (line 5) | interface IProps { FILE: src/common/Highlighter.tsx type IProps (line 12) | interface IProps { FILE: src/common/PageHeader.tsx type PageHeaderProps (line 3) | type PageHeaderProps = { FILE: src/common/PremiumTierWrapper.tsx type IProps (line 7) | interface IProps { FILE: src/common/Tags/ProfileTagsSelect.tsx type IProps (line 8) | interface IProps extends Partial> { FILE: src/common/Tags/TagsSelect.tsx type IProps (line 9) | interface IProps extends Partial> { FILE: src/common/Toast/CustomToast.tsx type CustomToastProps (line 9) | interface CustomToastProps { FILE: src/common/Toast/useToast.tsx type ToastOptions (line 4) | interface ToastOptions type PromiseOptions (line 9) | interface PromiseOptions FILE: src/common/UserAction.tsx type IProps (line 4) | interface IProps { FILE: src/config/config.ts constant SITE (line 61) | const SITE = siteVariant; constant SENTRY_CONFIG (line 62) | const SENTRY_CONFIG: ISentryConfig = { FILE: src/config/constants.ts type ConfigurationOption (line 13) | type ConfigurationOption = (typeof _supportedConfigurationOptions)[number]; FILE: src/config/imageTransforms.ts constant IMAGE_SIZES (line 3) | const IMAGE_SIZES: { [key: string]: TransformOptions } = { FILE: src/config/types.ts type ISentryConfig (line 1) | interface ISentryConfig { type siteVariants (line 6) | type siteVariants = 'dev_site' | 'test-ci' | 'staging' | 'production' | ... FILE: src/constants.ts constant MAX_COMMENT_LENGTH (line 1) | const MAX_COMMENT_LENGTH = 3000; constant DISCORD_INVITE_URL (line 2) | const DISCORD_INVITE_URL = 'https://discord.gg/gJ7Yyk4'; FILE: src/entry.client.tsx method reset (line 17) | reset() { FILE: src/entry.server.tsx constant ABORT_DELAY (line 11) | const ABORT_DELAY = 5_000; function handleRequest (line 15) | function handleRequest( function handleBotRequest (line 26) | async function handleBotRequest( function handleBrowserRequest (line 62) | async function handleBrowserRequest( FILE: src/factories/commentFactory.server.ts class CommentFactory (line 5) | class CommentFactory { method constructor (line 6) | constructor(private imageService: ImageServiceServer) {} method fromDBWithAuthor (line 8) | async fromDBWithAuthor(dbComment: DBComment, replies?: Reply[]): Promi... method fromDBCommentsToThreads (line 27) | async fromDBCommentsToThreads(dbComments: DBComment[]): Promise { FILE: src/factories/mapPinFactory.server.ts class MapPinFactory (line 6) | class MapPinFactory { method constructor (line 8) | constructor(client: SupabaseClient) { method fromDBWithProfile (line 12) | fromDBWithProfile(pin: DBMapPin): MapPin { method getProfilePin (line 31) | private getProfilePin(profile: DBPinProfile): PinProfile { FILE: src/factories/profileFactory.server.ts class ProfileFactory (line 6) | class ProfileFactory { method constructor (line 8) | constructor(client: SupabaseClient) { method fromDB (line 12) | fromDB(dbProfile: DBProfile, authorVotes?: AuthorVotes[]): Profile { FILE: src/modules/index.ts type MODULE (line 1) | enum MODULE { FILE: src/pages/Academy/ExternalEmbed/ExternalEmbed.tsx type IProps (line 13) | interface IProps { FILE: src/pages/Library/Content/Common/DeleteProjectButton.tsx type DeleteProjectButtonProps (line 9) | type DeleteProjectButtonProps = { FILE: src/pages/Library/Content/Common/FormSettings.tsx constant TIME_OPTIONS (line 7) | const TIME_OPTIONS = [ constant DIFFICULTY_OPTIONS (line 17) | const DIFFICULTY_OPTIONS = [ FILE: src/pages/Library/Content/Common/LibraryCategoryGuidance.tsx type IProps (line 5) | interface IProps { FILE: src/pages/Library/Content/Common/LibraryForm.tsx type LibraryFormProps (line 24) | interface LibraryFormProps { FILE: src/pages/Library/Content/Common/LibraryStep.field.tsx type IProps (line 23) | interface IProps { FILE: src/pages/Library/Content/Common/LibraryStepsContainer.field.tsx type IPropsAnimation (line 10) | interface IPropsAnimation { FILE: src/pages/Library/Content/List/LibraryListHeader.tsx type IProps (line 28) | interface IProps { constant DEFAULT_SORT (line 35) | const DEFAULT_SORT: LibrarySortOption = 'MostUsefulLastWeek'; FILE: src/pages/Library/Content/List/LibrarySortOptions.ts type LibrarySortOption (line 1) | type LibrarySortOption = FILE: src/pages/Library/Content/List/ProjectCard.tsx type ProjectCardProps (line 9) | type ProjectCardProps = { FILE: src/pages/Library/Content/Page/LibraryDescription.tsx type IProps (line 23) | interface IProps { FILE: src/pages/Library/Content/Page/LibraryStep.tsx type IProps (line 7) | interface IProps { FILE: src/pages/Library/Content/Page/ProjectPage.tsx type ProjectPageProps (line 24) | interface ProjectPageProps { FILE: src/pages/Library/Content/utils/downloadCooldown.ts type localStorageExpiry (line 1) | interface localStorageExpiry { FILE: src/pages/Library/constants.ts constant STEP_DESCRIPTION_MIN_LENGTH (line 1) | const STEP_DESCRIPTION_MIN_LENGTH = 100; constant STEP_DESCRIPTION_MAX_LENGTH (line 2) | const STEP_DESCRIPTION_MAX_LENGTH = 1000; constant LIBRARY_DESCRIPTION_MAX_LENGTH (line 3) | const LIBRARY_DESCRIPTION_MAX_LENGTH = 1000; constant LIBRARY_MIN_REQUIRED_STEPS (line 4) | const LIBRARY_MIN_REQUIRED_STEPS = 3; constant LIBRARY_TITLE_MIN_LENGTH (line 5) | const LIBRARY_TITLE_MIN_LENGTH = 5; constant LIBRARY_TITLE_MAX_LENGTH (line 6) | const LIBRARY_TITLE_MAX_LENGTH = 50; constant ITEMS_PER_PAGE (line 7) | const ITEMS_PER_PAGE = 12; FILE: src/pages/Library/library.service.ts type LibrarySearchParams (line 6) | enum LibrarySearchParams { FILE: src/pages/Maps/Content/MapView/ButtonZoomIn.client.tsx type IProps (line 8) | interface IProps { constant ZOOM_IN_TOOLTIP (line 13) | const ZOOM_IN_TOOLTIP = 'Zoom in to your location'; constant DENIED_TOOLTIP (line 14) | const DENIED_TOOLTIP = 'Request to get your location already denied'; FILE: src/pages/Maps/Content/MapView/Cluster.client.tsx type IProps (line 8) | interface IProps { FILE: src/pages/Maps/Content/MapView/MapView.tsx function MapEventsHandler (line 13) | function MapEventsHandler({ FILE: src/pages/Maps/Content/MapView/MapWithListHeader.tsx type IProps (line 9) | interface IProps { FILE: src/pages/Maps/Content/MapView/Popup.client.tsx type IProps (line 10) | interface IProps { FILE: src/pages/Maps/MapFilterList.tsx type MapFilterListProps (line 7) | type MapFilterListProps = { FILE: src/pages/Maps/map.service.ts type IMapPinService (line 5) | interface IMapPinService { FILE: src/pages/News/Content/Common/FormFields/NewsBodyField.tsx type IProps (line 8) | interface IProps { FILE: src/pages/News/Content/Common/FormFields/NewsImageField.tsx type IProps (line 17) | interface IProps { FILE: src/pages/News/Content/Common/NewsForm.tsx type IProps (line 22) | interface IProps { FILE: src/pages/News/NewsListHeader.tsx type IProps (line 9) | interface IProps { FILE: src/pages/News/NewsListItem.tsx type IProps (line 15) | interface IProps { FILE: src/pages/News/NewsPage.tsx type IProps (line 22) | interface IProps { FILE: src/pages/News/NewsSortOptions.ts type NewsSortOption (line 1) | type NewsSortOption = FILE: src/pages/News/constants.ts constant NEWS_MIN_TITLE_LENGTH (line 1) | const NEWS_MIN_TITLE_LENGTH = 5; constant NEWS_MAX_TITLE_LENGTH (line 2) | const NEWS_MAX_TITLE_LENGTH = 60; constant NEWS_MAX_DESCRIPTION_LENGTH (line 3) | const NEWS_MAX_DESCRIPTION_LENGTH = 10000; constant ITEMS_PER_PAGE (line 4) | const ITEMS_PER_PAGE = 10; FILE: src/pages/News/newsContent.service.ts type NewsSearchParams (line 5) | enum NewsSearchParams { FILE: src/pages/PageList.tsx type IPageNavigation (line 3) | interface IPageNavigation { constant COMMUNITY_PAGES (line 48) | const COMMUNITY_PAGES: IPageNavigation[] = [ FILE: src/pages/Question/Content/Common/FormFields/QuestionImages.field.tsx type IProps (line 12) | interface IProps { FILE: src/pages/Question/Content/Common/QuestionForm.tsx type IProps (line 20) | interface IProps { FILE: src/pages/Question/QuestionListHeader.tsx type IProps (line 27) | interface IProps { constant DEFAULT_SORT (line 34) | const DEFAULT_SORT: QuestionSortOption = 'Newest'; FILE: src/pages/Question/QuestionListItem.tsx type IProps (line 13) | interface IProps { FILE: src/pages/Question/QuestionPage.tsx type IProps (line 29) | interface IProps { FILE: src/pages/Question/QuestionSortOptions.ts type QuestionSortOption (line 1) | type QuestionSortOption = FILE: src/pages/Question/constants.ts constant QUESTION_MIN_TITLE_LENGTH (line 1) | const QUESTION_MIN_TITLE_LENGTH = 10; constant QUESTION_MAX_TITLE_LENGTH (line 2) | const QUESTION_MAX_TITLE_LENGTH = 60; constant QUESTION_MAX_DESCRIPTION_LENGTH (line 3) | const QUESTION_MAX_DESCRIPTION_LENGTH = 1000; constant QUESTION_MAX_IMAGES (line 4) | const QUESTION_MAX_IMAGES = 4; constant ITEMS_PER_PAGE (line 5) | const ITEMS_PER_PAGE = 20; FILE: src/pages/Question/question.service.ts type QuestionSearchParams (line 5) | enum QuestionSearchParams { FILE: src/pages/Research/Content/Common/DeleteResearchButton.tsx type DeleteResearchButtonProps (line 12) | type DeleteResearchButtonProps = { FILE: src/pages/Research/Content/Common/ResearchForm.tsx type IProps (line 26) | interface IProps { FILE: src/pages/Research/Content/Common/ResearchUpdateForm.tsx type IProps (line 17) | interface IProps { FILE: src/pages/Research/Content/CreateResearch/Form/ResearchImagesField.tsx type IProps (line 11) | interface IProps { FILE: src/pages/Research/Content/ResearchArticlePage.tsx type IProps (line 17) | interface IProps { FILE: src/pages/Research/Content/ResearchDescription.tsx type IProps (line 17) | interface IProps { FILE: src/pages/Research/Content/ResearchEngagementSection.tsx type ResearchEngagementSectionProps (line 18) | type ResearchEngagementSectionProps = { FILE: src/pages/Research/Content/ResearchFooter.tsx type ResearchFooterProps (line 13) | type ResearchFooterProps = { FILE: src/pages/Research/Content/ResearchLinkToUpdate.tsx type IProps (line 6) | interface IProps { constant COPY_TO_CLIPBOARD (line 11) | const COPY_TO_CLIPBOARD = 'Share this update'; constant SUCCESS (line 12) | const SUCCESS = 'Link copied to clipboard!'; FILE: src/pages/Research/Content/ResearchListHeader.tsx type IProps (line 30) | interface IProps { constant DEFAULT_SORT (line 43) | const DEFAULT_SORT: ResearchSortOption = 'LatestUpdated'; FILE: src/pages/Research/Content/ResearchListItem.tsx type IProps (line 18) | interface IProps { FILE: src/pages/Research/Content/ResearchSearchParams.ts type ResearchSearchParams (line 1) | enum ResearchSearchParams { FILE: src/pages/Research/Content/ResearchUpdate.tsx type IProps (line 20) | interface IProps { FILE: src/pages/Research/ResearchSortOptions.ts type ResearchSortOption (line 1) | type ResearchSortOption = FILE: src/pages/Research/constants.ts constant RESEARCH_TITLE_MAX_LENGTH (line 1) | const RESEARCH_TITLE_MAX_LENGTH = 60; constant RESEARCH_TITLE_MIN_LENGTH (line 2) | const RESEARCH_TITLE_MIN_LENGTH = 5; constant RESEARCH_MAX_LENGTH (line 3) | const RESEARCH_MAX_LENGTH = 3000; constant ITEMS_PER_PAGE (line 4) | const ITEMS_PER_PAGE = 10; FILE: src/pages/User/constants.ts constant MESSAGE_MIN_CHARACTERS (line 1) | const MESSAGE_MIN_CHARACTERS = 20; constant MESSAGE_MAX_CHARACTERS (line 2) | const MESSAGE_MAX_CHARACTERS = 500; FILE: src/pages/User/contact/UserContactForm.tsx type Props (line 12) | interface Props { FILE: src/pages/User/contact/UserContactFormAvailable.tsx type IProps (line 3) | interface IProps { FILE: src/pages/User/contact/UserContactFormNotLoggedIn.tsx type Props (line 11) | interface Props { FILE: src/pages/User/contact/UserContactNotLoggedIn.tsx type Props (line 4) | interface Props { FILE: src/pages/User/content/ProfileContact.tsx type IProps (line 13) | interface IProps { FILE: src/pages/User/content/ProfileDetails.tsx type IProps (line 11) | interface IProps { FILE: src/pages/User/content/ProfileHeader.tsx type IProps (line 6) | interface IProps { FILE: src/pages/User/content/ProfileImage.tsx type IProps (line 6) | interface IProps { FILE: src/pages/User/content/ProfilePage.tsx type IProps (line 11) | interface IProps { FILE: src/pages/User/content/UserCreatedDocuments.tsx type IProps (line 5) | interface IProps { FILE: src/pages/User/content/UserCreatedDocumentsItem.tsx type IProps (line 6) | interface IProps { FILE: src/pages/User/content/UserProfile.tsx type IProps (line 19) | interface IProps { FILE: src/pages/User/impact/Impact.tsx type Props (line 6) | interface Props { FILE: src/pages/User/impact/ImpactField.tsx type Props (line 7) | interface Props { FILE: src/pages/User/impact/ImpactIcon.tsx type Props (line 5) | interface Props { FILE: src/pages/User/impact/ImpactItem.tsx type Props (line 7) | interface Props { FILE: src/pages/User/impact/ImpactMissing.tsx type Props (line 10) | interface Props { FILE: src/pages/User/impact/constants.ts constant IMPACT_REPORT_LINKS (line 3) | const IMPACT_REPORT_LINKS = { constant IMPACT_YEARS (line 10) | const IMPACT_YEARS: IImpactYear[] = [2025, 2024, 2023, 2022, 2021, 2020,... FILE: src/pages/UserSettings/SettingsFormTab.tsx type IProps (line 6) | interface IProps { FILE: src/pages/UserSettings/SettingsFormTabList.tsx type IProps (line 54) | interface IProps { FILE: src/pages/UserSettings/SupabaseNotificationsForm.tsx type IProps (line 62) | interface IProps { FILE: src/pages/UserSettings/SupabaseNotificationsViaEmail.tsx type IProps (line 8) | interface IProps { FILE: src/pages/UserSettings/constants.ts constant MAX_PIN_LENGTH (line 1) | const MAX_PIN_LENGTH = 70; constant MEMBER_PROFILE_DESCRIPTION_MAX_LENGTH (line 2) | const MEMBER_PROFILE_DESCRIPTION_MAX_LENGTH = 500; constant GROUP_PROFILE_DESCRIPTION_MAX_LENGTH (line 3) | const GROUP_PROFILE_DESCRIPTION_MAX_LENGTH = 2000; constant DEFAULT_PUBLIC_CONTACT_PREFERENCE (line 4) | const DEFAULT_PUBLIC_CONTACT_PREFERENCE = true; FILE: src/pages/UserSettings/content/fields/ImpactQuestion.field.tsx type Props (line 7) | interface Props { FILE: src/pages/UserSettings/content/fields/ImpactYear.field.tsx type Props (line 7) | interface Props { FILE: src/pages/UserSettings/content/fields/ImpactYearDisplay.field.tsx type Props (line 8) | interface Props { FILE: src/pages/UserSettings/content/fields/PatreonIntegration.test.tsx constant MOCK_PATREON_TIER_TITLE (line 61) | const MOCK_PATREON_TIER_TITLE = 'Patreon Tier Title'; constant WRONG_PATREON_TIER_TITLE (line 82) | const WRONG_PATREON_TIER_TITLE = 'Wrong Patreon Tier Title'; FILE: src/pages/UserSettings/content/fields/PatreonIntegration.tsx constant HEADING (line 8) | const HEADING = 'Patreon'; constant SUCCESS_MESSAGE (line 9) | const SUCCESS_MESSAGE = 'Successfully linked Patreon account!'; constant SUPPORTER_MESSAGE (line 10) | const SUPPORTER_MESSAGE = constant CONNECT_BUTTON_TEXT (line 13) | const CONNECT_BUTTON_TEXT = 'Connect'; constant UPDATE_BUTTON_TEXT (line 14) | const UPDATE_BUTTON_TEXT = 'Update'; constant REMOVE_BUTTON_TEXT (line 15) | const REMOVE_BUTTON_TEXT = 'Disconnect'; FILE: src/pages/UserSettings/content/fields/ProfileTypeRadio.field.tsx type IProps (line 9) | interface IProps { type FieldProps (line 22) | type FieldProps = FieldRenderProps & { FILE: src/pages/UserSettings/content/impactQuestions.ts type IImpactQuestion (line 1) | interface IImpactQuestion { FILE: src/pages/UserSettings/content/sections/ChangeEmail.form.tsx type IFormValues (line 13) | interface IFormValues { FILE: src/pages/UserSettings/content/sections/ChangePassword.form.tsx type IFormValues (line 11) | interface IFormValues { FILE: src/pages/UserSettings/content/sections/EmailNotifications.section.tsx type IProps (line 9) | interface IProps { FILE: src/pages/UserSettings/content/sections/ImpactYear.section.tsx type Props (line 19) | interface Props { FILE: src/pages/UserSettings/content/sections/ProfileTags.section.tsx type IProps (line 10) | interface IProps { FILE: src/pages/UserSettings/content/sections/ProfileType.section.tsx type ProfileTypeSectionProps (line 11) | type ProfileTypeSectionProps = { FILE: src/pages/UserSettings/content/sections/PublicContact.section.tsx type PublicContactSectionProps (line 5) | type PublicContactSectionProps = { FILE: src/pages/UserSettings/content/sections/UserImages.section.tsx type IProps (line 13) | interface IProps { FILE: src/pages/UserSettings/content/sections/UserInfos.section.tsx type IProps (line 29) | interface IProps { FILE: src/pages/UserSettings/content/sections/VisitorSection.tsx type Props (line 10) | interface Props { function findPolicy (line 19) | function findPolicy(policyValue: UserVisitorPreferencePolicy) { FILE: src/pages/UserSettings/types.ts type ISettingsTab (line 4) | interface ISettingsTab { FILE: src/pages/UserSettings/utils.ts type ImpactDataFieldInputs (line 5) | interface ImpactDataFieldInputs { type IInputs (line 9) | interface IInputs { FILE: src/pages/common/Breadcrumbs/Breadcrumbs.tsx type BreadcrumbStep (line 4) | type BreadcrumbStep = { text: string; link?: string }; type BreadcrumbsProps (line 6) | interface BreadcrumbsProps { FILE: src/pages/common/Category/CategoriesSelectV2.tsx type CategoriesSelectProps (line 5) | type CategoriesSelectProps = { FILE: src/pages/common/CommentsSupabase/CollapsableCommentSection.tsx type Props (line 7) | type Props = { FILE: src/pages/common/CommentsSupabase/CommentItemSupabase.tsx type ICommentItemProps (line 24) | interface ICommentItemProps { FILE: src/pages/common/CommentsSupabase/CommentReplySupabase.tsx constant DELETED_COMMENT (line 19) | const DELETED_COMMENT = 'The original comment got deleted'; type ICommentItemProps (line 21) | interface ICommentItemProps { FILE: src/pages/common/CommentsSupabase/CommentSectionSupabase.tsx type IProps (line 18) | interface IProps { FILE: src/pages/common/CommentsSupabase/CommentSort.tsx type IProps (line 7) | interface IProps { FILE: src/pages/common/CommentsSupabase/CommentSortOptions.ts type CommentSortOption (line 3) | enum CommentSortOption { type SortConfig (line 9) | type SortConfig = { FILE: src/pages/common/CommentsSupabase/CreateCommentSupabase.tsx type IProps (line 14) | interface IProps { FILE: src/pages/common/Drafts/DraftButton.tsx type DraftButtonProps (line 4) | type DraftButtonProps = { FILE: src/pages/common/Drafts/useDraftsSupabase.tsx type Props (line 5) | type Props = { FILE: src/pages/common/FormFields/Category.field.tsx type IProps (line 9) | interface IProps { FILE: src/pages/common/FormFields/FilesFields.tsx type FilesFieldsProps (line 17) | interface FilesFieldsProps { type UploadNewFilesProps (line 98) | interface UploadNewFilesProps { FILE: src/pages/common/FormFields/FormFieldWrapper.tsx type IProps (line 9) | interface IProps { FILE: src/pages/common/FormFields/ImageField.tsx type ImageFieldProps (line 12) | type ImageFieldProps = { FILE: src/pages/common/FormFields/ProfileBadgeField.tsx type IProps (line 9) | interface IProps { FILE: src/pages/common/FormFields/StepImagesField.tsx constant MAX_IMAGES (line 12) | const MAX_IMAGES = 10; type StepImagesFieldProps (line 14) | interface StepImagesFieldProps { FILE: src/pages/common/FormFields/Tags.field.tsx type IProps (line 6) | interface IProps { FILE: src/pages/common/FormFields/Title.field.tsx type IProps (line 7) | interface IProps { FILE: src/pages/common/Header/Menu/MenuMobile/MenuMobileExternalLink.tsx type IProps (line 7) | interface IProps { FILE: src/pages/common/Header/Menu/MenuMobile/MenuMobileLink.tsx type IProps (line 9) | interface IProps { FILE: src/pages/common/Header/Menu/Notifications/NotificationsSupabase.tsx type IProps (line 6) | interface IProps { FILE: src/pages/common/Header/Menu/Profile/Profile.tsx type IProps (line 14) | interface IProps { FILE: src/pages/common/Header/Menu/Profile/ProfileButtonItem.tsx type IProps (line 6) | interface IProps { FILE: src/pages/common/Header/Menu/Profile/ProfileButtons.tsx type IProps (line 6) | interface IProps { FILE: src/pages/common/Header/Menu/Profile/UpgradeBadgeLink.tsx type Props (line 6) | interface Props { FILE: src/pages/common/Header/MobileMenuContext.tsx type MobileMenuContextType (line 3) | interface MobileMenuContextType { FILE: src/pages/common/Layout/ListHeader.tsx type IProps (line 3) | interface IProps { FILE: src/pages/common/Layout/Main.tsx type ILayoutProps (line 4) | interface ILayoutProps { type IProps (line 8) | type IProps = FlexProps & ILayoutProps; FILE: src/pages/common/Layout/MobileSortModal.tsx type FilterSection (line 4) | interface FilterSection { type Props (line 11) | interface Props { FILE: src/pages/common/NotificationsContext.ts type INotificationsContext (line 4) | type INotificationsContext = { FILE: src/pages/common/TenantContext.ts type TenantSettingsContext (line 6) | type TenantSettingsContext = type EnvVariables (line 25) | type EnvVariables = { FILE: src/pages/common/UserNameSelect/UserNameSelect.tsx type IOption (line 7) | interface IOption { type IProps (line 12) | interface IProps { FILE: src/pages/common/UserNameTag/UserNameTag.tsx type IProps (line 6) | interface IProps { FILE: src/pages/constants.ts constant MAX_LINK_LENGTH (line 1) | const MAX_LINK_LENGTH = 2000; FILE: src/repository/supabase.server.ts function createSupabaseServerClient (line 4) | function createSupabaseServerClient(request: Request) { FILE: src/repository/supabaseAdmin.server.ts function createSupabaseAdminServerClient (line 3) | function createSupabaseAdminServerClient() { FILE: src/root.tsx type DocumentProps (line 13) | interface DocumentProps { function loader (line 17) | async function loader({ request }: LoaderFunctionArgs) { function Root (line 144) | function Root() { FILE: src/routes/[manifest.webmanifest].tsx function loader (line 6) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/_.$.tsx function loader (line 3) | async function loader() { function Index (line 7) | function Index() { FILE: src/routes/_.academy.$.tsx function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 21) | function Index() { FILE: src/routes/_.email-confirmation.tsx function Index (line 53) | function Index() { FILE: src/routes/_.email-preferences.tsx function Index (line 28) | function Index() { FILE: src/routes/_.feedback.tsx function loader (line 3) | function loader() { FILE: src/routes/_.forbidden.tsx function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 21) | function Index() { FILE: src/routes/_.how-to.$slug._index.tsx function loader (line 7) | function loader({ params }: LoaderFunctionArgs) { FILE: src/routes/_.how-to.$slug.edit.tsx function loader (line 7) | function loader({ params }: LoaderFunctionArgs) { FILE: src/routes/_.how-to._index.tsx function loader (line 6) | function loader() { FILE: src/routes/_.how-to.create.tsx function loader (line 6) | function loader() { FILE: src/routes/_.how-to.tsx function loader (line 7) | function loader({ params }: LoaderFunctionArgs) { FILE: src/routes/_.library.$slug._index.tsx function loader (line 15) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 67) | function Index() { FILE: src/routes/_.library.$slug.edit.tsx function loader (line 11) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 43) | function Index() { FILE: src/routes/_.library._index.tsx function loader (line 7) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 19) | function Index() { FILE: src/routes/_.library.create.tsx function loader (line 10) | async function loader({ request }) { function Index (line 22) | function Index() { FILE: src/routes/_.library.tsx function loader (line 4) | async function loader() { function Index (line 9) | function Index() { FILE: src/routes/_.map.tsx function loader (line 11) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 23) | function Index() { FILE: src/routes/_.news.$slug._index.tsx function loader (line 17) | async function loader({ request, params }: LoaderFunctionArgs) { function loadNews (line 56) | async function loadNews(client: SupabaseClient, dbNews: DBNews) { function Index (line 88) | function Index() { FILE: src/routes/_.news.$slug.edit.tsx function loader (line 11) | async function loader({ request, params }: LoaderFunctionArgs) { function isAllowedToEdit (line 45) | async function isAllowedToEdit(userAuthId: string, client: SupabaseClien... function Index (line 55) | function Index() { FILE: src/routes/_.news._index.tsx function loader (line 7) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 19) | function Index() { FILE: src/routes/_.news.create.tsx function loader (line 11) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 32) | function Index() { FILE: src/routes/_.news.tsx function loader (line 10) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 24) | function Index() { FILE: src/routes/_.patreon.tsx function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 47) | function Index() { FILE: src/routes/_.privacy.tsx function Index (line 7) | function Index() { FILE: src/routes/_.questions.$slug._index.tsx function loader (line 17) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 72) | function Index() { FILE: src/routes/_.questions.$slug.edit.tsx function loader (line 11) | async function loader({ request, params }: LoaderFunctionArgs) { function isUserAllowedToEdit (line 45) | async function isUserAllowedToEdit( function Index (line 62) | function Index() { FILE: src/routes/_.questions._index.tsx function loader (line 7) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 19) | function Index() { FILE: src/routes/_.questions.create.tsx function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 20) | function Index() { FILE: src/routes/_.questions.tsx function loader (line 10) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 22) | function Index() { FILE: src/routes/_.research.$slug._index.tsx function loader (line 15) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 85) | function Index() { FILE: src/routes/_.research.$slug.edit-update.$updateId.tsx function loader (line 11) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 56) | function Index() { FILE: src/routes/_.research.$slug.edit.tsx function loader (line 11) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 45) | function Index() { FILE: src/routes/_.research.$slug.new-update.tsx function loader (line 10) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 38) | function Index() { FILE: src/routes/_.research._index.tsx function loader (line 7) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 19) | function Index() { FILE: src/routes/_.research.create.tsx function loader (line 8) | async function loader({ request }) { function Index (line 33) | function Index() { FILE: src/routes/_.research.tsx function loader (line 4) | async function loader() { function Index (line 9) | function Index() { FILE: src/routes/_.reset-password.tsx function Index (line 48) | function Index() { FILE: src/routes/_.settings.$.tsx function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 25) | function Index() { FILE: src/routes/_.sign-in.tsx function Index (line 93) | function Index() { FILE: src/routes/_.sign-up-message.tsx function loader (line 6) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 16) | function Index() { FILE: src/routes/_.sign-up.tsx function Index (line 76) | function Index() { FILE: src/routes/_.terms.tsx function Index (line 7) | function Index() { FILE: src/routes/_.tsx function loader (line 24) | async function loader({ request }: LoaderFunctionArgs) { function Index (line 47) | function Index() { FILE: src/routes/_.u.$id._index.tsx function loader (line 16) | async function loader({ request, params }: LoaderFunctionArgs) { function Index (line 79) | function Index() { FILE: src/routes/_.u.tsx function Index (line 4) | function Index() { FILE: src/routes/_.update-password.tsx function Index (line 74) | function Index() { FILE: src/routes/_index.tsx function loader (line 3) | async function loader() { function Index (line 7) | function Index() { FILE: src/routes/api.banner.ts function loader (line 10) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.categories.$type.ts function loader (line 17) | async function loader({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.comments.$id.source.ts function loader (line 4) | async function loader({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.discussions.$sourceId.comments.$id.ts type Supabase (line 8) | type Supabase = { function action (line 13) | async function action({ params, request }: LoaderFunctionArgs) { function updateComment (line 55) | async function updateComment( function deleteComment (line 91) | async function deleteComment({ client, headers }: Supabase, id: string, ... function getProfileByAuthId (line 116) | async function getProfileByAuthId(request: Request, authId: string) { function isUserAdmin (line 128) | function isUserAdmin(user: DBProfile) { function validateRequest (line 132) | async function validateRequest(params: Params, request: Request) { FILE: src/routes/api.discussions.$sourceType.$sourceId.comments.ts function loader (line 12) | async function loader({ params, request }: LoaderFunctionArgs) { function action (line 53) | async function action({ params, request }: LoaderFunctionArgs) { function addSubscriptions (line 162) | function addSubscriptions(comment: DBComment, profile: DBProfile, client... function validateRequest (line 177) | async function validateRequest( FILE: src/routes/api.documents.$type.$contentId.$docId.tsx function loader (line 9) | async function loader({ params, request }: LoaderFunctionArgs) { function resolveUrl (line 28) | async function resolveUrl(params: Params, client: SupabaseClient... function resolveFileLink (line 62) | async function resolveFileLink( function resolveFileFromStorage (line 78) | async function resolveFileFromStorage( function incrementDownloadCount (line 102) | async function incrementDownloadCount(type: string, contentId: number, c... FILE: src/routes/api.documents.ts function validateRequest (line 51) | async function validateRequest(request: Request) { FILE: src/routes/api.donation-settings.$profileId.ts function loader (line 5) | async function loader({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.favicon.ts function loader (line 10) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.images.ts function validateRequest (line 52) | async function validateRequest(request: Request, imageFile: File) { FILE: src/routes/api.messages.tsx function validateRequest (line 134) | async function validateRequest(request: Request, userEmail: string | nul... FILE: src/routes/api.news.$id.ts function validateRequest (line 93) | async function validateRequest( FILE: src/routes/api.news.drafts.ts function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.news.ts function notifyDiscord (line 212) | function notifyDiscord(news: News, profile: DBProfile, siteUrl: string) { function validateRequest (line 225) | async function validateRequest(request: Request, data: NewsDTO): Promise... FILE: src/routes/api.notifications-preferences-via-email.$userCode.ts type DecodedToken (line 6) | interface DecodedToken { function validateRequest (line 123) | async function validateRequest(request: Request, userId: number) { FILE: src/routes/api.notifications-preferences.ts constant DEFAULT_NOTIFICATION_PREFERENCES (line 6) | const DEFAULT_NOTIFICATION_PREFERENCES: DBNotificationsPreferencesFields... function validateRequest (line 100) | async function validateRequest(request: Request) { FILE: src/routes/api.notifications.$id.read.ts function validateRequest (line 39) | async function validateRequest(params: Params, request: Request) { FILE: src/routes/api.notifications.all.read.ts function validateRequest (line 48) | async function validateRequest(request: Request) { FILE: src/routes/api.profile-badges.ts function loader (line 10) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.profile-tags.ts function loader (line 6) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.profile-types.ts function loader (line 5) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.profile.ts function validateRequest (line 142) | async function validateRequest( FILE: src/routes/api.projects.$id.ts function validateRequest (line 140) | async function validateRequest( function updateProject (line 182) | async function updateProject( function deleteProject (line 230) | async function deleteProject(request: Request, id: number) { FILE: src/routes/api.projects.drafts.ts function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.projects.ts function uploadSteps (line 173) | async function uploadSteps(data, formData: FormData, projectDb: DBProjec... function validateRequest (line 203) | async function validateRequest( function createProject (line 234) | async function createProject( function createStep (line 269) | async function createStep( FILE: src/routes/api.questions.$id.ts function validateRequest (line 99) | async function validateRequest( FILE: src/routes/api.questions.drafts.ts function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.questions.ts function notifyDiscord (line 167) | function notifyDiscord(question: Question, profile: DBProfile, siteUrl: ... function validateRequest (line 181) | async function validateRequest(request: Request, data: QuestionDTO) { FILE: src/routes/api.research.$id.status.ts function validateRequest (line 61) | async function validateRequest(request: Request, data: { status: Researc... FILE: src/routes/api.research.$id.ts function deleteResearch (line 98) | async function deleteResearch(request, id: number) { function validateRequest (line 137) | async function validateRequest( FILE: src/routes/api.research.$id.updates.$updateId.ts function deleteResearchUpdate (line 104) | async function deleteResearchUpdate(request: Request, id: number, update... function validateRequest (line 131) | function validateRequest(request: Request, data: ResearchUpdateDTO) { FILE: src/routes/api.research.$id.updates.ts function validateRequest (line 105) | function validateRequest( FILE: src/routes/api.research.drafts.ts function loader (line 9) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.research.ts function validateRequest (line 174) | function validateRequest(request: Request, data: ResearchDTO) { FILE: src/routes/api.settings.impact.ts function validateRequest (line 64) | async function validateRequest(request: Request, data: any) { FILE: src/routes/api.settings.map.ts function validateRequest (line 78) | async function validateRequest(request: Request, data: UpsertPin) { function deletePin (line 96) | async function deletePin(request: Request, profile: DBProfile) { FILE: src/routes/api.subscribers.$contentType.$contentId.subscribed.ts function loader (line 4) | async function loader({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.subscribers.$contentType.$contentId.ts function action (line 5) | async function action({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.tags.ts function loader (line 4) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.upgrade-badges.ts function loader (line 10) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/routes/api.useful.$contentType.$contentId.ts function action (line 5) | async function action({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.useful.$contentType.$contentId.users.ts function loader (line 6) | async function loader({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.useful.$contentType.$contentId.voted.ts function loader (line 4) | async function loader({ request, params }: LoaderFunctionArgs) { FILE: src/routes/api.useful.$contentType.$id.count.ts function loader (line 5) | async function loader({ request, params }: LoaderFunctionArgs) { FILE: src/routes/redirect.tsx function loader (line 6) | async function loader({ request }: LoaderFunctionArgs) { FILE: src/services/authService.server.ts type CreateProfileArgs (line 3) | type CreateProfileArgs = { class AuthServiceServer (line 7) | class AuthServiceServer { method constructor (line 8) | constructor(private client: SupabaseClient) {} method createUserProfile (line 10) | async createUserProfile(args: CreateProfileArgs) { FILE: src/services/broadcastCoordinationService.server.ts class BroadcastCoordinationServiceServer (line 6) | class BroadcastCoordinationServiceServer { method constructor (line 7) | constructor(private client: SupabaseClient) {} method researchUpdate (line 9) | researchUpdate( FILE: src/services/contentRedirectService.server.ts class ContentRedirectServiceServer (line 5) | class ContentRedirectServiceServer { method constructor (line 6) | constructor(private client: SupabaseClient) {} method getUrl (line 8) | async getUrl(id: number, contentType: NotificationContentType): Promis... method resolveResearchUpdateUrl (line 17) | private async resolveResearchUpdateUrl(updateId: number) { method resolveCommentUrl (line 33) | private async resolveCommentUrl(commentId: number) { method resolveResearchUpdateCommentUrl (line 60) | private async resolveResearchUpdateCommentUrl(updateId: number, commen... method resolveGenericContentCommentUrl (line 76) | private async resolveGenericContentCommentUrl( FILE: src/services/contentService.server.ts type Slug (line 5) | type Slug = string; type Id (line 6) | type Id = number; class ContentServiceServer (line 8) | class ContentServiceServer { method constructor (line 9) | constructor(private client: SupabaseClient) {} method getDraftCount (line 11) | async getDraftCount(profileId: number, table: ContentType) { method getMetaFields (line 22) | async getMetaFields(id: Id, table: ContentType, tagIds: number[]) { method incrementViewCount (line 38) | async incrementViewCount(table: ContentType, totalViews: number | unde... method isDuplicateExistingSlug (line 45) | async isDuplicateExistingSlug(slug: Slug, id: Id, table: ContentType) { method isDuplicateNewSlug (line 55) | async isDuplicateNewSlug(slug: Slug, table: ContentType) { method updatePreviousSlugs (line 65) | static updatePreviousSlugs(content: IDBContentDoc, newSlug: Slug) { FILE: src/services/formDataHelper.ts function createFormData (line 1) | function createFormData>(data: T): For... FILE: src/services/imageService.server.ts class ImageServiceServer (line 6) | class ImageServiceServer { method constructor (line 7) | constructor(private client: SupabaseClient) {} method getPublicUrl (line 9) | getPublicUrl(image: DBMedia | null, size?: TransformOptions): Image | ... method getPublicUrls (line 34) | getPublicUrls(images: DBMedia[], size?: TransformOptions): Image[] { method uploadImage (line 47) | async uploadImage(files: File[], path: string) { method uploadFile (line 72) | async uploadFile(files: File[], path: string) { method removeFiles (line 100) | async removeFiles(paths: string[]) { method removeImages (line 104) | async removeImages(paths: string[]) { method getPathDocuments (line 108) | async getPathDocuments(path: string, mapUrlPrefix: string) { FILE: src/services/impactService.server.ts class ImpactServiceServer (line 4) | class ImpactServiceServer { method constructor (line 5) | constructor(private client: SupabaseClient) {} method update (line 7) | async update(profileId: number, year: number, fields: IImpactDataField... FILE: src/services/libraryService.server.ts class LibraryServiceServer (line 14) | class LibraryServiceServer { method constructor (line 15) | constructor(private client: SupabaseClient) {} method getBySlug (line 17) | getBySlug(slug: string) { method getUserProjects (line 71) | async getUserProjects(username: string): Promise[]> { method getProjectPublicMedia (line 96) | getProjectPublicMedia(projectDb: DBProject) { method isAllowedToEditProject (line 119) | async isAllowedToEditProject( method isAllowedToEditProjectById (line 130) | async isAllowedToEditProjectById( method getById (line 145) | async getById(id: number) { method getProjectStepIds (line 150) | async getProjectStepIds(id: number): Promise { method upsertStep (line 156) | async upsertStep( method deleteStepsById (line 199) | async deleteStepsById(ids: number[]) { FILE: src/services/mapPinsService.server.ts class MapPinsServiceServer (line 9) | class MapPinsServiceServer { method constructor (line 10) | constructor(private client: SupabaseClient) {} method get (line 12) | async get() { method delete (line 94) | async delete(profileId: number) { method clearCache (line 104) | clearCache() { FILE: src/services/mapService.server.ts class MapServiceServer (line 4) | class MapServiceServer { method constructor (line 5) | constructor(private client: SupabaseClient) {} method upsert (line 7) | async upsert(pin: UpsertPin, profile: Profile) { FILE: src/services/newsService.server.ts class NewsServiceServer (line 6) | class NewsServiceServer { method constructor (line 7) | constructor(private client: SupabaseClient) {} method getById (line 9) | async getById(id: number) { method getBySlug (line 14) | getBySlug(slug: string) { method getHeroImage (line 53) | async getHeroImage(dbImage: DBMedia | null) { FILE: src/services/notificationEmailService.server.ts class NotificationEmailServiceServer (line 10) | class NotificationEmailServiceServer { method constructor (line 11) | constructor(private client: SupabaseClient) {} method sendInstantNotificationEmails (line 13) | async sendInstantNotificationEmails( FILE: src/services/notificationMapperService.server.ts class NotificationMapperServiceServer (line 4) | class NotificationMapperServiceServer { method constructor (line 5) | constructor(private client: SupabaseClient) {} method transformNotification (line 7) | async transformNotification(dbNotification: DBNotification) { FILE: src/services/notificationsSupabaseService.server.ts class NotificationsSupabaseServiceServer (line 13) | class NotificationsSupabaseServiceServer { method constructor (line 14) | constructor(private client: SupabaseClient) {} method getSubscribedUsers (line 16) | async getSubscribedUsers( method createNotifications (line 37) | async createNotifications( method createNotificationsNewComment (line 70) | async createNotificationsNewComment(comment: DBComment) { method createNotificationsResearchUpdate (line 118) | async createNotificationsResearchUpdate( FILE: src/services/patreonService.server.ts class PatreonServiceServer (line 11) | class PatreonServiceServer { method constructor (line 12) | constructor(private client: SupabaseClient) {} method verifyAndUpdatePatreonUser (line 14) | async verifyAndUpdatePatreonUser(code: string, userAuthId: string, ori... method disconnectUser (line 54) | async disconnectUser(userAuthId: string) { method isSupporter (line 61) | private async isSupporter(patreonUser: IPatreonUser) { method parsePatreonUser (line 74) | private parsePatreonUser(patreonUser: any): IPatreonUser { FILE: src/services/profileService.server.ts class ProfileServiceServer (line 6) | class ProfileServiceServer { method constructor (line 7) | constructor(private client: SupabaseClient) {} method getByAuthId (line 9) | async getByAuthId(id: string): Promise { method getById (line 45) | async getById(id: number): Promise { method getUsersByUsername (line 75) | async getUsersByUsername(usernames: string[]): Promise { method incrementViewCount (line 163) | async incrementViewCount(id: number, totalViews: number) { method getAuthorUsefulVotes (line 170) | async getAuthorUsefulVotes(id: number) { method updateUsername (line 183) | async updateUsername(id: number, username: string) { method updateProfile (line 216) | async updateProfile(id: number, values: ProfileDTO) { method updateTags (line 274) | async updateTags(profileId: number, tagIds: number[]) { method ensureProfile (line 314) | async ensureProfile(user: User) { method updateUserActivity (line 344) | async updateUserActivity(userId: string) { method determinePinModeration (line 356) | private determinePinModeration(types: ProfileType[], profile: DBProfil... FILE: src/services/profileTypesService.server.ts class ProfileTypesServiceServer (line 8) | class ProfileTypesServiceServer { method constructor (line 9) | constructor(private client: SupabaseClient) {} method get (line 11) | async get(cached = true) { FILE: src/services/questionService.server.ts class QuestionServiceServer (line 5) | class QuestionServiceServer { method constructor (line 6) | constructor(private client: SupabaseClient) {} method getById (line 8) | async getById(id: number): Promise { method getBySlug (line 13) | async getBySlug(slug: string) { method getQuestionsByUser (line 49) | async getQuestionsByUser(username: string): Promise[... FILE: src/services/researchService.server.ts class ResearchServiceServer (line 16) | class ResearchServiceServer { method constructor (line 17) | constructor(private client: SupabaseClient) {} method getBySlug (line 19) | async getBySlug(slug: string) { method getCollaborators (line 96) | private async getCollaborators(collaboratorIds: string[] | null) { method getUpdate (line 107) | async getUpdate(researchId: number, updateId: number) { method getUserResearch (line 118) | async getUserResearch(username: string): Promise... method getResearchPublicMedia (line 142) | getResearchPublicMedia(researchDb: DBResearchItem) { method isAllowedToEditResearch (line 153) | async isAllowedToEditResearch(research: DBResearchItem, profile: DBPro... method isAllowedToEditResearchById (line 169) | async isAllowedToEditResearchById(id: number, profile: DBProfile) { method getById (line 181) | async getById(id: number) { method getUpdateById (line 186) | async getUpdateById(id: number) { method isAllowedToEditUpdate (line 191) | async isAllowedToEditUpdate(profile: DBProfile | null, researchId: num... FILE: src/services/storageService.server.ts class StorageServiceServer (line 7) | class StorageServiceServer { method constructor (line 8) | constructor(private client: SupabaseClient) {} method getPublicUrl (line 10) | getPublicUrl(image: DBMedia, size?: TransformOptions): Image | null { method getPublicUrls (line 31) | getPublicUrls(images: DBMedia[], size?: TransformOptions): Image[] { method uploadImage (line 59) | async uploadImage( method uploadFile (line 203) | async uploadFile( method removeFiles (line 260) | async removeFiles(paths: string[]): Promise { method removeImages (line 264) | async removeImages(paths: string[]): Promise { method getPathDocuments (line 268) | async getPathDocuments(path: string, mapUrlPrefix: string): Promise { method validateRoles (line 77) | private validateRoles( FILE: src/stores/Profile/profile.store.tsx class ProfileStore (line 9) | class ProfileStore { method constructor (line 73) | constructor() { method upgradeBadgeForCurrentUser (line 90) | get upgradeBadgeForCurrentUser() { method isComplete (line 104) | get isComplete() { method missingFields (line 112) | get missingFields() { method getMissingFields (line 120) | getMissingFields(profile: Partial) { method isProfileComplete (line 147) | isProfileComplete(profile: Partial) { FILE: src/stores/Subscription/subscription.store.tsx type SubscriptionKey (line 8) | type SubscriptionKey = `${SubscribableContentTypes}-${number}`; type SubscriptionState (line 10) | interface SubscriptionState { class SubscriptionStore (line 15) | class SubscriptionStore { method constructor (line 18) | constructor() { method getCacheKey (line 28) | private getCacheKey(contentType: SubscribableContentTypes, itemId: num... method isSubscribed (line 32) | isSubscribed(contentType: SubscribableContentTypes, itemId: number): b... method isLoading (line 38) | isLoading(contentType: SubscribableContentTypes, itemId: number): bool... method checkAndCacheSubscription (line 43) | async checkAndCacheSubscription( method subscribe (line 86) | async subscribe(contentType: SubscribableContentTypes, itemId: number)... method unsubscribe (line 128) | async unsubscribe(contentType: SubscribableContentTypes, itemId: numbe... method toggleSubscription (line 170) | async toggleSubscription( method clearCache (line 189) | clearCache() { method preloadSubscriptions (line 194) | async preloadSubscriptions( FILE: src/stores/UsefulVote/useUsefulVote.tsx function useUsefulVote (line 6) | function useUsefulVote( FILE: src/stores/UsefulVote/usefulVote.store.tsx type UsefulVoteKey (line 8) | type UsefulVoteKey = `${UsefulContentType}-${number}`; type UsefulVoteState (line 10) | interface UsefulVoteState { class UsefulVoteStore (line 16) | class UsefulVoteStore { method constructor (line 19) | constructor() { method getCacheKey (line 28) | private getCacheKey(contentType: UsefulContentType, contentId: number)... method getVoteState (line 32) | getVoteState(contentType: UsefulContentType, contentId: number): Usefu... method hasVoted (line 37) | hasVoted(contentType: UsefulContentType, contentId: number): boolean { method getUsefulCount (line 42) | getUsefulCount(contentType: UsefulContentType, contentId: number): num... method isLoading (line 47) | isLoading(contentType: UsefulContentType, contentId: number): boolean { method initializeVote (line 52) | async initializeVote( method toggleVote (line 114) | async toggleVote(contentType: UsefulContentType, contentId: number): P... method clearCache (line 172) | clearCache() { FILE: src/styles/context.ts type ServerStyleContextData (line 3) | type ServerStyleContextData = { type ClientStyleContextData (line 11) | type ClientStyleContextData = { FILE: src/types/emotion.d.ts type Theme (line 6) | interface Theme extends PlatformTheme {} type Theme (line 10) | interface Theme extends PlatformTheme {} FILE: src/utils/comparisons.ts constant COMPARISONS (line 8) | const COMPARISONS = { FILE: src/utils/contentType.utils.ts function resolveType (line 1) | function resolveType(type: string) { FILE: src/utils/filters.ts type dateType (line 72) | type dateType = ISODateString | RelativeDateString; type RelativeDateString (line 74) | type RelativeDateString = 'yesterday' | 'tomorrow' | 'thisweek' | 'today'; FILE: src/utils/httpException.ts function createHTTPException (line 8) | function createHTTPException( function validationError (line 26) | function validationError(message: string, field?: string) { function unauthorizedError (line 30) | function unauthorizedError() { function methodNotAllowedError (line 34) | function methodNotAllowedError() { function notFoundError (line 38) | function notFoundError(resource: string) { function forbiddenError (line 42) | function forbiddenError(message = 'Forbidden') { function conflictError (line 46) | function conflictError(message: string) { function tooManyRequestsError (line 50) | function tooManyRequestsError(message: string) { FILE: src/utils/seo.utils.ts type GenerateTagsOptions (line 30) | interface GenerateTagsOptions { FILE: src/utils/statistics.tsx function createUsefulStatistic (line 7) | function createUsefulStatistic( FILE: src/utils/storage.ts constant SUPPORTED_IMAGE_TYPES (line 1) | const SUPPORTED_IMAGE_TYPES = [ function validateImage (line 10) | function validateImage(image: File | null) { function validateImages (line 20) | function validateImages(images: File[]) { FILE: src/utils/urls.ts constant BAZAR_URL (line 1) | const BAZAR_URL = 'https://bazar.preciousplastic.com/'; constant GLOBAL_SITE_URL (line 2) | const GLOBAL_SITE_URL = 'https://preciousplastic.com/'; FILE: supabase/functions/send-email/_templates/components/box-text.tsx type IProps (line 12) | interface IProps { FILE: supabase/functions/send-email/_templates/components/button.tsx type IProps (line 14) | interface IProps { FILE: supabase/functions/send-email/_templates/components/footer.tsx type IProps (line 10) | interface IProps { FILE: supabase/functions/send-email/_templates/components/header.tsx type IProps (line 8) | interface IProps { FILE: supabase/functions/send-email/_templates/components/heading.tsx type IProps (line 13) | interface IProps { FILE: supabase/functions/send-email/_templates/components/hero.tsx type IProps (line 11) | interface IProps { FILE: supabase/functions/send-email/_templates/components/parent-box.tsx type IProps (line 26) | interface IProps { FILE: supabase/functions/send-email/_templates/components/plain-text.tsx type IProps (line 10) | interface IProps { FILE: supabase/functions/send-email/_templates/email-change-new.tsx type SignUpEmailProps (line 19) | interface SignUpEmailProps { FILE: supabase/functions/send-email/_templates/layout.tsx type EmailType (line 37) | type EmailType = 'service' | 'moderation' | 'notification'; type LayoutArgs (line 39) | type LayoutArgs = { FILE: supabase/functions/send-email/_templates/magic-link.tsx type SignUpEmailProps (line 20) | interface SignUpEmailProps { FILE: supabase/functions/send-email/_templates/moderation-email.tsx type IProps (line 19) | interface IProps { FILE: supabase/functions/send-email/_templates/reset-password.tsx type ResetPasswordProps (line 20) | interface ResetPasswordProps { FILE: supabase/functions/send-email/_templates/sign-up.tsx type SignUpEmailProps (line 20) | interface SignUpEmailProps { FILE: supabase/functions/send-email/getTenantSettings.ts function getTenantSettings (line 3) | async function getTenantSettings(req, redirect_to) { FILE: supabase/functions/send-email/index.ts type EmailData (line 22) | type EmailData = { function getUsername (line 143) | async function getUsername(req: Request, authId: string): Promise { FILE: supabase/functions/send-email/signWebhookHeader.ts function signWebhookHeader (line 14) | function signWebhookHeader( FILE: supabase/migrations/20241125140428_profiles_and_comments.sql type "public" (line 1) | create table "public"."categories" ( type "public" (line 11) | create table "public"."comments" ( type "public" (line 29) | create table "public"."profiles" ( type "public" (line 46) | create table "public"."questions" ( type categories_pkey (line 68) | CREATE UNIQUE INDEX categories_pkey ON public.categories USING btree (id) type comments_created_at_source_type_source_id_tenant_id_idx (line 70) | CREATE INDEX comments_created_at_source_type_source_id_tenant_id_idx ON ... type comments_pkey (line 72) | CREATE UNIQUE INDEX comments_pkey ON public.comments USING btree (id) type profiles_firebase_auth_id_idx (line 74) | CREATE INDEX profiles_firebase_auth_id_idx ON public.profiles USING btre... type profiles_pkey (line 76) | CREATE UNIQUE INDEX profiles_pkey ON public.profiles USING btree (id) type profiles_tenant_id_is_verified_created_at_idx (line 78) | CREATE INDEX profiles_tenant_id_is_verified_created_at_idx ON public.pro... type question_pkey (line 80) | CREATE UNIQUE INDEX question_pkey ON public.questions USING btree (id) type questions_deleted_moderation_category_total_views_tags_crea_idx (line 82) | CREATE INDEX questions_deleted_moderation_category_total_views_tags_crea... type questions_tags_idx (line 84) | CREATE INDEX questions_tags_idx ON public.questions USING gin (tags) function public (line 108) | CREATE OR REPLACE FUNCTION public.comment_authors_by_source_id_legacy(so... function public (line 120) | CREATE OR REPLACE FUNCTION public.update_comment_count() FILE: supabase/migrations/20250111151556_questions.sql type "public" (line 3) | create table "public"."subscribers" ( type "public" (line 15) | create table "public"."tags" ( type "public" (line 26) | create table "public"."useful_votes" ( type comments_created_by_idx (line 70) | CREATE INDEX comments_created_by_idx ON public.comments USING btree (cre... type questions_category_idx (line 72) | CREATE INDEX questions_category_idx ON public.questions USING btree (cat... type questions_created_by_idx (line 74) | CREATE INDEX questions_created_by_idx ON public.questions USING btree (c... type subscribers_pkey (line 76) | CREATE UNIQUE INDEX subscribers_pkey ON public.subscribers USING btree (id) type tags_pkey (line 78) | CREATE UNIQUE INDEX tags_pkey ON public.tags USING btree (id) type unique_tenant_slug (line 80) | CREATE UNIQUE INDEX unique_tenant_slug ON public.questions USING btree (... type useful_votes_pkey (line 82) | CREATE UNIQUE INDEX useful_votes_pkey ON public.useful_votes USING btree... function public (line 102) | CREATE OR REPLACE FUNCTION public.comment_authors_by_source_id(source_id... function public (line 114) | CREATE OR REPLACE FUNCTION public.get_useful_votes_count_by_content_id(p... function public (line 129) | CREATE OR REPLACE FUNCTION public.questions_search_fields(questions) FILE: supabase/migrations/20250113184950_profile_auth_columns.sql type profiles_auth_id_tenant_id_key (line 5) | CREATE UNIQUE INDEX profiles_auth_id_tenant_id_key ON public.profiles US... FILE: supabase/migrations/20250208130256_auth_rpc.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_user_id_by_email(email text) FILE: supabase/migrations/20250214235014_messages.sql type "public" (line 1) | create table "public"."messages" ( type "public" (line 13) | create table "public"."tenant_settings" ( type messages_pkey (line 27) | CREATE UNIQUE INDEX messages_pkey ON public.messages USING btree (id) type tenant_settings_pkey (line 29) | CREATE UNIQUE INDEX tenant_settings_pkey ON public.tenant_settings USING... function public (line 45) | CREATE OR REPLACE FUNCTION public.get_user_email_by_id(id uuid) function public (line 56) | CREATE OR REPLACE FUNCTION public.comment_authors_by_source_id(source_id... function public (line 68) | CREATE OR REPLACE FUNCTION public.get_useful_votes_count_by_content_id(p... function public (line 83) | CREATE OR REPLACE FUNCTION public.get_user_id_by_email(email text) function public (line 92) | CREATE OR REPLACE FUNCTION public.questions_search_fields(questions) FILE: supabase/migrations/20250225071100_unique_username.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.is_username_available(username text) FILE: supabase/migrations/20250307061534_messages_temp_fix.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_email_by_username(username text) FILE: supabase/migrations/20250312063008_patreon.sql type "public" (line 1) | create table "public"."patreon_settings" ( type patreon_settings_pkey (line 10) | CREATE UNIQUE INDEX patreon_settings_pkey ON public.patreon_settings USI... FILE: supabase/migrations/20250331134409_add_news.sql type "public" (line 3) | create table "public"."news" ( type news_category_idx (line 26) | CREATE INDEX news_category_idx ON public.news USING btree (category) type news_created_by_idx (line 28) | CREATE INDEX news_created_by_idx ON public.news USING btree (created_by) type news_deleted_moderation_category_total_views_tags_created_a_idx (line 30) | CREATE INDEX news_deleted_moderation_category_total_views_tags_created_a... type news_pkey (line 32) | CREATE UNIQUE INDEX news_pkey ON public.news USING btree (id) type news_tags_idx (line 34) | CREATE INDEX news_tags_idx ON public.news USING gin (tags) type news_tenant_id_slug_key (line 36) | CREATE UNIQUE INDEX news_tenant_id_slug_key ON public.news USING btree (... function public (line 100) | CREATE OR REPLACE FUNCTION public.news_search_fields(news) function public (line 110) | CREATE OR REPLACE FUNCTION public.update_comment_count() FILE: supabase/migrations/20250416104948_research.sql type "public" (line 3) | create table "public"."research" ( type "public" (line 29) | create table "public"."research_updates" ( type research_fts_idx (line 52) | CREATE INDEX research_fts_idx ON public.research USING gin (fts) type research_pkey (line 54) | CREATE UNIQUE INDEX research_pkey ON public.research USING btree (id) type research_update_pkey (line 56) | CREATE UNIQUE INDEX research_update_pkey ON public.research_updates USIN... function public (line 80) | CREATE OR REPLACE FUNCTION public.combined_research_search_fields(resear... function public (line 92) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... function public (line 140) | CREATE OR REPLACE FUNCTION public.update_research_tsvector() function public (line 159) | CREATE OR REPLACE FUNCTION public.comment_authors_by_source_id(source_id... function public (line 171) | CREATE OR REPLACE FUNCTION public.get_useful_votes_count_by_content_id(p... function public (line 186) | CREATE OR REPLACE FUNCTION public.get_user_email_by_id(id uuid) function public (line 197) | CREATE OR REPLACE FUNCTION public.get_user_email_by_username(username text) function public (line 208) | CREATE OR REPLACE FUNCTION public.get_user_id_by_email(email text) function public (line 217) | CREATE OR REPLACE FUNCTION public.is_username_available(username text) function public (line 226) | CREATE OR REPLACE FUNCTION public.news_search_fields(news) function public (line 234) | CREATE OR REPLACE FUNCTION public.questions_search_fields(questions) function public (line 242) | CREATE OR REPLACE FUNCTION public.update_comment_count() function public (line 288) | CREATE OR REPLACE FUNCTION public.get_research_count(search_query text D... FILE: supabase/migrations/20250422092704_add_notifications.sql type "public" (line 8) | create table "public"."notifications" ( type notifications_pkey (line 28) | CREATE UNIQUE INDEX notifications_pkey ON public.notifications USING btr... FILE: supabase/migrations/20250512170000_research_sorting.sql function public (line 2) | CREATE OR REPLACE FUNCTION public.get_research( FILE: supabase/migrations/20250513090512_update_for_email_notifications.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_email_by_profile_id(id int8) FILE: supabase/migrations/20250521044802_fix-research-sorting-useful.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_research(username_param text) function public (line 22) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... FILE: supabase/migrations/20250523104253_20250523_add-get-user-questions.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_questions(username_param text) FILE: supabase/migrations/20250603130017_add_notifications_preferences.sql type "public" (line 1) | create table "public"."notifications_preferences" ( type notifications_preferences_pkey (line 12) | CREATE UNIQUE INDEX notifications_preferences_pkey ON public.notificatio... FILE: supabase/migrations/20250605115351_research-latest-updated.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... FILE: supabase/migrations/20250609100159_research_query_ranking.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... FILE: supabase/migrations/20250609101144_library.sql type "public" (line 1) | create table "public"."project_steps" ( type "public" (line 16) | create table "public"."projects" ( type project_steps_pkey (line 47) | CREATE UNIQUE INDEX project_steps_pkey ON public.project_steps USING btr... type projects_pkey (line 49) | CREATE UNIQUE INDEX projects_pkey ON public.projects USING btree (id) type projects_slug_key (line 51) | CREATE UNIQUE INDEX projects_slug_key ON public.projects USING btree (sl... type projects_title_key (line 53) | CREATE UNIQUE INDEX projects_title_key ON public.projects USING btree (t... function public (line 89) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 158) | CREATE OR REPLACE FUNCTION public.get_projects_count(search_query text D... function public (line 182) | CREATE OR REPLACE FUNCTION public.update_project_tsvector() function public (line 201) | CREATE OR REPLACE FUNCTION public.get_user_projects(username_param text) FILE: supabase/migrations/20250621165139_user_research_filter_draft.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_research(username_param text) FILE: supabase/migrations/20250624101144_replace_get_projects_count.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_projects_count(search_query text D... FILE: supabase/migrations/20250624101145_replace_get_user_projects.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_projects(username_param text) FILE: supabase/migrations/20250624101147_replace_get_user_projects_again.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_projects(username_param text) FILE: supabase/migrations/20250722145300_profile.sql type "public" (line 1) | create table "public"."map_pins" ( type "public" (line 20) | create table "public"."profile_tags" ( type "public" (line 30) | create table "public"."profile_tags_relations" ( type "public" (line 38) | create table "public"."profile_badges" ( type "public" (line 49) | create table "public"."profile_badges_relations" ( type "public" (line 58) | create table "public"."profile_types" ( type "public" (line 73) | create table "public"."map_settings" ( type map_pins_lat_lng_idx (line 108) | CREATE INDEX map_pins_lat_lng_idx ON public.map_pins USING btree (lat, lng) type map_pins_pkey (line 110) | CREATE UNIQUE INDEX map_pins_pkey ON public.map_pins USING btree (id) type map_pins_user_id_idx (line 112) | CREATE INDEX map_pins_user_id_idx ON public.map_pins USING btree (profil... type profile_tags_pkey (line 114) | CREATE UNIQUE INDEX profile_tags_pkey ON public.profile_tags USING btree... type profile_tags_relations_pkey (line 116) | CREATE UNIQUE INDEX profile_tags_relations_pkey ON public.profile_tags_r... type profile_badges_pkey (line 118) | CREATE UNIQUE INDEX profile_badges_pkey ON public.profile_badges USING b... type profile_badges_relations_pkey (line 120) | CREATE UNIQUE INDEX profile_badges_relations_pkey ON public.profile_badg... type profile_types_pkey (line 122) | CREATE UNIQUE INDEX profile_types_pkey ON public.profile_types USING btr... function public (line 167) | CREATE OR REPLACE FUNCTION public.get_author_vote_counts(author_id bigint) function public (line 545) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 627) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... FILE: supabase/migrations/20250824222054_fix-author-vote-count-deleted.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_author_vote_counts(author_id bigint) FILE: supabase/migrations/20250830203011_banner.sql type "public" (line 1) | create table "public"."banners" ( type banner_pkey (line 13) | CREATE UNIQUE INDEX banner_pkey ON public.banners USING btree (id) FILE: supabase/migrations/20250902101059_map_pins-optimizations.sql type idx_map_pins_moderation (line 1) | CREATE INDEX idx_map_pins_moderation ON public.map_pins USING btree (mod... type idx_map_pins_moderation_tenant (line 3) | CREATE INDEX idx_map_pins_moderation_tenant ON public.map_pins USING btr... type idx_map_pins_tenant_id (line 5) | CREATE INDEX idx_map_pins_tenant_id ON public.map_pins USING btree (tena... type idx_profile_badges_relations_badge_id (line 7) | CREATE INDEX idx_profile_badges_relations_badge_id ON public.profile_bad... type idx_profile_badges_relations_profile_id (line 9) | CREATE INDEX idx_profile_badges_relations_profile_id ON public.profile_b... type idx_profile_badges_relations_tenant_id (line 11) | CREATE INDEX idx_profile_badges_relations_tenant_id ON public.profile_ba... type idx_profile_badges_tenant_id (line 13) | CREATE INDEX idx_profile_badges_tenant_id ON public.profile_badges USING... type idx_profile_tags_relations_profile_id (line 15) | CREATE INDEX idx_profile_tags_relations_profile_id ON public.profile_tag... type idx_profile_tags_relations_tag_id (line 17) | CREATE INDEX idx_profile_tags_relations_tag_id ON public.profile_tags_re... type idx_profile_tags_relations_tenant_id (line 19) | CREATE INDEX idx_profile_tags_relations_tenant_id ON public.profile_tags... type idx_profile_tags_tenant_id (line 21) | CREATE INDEX idx_profile_tags_tenant_id ON public.profile_tags USING btr... type idx_profile_types_tenant_id (line 23) | CREATE INDEX idx_profile_types_tenant_id ON public.profile_types USING b... type idx_profiles_profile_type (line 25) | CREATE INDEX idx_profiles_profile_type ON public.profiles USING btree (p... FILE: supabase/migrations/20250904101010_useful_comments.sql function public (line 11) | CREATE OR REPLACE FUNCTION public.get_useful_votes_count_by_content_id( function public (line 28) | CREATE OR REPLACE FUNCTION public.get_comments_with_votes(p_source_type ... FILE: supabase/migrations/20250912091153_fix-delete-comment-trigger.sql function public (line 5) | CREATE OR REPLACE FUNCTION public.update_comment_count() FILE: supabase/migrations/20250912110000_optimize_get_comments_with_votes.sql type comments_source_type_source_id_created_at_idx (line 3) | CREATE INDEX IF NOT EXISTS comments_source_type_source_id_created_at_idx... type useful_votes_comments_content_id_idx (line 5) | CREATE INDEX IF NOT EXISTS useful_votes_comments_content_id_idx ON publi... type useful_votes_comments_user_id_content_id_idx (line 9) | CREATE INDEX IF NOT EXISTS useful_votes_comments_user_id_content_id_idx ... FILE: supabase/migrations/20250912210000_optimize_profile_indexes.sql type profiles_tenant_created_at_idx (line 1) | CREATE INDEX IF NOT EXISTS profiles_tenant_created_at_idx ON public.prof... type projects_created_by_idx (line 3) | CREATE INDEX IF NOT EXISTS projects_created_by_idx ON public.projects (c... type research_created_by_idx (line 5) | CREATE INDEX IF NOT EXISTS research_created_by_idx ON public.research (c... type research_updates_created_by_idx (line 7) | CREATE INDEX IF NOT EXISTS research_updates_created_by_idx ON public.res... type questions_created_by_idx (line 9) | CREATE INDEX IF NOT EXISTS questions_created_by_idx ON public.questions ... type useful_votes_content_type_content_id_idx (line 11) | CREATE INDEX IF NOT EXISTS useful_votes_content_type_content_id_idx ON p... type profile_tags_relations_profile_tenant_idx (line 13) | CREATE INDEX IF NOT EXISTS profile_tags_relations_profile_tenant_idx ON ... type profile_badges_relations_profile_tenant_idx (line 15) | CREATE INDEX IF NOT EXISTS profile_badges_relations_profile_tenant_idx O... FILE: supabase/migrations/20251011132910_fix_messages_receiver.sql type banners_pkey (line 25) | CREATE UNIQUE INDEX banners_pkey ON public.banners USING btree (id) type questions_pkey (line 27) | CREATE UNIQUE INDEX questions_pkey ON public.questions USING btree (id) type research_updates_pkey (line 29) | CREATE UNIQUE INDEX research_updates_pkey ON public.research_updates USI... FILE: supabase/migrations/20251011234304_fix_function_security_warning.sql function "public" (line 3) | CREATE OR REPLACE FUNCTION "public"."comment_authors_by_source_id"("sour... function "public" (line 14) | CREATE OR REPLACE FUNCTION "public"."get_comments_with_votes"("p_source_... function "public" (line 93) | CREATE OR REPLACE FUNCTION "public"."update_comment_count"() RETURNS "tr... function "public" (line 176) | CREATE OR REPLACE FUNCTION "public"."get_user_email_by_id"("id" "uuid") ... function "public" (line 185) | CREATE OR REPLACE FUNCTION "public"."get_user_email_by_profile_id"("id" ... function "public" (line 194) | CREATE OR REPLACE FUNCTION "public"."get_user_email_by_username"("userna... function "public" (line 203) | CREATE OR REPLACE FUNCTION "public"."get_user_id_by_email"("email" "text... function "public" (line 211) | CREATE OR REPLACE FUNCTION "public"."news_search_fields"("public"."news"... function "public" (line 218) | CREATE OR REPLACE FUNCTION "public"."is_username_available"("username" "... function "public" (line 226) | CREATE OR REPLACE FUNCTION "public"."combined_project_search_fields"("pr... function "public" (line 237) | CREATE OR REPLACE FUNCTION "public"."get_projects"("search_query" "text"... function "public" (line 318) | CREATE OR REPLACE FUNCTION "public"."get_projects_count"("search_query" ... function "public" (line 342) | CREATE OR REPLACE FUNCTION "public"."get_user_projects"("username_param"... function "public" (line 364) | CREATE OR REPLACE FUNCTION "public"."update_project_tsvector"() RETURNS ... function "public" (line 383) | CREATE OR REPLACE FUNCTION "public"."get_user_questions"("username_param... function "public" (line 403) | CREATE OR REPLACE FUNCTION "public"."questions_search_fields"("public"."... function "public" (line 411) | CREATE OR REPLACE FUNCTION "public"."combined_research_search_fields"("r... function "public" (line 422) | CREATE OR REPLACE FUNCTION "public"."get_research"("search_query" "text"... function "public" (line 526) | CREATE OR REPLACE FUNCTION "public"."get_research_count"("search_query" ... function "public" (line 544) | CREATE OR REPLACE FUNCTION "public"."get_user_research"("username_param"... function "public" (line 565) | CREATE OR REPLACE FUNCTION "public"."update_research_tsvector"() RETURNS... function "public" (line 584) | CREATE OR REPLACE FUNCTION "public"."get_author_vote_counts"("author_id"... function "public" (line 608) | CREATE OR REPLACE FUNCTION "public"."get_useful_votes_count_by_content_i... FILE: supabase/migrations/20251012135652_fix_policy_performance_2.sql function public (line 53) | CREATE OR REPLACE FUNCTION public.combined_project_search_fields(project... function public (line 66) | CREATE OR REPLACE FUNCTION public.combined_research_search_fields(resear... function public (line 79) | CREATE OR REPLACE FUNCTION public.comment_authors_by_source_id(source_id... function public (line 92) | CREATE OR REPLACE FUNCTION public.get_author_vote_counts(author_id bigint) function public (line 119) | CREATE OR REPLACE FUNCTION public.get_comments_with_votes(p_source_type ... function public (line 200) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 283) | CREATE OR REPLACE FUNCTION public.get_projects_count(search_query text D... function public (line 309) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... function public (line 415) | CREATE OR REPLACE FUNCTION public.get_research_count(search_query text D... function public (line 435) | CREATE OR REPLACE FUNCTION public.get_useful_votes_count_by_content_id(p... function public (line 451) | CREATE OR REPLACE FUNCTION public.get_user_email_by_id(id uuid) function public (line 463) | CREATE OR REPLACE FUNCTION public.get_user_email_by_profile_id(id bigint) function public (line 475) | CREATE OR REPLACE FUNCTION public.get_user_email_by_username(username text) function public (line 487) | CREATE OR REPLACE FUNCTION public.get_user_id_by_email(email text) function public (line 497) | CREATE OR REPLACE FUNCTION public.get_user_projects(username_param text) function public (line 521) | CREATE OR REPLACE FUNCTION public.get_user_questions(username_param text) function public (line 543) | CREATE OR REPLACE FUNCTION public.get_user_research(username_param text) function public (line 566) | CREATE OR REPLACE FUNCTION public.is_username_available(username text) function public (line 576) | CREATE OR REPLACE FUNCTION public.news_search_fields(news) function public (line 585) | CREATE OR REPLACE FUNCTION public.questions_search_fields(questions) function public (line 594) | CREATE OR REPLACE FUNCTION public.update_comment_count() function public (line 679) | CREATE OR REPLACE FUNCTION public.update_project_tsvector() function public (line 699) | CREATE OR REPLACE FUNCTION public.update_research_tsvector() FILE: supabase/migrations/20251024140004_fix_get_project_count.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_projects_count(search_query text D... FILE: supabase/migrations/20251025145021_add_most_views_sort.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... FILE: supabase/migrations/20251130000401_create_upgrade_badge_table.sql type "public" (line 1) | create table "public"."upgrade_badge" ( type idx_upgrade_badge_is_space (line 13) | CREATE INDEX idx_upgrade_badge_is_space ON public.upgrade_badge USING bt... type idx_upgrade_badge_tenant_id (line 15) | CREATE INDEX idx_upgrade_badge_tenant_id ON public.upgrade_badge USING b... type upgrade_badge_pkey (line 17) | CREATE UNIQUE INDEX upgrade_badge_pkey ON public.upgrade_badge USING btr... FILE: supabase/migrations/20251203151049_research_author_search_fix.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_projects_count(search_query text D... function public (line 33) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... function public (line 143) | CREATE OR REPLACE FUNCTION public.get_research_count(search_query text D... FILE: supabase/migrations/20251217132033_add_most_useful_last_week_feature.sql function public (line 7) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 102) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... FILE: supabase/migrations/20260103002808_add_premium_tier.sql function public (line 5) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 100) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... FILE: supabase/migrations/20260118140428_update_user_doc_gets.sql function public (line 2) | CREATE OR REPLACE FUNCTION public.get_user_projects(username_param text) function public (line 29) | CREATE OR REPLACE FUNCTION public.get_user_questions(username_param text) function "public" (line 54) | CREATE OR REPLACE FUNCTION "public"."get_user_research"(username_param t... FILE: supabase/migrations/20260118233300_batch_notifications.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_subscribed_users_emails_to_notify(... FILE: supabase/migrations/20260301000000_fix_partial_search.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... function public (line 123) | CREATE OR REPLACE FUNCTION public.get_research_count(search_query text D... function public (line 153) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 248) | CREATE OR REPLACE FUNCTION public.get_projects_count(search_query text D... FILE: supabase/migrations/20260309135320_questions_search_rpc.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_questions(search_query text DEFAUL... function public (line 78) | CREATE OR REPLACE FUNCTION public.get_questions_count(search_query text ... FILE: supabase/migrations/20260317131051_add_published_at.sql function public (line 22) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 117) | CREATE OR REPLACE FUNCTION public.get_questions(search_query text DEFAUL... function public (line 193) | CREATE OR REPLACE FUNCTION public.get_research(search_query text DEFAULT... FILE: supabase/migrations/20260322000000_add_get_storage_object_path.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_storage_object_path( FILE: supabase/migrations/20260330124656_make_username_nullable.sql type profiles_username_tenant_id_key (line 11) | CREATE UNIQUE INDEX profiles_username_tenant_id_key ON public.profiles U... function public (line 15) | CREATE OR REPLACE FUNCTION public.is_username_available(username text, e... FILE: supabase/migrations/20260402103538_search_multiple_words.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... function public (line 113) | CREATE OR REPLACE FUNCTION public.get_projects_count(search_query text D... FILE: supabase/migrations/20260402150623_search_stop_words.sql function public (line 3) | CREATE OR REPLACE FUNCTION public.get_projects(search_query text DEFAULT... FILE: supabase/schemas/banners.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."banners" ( FILE: supabase/schemas/categories.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."categories" ( FILE: supabase/schemas/comments.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."comments" ( type "public" (line 16) | CREATE INDEX "comments_created_by_idx" ON "public"."comments" USING "btr... type "public" (line 17) | CREATE INDEX "comments_source_type_source_id_created_at_idx" ON "public"... function "public" (line 26) | CREATE OR REPLACE FUNCTION "public"."comment_authors_by_source_id"("sour... function "public" (line 37) | CREATE OR REPLACE FUNCTION "public"."get_comments_with_votes"("p_source_... function "public" (line 116) | CREATE OR REPLACE FUNCTION "public"."update_comment_count"() RETURNS "tr... FILE: supabase/schemas/common.sql function "public" (line 9) | CREATE OR REPLACE FUNCTION "public"."get_user_email_by_id"("id" "uuid") ... function "public" (line 18) | CREATE OR REPLACE FUNCTION "public"."get_user_email_by_profile_id"("id" ... function "public" (line 27) | CREATE OR REPLACE FUNCTION "public"."get_user_email_by_username"("userna... function "public" (line 36) | CREATE OR REPLACE FUNCTION "public"."get_user_id_by_email"("email" "text... function public (line 43) | CREATE OR REPLACE FUNCTION public.get_storage_object_path( FILE: supabase/schemas/map.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."map_pins" ( type "public" (line 17) | CREATE TABLE IF NOT EXISTS "public"."map_settings" ( type "public" (line 24) | CREATE INDEX "idx_map_pins_moderation" ON "public"."map_pins" USING "btr... type "public" (line 25) | CREATE INDEX "idx_map_pins_moderation_tenant" ON "public"."map_pins" USI... type "public" (line 26) | CREATE INDEX "idx_map_pins_tenant_id" ON "public"."map_pins" USING "btre... type "public" (line 27) | CREATE INDEX "map_pins_lat_lng_idx" ON "public"."map_pins" USING "btree"... type "public" (line 28) | CREATE INDEX "map_pins_user_id_idx" ON "public"."map_pins" USING "btree"... FILE: supabase/schemas/messages.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."messages" ( FILE: supabase/schemas/news.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."news" ( function "public" (line 25) | CREATE OR REPLACE FUNCTION "public"."news_search_fields"("public"."news"... type "public" (line 35) | CREATE INDEX "news_category_idx" ON "public"."news" USING "btree" ("cate... type "public" (line 36) | CREATE INDEX "news_created_by_idx" ON "public"."news" USING "btree" ("cr... type "public" (line 37) | CREATE INDEX "news_deleted_moderation_category_total_views_tags_created_... type "public" (line 38) | CREATE INDEX "news_tags_idx" ON "public"."news" USING "gin" ("tags") FILE: supabase/schemas/notifications.sql type "public" (line 27) | CREATE TABLE IF NOT EXISTS "public"."notifications" ( type "public" (line 46) | CREATE TABLE IF NOT EXISTS "public"."notifications_preferences" ( FILE: supabase/schemas/patreon.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."patreon_settings" ( FILE: supabase/schemas/profiles.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."profile_badges" ( type "public" (line 11) | CREATE TABLE IF NOT EXISTS "public"."profile_badges_relations" ( type "public" (line 19) | CREATE TABLE IF NOT EXISTS "public"."profile_tags" ( type "public" (line 27) | CREATE TABLE IF NOT EXISTS "public"."upgrade_badge" ( type "public" (line 36) | CREATE TABLE IF NOT EXISTS "public"."profile_tags_relations" ( type "public" (line 44) | CREATE TABLE IF NOT EXISTS "public"."profile_types" ( type "public" (line 57) | CREATE TABLE IF NOT EXISTS "public"."profiles" ( type "public" (line 88) | CREATE INDEX "idx_profile_badges_relations_badge_id" ON "public"."profil... type "public" (line 89) | CREATE INDEX "idx_profile_badges_relations_profile_id" ON "public"."prof... type "public" (line 90) | CREATE INDEX "idx_profile_badges_relations_tenant_id" ON "public"."profi... type "public" (line 91) | CREATE INDEX "idx_profile_badges_tenant_id" ON "public"."profile_badges"... type "public" (line 92) | CREATE INDEX "idx_profile_tags_relations_profile_id" ON "public"."profil... type "public" (line 93) | CREATE INDEX "idx_profile_tags_relations_tag_id" ON "public"."profile_ta... type "public" (line 94) | CREATE INDEX "idx_profile_tags_relations_tenant_id" ON "public"."profile... type "public" (line 95) | CREATE INDEX "idx_profile_tags_tenant_id" ON "public"."profile_tags" USI... type "public" (line 96) | CREATE INDEX "idx_profile_types_tenant_id" ON "public"."profile_types" U... type "public" (line 97) | CREATE INDEX "idx_profiles_profile_type" ON "public"."profiles" USING "b... type "public" (line 98) | CREATE INDEX "idx_upgrade_badge_tenant_id" ON "public"."upgrade_badge" U... type "public" (line 99) | CREATE INDEX "idx_upgrade_badge_is_space" ON "public"."upgrade_badge" US... type "public" (line 101) | CREATE INDEX "profile_badges_relations_profile_tenant_idx" ON "public"."... type "public" (line 102) | CREATE INDEX "profile_tags_relations_profile_tenant_idx" ON "public"."pr... type "public" (line 103) | CREATE INDEX "profiles_firebase_auth_id_idx" ON "public"."profiles" USIN... type "public" (line 104) | CREATE INDEX "profiles_tenant_created_at_idx" ON "public"."profiles" USI... type "public" (line 105) | CREATE UNIQUE INDEX "profiles_username_tenant_id_key" ON "public"."profi... function "public" (line 144) | CREATE OR REPLACE FUNCTION "public"."is_username_available"("username" "... FILE: supabase/schemas/projects.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."project_steps" ( type "public" (line 13) | CREATE TABLE IF NOT EXISTS "public"."projects" ( type "public" (line 48) | CREATE INDEX "projects_created_by_idx" ON "public"."projects" USING "btr... function "public" (line 67) | CREATE OR REPLACE FUNCTION "public"."combined_project_search_fields"("pr... function "public" (line 78) | CREATE OR REPLACE FUNCTION "public"."get_projects"("search_query" "text"... function "public" (line 249) | CREATE OR REPLACE FUNCTION "public"."update_project_tsvector"() RETURNS ... FILE: supabase/schemas/questions.sql function public (line 1) | CREATE OR REPLACE FUNCTION public.get_user_questions(username_param text) type "public" (line 25) | CREATE TABLE IF NOT EXISTS "public"."questions" ( function "public" (line 48) | CREATE OR REPLACE FUNCTION "public"."questions_search_fields"("public"."... FILE: supabase/schemas/research.sql type "public" (line 7) | CREATE TABLE IF NOT EXISTS "public"."research" ( type "public" (line 31) | CREATE TABLE IF NOT EXISTS "public"."research_updates" ( type "public" (line 52) | CREATE INDEX "research_created_by_idx" ON "public"."research" USING "btr... type "public" (line 53) | CREATE INDEX "research_fts_idx" ON "public"."research" USING "gin" ("fts") type "public" (line 54) | CREATE INDEX "research_updates_created_by_idx" ON "public"."research_upd... function "public" (line 75) | CREATE OR REPLACE FUNCTION "public"."combined_research_search_fields"("r... function "public" (line 86) | CREATE OR REPLACE FUNCTION "public"."get_research"("search_query" "text"... function "public" (line 216) | CREATE OR REPLACE FUNCTION "public"."get_research_count"("search_query" ... function "public" (line 280) | CREATE OR REPLACE FUNCTION "public"."update_research_tsvector"() RETURNS... FILE: supabase/schemas/subscribers.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."subscribers" ( FILE: supabase/schemas/tags.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."tags" ( FILE: supabase/schemas/tenant_settings.sql type "public" (line 1) | CREATE TABLE IF NOT EXISTS "public"."tenant_settings" ( FILE: supabase/schemas/useful.sql type "public" (line 9) | CREATE TABLE IF NOT EXISTS "public"."useful_votes" ( type "public" (line 18) | CREATE INDEX "useful_votes_comments_content_id_idx" ON "public"."useful_... type "public" (line 19) | CREATE INDEX "useful_votes_comments_user_id_content_id_idx" ON "public".... type "public" (line 20) | CREATE INDEX "useful_votes_content_type_content_id_idx" ON "public"."use... function "public" (line 29) | CREATE OR REPLACE FUNCTION "public"."get_author_vote_counts"("author_id"... function "public" (line 53) | CREATE OR REPLACE FUNCTION "public"."get_useful_votes_count_by_content_i... FILE: vite.config.ts method manualChunks (line 48) | manualChunks(id) {