From 428ccb8b7a44ce60cabb7401a5464cf5fcbd4dba Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 11 May 2021 12:04:47 +0200 Subject: Reorganize plugin models --- server/controllers/api/plugins.ts | 33 +++++++++++++++++--------------- server/lib/plugins/hooks.ts | 6 +++--- server/lib/plugins/plugin-index.ts | 20 +++++++++---------- server/lib/plugins/plugin-manager.ts | 14 ++++---------- server/lib/plugins/register-helpers.ts | 4 ++-- server/middlewares/validators/plugins.ts | 14 +++++++------- server/models/server/plugin.ts | 4 +--- server/tests/api/check-params/plugins.ts | 12 ++++++------ server/tests/api/server/plugins.ts | 10 ++-------- server/tools/peertube-plugins.ts | 3 +-- 10 files changed, 54 insertions(+), 66 deletions(-) (limited to 'server') diff --git a/server/controllers/api/plugins.ts b/server/controllers/api/plugins.ts index a186de010..e18eed332 100644 --- a/server/controllers/api/plugins.ts +++ b/server/controllers/api/plugins.ts @@ -1,16 +1,18 @@ import * as express from 'express' -import { getFormattedObjects } from '../../helpers/utils' +import { logger } from '@server/helpers/logger' +import { getFormattedObjects } from '@server/helpers/utils' +import { listAvailablePluginsFromIndex } from '@server/lib/plugins/plugin-index' +import { PluginManager } from '@server/lib/plugins/plugin-manager' import { asyncMiddleware, authenticate, + availablePluginsSortValidator, ensureUserHasRight, paginationValidator, + pluginsSortValidator, setDefaultPagination, setDefaultSort -} from '../../middlewares' -import { availablePluginsSortValidator, pluginsSortValidator } from '../../middlewares/validators' -import { PluginModel } from '../../models/server/plugin' -import { UserRight } from '../../../shared/models/users' +} from '@server/middlewares' import { existingPluginValidator, installOrUpdatePluginValidator, @@ -18,16 +20,17 @@ import { listPluginsValidator, uninstallPluginValidator, updatePluginSettingsValidator -} from '../../middlewares/validators/plugins' -import { PluginManager } from '../../lib/plugins/plugin-manager' -import { InstallOrUpdatePlugin } from '../../../shared/models/plugins/install-plugin.model' -import { ManagePlugin } from '../../../shared/models/plugins/manage-plugin.model' -import { logger } from '../../helpers/logger' -import { listAvailablePluginsFromIndex } from '../../lib/plugins/plugin-index' -import { PeertubePluginIndexList } from '../../../shared/models/plugins/peertube-plugin-index-list.model' -import { RegisteredServerSettings } from '../../../shared/models/plugins/register-server-setting.model' -import { PublicServerSetting } from '../../../shared/models/plugins/public-server.setting' -import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' +} from '@server/middlewares/validators/plugins' +import { PluginModel } from '@server/models/server/plugin' +import { HttpStatusCode } from '@shared/core-utils' +import { + InstallOrUpdatePlugin, + ManagePlugin, + PeertubePluginIndexList, + PublicServerSetting, + RegisteredServerSettings, + UserRight +} from '@shared/models' const pluginRouter = express.Router() diff --git a/server/lib/plugins/hooks.ts b/server/lib/plugins/hooks.ts index aa92f03cc..5e97b52a0 100644 --- a/server/lib/plugins/hooks.ts +++ b/server/lib/plugins/hooks.ts @@ -1,7 +1,7 @@ -import { ServerActionHookName, ServerFilterHookName } from '../../../shared/models/plugins/server-hook.model' -import { PluginManager } from './plugin-manager' -import { logger } from '../../helpers/logger' import * as Bluebird from 'bluebird' +import { ServerActionHookName, ServerFilterHookName } from '../../../shared/models' +import { logger } from '../../helpers/logger' +import { PluginManager } from './plugin-manager' type PromiseFunction = (params: U) => Promise | Bluebird type RawFunction = (params: U) => T diff --git a/server/lib/plugins/plugin-index.ts b/server/lib/plugins/plugin-index.ts index 165bc91b3..119cee8e0 100644 --- a/server/lib/plugins/plugin-index.ts +++ b/server/lib/plugins/plugin-index.ts @@ -1,16 +1,16 @@ import { sanitizeUrl } from '@server/helpers/core-utils' -import { ResultList } from '../../../shared/models' -import { PeertubePluginIndexList } from '../../../shared/models/plugins/peertube-plugin-index-list.model' -import { PeerTubePluginIndex } from '../../../shared/models/plugins/peertube-plugin-index.model' +import { logger } from '@server/helpers/logger' +import { doJSONRequest } from '@server/helpers/requests' +import { CONFIG } from '@server/initializers/config' +import { PEERTUBE_VERSION } from '@server/initializers/constants' +import { PluginModel } from '@server/models/server/plugin' import { + PeerTubePluginIndex, + PeertubePluginIndexList, PeertubePluginLatestVersionRequest, - PeertubePluginLatestVersionResponse -} from '../../../shared/models/plugins/peertube-plugin-latest-version.model' -import { logger } from '../../helpers/logger' -import { doJSONRequest } from '../../helpers/requests' -import { CONFIG } from '../../initializers/config' -import { PEERTUBE_VERSION } from '../../initializers/constants' -import { PluginModel } from '../../models/server/plugin' + PeertubePluginLatestVersionResponse, + ResultList +} from '@shared/models' import { PluginManager } from './plugin-manager' async function listAvailablePluginsFromIndex (options: PeertubePluginIndexList) { diff --git a/server/lib/plugins/plugin-manager.ts b/server/lib/plugins/plugin-manager.ts index ba9814383..6b9a255a4 100644 --- a/server/lib/plugins/plugin-manager.ts +++ b/server/lib/plugins/plugin-manager.ts @@ -4,16 +4,11 @@ import { createReadStream, createWriteStream } from 'fs' import { ensureDir, outputFile, readJSON } from 'fs-extra' import { basename, join } from 'path' import { MOAuthTokenUser, MUser } from '@server/types/models' -import { RegisterServerHookOptions } from '@shared/models/plugins/register-server-hook.model' +import { getCompleteLocale } from '@shared/core-utils' +import { ClientScript, PluginPackageJson, PluginTranslation, PluginTranslationPaths, RegisterServerHookOptions } from '@shared/models' import { getHookType, internalRunHook } from '../../../shared/core-utils/plugins/hooks' -import { - ClientScript, - PluginPackageJson, - PluginTranslationPaths as PackagePluginTranslations -} from '../../../shared/models/plugins/plugin-package-json.model' -import { PluginTranslation } from '../../../shared/models/plugins/plugin-translation.model' import { PluginType } from '../../../shared/models/plugins/plugin.type' -import { ServerHook, ServerHookName } from '../../../shared/models/plugins/server-hook.model' +import { ServerHook, ServerHookName } from '../../../shared/models/plugins/server/server-hook.model' import { isLibraryCodeValid, isPackageJSONValid } from '../../helpers/custom-validators/plugins' import { logger } from '../../helpers/logger' import { CONFIG } from '../../initializers/config' @@ -23,7 +18,6 @@ import { PluginLibrary, RegisterServerAuthExternalOptions, RegisterServerAuthPas import { ClientHtml } from '../client-html' import { RegisterHelpers } from './register-helpers' import { installNpmPlugin, installNpmPluginFromDisk, removeNpmPlugin } from './yarn' -import { getCompleteLocale } from '@shared/core-utils' export interface RegisteredPlugin { npmName: string @@ -443,7 +437,7 @@ export class PluginManager implements ServerHook { // ###################### Translations ###################### - private async addTranslations (plugin: PluginModel, npmName: string, translationPaths: PackagePluginTranslations) { + private async addTranslations (plugin: PluginModel, npmName: string, translationPaths: PluginTranslationPaths) { for (const locale of Object.keys(translationPaths)) { const path = translationPaths[locale] const json = await readJSON(join(this.getPluginPath(plugin.name, plugin.type), path)) diff --git a/server/lib/plugins/register-helpers.ts b/server/lib/plugins/register-helpers.ts index 203217b70..f5b573370 100644 --- a/server/lib/plugins/register-helpers.ts +++ b/server/lib/plugins/register-helpers.ts @@ -26,9 +26,9 @@ import { PluginVideoLicenceManager, PluginVideoPrivacyManager, RegisterServerHookOptions, - RegisterServerSettingOptions + RegisterServerSettingOptions, + serverHookObject } from '@shared/models' -import { serverHookObject } from '@shared/models/plugins/server-hook.model' import { VideoTranscodingProfilesManager } from '../transcoding/video-transcoding-profiles' import { buildPluginHelpers } from './plugin-helpers-builder' diff --git a/server/middlewares/validators/plugins.ts b/server/middlewares/validators/plugins.ts index ab87fe720..2c47ec5bb 100644 --- a/server/middlewares/validators/plugins.ts +++ b/server/middlewares/validators/plugins.ts @@ -1,15 +1,15 @@ import * as express from 'express' import { body, param, query, ValidationChain } from 'express-validator' -import { logger } from '../../helpers/logger' -import { areValidationErrors } from './utils' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' +import { PluginType } from '../../../shared/models/plugins/plugin.type' +import { InstallOrUpdatePlugin } from '../../../shared/models/plugins/server/api/install-plugin.model' +import { exists, isBooleanValid, isSafePath, toBooleanOrNull, toIntOrNull } from '../../helpers/custom-validators/misc' import { isNpmPluginNameValid, isPluginNameValid, isPluginTypeValid, isPluginVersionValid } from '../../helpers/custom-validators/plugins' +import { logger } from '../../helpers/logger' +import { CONFIG } from '../../initializers/config' import { PluginManager } from '../../lib/plugins/plugin-manager' -import { isBooleanValid, isSafePath, toBooleanOrNull, exists, toIntOrNull } from '../../helpers/custom-validators/misc' import { PluginModel } from '../../models/server/plugin' -import { InstallOrUpdatePlugin } from '../../../shared/models/plugins/install-plugin.model' -import { PluginType } from '../../../shared/models/plugins/plugin.type' -import { CONFIG } from '../../initializers/config' -import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' +import { areValidationErrors } from './utils' const getPluginValidator = (pluginType: PluginType, withVersion = true) => { const validators: (ValidationChain | express.Handler)[] = [ diff --git a/server/models/server/plugin.ts b/server/models/server/plugin.ts index 82387af6a..94c9b04bf 100644 --- a/server/models/server/plugin.ts +++ b/server/models/server/plugin.ts @@ -1,9 +1,7 @@ import { FindAndCountOptions, json, QueryTypes } from 'sequelize' import { AllowNull, Column, CreatedAt, DataType, DefaultScope, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' import { MPlugin, MPluginFormattable } from '@server/types/models' -import { PeerTubePlugin } from '../../../shared/models/plugins/peertube-plugin.model' -import { PluginType } from '../../../shared/models/plugins/plugin.type' -import { RegisterServerSettingOptions } from '../../../shared/models/plugins/register-server-setting.model' +import { PeerTubePlugin, PluginType, RegisterServerSettingOptions } from '../../../shared/models' import { isPluginDescriptionValid, isPluginHomepage, diff --git a/server/tests/api/check-params/plugins.ts b/server/tests/api/check-params/plugins.ts index 6e540bcbb..a833fe6ff 100644 --- a/server/tests/api/check-params/plugins.ts +++ b/server/tests/api/check-params/plugins.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ import 'mocha' - +import { HttpStatusCode } from '@shared/core-utils' import { checkBadCountPagination, checkBadSortPagination, @@ -11,14 +11,14 @@ import { flushAndRunServer, immutableAssign, installPlugin, - makeGetRequest, makePostBodyRequest, makePutBodyRequest, + makeGetRequest, + makePostBodyRequest, + makePutBodyRequest, ServerInfo, setAccessTokensToServers, userLogin -} from '../../../../shared/extra-utils' -import { PluginType } from '../../../../shared/models/plugins/plugin.type' -import { PeerTubePlugin } from '../../../../shared/models/plugins/peertube-plugin.model' -import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' +} from '@shared/extra-utils' +import { PeerTubePlugin, PluginType } from '@shared/models' describe('Test server plugins API validators', function () { let server: ServerInfo diff --git a/server/tests/api/server/plugins.ts b/server/tests/api/server/plugins.ts index 1c6eabe6d..3c09acc9a 100644 --- a/server/tests/api/server/plugins.ts +++ b/server/tests/api/server/plugins.ts @@ -28,14 +28,8 @@ import { updatePluginSettings, wait, waitUntilLog -} from '../../../../shared/extra-utils' -import { PeerTubePluginIndex } from '../../../../shared/models/plugins/peertube-plugin-index.model' -import { PeerTubePlugin } from '../../../../shared/models/plugins/peertube-plugin.model' -import { PluginPackageJson } from '../../../../shared/models/plugins/plugin-package-json.model' -import { PluginType } from '../../../../shared/models/plugins/plugin.type' -import { PublicServerSetting } from '../../../../shared/models/plugins/public-server.setting' -import { ServerConfig } from '../../../../shared/models/server' -import { User } from '../../../../shared/models/users' +} from '@shared/extra-utils' +import { PeerTubePlugin, PeerTubePluginIndex, PluginPackageJson, PluginType, PublicServerSetting, ServerConfig, User } from '@shared/models' const expect = chai.expect diff --git a/server/tools/peertube-plugins.ts b/server/tools/peertube-plugins.ts index c8a576844..cb591377b 100644 --- a/server/tools/peertube-plugins.ts +++ b/server/tools/peertube-plugins.ts @@ -4,10 +4,9 @@ import { registerTSPaths } from '../helpers/register-ts-paths' registerTSPaths() import * as program from 'commander' -import { PluginType } from '../../shared/models/plugins/plugin.type' import { installPlugin, listPlugins, uninstallPlugin, updatePlugin } from '../../shared/extra-utils/server/plugins' import { getAdminTokenOrDie, getServerCredentials } from './cli' -import { PeerTubePlugin } from '../../shared/models/plugins/peertube-plugin.model' +import { PeerTubePlugin, PluginType } from '../../shared/models' import { isAbsolute } from 'path' import * as CliTable3 from 'cli-table3' import commander = require('commander') -- cgit v1.2.3