@access-dlsu/leapify 0.260506.1 → 0.260507.1

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 (87) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/{bun-sqlite-dialect-na--YwnN-QDBSQQTR.cjs → bun-sqlite-dialect-na--YwnN-NIYANHVJ.cjs} +10 -10
  3. package/dist/{bun-sqlite-dialect-na--YwnN-QDBSQQTR.cjs.map → bun-sqlite-dialect-na--YwnN-NIYANHVJ.cjs.map} +1 -1
  4. package/dist/{bun-sqlite-dialect-na--YwnN-CVHVB5NF.js → bun-sqlite-dialect-na--YwnN-XVQNOKSL.js} +4 -4
  5. package/dist/{bun-sqlite-dialect-na--YwnN-CVHVB5NF.js.map → bun-sqlite-dialect-na--YwnN-XVQNOKSL.js.map} +1 -1
  6. package/dist/chunk-5JKLV7IE.cjs +649 -649
  7. package/dist/chunk-5JKLV7IE.cjs.map +1 -1
  8. package/dist/{chunk-DPPGYCX3.cjs → chunk-5OQD5ALM.cjs} +8 -4
  9. package/dist/chunk-5OQD5ALM.cjs.map +1 -0
  10. package/dist/{chunk-UWXYXU7J.cjs → chunk-6MMWL46O.cjs} +379 -375
  11. package/dist/chunk-6MMWL46O.cjs.map +1 -0
  12. package/dist/{chunk-EIF2O2BG.js → chunk-FUCJEA2S.js} +18 -9
  13. package/dist/chunk-FUCJEA2S.js.map +1 -0
  14. package/dist/chunk-GNRL67OU.js +649 -649
  15. package/dist/chunk-GNRL67OU.js.map +1 -1
  16. package/dist/{chunk-ZYHBHSSO.js → chunk-JIZPYG6H.js} +7 -3
  17. package/dist/chunk-JIZPYG6H.js.map +1 -0
  18. package/dist/{chunk-XY4KBWXT.cjs → chunk-JQSZJWBN.cjs} +13 -4
  19. package/dist/chunk-JQSZJWBN.cjs.map +1 -0
  20. package/dist/{chunk-FTSMZYD7.js → chunk-MY37YE52.js} +13 -4
  21. package/dist/chunk-MY37YE52.js.map +1 -0
  22. package/dist/{chunk-57ANXUP7.cjs → chunk-OK6RVPEH.cjs} +319 -310
  23. package/dist/chunk-OK6RVPEH.cjs.map +1 -0
  24. package/dist/{chunk-SXBTHGIL.js → chunk-XJSWMHDL.js} +7 -3
  25. package/dist/chunk-XJSWMHDL.js.map +1 -0
  26. package/dist/client/index.cjs +69 -0
  27. package/dist/client/index.cjs.map +1 -1
  28. package/dist/client/index.d.ts +51 -2
  29. package/dist/client/index.d.ts.map +1 -1
  30. package/dist/client/index.js +69 -0
  31. package/dist/client/index.js.map +1 -1
  32. package/dist/client/types.d.ts +33 -15
  33. package/dist/client/types.d.ts.map +1 -1
  34. package/dist/cron/reminder-emails.d.ts.map +1 -1
  35. package/dist/{d1-sqlite-dialect-C2B7YsIT-CEUMIZZI.js → d1-sqlite-dialect-C2B7YsIT-6TVV7EJ5.js} +4 -4
  36. package/dist/{d1-sqlite-dialect-C2B7YsIT-CEUMIZZI.js.map → d1-sqlite-dialect-C2B7YsIT-6TVV7EJ5.js.map} +1 -1
  37. package/dist/{d1-sqlite-dialect-C2B7YsIT-JUX3YYMX.cjs → d1-sqlite-dialect-C2B7YsIT-PE74FLHQ.cjs} +7 -7
  38. package/dist/{d1-sqlite-dialect-C2B7YsIT-JUX3YYMX.cjs.map → d1-sqlite-dialect-C2B7YsIT-PE74FLHQ.cjs.map} +1 -1
  39. package/dist/db/migrate.d.ts.map +1 -1
  40. package/dist/db/schema/events.d.ts +65 -58
  41. package/dist/db/schema/events.d.ts.map +1 -1
  42. package/dist/db/schema/faqs.d.ts +0 -17
  43. package/dist/db/schema/faqs.d.ts.map +1 -1
  44. package/dist/db/schema/index.d.ts +1 -0
  45. package/dist/db/schema/index.d.ts.map +1 -1
  46. package/dist/db/schema/organizations.d.ts +125 -0
  47. package/dist/db/schema/organizations.d.ts.map +1 -0
  48. package/dist/db/schema/themes.d.ts +0 -19
  49. package/dist/db/schema/themes.d.ts.map +1 -1
  50. package/dist/index.cjs +1927 -1005
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.js +1915 -995
  53. package/dist/index.js.map +1 -1
  54. package/dist/kysely-adapter-C76KJVG7.js +10 -0
  55. package/dist/{kysely-adapter-6CZEASJQ.js.map → kysely-adapter-C76KJVG7.js.map} +1 -1
  56. package/dist/kysely-adapter-TGY4UUP5.cjs +27 -0
  57. package/dist/{kysely-adapter-5ZCECLNV.cjs.map → kysely-adapter-TGY4UUP5.cjs.map} +1 -1
  58. package/dist/{node-sqlite-dialect-QUBEEKKU.cjs → node-sqlite-dialect-B3H37T3R.cjs} +10 -10
  59. package/dist/{node-sqlite-dialect-QUBEEKKU.cjs.map → node-sqlite-dialect-B3H37T3R.cjs.map} +1 -1
  60. package/dist/{node-sqlite-dialect-HEMUZ4B2.js → node-sqlite-dialect-GDP7ZE54.js} +4 -4
  61. package/dist/{node-sqlite-dialect-HEMUZ4B2.js.map → node-sqlite-dialect-GDP7ZE54.js.map} +1 -1
  62. package/dist/queues/handlers.d.ts.map +1 -1
  63. package/dist/routes/events.d.ts.map +1 -1
  64. package/dist/routes/health.d.ts.map +1 -1
  65. package/dist/routes/organizations.d.ts +4 -0
  66. package/dist/routes/organizations.d.ts.map +1 -0
  67. package/dist/routes/themes.d.ts.map +1 -1
  68. package/dist/routes/users.d.ts.map +1 -1
  69. package/dist/services/contentful-management.d.ts +6 -21
  70. package/dist/services/contentful-management.d.ts.map +1 -1
  71. package/dist/services/resend.d.ts +2 -1
  72. package/dist/services/resend.d.ts.map +1 -1
  73. package/dist/services/snapshot.d.ts +14 -9
  74. package/dist/services/snapshot.d.ts.map +1 -1
  75. package/dist/worker.js +2755 -1808
  76. package/dist/worker.js.map +1 -1
  77. package/package.json +2 -1
  78. package/dist/chunk-57ANXUP7.cjs.map +0 -1
  79. package/dist/chunk-DPPGYCX3.cjs.map +0 -1
  80. package/dist/chunk-EIF2O2BG.js.map +0 -1
  81. package/dist/chunk-FTSMZYD7.js.map +0 -1
  82. package/dist/chunk-SXBTHGIL.js.map +0 -1
  83. package/dist/chunk-UWXYXU7J.cjs.map +0 -1
  84. package/dist/chunk-XY4KBWXT.cjs.map +0 -1
  85. package/dist/chunk-ZYHBHSSO.js.map +0 -1
  86. package/dist/kysely-adapter-5ZCECLNV.cjs +0 -27
  87. package/dist/kysely-adapter-6CZEASJQ.js +0 -10
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * const events = await api.getEvents()
16
16
  */
17
- export type { LeapEvent, SlotInfo, UserProfile, BookmarkEntry, Faq, Theme, SiteConfig, ToggleBookmarkResult, LeapifyErrorBody, UserRole, EventStatus, CreateEventBody, CreateFaqBody, SnapshotResult, HealthResponse, RuntimeConfig, } from "./types";
17
+ export type { LeapEvent, SlotInfo, UserProfile, BookmarkEntry, Faq, Theme, Organization, SiteConfig, ToggleBookmarkResult, LeapifyErrorBody, UserRole, EventStatus, CreateEventBody, CreateFaqBody, SnapshotResult, HealthResponse, RuntimeConfig, } from "./types";
18
18
  export { createLeapifyAuthClient, signInWithGoogleRedirect, syncCookieSessionToStorage, getLeapifyToken, signOut, } from "./auth";
19
19
  export type { LeapifyAuthClient } from "./auth";
20
20
  export { solvePowChallenge } from "./pow";
@@ -55,7 +55,7 @@ export declare const LEAPIFY_ERROR_CODES: {
55
55
  readonly INTERNAL_ERROR: "INTERNAL_ERROR";
56
56
  };
57
57
  export type LeapifyErrorCode = keyof typeof LEAPIFY_ERROR_CODES;
58
- import type { LeapEvent, SlotInfo, UserProfile, BookmarkEntry, Faq, Theme, SiteConfig, ToggleBookmarkResult, CreateEventBody, CreateFaqBody, SnapshotResult, HealthResponse } from "./types";
58
+ import type { LeapEvent, SlotInfo, UserProfile, BookmarkEntry, Faq, Theme, Organization, SiteConfig, ToggleBookmarkResult, CreateEventBody, CreateFaqBody, SnapshotResult, HealthResponse } from "./types";
59
59
  type GetTokenFn = () => Promise<string | null>;
60
60
  /**
61
61
  * Creates a typed Leapify API client bound to a base URL.
@@ -94,6 +94,18 @@ export declare function createLeapifyClient(baseUrl: string, getToken?: GetToken
94
94
  * Returns all published events. Response is ETag-cached for 7 days.
95
95
  */
96
96
  getEvents(): Promise<LeapEvent[]>;
97
+ /**
98
+ * GET /api/events/admin — admin only.
99
+ * Returns all events regardless of status.
100
+ */
101
+ getAdminEvents(): Promise<LeapEvent[]>;
102
+ /**
103
+ * POST /api/events/admin/publish — admin only.
104
+ * Batch publish queued events immediately or schedule them for later.
105
+ */
106
+ batchPublish(ids: string[], releaseAt?: number): Promise<{
107
+ updated: number;
108
+ }>;
97
109
  /**
98
110
  * GET /api/events/:slug
99
111
  * Returns a single published event by slug.
@@ -115,6 +127,11 @@ export declare function createLeapifyClient(baseUrl: string, getToken?: GetToken
115
127
  * Updates an existing event by slug.
116
128
  */
117
129
  updateEvent(slug: string, data: Partial<CreateEventBody>): Promise<LeapEvent>;
130
+ /**
131
+ * DELETE /api/events/:slug — admin only.
132
+ * Deletes an event.
133
+ */
134
+ deleteEvent(slug: string): Promise<void>;
118
135
  /**
119
136
  * GET /api/themes
120
137
  * Returns all themes.
@@ -132,12 +149,44 @@ export declare function createLeapifyClient(baseUrl: string, getToken?: GetToken
132
149
  * DELETE /api/themes/:id — admin only.
133
150
  */
134
151
  deleteTheme(id: string): Promise<void>;
152
+ /**
153
+ * GET /api/organizations
154
+ * Returns all organizations.
155
+ */
156
+ getOrganizations(): Promise<Organization[]>;
157
+ /**
158
+ * POST /api/organizations — admin only.
159
+ */
160
+ createOrganization(data: Omit<Organization, "id" | "createdAt">): Promise<Organization>;
161
+ /**
162
+ * PATCH /api/organizations/:id — admin only.
163
+ */
164
+ updateOrganization(id: string, data: Partial<Omit<Organization, "id" | "createdAt">>): Promise<Organization>;
165
+ /**
166
+ * DELETE /api/organizations/:id — admin only.
167
+ */
168
+ deleteOrganization(id: string): Promise<void>;
135
169
  /**
136
170
  * GET /api/users/me
137
171
  * Returns the authenticated user's profile, or null for guests.
138
172
  * Use `profile.role` to gate admin UI.
139
173
  */
140
174
  getMe(): Promise<UserProfile | null>;
175
+ /**
176
+ * GET /api/users — admin only.
177
+ * Returns all registered users.
178
+ */
179
+ getUsers(): Promise<UserProfile[]>;
180
+ /**
181
+ * PATCH /api/users/:id/role — admin only.
182
+ * Changes a user's role.
183
+ */
184
+ updateUserRole(id: string, role: string): Promise<UserProfile>;
185
+ /**
186
+ * POST /api/users/by-email — admin only.
187
+ * Finds or creates a user by email and sets their role.
188
+ */
189
+ upsertUserByEmail(email: string, role: string): Promise<UserProfile>;
141
190
  /**
142
191
  * GET /api/users/me/bookmarks
143
192
  * Returns the authenticated user's bookmarked events.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -1014,6 +1014,20 @@ function createLeapifyClient(baseUrl, getToken) {
1014
1014
  getEvents() {
1015
1015
  return get("/api/events");
1016
1016
  },
1017
+ /**
1018
+ * GET /api/events/admin — admin only.
1019
+ * Returns all events regardless of status.
1020
+ */
1021
+ getAdminEvents() {
1022
+ return get("/api/events/admin");
1023
+ },
1024
+ /**
1025
+ * POST /api/events/admin/publish — admin only.
1026
+ * Batch publish queued events immediately or schedule them for later.
1027
+ */
1028
+ batchPublish(ids, releaseAt) {
1029
+ return post("/api/events/admin/publish", { ids, releaseAt });
1030
+ },
1017
1031
  /**
1018
1032
  * GET /api/events/:slug
1019
1033
  * Returns a single published event by slug.
@@ -1043,6 +1057,13 @@ function createLeapifyClient(baseUrl, getToken) {
1043
1057
  updateEvent(slug, data) {
1044
1058
  return patch(`/api/events/${encodeURIComponent(slug)}`, data);
1045
1059
  },
1060
+ /**
1061
+ * DELETE /api/events/:slug — admin only.
1062
+ * Deletes an event.
1063
+ */
1064
+ deleteEvent(slug) {
1065
+ return del(`/api/events/${encodeURIComponent(slug)}`);
1066
+ },
1046
1067
  // ── Themes ─────────────────────────────────────────────────────────────
1047
1068
  /**
1048
1069
  * GET /api/themes
@@ -1069,6 +1090,32 @@ function createLeapifyClient(baseUrl, getToken) {
1069
1090
  deleteTheme(id) {
1070
1091
  return del(`/api/themes/${encodeURIComponent(id)}`);
1071
1092
  },
1093
+ // ── Organizations ──────────────────────────────────────────────────────
1094
+ /**
1095
+ * GET /api/organizations
1096
+ * Returns all organizations.
1097
+ */
1098
+ getOrganizations() {
1099
+ return get("/api/organizations");
1100
+ },
1101
+ /**
1102
+ * POST /api/organizations — admin only.
1103
+ */
1104
+ createOrganization(data) {
1105
+ return post("/api/organizations", data);
1106
+ },
1107
+ /**
1108
+ * PATCH /api/organizations/:id — admin only.
1109
+ */
1110
+ updateOrganization(id, data) {
1111
+ return patch(`/api/organizations/${encodeURIComponent(id)}`, data);
1112
+ },
1113
+ /**
1114
+ * DELETE /api/organizations/:id — admin only.
1115
+ */
1116
+ deleteOrganization(id) {
1117
+ return del(`/api/organizations/${encodeURIComponent(id)}`);
1118
+ },
1072
1119
  // ── Users ──────────────────────────────────────────────────────────────
1073
1120
  /**
1074
1121
  * GET /api/users/me
@@ -1078,6 +1125,28 @@ function createLeapifyClient(baseUrl, getToken) {
1078
1125
  getMe() {
1079
1126
  return get("/api/users/me");
1080
1127
  },
1128
+ // ── Admin: User Management ────────────────────────────────────────────
1129
+ /**
1130
+ * GET /api/users — admin only.
1131
+ * Returns all registered users.
1132
+ */
1133
+ getUsers() {
1134
+ return get("/api/users");
1135
+ },
1136
+ /**
1137
+ * PATCH /api/users/:id/role — admin only.
1138
+ * Changes a user's role.
1139
+ */
1140
+ updateUserRole(id, role) {
1141
+ return patch(`/api/users/${encodeURIComponent(id)}/role`, { role });
1142
+ },
1143
+ /**
1144
+ * POST /api/users/by-email — admin only.
1145
+ * Finds or creates a user by email and sets their role.
1146
+ */
1147
+ upsertUserByEmail(email, role) {
1148
+ return post("/api/users/by-email", { email, role });
1149
+ },
1081
1150
  // ── Bookmarks ──────────────────────────────────────────────────────────
1082
1151
  /**
1083
1152
  * GET /api/users/me/bookmarks