dooring-core-domain 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,205 @@
1
+ # @dooring/core-domain
2
+
3
+ Dooring 프로젝트의 핵심 도메인 모델들을 정의한 npm 패키지입니다.
4
+
5
+ ## 설치
6
+
7
+ ```bash
8
+ npm install @dooring/core-domain
9
+ # 또는
10
+ yarn add @dooring/core-domain
11
+ ```
12
+
13
+ ## 사용법
14
+
15
+ ### 기본 사용법
16
+
17
+ ```typescript
18
+ import { User, UserRole, Project, ProjectStatus } from '@dooring/core-domain';
19
+
20
+ // User 객체 생성
21
+ const user: User = {
22
+ id: 'user-123',
23
+ email: 'user@example.com',
24
+ username: 'johndoe',
25
+ firstName: 'John',
26
+ lastName: 'Doe',
27
+ isActive: true,
28
+ createdAt: new Date(),
29
+ updatedAt: new Date(),
30
+ role: UserRole.USER,
31
+ preferences: {
32
+ language: 'ko',
33
+ timezone: 'Asia/Seoul',
34
+ notifications: {
35
+ email: true,
36
+ push: true,
37
+ sms: false,
38
+ marketing: false
39
+ },
40
+ theme: 'auto'
41
+ }
42
+ };
43
+
44
+ // Project 객체 생성
45
+ const project: Project = {
46
+ id: 'project-456',
47
+ name: 'My Awesome Project',
48
+ description: 'This is a great project',
49
+ ownerId: 'user-123',
50
+ collaborators: [],
51
+ status: ProjectStatus.ACTIVE,
52
+ visibility: 'public',
53
+ tags: ['web', 'react'],
54
+ createdAt: new Date(),
55
+ updatedAt: new Date(),
56
+ settings: {
57
+ allowComments: true,
58
+ allowVersioning: true,
59
+ autoSave: true,
60
+ maxCollaborators: 10,
61
+ retentionPolicy: {
62
+ keepVersions: 5,
63
+ autoArchiveAfterDays: 365
64
+ }
65
+ }
66
+ };
67
+ ```
68
+
69
+ ### 타입 가져오기
70
+
71
+ ```typescript
72
+ // User 관련 타입들
73
+ import {
74
+ User,
75
+ UserRole,
76
+ UserPreferences,
77
+ NotificationSettings,
78
+ CreateUserData,
79
+ UpdateUserData,
80
+ UserFilter
81
+ } from '@dooring/core-domain';
82
+
83
+ // Project 관련 타입들
84
+ import {
85
+ Project,
86
+ ProjectStatus,
87
+ ProjectVisibility,
88
+ CollaboratorRole,
89
+ ProjectPermission,
90
+ CreateProjectData,
91
+ UpdateProjectData,
92
+ ProjectFilter
93
+ } from '@dooring/core-domain';
94
+
95
+ // 공통 타입들
96
+ import {
97
+ BaseEntity,
98
+ PaginatedResult,
99
+ ApiResponse,
100
+ SearchOptions
101
+ } from '@dooring/core-domain';
102
+ ```
103
+
104
+ ## API 문서
105
+
106
+ ### User 모델
107
+
108
+ #### User 인터페이스
109
+ 사용자 정보를 표현하는 핵심 엔티티입니다.
110
+
111
+ ```typescript
112
+ interface User {
113
+ id: string; // 사용자 고유 ID
114
+ email: string; // 이메일 주소
115
+ username: string; // 사용자명
116
+ firstName?: string; // 이름 (선택사항)
117
+ lastName?: string; // 성 (선택사항)
118
+ avatar?: string; // 프로필 이미지 URL (선택사항)
119
+ isActive: boolean; // 활성 상태
120
+ createdAt: Date; // 생성일
121
+ updatedAt: Date; // 수정일
122
+ lastLoginAt?: Date; // 마지막 로그인 시간 (선택사항)
123
+ role: UserRole; // 사용자 역할
124
+ preferences: UserPreferences; // 사용자 설정
125
+ }
126
+ ```
127
+
128
+ #### UserRole 열거형
129
+ ```typescript
130
+ enum UserRole {
131
+ ADMIN = 'admin', // 관리자
132
+ USER = 'user', // 일반 사용자
133
+ MODERATOR = 'moderator', // 중재자
134
+ GUEST = 'guest' // 게스트
135
+ }
136
+ ```
137
+
138
+ ### Project 모델
139
+
140
+ #### Project 인터페이스
141
+ 프로젝트 정보를 표현하는 핵심 엔티티입니다.
142
+
143
+ ```typescript
144
+ interface Project {
145
+ id: string; // 프로젝트 고유 ID
146
+ name: string; // 프로젝트명
147
+ description?: string; // 설명 (선택사항)
148
+ ownerId: string; // 소유자 ID
149
+ collaborators: ProjectCollaborator[]; // 협업자 목록
150
+ status: ProjectStatus; // 프로젝트 상태
151
+ visibility: ProjectVisibility; // 가시성
152
+ tags: string[]; // 태그 목록
153
+ createdAt: Date; // 생성일
154
+ updatedAt: Date; // 수정일
155
+ settings: ProjectSettings; // 프로젝트 설정
156
+ }
157
+ ```
158
+
159
+ #### ProjectStatus 열거형
160
+ ```typescript
161
+ enum ProjectStatus {
162
+ DRAFT = 'draft', // 초안
163
+ ACTIVE = 'active', // 활성
164
+ ARCHIVED = 'archived', // 보관됨
165
+ DELETED = 'deleted' // 삭제됨
166
+ }
167
+ ```
168
+
169
+ ## 개발
170
+
171
+ ### 의존성 설치
172
+ ```bash
173
+ npm install
174
+ ```
175
+
176
+ ### 빌드
177
+ ```bash
178
+ npm run build
179
+ ```
180
+
181
+ ### 개발 모드 (watch)
182
+ ```bash
183
+ npm run dev
184
+ ```
185
+
186
+ ### 정리
187
+ ```bash
188
+ npm run clean
189
+ ```
190
+
191
+ ## 라이선스
192
+
193
+ MIT License
194
+
195
+ ## 기여하기
196
+
197
+ 1. Fork the repository
198
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
199
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
200
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
201
+ 5. Open a Pull Request
202
+
203
+ ## 지원
204
+
205
+ 문제가 있거나 제안사항이 있으시면 [Issues](https://github.com/dooring/core-domain/issues)에 등록해 주세요.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @dooring/core-domain 패키지 메인 진입점
3
+ * 모든 도메인 모델과 타입을 export합니다.
4
+ */
5
+ export * from './models/User';
6
+ export * from './models/Project';
7
+ export * from './types/common';
8
+ export declare const VERSION = "1.0.0";
9
+ export declare const PACKAGE_NAME = "@dooring/core-domain";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,eAAe,CAAC;AAG9B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,YAAY,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * @dooring/core-domain 패키지 메인 진입점
4
+ * 모든 도메인 모델과 타입을 export합니다.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.PACKAGE_NAME = exports.VERSION = void 0;
22
+ // User 관련 모델들
23
+ __exportStar(require("./models/User"), exports);
24
+ // Project 관련 모델들
25
+ __exportStar(require("./models/Project"), exports);
26
+ // 공통 타입들
27
+ __exportStar(require("./types/common"), exports);
28
+ // 버전 정보
29
+ exports.VERSION = '1.0.0';
30
+ exports.PACKAGE_NAME = '@dooring/core-domain';
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,cAAc;AACd,gDAA8B;AAE9B,iBAAiB;AACjB,mDAAiC;AAEjC,SAAS;AACT,iDAA+B;AAE/B,QAAQ;AACK,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,YAAY,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Project 도메인 모델
3
+ * 프로젝트 정보를 표현하는 핵심 엔티티
4
+ */
5
+ export interface Project {
6
+ id: string;
7
+ name: string;
8
+ description?: string;
9
+ ownerId: string;
10
+ collaborators: ProjectCollaborator[];
11
+ status: ProjectStatus;
12
+ visibility: ProjectVisibility;
13
+ tags: string[];
14
+ createdAt: Date;
15
+ updatedAt: Date;
16
+ settings: ProjectSettings;
17
+ }
18
+ /**
19
+ * 프로젝트 상태
20
+ */
21
+ export declare enum ProjectStatus {
22
+ DRAFT = "draft",
23
+ ACTIVE = "active",
24
+ ARCHIVED = "archived",
25
+ DELETED = "deleted"
26
+ }
27
+ /**
28
+ * 프로젝트 가시성
29
+ */
30
+ export declare enum ProjectVisibility {
31
+ PUBLIC = "public",
32
+ PRIVATE = "private",
33
+ SHARED = "shared"
34
+ }
35
+ /**
36
+ * 프로젝트 협업자 정보
37
+ */
38
+ export interface ProjectCollaborator {
39
+ userId: string;
40
+ role: CollaboratorRole;
41
+ joinedAt: Date;
42
+ permissions: ProjectPermission[];
43
+ }
44
+ /**
45
+ * 협업자 역할
46
+ */
47
+ export declare enum CollaboratorRole {
48
+ OWNER = "owner",
49
+ ADMIN = "admin",
50
+ EDITOR = "editor",
51
+ VIEWER = "viewer"
52
+ }
53
+ /**
54
+ * 프로젝트 권한
55
+ */
56
+ export declare enum ProjectPermission {
57
+ READ = "read",
58
+ WRITE = "write",
59
+ DELETE = "delete",
60
+ MANAGE_COLLABORATORS = "manage_collaborators",
61
+ MANAGE_SETTINGS = "manage_settings"
62
+ }
63
+ /**
64
+ * 프로젝트 설정
65
+ */
66
+ export interface ProjectSettings {
67
+ allowComments: boolean;
68
+ allowVersioning: boolean;
69
+ autoSave: boolean;
70
+ maxCollaborators: number;
71
+ retentionPolicy: RetentionPolicy;
72
+ }
73
+ /**
74
+ * 보존 정책
75
+ */
76
+ export interface RetentionPolicy {
77
+ keepVersions: number;
78
+ autoArchiveAfterDays: number;
79
+ autoDeleteAfterDays?: number;
80
+ }
81
+ /**
82
+ * 프로젝트 생성 시 필요한 데이터
83
+ */
84
+ export interface CreateProjectData {
85
+ name: string;
86
+ description?: string;
87
+ ownerId: string;
88
+ visibility?: ProjectVisibility;
89
+ tags?: string[];
90
+ settings?: Partial<ProjectSettings>;
91
+ }
92
+ /**
93
+ * 프로젝트 업데이트 시 사용할 데이터
94
+ */
95
+ export interface UpdateProjectData {
96
+ name?: string;
97
+ description?: string;
98
+ status?: ProjectStatus;
99
+ visibility?: ProjectVisibility;
100
+ tags?: string[];
101
+ settings?: Partial<ProjectSettings>;
102
+ }
103
+ /**
104
+ * 프로젝트 검색/필터링을 위한 조건
105
+ */
106
+ export interface ProjectFilter {
107
+ ownerId?: string;
108
+ status?: ProjectStatus;
109
+ visibility?: ProjectVisibility;
110
+ tags?: string[];
111
+ createdAt?: {
112
+ from?: Date;
113
+ to?: Date;
114
+ };
115
+ search?: string;
116
+ }
117
+ //# sourceMappingURL=Project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../src/models/Project.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;CAC7B;AAED;;GAEG;AACH,oBAAY,aAAa;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACtB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,oBAAY,gBAAgB;IACxB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;CACpB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IACzB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,oBAAoB,yBAAyB;IAC7C,eAAe,oBAAoB;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,EAAE,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProjectPermission = exports.CollaboratorRole = exports.ProjectVisibility = exports.ProjectStatus = void 0;
4
+ /**
5
+ * 프로젝트 상태
6
+ */
7
+ var ProjectStatus;
8
+ (function (ProjectStatus) {
9
+ ProjectStatus["DRAFT"] = "draft";
10
+ ProjectStatus["ACTIVE"] = "active";
11
+ ProjectStatus["ARCHIVED"] = "archived";
12
+ ProjectStatus["DELETED"] = "deleted";
13
+ })(ProjectStatus || (exports.ProjectStatus = ProjectStatus = {}));
14
+ /**
15
+ * 프로젝트 가시성
16
+ */
17
+ var ProjectVisibility;
18
+ (function (ProjectVisibility) {
19
+ ProjectVisibility["PUBLIC"] = "public";
20
+ ProjectVisibility["PRIVATE"] = "private";
21
+ ProjectVisibility["SHARED"] = "shared";
22
+ })(ProjectVisibility || (exports.ProjectVisibility = ProjectVisibility = {}));
23
+ /**
24
+ * 협업자 역할
25
+ */
26
+ var CollaboratorRole;
27
+ (function (CollaboratorRole) {
28
+ CollaboratorRole["OWNER"] = "owner";
29
+ CollaboratorRole["ADMIN"] = "admin";
30
+ CollaboratorRole["EDITOR"] = "editor";
31
+ CollaboratorRole["VIEWER"] = "viewer";
32
+ })(CollaboratorRole || (exports.CollaboratorRole = CollaboratorRole = {}));
33
+ /**
34
+ * 프로젝트 권한
35
+ */
36
+ var ProjectPermission;
37
+ (function (ProjectPermission) {
38
+ ProjectPermission["READ"] = "read";
39
+ ProjectPermission["WRITE"] = "write";
40
+ ProjectPermission["DELETE"] = "delete";
41
+ ProjectPermission["MANAGE_COLLABORATORS"] = "manage_collaborators";
42
+ ProjectPermission["MANAGE_SETTINGS"] = "manage_settings";
43
+ })(ProjectPermission || (exports.ProjectPermission = ProjectPermission = {}));
44
+ //# sourceMappingURL=Project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Project.js","sourceRoot":"","sources":["../../src/models/Project.ts"],"names":[],"mappings":";;;AAkBA;;GAEG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,gCAAe,CAAA;IACf,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;AACvB,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAED;;GAEG;AACH,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,sCAAiB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAYD;;GAEG;AACH,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,mCAAe,CAAA;IACf,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACrB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AAED;;GAEG;AACH,IAAY,iBAMX;AAND,WAAY,iBAAiB;IACzB,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,sCAAiB,CAAA;IACjB,kEAA6C,CAAA;IAC7C,wDAAmC,CAAA;AACvC,CAAC,EANW,iBAAiB,iCAAjB,iBAAiB,QAM5B"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * User 도메인 모델
3
+ * 사용자 정보를 표현하는 핵심 엔티티
4
+ */
5
+ export interface User {
6
+ id: string;
7
+ email: string;
8
+ username: string;
9
+ firstName?: string;
10
+ lastName?: string;
11
+ avatar?: string;
12
+ isActive: boolean;
13
+ createdAt: Date;
14
+ updatedAt: Date;
15
+ lastLoginAt?: Date;
16
+ role: UserRole;
17
+ preferences: UserPreferences;
18
+ }
19
+ /**
20
+ * 사용자 역할 정의
21
+ */
22
+ export declare enum UserRole {
23
+ ADMIN = "admin",
24
+ USER = "user",
25
+ MODERATOR = "moderator",
26
+ GUEST = "guest"
27
+ }
28
+ /**
29
+ * 사용자 설정 정보
30
+ */
31
+ export interface UserPreferences {
32
+ language: string;
33
+ timezone: string;
34
+ notifications: NotificationSettings;
35
+ theme: 'light' | 'dark' | 'auto';
36
+ }
37
+ /**
38
+ * 알림 설정
39
+ */
40
+ export interface NotificationSettings {
41
+ email: boolean;
42
+ push: boolean;
43
+ sms: boolean;
44
+ marketing: boolean;
45
+ }
46
+ /**
47
+ * User 생성 시 필요한 데이터
48
+ */
49
+ export interface CreateUserData {
50
+ email: string;
51
+ username: string;
52
+ firstName?: string;
53
+ lastName?: string;
54
+ password: string;
55
+ role?: UserRole;
56
+ }
57
+ /**
58
+ * User 업데이트 시 사용할 데이터
59
+ */
60
+ export interface UpdateUserData {
61
+ username?: string;
62
+ firstName?: string;
63
+ lastName?: string;
64
+ avatar?: string;
65
+ isActive?: boolean;
66
+ role?: UserRole;
67
+ preferences?: Partial<UserPreferences>;
68
+ }
69
+ /**
70
+ * User 검색/필터링을 위한 조건
71
+ */
72
+ export interface UserFilter {
73
+ role?: UserRole;
74
+ isActive?: boolean;
75
+ createdAt?: {
76
+ from?: Date;
77
+ to?: Date;
78
+ };
79
+ search?: string;
80
+ }
81
+ //# sourceMappingURL=User.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,IAAI;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,eAAe,CAAC;CAChC;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,KAAK,UAAU;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,oBAAoB,CAAC;IACpC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,EAAE,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserRole = void 0;
4
+ /**
5
+ * 사용자 역할 정의
6
+ */
7
+ var UserRole;
8
+ (function (UserRole) {
9
+ UserRole["ADMIN"] = "admin";
10
+ UserRole["USER"] = "user";
11
+ UserRole["MODERATOR"] = "moderator";
12
+ UserRole["GUEST"] = "guest";
13
+ })(UserRole || (exports.UserRole = UserRole = {}));
14
+ //# sourceMappingURL=User.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":";;;AAmBA;;GAEG;AACH,IAAY,QAKX;AALD,WAAY,QAAQ;IAChB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,mCAAuB,CAAA;IACvB,2BAAe,CAAA;AACnB,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * 공통으로 사용되는 타입 정의
3
+ */
4
+ /**
5
+ * 기본 엔티티 인터페이스
6
+ */
7
+ export interface BaseEntity {
8
+ id: string;
9
+ createdAt: Date;
10
+ updatedAt: Date;
11
+ }
12
+ /**
13
+ * 페이지네이션 결과
14
+ */
15
+ export interface PaginatedResult<T> {
16
+ data: T[];
17
+ pagination: PaginationInfo;
18
+ }
19
+ /**
20
+ * 페이지네이션 정보
21
+ */
22
+ export interface PaginationInfo {
23
+ page: number;
24
+ limit: number;
25
+ total: number;
26
+ totalPages: number;
27
+ hasNext: boolean;
28
+ hasPrev: boolean;
29
+ }
30
+ /**
31
+ * 정렬 옵션
32
+ */
33
+ export interface SortOption {
34
+ field: string;
35
+ direction: 'asc' | 'desc';
36
+ }
37
+ /**
38
+ * API 응답 기본 구조
39
+ */
40
+ export interface ApiResponse<T = any> {
41
+ success: boolean;
42
+ data?: T;
43
+ message?: string;
44
+ error?: string;
45
+ timestamp: Date;
46
+ }
47
+ /**
48
+ * API 에러 응답
49
+ */
50
+ export interface ApiError {
51
+ code: string;
52
+ message: string;
53
+ details?: any;
54
+ timestamp: Date;
55
+ }
56
+ /**
57
+ * 검색 옵션
58
+ */
59
+ export interface SearchOptions {
60
+ query?: string;
61
+ filters?: Record<string, any>;
62
+ sort?: SortOption[];
63
+ pagination?: {
64
+ page: number;
65
+ limit: number;
66
+ };
67
+ }
68
+ /**
69
+ * ID 타입 (UUID 또는 숫자)
70
+ */
71
+ export type ID = string | number;
72
+ /**
73
+ * 선택적 필드 타입
74
+ */
75
+ export type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
76
+ /**
77
+ * 필수 필드 타입
78
+ */
79
+ export type RequiredFields<T, K extends keyof T> = T & Required<Pick<T, K>>;
80
+ /**
81
+ * 읽기 전용 타입
82
+ */
83
+ export type Readonly<T> = {
84
+ readonly [P in keyof T]: T[P];
85
+ };
86
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,cAAc,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACtB,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * 공통으로 사용되는 타입 정의
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":";AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "dooring-core-domain",
3
+ "version": "1.0.0",
4
+ "description": "Dooring 프로젝트의 핵심 도메인 모델들을 정의한 npm 패키지",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsc --watch",
13
+ "clean": "rm -rf dist",
14
+ "prepublishOnly": "npm run clean && npm run build"
15
+ },
16
+ "keywords": [
17
+ "dooring",
18
+ "domain",
19
+ "models",
20
+ "typescript",
21
+ "entities"
22
+ ],
23
+ "author": "Dooring Team",
24
+ "license": "MIT",
25
+ "devDependencies": {
26
+ "typescript": "^5.0.0",
27
+ "@types/node": "^20.0.0"
28
+ },
29
+ "peerDependencies": {
30
+ "typescript": ">=4.0.0"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/dooring/core-domain.git"
35
+ },
36
+ "bugs": {
37
+ "url": "https://github.com/dooring/core-domain/issues"
38
+ },
39
+ "homepage": "https://github.com/dooring/core-domain#readme"
40
+ }