sonamu 0.9.2 → 0.9.4

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 (84) hide show
  1. package/dist/api/config.d.ts +1 -2
  2. package/dist/api/config.d.ts.map +1 -1
  3. package/dist/api/config.js +1 -1
  4. package/dist/api/sonamu.d.ts.map +1 -1
  5. package/dist/api/sonamu.js +10 -1
  6. package/dist/auth/audit-log/builders.d.ts +216 -0
  7. package/dist/auth/audit-log/builders.d.ts.map +1 -0
  8. package/dist/auth/audit-log/builders.js +307 -0
  9. package/dist/auth/audit-log/events.d.ts +143 -0
  10. package/dist/auth/audit-log/events.d.ts.map +1 -0
  11. package/dist/auth/audit-log/events.js +74 -0
  12. package/dist/auth/audit-log/plugin.d.ts +11 -0
  13. package/dist/auth/audit-log/plugin.d.ts.map +1 -0
  14. package/dist/auth/audit-log/plugin.js +427 -0
  15. package/dist/auth/audit-log-ingestor.d.ts +9 -0
  16. package/dist/auth/audit-log-ingestor.d.ts.map +1 -0
  17. package/dist/auth/audit-log-ingestor.js +194 -0
  18. package/dist/auth/index.d.ts +3 -0
  19. package/dist/auth/index.d.ts.map +1 -1
  20. package/dist/auth/index.js +4 -2
  21. package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
  22. package/dist/auth/plugins/entity-definitions/admin.js +4 -4
  23. package/dist/auth/plugins/entity-definitions/audit-log.d.ts +12 -0
  24. package/dist/auth/plugins/entity-definitions/audit-log.d.ts.map +1 -0
  25. package/dist/auth/plugins/entity-definitions/audit-log.js +291 -0
  26. package/dist/auth/plugins/entity-definitions/index.d.ts +1 -0
  27. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  28. package/dist/auth/plugins/entity-definitions/index.js +5 -3
  29. package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
  30. package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
  31. package/dist/bin/fixture.d.ts.map +1 -1
  32. package/dist/bin/fixture.js +111 -1
  33. package/dist/database/_batch_update.d.ts +1 -1
  34. package/dist/database/_batch_update.js +2 -2
  35. package/dist/entity/entity-manager.d.ts.map +1 -1
  36. package/dist/entity/entity-manager.js +14 -4
  37. package/dist/index.js +4 -2
  38. package/dist/storage/buffered-file.d.ts +1 -1
  39. package/dist/storage/buffered-file.js +2 -2
  40. package/dist/syncer/syncer.d.ts.map +1 -1
  41. package/dist/syncer/syncer.js +2 -9
  42. package/dist/template/implementations/entry-server.template.js +3 -2
  43. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  44. package/dist/template/implementations/generated.template.js +2 -1
  45. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  46. package/dist/template/implementations/generated_sso.template.js +2 -1
  47. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  48. package/dist/template/implementations/queries.template.js +3 -1
  49. package/dist/template/implementations/sd.template.js +3 -2
  50. package/dist/template/implementations/services.template.d.ts.map +1 -1
  51. package/dist/template/implementations/services.template.js +44 -7
  52. package/dist/template/zod-converter.d.ts.map +1 -1
  53. package/dist/template/zod-converter.js +2 -2
  54. package/dist/ui-web/assets/{index-CfgbCoOJ.js → index-C5KUjXm0.js} +48 -45
  55. package/dist/ui-web/index.html +1 -1
  56. package/dist/utils/fs-utils.d.ts.map +1 -1
  57. package/dist/utils/fs-utils.js +4 -4
  58. package/package.json +3 -3
  59. package/src/api/config.ts +1 -2
  60. package/src/api/sonamu.ts +14 -0
  61. package/src/auth/audit-log/builders.ts +791 -0
  62. package/src/auth/audit-log/events.ts +149 -0
  63. package/src/auth/audit-log/plugin.ts +913 -0
  64. package/src/auth/audit-log-ingestor.ts +233 -0
  65. package/src/auth/index.ts +3 -0
  66. package/src/auth/plugins/entity-definitions/admin.ts +3 -3
  67. package/src/auth/plugins/entity-definitions/audit-log.ts +171 -0
  68. package/src/auth/plugins/entity-definitions/index.ts +3 -0
  69. package/src/auth/plugins/entity-definitions/types.ts +2 -1
  70. package/src/bin/fixture.ts +143 -0
  71. package/src/database/_batch_update.ts +1 -1
  72. package/src/entity/entity-manager.ts +10 -3
  73. package/src/shared/app.shared.ts.txt +2 -3
  74. package/src/shared/web.shared.ts.txt +2 -2
  75. package/src/storage/buffered-file.ts +1 -1
  76. package/src/syncer/syncer.ts +1 -11
  77. package/src/template/implementations/entry-server.template.ts +1 -1
  78. package/src/template/implementations/generated.template.ts +1 -0
  79. package/src/template/implementations/generated_sso.template.ts +1 -0
  80. package/src/template/implementations/queries.template.ts +10 -1
  81. package/src/template/implementations/sd.template.ts +1 -1
  82. package/src/template/implementations/services.template.ts +62 -6
  83. package/src/template/zod-converter.ts +2 -1
  84. package/src/utils/fs-utils.ts +6 -4
@@ -0,0 +1,149 @@
1
+ /**
2
+ * sonamuAuditLog 플러그인이 audit-log-ingestor로 전달하는 이벤트 body 타입.
3
+ */
4
+ export type AuditLogEvent = {
5
+ eventType: string;
6
+ eventData: Record<string, unknown>;
7
+ eventKey: string;
8
+ eventDisplayName?: string;
9
+ ipAddress?: string;
10
+ city?: string;
11
+ country?: string;
12
+ countryCode?: string;
13
+ };
14
+
15
+ // dash(@better-auth/infra)의 audit-event 상수 집합을 Sonamu 로컬 적재 경로에 맞게 포팅.
16
+ export const EVENT_TYPES = {
17
+ USER_CREATED: "user_created",
18
+ USER_SIGNED_IN: "user_signed_in",
19
+ USER_SIGNED_OUT: "user_signed_out",
20
+ USER_SIGN_IN_FAILED: "user_sign_in_failed",
21
+ PASSWORD_RESET_REQUESTED: "password_reset_requested",
22
+ PASSWORD_RESET_COMPLETED: "password_reset_completed",
23
+ PASSWORD_CHANGED: "password_changed",
24
+ EMAIL_VERIFICATION_SENT: "email_verification_sent",
25
+ EMAIL_VERIFIED: "email_verified",
26
+ PROFILE_UPDATED: "profile_updated",
27
+ PROFILE_IMAGE_UPDATED: "profile_image_updated",
28
+ SESSION_CREATED: "session_created",
29
+ SESSION_REVOKED: "session_revoked",
30
+ ALL_SESSIONS_REVOKED: "all_sessions_revoked",
31
+ ACCOUNT_LINKED: "account_linked",
32
+ ACCOUNT_UNLINKED: "account_unlinked",
33
+ USER_BANNED: "user_banned",
34
+ USER_UNBANNED: "user_unbanned",
35
+ USER_DELETED: "user_deleted",
36
+ USER_IMPERSONATED: "user_impersonated",
37
+ USER_IMPERSONATED_STOPPED: "user_impersonated_stopped",
38
+ } as const;
39
+
40
+ export const ORGANIZATION_EVENT_TYPES = {
41
+ ORGANIZATION_CREATED: "organization_created",
42
+ ORGANIZATION_UPDATED: "organization_updated",
43
+ ORGANIZATION_MEMBER_ADDED: "organization_member_added",
44
+ ORGANIZATION_MEMBER_REMOVED: "organization_member_removed",
45
+ ORGANIZATION_MEMBER_ROLE_UPDATED: "organization_member_role_updated",
46
+ ORGANIZATION_MEMBER_INVITED: "organization_member_invited",
47
+ ORGANIZATION_MEMBER_INVITE_CANCELED: "organization_member_invite_canceled",
48
+ ORGANIZATION_MEMBER_INVITE_ACCEPTED: "organization_member_invite_accepted",
49
+ ORGANIZATION_MEMBER_INVITE_REJECTED: "organization_member_invite_rejected",
50
+ ORGANIZATION_TEAM_CREATED: "organization_team_created",
51
+ ORGANIZATION_TEAM_UPDATED: "organization_team_updated",
52
+ ORGANIZATION_TEAM_DELETED: "organization_team_deleted",
53
+ ORGANIZATION_TEAM_MEMBER_ADDED: "organization_team_member_added",
54
+ ORGANIZATION_TEAM_MEMBER_REMOVED: "organization_team_member_removed",
55
+ } as const;
56
+
57
+ // dash의 routes 상수 중 우리가 실제 matcher로 쓰는 항목만 포팅.
58
+ export const ROUTES = {
59
+ SIGN_IN: "/sign-in",
60
+ SIGN_IN_EMAIL: "/sign-in/email",
61
+ SIGN_IN_EMAIL_OTP: "/sign-in/email-otp",
62
+ SIGN_IN_SOCIAL: "/sign-in/social",
63
+ SIGN_IN_SOCIAL_CALLBACK: "/callback/:id",
64
+ SIGN_IN_OAUTH_CALLBACK: "/oauth2/callback/:id",
65
+ SIGN_UP: "/sign-up",
66
+ SIGN_UP_EMAIL: "/sign-up/email",
67
+ SIGN_OUT: "/sign-out",
68
+ SEND_VERIFICATION_EMAIL: "/send-verification-email",
69
+ UPDATE_USER: "/update-user",
70
+ CHANGE_EMAIL: "/change-email",
71
+ VERIFY_EMAIL: "/verify-email",
72
+ CHANGE_PASSWORD: "/change-password",
73
+ SET_PASSWORD: "/set-password",
74
+ RESET_PASSWORD: "/reset-password",
75
+ REQUEST_PASSWORD_RESET: "/request-password-reset",
76
+ REVOKE_ALL_SESSIONS: "/revoke-sessions",
77
+ DASH_ROUTE: "/dash",
78
+ DASH_UPDATE_USER: "/dash/update-user",
79
+ DASH_REVOKE_SESSIONS_ALL: "/dash/sessions/revoke-all",
80
+ DASH_BAN_USER: "/dash/ban-user",
81
+ DASH_UNBAN_USER: "/dash/unban-user",
82
+ ADMIN_ROUTE: "/admin",
83
+ ADMIN_REVOKE_USER_SESSIONS: "/admin/revoke-user-sessions",
84
+ ADMIN_SET_PASSWORD: "/admin/set-user-password",
85
+ ADMIN_BAN_USER: "/admin/ban-user",
86
+ ADMIN_UNBAN_USER: "/admin/unban-user",
87
+ } as const;
88
+
89
+ export type BuilderTrigger = { triggeredBy: string; triggerContext: string };
90
+ export type BuilderLocation = {
91
+ ipAddress?: string;
92
+ city?: string;
93
+ country?: string;
94
+ countryCode?: string;
95
+ };
96
+
97
+ // 빌더에 넘기는 최소 엔티티 shape. better-auth 내부 타입을 그대로 쓰지 않고
98
+ // 필요한 필드만 선언하여 핸들러 레이어에서 좁혀서 전달한다.
99
+ export type UserSnapshot = {
100
+ id: string;
101
+ name?: string;
102
+ email?: string;
103
+ banned?: boolean;
104
+ banReason?: string | null;
105
+ banExpires?: Date | null;
106
+ };
107
+ export type SessionSnapshot = {
108
+ id: string;
109
+ userId: string;
110
+ loginMethod?: string | null;
111
+ userAgent?: string | null;
112
+ impersonatedBy?: string | null;
113
+ };
114
+ export type AccountSnapshot = {
115
+ id: string;
116
+ userId: string;
117
+ providerId: string;
118
+ };
119
+ export type VerificationSnapshot = {
120
+ id: string;
121
+ value: string;
122
+ };
123
+ export type OrganizationSnapshot = {
124
+ id: string;
125
+ slug?: string;
126
+ name?: string;
127
+ };
128
+ export type TeamSnapshot = {
129
+ id: string;
130
+ name?: string;
131
+ };
132
+ export type MemberSnapshot = {
133
+ id: string;
134
+ userId: string;
135
+ role?: string;
136
+ };
137
+ export type InvitationSnapshot = {
138
+ id: string;
139
+ email?: string;
140
+ role?: string;
141
+ teamId?: string | null;
142
+ };
143
+
144
+ // 사용자 프로필 보조 (조회 실패 시 null)
145
+ export type UserProfileLite = { id: string; name?: string; email?: string } | null;
146
+
147
+ // 모든 빌더는 pure: input -> AuditLogEvent.
148
+ // 비동기 adapter 조회는 hook 레이어에서 수행하고, 조회 결과를 인자로 전달한다.
149
+ export type Builder<A extends readonly unknown[]> = (...args: A) => AuditLogEvent;