Yuki Takei 1 год назад
Родитель
Сommit
5203e1d0e9

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

@@ -11,7 +11,6 @@ import registerSafeRedirectFactory from '../middlewares/safe-redirect';
 const logger = loggerFactory('growi:crowi:express-init');
 const logger = loggerFactory('growi:crowi:express-init');
 
 
 module.exports = function(crowi, app) {
 module.exports = function(crowi, app) {
-  const debug = require('debug')('growi:crowi:express-init');
   const express = require('express');
   const express = require('express');
   const compression = require('compression');
   const compression = require('compression');
   const helmet = require('helmet');
   const helmet = require('helmet');
@@ -124,7 +123,7 @@ module.exports = function(crowi, app) {
   app.use(csrf({ ignoreMethods: ['GET', 'HEAD', 'OPTIONS', 'PUT', 'POST', 'DELETE'], cookie: false }));
   app.use(csrf({ ignoreMethods: ['GET', 'HEAD', 'OPTIONS', 'PUT', 'POST', 'DELETE'], cookie: false }));
 
 
   // passport
   // passport
-  debug('initialize Passport');
+  logger.debug('initialize Passport');
   app.use(passport.initialize());
   app.use(passport.initialize());
   app.use(passport.session());
   app.use(passport.session());
 
 

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

@@ -1,6 +1,5 @@
-// var debug = require('debug')('crowi:events:page')
-const util = require('util');
 const events = require('events');
 const events = require('events');
+const util = require('util');
 
 
 function BookmarkEvent(crowi) {
 function BookmarkEvent(crowi) {
   this.crowi = crowi;
   this.crowi = crowi;

+ 10 - 7
apps/app/src/server/events/page.js

@@ -1,6 +1,9 @@
-const debug = require('debug')('growi:events:page');
-const util = require('util');
-const events = require('events');
+import events from 'events';
+import util from 'util';
+
+import loggerFactory from '~/utils/logger';
+
+const logger = loggerFactory('growi:events:page');
 
 
 function PageEvent(crowi) {
 function PageEvent(crowi) {
   this.crowi = crowi;
   this.crowi = crowi;
@@ -10,15 +13,15 @@ function PageEvent(crowi) {
 util.inherits(PageEvent, events.EventEmitter);
 util.inherits(PageEvent, events.EventEmitter);
 
 
 PageEvent.prototype.onCreate = function(page, user) {
 PageEvent.prototype.onCreate = function(page, user) {
-  debug('onCreate event fired');
+  logger.debug('onCreate event fired');
 };
 };
 PageEvent.prototype.onUpdate = function(page, user) {
 PageEvent.prototype.onUpdate = function(page, user) {
-  debug('onUpdate event fired');
+  logger.debug('onUpdate event fired');
 };
 };
 PageEvent.prototype.onCreateMany = function(pages, user) {
 PageEvent.prototype.onCreateMany = function(pages, user) {
-  debug('onCreateMany event fired');
+  logger.debug('onCreateMany event fired');
 };
 };
 PageEvent.prototype.onAddSeenUsers = function(pages, user) {
 PageEvent.prototype.onAddSeenUsers = function(pages, user) {
-  debug('onAddSeenUsers event fired');
+  logger.debug('onAddSeenUsers event fired');
 };
 };
 module.exports = PageEvent;
 module.exports = PageEvent;

+ 10 - 7
apps/app/src/server/models/bookmark.js

@@ -1,9 +1,12 @@
 /* eslint-disable no-return-await */
 /* eslint-disable no-return-await */
 
 
-const debug = require('debug')('growi:models:bookmark');
-const mongoose = require('mongoose');
-const mongoosePaginate = require('mongoose-paginate-v2');
-const uniqueValidator = require('mongoose-unique-validator');
+import mongoose from 'mongoose';
+import mongoosePaginate from 'mongoose-paginate-v2';
+import uniqueValidator from 'mongoose-unique-validator';
+
+import loggerFactory from '~/utils/logger';
+
+const logger = loggerFactory('growi:models:bookmark');
 
 
 const ObjectId = mongoose.Schema.Types.ObjectId;
 const ObjectId = mongoose.Schema.Types.ObjectId;
 
 
@@ -74,7 +77,7 @@ const factory = (crowi) => {
         // duplicate key (dummy response of new object)
         // duplicate key (dummy response of new object)
         return newBookmark;
         return newBookmark;
       }
       }
-      debug('Bookmark.save failed', err);
+      logger.debug('Bookmark.save failed', err);
       throw err;
       throw err;
     }
     }
   };
   };
@@ -93,7 +96,7 @@ const factory = (crowi) => {
       return data;
       return data;
     }
     }
     catch (err) {
     catch (err) {
-      debug('Bookmark.remove failed (removeBookmarkByPage)', err);
+      logger.debug('Bookmark.remove failed (removeBookmarkByPage)', err);
       throw err;
       throw err;
     }
     }
   };
   };
@@ -107,7 +110,7 @@ const factory = (crowi) => {
       return data;
       return data;
     }
     }
     catch (err) {
     catch (err) {
-      debug('Bookmark.findOneAndRemove failed', err);
+      logger.debug('Bookmark.findOneAndRemove failed', err);
       throw err;
       throw err;
     }
     }
   };
   };

+ 13 - 12
apps/app/src/server/models/external-account.ts

@@ -1,17 +1,18 @@
 // disable no-return-await for model functions
 // disable no-return-await for model functions
 /* eslint-disable no-return-await */
 /* eslint-disable no-return-await */
-import type { IExternalAccount, IExternalAccountHasId, IUserHasId } from '@growi/core';
-import type { Model, Document } from 'mongoose';
-import { Schema } from 'mongoose';
+import type { IUser } from '@growi/core/dist/interfaces';
+import { type IExternalAccount, type IExternalAccountHasId, type IUserHasId } from '@growi/core/dist/interfaces';
+import type { Model, Document, HydratedDocument } from 'mongoose';
+import mongoose, { Schema } from 'mongoose';
+import mongoosePaginate from 'mongoose-paginate-v2';
+import uniqueValidator from 'mongoose-unique-validator';
 
 
 import { NullUsernameToBeRegisteredError } from '~/server/models/errors';
 import { NullUsernameToBeRegisteredError } from '~/server/models/errors';
+import loggerFactory from '~/utils/logger';
 
 
 import { getOrCreateModel } from '../util/mongoose-utils';
 import { getOrCreateModel } from '../util/mongoose-utils';
 
 
-const debug = require('debug')('growi:models:external-account');
-const mongoose = require('mongoose');
-const mongoosePaginate = require('mongoose-paginate-v2');
-const uniqueValidator = require('mongoose-unique-validator');
+const logger = loggerFactory('growi:models:external-account');
 
 
 
 
 export interface ExternalAccountDocument extends IExternalAccount, Document {}
 export interface ExternalAccountDocument extends IExternalAccount, Document {}
@@ -75,7 +76,7 @@ schema.statics.findOrRegister = function(
     .then((account) => {
     .then((account) => {
     // ExternalAccount is found
     // ExternalAccount is found
       if (account != null) {
       if (account != null) {
-        debug(`ExternalAccount '${accountId}' is found `, account);
+        logger.debug(`ExternalAccount '${accountId}' is found `, account);
         return account;
         return account;
       }
       }
 
 
@@ -83,9 +84,9 @@ schema.statics.findOrRegister = function(
         throw new NullUsernameToBeRegisteredError('username_should_not_be_null');
         throw new NullUsernameToBeRegisteredError('username_should_not_be_null');
       }
       }
 
 
-      const User = mongoose.model('User');
+      const User = mongoose.model<HydratedDocument<IUser>, Model<IUser> & { createUser, STATUS_ACTIVE }>('User');
 
 
-      let promise = User.findOne({ username: usernameToBeRegistered });
+      let promise = User.findOne({ username: usernameToBeRegistered }).exec();
       if (isSameUsernameTreatedAsIdenticalUser && isSameEmailTreatedAsIdenticalUser) {
       if (isSameUsernameTreatedAsIdenticalUser && isSameEmailTreatedAsIdenticalUser) {
         promise = promise
         promise = promise
           .then((user) => {
           .then((user) => {
@@ -94,7 +95,7 @@ schema.statics.findOrRegister = function(
           });
           });
       }
       }
       else if (isSameEmailTreatedAsIdenticalUser) {
       else if (isSameEmailTreatedAsIdenticalUser) {
-        promise = User.findOne({ email: mailToBeRegistered });
+        promise = User.findOne({ email: mailToBeRegistered }).exec();
       }
       }
 
 
       return promise
       return promise
@@ -109,7 +110,7 @@ schema.statics.findOrRegister = function(
           }
           }
 
 
           // create a new User with STATUS_ACTIVE
           // create a new User with STATUS_ACTIVE
-          debug(`ExternalAccount '${accountId}' is not found, it is going to be registered.`);
+          logger.debug(`ExternalAccount '${accountId}' is not found, it is going to be registered.`);
           return User.createUser(nameToBeRegistered, usernameToBeRegistered, mailToBeRegistered, undefined, undefined, User.STATUS_ACTIVE);
           return User.createUser(nameToBeRegistered, usernameToBeRegistered, mailToBeRegistered, undefined, undefined, User.STATUS_ACTIVE);
         })
         })
         .then((newUser) => {
         .then((newUser) => {

+ 5 - 6
apps/app/src/server/models/obsolete-page.js

@@ -11,6 +11,8 @@ import loggerFactory from '~/utils/logger';
 import UserGroup from './user-group';
 import UserGroup from './user-group';
 import UserGroupRelation from './user-group-relation';
 import UserGroupRelation from './user-group-relation';
 
 
+const logger = loggerFactory('growi:models:page');
+
 
 
 // disable no-return-await for model functions
 // disable no-return-await for model functions
 /* eslint-disable no-return-await */
 /* eslint-disable no-return-await */
@@ -19,15 +21,12 @@ import UserGroupRelation from './user-group-relation';
 
 
 const nodePath = require('path');
 const nodePath = require('path');
 
 
-const debug = require('debug')('growi:models:page');
 const mongoose = require('mongoose');
 const mongoose = require('mongoose');
 const urljoin = require('url-join');
 const urljoin = require('url-join');
 
 
 const { isTopPage, isTrashPage } = pagePathUtils;
 const { isTopPage, isTrashPage } = pagePathUtils;
 const { checkTemplatePath } = templateChecker;
 const { checkTemplatePath } = templateChecker;
 
 
-const logger = loggerFactory('growi:models:page');
-
 const GRANT_PUBLIC = 1;
 const GRANT_PUBLIC = 1;
 const GRANT_RESTRICTED = 2;
 const GRANT_RESTRICTED = 2;
 const GRANT_SPECIFIED = 3;
 const GRANT_SPECIFIED = 3;
@@ -216,7 +215,7 @@ export const getPageSchema = (crowi) => {
 
 
   pageSchema.methods.seen = async function(userData) {
   pageSchema.methods.seen = async function(userData) {
     if (this.isSeenUser(userData)) {
     if (this.isSeenUser(userData)) {
-      debug('seenUsers not updated');
+      logger.debug('seenUsers not updated');
       return this;
       return this;
     }
     }
 
 
@@ -227,7 +226,7 @@ export const getPageSchema = (crowi) => {
     const added = this.seenUsers.addToSet(userData._id);
     const added = this.seenUsers.addToSet(userData._id);
     const saved = await this.save();
     const saved = await this.save();
 
 
-    debug('seenUsers updated!', added);
+    logger.debug('seenUsers updated!', added);
     pageEvent.emit('addSeenUsers', saved);
     pageEvent.emit('addSeenUsers', saved);
 
 
     return saved;
     return saved;
@@ -290,7 +289,7 @@ export const getPageSchema = (crowi) => {
       .then((count) => {
       .then((count) => {
         self.update({ _id: pageId }, { commentCount: count }, {}, (err, data) => {
         self.update({ _id: pageId }, { commentCount: count }, {}, (err, data) => {
           if (err) {
           if (err) {
-            debug('Update commentCount Error', err);
+            logger.debug('Update commentCount Error', err);
             throw err;
             throw err;
           }
           }
 
 

+ 2 - 2
apps/app/src/server/models/revision.ts

@@ -1,9 +1,9 @@
+import { allOrigin } from '@growi/core';
 import type {
 import type {
   HasObjectId,
   HasObjectId,
   IRevision,
   IRevision,
   Origin,
   Origin,
-} from '@growi/core';
-import { allOrigin } from '@growi/core';
+} from '@growi/core/dist/interfaces';
 import type { Types } from 'mongoose';
 import type { Types } from 'mongoose';
 import {
 import {
   Schema, type Document, type Model,
   Schema, type Document, type Model,

+ 10 - 7
apps/app/src/server/models/user-group-relation.ts

@@ -1,17 +1,20 @@
 import {
 import {
-  getIdForRef, isPopulated, type IUserGroupRelation,
+  getIdForRef, isPopulated,
 } from '@growi/core';
 } from '@growi/core';
+import type { IUserGroupRelation } from '@growi/core/dist/interfaces';
 import type { Model, Document } from 'mongoose';
 import type { Model, Document } from 'mongoose';
 import mongoose, { Schema } from 'mongoose';
 import mongoose, { Schema } from 'mongoose';
+import mongoosePaginate from 'mongoose-paginate-v2';
+import uniqueValidator from 'mongoose-unique-validator';
+
+import loggerFactory from '~/utils/logger';
 
 
 import type { ObjectIdLike } from '../interfaces/mongoose-utils';
 import type { ObjectIdLike } from '../interfaces/mongoose-utils';
 import { getOrCreateModel } from '../util/mongoose-utils';
 import { getOrCreateModel } from '../util/mongoose-utils';
 
 
 import type { UserGroupDocument } from './user-group';
 import type { UserGroupDocument } from './user-group';
 
 
-const debug = require('debug')('growi:models:userGroupRelation');
-const mongoosePaginate = require('mongoose-paginate-v2');
-const uniqueValidator = require('mongoose-unique-validator');
+const logger = loggerFactory('growi:models:userGroupRelation');
 
 
 
 
 export interface UserGroupRelationDocument extends IUserGroupRelation, Document {}
 export interface UserGroupRelationDocument extends IUserGroupRelation, Document {}
@@ -87,7 +90,7 @@ schema.statics.findAllRelation = function() {
  * @memberof UserGroupRelation
  * @memberof UserGroupRelation
  */
  */
 schema.statics.findAllRelationForUserGroup = function(userGroup) {
 schema.statics.findAllRelationForUserGroup = function(userGroup) {
-  debug('findAllRelationForUserGroup is called', userGroup);
+  logger.debug('findAllRelationForUserGroup is called', userGroup);
   return this
   return this
     .find({ relatedGroup: userGroup })
     .find({ relatedGroup: userGroup })
     .populate('relatedUser')
     .populate('relatedUser')
@@ -130,7 +133,7 @@ schema.statics.findAllRelationForUserGroups = function(userGroups) {
 schema.statics.findAllGroupsForUser = async function(user): Promise<UserGroupDocument[]> {
 schema.statics.findAllGroupsForUser = async function(user): Promise<UserGroupDocument[]> {
   const userGroupRelations = await this.find({ relatedUser: user._id }).populate('relatedGroup');
   const userGroupRelations = await this.find({ relatedUser: user._id }).populate('relatedGroup');
   const userGroups = userGroupRelations.map((relation) => {
   const userGroups = userGroupRelations.map((relation) => {
-    return isPopulated(relation.relatedGroup) ? relation.relatedGroup as UserGroupDocument : null;
+    return isPopulated(relation.relatedGroup) ? relation.relatedGroup as unknown as UserGroupDocument : null;
   });
   });
   return userGroups.filter((group): group is NonNullable<UserGroupDocument> => group != null);
   return userGroups.filter((group): group is NonNullable<UserGroupDocument> => group != null);
 };
 };
@@ -203,7 +206,7 @@ schema.statics.findUserByNotRelatedGroup = function(userGroup, queryOptions) {
         $or: searthField,
         $or: searthField,
       };
       };
 
 
-      debug('findUserByNotRelatedGroup ', query);
+      logger.debug('findUserByNotRelatedGroup ', query);
       return User.find(query).exec();
       return User.find(query).exec();
     });
     });
 };
 };

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

@@ -13,7 +13,6 @@ import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
 const logger = loggerFactory('growi:routes:apiv3:app-settings');
 const logger = loggerFactory('growi:routes:apiv3:app-settings');
 
 
 const { pathUtils } = require('@growi/core/dist/utils');
 const { pathUtils } = require('@growi/core/dist/utils');
-const debug = require('debug')('growi:routes:admin');
 const express = require('express');
 const express = require('express');
 
 
 const router = express.Router();
 const router = express.Router();
@@ -463,7 +462,7 @@ module.exports = (crowi) => {
     }
     }
 
 
     const smtpClient = mailService.createSMTPClient(option);
     const smtpClient = mailService.createSMTPClient(option);
-    debug('mailer setup for validate SMTP setting', smtpClient);
+    logger.debug('mailer setup for validate SMTP setting', smtpClient);
 
 
     const mailOptions = {
     const mailOptions = {
       from: fromAddress,
       from: fromAddress,
@@ -568,7 +567,7 @@ module.exports = (crowi) => {
     catch (err) {
     catch (err) {
       const msg = req.t('validation.failed_to_send_a_test_email');
       const msg = req.t('validation.failed_to_send_a_test_email');
       logger.error('Error', err);
       logger.error('Error', err);
-      debug('Error validate mail setting: ', err);
+      logger.debug('Error validate mail setting: ', err);
       return res.apiv3Err(new ErrorV3(msg, 'send-email-with-smtp-failed'));
       return res.apiv3Err(new ErrorV3(msg, 'send-email-with-smtp-failed'));
     }
     }
   });
   });

+ 6 - 3
apps/app/src/server/routes/apiv3/invited.ts

@@ -1,18 +1,21 @@
-import type { IUser } from '@growi/core';
+import type { IUser } from '@growi/core/dist/interfaces';
 import type { Request, Router } from 'express';
 import type { Request, Router } from 'express';
 import express from 'express';
 import express from 'express';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import loggerFactory from '~/utils/logger';
+
 import type Crowi from '../../crowi';
 import type Crowi from '../../crowi';
 import { invitedRules, invitedValidation } from '../../middlewares/invited-form-validator';
 import { invitedRules, invitedValidation } from '../../middlewares/invited-form-validator';
 
 
 import type { ApiV3Response } from './interfaces/apiv3-response';
 import type { ApiV3Response } from './interfaces/apiv3-response';
 
 
+const logger = loggerFactory('growi:routes:login');
+
 type InvitedFormRequest = Request & { form: any, user: any };
 type InvitedFormRequest = Request & { form: any, user: any };
 
 
 module.exports = (crowi: Crowi): Router => {
 module.exports = (crowi: Crowi): Router => {
   const applicationInstalled = require('../../middlewares/application-installed')(crowi);
   const applicationInstalled = require('../../middlewares/application-installed')(crowi);
-  const debug = require('debug')('growi:routes:login');
   const router = express.Router();
   const router = express.Router();
 
 
   router.post('/', applicationInstalled, invitedRules(), invitedValidation, async(req: InvitedFormRequest, res: ApiV3Response) => {
   router.post('/', applicationInstalled, invitedRules(), invitedValidation, async(req: InvitedFormRequest, res: ApiV3Response) => {
@@ -41,7 +44,7 @@ module.exports = (crowi: Crowi): Router => {
 
 
     const creatable = await User.isRegisterableUsername(username);
     const creatable = await User.isRegisterableUsername(username);
     if (!creatable) {
     if (!creatable) {
-      debug('username', username);
+      logger.debug('username', username);
       return res.apiv3Err('message.unable_to_use_this_user', 403);
       return res.apiv3Err('message.unable_to_use_this_user', 403);
     }
     }
 
 

+ 19 - 21
apps/app/src/server/routes/login-passport.js

@@ -1,5 +1,4 @@
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
-import next from 'next';
 
 
 import { SupportedAction } from '~/interfaces/activity';
 import { SupportedAction } from '~/interfaces/activity';
 import { ExternalAccountLoginError } from '~/models/vo/external-account-login-error';
 import { ExternalAccountLoginError } from '~/models/vo/external-account-login-error';
@@ -11,7 +10,6 @@ import { externalAccountService } from '../service/external-account';
 /* eslint-disable no-use-before-define */
 /* eslint-disable no-use-before-define */
 
 
 module.exports = function(crowi, app) {
 module.exports = function(crowi, app) {
-  const debug = require('debug')('growi:routes:login-passport');
   const logger = loggerFactory('growi:routes:login-passport');
   const logger = loggerFactory('growi:routes:login-passport');
   const passport = require('passport');
   const passport = require('passport');
   const passportService = crowi.passportService;
   const passportService = crowi.passportService;
@@ -58,7 +56,7 @@ module.exports = function(crowi, app) {
     user.updateLastLoginAt(new Date(), (err, userData) => {
     user.updateLastLoginAt(new Date(), (err, userData) => {
       if (err) {
       if (err) {
         logger.error(`updateLastLoginAt dumps error: ${err}`);
         logger.error(`updateLastLoginAt dumps error: ${err}`);
-        debug(`updateLastLoginAt dumps error: ${err}`);
+        logger.debug(`updateLastLoginAt dumps error: ${err}`);
       }
       }
     });
     });
 
 
@@ -164,7 +162,7 @@ module.exports = function(crowi, app) {
    */
    */
   const loginWithLdap = async(req, res, next) => {
   const loginWithLdap = async(req, res, next) => {
     if (!passportService.isLdapStrategySetup) {
     if (!passportService.isLdapStrategySetup) {
-      debug('LdapStrategy has not been set up');
+      logger.debug('LdapStrategy has not been set up');
       return next();
       return next();
     }
     }
 
 
@@ -180,7 +178,7 @@ module.exports = function(crowi, app) {
       ldapAccountInfo = await promisifiedPassportAuthentication(strategyName, req, res);
       ldapAccountInfo = await promisifiedPassportAuthentication(strategyName, req, res);
     }
     }
     catch (err) {
     catch (err) {
-      debug(err.message);
+      logger.debug(err.message);
       return next(err);
       return next(err);
     }
     }
 
 
@@ -227,7 +225,7 @@ module.exports = function(crowi, app) {
     // login
     // login
     await req.logIn(user, (err) => {
     await req.logIn(user, (err) => {
       if (err) {
       if (err) {
-        debug(err.message);
+        logger.debug(err.message);
         return next(err);
         return next(err);
       }
       }
 
 
@@ -243,7 +241,7 @@ module.exports = function(crowi, app) {
    */
    */
   const testLdapCredentials = (req, res) => {
   const testLdapCredentials = (req, res) => {
     if (!passportService.isLdapStrategySetup) {
     if (!passportService.isLdapStrategySetup) {
-      debug('LdapStrategy has not been set up');
+      logger.debug('LdapStrategy has not been set up');
       return res.json(ApiResponse.success({
       return res.json(ApiResponse.success({
         status: 'warning',
         status: 'warning',
         message: req.t('message.strategy_has_not_been_set_up', { strategy: 'LdapStrategy' }),
         message: req.t('message.strategy_has_not_been_set_up', { strategy: 'LdapStrategy' }),
@@ -299,7 +297,7 @@ module.exports = function(crowi, app) {
    */
    */
   const loginWithLocal = (req, res, next) => {
   const loginWithLocal = (req, res, next) => {
     if (!passportService.isLocalStrategySetup) {
     if (!passportService.isLocalStrategySetup) {
-      debug('LocalStrategy has not been set up');
+      logger.debug('LocalStrategy has not been set up');
       return next();
       return next();
     }
     }
 
 
@@ -308,9 +306,9 @@ module.exports = function(crowi, app) {
     }
     }
 
 
     passport.authenticate('local', (err, user, info) => {
     passport.authenticate('local', (err, user, info) => {
-      debug('--- authenticate with LocalStrategy ---');
-      debug('user', user);
-      debug('info', info);
+      logger.debug('--- authenticate with LocalStrategy ---');
+      logger.debug('user', user);
+      logger.debug('info', info);
 
 
       if (err) { // DB Error
       if (err) { // DB Error
         logger.error('Database Server Error: ', err);
         logger.error('Database Server Error: ', err);
@@ -321,7 +319,7 @@ module.exports = function(crowi, app) {
       }
       }
       req.logIn(user, (err) => {
       req.logIn(user, (err) => {
         if (err) {
         if (err) {
-          debug(err.message);
+          logger.debug(err.message);
           return next(err);
           return next(err);
         }
         }
 
 
@@ -332,7 +330,7 @@ module.exports = function(crowi, app) {
 
 
   const loginWithGoogle = function(req, res, next) {
   const loginWithGoogle = function(req, res, next) {
     if (!passportService.isGoogleStrategySetup) {
     if (!passportService.isGoogleStrategySetup) {
-      debug('GoogleStrategy has not been set up');
+      logger.debug('GoogleStrategy has not been set up');
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'GoogleStrategy' });
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'GoogleStrategy' });
       return next(error);
       return next(error);
     }
     }
@@ -394,7 +392,7 @@ module.exports = function(crowi, app) {
 
 
     // login
     // login
     req.logIn(user, async(err) => {
     req.logIn(user, async(err) => {
-      if (err) { debug(err.message); return next(new ExternalAccountLoginError(err.message)) }
+      if (err) { logger.debug(err.message); return next(new ExternalAccountLoginError(err.message)) }
 
 
       return loginSuccessHandler(req, res, user, SupportedAction.ACTION_USER_LOGIN_WITH_GOOGLE, true);
       return loginSuccessHandler(req, res, user, SupportedAction.ACTION_USER_LOGIN_WITH_GOOGLE, true);
     });
     });
@@ -402,7 +400,7 @@ module.exports = function(crowi, app) {
 
 
   const loginWithGitHub = function(req, res, next) {
   const loginWithGitHub = function(req, res, next) {
     if (!passportService.isGitHubStrategySetup) {
     if (!passportService.isGitHubStrategySetup) {
-      debug('GitHubStrategy has not been set up');
+      logger.debug('GitHubStrategy has not been set up');
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'GitHubStrategy' });
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'GitHubStrategy' });
       return next(error);
       return next(error);
     }
     }
@@ -437,7 +435,7 @@ module.exports = function(crowi, app) {
 
 
     // login
     // login
     req.logIn(user, async(err) => {
     req.logIn(user, async(err) => {
-      if (err) { debug(err.message); return next(new ExternalAccountLoginError(err.message)) }
+      if (err) { logger.debug(err.message); return next(new ExternalAccountLoginError(err.message)) }
 
 
       return loginSuccessHandler(req, res, user, SupportedAction.ACTION_USER_LOGIN_WITH_GITHUB, true);
       return loginSuccessHandler(req, res, user, SupportedAction.ACTION_USER_LOGIN_WITH_GITHUB, true);
     });
     });
@@ -445,7 +443,7 @@ module.exports = function(crowi, app) {
 
 
   const loginWithOidc = function(req, res, next) {
   const loginWithOidc = function(req, res, next) {
     if (!passportService.isOidcStrategySetup) {
     if (!passportService.isOidcStrategySetup) {
-      debug('OidcStrategy has not been set up');
+      logger.debug('OidcStrategy has not been set up');
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'OidcStrategy' });
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'OidcStrategy' });
       return next(error);
       return next(error);
     }
     }
@@ -466,7 +464,7 @@ module.exports = function(crowi, app) {
       response = await promisifiedPassportAuthentication(strategyName, req, res);
       response = await promisifiedPassportAuthentication(strategyName, req, res);
     }
     }
     catch (err) {
     catch (err) {
-      debug(err);
+      logger.debug(err);
       return next(new ExternalAccountLoginError(err.message));
       return next(new ExternalAccountLoginError(err.message));
     }
     }
 
 
@@ -476,7 +474,7 @@ module.exports = function(crowi, app) {
       name: response[attrMapName],
       name: response[attrMapName],
       email: response[attrMapMail],
       email: response[attrMapMail],
     };
     };
-    debug('mapping response to userInfo', userInfo, response, attrMapId, attrMapUserName, attrMapMail);
+    logger.debug('mapping response to userInfo', userInfo, response, attrMapId, attrMapUserName, attrMapMail);
 
 
     const externalAccount = await externalAccountService.getOrCreateUser(userInfo, providerId);
     const externalAccount = await externalAccountService.getOrCreateUser(userInfo, providerId);
     if (!externalAccount) {
     if (!externalAccount) {
@@ -486,7 +484,7 @@ module.exports = function(crowi, app) {
     // login
     // login
     const user = (await externalAccount.populate('user')).user;
     const user = (await externalAccount.populate('user')).user;
     req.logIn(user, async(err) => {
     req.logIn(user, async(err) => {
-      if (err) { debug(err.message); return next(new ExternalAccountLoginError(err.message)) }
+      if (err) { logger.debug(err.message); return next(new ExternalAccountLoginError(err.message)) }
 
 
       return loginSuccessHandler(req, res, user, SupportedAction.ACTION_USER_LOGIN_WITH_OIDC, true);
       return loginSuccessHandler(req, res, user, SupportedAction.ACTION_USER_LOGIN_WITH_OIDC, true);
     });
     });
@@ -494,7 +492,7 @@ module.exports = function(crowi, app) {
 
 
   const loginWithSaml = function(req, res, next) {
   const loginWithSaml = function(req, res, next) {
     if (!passportService.isSamlStrategySetup) {
     if (!passportService.isSamlStrategySetup) {
-      debug('SamlStrategy has not been set up');
+      logger.debug('SamlStrategy has not been set up');
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'SamlStrategy' });
       const error = new ExternalAccountLoginError('message.strategy_has_not_been_set_up', { strategy: 'SamlStrategy' });
       return next(error);
       return next(error);
     }
     }

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

@@ -6,7 +6,6 @@ import loggerFactory from '~/utils/logger';
 // because this file is a deprecated legacy of Crowi
 // because this file is a deprecated legacy of Crowi
 
 
 module.exports = function(crowi, app) {
 module.exports = function(crowi, app) {
-  const debug = require('debug')('growi:routes:login');
   const logger = loggerFactory('growi:routes:login');
   const logger = loggerFactory('growi:routes:login');
   const path = require('path');
   const path = require('path');
   const User = crowi.model('User');
   const User = crowi.model('User');
@@ -161,7 +160,7 @@ module.exports = function(crowi, app) {
         }
         }
       }
       }
       if (errors.length > 0) {
       if (errors.length > 0) {
-        debug('isError user register error', errOn);
+        logger.debug('isError user register error', errOn);
         return res.apiv3Err(errors, 400);
         return res.apiv3Err(errors, 400);
       }
       }
 
 

+ 4 - 5
apps/app/src/server/routes/page.js

@@ -132,7 +132,6 @@ import UpdatePost from '../models/update-post';
  * @type { (crowi: import('../crowi').default, app) => any }
  * @type { (crowi: import('../crowi').default, app) => any }
  */
  */
 module.exports = function(crowi, app) {
 module.exports = function(crowi, app) {
-  const debug = require('debug')('growi:routes:page');
   const logger = loggerFactory('growi:routes:page');
   const logger = loggerFactory('growi:routes:page');
 
 
   const { pagePathUtils } = require('@growi/core/dist/utils');
   const { pagePathUtils } = require('@growi/core/dist/utils');
@@ -302,12 +301,12 @@ module.exports = function(crowi, app) {
         data = data.map((e) => {
         data = data.map((e) => {
           return e.channel;
           return e.channel;
         });
         });
-        debug('Found updatePost data', data);
+        logger.debug('Found updatePost data', data);
         const result = { updatePost: data };
         const result = { updatePost: data };
         return res.json(ApiResponse.success(result));
         return res.json(ApiResponse.success(result));
       })
       })
       .catch((err) => {
       .catch((err) => {
-        debug('Error occured while get setting', err);
+        logger.debug('Error occured while get setting', err);
         return res.json(ApiResponse.error({}));
         return res.json(ApiResponse.error({}));
       });
       });
   };
   };
@@ -355,7 +354,7 @@ module.exports = function(crowi, app) {
 
 
     const creatorId = await crowi.pageService.getCreatorIdForCanDelete(page);
     const creatorId = await crowi.pageService.getCreatorIdForCanDelete(page);
 
 
-    debug('Delete page', page._id, page.path);
+    logger.debug('Delete page', page._id, page.path);
 
 
     try {
     try {
       if (isCompletely) {
       if (isCompletely) {
@@ -408,7 +407,7 @@ module.exports = function(crowi, app) {
       return res.json(ApiResponse.error('Failed to delete page.', err.message));
       return res.json(ApiResponse.error('Failed to delete page.', err.message));
     }
     }
 
 
-    debug('Page deleted', page.path);
+    logger.debug('Page deleted', page.path);
     const result = {};
     const result = {};
     result.path = page.path;
     result.path = page.path;
     result.isRecursively = isRecursively;
     result.isRecursively = isRecursively;

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

@@ -35,7 +35,6 @@ const logger = loggerFactory('growi:routes:search');
  *
  *
  */
  */
 module.exports = function(crowi, app) {
 module.exports = function(crowi, app) {
-  // var debug = require('debug')('growi:routes:search')
   const ApiResponse = require('../util/apiResponse');
   const ApiResponse = require('../util/apiResponse');
   const ApiPaginate = require('../util/apiPaginate');
   const ApiPaginate = require('../util/apiPaginate');
 
 

+ 7 - 8
apps/app/src/server/service/page/index.ts

@@ -2,15 +2,16 @@ import type EventEmitter from 'events';
 import pathlib from 'path';
 import pathlib from 'path';
 import { Readable, Writable } from 'stream';
 import { Readable, Writable } from 'stream';
 
 
+import {
+  PageStatus, YDocStatus, getIdForRef,
+  getIdStringForRef,
+} from '@growi/core';
+import { PageGrant } from '@growi/core/dist/interfaces';
 import type {
 import type {
   Ref, HasObjectId, IUserHasId, IUser,
   Ref, HasObjectId, IUserHasId, IUser,
   IPage, IPageInfo, IPageInfoAll, IPageInfoForEntity, IGrantedGroup, IRevisionHasId,
   IPage, IPageInfo, IPageInfoAll, IPageInfoForEntity, IGrantedGroup, IRevisionHasId,
   IDataWithMeta,
   IDataWithMeta,
-} from '@growi/core';
-import {
-  PageGrant, PageStatus, YDocStatus, getIdForRef,
-  getIdStringForRef,
-} from '@growi/core';
+} from '@growi/core/dist/interfaces';
 import {
 import {
   pagePathUtils, pathUtils,
   pagePathUtils, pathUtils,
 } from '@growi/core/dist/utils';
 } from '@growi/core/dist/utils';
@@ -76,8 +77,6 @@ import { shouldUseV4Process } from './should-use-v4-process';
 export * from './page-service';
 export * from './page-service';
 
 
 
 
-const debug = require('debug')('growi:services:page');
-
 const logger = loggerFactory('growi:services:page');
 const logger = loggerFactory('growi:services:page');
 const {
 const {
   isTrashPage, isTopPage, omitDuplicateAreaPageFromPages, getUsernameByPath,
   isTrashPage, isTopPage, omitDuplicateAreaPageFromPages, getUsernameByPath,
@@ -2378,7 +2377,7 @@ class PageService implements IPageService {
 
 
     page.status = Page.STATUS_PUBLISHED;
     page.status = Page.STATUS_PUBLISHED;
     page.lastUpdateUser = user;
     page.lastUpdateUser = user;
-    debug('Revert deleted the page', page, newPath);
+    logger.debug('Revert deleted the page', page, newPath);
     const updatedPage = await Page.findByIdAndUpdate(page._id, {
     const updatedPage = await Page.findByIdAndUpdate(page._id, {
       $set: {
       $set: {
         path: newPath, status: Page.STATUS_PUBLISHED, lastUpdateUser: user._id, deleteUser: null, deletedAt: null,
         path: newPath, status: Page.STATUS_PUBLISHED, lastUpdateUser: user._id, deleteUser: null, deletedAt: null,

+ 7 - 4
apps/app/src/server/util/slack.js

@@ -1,5 +1,8 @@
-const debug = require('debug')('growi:util:slack');
-const urljoin = require('url-join');
+import urljoin from 'url-join';
+
+import loggerFactory from '~/utils/logger';
+
+const logger = loggerFactory('growi:util:slack');
 
 
 /**
 /**
  * slack
  * slack
@@ -39,7 +42,7 @@ const prepareAttachmentTextForUpdate = function(page, siteUrl, previousRevision)
   let diffText = '';
   let diffText = '';
 
 
   diff.diffLines(previousRevision.body, page.revision.body).forEach((line) => {
   diff.diffLines(previousRevision.body, page.revision.body).forEach((line) => {
-    debug('diff line', line);
+    logger.debug('diff line', line);
     const value = line.value.replace(/\r\n|\r/g, '\n'); // eslint-disable-line no-unused-vars
     const value = line.value.replace(/\r\n|\r/g, '\n'); // eslint-disable-line no-unused-vars
     if (line.added) {
     if (line.added) {
       diffText += `${line.value} ... :lower_left_fountain_pen:`;
       diffText += `${line.value} ... :lower_left_fountain_pen:`;
@@ -56,7 +59,7 @@ const prepareAttachmentTextForUpdate = function(page, siteUrl, previousRevision)
     }
     }
   });
   });
 
 
-  debug('diff is', diffText);
+  logger.debug('diff is', diffText);
 
 
   return diffText;
   return diffText;
 };
 };

+ 0 - 12
apps/app/src/utils/logger/alias-for-debug.ts

@@ -1,12 +0,0 @@
-import generateBunyanLogger from './index';
-/**
- * return 'debug' method of bunyan logger
- *
- * This is supposed to be used as an replacement of "require('debug')"
- *
- * @param {string} name
- */
-module.exports = (name: string) => {
-  const bunyanLogger = generateBunyanLogger(name);
-  return bunyanLogger.debug.bind(bunyanLogger);
-};

+ 1 - 1
apps/app/src/utils/logger/index.ts

@@ -1,4 +1,4 @@
-import Logger from 'bunyan';
+import type Logger from 'bunyan';
 import { createLogger, type UniversalBunyanConfig } from 'universal-bunyan';
 import { createLogger, type UniversalBunyanConfig } from 'universal-bunyan';
 
 
 import configForDev from '^/config/logger/config.dev';
 import configForDev from '^/config/logger/config.dev';

+ 0 - 1
apps/app/tsconfig.build.client.json

@@ -15,7 +15,6 @@
     "paths": {
     "paths": {
       "~/*": ["./src/*"],
       "~/*": ["./src/*"],
       "^/*": ["./*"],
       "^/*": ["./*"],
-      "debug": ["./src/server/utils/logger/alias-for-debug"]
     },
     },
     "plugins": [{"name": "next"}]
     "plugins": [{"name": "next"}]
   }
   }

+ 0 - 1
apps/app/tsconfig.build.server.json

@@ -14,7 +14,6 @@
     "paths": {
     "paths": {
       "~/*": ["./src/*"],
       "~/*": ["./src/*"],
       "^/*": ["./*"],
       "^/*": ["./*"],
-      "debug": ["./src/utils/logger/alias-for-debug"]
     }
     }
   },
   },
   "exclude": [
   "exclude": [

+ 0 - 1
apps/app/tsconfig.json

@@ -12,7 +12,6 @@
     "paths": {
     "paths": {
       "~/*": ["./src/*"],
       "~/*": ["./src/*"],
       "^/*": ["./*"],
       "^/*": ["./*"],
-      "debug": ["./src/server/utils/logger/alias-for-debug"]
     },
     },
 
 
     /* TODO: remove below flags for strict checking */
     /* TODO: remove below flags for strict checking */