@commonpub/server 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 (147) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +59 -0
  3. package/dist/admin/admin.d.ts +113 -0
  4. package/dist/admin/admin.d.ts.map +1 -0
  5. package/dist/admin/admin.js +426 -0
  6. package/dist/admin/admin.js.map +1 -0
  7. package/dist/admin/index.d.ts +3 -0
  8. package/dist/admin/index.d.ts.map +1 -0
  9. package/dist/admin/index.js +2 -0
  10. package/dist/admin/index.js.map +1 -0
  11. package/dist/content/content.d.ts +39 -0
  12. package/dist/content/content.d.ts.map +1 -0
  13. package/dist/content/content.js +507 -0
  14. package/dist/content/content.js.map +1 -0
  15. package/dist/content/index.d.ts +3 -0
  16. package/dist/content/index.d.ts.map +1 -0
  17. package/dist/content/index.js +2 -0
  18. package/dist/content/index.js.map +1 -0
  19. package/dist/contest/contest.d.ts +92 -0
  20. package/dist/contest/contest.d.ts.map +1 -0
  21. package/dist/contest/contest.js +343 -0
  22. package/dist/contest/contest.js.map +1 -0
  23. package/dist/contest/index.d.ts +3 -0
  24. package/dist/contest/index.d.ts.map +1 -0
  25. package/dist/contest/index.js +2 -0
  26. package/dist/contest/index.js.map +1 -0
  27. package/dist/docs/docs.d.ts +71 -0
  28. package/dist/docs/docs.d.ts.map +1 -0
  29. package/dist/docs/docs.js +398 -0
  30. package/dist/docs/docs.js.map +1 -0
  31. package/dist/docs/index.d.ts +2 -0
  32. package/dist/docs/index.d.ts.map +1 -0
  33. package/dist/docs/index.js +2 -0
  34. package/dist/docs/index.js.map +1 -0
  35. package/dist/email.d.ts +3 -0
  36. package/dist/email.d.ts.map +1 -0
  37. package/dist/email.js +3 -0
  38. package/dist/email.js.map +1 -0
  39. package/dist/federation/federation.d.ts +46 -0
  40. package/dist/federation/federation.d.ts.map +1 -0
  41. package/dist/federation/federation.js +308 -0
  42. package/dist/federation/federation.js.map +1 -0
  43. package/dist/federation/index.d.ts +2 -0
  44. package/dist/federation/index.d.ts.map +1 -0
  45. package/dist/federation/index.js +2 -0
  46. package/dist/federation/index.js.map +1 -0
  47. package/dist/hub/hub.d.ts +110 -0
  48. package/dist/hub/hub.d.ts.map +1 -0
  49. package/dist/hub/hub.js +917 -0
  50. package/dist/hub/hub.js.map +1 -0
  51. package/dist/hub/index.d.ts +2 -0
  52. package/dist/hub/index.d.ts.map +1 -0
  53. package/dist/hub/index.js +2 -0
  54. package/dist/hub/index.js.map +1 -0
  55. package/dist/image.d.ts +3 -0
  56. package/dist/image.d.ts.map +1 -0
  57. package/dist/image.js +3 -0
  58. package/dist/image.js.map +1 -0
  59. package/dist/index.d.ts +38 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +43 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/learning/index.d.ts +6 -0
  64. package/dist/learning/index.d.ts.map +1 -0
  65. package/dist/learning/index.js +6 -0
  66. package/dist/learning/index.js.map +1 -0
  67. package/dist/learning/learning.d.ts +85 -0
  68. package/dist/learning/learning.d.ts.map +1 -0
  69. package/dist/learning/learning.js +681 -0
  70. package/dist/learning/learning.js.map +1 -0
  71. package/dist/messaging/index.d.ts +3 -0
  72. package/dist/messaging/index.d.ts.map +1 -0
  73. package/dist/messaging/index.js +2 -0
  74. package/dist/messaging/index.js.map +1 -0
  75. package/dist/messaging/messaging.d.ts +27 -0
  76. package/dist/messaging/messaging.d.ts.map +1 -0
  77. package/dist/messaging/messaging.js +132 -0
  78. package/dist/messaging/messaging.js.map +1 -0
  79. package/dist/notification/index.d.ts +3 -0
  80. package/dist/notification/index.d.ts.map +1 -0
  81. package/dist/notification/index.js +2 -0
  82. package/dist/notification/index.js.map +1 -0
  83. package/dist/notification/notification.d.ts +38 -0
  84. package/dist/notification/notification.d.ts.map +1 -0
  85. package/dist/notification/notification.js +92 -0
  86. package/dist/notification/notification.js.map +1 -0
  87. package/dist/oauthCodes.d.ts +14 -0
  88. package/dist/oauthCodes.d.ts.map +1 -0
  89. package/dist/oauthCodes.js +40 -0
  90. package/dist/oauthCodes.js.map +1 -0
  91. package/dist/product/index.d.ts +3 -0
  92. package/dist/product/index.d.ts.map +1 -0
  93. package/dist/product/index.js +2 -0
  94. package/dist/product/index.js.map +1 -0
  95. package/dist/product/product.d.ts +143 -0
  96. package/dist/product/product.d.ts.map +1 -0
  97. package/dist/product/product.js +493 -0
  98. package/dist/product/product.js.map +1 -0
  99. package/dist/profile/index.d.ts +2 -0
  100. package/dist/profile/index.d.ts.map +1 -0
  101. package/dist/profile/index.js +2 -0
  102. package/dist/profile/index.js.map +1 -0
  103. package/dist/profile/profile.d.ts +28 -0
  104. package/dist/profile/profile.d.ts.map +1 -0
  105. package/dist/profile/profile.js +122 -0
  106. package/dist/profile/profile.js.map +1 -0
  107. package/dist/query.d.ts +331 -0
  108. package/dist/query.d.ts.map +1 -0
  109. package/dist/query.js +103 -0
  110. package/dist/query.js.map +1 -0
  111. package/dist/security.d.ts +3 -0
  112. package/dist/security.d.ts.map +1 -0
  113. package/dist/security.js +3 -0
  114. package/dist/security.js.map +1 -0
  115. package/dist/social/index.d.ts +3 -0
  116. package/dist/social/index.d.ts.map +1 -0
  117. package/dist/social/index.js +2 -0
  118. package/dist/social/index.js.map +1 -0
  119. package/dist/social/social.d.ts +84 -0
  120. package/dist/social/social.d.ts.map +1 -0
  121. package/dist/social/social.js +353 -0
  122. package/dist/social/social.js.map +1 -0
  123. package/dist/storage.d.ts +3 -0
  124. package/dist/storage.d.ts.map +1 -0
  125. package/dist/storage.js +3 -0
  126. package/dist/storage.js.map +1 -0
  127. package/dist/theme.d.ts +12 -0
  128. package/dist/theme.d.ts.map +1 -0
  129. package/dist/theme.js +55 -0
  130. package/dist/theme.js.map +1 -0
  131. package/dist/types.d.ts +266 -0
  132. package/dist/types.d.ts.map +1 -0
  133. package/dist/types.js +2 -0
  134. package/dist/types.js.map +1 -0
  135. package/dist/utils.d.ts +7 -0
  136. package/dist/utils.d.ts.map +1 -0
  137. package/dist/utils.js +46 -0
  138. package/dist/utils.js.map +1 -0
  139. package/dist/video/index.d.ts +3 -0
  140. package/dist/video/index.d.ts.map +1 -0
  141. package/dist/video/index.js +2 -0
  142. package/dist/video/index.js.map +1 -0
  143. package/dist/video/video.d.ts +61 -0
  144. package/dist/video/video.d.ts.map +1 -0
  145. package/dist/video/video.js +157 -0
  146. package/dist/video/video.js.map +1 -0
  147. package/package.json +129 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/learning/learning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { listConversations, getConversationMessages, createConversation, findOrCreateConversation, sendMessage, markMessagesRead, } from './messaging.js';
2
+ export type { ConversationItem, MessageItem } from './messaging.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { listConversations, getConversationMessages, createConversation, findOrCreateConversation, sendMessage, markMessagesRead, } from './messaging.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { DB } from '../types.js';
2
+ export interface ConversationItem {
3
+ id: string;
4
+ participants: string[];
5
+ lastMessageAt: Date;
6
+ lastMessage: string | null;
7
+ createdAt: Date;
8
+ }
9
+ export interface MessageItem {
10
+ id: string;
11
+ conversationId: string;
12
+ senderId: string;
13
+ body: string;
14
+ createdAt: Date;
15
+ readAt: Date | null;
16
+ }
17
+ export declare function listConversations(db: DB, userId: string, opts?: {
18
+ limit?: number;
19
+ offset?: number;
20
+ }): Promise<ConversationItem[]>;
21
+ export declare function getConversationMessages(db: DB, conversationId: string, userId: string): Promise<MessageItem[]>;
22
+ export declare function createConversation(db: DB, participants: string[]): Promise<ConversationItem>;
23
+ /** Find an existing conversation with exactly the given participants, or create one. */
24
+ export declare function findOrCreateConversation(db: DB, participants: string[]): Promise<ConversationItem>;
25
+ export declare function sendMessage(db: DB, conversationId: string, senderId: string, body: string): Promise<MessageItem>;
26
+ export declare function markMessagesRead(db: DB, conversationId: string, userId: string): Promise<void>;
27
+ //# sourceMappingURL=messaging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/messaging/messaging.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CACrB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoB7B;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC,CA6BxB;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,wFAAwF;AACxF,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,gBAAgB,CAAC,CA6B3B;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,CAAC,CA2CtB;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -0,0 +1,132 @@
1
+ import { eq, and, desc, sql, isNull, inArray } from 'drizzle-orm';
2
+ import { conversations, messages, users } from '@commonpub/schema';
3
+ export async function listConversations(db, userId, opts = {}) {
4
+ const limit = Math.min(opts.limit ?? 50, 100);
5
+ const offset = opts.offset ?? 0;
6
+ // jsonb @> check: participants array contains userId
7
+ const rows = await db
8
+ .select()
9
+ .from(conversations)
10
+ .where(sql `${conversations.participants} @> ${JSON.stringify([userId])}::jsonb`)
11
+ .orderBy(desc(conversations.lastMessageAt))
12
+ .limit(limit)
13
+ .offset(offset);
14
+ return rows.map((row) => ({
15
+ id: row.id,
16
+ participants: row.participants,
17
+ lastMessageAt: row.lastMessageAt,
18
+ lastMessage: row.lastMessage,
19
+ createdAt: row.createdAt,
20
+ }));
21
+ }
22
+ export async function getConversationMessages(db, conversationId, userId) {
23
+ // Verify user is a participant
24
+ const conv = await db
25
+ .select()
26
+ .from(conversations)
27
+ .where(and(eq(conversations.id, conversationId), sql `${conversations.participants} @> ${JSON.stringify([userId])}::jsonb`))
28
+ .limit(1);
29
+ if (conv.length === 0)
30
+ return [];
31
+ const rows = await db
32
+ .select()
33
+ .from(messages)
34
+ .where(eq(messages.conversationId, conversationId))
35
+ .orderBy(messages.createdAt);
36
+ return rows.map((row) => ({
37
+ id: row.id,
38
+ conversationId: row.conversationId,
39
+ senderId: row.senderId,
40
+ body: row.body,
41
+ createdAt: row.createdAt,
42
+ readAt: row.readAt,
43
+ }));
44
+ }
45
+ export async function createConversation(db, participants) {
46
+ // Validate all participant IDs correspond to existing users
47
+ const existingUsers = await db
48
+ .select({ id: users.id })
49
+ .from(users)
50
+ .where(inArray(users.id, participants));
51
+ if (existingUsers.length !== participants.length) {
52
+ throw new Error('One or more participant IDs do not exist');
53
+ }
54
+ const [row] = await db
55
+ .insert(conversations)
56
+ .values({
57
+ participants,
58
+ })
59
+ .returning();
60
+ return {
61
+ id: row.id,
62
+ participants: row.participants,
63
+ lastMessageAt: row.lastMessageAt,
64
+ lastMessage: row.lastMessage,
65
+ createdAt: row.createdAt,
66
+ };
67
+ }
68
+ /** Find an existing conversation with exactly the given participants, or create one. */
69
+ export async function findOrCreateConversation(db, participants) {
70
+ // Sort for deterministic matching
71
+ const sorted = [...participants].sort();
72
+ // Find a conversation that contains all participants and has the same count.
73
+ // jsonb @> checks containment; we also verify the array length matches to get exact match.
74
+ const existing = await db
75
+ .select()
76
+ .from(conversations)
77
+ .where(and(sql `${conversations.participants} @> ${JSON.stringify(sorted)}::jsonb`, sql `jsonb_array_length(${conversations.participants}) = ${sorted.length}`))
78
+ .limit(1);
79
+ if (existing.length > 0) {
80
+ const row = existing[0];
81
+ return {
82
+ id: row.id,
83
+ participants: row.participants,
84
+ lastMessageAt: row.lastMessageAt,
85
+ lastMessage: row.lastMessage,
86
+ createdAt: row.createdAt,
87
+ };
88
+ }
89
+ return createConversation(db, sorted);
90
+ }
91
+ export async function sendMessage(db, conversationId, senderId, body) {
92
+ // Verify sender is a participant in this conversation
93
+ const conv = await db
94
+ .select({ id: conversations.id })
95
+ .from(conversations)
96
+ .where(and(eq(conversations.id, conversationId), sql `${conversations.participants} @> ${JSON.stringify([senderId])}::jsonb`))
97
+ .limit(1);
98
+ if (conv.length === 0) {
99
+ throw new Error('Not a participant in this conversation');
100
+ }
101
+ const [row] = await db
102
+ .insert(messages)
103
+ .values({
104
+ conversationId,
105
+ senderId,
106
+ body,
107
+ })
108
+ .returning();
109
+ // Update conversation's last message
110
+ await db
111
+ .update(conversations)
112
+ .set({
113
+ lastMessageAt: new Date(),
114
+ lastMessage: body.length > 200 ? body.slice(0, 200) + '...' : body,
115
+ })
116
+ .where(eq(conversations.id, conversationId));
117
+ return {
118
+ id: row.id,
119
+ conversationId: row.conversationId,
120
+ senderId: row.senderId,
121
+ body: row.body,
122
+ createdAt: row.createdAt,
123
+ readAt: row.readAt,
124
+ };
125
+ }
126
+ export async function markMessagesRead(db, conversationId, userId) {
127
+ await db
128
+ .update(messages)
129
+ .set({ readAt: new Date() })
130
+ .where(and(eq(messages.conversationId, conversationId), sql `${messages.senderId} != ${userId}`, isNull(messages.readAt)));
131
+ }
132
+ //# sourceMappingURL=messaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/messaging/messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { listNotifications, getUnreadCount, markNotificationRead, markAllNotificationsRead, deleteNotification, createNotification, } from './notification.js';
2
+ export type { NotificationItem, NotificationFilters } from './notification.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { listNotifications, getUnreadCount, markNotificationRead, markAllNotificationsRead, deleteNotification, createNotification, } from './notification.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { DB } from '../types.js';
2
+ export interface NotificationItem {
3
+ id: string;
4
+ userId: string;
5
+ type: string;
6
+ title: string;
7
+ message: string;
8
+ link: string | null;
9
+ actorId: string | null;
10
+ actorName: string | null;
11
+ read: boolean;
12
+ createdAt: Date;
13
+ }
14
+ export type NotificationType = 'like' | 'comment' | 'follow' | 'mention' | 'contest' | 'certificate' | 'hub' | 'system';
15
+ export interface NotificationFilters {
16
+ userId: string;
17
+ type?: NotificationType;
18
+ read?: boolean;
19
+ limit?: number;
20
+ offset?: number;
21
+ }
22
+ export declare function listNotifications(db: DB, filters: NotificationFilters): Promise<{
23
+ items: NotificationItem[];
24
+ total: number;
25
+ }>;
26
+ export declare function getUnreadCount(db: DB, userId: string): Promise<number>;
27
+ export declare function markNotificationRead(db: DB, notificationId: string, userId: string): Promise<void>;
28
+ export declare function markAllNotificationsRead(db: DB, userId: string): Promise<void>;
29
+ export declare function deleteNotification(db: DB, notificationId: string, userId: string): Promise<void>;
30
+ export declare function createNotification(db: DB, input: {
31
+ userId: string;
32
+ type: NotificationType;
33
+ title: string;
34
+ message: string;
35
+ link?: string;
36
+ actorId?: string;
37
+ }): Promise<NotificationItem>;
38
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/notification/notification.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC;AAExH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA6CvD;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5E;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE;IACL,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,gBAAgB,CAAC,CAyB3B"}
@@ -0,0 +1,92 @@
1
+ import { eq, and, desc, sql } from 'drizzle-orm';
2
+ import { notifications, users } from '@commonpub/schema';
3
+ import { normalizePagination, countRows } from '../query.js';
4
+ export async function listNotifications(db, filters) {
5
+ const conditions = [eq(notifications.userId, filters.userId)];
6
+ if (filters.type) {
7
+ conditions.push(eq(notifications.type, filters.type));
8
+ }
9
+ if (filters.read !== undefined) {
10
+ conditions.push(eq(notifications.read, filters.read));
11
+ }
12
+ const where = and(...conditions);
13
+ const { limit, offset } = normalizePagination(filters);
14
+ const [rows, total] = await Promise.all([
15
+ db
16
+ .select({
17
+ notification: notifications,
18
+ actorDisplayName: users.displayName,
19
+ actorUsername: users.username,
20
+ })
21
+ .from(notifications)
22
+ .leftJoin(users, eq(notifications.actorId, users.id))
23
+ .where(where)
24
+ .orderBy(desc(notifications.createdAt))
25
+ .limit(limit)
26
+ .offset(offset),
27
+ countRows(db, notifications, where),
28
+ ]);
29
+ const items = rows.map((row) => ({
30
+ id: row.notification.id,
31
+ userId: row.notification.userId,
32
+ type: row.notification.type,
33
+ title: row.notification.title,
34
+ message: row.notification.message,
35
+ link: row.notification.link,
36
+ actorId: row.notification.actorId,
37
+ actorName: row.actorDisplayName ?? row.actorUsername ?? 'Someone',
38
+ read: row.notification.read,
39
+ createdAt: row.notification.createdAt,
40
+ }));
41
+ return { items, total };
42
+ }
43
+ export async function getUnreadCount(db, userId) {
44
+ const result = await db
45
+ .select({ count: sql `count(*)::int` })
46
+ .from(notifications)
47
+ .where(and(eq(notifications.userId, userId), eq(notifications.read, false)));
48
+ return result[0]?.count ?? 0;
49
+ }
50
+ export async function markNotificationRead(db, notificationId, userId) {
51
+ await db
52
+ .update(notifications)
53
+ .set({ read: true })
54
+ .where(and(eq(notifications.id, notificationId), eq(notifications.userId, userId)));
55
+ }
56
+ export async function markAllNotificationsRead(db, userId) {
57
+ await db
58
+ .update(notifications)
59
+ .set({ read: true })
60
+ .where(and(eq(notifications.userId, userId), eq(notifications.read, false)));
61
+ }
62
+ export async function deleteNotification(db, notificationId, userId) {
63
+ await db
64
+ .delete(notifications)
65
+ .where(and(eq(notifications.id, notificationId), eq(notifications.userId, userId)));
66
+ }
67
+ export async function createNotification(db, input) {
68
+ const [row] = await db
69
+ .insert(notifications)
70
+ .values({
71
+ userId: input.userId,
72
+ type: input.type,
73
+ title: input.title,
74
+ message: input.message,
75
+ link: input.link ?? null,
76
+ actorId: input.actorId ?? null,
77
+ })
78
+ .returning();
79
+ return {
80
+ id: row.id,
81
+ userId: row.userId,
82
+ type: row.type,
83
+ title: row.title,
84
+ message: row.message,
85
+ link: row.link,
86
+ actorId: row.actorId,
87
+ actorName: null,
88
+ read: row.read,
89
+ createdAt: row.createdAt,
90
+ };
91
+ }
92
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/notification/notification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** Database-backed authorization code store for OAuth2 flows.
2
+ * Codes are single-use with a 10-minute TTL.
3
+ * Safe for multi-process deployments.
4
+ */
5
+ import type { DB } from './types.js';
6
+ /** Store an authorization code */
7
+ export declare function storeAuthCode(db: DB, code: string, userId: string, clientId: string, redirectUri: string): Promise<void>;
8
+ /** Consume an authorization code (single-use). Returns the stored data or null. */
9
+ export declare function consumeAuthCode(db: DB, code: string, clientId: string, redirectUri: string): Promise<{
10
+ userId: string;
11
+ } | null>;
12
+ /** Clean up expired codes */
13
+ export declare function cleanupExpiredCodes(db: DB): Promise<void>;
14
+ //# sourceMappingURL=oauthCodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthCodes.d.ts","sourceRoot":"","sources":["../src/oauthCodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAIrC,kCAAkC;AAClC,wBAAsB,aAAa,CACjC,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,mFAAmF;AACnF,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAgBpC;AAED,6BAA6B;AAC7B,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/D"}
@@ -0,0 +1,40 @@
1
+ /** Database-backed authorization code store for OAuth2 flows.
2
+ * Codes are single-use with a 10-minute TTL.
3
+ * Safe for multi-process deployments.
4
+ */
5
+ import { eq, lt } from 'drizzle-orm';
6
+ import { oauthCodes } from '@commonpub/schema';
7
+ const CODE_TTL_MS = 10 * 60 * 1000; // 10 minutes
8
+ /** Store an authorization code */
9
+ export async function storeAuthCode(db, code, userId, clientId, redirectUri) {
10
+ await db.insert(oauthCodes).values({
11
+ code,
12
+ userId,
13
+ clientId,
14
+ redirectUri,
15
+ expiresAt: new Date(Date.now() + CODE_TTL_MS),
16
+ });
17
+ }
18
+ /** Consume an authorization code (single-use). Returns the stored data or null. */
19
+ export async function consumeAuthCode(db, code, clientId, redirectUri) {
20
+ // Delete and return in one operation for atomicity
21
+ const deleted = await db
22
+ .delete(oauthCodes)
23
+ .where(eq(oauthCodes.code, code))
24
+ .returning();
25
+ if (deleted.length === 0)
26
+ return null;
27
+ const stored = deleted[0];
28
+ if (new Date() > stored.expiresAt)
29
+ return null;
30
+ if (stored.clientId !== clientId)
31
+ return null;
32
+ if (stored.redirectUri !== redirectUri)
33
+ return null;
34
+ return { userId: stored.userId };
35
+ }
36
+ /** Clean up expired codes */
37
+ export async function cleanupExpiredCodes(db) {
38
+ await db.delete(oauthCodes).where(lt(oauthCodes.expiresAt, new Date()));
39
+ }
40
+ //# sourceMappingURL=oauthCodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthCodes.js","sourceRoot":"","sources":["../src/oauthCodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEjD,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAM,EACN,IAAY,EACZ,MAAc,EACd,QAAgB,EAChB,WAAmB;IAEnB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACjC,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,WAAW;QACX,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAM,EACN,IAAY,EACZ,QAAgB,EAChB,WAAmB;IAEnB,mDAAmD;IACnD,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,MAAM,CAAC,UAAU,CAAC;SAClB,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAChC,SAAS,EAAE,CAAC;IAEf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAE3B,IAAI,IAAI,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAM;IAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createProduct, updateProduct, deleteProduct, getProductBySlug, listHubProducts, searchProducts, addContentProduct, removeContentProduct, listContentProducts, syncContentProducts, listProductContent, listHubGallery, } from './product.js';
2
+ export type { ProductListItem, ProductDetail, ContentProductItem, ProductFilters, } from './product.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createProduct, updateProduct, deleteProduct, getProductBySlug, listHubProducts, searchProducts, addContentProduct, removeContentProduct, listContentProducts, syncContentProducts, listProductContent, listHubGallery, } from './product.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,143 @@
1
+ import type { DB, UserRef } from '../types.js';
2
+ export interface ProductListItem {
3
+ id: string;
4
+ name: string;
5
+ slug: string;
6
+ description: string | null;
7
+ category: string | null;
8
+ imageUrl: string | null;
9
+ purchaseUrl: string | null;
10
+ status: string;
11
+ hubId: string;
12
+ createdAt: Date;
13
+ }
14
+ export interface ProductDetail extends ProductListItem {
15
+ specs: Record<string, string> | null;
16
+ datasheetUrl: string | null;
17
+ alternatives: Array<{
18
+ productId: string;
19
+ reason: string;
20
+ }> | null;
21
+ pricing: {
22
+ min?: number;
23
+ max?: number;
24
+ currency?: string;
25
+ asOf?: string;
26
+ } | null;
27
+ updatedAt: Date;
28
+ createdBy: UserRef;
29
+ hub: {
30
+ id: string;
31
+ name: string;
32
+ slug: string;
33
+ hubType: string;
34
+ };
35
+ }
36
+ export interface ContentProductItem {
37
+ id: string;
38
+ productId: string;
39
+ productName: string;
40
+ productSlug: string;
41
+ productImageUrl: string | null;
42
+ quantity: number;
43
+ role: string | null;
44
+ notes: string | null;
45
+ required: boolean;
46
+ sortOrder: number;
47
+ }
48
+ export interface ProductFilters {
49
+ search?: string;
50
+ category?: string;
51
+ hubId?: string;
52
+ status?: 'active' | 'discontinued' | 'preview';
53
+ limit?: number;
54
+ offset?: number;
55
+ }
56
+ export declare function createProduct(db: DB, userId: string, hubId: string, input: {
57
+ name: string;
58
+ description?: string;
59
+ category?: string;
60
+ specs?: Record<string, string>;
61
+ imageUrl?: string;
62
+ purchaseUrl?: string;
63
+ datasheetUrl?: string;
64
+ pricing?: {
65
+ min?: number;
66
+ max?: number;
67
+ currency?: string;
68
+ };
69
+ status?: 'active' | 'discontinued' | 'preview';
70
+ }): Promise<ProductDetail>;
71
+ export declare function updateProduct(db: DB, productId: string, userId: string, input: {
72
+ name?: string;
73
+ description?: string;
74
+ category?: string;
75
+ specs?: Record<string, string>;
76
+ imageUrl?: string;
77
+ purchaseUrl?: string;
78
+ datasheetUrl?: string;
79
+ pricing?: {
80
+ min?: number;
81
+ max?: number;
82
+ currency?: string;
83
+ };
84
+ status?: string;
85
+ }): Promise<ProductDetail | null>;
86
+ export declare function deleteProduct(db: DB, productId: string, userId?: string): Promise<boolean>;
87
+ export declare function getProductBySlug(db: DB, slug: string): Promise<ProductDetail | null>;
88
+ export declare function listHubProducts(db: DB, hubId: string, filters?: Omit<ProductFilters, 'hubId'>): Promise<{
89
+ items: ProductListItem[];
90
+ total: number;
91
+ }>;
92
+ export declare function searchProducts(db: DB, filters?: ProductFilters): Promise<{
93
+ items: ProductListItem[];
94
+ total: number;
95
+ }>;
96
+ export declare function addContentProduct(db: DB, contentId: string, input: {
97
+ productId: string;
98
+ quantity?: number;
99
+ role?: string;
100
+ notes?: string;
101
+ required?: boolean;
102
+ sortOrder?: number;
103
+ }): Promise<ContentProductItem | null>;
104
+ export declare function removeContentProduct(db: DB, contentId: string, productId: string): Promise<boolean>;
105
+ export declare function listContentProducts(db: DB, contentId: string): Promise<ContentProductItem[]>;
106
+ export declare function syncContentProducts(db: DB, contentId: string, items: Array<{
107
+ productId: string;
108
+ quantity?: number;
109
+ role?: string;
110
+ notes?: string;
111
+ required?: boolean;
112
+ }>): Promise<ContentProductItem[]>;
113
+ export declare function listProductContent(db: DB, productId: string, opts?: {
114
+ limit?: number;
115
+ offset?: number;
116
+ }): Promise<{
117
+ items: Array<{
118
+ id: string;
119
+ title: string;
120
+ slug: string;
121
+ type: string;
122
+ coverImageUrl: string | null;
123
+ author: UserRef;
124
+ publishedAt: Date | null;
125
+ }>;
126
+ total: number;
127
+ }>;
128
+ export declare function listHubGallery(db: DB, hubId: string, opts?: {
129
+ limit?: number;
130
+ offset?: number;
131
+ }): Promise<{
132
+ items: Array<{
133
+ id: string;
134
+ title: string;
135
+ slug: string;
136
+ type: string;
137
+ coverImageUrl: string | null;
138
+ author: UserRef;
139
+ publishedAt: Date | null;
140
+ }>;
141
+ total: number;
142
+ }>;
143
+ //# sourceMappingURL=product.d.ts.map