sonamu 0.9.3 → 0.9.5

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 (99) hide show
  1. package/dist/ai/providers/rtzr/utils.js +2 -2
  2. package/dist/api/config.d.ts +0 -8
  3. package/dist/api/config.d.ts.map +1 -1
  4. package/dist/api/config.js +1 -1
  5. package/dist/api/sonamu.d.ts +0 -1
  6. package/dist/api/sonamu.d.ts.map +1 -1
  7. package/dist/api/sonamu.js +2 -41
  8. package/dist/auth/audit-log/builders.d.ts +216 -0
  9. package/dist/auth/audit-log/builders.d.ts.map +1 -0
  10. package/dist/auth/audit-log/builders.js +307 -0
  11. package/dist/auth/audit-log/events.d.ts +143 -0
  12. package/dist/auth/audit-log/events.d.ts.map +1 -0
  13. package/dist/auth/audit-log/events.js +74 -0
  14. package/dist/auth/audit-log/plugin.d.ts +11 -0
  15. package/dist/auth/audit-log/plugin.d.ts.map +1 -0
  16. package/dist/auth/audit-log/plugin.js +427 -0
  17. package/dist/auth/audit-log-ingestor.d.ts +3 -3
  18. package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
  19. package/dist/auth/audit-log-ingestor.js +44 -50
  20. package/dist/auth/index.d.ts +2 -0
  21. package/dist/auth/index.d.ts.map +1 -1
  22. package/dist/auth/index.js +4 -4
  23. package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
  24. package/dist/auth/plugins/entity-definitions/admin.js +4 -4
  25. package/dist/auth/plugins/entity-definitions/audit-log.d.ts +2 -2
  26. package/dist/auth/plugins/entity-definitions/audit-log.js +3 -3
  27. package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
  28. package/dist/auth/plugins/wrappers/sso.d.ts +1 -1
  29. package/dist/bin/fixture.d.ts.map +1 -1
  30. package/dist/bin/fixture.js +111 -1
  31. package/dist/database/_batch_update.d.ts +1 -1
  32. package/dist/database/_batch_update.js +2 -2
  33. package/dist/database/upsert-builder.js +4 -4
  34. package/dist/dict/sonamu-dictionary.js +2 -2
  35. package/dist/entity/entity-manager.d.ts +2 -2
  36. package/dist/entity/entity-manager.d.ts.map +1 -1
  37. package/dist/entity/entity-manager.js +14 -4
  38. package/dist/index.js +4 -3
  39. package/dist/migration/code-generation.d.ts.map +1 -1
  40. package/dist/migration/code-generation.js +2 -3
  41. package/dist/syncer/syncer.d.ts.map +1 -1
  42. package/dist/syncer/syncer.js +2 -9
  43. package/dist/template/implementations/entry-server.template.js +3 -2
  44. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  45. package/dist/template/implementations/generated.template.js +2 -1
  46. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  47. package/dist/template/implementations/generated_sso.template.js +2 -1
  48. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  49. package/dist/template/implementations/queries.template.js +3 -1
  50. package/dist/template/implementations/sd.template.js +3 -2
  51. package/dist/template/implementations/services.template.d.ts.map +1 -1
  52. package/dist/template/implementations/services.template.js +44 -7
  53. package/dist/template/zod-converter.d.ts.map +1 -1
  54. package/dist/template/zod-converter.js +2 -2
  55. package/dist/testing/data-explorer.d.ts.map +1 -1
  56. package/dist/testing/data-explorer.js +5 -3
  57. package/dist/types/types.d.ts +14 -14
  58. package/dist/ui/api.d.ts.map +1 -1
  59. package/dist/ui/api.js +3 -2
  60. package/dist/ui-web/assets/index-D4rYm-Xz.css +1 -0
  61. package/dist/ui-web/assets/{index-DrTfl0Ts.js → index-DzZ7vBk4.js} +47 -47
  62. package/dist/ui-web/index.html +2 -2
  63. package/dist/utils/fs-utils.d.ts.map +1 -1
  64. package/dist/utils/fs-utils.js +4 -4
  65. package/package.json +4 -5
  66. package/src/ai/providers/rtzr/utils.ts +1 -1
  67. package/src/api/config.ts +0 -8
  68. package/src/api/sonamu.ts +1 -51
  69. package/src/auth/audit-log/builders.ts +791 -0
  70. package/src/auth/audit-log/events.ts +149 -0
  71. package/src/auth/audit-log/plugin.ts +913 -0
  72. package/src/auth/audit-log-ingestor.ts +3 -4
  73. package/src/auth/index.ts +2 -0
  74. package/src/auth/plugins/entity-definitions/admin.ts +3 -3
  75. package/src/auth/plugins/entity-definitions/audit-log.ts +2 -2
  76. package/src/bin/fixture.ts +143 -0
  77. package/src/database/_batch_update.ts +1 -1
  78. package/src/database/upsert-builder.ts +3 -3
  79. package/src/dict/sonamu-dictionary.ts +1 -1
  80. package/src/entity/entity-manager.ts +10 -3
  81. package/src/migration/code-generation.ts +1 -6
  82. package/src/shared/app.shared.ts.txt +60 -6
  83. package/src/shared/web.shared.ts.txt +60 -5
  84. package/src/syncer/syncer.ts +1 -11
  85. package/src/template/implementations/entry-server.template.ts +1 -1
  86. package/src/template/implementations/generated.template.ts +1 -0
  87. package/src/template/implementations/generated_sso.template.ts +1 -0
  88. package/src/template/implementations/queries.template.ts +10 -1
  89. package/src/template/implementations/sd.template.ts +1 -1
  90. package/src/template/implementations/services.template.ts +62 -6
  91. package/src/template/zod-converter.ts +2 -1
  92. package/src/testing/data-explorer.ts +3 -2
  93. package/src/ui/api.ts +10 -1
  94. package/src/utils/fs-utils.ts +6 -4
  95. package/dist/auth/audit-log-proxy-types.d.ts +0 -23
  96. package/dist/auth/audit-log-proxy-types.d.ts.map +0 -1
  97. package/dist/auth/audit-log-proxy-types.js +0 -1
  98. package/dist/ui-web/assets/index-Dr8pRJC_.css +0 -1
  99. package/src/auth/audit-log-proxy-types.ts +0 -23
@@ -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;