@aibrains/shared-types 0.1.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.
Files changed (158) hide show
  1. package/README.md +170 -0
  2. package/dist/index.d.ts +48 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +74 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/mappers/edfi/calendar.mapper.d.ts +158 -0
  7. package/dist/mappers/edfi/calendar.mapper.d.ts.map +1 -0
  8. package/dist/mappers/edfi/calendar.mapper.js +235 -0
  9. package/dist/mappers/edfi/calendar.mapper.js.map +1 -0
  10. package/dist/mappers/edfi/credential.mapper.d.ts +50 -0
  11. package/dist/mappers/edfi/credential.mapper.d.ts.map +1 -0
  12. package/dist/mappers/edfi/credential.mapper.js +123 -0
  13. package/dist/mappers/edfi/credential.mapper.js.map +1 -0
  14. package/dist/mappers/edfi/index.d.ts +10 -0
  15. package/dist/mappers/edfi/index.d.ts.map +1 -0
  16. package/dist/mappers/edfi/index.js +26 -0
  17. package/dist/mappers/edfi/index.js.map +1 -0
  18. package/dist/mappers/edfi/staff.mapper.d.ts +96 -0
  19. package/dist/mappers/edfi/staff.mapper.d.ts.map +1 -0
  20. package/dist/mappers/edfi/staff.mapper.js +138 -0
  21. package/dist/mappers/edfi/staff.mapper.js.map +1 -0
  22. package/dist/mappers/index.d.ts +7 -0
  23. package/dist/mappers/index.d.ts.map +1 -0
  24. package/dist/mappers/index.js +23 -0
  25. package/dist/mappers/index.js.map +1 -0
  26. package/dist/schemas/academics/assignment.schema.d.ts +1463 -0
  27. package/dist/schemas/academics/assignment.schema.d.ts.map +1 -0
  28. package/dist/schemas/academics/assignment.schema.js +195 -0
  29. package/dist/schemas/academics/assignment.schema.js.map +1 -0
  30. package/dist/schemas/academics/attendance.schema.d.ts +762 -0
  31. package/dist/schemas/academics/attendance.schema.d.ts.map +1 -0
  32. package/dist/schemas/academics/attendance.schema.js +250 -0
  33. package/dist/schemas/academics/attendance.schema.js.map +1 -0
  34. package/dist/schemas/academics/classroom.schema.d.ts +742 -0
  35. package/dist/schemas/academics/classroom.schema.d.ts.map +1 -0
  36. package/dist/schemas/academics/classroom.schema.js +164 -0
  37. package/dist/schemas/academics/classroom.schema.js.map +1 -0
  38. package/dist/schemas/academics/course-section.schema.d.ts +388 -0
  39. package/dist/schemas/academics/course-section.schema.d.ts.map +1 -0
  40. package/dist/schemas/academics/course-section.schema.js +128 -0
  41. package/dist/schemas/academics/course-section.schema.js.map +1 -0
  42. package/dist/schemas/academics/course.schema.d.ts +778 -0
  43. package/dist/schemas/academics/course.schema.d.ts.map +1 -0
  44. package/dist/schemas/academics/course.schema.js +207 -0
  45. package/dist/schemas/academics/course.schema.js.map +1 -0
  46. package/dist/schemas/academics/grade.schema.d.ts +848 -0
  47. package/dist/schemas/academics/grade.schema.d.ts.map +1 -0
  48. package/dist/schemas/academics/grade.schema.js +251 -0
  49. package/dist/schemas/academics/grade.schema.js.map +1 -0
  50. package/dist/schemas/academics/index.d.ts +13 -0
  51. package/dist/schemas/academics/index.d.ts.map +1 -0
  52. package/dist/schemas/academics/index.js +29 -0
  53. package/dist/schemas/academics/index.js.map +1 -0
  54. package/dist/schemas/academics/student.schema.d.ts +2891 -0
  55. package/dist/schemas/academics/student.schema.d.ts.map +1 -0
  56. package/dist/schemas/academics/student.schema.js +249 -0
  57. package/dist/schemas/academics/student.schema.js.map +1 -0
  58. package/dist/schemas/common.d.ts +183 -0
  59. package/dist/schemas/common.d.ts.map +1 -0
  60. package/dist/schemas/common.js +126 -0
  61. package/dist/schemas/common.js.map +1 -0
  62. package/dist/schemas/enrollment/enrollment.schema.d.ts +2799 -0
  63. package/dist/schemas/enrollment/enrollment.schema.d.ts.map +1 -0
  64. package/dist/schemas/enrollment/enrollment.schema.js +435 -0
  65. package/dist/schemas/enrollment/enrollment.schema.js.map +1 -0
  66. package/dist/schemas/enrollment/index.d.ts +7 -0
  67. package/dist/schemas/enrollment/index.d.ts.map +1 -0
  68. package/dist/schemas/enrollment/index.js +23 -0
  69. package/dist/schemas/enrollment/index.js.map +1 -0
  70. package/dist/schemas/identity/academic-year.schema.d.ts +546 -0
  71. package/dist/schemas/identity/academic-year.schema.d.ts.map +1 -0
  72. package/dist/schemas/identity/academic-year.schema.js +137 -0
  73. package/dist/schemas/identity/academic-year.schema.js.map +1 -0
  74. package/dist/schemas/identity/auth.schema.d.ts +670 -0
  75. package/dist/schemas/identity/auth.schema.d.ts.map +1 -0
  76. package/dist/schemas/identity/auth.schema.js +126 -0
  77. package/dist/schemas/identity/auth.schema.js.map +1 -0
  78. package/dist/schemas/identity/bell-schedule.schema.d.ts +630 -0
  79. package/dist/schemas/identity/bell-schedule.schema.d.ts.map +1 -0
  80. package/dist/schemas/identity/bell-schedule.schema.js +143 -0
  81. package/dist/schemas/identity/bell-schedule.schema.js.map +1 -0
  82. package/dist/schemas/identity/calendar-date.schema.d.ts +830 -0
  83. package/dist/schemas/identity/calendar-date.schema.d.ts.map +1 -0
  84. package/dist/schemas/identity/calendar-date.schema.js +208 -0
  85. package/dist/schemas/identity/calendar-date.schema.js.map +1 -0
  86. package/dist/schemas/identity/credential.schema.d.ts +472 -0
  87. package/dist/schemas/identity/credential.schema.d.ts.map +1 -0
  88. package/dist/schemas/identity/credential.schema.js +200 -0
  89. package/dist/schemas/identity/credential.schema.js.map +1 -0
  90. package/dist/schemas/identity/department.schema.d.ts +567 -0
  91. package/dist/schemas/identity/department.schema.d.ts.map +1 -0
  92. package/dist/schemas/identity/department.schema.js +113 -0
  93. package/dist/schemas/identity/department.schema.js.map +1 -0
  94. package/dist/schemas/identity/index.d.ts +21 -0
  95. package/dist/schemas/identity/index.d.ts.map +1 -0
  96. package/dist/schemas/identity/index.js +39 -0
  97. package/dist/schemas/identity/index.js.map +1 -0
  98. package/dist/schemas/identity/leave.schema.d.ts +725 -0
  99. package/dist/schemas/identity/leave.schema.d.ts.map +1 -0
  100. package/dist/schemas/identity/leave.schema.js +204 -0
  101. package/dist/schemas/identity/leave.schema.js.map +1 -0
  102. package/dist/schemas/identity/role.schema.d.ts +356 -0
  103. package/dist/schemas/identity/role.schema.d.ts.map +1 -0
  104. package/dist/schemas/identity/role.schema.js +124 -0
  105. package/dist/schemas/identity/role.schema.js.map +1 -0
  106. package/dist/schemas/identity/school-year.schema.d.ts +303 -0
  107. package/dist/schemas/identity/school-year.schema.d.ts.map +1 -0
  108. package/dist/schemas/identity/school-year.schema.js +59 -0
  109. package/dist/schemas/identity/school-year.schema.js.map +1 -0
  110. package/dist/schemas/identity/school.schema.d.ts +844 -0
  111. package/dist/schemas/identity/school.schema.d.ts.map +1 -0
  112. package/dist/schemas/identity/school.schema.js +139 -0
  113. package/dist/schemas/identity/school.schema.js.map +1 -0
  114. package/dist/schemas/identity/security.schema.d.ts +422 -0
  115. package/dist/schemas/identity/security.schema.d.ts.map +1 -0
  116. package/dist/schemas/identity/security.schema.js +151 -0
  117. package/dist/schemas/identity/security.schema.js.map +1 -0
  118. package/dist/schemas/identity/session.schema.d.ts +193 -0
  119. package/dist/schemas/identity/session.schema.d.ts.map +1 -0
  120. package/dist/schemas/identity/session.schema.js +59 -0
  121. package/dist/schemas/identity/session.schema.js.map +1 -0
  122. package/dist/schemas/identity/staff.schema.d.ts +1037 -0
  123. package/dist/schemas/identity/staff.schema.d.ts.map +1 -0
  124. package/dist/schemas/identity/staff.schema.js +251 -0
  125. package/dist/schemas/identity/staff.schema.js.map +1 -0
  126. package/dist/schemas/identity/tenant.schema.d.ts +313 -0
  127. package/dist/schemas/identity/tenant.schema.d.ts.map +1 -0
  128. package/dist/schemas/identity/tenant.schema.js +81 -0
  129. package/dist/schemas/identity/tenant.schema.js.map +1 -0
  130. package/dist/schemas/identity/user.schema.d.ts +921 -0
  131. package/dist/schemas/identity/user.schema.d.ts.map +1 -0
  132. package/dist/schemas/identity/user.schema.js +201 -0
  133. package/dist/schemas/identity/user.schema.js.map +1 -0
  134. package/dist/schemas/index.d.ts +10 -0
  135. package/dist/schemas/index.d.ts.map +1 -0
  136. package/dist/schemas/index.js +26 -0
  137. package/dist/schemas/index.js.map +1 -0
  138. package/dist/validators/academic-year.d.ts +90 -0
  139. package/dist/validators/academic-year.d.ts.map +1 -0
  140. package/dist/validators/academic-year.js +190 -0
  141. package/dist/validators/academic-year.js.map +1 -0
  142. package/dist/validators/date-range.d.ts +142 -0
  143. package/dist/validators/date-range.d.ts.map +1 -0
  144. package/dist/validators/date-range.js +170 -0
  145. package/dist/validators/date-range.js.map +1 -0
  146. package/dist/validators/grade-level.d.ts +80 -0
  147. package/dist/validators/grade-level.d.ts.map +1 -0
  148. package/dist/validators/grade-level.js +157 -0
  149. package/dist/validators/grade-level.js.map +1 -0
  150. package/dist/validators/index.d.ts +10 -0
  151. package/dist/validators/index.d.ts.map +1 -0
  152. package/dist/validators/index.js +26 -0
  153. package/dist/validators/index.js.map +1 -0
  154. package/dist/validators/password.d.ts +60 -0
  155. package/dist/validators/password.d.ts.map +1 -0
  156. package/dist/validators/password.js +81 -0
  157. package/dist/validators/password.js.map +1 -0
  158. package/package.json +50 -0
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Security Schemas - Identity Service
4
+ *
5
+ * Zod schemas for security-related DTOs.
6
+ *
7
+ * ============================================
8
+ * PASSWORD VALIDATION - COGNITO IS SOURCE OF TRUTH
9
+ * ============================================
10
+ *
11
+ * AWS Cognito User Pool password policy (from server/lib/tenant-template/identity-provider.ts):
12
+ * passwordPolicy: {
13
+ * minLength: 8,
14
+ * requireLowercase: true,
15
+ * requireUppercase: true,
16
+ * requireDigits: true,
17
+ * requireSymbols: true // Uses Cognito's default symbol set
18
+ * }
19
+ *
20
+ * Cognito's default special characters when requireSymbols=true:
21
+ * ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` + = -
22
+ *
23
+ * @see https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-policies.html
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.loginHistoryResponseSchema = exports.loginHistoryEntrySchema = exports.revokeAllSessionsResponseSchema = exports.revokeSessionResponseSchema = exports.securitySessionsListSchema = exports.securitySessionSchema = exports.mfaDisableResponseSchema = exports.mfaDisableSchema = exports.mfaVerifyResponseSchema = exports.mfaVerifySchema = exports.mfaSetupResponseSchema = exports.passwordErrorResponseSchema = exports.changePasswordResponseSchema = exports.changePasswordSchema = exports.securityOverviewSchema = exports.deviceTypeSchema = exports.loginStatusSchema = exports.mfaMethodSchema = exports.COGNITO_PASSWORD_REQUIREMENTS = exports.passwordSchema = void 0;
27
+ const zod_1 = require("zod");
28
+ const common_1 = require("../common");
29
+ const password_1 = require("../../validators/password");
30
+ Object.defineProperty(exports, "passwordSchema", { enumerable: true, get: function () { return password_1.passwordSchema; } });
31
+ Object.defineProperty(exports, "COGNITO_PASSWORD_REQUIREMENTS", { enumerable: true, get: function () { return password_1.COGNITO_PASSWORD_REQUIREMENTS; } });
32
+ // ============================================
33
+ // Enums
34
+ // ============================================
35
+ exports.mfaMethodSchema = zod_1.z.enum(['totp', 'sms']);
36
+ exports.loginStatusSchema = zod_1.z.enum(['success', 'failed', 'blocked']);
37
+ exports.deviceTypeSchema = zod_1.z.enum(['desktop', 'mobile', 'tablet', 'unknown']);
38
+ // ============================================
39
+ // Security Overview Schema
40
+ // ============================================
41
+ exports.securityOverviewSchema = zod_1.z.object({
42
+ userId: zod_1.z.string(),
43
+ email: zod_1.z.string().email(),
44
+ mfaEnabled: zod_1.z.boolean(),
45
+ mfaMethod: exports.mfaMethodSchema.optional(),
46
+ lastLoginAt: common_1.isoDateSchema.optional(),
47
+ lastLoginIp: zod_1.z.string().optional(),
48
+ lastLoginDevice: zod_1.z.string().optional(),
49
+ passwordLastChangedAt: common_1.isoDateSchema.optional(),
50
+ accountLocked: zod_1.z.boolean(),
51
+ lockExpiresAt: common_1.isoDateSchema.optional(),
52
+ failedLoginAttempts: zod_1.z.number().int().min(0),
53
+ activeSessions: zod_1.z.number().int().min(0),
54
+ securityScore: zod_1.z.number().int().min(0).max(100),
55
+ recommendations: zod_1.z.array(zod_1.z.string()),
56
+ });
57
+ // ============================================
58
+ // Change Password Schemas
59
+ // ============================================
60
+ exports.changePasswordSchema = zod_1.z.object({
61
+ currentPassword: zod_1.z.string().min(1, 'Current password is required'),
62
+ newPassword: password_1.passwordSchema,
63
+ });
64
+ exports.changePasswordResponseSchema = zod_1.z.object({
65
+ success: zod_1.z.boolean(),
66
+ message: zod_1.z.string(),
67
+ passwordLastChangedAt: common_1.isoDateSchema,
68
+ });
69
+ exports.passwordErrorResponseSchema = zod_1.z.object({
70
+ statusCode: zod_1.z.number(),
71
+ errorCode: zod_1.z.string(),
72
+ message: zod_1.z.string(),
73
+ field: zod_1.z.string().optional(),
74
+ });
75
+ // ============================================
76
+ // MFA Setup Schemas
77
+ // ============================================
78
+ exports.mfaSetupResponseSchema = zod_1.z.object({
79
+ secretKey: zod_1.z.string(),
80
+ qrCodeUrl: zod_1.z.string().url(),
81
+ manualEntryKey: zod_1.z.string(),
82
+ expiresAt: common_1.isoDateSchema,
83
+ });
84
+ exports.mfaVerifySchema = zod_1.z.object({
85
+ code: zod_1.z.string().length(6, 'MFA code must be exactly 6 digits'),
86
+ secretKey: zod_1.z.string().optional(),
87
+ });
88
+ exports.mfaVerifyResponseSchema = zod_1.z.object({
89
+ success: zod_1.z.boolean(),
90
+ backupCodes: zod_1.z.array(zod_1.z.string()).optional(),
91
+ message: zod_1.z.string(),
92
+ });
93
+ exports.mfaDisableSchema = zod_1.z.object({
94
+ password: zod_1.z.string().min(1, 'Password is required'),
95
+ code: zod_1.z.string().optional(),
96
+ });
97
+ exports.mfaDisableResponseSchema = zod_1.z.object({
98
+ success: zod_1.z.boolean(),
99
+ message: zod_1.z.string(),
100
+ });
101
+ // ============================================
102
+ // Session Schemas (Security Context)
103
+ // ============================================
104
+ exports.securitySessionSchema = zod_1.z.object({
105
+ sessionId: zod_1.z.string(),
106
+ createdAt: common_1.isoDateSchema,
107
+ lastActivityAt: common_1.isoDateSchema.optional(),
108
+ expiresAt: common_1.isoDateSchema,
109
+ ipAddress: zod_1.z.string().optional(),
110
+ userAgent: zod_1.z.string().optional(),
111
+ deviceType: exports.deviceTypeSchema.optional(),
112
+ browser: zod_1.z.string().optional(),
113
+ os: zod_1.z.string().optional(),
114
+ location: zod_1.z.string().optional(),
115
+ isCurrent: zod_1.z.boolean(),
116
+ });
117
+ exports.securitySessionsListSchema = zod_1.z.object({
118
+ sessions: zod_1.z.array(exports.securitySessionSchema),
119
+ total: zod_1.z.number().int().min(0),
120
+ currentSessionId: zod_1.z.string().optional(),
121
+ });
122
+ exports.revokeSessionResponseSchema = zod_1.z.object({
123
+ success: zod_1.z.boolean(),
124
+ sessionId: zod_1.z.string(),
125
+ message: zod_1.z.string(),
126
+ });
127
+ exports.revokeAllSessionsResponseSchema = zod_1.z.object({
128
+ success: zod_1.z.boolean(),
129
+ revokedCount: zod_1.z.number().int().min(0),
130
+ message: zod_1.z.string(),
131
+ });
132
+ // ============================================
133
+ // Login History Schemas
134
+ // ============================================
135
+ exports.loginHistoryEntrySchema = zod_1.z.object({
136
+ timestamp: common_1.isoDateSchema,
137
+ status: exports.loginStatusSchema,
138
+ ipAddress: zod_1.z.string().optional(),
139
+ userAgent: zod_1.z.string().optional(),
140
+ deviceType: exports.deviceTypeSchema.optional(),
141
+ browser: zod_1.z.string().optional(),
142
+ os: zod_1.z.string().optional(),
143
+ location: zod_1.z.string().optional(),
144
+ failureReason: zod_1.z.string().optional(),
145
+ });
146
+ exports.loginHistoryResponseSchema = zod_1.z.object({
147
+ entries: zod_1.z.array(exports.loginHistoryEntrySchema),
148
+ total: zod_1.z.number().int().min(0),
149
+ hasMore: zod_1.z.boolean(),
150
+ });
151
+ //# sourceMappingURL=security.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.schema.js","sourceRoot":"","sources":["../../../src/schemas/identity/security.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Session Schemas - Identity Service
3
+ *
4
+ * Zod schemas for session management DTOs.
5
+ */
6
+ import { z } from 'zod';
7
+ export declare const sessionDeviceInfoSchema: z.ZodObject<{
8
+ deviceType: z.ZodEnum<["desktop", "mobile", "tablet", "unknown"]>;
9
+ os: z.ZodOptional<z.ZodString>;
10
+ browser: z.ZodOptional<z.ZodString>;
11
+ deviceId: z.ZodOptional<z.ZodString>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
14
+ browser?: string | undefined;
15
+ os?: string | undefined;
16
+ deviceId?: string | undefined;
17
+ }, {
18
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
19
+ browser?: string | undefined;
20
+ os?: string | undefined;
21
+ deviceId?: string | undefined;
22
+ }>;
23
+ export type SessionDeviceInfoDto = z.infer<typeof sessionDeviceInfoSchema>;
24
+ export declare const sessionStatusSchema: z.ZodEnum<["active", "expired", "revoked"]>;
25
+ export type SessionStatus = z.infer<typeof sessionStatusSchema>;
26
+ export declare const sessionResponseSchema: z.ZodObject<{
27
+ sessionId: z.ZodString;
28
+ userId: z.ZodString;
29
+ status: z.ZodEnum<["active", "expired", "revoked"]>;
30
+ createdAt: z.ZodString;
31
+ expiresAt: z.ZodString;
32
+ deviceInfo: z.ZodOptional<z.ZodObject<{
33
+ deviceType: z.ZodEnum<["desktop", "mobile", "tablet", "unknown"]>;
34
+ os: z.ZodOptional<z.ZodString>;
35
+ browser: z.ZodOptional<z.ZodString>;
36
+ deviceId: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
39
+ browser?: string | undefined;
40
+ os?: string | undefined;
41
+ deviceId?: string | undefined;
42
+ }, {
43
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
44
+ browser?: string | undefined;
45
+ os?: string | undefined;
46
+ deviceId?: string | undefined;
47
+ }>>;
48
+ ipAddress: z.ZodOptional<z.ZodString>;
49
+ lastActiveAt: z.ZodOptional<z.ZodString>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ status: "active" | "expired" | "revoked";
52
+ createdAt: string;
53
+ userId: string;
54
+ expiresAt: string;
55
+ sessionId: string;
56
+ ipAddress?: string | undefined;
57
+ deviceInfo?: {
58
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
59
+ browser?: string | undefined;
60
+ os?: string | undefined;
61
+ deviceId?: string | undefined;
62
+ } | undefined;
63
+ lastActiveAt?: string | undefined;
64
+ }, {
65
+ status: "active" | "expired" | "revoked";
66
+ createdAt: string;
67
+ userId: string;
68
+ expiresAt: string;
69
+ sessionId: string;
70
+ ipAddress?: string | undefined;
71
+ deviceInfo?: {
72
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
73
+ browser?: string | undefined;
74
+ os?: string | undefined;
75
+ deviceId?: string | undefined;
76
+ } | undefined;
77
+ lastActiveAt?: string | undefined;
78
+ }>;
79
+ export type SessionResponseDto = z.infer<typeof sessionResponseSchema>;
80
+ export declare const sessionListResponseSchema: z.ZodObject<{
81
+ sessions: z.ZodArray<z.ZodObject<{
82
+ sessionId: z.ZodString;
83
+ userId: z.ZodString;
84
+ status: z.ZodEnum<["active", "expired", "revoked"]>;
85
+ createdAt: z.ZodString;
86
+ expiresAt: z.ZodString;
87
+ deviceInfo: z.ZodOptional<z.ZodObject<{
88
+ deviceType: z.ZodEnum<["desktop", "mobile", "tablet", "unknown"]>;
89
+ os: z.ZodOptional<z.ZodString>;
90
+ browser: z.ZodOptional<z.ZodString>;
91
+ deviceId: z.ZodOptional<z.ZodString>;
92
+ }, "strip", z.ZodTypeAny, {
93
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
94
+ browser?: string | undefined;
95
+ os?: string | undefined;
96
+ deviceId?: string | undefined;
97
+ }, {
98
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
99
+ browser?: string | undefined;
100
+ os?: string | undefined;
101
+ deviceId?: string | undefined;
102
+ }>>;
103
+ ipAddress: z.ZodOptional<z.ZodString>;
104
+ lastActiveAt: z.ZodOptional<z.ZodString>;
105
+ }, "strip", z.ZodTypeAny, {
106
+ status: "active" | "expired" | "revoked";
107
+ createdAt: string;
108
+ userId: string;
109
+ expiresAt: string;
110
+ sessionId: string;
111
+ ipAddress?: string | undefined;
112
+ deviceInfo?: {
113
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
114
+ browser?: string | undefined;
115
+ os?: string | undefined;
116
+ deviceId?: string | undefined;
117
+ } | undefined;
118
+ lastActiveAt?: string | undefined;
119
+ }, {
120
+ status: "active" | "expired" | "revoked";
121
+ createdAt: string;
122
+ userId: string;
123
+ expiresAt: string;
124
+ sessionId: string;
125
+ ipAddress?: string | undefined;
126
+ deviceInfo?: {
127
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
128
+ browser?: string | undefined;
129
+ os?: string | undefined;
130
+ deviceId?: string | undefined;
131
+ } | undefined;
132
+ lastActiveAt?: string | undefined;
133
+ }>, "many">;
134
+ total: z.ZodNumber;
135
+ }, "strip", z.ZodTypeAny, {
136
+ total: number;
137
+ sessions: {
138
+ status: "active" | "expired" | "revoked";
139
+ createdAt: string;
140
+ userId: string;
141
+ expiresAt: string;
142
+ sessionId: string;
143
+ ipAddress?: string | undefined;
144
+ deviceInfo?: {
145
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
146
+ browser?: string | undefined;
147
+ os?: string | undefined;
148
+ deviceId?: string | undefined;
149
+ } | undefined;
150
+ lastActiveAt?: string | undefined;
151
+ }[];
152
+ }, {
153
+ total: number;
154
+ sessions: {
155
+ status: "active" | "expired" | "revoked";
156
+ createdAt: string;
157
+ userId: string;
158
+ expiresAt: string;
159
+ sessionId: string;
160
+ ipAddress?: string | undefined;
161
+ deviceInfo?: {
162
+ deviceType: "unknown" | "mobile" | "desktop" | "tablet";
163
+ browser?: string | undefined;
164
+ os?: string | undefined;
165
+ deviceId?: string | undefined;
166
+ } | undefined;
167
+ lastActiveAt?: string | undefined;
168
+ }[];
169
+ }>;
170
+ export type SessionListResponseDto = z.infer<typeof sessionListResponseSchema>;
171
+ export declare const revokeSessionSchema: z.ZodObject<{
172
+ sessionId: z.ZodString;
173
+ reason: z.ZodOptional<z.ZodString>;
174
+ }, "strip", z.ZodTypeAny, {
175
+ sessionId: string;
176
+ reason?: string | undefined;
177
+ }, {
178
+ sessionId: string;
179
+ reason?: string | undefined;
180
+ }>;
181
+ export type RevokeSessionDto = z.infer<typeof revokeSessionSchema>;
182
+ export declare const revokeAllSessionsSchema: z.ZodObject<{
183
+ exceptCurrentSession: z.ZodOptional<z.ZodString>;
184
+ reason: z.ZodOptional<z.ZodString>;
185
+ }, "strip", z.ZodTypeAny, {
186
+ reason?: string | undefined;
187
+ exceptCurrentSession?: string | undefined;
188
+ }, {
189
+ reason?: string | undefined;
190
+ exceptCurrentSession?: string | undefined;
191
+ }>;
192
+ export type RevokeAllSessionsDto = z.infer<typeof revokeAllSessionsSchema>;
193
+ //# sourceMappingURL=session.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/identity/session.schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAM3E,eAAO,MAAM,mBAAmB,6CAA2C,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMvE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM/E,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMnE,eAAO,MAAM,uBAAuB;;;;;;;;;EAGlC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * Session Schemas - Identity Service
4
+ *
5
+ * Zod schemas for session management DTOs.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.revokeAllSessionsSchema = exports.revokeSessionSchema = exports.sessionListResponseSchema = exports.sessionResponseSchema = exports.sessionStatusSchema = exports.sessionDeviceInfoSchema = void 0;
9
+ const zod_1 = require("zod");
10
+ const common_1 = require("../common");
11
+ const security_schema_1 = require("./security.schema");
12
+ // ============================================
13
+ // Device Info Schema
14
+ // ============================================
15
+ exports.sessionDeviceInfoSchema = zod_1.z.object({
16
+ deviceType: security_schema_1.deviceTypeSchema,
17
+ os: zod_1.z.string().optional(),
18
+ browser: zod_1.z.string().optional(),
19
+ deviceId: zod_1.z.string().optional(),
20
+ });
21
+ // ============================================
22
+ // Session Status Schema
23
+ // ============================================
24
+ exports.sessionStatusSchema = zod_1.z.enum(['active', 'expired', 'revoked']);
25
+ // ============================================
26
+ // Session Response Schema
27
+ // ============================================
28
+ exports.sessionResponseSchema = zod_1.z.object({
29
+ sessionId: zod_1.z.string(),
30
+ userId: zod_1.z.string(),
31
+ status: exports.sessionStatusSchema,
32
+ createdAt: common_1.isoDateSchema,
33
+ expiresAt: common_1.isoDateSchema,
34
+ deviceInfo: exports.sessionDeviceInfoSchema.optional(),
35
+ ipAddress: zod_1.z.string().optional(),
36
+ lastActiveAt: common_1.isoDateSchema.optional(),
37
+ });
38
+ // ============================================
39
+ // Session List Response Schema
40
+ // ============================================
41
+ exports.sessionListResponseSchema = zod_1.z.object({
42
+ sessions: zod_1.z.array(exports.sessionResponseSchema),
43
+ total: zod_1.z.number().int().min(0),
44
+ });
45
+ // ============================================
46
+ // Revoke Session Schema
47
+ // ============================================
48
+ exports.revokeSessionSchema = zod_1.z.object({
49
+ sessionId: zod_1.z.string().min(1),
50
+ reason: zod_1.z.string().optional(),
51
+ });
52
+ // ============================================
53
+ // Revoke All Sessions Schema
54
+ // ============================================
55
+ exports.revokeAllSessionsSchema = zod_1.z.object({
56
+ exceptCurrentSession: zod_1.z.string().optional(),
57
+ reason: zod_1.z.string().optional(),
58
+ });
59
+ //# sourceMappingURL=session.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.schema.js","sourceRoot":"","sources":["../../../src/schemas/identity/session.schema.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,6BAAwB;AACxB,sCAA0C;AAC1C,uDAAqD;AAErD,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAElC,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,kCAAgB;IAC5B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAIH,+CAA+C;AAC/C,wBAAwB;AACxB,+CAA+C;AAElC,QAAA,mBAAmB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAG5E,+CAA+C;AAC/C,0BAA0B;AAC1B,+CAA+C;AAElC,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,2BAAmB;IAC3B,SAAS,EAAE,sBAAa;IACxB,SAAS,EAAE,sBAAa;IACxB,UAAU,EAAE,+BAAuB,CAAC,QAAQ,EAAE;IAC9C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,sBAAa,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAIH,+CAA+C;AAC/C,+BAA+B;AAC/B,+CAA+C;AAElC,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;IACxC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAIH,+CAA+C;AAC/C,wBAAwB;AACxB,+CAA+C;AAElC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAIH,+CAA+C;AAC/C,6BAA6B;AAC7B,+CAA+C;AAElC,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,oBAAoB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC"}