Przeglądaj źródła

typescriptize events

Yuki Takei 2 miesięcy temu
rodzic
commit
61a4c487aa

+ 10 - 5
apps/app/src/server/crowi/index.ts

@@ -19,6 +19,11 @@ import { projectRoot } from '~/server/util/project-dir-utils';
 import { getGrowiVersion } from '~/utils/growi-version';
 import { getGrowiVersion } from '~/utils/growi-version';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
+import ActivityEvent from '../events/activity';
+import AdminEvent from '../events/admin';
+import BookmarkEvent from '../events/bookmark';
+import PageEvent from '../events/page';
+import TagEvent from '../events/tag';
 import UserEvent from '../events/user';
 import UserEvent from '../events/user';
 import type { AccessTokenParser } from '../middlewares/access-token-parser';
 import type { AccessTokenParser } from '../middlewares/access-token-parser';
 import { accessTokenParser } from '../middlewares/access-token-parser';
 import { accessTokenParser } from '../middlewares/access-token-parser';
@@ -242,11 +247,11 @@ class Crowi {
 
 
     this.events = {
     this.events = {
       user: new UserEvent(this),
       user: new UserEvent(this),
-      page: new (require('../events/page'))(this),
-      activity: new (require('../events/activity'))(this),
-      bookmark: new (require('../events/bookmark'))(this),
-      tag: new (require('../events/tag'))(this),
-      admin: new (require('../events/admin'))(this),
+      page: new PageEvent(this),
+      activity: new ActivityEvent(this),
+      bookmark: new BookmarkEvent(this),
+      tag: new TagEvent(this),
+      admin: new AdminEvent(this),
     };
     };
   }
   }
 
 

+ 3 - 7
apps/app/src/server/events/activity.ts

@@ -1,12 +1,8 @@
-import loggerFactory from '~/utils/logger';
+import events from 'node:events';
+import util from 'node:util';
 
 
 import type Crowi from '../crowi';
 import type Crowi from '../crowi';
 
 
-const logger = loggerFactory('growi:events:activity');
-
-const events = require('events');
-const util = require('util');
-
 function ActivityEvent(crowi: Crowi) {
 function ActivityEvent(crowi: Crowi) {
   this.crowi = crowi;
   this.crowi = crowi;
 
 
@@ -14,4 +10,4 @@ function ActivityEvent(crowi: Crowi) {
 }
 }
 util.inherits(ActivityEvent, events.EventEmitter);
 util.inherits(ActivityEvent, events.EventEmitter);
 
 
-module.exports = ActivityEvent;
+export default ActivityEvent;

+ 10 - 8
apps/app/src/server/events/admin.ts

@@ -1,12 +1,14 @@
-const events = require('events');
-const util = require('util');
+import EventEmitter from 'node:events';
 
 
-/** @param {import('~/server/crowi').default} crowi Crowi instance */
-function AdminEvent(crowi) {
-  this.crowi = crowi;
+import type Crowi from '../crowi';
 
 
-  events.EventEmitter.call(this);
+class AdminEvent extends EventEmitter {
+  crowi: Crowi;
+
+  constructor(crowi: Crowi) {
+    super();
+    this.crowi = crowi;
+  }
 }
 }
-util.inherits(AdminEvent, events.EventEmitter);
 
 
-module.exports = AdminEvent;
+export default AdminEvent;

+ 18 - 11
apps/app/src/server/events/bookmark.ts

@@ -1,15 +1,22 @@
-const events = require('events');
-const util = require('util');
+import EventEmitter from 'node:events';
 
 
-/** @param {import('~/server/crowi').default} crowi Crowi instance */
-function BookmarkEvent(crowi) {
-  this.crowi = crowi;
+import type Crowi from '../crowi';
 
 
-  events.EventEmitter.call(this);
-}
-util.inherits(BookmarkEvent, events.EventEmitter);
+class BookmarkEvent extends EventEmitter {
+  crowi: Crowi;
+
+  constructor(crowi: Crowi) {
+    super();
+    this.crowi = crowi;
+  }
 
 
-BookmarkEvent.prototype.onCreate = (bookmark) => {};
-BookmarkEvent.prototype.onDelete = (bookmark) => {};
+  onCreate(_bookmark: unknown): void {
+    // placeholder for event handler
+  }
+
+  onDelete(_bookmark: unknown): void {
+    // placeholder for event handler
+  }
+}
 
 
-module.exports = BookmarkEvent;
+export default BookmarkEvent;

+ 28 - 21
apps/app/src/server/events/page.ts

@@ -1,28 +1,35 @@
-import events from 'events';
-import util from 'util';
+import EventEmitter from 'node:events';
+import type { IPage, IUserHasId } from '@growi/core';
 
 
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
+import type Crowi from '../crowi';
+
 const logger = loggerFactory('growi:events:page');
 const logger = loggerFactory('growi:events:page');
 
 
-/** @param {import('~/server/crowi').default} crowi Crowi instance */
-function PageEvent(crowi) {
-  this.crowi = crowi;
+class PageEvent extends EventEmitter {
+  crowi: Crowi;
+
+  constructor(crowi: Crowi) {
+    super();
+    this.crowi = crowi;
+  }
+
+  onCreate(_page: IPage, _user: IUserHasId): void {
+    logger.debug('onCreate event fired');
+  }
 
 
-  events.EventEmitter.call(this);
+  onUpdate(_page: IPage, _user: IUserHasId): void {
+    logger.debug('onUpdate event fired');
+  }
+
+  onCreateMany(_pages: IPage[], _user: IUserHasId): void {
+    logger.debug('onCreateMany event fired');
+  }
+
+  onAddSeenUsers(_pages: IPage[], _user: IUserHasId): void {
+    logger.debug('onAddSeenUsers event fired');
+  }
 }
 }
-util.inherits(PageEvent, events.EventEmitter);
-
-PageEvent.prototype.onCreate = (page, user) => {
-  logger.debug('onCreate event fired');
-};
-PageEvent.prototype.onUpdate = (page, user) => {
-  logger.debug('onUpdate event fired');
-};
-PageEvent.prototype.onCreateMany = (pages, user) => {
-  logger.debug('onCreateMany event fired');
-};
-PageEvent.prototype.onAddSeenUsers = (pages, user) => {
-  logger.debug('onAddSeenUsers event fired');
-};
-module.exports = PageEvent;
+
+export default PageEvent;

+ 15 - 10
apps/app/src/server/events/tag.ts

@@ -1,14 +1,19 @@
-const events = require('events');
-const util = require('util');
+import EventEmitter from 'node:events';
+import type { ITag } from '@growi/core';
 
 
-/** @param {import('~/server/crowi').default} crowi Crowi instance */
-function TagEvent(crowi) {
-  this.crowi = crowi;
+import type Crowi from '../crowi';
 
 
-  events.EventEmitter.call(this);
-}
-util.inherits(TagEvent, events.EventEmitter);
+class TagEvent extends EventEmitter {
+  crowi: Crowi;
+
+  constructor(crowi: Crowi) {
+    super();
+    this.crowi = crowi;
+  }
 
 
-TagEvent.prototype.onUpdate = (tag) => {};
+  onUpdate(_tag: ITag): void {
+    // placeholder for event handler
+  }
+}
 
 
-module.exports = TagEvent;
+export default TagEvent;