Browse Source

add Crowi type or type annotation

Yuki Takei 1 year ago
parent
commit
9207850395
65 changed files with 126 additions and 52 deletions
  1. 1 1
      apps/app/src/features/questionnaire/server/service/questionnaire.ts
  2. 2 1
      apps/app/src/features/templates/server/routes/apiv3/index.ts
  3. 1 2
      apps/app/src/server/crowi/dev.js
  4. 6 0
      apps/app/src/server/crowi/index.js
  5. 2 1
      apps/app/src/server/events/admin.js
  6. 1 0
      apps/app/src/server/events/bookmark.js
  7. 1 0
      apps/app/src/server/events/page.js
  8. 2 1
      apps/app/src/server/events/tag.js
  9. 2 2
      apps/app/src/server/middlewares/add-activity.ts
  10. 1 0
      apps/app/src/server/middlewares/admin-required.js
  11. 1 0
      apps/app/src/server/middlewares/application-installed.js
  12. 1 0
      apps/app/src/server/middlewares/application-not-installed.js
  13. 1 0
      apps/app/src/server/middlewares/auto-reconnect-to-s2s-msg-server.js
  14. 1 0
      apps/app/src/server/middlewares/auto-reconnect-to-search.js
  15. 3 1
      apps/app/src/server/middlewares/certify-brand-logo.ts
  16. 1 0
      apps/app/src/server/middlewares/certify-shared-page.js
  17. 1 1
      apps/app/src/server/middlewares/login-required.js
  18. 25 22
      apps/app/src/server/middlewares/unavailable-when-maintenance-mode.ts
  19. 1 0
      apps/app/src/server/models/GlobalNotificationSetting.ts
  20. 1 0
      apps/app/src/server/models/GlobalNotificationSetting/GlobalNotificationMailSetting.js
  21. 1 0
      apps/app/src/server/models/GlobalNotificationSetting/GlobalNotificationSlackSetting.js
  22. 4 0
      apps/app/src/server/models/GlobalNotificationSetting/index.js
  23. 1 0
      apps/app/src/server/models/bookmark.js
  24. 4 2
      apps/app/src/server/models/obsolete-page.js
  25. 3 1
      apps/app/src/server/models/page.ts
  26. 1 0
      apps/app/src/server/models/slack-app-integration.js
  27. 1 0
      apps/app/src/server/models/user.js
  28. 1 0
      apps/app/src/server/routes/admin.js
  29. 1 1
      apps/app/src/server/routes/apiv3/admin-home.ts
  30. 1 1
      apps/app/src/server/routes/apiv3/app-settings.js
  31. 1 0
      apps/app/src/server/routes/apiv3/bookmark-folder.ts
  32. 1 1
      apps/app/src/server/routes/apiv3/bookmarks.js
  33. 1 0
      apps/app/src/server/routes/apiv3/customize-setting.js
  34. 1 1
      apps/app/src/server/routes/apiv3/export.js
  35. 1 0
      apps/app/src/server/routes/apiv3/forgot-password.js
  36. 1 1
      apps/app/src/server/routes/apiv3/healthcheck.ts
  37. 1 1
      apps/app/src/server/routes/apiv3/in-app-notification.ts
  38. 1 0
      apps/app/src/server/routes/apiv3/logout.js
  39. 1 0
      apps/app/src/server/routes/apiv3/mongo.js
  40. 1 0
      apps/app/src/server/routes/apiv3/page/index.ts
  41. 1 2
      apps/app/src/server/routes/apiv3/response.js
  42. 1 0
      apps/app/src/server/routes/apiv3/search.js
  43. 1 0
      apps/app/src/server/routes/apiv3/security-settings/index.js
  44. 1 1
      apps/app/src/server/routes/apiv3/statistics.js
  45. 1 0
      apps/app/src/server/routes/apiv3/user-group-relation.js
  46. 1 1
      apps/app/src/server/routes/apiv3/user-group.js
  47. 1 0
      apps/app/src/server/routes/attachment/api.js
  48. 1 0
      apps/app/src/server/routes/comment.js
  49. 1 0
      apps/app/src/server/routes/index.js
  50. 1 0
      apps/app/src/server/routes/login-passport.js
  51. 1 3
      apps/app/src/server/routes/page.js
  52. 1 0
      apps/app/src/server/routes/tag.js
  53. 1 1
      apps/app/src/server/routes/user.js
  54. 4 0
      apps/app/src/server/service/attachment.js
  55. 4 0
      apps/app/src/server/service/export.js
  56. 4 0
      apps/app/src/server/service/global-notification/global-notification-mail.js
  57. 4 1
      apps/app/src/server/service/global-notification/global-notification-slack.js
  58. 4 0
      apps/app/src/server/service/rest-qiita-API.js
  59. 1 0
      apps/app/src/server/service/slack-command-handler/create-page-service.js
  60. 1 1
      apps/app/src/server/service/slack-command-handler/keep.js
  61. 1 0
      apps/app/src/server/service/slack-command-handler/note.js
  62. 1 0
      apps/app/src/server/service/slack-command-handler/search.js
  63. 4 0
      apps/app/src/server/service/slack-command-handler/slack-command-handler.js
  64. 1 1
      apps/app/src/server/service/slack-command-handler/togetter.js
  65. 1 0
      apps/app/src/server/util/createGrowiPagesFromImports.js

+ 1 - 1
apps/app/src/features/questionnaire/server/service/questionnaire.ts

@@ -23,7 +23,7 @@ class QuestionnaireService {
   crowi: Crowi;
 
   // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
-  constructor(crowi) {
+  constructor(crowi: Crowi) {
     this.crowi = crowi;
   }
 

+ 2 - 1
apps/app/src/features/templates/server/routes/apiv3/index.ts

@@ -8,6 +8,7 @@ import { param, query } from 'express-validator';
 
 import { PLUGIN_STORING_PATH } from '~/features/growi-plugin/server/consts';
 import { GrowiPlugin } from '~/features/growi-plugin/server/models';
+import type Crowi from '~/server/crowi';
 import { apiV3FormValidator } from '~/server/middlewares/apiv3-form-validator';
 import type { ApiV3Response } from '~/server/routes/apiv3/interfaces/apiv3-response';
 import loggerFactory from '~/utils/logger';
@@ -32,7 +33,7 @@ const validator = {
 let presetTemplateSummaries: TemplateSummary[];
 
 
-module.exports = (crowi) => {
+module.exports = (crowi: Crowi) => {
   const loginRequiredStrictly = require('~/server/middlewares/login-required')(crowi);
 
   router.get('/', loginRequiredStrictly, validator.list, apiV3FormValidator, async(req, res: ApiV3Response) => {

+ 1 - 2
apps/app/src/server/crowi/dev.js

@@ -12,8 +12,7 @@ const logger = loggerFactory('growi:crowi:dev');
 class CrowiDev {
 
   /**
-   * Creates an instance of CrowiDev.
-   * @param {Crowi} crowi
+   * @param {import('~/server/crowi').default} crowi Crowi instance
    *
    * @memberOf CrowiDev
    */

+ 6 - 0
apps/app/src/server/crowi/index.js

@@ -57,6 +57,9 @@ class Crowi {
    */
   accessTokenParser;
 
+  /** @type {ReturnType<typeof next>} */
+  nextApp;
+
   /** @type {import('../service/config-manager').IConfigManagerForApp} */
   configManager;
 
@@ -75,6 +78,9 @@ class Crowi {
   /** @type {import('../service/page').IPageService} */
   pageService;
 
+  /** @type {import('../service/page-operation').default} */
+  pageOperationService;
+
   /** @type {PassportService} */
   passportService;
 

+ 2 - 1
apps/app/src/server/events/admin.js

@@ -1,6 +1,7 @@
-const util = require('util');
 const events = require('events');
+const util = require('util');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 function AdminEvent(crowi) {
   this.crowi = crowi;
 

+ 1 - 0
apps/app/src/server/events/bookmark.js

@@ -1,6 +1,7 @@
 const events = require('events');
 const util = require('util');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 function BookmarkEvent(crowi) {
   this.crowi = crowi;
 

+ 1 - 0
apps/app/src/server/events/page.js

@@ -5,6 +5,7 @@ import loggerFactory from '~/utils/logger';
 
 const logger = loggerFactory('growi:events:page');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 function PageEvent(crowi) {
   this.crowi = crowi;
 

+ 2 - 1
apps/app/src/server/events/tag.js

@@ -1,6 +1,7 @@
-const util = require('util');
 const events = require('events');
+const util = require('util');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 function TagEvent(crowi) {
   this.crowi = crowi;
 

+ 2 - 2
apps/app/src/server/middlewares/add-activity.ts

@@ -1,5 +1,5 @@
 import type { IUserHasId } from '@growi/core';
-import { NextFunction, Request, Response } from 'express';
+import type { NextFunction, Request, Response } from 'express';
 
 import { SupportedAction } from '~/interfaces/activity';
 import Activity from '~/server/models/activity';
@@ -12,7 +12,7 @@ interface AuthorizedRequest extends Request {
   user?: IUserHasId
 }
 
-export const generateAddActivityMiddleware = crowi => async(req: AuthorizedRequest, res: Response, next: NextFunction): Promise<void> => {
+export const generateAddActivityMiddleware = () => async(req: AuthorizedRequest, res: Response, next: NextFunction): Promise<void> => {
   if (req.method === 'GET') {
     logger.warn('This middleware is not available for GET requests');
     return next();

+ 1 - 0
apps/app/src/server/middlewares/admin-required.js

@@ -2,6 +2,7 @@ import loggerFactory from '~/utils/logger';
 
 const logger = loggerFactory('growi:middleware:admin-required');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi, fallback = null) => {
 
   return function(req, res, next) {

+ 1 - 0
apps/app/src/server/middlewares/application-installed.js

@@ -1,3 +1,4 @@
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const { appService } = crowi;
 

+ 1 - 0
apps/app/src/server/middlewares/application-not-installed.js

@@ -1,3 +1,4 @@
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const { appService } = crowi;
 

+ 1 - 0
apps/app/src/server/middlewares/auto-reconnect-to-s2s-msg-server.js

@@ -1,3 +1,4 @@
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const { s2sMessagingService } = crowi;
 

+ 1 - 0
apps/app/src/server/middlewares/auto-reconnect-to-search.js

@@ -4,6 +4,7 @@ const { ReconnectContext, nextTick } = require('../service/search-reconnect-cont
 
 const logger = loggerFactory('growi:middlewares:auto-reconnect-to-search');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const { searchService } = crowi;
   const reconnectContext = new ReconnectContext();

+ 3 - 1
apps/app/src/server/middlewares/certify-brand-logo.ts

@@ -1,4 +1,6 @@
-export const generateCertifyBrandLogoMiddleware = (crowi) => {
+import type Crowi from '../crowi';
+
+export const generateCertifyBrandLogoMiddleware = (crowi: Crowi) => {
 
   return async(req, res, next) => {
     req.isBrandLogo = true;

+ 1 - 0
apps/app/src/server/middlewares/certify-shared-page.js

@@ -3,6 +3,7 @@ import loggerFactory from '~/utils/logger';
 
 const logger = loggerFactory('growi:middleware:certify-shared-page');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
 
   return async(req, res, next) => {

+ 1 - 1
apps/app/src/server/middlewares/login-required.js

@@ -5,7 +5,7 @@ const logger = loggerFactory('growi:middleware:login-required');
 
 /**
  * require login handler
- *
+ * @param {import('~/server/crowi').default} crowi Crowi instance
  * @param {boolean} isGuestAllowed whether guest user is allowed (default false)
  * @param {function} fallback fallback function which will be triggered when the check cannot be passed
  */

+ 25 - 22
apps/app/src/server/middlewares/unavailable-when-maintenance-mode.ts

@@ -1,38 +1,41 @@
-import { NextFunction, Request, Response } from 'express';
+import type { NextFunction, Request, Response } from 'express';
 
 import loggerFactory from '~/utils/logger';
 
-const logger = loggerFactory('growi:middlewares:unavailable-when-maintenance-mode');
+import type Crowi from '../crowi';
 
-type Crowi = {
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  nextApp: any,
-}
+const logger = loggerFactory('growi:middlewares:unavailable-when-maintenance-mode');
 
 type CrowiReq = Request & {
   crowi: Crowi,
 }
 
-export const generateUnavailableWhenMaintenanceModeMiddleware = crowi => async(req: CrowiReq, res: Response, next: NextFunction): Promise<void> => {
-  const isMaintenanceMode = crowi.appService.isMaintenanceMode();
+type IMiddleware = (req: CrowiReq, res: Response, next: NextFunction) => Promise<void>;
+
+export const generateUnavailableWhenMaintenanceModeMiddleware = (crowi: Crowi): IMiddleware => {
+  return async(req, res, next) => {
+    const isMaintenanceMode = crowi.appService.isMaintenanceMode();
 
-  if (!isMaintenanceMode) {
-    next();
-    return;
-  }
+    if (!isMaintenanceMode) {
+      next();
+      return;
+    }
 
-  const { nextApp } = crowi;
-  req.crowi = crowi;
-  nextApp.render(req, res, '/maintenance');
+    const { nextApp } = crowi;
+    req.crowi = crowi;
+    nextApp.render(req, res, '/maintenance');
+  };
 };
 
-export const generateUnavailableWhenMaintenanceModeMiddlewareForApi = crowi => async(req: Request, res: Response, next: NextFunction): Promise<void> => {
-  const isMaintenanceMode = crowi.appService.isMaintenanceMode();
+export const generateUnavailableWhenMaintenanceModeMiddlewareForApi = (crowi: Crowi): IMiddleware => {
+  return async(req, res, next) => {
+    const isMaintenanceMode = crowi.appService.isMaintenanceMode();
 
-  if (!isMaintenanceMode) {
-    next();
-    return;
-  }
+    if (!isMaintenanceMode) {
+      next();
+      return;
+    }
 
-  res.status(503).json({ error: 'GROWI is under maintenance.' });
+    res.status(503).json({ error: 'GROWI is under maintenance.' });
+  };
 };

+ 1 - 0
apps/app/src/server/models/GlobalNotificationSetting.ts

@@ -28,6 +28,7 @@ export const GlobalNotificationSettingType = {
   SLACK: 'slack',
 };
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 const factory = function(crowi) {
   GlobalNotificationSettingClass.crowi = crowi;
   GlobalNotificationSettingSchema.loadClass(GlobalNotificationSettingClass);

+ 1 - 0
apps/app/src/server/models/GlobalNotificationSetting/GlobalNotificationMailSetting.js

@@ -7,6 +7,7 @@ const GlobalNotificationSetting = require('./index');
 const GlobalNotificationSettingClass = GlobalNotificationSetting.class;
 const GlobalNotificationSettingSchema = GlobalNotificationSetting.schema;
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 const factory = (crowi) => {
   GlobalNotificationSettingClass.crowi = crowi;
   GlobalNotificationSettingSchema.loadClass(GlobalNotificationSettingClass);

+ 1 - 0
apps/app/src/server/models/GlobalNotificationSetting/GlobalNotificationSlackSetting.js

@@ -7,6 +7,7 @@ const GlobalNotificationSetting = require('./index');
 const GlobalNotificationSettingClass = GlobalNotificationSetting.class;
 const GlobalNotificationSettingSchema = GlobalNotificationSetting.schema;
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 const factory = (crowi) => {
   GlobalNotificationSettingClass.crowi = crowi;
   GlobalNotificationSettingSchema.loadClass(GlobalNotificationSettingClass);

+ 4 - 0
apps/app/src/server/models/GlobalNotificationSetting/index.js

@@ -49,6 +49,10 @@ const generatePathsToMatch = (originalPath) => {
  */
 class GlobalNotificationSetting {
 
+  /** @type {import('~/server/crowi').default} Crowi instance */
+  crowi;
+
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
   }

+ 1 - 0
apps/app/src/server/models/bookmark.js

@@ -10,6 +10,7 @@ const logger = loggerFactory('growi:models:bookmark');
 
 const ObjectId = mongoose.Schema.Types.ObjectId;
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 const factory = (crowi) => {
   const bookmarkEvent = crowi.event('bookmark');
 

+ 4 - 2
apps/app/src/server/models/obsolete-page.js

@@ -8,6 +8,8 @@ import ExternalUserGroup from '~/features/external-user-group/server/models/exte
 import ExternalUserGroupRelation from '~/features/external-user-group/server/models/external-user-group-relation';
 import loggerFactory from '~/utils/logger';
 
+import { configManager } from '../service/config-manager';
+
 import UserGroup from './user-group';
 import UserGroupRelation from './user-group-relation';
 
@@ -513,8 +515,8 @@ export const getPageSchema = (crowi) => {
     validateCrowi();
 
     // determine User condition
-    const hidePagesRestrictedByOwner = crowi.configManager.getConfig('security:list-policy:hideRestrictedByOwner');
-    const hidePagesRestrictedByGroup = crowi.configManager.getConfig('security:list-policy:hideRestrictedByGroup');
+    const hidePagesRestrictedByOwner = configManager.getConfig('security:list-policy:hideRestrictedByOwner');
+    const hidePagesRestrictedByGroup = configManager.getConfig('security:list-policy:hideRestrictedByGroup');
 
     // determine UserGroup condition
     const userGroups = user != null ? [

+ 3 - 1
apps/app/src/server/models/page.ts

@@ -27,6 +27,7 @@ import type { IOptionsForCreate } from '~/interfaces/page';
 import type { ObjectIdLike } from '~/server/interfaces/mongoose-utils';
 
 import loggerFactory from '../../utils/logger';
+import type Crowi from '../crowi';
 import { collectAncestorPaths } from '../util/collect-ancestor-paths';
 import { getOrCreateModel } from '../util/mongoose-utils';
 
@@ -1154,7 +1155,8 @@ schema.methods.makeWip = function(disableTtl: boolean) {
 /*
  * Merge obsolete page model methods and define new methods which depend on crowi instance
  */
-export default function PageModel(crowi): any {
+
+export default function PageModel(crowi: Crowi): any {
   // add old page schema methods
   const pageSchema = getPageSchema(crowi);
   schema.methods = { ...pageSchema.methods, ...schema.methods };

+ 1 - 0
apps/app/src/server/models/slack-app-integration.js

@@ -20,6 +20,7 @@ const schema = new mongoose.Schema({
 
 class SlackAppIntegration {
 
+  /** @type {import('../service/page').IPageService} */
   crowi;
 
   static generateAccessTokens(saltForGtoP, saltForPtoG) {

+ 1 - 0
apps/app/src/server/models/user.js

@@ -22,6 +22,7 @@ const uniqueValidator = require('mongoose-unique-validator');
 
 const logger = loggerFactory('growi:models:user');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 const factory = (crowi) => {
 
   const userModelExists = getModelSafely('User');

+ 1 - 0
apps/app/src/server/routes/admin.js

@@ -4,6 +4,7 @@ import loggerFactory from '~/utils/logger';
 const logger = loggerFactory('growi:routes:admin');
 
 /* eslint-disable no-use-before-define */
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = function(crowi, app) {
   const {
     configManager,

+ 1 - 1
apps/app/src/server/routes/apiv3/admin-home.ts

@@ -57,7 +57,7 @@ const router = express.Router();
  *            type: object
  *            description: installed plugins
  */
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 1
apps/app/src/server/routes/apiv3/app-settings.js

@@ -327,7 +327,7 @@ const router = express.Router();
  *            type: boolean
  *            description: is app site url hashed, or not
  */
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 0
apps/app/src/server/routes/apiv3/bookmark-folder.ts

@@ -118,6 +118,7 @@ const validator = {
   ],
 };
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
 

+ 1 - 1
apps/app/src/server/routes/apiv3/bookmarks.js

@@ -67,7 +67,7 @@ const router = express.Router();
  *            type: boolean
  *            description: Whether the request user bookmarked (will be returned if the user is included in the request)
  */
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const loginRequired = require('../../middlewares/login-required')(crowi, true);

+ 1 - 0
apps/app/src/server/routes/apiv3/customize-setting.js

@@ -191,6 +191,7 @@ const router = express.Router();
  *            type: boolean
  *            description: The flag whether the logo is default or not.
  */
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 1
apps/app/src/server/routes/apiv3/export.js

@@ -115,7 +115,7 @@ const router = express.Router();
  *             type: boolean
  *             description: whether the current exporting job exists or not
  */
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequired = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 0
apps/app/src/server/routes/apiv3/forgot-password.js

@@ -41,6 +41,7 @@ const { body } = require('express-validator');
 
 const router = express.Router();
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const { appService, mailService } = crowi;
   const User = crowi.model('User');

+ 1 - 1
apps/app/src/server/routes/apiv3/healthcheck.ts

@@ -44,7 +44,7 @@ const router = express.Router();
  *              }
  *            }
  */
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
 
   async function checkMongo(errors, info) {

+ 1 - 1
apps/app/src/server/routes/apiv3/in-app-notification.ts

@@ -13,7 +13,7 @@ import type { ApiV3Response } from './interfaces/apiv3-response';
 
 const router = express.Router();
 
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const addActivity = generateAddActivityMiddleware(crowi);

+ 1 - 0
apps/app/src/server/routes/apiv3/logout.js

@@ -9,6 +9,7 @@ const express = require('express');
 
 const router = express.Router();
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const activityEvent = crowi.event('activity');
   const addActivity = generateAddActivityMiddleware(crowi);

+ 1 - 0
apps/app/src/server/routes/apiv3/mongo.js

@@ -7,6 +7,7 @@ const mongoose = require('mongoose');
 
 const router = express.Router();
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 0
apps/app/src/server/routes/apiv3/page/index.ts

@@ -109,6 +109,7 @@ const router = express.Router();
  *            description: page ID
  *            example: 5e07345972560e001761fa63
  */
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequired = require('../../../middlewares/login-required')(crowi, true);
   const loginRequiredStrictly = require('../../../middlewares/login-required')(crowi);

+ 1 - 2
apps/app/src/server/routes/apiv3/response.js

@@ -2,8 +2,7 @@ import { ErrorV3 } from '@growi/core/dist/models';
 
 import { toArrayIfNot } from '~/utils/array-utils';
 
-
-const addCustomFunctionToResponse = (express, crowi) => {
+const addCustomFunctionToResponse = (express) => {
 
   express.response.apiv3 = function(obj = {}, status = 200) { // not arrow function
     // obj must be object

+ 1 - 0
apps/app/src/server/routes/apiv3/search.js

@@ -17,6 +17,7 @@ const router = express.Router();
 
 const noCache = require('nocache');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequired = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 0
apps/app/src/server/routes/apiv3/security-settings/index.js

@@ -309,6 +309,7 @@ const validator = {
  *            type: boolean
  *            description: local account automatically linked the email matched
  */
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('~/server/middlewares/login-required')(crowi);
   const adminRequired = require('~/server/middlewares/admin-required')(crowi);

+ 1 - 1
apps/app/src/server/routes/apiv3/statistics.js

@@ -16,7 +16,7 @@ const USER_STATUS_MASTER = {
   5: 'invited',
 };
 
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
 
   const models = crowi.models;

+ 1 - 0
apps/app/src/server/routes/apiv3/user-group-relation.js

@@ -13,6 +13,7 @@ const router = express.Router();
 
 const validator = {};
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 1
apps/app/src/server/routes/apiv3/user-group.js

@@ -23,7 +23,7 @@ const logger = loggerFactory('growi:routes:apiv3:user-group'); // eslint-disable
 
 const router = express.Router();
 
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);

+ 1 - 0
apps/app/src/server/routes/attachment/api.js

@@ -131,6 +131,7 @@ const ApiResponse = require('../../util/apiResponse');
  *            example: "/download/5e0734e072560e001761fa67"
  */
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 export const routesFactory = (crowi) => {
   const Page = crowi.model('Page');
   const User = crowi.model('User');

+ 1 - 0
apps/app/src/server/routes/comment.js

@@ -53,6 +53,7 @@ import { preNotifyService } from '../service/pre-notify';
  *            example: 2010-01-01T00:00:00.000Z
  */
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = function(crowi, app) {
   const logger = loggerFactory('growi:routes:comment');
   const User = crowi.model('User');

+ 1 - 0
apps/app/src/server/routes/index.js

@@ -27,6 +27,7 @@ const csrfProtection = csrf({ cookie: false });
 
 autoReap.options.reapOnError = true; // continue reaping the file even if an error occurs
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = function(crowi, app) {
   const autoReconnectToSearch = require('../middlewares/auto-reconnect-to-search')(crowi);
   const applicationNotInstalled = require('../middlewares/application-not-installed')(crowi);

+ 1 - 0
apps/app/src/server/routes/login-passport.js

@@ -10,6 +10,7 @@ import { externalAccountService } from '../service/external-account';
 
 /* eslint-disable no-use-before-define */
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = function(crowi, app) {
   const logger = loggerFactory('growi:routes:login-passport');
   const passport = require('passport');

+ 1 - 3
apps/app/src/server/routes/page.js

@@ -63,9 +63,7 @@ import UpdatePost from '../models/update-post';
  */
 
 /* eslint-disable no-use-before-define */
-/**
- * @type { (crowi: import('../crowi').default, app) => any }
- */
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = function(crowi, app) {
   const logger = loggerFactory('growi:routes:page');
 

+ 1 - 0
apps/app/src/server/routes/tag.js

@@ -34,6 +34,7 @@ import ApiResponse from '../util/apiResponse';
  *            description: Count of tagged pages
  *            example: 3
  */
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = function(crowi, app) {
 
   const activityEvent = crowi.event('activity');

+ 1 - 1
apps/app/src/server/routes/user.js

@@ -44,7 +44,7 @@
  *            description: date created at
  *            example: 2010-01-01T00:00:00.000Z
  */
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = function(crowi, app) {
   const User = crowi.model('User');
   const ApiResponse = require('../util/apiResponse');

+ 4 - 0
apps/app/src/server/service/attachment.js

@@ -15,6 +15,10 @@ const logger = loggerFactory('growi:service:AttachmentService');
  */
 class AttachmentService {
 
+  /** @type {import('~/server/crowi').default} Crowi instance */
+  crowi;
+
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
   }

+ 4 - 0
apps/app/src/server/service/export.js

@@ -34,6 +34,10 @@ class ExportProgressingStatus extends CollectionProgressingStatus {
 
 class ExportService {
 
+  /** @type {import('~/server/crowi').default} Crowi instance */
+  crowi;
+
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
     this.appService = crowi.appService;

+ 4 - 0
apps/app/src/server/service/global-notification/global-notification-mail.js

@@ -11,6 +11,10 @@ const logger = loggerFactory('growi:service:GlobalNotificationMailService'); //
  */
 class GlobalNotificationMailService {
 
+  /** @type {import('~/server/crowi').default} Crowi instance */
+  crowi;
+
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
   }

+ 4 - 1
apps/app/src/server/service/global-notification/global-notification-slack.js

@@ -18,11 +18,14 @@ const { encodeSpaces } = pagePathUtils;
  */
 class GlobalNotificationSlackService {
 
+  /** @type {import('~/server/crowi').default} Crowi instance */
+  crowi;
+
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
   }
 
-
   /**
    * send slack global notification
    *

+ 4 - 0
apps/app/src/server/service/rest-qiita-API.js

@@ -17,6 +17,10 @@ function getAxios(team, token) {
 
 class RestQiitaAPIService {
 
+  /** @type {import('~/server/crowi').default} Crowi instance */
+  crowi;
+
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
     this.configManager = crowi.configManager;

+ 1 - 0
apps/app/src/server/service/slack-command-handler/create-page-service.js

@@ -18,6 +18,7 @@ class CreatePageService {
   /** @type {import('~/server/crowi').default} Crowi instance */
   crowi;
 
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
   }

+ 1 - 1
apps/app/src/server/service/slack-command-handler/keep.js

@@ -9,7 +9,7 @@ import loggerFactory from '~/utils/logger';
 
 const logger = loggerFactory('growi:service:SlackBotService:keep');
 
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const CreatePageService = require('./create-page-service');
   const createPageService = new CreatePageService(crowi);

+ 1 - 0
apps/app/src/server/service/slack-command-handler/note.js

@@ -7,6 +7,7 @@ import loggerFactory from '~/utils/logger';
 
 const logger = loggerFactory('growi:service:SlackCommandHandler:note');
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const CreatePageService = require('./create-page-service');
   const createPageService = new CreatePageService(crowi);

+ 1 - 0
apps/app/src/server/service/slack-command-handler/search.js

@@ -13,6 +13,7 @@ const logger = loggerFactory('growi:service:SlackCommandHandler:search');
 const PAGINGLIMIT = 7;
 
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const BaseSlackCommandHandler = require('./slack-command-handler');
   const handler = new BaseSlackCommandHandler(crowi);

+ 4 - 0
apps/app/src/server/service/slack-command-handler/slack-command-handler.js

@@ -1,6 +1,10 @@
 // Any slack command handler should inherit BaseSlackCommandHandler
 class BaseSlackCommandHandler {
 
+  /** @type {import('~/server/crowi').default} Crowi instance */
+  crowi;
+
+  /** @param {import('~/server/crowi').default} crowi Crowi instance */
   constructor(crowi) {
     this.crowi = crowi;
   }

+ 1 - 1
apps/app/src/server/service/slack-command-handler/togetter.js

@@ -11,7 +11,7 @@ import loggerFactory from '~/utils/logger';
 // eslint-disable-next-line no-unused-vars
 const logger = loggerFactory('growi:service:SlackBotService:togetter');
 
-
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const CreatePageService = require('./create-page-service');
   const createPageService = new CreatePageService(crowi);

+ 1 - 0
apps/app/src/server/util/createGrowiPagesFromImports.js

@@ -2,6 +2,7 @@ import { pagePathUtils } from '@growi/core/dist/utils';
 
 const { isCreatablePage } = pagePathUtils;
 
+/** @param {import('~/server/crowi').default} crowi Crowi instance */
 module.exports = (crowi) => {
   const Page = crowi.model('Page');