diff --git a/backend-pg/.eslintrc.js b/backend-pg/.eslintrc.js index 4fc556adb..416116742 100644 --- a/backend-pg/.eslintrc.js +++ b/backend-pg/.eslintrc.js @@ -14,7 +14,7 @@ module.exports = { }, rules: { "consistent-return": "off", // my style - 'import/order': 'off', // for simple-import-order + "import/order": "off", // for simple-import-order "import/prefer-default-export": "off", // why "import/first": "error", "import/newline-after-import": "error", @@ -24,12 +24,22 @@ module.exports = { "warn", { groups: [ - ["^node:", "^[a-z]", "@fastify"], + // Side effect imports. + ["^\\u0000"], + // Node.js builtins prefixed with `node:`. + ["^node:"], + // Packages. + // Things that start with a letter (or digit or underscore), or `@` followed by a letter. + ["^@?\\w"], ["^@app"], ["@lib"], ["@server"], - ["^~(/.*|$)"], - ["^\\.\\.(?!/?$)", "^\\.\\./?$", "^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"] + // Absolute imports and other imports such as Vue-style `@/foo`. + // Anything not matched in another group. + ["^"], + // Relative imports. + // Anything that starts with a dot. + ["^\\."] ] } ] diff --git a/backend-pg/src/@types/fastify.d.ts b/backend-pg/src/@types/fastify.d.ts index f0330fecf..da1fe1f6b 100644 --- a/backend-pg/src/@types/fastify.d.ts +++ b/backend-pg/src/@types/fastify.d.ts @@ -1,3 +1,5 @@ +import "fastify"; + import { TUsers } from "@app/db/schemas"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; import { TApiKeyServiceFactory } from "@app/services/api-key/api-key-service"; @@ -13,8 +15,6 @@ import { TAuthTokenServiceFactory } from "@app/services/token/token-service"; import { TUserDalFactory } from "@app/services/user/user-dal"; import { TUserServiceFactory } from "@app/services/user/user-service"; -import "fastify"; - declare module "fastify" { interface FastifyRequest { realIp: string; diff --git a/backend-pg/src/db/knexfile.ts b/backend-pg/src/db/knexfile.ts index 35e4e2547..ec7458da6 100644 --- a/backend-pg/src/db/knexfile.ts +++ b/backend-pg/src/db/knexfile.ts @@ -1,10 +1,10 @@ +// eslint-disable-next-line +import "ts-node/register"; + import dotenv from "dotenv"; import type { Knex } from "knex"; import path from "path"; -// eslint-disable-next-line -import "ts-node/register"; - // Update with your config settings. dotenv.config({ path: path.join(__dirname, "../../.env"), diff --git a/backend-pg/src/ee/services/permission/org-permission.ts b/backend-pg/src/ee/services/permission/org-permission.ts index cfe83afe7..2fc929489 100644 --- a/backend-pg/src/ee/services/permission/org-permission.ts +++ b/backend-pg/src/ee/services/permission/org-permission.ts @@ -1,5 +1,3 @@ -import picomatch from "picomatch"; - import { AbilityBuilder, buildMongoQueryMatcher, @@ -7,6 +5,7 @@ import { MongoAbility } from "@casl/ability"; import { FieldCondition, FieldInstruction, JsInterpreter } from "@ucast/mongo2js"; +import picomatch from "picomatch"; const $glob: FieldInstruction = { type: "field", diff --git a/backend-pg/src/ee/services/permission/permission-service.ts b/backend-pg/src/ee/services/permission/permission-service.ts index fbe770a03..713b2e1dc 100644 --- a/backend-pg/src/ee/services/permission/permission-service.ts +++ b/backend-pg/src/ee/services/permission/permission-service.ts @@ -1,3 +1,6 @@ +import { createMongoAbility, MongoAbility, RawRuleOf } from "@casl/ability"; +import { unpackRules } from "@casl/ability/extra"; + import { ProjectMembershipRole } from "@app/db/schemas"; import { BadRequestError, UnauthorizedError } from "@app/lib/errors"; import { ActorType } from "@app/services/auth/auth-type"; @@ -15,9 +18,6 @@ import { projectNoAccessPermissions, projectViewerPermission} from "./project-permission"; -import { createMongoAbility, MongoAbility, RawRuleOf } from "@casl/ability"; -import { unpackRules } from "@casl/ability/extra"; - type TPermissionServiceFactoryDep = { permissionDal: TPermissionDalFactory; }; diff --git a/backend-pg/src/ee/services/permission/project-permission.ts b/backend-pg/src/ee/services/permission/project-permission.ts index 962ee7807..e28aa9c00 100644 --- a/backend-pg/src/ee/services/permission/project-permission.ts +++ b/backend-pg/src/ee/services/permission/project-permission.ts @@ -1,5 +1,3 @@ -import picomatch from "picomatch"; - import { AbilityBuilder, buildMongoQueryMatcher, @@ -7,6 +5,7 @@ import { ForcedSubject, MongoAbility} from "@casl/ability"; import { FieldCondition, FieldInstruction, JsInterpreter } from "@ucast/mongo2js"; +import picomatch from "picomatch"; const $glob: FieldInstruction = { type: "field", diff --git a/backend-pg/src/main.ts b/backend-pg/src/main.ts index 9fcc2c6b6..6cf1ec6e5 100644 --- a/backend-pg/src/main.ts +++ b/backend-pg/src/main.ts @@ -1,10 +1,10 @@ import dotenv from "dotenv"; +import { initDbConnection } from "./db"; import { formatSmtpConfig, initEnvConfig } from "./lib/config/env"; import { initLogger } from "./lib/logger"; import { main } from "./server/app"; import { smtpServiceFactory } from "./services/smtp/smtp-service"; -import { initDbConnection } from "./db"; dotenv.config(); const run = async () => { diff --git a/backend-pg/src/server/app.ts b/backend-pg/src/server/app.ts index a83443ff6..8ab5fbf3e 100644 --- a/backend-pg/src/server/app.ts +++ b/backend-pg/src/server/app.ts @@ -1,6 +1,3 @@ -import fasitfy from "fastify"; -import { Knex } from "knex"; -import { Logger } from "pino"; import type { FastifyCookieOptions } from "@fastify/cookie"; import cookie from "@fastify/cookie"; import type { FastifyCorsOptions } from "@fastify/cors"; @@ -8,6 +5,9 @@ import cors from "@fastify/cors"; import helmet from "@fastify/helmet"; import type { FastifyRateLimitOptions } from "@fastify/rate-limit"; import ratelimiter from "@fastify/rate-limit"; +import fasitfy from "fastify"; +import { Knex } from "knex"; +import { Logger } from "pino"; import { TSmtpService } from "@app/services/smtp/smtp-service"; diff --git a/backend-pg/src/server/plugins/swagger.ts b/backend-pg/src/server/plugins/swagger.ts index 6b8295a87..40a354bba 100644 --- a/backend-pg/src/server/plugins/swagger.ts +++ b/backend-pg/src/server/plugins/swagger.ts @@ -1,6 +1,6 @@ -import fp from "fastify-plugin"; import swagger from "@fastify/swagger"; import swaggerUI from "@fastify/swagger-ui"; +import fp from "fastify-plugin"; import { jsonSchemaTransform } from "./fastify-zod"; diff --git a/backend-pg/src/server/routes/v1/sso-router.ts b/backend-pg/src/server/routes/v1/sso-router.ts index a01aaa797..68d3c056f 100644 --- a/backend-pg/src/server/routes/v1/sso-router.ts +++ b/backend-pg/src/server/routes/v1/sso-router.ts @@ -1,9 +1,9 @@ +import { Authenticator } from "@fastify/passport"; +import fastifySession from "@fastify/session"; import { Strategy as GitHubStrategy } from "passport-github"; import { Strategy as GitLabStrategy } from "passport-gitlab2"; import { Strategy as GoogleStrategy } from "passport-google-oauth20"; import { z } from "zod"; -import { Authenticator } from "@fastify/passport"; -import fastifySession from "@fastify/session"; import { getConfig } from "@app/lib/config/env"; import { BadRequestError } from "@app/lib/errors"; diff --git a/backend-pg/src/services/api-key/api-key-service.ts b/backend-pg/src/services/api-key/api-key-service.ts index a1cbb8ec1..2cafd6508 100644 --- a/backend-pg/src/services/api-key/api-key-service.ts +++ b/backend-pg/src/services/api-key/api-key-service.ts @@ -1,4 +1,5 @@ import crypto from "node:crypto"; + import bcrypt from "bcrypt"; import { TApiKeys } from "@app/db/schemas/api-keys"; diff --git a/backend-pg/src/services/auth-token/auth-token-service.ts b/backend-pg/src/services/auth-token/auth-token-service.ts index 74a339179..88ea7ec46 100644 --- a/backend-pg/src/services/auth-token/auth-token-service.ts +++ b/backend-pg/src/services/auth-token/auth-token-service.ts @@ -1,4 +1,5 @@ import crypto from "node:crypto"; + import bcrypt from "bcrypt"; import { TAuthTokens, TAuthTokenSessions } from "@app/db/schemas"; diff --git a/backend-pg/src/services/org/org-role-service.ts b/backend-pg/src/services/org/org-role-service.ts index 1047ade60..38cc827ba 100644 --- a/backend-pg/src/services/org/org-role-service.ts +++ b/backend-pg/src/services/org/org-role-service.ts @@ -1,3 +1,6 @@ +import { ForbiddenError } from "@casl/ability"; +import { packRules } from "@casl/ability/extra"; + import { TOrgRolesInsert, TOrgRolesUpdate } from "@app/db/schemas"; import { orgAdminPermissions, @@ -10,9 +13,6 @@ import { BadRequestError } from "@app/lib/errors"; import { TOrgRoleDalFactory } from "./org-role-dal"; -import { ForbiddenError } from "@casl/ability"; -import { packRules } from "@casl/ability/extra"; - type TOrgRoleServiceFactoryDep = { orgRoleDal: TOrgRoleDalFactory; permissionService: TPermissionServiceFactory; diff --git a/backend-pg/src/services/org/org-service.ts b/backend-pg/src/services/org/org-service.ts index c81f324c4..979d24ffb 100644 --- a/backend-pg/src/services/org/org-service.ts +++ b/backend-pg/src/services/org/org-service.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from "@casl/ability"; import jwt from "jsonwebtoken"; import { OrgMembershipRole, OrgMembershipStatus } from "@app/db/schemas"; @@ -25,8 +26,6 @@ import { TVerifyUserToOrgDTO } from "./org-types"; -import { ForbiddenError } from "@casl/ability"; - type TOrgServiceFactoryDep = { orgDal: TOrgDalFactory; orgRoleDal: TOrgRoleDalFactory; diff --git a/backend-pg/src/services/project-env/project-env-service.ts b/backend-pg/src/services/project-env/project-env-service.ts index 1bd10f5c8..588133d20 100644 --- a/backend-pg/src/services/project-env/project-env-service.ts +++ b/backend-pg/src/services/project-env/project-env-service.ts @@ -1,3 +1,5 @@ +import { ForbiddenError } from "@casl/ability"; + import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; import { ProjectPermissionActions, @@ -8,8 +10,6 @@ import { BadRequestError } from "@app/lib/errors"; import { TProjectEnvDalFactory } from "./project-env-dal"; import { TCreateEnvDTO, TDeleteEnvDTO, TUpdateEnvDTO } from "./project-env-types"; -import { ForbiddenError } from "@casl/ability"; - type TProjectEnvServiceFactoryDep = { projectEnvDal: TProjectEnvDalFactory; permissionService: Pick; diff --git a/backend-pg/src/services/project-key/project-key-service.ts b/backend-pg/src/services/project-key/project-key-service.ts index d755efb56..994cb3b8a 100644 --- a/backend-pg/src/services/project-key/project-key-service.ts +++ b/backend-pg/src/services/project-key/project-key-service.ts @@ -1,3 +1,5 @@ +import { ForbiddenError } from "@casl/ability"; + import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; import { ProjectPermissionActions, @@ -9,8 +11,6 @@ import { TProjectMembershipDalFactory } from "../project-membership/project-memb import { TProjectKeyDalFactory } from "./project-key-dal"; import { TGetLatestProjectKeyDTO, TUploadProjectKeyDTO } from "./project-key-types"; -import { ForbiddenError } from "@casl/ability"; - type TProjectKeyServiceFactoryDep = { permissionService: TPermissionServiceFactory; projectKeyDal: TProjectKeyDalFactory; diff --git a/backend-pg/src/services/project-membership/project-membership-service.ts b/backend-pg/src/services/project-membership/project-membership-service.ts index e7ae08bd9..2caf46a04 100644 --- a/backend-pg/src/services/project-membership/project-membership-service.ts +++ b/backend-pg/src/services/project-membership/project-membership-service.ts @@ -1,3 +1,5 @@ +import { ForbiddenError } from "@casl/ability"; + import { OrgMembershipStatus, ProjectMembershipRole } from "@app/db/schemas"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; import { @@ -21,8 +23,6 @@ import { TUpdateProjectMembershipDTO } from "./project-membership-types"; -import { ForbiddenError } from "@casl/ability"; - type TProjectMembershipServiceFactoryDep = { permissionService: Pick; smtpService: TSmtpService; diff --git a/backend-pg/src/services/project-role/project-role-service.ts b/backend-pg/src/services/project-role/project-role-service.ts index c5f0b009f..4ce36d0b4 100644 --- a/backend-pg/src/services/project-role/project-role-service.ts +++ b/backend-pg/src/services/project-role/project-role-service.ts @@ -1,3 +1,6 @@ +import { ForbiddenError } from "@casl/ability"; +import { packRules } from "@casl/ability/extra"; + import { ProjectMembershipRole, TOrgRolesUpdate, TProjectRolesInsert } from "@app/db/schemas"; import { OrgPermissionActions, @@ -15,9 +18,6 @@ import { BadRequestError } from "@app/lib/errors"; import { ActorType } from "../auth/auth-type"; import { TProjectRoleDalFactory } from "./project-role-dal"; -import { ForbiddenError } from "@casl/ability"; -import { packRules } from "@casl/ability/extra"; - type TProjectRoleServiceFactoryDep = { projectRoleDal: TProjectRoleDalFactory; permissionService: Pick< diff --git a/backend-pg/src/services/project/project-service.ts b/backend-pg/src/services/project/project-service.ts index 9dc02afd5..d48496b02 100644 --- a/backend-pg/src/services/project/project-service.ts +++ b/backend-pg/src/services/project/project-service.ts @@ -1,3 +1,5 @@ +import { ForbiddenError } from "@casl/ability"; + import { ProjectMembershipRole } from "@app/db/schemas"; import { OrgPermissionActions, @@ -14,8 +16,6 @@ import { TProjectMembershipDalFactory } from "../project-membership/project-memb import { TProjectDalFactory } from "./project-dal"; import { TCreateProjectDTO, TDeleteProjectDTO, TGetProjectDTO } from "./project-types"; -import { ForbiddenError } from "@casl/ability"; - const DEFAULT_PROJECT_ENVS = [ { name: "Development", slug: "dev" }, { name: "Staging", slug: "staging" }, diff --git a/backend-pg/src/services/smtp/smtp-service.ts b/backend-pg/src/services/smtp/smtp-service.ts index a433c2025..ca4811809 100644 --- a/backend-pg/src/services/smtp/smtp-service.ts +++ b/backend-pg/src/services/smtp/smtp-service.ts @@ -1,5 +1,6 @@ import fs from "node:fs/promises"; import path from "node:path"; + import handlebars from "handlebars"; import { createTransport } from "nodemailer"; import SMTPTransport from "nodemailer/lib/smtp-transport";