byzip-v2-sdk 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,109 @@
1
+ # ByZip V2 SDK
2
+
3
+ 분양모음집 V2 프로젝트의 프론트엔드와 백엔드 간 타입 통일을 위한 TypeScript SDK입니다.
4
+
5
+ ## 설치
6
+
7
+ ```bash
8
+ npm install byzip-v2-sdk
9
+ ```
10
+
11
+ ## 사용법
12
+
13
+ ### 기본 import
14
+
15
+ ```typescript
16
+ import {
17
+ LoginRequestDto,
18
+ LoginResponseDto,
19
+ GetMeResponseDto,
20
+ UpdateMeRequestDto,
21
+ } from "byzip-v2-sdk";
22
+ ```
23
+
24
+ ### 사용 예제
25
+
26
+ #### 로그인 타입 사용
27
+
28
+ ```typescript
29
+ import { LoginRequestDto, LoginResponseDto } from "byzip-v2-sdk";
30
+
31
+ // 로그인 요청
32
+ const loginRequest: LoginRequestDto = {
33
+ username: "user@example.com",
34
+ password: "password123",
35
+ rememberMe: true,
36
+ };
37
+
38
+ // 로그인 응답 타입 지정
39
+ const handleLoginResponse = (response: LoginResponseDto) => {
40
+ console.log("Access Token:", response.accessToken);
41
+ console.log("User Info:", response.user);
42
+ };
43
+ ```
44
+
45
+ #### 사용자 프로필 타입 사용
46
+
47
+ ```typescript
48
+ import { GetMeResponseDto, UpdateMeRequestDto } from "byzip-v2-sdk";
49
+
50
+ // 프로필 조회 응답 타입 지정
51
+ const handleProfileResponse = (response: GetMeResponseDto) => {
52
+ console.log("Profile:", response.profile);
53
+ console.log("Permissions:", response.permissions);
54
+ };
55
+
56
+ // 프로필 업데이트 요청
57
+ const updateRequest: UpdateMeRequestDto = {
58
+ fullName: "홍길동",
59
+ phoneNumber: "010-1234-5678",
60
+ settings: {
61
+ language: "ko",
62
+ notifications: {
63
+ email: true,
64
+ push: false,
65
+ },
66
+ },
67
+ };
68
+ ```
69
+
70
+ ## 타입 정의
71
+
72
+ ### Users 모듈
73
+
74
+ #### Login DTO
75
+
76
+ - `LoginRequestDto`: 로그인 요청
77
+ - `LoginResponseDto`: 로그인 응답
78
+ - `LoginErrorDto`: 로그인 에러 응답
79
+ - `RefreshTokenRequestDto`: 토큰 갱신 요청
80
+ - `RefreshTokenResponseDto`: 토큰 갱신 응답
81
+
82
+ #### Me (사용자 프로필) DTO
83
+
84
+ - `UserProfileDto`: 사용자 기본 정보
85
+ - `GetMeResponseDto`: 사용자 프로필 조회 응답
86
+ - `UpdateMeRequestDto`: 사용자 프로필 업데이트 요청
87
+ - `UpdateMeResponseDto`: 사용자 프로필 업데이트 응답
88
+ - `ChangePasswordRequestDto`: 비밀번호 변경 요청
89
+ - `ChangePasswordResponseDto`: 비밀번호 변경 응답
90
+ - `DeleteAccountRequestDto`: 계정 삭제 요청
91
+ - `DeleteAccountResponseDto`: 계정 삭제 응답
92
+
93
+ ## 개발
94
+
95
+ ### 빌드
96
+
97
+ ```bash
98
+ npm run build
99
+ ```
100
+
101
+ ### 배포
102
+
103
+ ```bash
104
+ npm publish
105
+ ```
106
+
107
+ ## 라이선스
108
+
109
+ ISC
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ByZip V2 SDK
3
+ * 프론트엔드와 백엔드 간 타입 통일을 위한 TypeScript SDK
4
+ */
5
+ export * from "./users";
6
+ export declare const SDK_VERSION = "1.0.0";
7
+ export declare const SDK_INFO: {
8
+ readonly name: "byzip-v2-sdk";
9
+ readonly version: "1.0.0";
10
+ readonly description: "분양모음집 V2 SDK - 프론트엔드와 백엔드 간 타입 통일을 위한 TypeScript SDK";
11
+ };
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * ByZip V2 SDK
4
+ * 프론트엔드와 백엔드 간 타입 통일을 위한 TypeScript SDK
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.SDK_INFO = exports.SDK_VERSION = void 0;
22
+ // Users 모듈
23
+ __exportStar(require("./users"), exports);
24
+ // SDK 버전 정보
25
+ exports.SDK_VERSION = "1.0.0";
26
+ // SDK 정보
27
+ exports.SDK_INFO = {
28
+ name: "byzip-v2-sdk",
29
+ version: exports.SDK_VERSION,
30
+ description: "분양모음집 V2 SDK - 프론트엔드와 백엔드 간 타입 통일을 위한 TypeScript SDK",
31
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Users 모듈 타입 정의 export
3
+ */
4
+ export * from "./login.dto";
5
+ export * from "./me.dto";
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Users 모듈 타입 정의 export
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ // Login 관련 타입들
21
+ __exportStar(require("./login.dto"), exports);
22
+ // Me (사용자 프로필) 관련 타입들
23
+ __exportStar(require("./me.dto"), exports);
@@ -0,0 +1,55 @@
1
+ /**
2
+ * 사용자 로그인 관련 DTO 정의
3
+ */
4
+ export interface LoginRequestDto {
5
+ /** 이메일 또는 사용자명 */
6
+ username: string;
7
+ /** 비밀번호 */
8
+ password: string;
9
+ /** 자동 로그인 여부 */
10
+ rememberMe?: boolean;
11
+ }
12
+ export interface LoginResponseDto {
13
+ /** 인증 토큰 */
14
+ accessToken: string;
15
+ /** 리프레시 토큰 */
16
+ refreshToken: string;
17
+ /** 토큰 만료 시간 (Unix timestamp) */
18
+ expiresAt: number;
19
+ /** 사용자 기본 정보 */
20
+ user: {
21
+ /** 사용자 ID */
22
+ id: number;
23
+ /** 사용자명 */
24
+ username: string;
25
+ /** 이메일 */
26
+ email: string;
27
+ /** 프로필 이미지 URL */
28
+ profileImageUrl?: string;
29
+ };
30
+ }
31
+ export interface LoginErrorDto {
32
+ /** 에러 코드 */
33
+ code: "INVALID_CREDENTIALS" | "ACCOUNT_LOCKED" | "ACCOUNT_NOT_VERIFIED" | "SERVER_ERROR";
34
+ /** 에러 메시지 */
35
+ message: string;
36
+ /** 추가 정보 */
37
+ details?: {
38
+ /** 계정 잠금 해제 시간 (Unix timestamp) */
39
+ unlockAt?: number;
40
+ /** 재시도 가능 횟수 */
41
+ remainingAttempts?: number;
42
+ };
43
+ }
44
+ export interface RefreshTokenRequestDto {
45
+ /** 리프레시 토큰 */
46
+ refreshToken: string;
47
+ }
48
+ export interface RefreshTokenResponseDto {
49
+ /** 새로운 액세스 토큰 */
50
+ accessToken: string;
51
+ /** 새로운 리프레시 토큰 */
52
+ refreshToken: string;
53
+ /** 토큰 만료 시간 (Unix timestamp) */
54
+ expiresAt: number;
55
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * 사용자 로그인 관련 DTO 정의
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,135 @@
1
+ /**
2
+ * 사용자 프로필 관련 DTO 정의
3
+ */
4
+ export interface UserProfileDto {
5
+ /** 사용자 ID */
6
+ id: number;
7
+ /** 사용자명 */
8
+ username: string;
9
+ /** 이메일 */
10
+ email: string;
11
+ /** 전체 이름 */
12
+ fullName?: string;
13
+ /** 전화번호 */
14
+ phoneNumber?: string;
15
+ /** 프로필 이미지 URL */
16
+ profileImageUrl?: string;
17
+ /** 생년월일 */
18
+ birthDate?: string;
19
+ /** 성별 */
20
+ gender?: "MALE" | "FEMALE" | "OTHER";
21
+ /** 계정 생성일 */
22
+ createdAt: string;
23
+ /** 마지막 업데이트일 */
24
+ updatedAt: string;
25
+ /** 계정 상태 */
26
+ status: "ACTIVE" | "INACTIVE" | "SUSPENDED" | "PENDING_VERIFICATION";
27
+ /** 이메일 인증 여부 */
28
+ emailVerified: boolean;
29
+ /** 전화번호 인증 여부 */
30
+ phoneVerified: boolean;
31
+ }
32
+ export interface GetMeResponseDto {
33
+ /** 사용자 프로필 정보 */
34
+ profile: UserProfileDto;
35
+ /** 사용자 권한 */
36
+ permissions: string[];
37
+ /** 사용자 역할 */
38
+ roles: string[];
39
+ /** 구독 정보 */
40
+ subscription?: {
41
+ /** 구독 플랜 */
42
+ plan: "FREE" | "PREMIUM" | "ENTERPRISE";
43
+ /** 구독 시작일 */
44
+ startDate: string;
45
+ /** 구독 종료일 */
46
+ endDate?: string;
47
+ /** 구독 상태 */
48
+ status: "ACTIVE" | "EXPIRED" | "CANCELLED";
49
+ };
50
+ /** 설정 정보 */
51
+ settings: {
52
+ /** 언어 설정 */
53
+ language: string;
54
+ /** 시간대 설정 */
55
+ timezone: string;
56
+ /** 알림 설정 */
57
+ notifications: {
58
+ /** 이메일 알림 */
59
+ email: boolean;
60
+ /** 푸시 알림 */
61
+ push: boolean;
62
+ /** SMS 알림 */
63
+ sms: boolean;
64
+ };
65
+ /** 개인정보 설정 */
66
+ privacy: {
67
+ /** 프로필 공개 여부 */
68
+ profileVisible: boolean;
69
+ /** 온라인 상태 표시 여부 */
70
+ showOnlineStatus: boolean;
71
+ };
72
+ };
73
+ }
74
+ export interface UpdateMeRequestDto {
75
+ /** 전체 이름 */
76
+ fullName?: string;
77
+ /** 전화번호 */
78
+ phoneNumber?: string;
79
+ /** 프로필 이미지 URL */
80
+ profileImageUrl?: string;
81
+ /** 생년월일 */
82
+ birthDate?: string;
83
+ /** 성별 */
84
+ gender?: "MALE" | "FEMALE" | "OTHER";
85
+ /** 설정 정보 (부분 업데이트 가능) */
86
+ settings?: {
87
+ /** 언어 설정 */
88
+ language?: string;
89
+ /** 시간대 설정 */
90
+ timezone?: string;
91
+ /** 알림 설정 */
92
+ notifications?: {
93
+ email?: boolean;
94
+ push?: boolean;
95
+ sms?: boolean;
96
+ };
97
+ /** 개인정보 설정 */
98
+ privacy?: {
99
+ profileVisible?: boolean;
100
+ showOnlineStatus?: boolean;
101
+ };
102
+ };
103
+ }
104
+ export interface UpdateMeResponseDto {
105
+ /** 업데이트된 사용자 프로필 정보 */
106
+ profile: UserProfileDto;
107
+ /** 업데이트 성공 메시지 */
108
+ message: string;
109
+ }
110
+ export interface ChangePasswordRequestDto {
111
+ /** 현재 비밀번호 */
112
+ currentPassword: string;
113
+ /** 새 비밀번호 */
114
+ newPassword: string;
115
+ /** 새 비밀번호 확인 */
116
+ confirmPassword: string;
117
+ }
118
+ export interface ChangePasswordResponseDto {
119
+ /** 성공 메시지 */
120
+ message: string;
121
+ /** 새 토큰 발급 여부 */
122
+ tokenRefreshRequired: boolean;
123
+ }
124
+ export interface DeleteAccountRequestDto {
125
+ /** 비밀번호 확인 */
126
+ password: string;
127
+ /** 삭제 사유 */
128
+ reason?: string;
129
+ }
130
+ export interface DeleteAccountResponseDto {
131
+ /** 성공 메시지 */
132
+ message: string;
133
+ /** 계정 삭제 예정일 (Unix timestamp) */
134
+ scheduledDeletionDate: number;
135
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * 사용자 프로필 관련 DTO 정의
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "byzip-v2-sdk",
3
+ "version": "1.0.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "prepublishOnly": "npm run build",
12
+ "test": "echo \"Error: no test specified\" && exit 1"
13
+ },
14
+ "keywords": [
15
+ "byzip",
16
+ "byzip-v2-sdk",
17
+ "typescript",
18
+ "dto",
19
+ "types"
20
+ ],
21
+ "author": "",
22
+ "license": "ISC",
23
+ "description": "분양모음집 V2 SDK - 프론트엔드와 백엔드 간 타입 통일을 위한 TypeScript SDK",
24
+ "devDependencies": {
25
+ "typescript": "^5.0.0"
26
+ }
27
+ }