@linyjs/shared-module-interface

v0.0.18

Published

Shared TypeScript type definitions for linyjs infrastructure modules (mdb, auth, permission)

Readme

@linyjs/shared-module-interface

公共模块的 TypeScript 类型定义包。

概述

本包汇集了 @linyjs/mdb@linyjs/auth@linyjs/permission 等基础设施模块的服务接口和类型定义,使插件开发者只需依赖此包即可获得完整的类型提示,无需单独安装 mongodb@linyjs/mdb@linyjs/auth@linyjs/permission 等包。

安装

npm install --save-dev @linyjs/shared-module-interface

可用类型

mdb 模块

import type { IMongoDBService } from '@linyjs/shared-module-interface';
import type { ObjectId, Db, Collection, Document, Filter } from '@linyjs/shared-module-interface';

⚠️ 本包是纯类型包,所有导出均为 export typeimport { ObjectId } 这样的值导入不可行,运行时请通过 mongoDBService.ObjectId 获取构造器。

| 类型 | 说明 | |------|------| | IMongoDBService | MongoDB 服务接口(由 @linyjs/mdb 实现) | | ObjectId, Db, Collection, Document, Filter ... | mongodb 全部类型重新导出 |

auth 模块

import type { IUserService, IAuthUser, ISafeUser, IAuthResult, IJwtPayload } from '@linyjs/shared-module-interface';

| 类型 | 说明 | |------|------| | IUserService | 用户管理服务接口(由 @linyjs/auth 实现,serviceTag: authServer.userService) | | IAuthUser | 完整用户类型(含密码哈希,仅限内部使用) | | ISafeUser | 安全用户类型(不含密码哈希) | | IAuthResult | 认证结果 | | IJwtPayload | JWT Payload |

permission 模块

import type { IPermissionService, IPermissionPolicy, IPermissionCheckResult, Role } from '@linyjs/shared-module-interface';

| 类型 | 说明 | |------|------| | IPermissionService | 权限服务接口(由 @linyjs/permission 实现) | | IPermissionPolicy | 权限策略 | | IPermissionCheckResult | 权限检查结果 | | Role, PermissionString | 角色和权限字符串类型 |

使用示例

import type { IModule, IServiceDef } from '@linyjs/server-module-interface';
import type { IMongoDBService } from '@linyjs/shared-module-interface';

class ArticleService {
  constructor(private mongoDBService: IMongoDBService) {}

  async getArticleById(id: string) {
    const collection = this.mongoDBService.getCollection('articles');
    // ✅ 通过注入的 service.ObjectId 获取运行时构造器
    return await collection.findOne({
      _id: new this.mongoDBService.ObjectId(id)
    });
  }
}

const articleServiceDef: IServiceDef = {
  serviceTag: 'articleService',
  serviceImpl: ArticleService,
  dependencies: ['mdb.mongoDBService'],
  meta: { usageType: 'normal_service' }
};

export const myServerModule: IModule = {
  name: 'myServer',
  moduleDependencies: ['mdb'],
  serviceDefs: [articleServiceDef]
};

模块一览

| 子模块 | 服务接口 | serviceTag | 来源模块 | |--------|---------|------------|---------| | mdb | IMongoDBService | mdb.mongoDBService | @linyjs/mdb | | auth | IUserService | authServer.userService | @linyjs/auth | | permission | IPermissionService | permissionServer.permissionService | @linyjs/permission |