+import { isBrowser } from "@utils/browser";
+import { poll } from "@utils/helpers";
+import { amAdmin, canCreateCommunity } from "@utils/roles";
import { Component, createRef, linkEvent } from "inferno";
import { NavLink } from "inferno-router";
import {
toast,
updateUnreadCountsInterval,
} from "../../utils";
-import isBrowser from "../../utils/browser/is-browser";
-import poll from "../../utils/helpers/poll";
-import amAdmin from "../../utils/roles/am-admin";
-import canCreateCommunity from "../../utils/roles/can-create-community";
import { Icon } from "../common/icon";
import { PictrsImage } from "../common/pictrs-image";
+import {
+ amCommunityCreator,
+ canAdmin,
+ canMod,
+ isAdmin,
+ isBanned,
+ isMod,
+} from "@utils/roles";
import classNames from "classnames";
import { Component, InfernoNode, linkEvent } from "inferno";
import { Link } from "inferno-router";
setupTippy,
showScores,
} from "../../utils";
-import amCommunityCreator from "../../utils/roles/am-community-creator";
-import canAdmin from "../../utils/roles/can-admin";
-import canMod from "../../utils/roles/can-mod";
-import isAdmin from "../../utils/roles/is-admin";
-import isBanned from "../../utils/roles/is-banned";
-import isMod from "../../utils/roles/is-mod";
import { Icon, PurgeWarning, Spinner } from "../common/icon";
import { MomentTime } from "../common/moment-time";
import { CommunityLink } from "../community/community-link";
+import { getQueryParams, getQueryString } from "@utils/helpers";
+import type { QueryParams } from "@utils/types";
import { Component, linkEvent } from "inferno";
import {
CommunityResponse,
setIsoData,
showLocal,
} from "../../utils";
-import getQueryParams from "../../utils/helpers/get-query-params";
-import getQueryString from "../../utils/helpers/get-query-string";
-import type { QueryParams } from "../../utils/types/query-params";
import { HtmlTags } from "../common/html-tags";
import { Spinner } from "../common/icon";
import { ListingTypeSelect } from "../common/listing-type-select";
+import { getQueryParams, getQueryString } from "@utils/helpers";
+import type { QueryParams } from "@utils/types";
import { Component, linkEvent } from "inferno";
import { RouteComponentProps } from "inferno-router/dist/Route";
import {
updateCommunityBlock,
updatePersonBlock,
} from "../../utils";
-import getQueryParams from "../../utils/helpers/get-query-params";
-import getQueryString from "../../utils/helpers/get-query-string";
-import type { QueryParams } from "../../utils/types/query-params";
import { CommentNodes } from "../comment/comment-nodes";
import { BannerIconHeader } from "../common/banner-icon-header";
import { DataTypeSelect } from "../common/data-type-select";
+import { amAdmin, amMod, amTopMod } from "@utils/roles";
import { Component, InfernoNode, linkEvent } from "inferno";
import { T } from "inferno-i18next-dess";
import { Link } from "inferno-router";
import { i18n } from "../../i18next";
import { UserService } from "../../services";
import { getUnixTime, hostname, mdToHtml, myAuthRequired } from "../../utils";
-import amAdmin from "../../utils/roles/am-admin";
-import amMod from "../../utils/roles/am-mod";
-import amTopMod from "../../utils/roles/am-top-mod";
import { Badges } from "../common/badges";
import { BannerIconHeader } from "../common/banner-icon-header";
import { Icon, PurgeWarning, Spinner } from "../common/icon";
+import { getQueryParams, getQueryString } from "@utils/helpers";
+import { canCreateCommunity } from "@utils/roles";
+import type { QueryParams } from "@utils/types";
import { NoOptionI18nKeys } from "i18next";
-import { Component, linkEvent, MouseEventHandler } from "inferno";
+import { Component, MouseEventHandler, linkEvent } from "inferno";
import { T } from "inferno-i18next-dess";
import { Link } from "inferno-router";
import {
import { FirstLoadService } from "../../services/FirstLoadService";
import { HttpService, RequestState } from "../../services/HttpService";
import {
+ RouteDataResponse,
commentsToFlatNodes,
editComment,
editPost,
postToCommentSortType,
relTags,
restoreScrollPosition,
- RouteDataResponse,
saveScrollPosition,
setIsoData,
setupTippy,
trendingFetchLimit,
updatePersonBlock,
} from "../../utils";
-import getQueryParams from "../../utils/helpers/get-query-params";
-import getQueryString from "../../utils/helpers/get-query-string";
-import canCreateCommunity from "../../utils/roles/can-create-community";
-import type { QueryParams } from "../../utils/types/query-params";
import { CommentNodes } from "../comment/comment-nodes";
import { DataTypeSelect } from "../common/data-type-select";
import { HtmlTags } from "../common/html-tags";
+import { isBrowser } from "@utils/browser";
import { Component, linkEvent } from "inferno";
import { GetSiteResponse, LoginResponse } from "lemmy-js-client";
import { i18n } from "../../i18next";
import { UserService } from "../../services";
import { HttpService, RequestState } from "../../services/HttpService";
import { myAuth, setIsoData, toast, validEmail } from "../../utils";
-import isBrowser from "../../utils/browser/is-browser";
import { HtmlTags } from "../common/html-tags";
import { Spinner } from "../common/icon";
+import { isBrowser } from "@utils/browser";
import { Options, passwordStrength } from "check-password-strength";
import { NoOptionI18nKeys } from "i18next";
import { Component, linkEvent } from "inferno";
toast,
validEmail,
} from "../../utils";
-import isBrowser from "../../utils/browser/is-browser";
import { HtmlTags } from "../common/html-tags";
import { Icon, Spinner } from "../common/icon";
import { MarkdownTextArea } from "../common/markdown-textarea";
+import { debounce, getQueryParams, getQueryString } from "@utils/helpers";
+import { amAdmin, amMod } from "@utils/roles";
+import type { QueryParams } from "@utils/types";
import { NoOptionI18nKeys } from "i18next";
import { Component, linkEvent } from "inferno";
import { T } from "inferno-i18next-dess";
personToChoice,
setIsoData,
} from "../utils";
-import debounce from "../utils/helpers/debounce";
-import getQueryParams from "../utils/helpers/get-query-params";
-import getQueryString from "../utils/helpers/get-query-string";
-import amAdmin from "../utils/roles/am-admin";
-import amMod from "../utils/roles/am-mod";
-import type { QueryParams } from "../utils/types/query-params";
import { HtmlTags } from "./common/html-tags";
import { Icon, Spinner } from "./common/icon";
import { MomentTime } from "./common/moment-time";
+import { getQueryParams, getQueryString } from "@utils/helpers";
+import { canMod, isAdmin, isBanned } from "@utils/roles";
+import type { QueryParams } from "@utils/types";
import classNames from "classnames";
import { NoOptionI18nKeys } from "i18next";
import { Component, linkEvent } from "inferno";
toast,
updatePersonBlock,
} from "../../utils";
-import getQueryParams from "../../utils/helpers/get-query-params";
-import getQueryString from "../../utils/helpers/get-query-string";
-import canMod from "../../utils/roles/can-mod";
-import isAdmin from "../../utils/roles/is-admin";
-import isBanned from "../../utils/roles/is-banned";
-import type { QueryParams } from "../../utils/types/query-params";
import { BannerIconHeader } from "../common/banner-icon-header";
import { HtmlTags } from "../common/html-tags";
import { Icon, Spinner } from "../common/icon";
+import { amAdmin } from "@utils/roles";
import { Component, linkEvent } from "inferno";
import {
CommentReportResponse,
myAuthRequired,
setIsoData,
} from "../../utils";
-import amAdmin from "../../utils/roles/am-admin";
import { CommentReport } from "../comment/comment-report";
import { HtmlTags } from "../common/html-tags";
import { Spinner } from "../common/icon";
+import { debounce } from "@utils/helpers";
import { NoOptionI18nKeys } from "i18next";
import { Component, linkEvent } from "inferno";
import {
updateCommunityBlock,
updatePersonBlock,
} from "../../utils";
-import debounce from "../../utils/helpers/debounce";
import { HtmlTags } from "../common/html-tags";
import { Icon, Spinner } from "../common/icon";
import { ImageUploadForm } from "../common/image-upload-form";
+import { getQueryParams } from "@utils/helpers";
+import type { QueryParams } from "@utils/types";
import { Component } from "inferno";
import { RouteComponentProps } from "inferno-router/dist/Route";
import {
myAuth,
setIsoData,
} from "../../utils";
-import getQueryParams from "../../utils/helpers/get-query-params";
-import type { QueryParams } from "../../utils/types/query-params";
import { HtmlTags } from "../common/html-tags";
import { Spinner } from "../common/icon";
import { PostForm } from "./post-form";
+import { canShare, share } from "@utils/browser";
+import {
+ amAdmin,
+ amCommunityCreator,
+ amMod,
+ canAdmin,
+ canMod,
+ isAdmin,
+ isBanned,
+ isMod,
+} from "@utils/roles";
import classNames from "classnames";
import { Component, linkEvent } from "inferno";
import { Link } from "inferno-router";
setupTippy,
showScores,
} from "../../utils";
-import canShare from "../../utils/browser/can-share";
-import share from "../../utils/browser/share";
-import amAdmin from "../../utils/roles/am-admin";
-import amCommunityCreator from "../../utils/roles/am-community-creator";
-import amMod from "../../utils/roles/am-mod";
-import canAdmin from "../../utils/roles/can-admin";
-import canMod from "../../utils/roles/can-mod";
-import isAdmin from "../../utils/roles/is-admin";
-import isBanned from "../../utils/roles/is-banned";
-import isMod from "../../utils/roles/is-mod";
import { Icon, PurgeWarning, Spinner } from "../common/icon";
import { MomentTime } from "../common/moment-time";
import { PictrsImage } from "../common/pictrs-image";
+import { isBrowser } from "@utils/browser";
+import { debounce } from "@utils/helpers";
import autosize from "autosize";
import { Component, createRef, linkEvent, RefObject } from "inferno";
import {
updateCommunityBlock,
updatePersonBlock,
} from "../../utils";
-import isBrowser from "../../utils/browser/is-browser";
-import debounce from "../../utils/helpers/debounce";
import { CommentForm } from "../comment/comment-form";
import { CommentNodes } from "../comment/comment-nodes";
import { HtmlTags } from "../common/html-tags";
+import { debounce, getQueryParams, getQueryString } from "@utils/helpers";
+import type { QueryParams } from "@utils/types";
import type { NoOptionI18nKeys } from "i18next";
import { Component, linkEvent } from "inferno";
import {
setIsoData,
showLocal,
} from "../utils";
-import debounce from "../utils/helpers/debounce";
-import getQueryParams from "../utils/helpers/get-query-params";
-import getQueryString from "../utils/helpers/get-query-string";
-import type { QueryParams } from "../utils/types/query-params";
import { CommentNodes } from "./comment/comment-nodes";
import { HtmlTags } from "./common/html-tags";
import { Spinner } from "./common/icon";
-import isBrowser from "./is-browser";
+import { isBrowser } from "@utils/browser";
export default function canShare() {
return isBrowser() && !!navigator.canShare;
--- /dev/null
+import canShare from "./can-share";
+import isBrowser from "./is-browser";
+import share from "./share";
+
+export { canShare, isBrowser, share };
-import isBrowser from "./is-browser";
+import { isBrowser } from "@utils/browser";
export default function share(shareData: ShareData) {
if (isBrowser()) {
-import isBrowser from "../browser/is-browser";
+import { isBrowser } from "@utils/browser";
export default function getQueryParams<
T extends Record<string, any>
--- /dev/null
+import debounce from "./debounce";
+import getQueryParams from "./get-query-params";
+import getQueryString from "./get-query-string";
+import { groupBy } from "./group-by";
+import poll from "./poll";
+import sleep from "./sleep";
+
+export { debounce, getQueryParams, getQueryString, groupBy, poll, sleep };
+import { isMod } from "@utils/roles";
import { CommunityModeratorView } from "lemmy-js-client";
import { UserService } from "../../services";
-import isMod from "./is-mod";
export default function amMod(
mods?: CommunityModeratorView[],
+import { canMod } from "@utils/roles";
import { PersonView } from "lemmy-js-client";
import { UserService } from "../../services";
-import canMod from "./can-mod";
export default function canAdmin(
creatorId: number,
+import { amAdmin } from "@utils/roles";
import { GetSiteResponse } from "lemmy-js-client";
import { UserService } from "../../services";
-import amAdmin from "./am-admin";
export default function canCreateCommunity(
siteRes: GetSiteResponse,
--- /dev/null
+import amAdmin from "./am-admin";
+import amCommunityCreator from "./am-community-creator";
+import amMod from "./am-mod";
+import amSiteCreator from "./am-site-creator";
+import amTopMod from "./am-top-mod";
+import canAdmin from "./can-admin";
+import canCreateCommunity from "./can-create-community";
+import canMod from "./can-mod";
+import isAdmin from "./is-admin";
+import isBanned from "./is-banned";
+import isMod from "./is-mod";
+
+export {
+ amAdmin,
+ amCommunityCreator,
+ amMod,
+ amSiteCreator,
+ amTopMod,
+ canAdmin,
+ canCreateCommunity,
+ canMod,
+ isAdmin,
+ isBanned,
+ isMod,
+};
--- /dev/null
+import { QueryParams } from "./query-params";
+
+export { QueryParams };
"noImplicitReturns": true,
"experimentalDecorators": true,
"strictNullChecks": true,
- "noFallthroughCasesInSwitch": true
+ "noFallthroughCasesInSwitch": true,
+ "paths": {
+ "@utils/roles": ["./shared/utils/roles/index"],
+ "@utils/browser": ["./shared/utils/browser/index"],
+ "@utils/helpers": ["./shared/utils/helpers/index"],
+ "@utils/types": ["./shared/utils/types/index"],
+ }
},
"include": [
"src/**/*.ts",