@access-dlsu/leapify 0.260601.2 → 0.260602.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.
- package/dist/auth/auth.d.ts +2 -2
- package/dist/{chunk-2JEY6TSO.js → chunk-WTA2QGY5.js} +4 -2
- package/dist/chunk-WTA2QGY5.js.map +1 -0
- package/dist/{chunk-X4OB4DZ3.cjs → chunk-ZV4TIJXI.cjs} +4 -2
- package/dist/chunk-ZV4TIJXI.cjs.map +1 -0
- package/dist/client/auth.d.ts +41 -41
- package/dist/client/index.cjs +0 -2
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +0 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/types.d.ts +4 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/db/schema/themes.d.ts +74 -0
- package/dist/db/schema/themes.d.ts.map +1 -1
- package/dist/index.cjs +30 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +29 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/middleware/turnstile-challenge.cjs +6 -6
- package/dist/lib/middleware/turnstile-challenge.d.ts.map +1 -1
- package/dist/lib/middleware/turnstile-challenge.js +1 -1
- package/dist/routes/themes.d.ts.map +1 -1
- package/dist/worker.js +30 -12
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-2JEY6TSO.js.map +0 -1
- package/dist/chunk-X4OB4DZ3.cjs.map +0 -1
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZV4TIJXI_cjs = require('../../chunk-ZV4TIJXI.cjs');
|
|
4
4
|
require('../../chunk-Q7SFCCGT.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "TURNSTILE_COOKIE_NAME", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkZV4TIJXI_cjs.TURNSTILE_COOKIE_NAME; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "TURNSTILE_PATH", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkZV4TIJXI_cjs.TURNSTILE_PATH; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "TURNSTILE_VERIFY_PATH", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkZV4TIJXI_cjs.TURNSTILE_VERIFY_PATH; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "createTurnstileMiddleware", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkZV4TIJXI_cjs.createTurnstileMiddleware; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "handleTurnstileVerify", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkZV4TIJXI_cjs.handleTurnstileVerify; }
|
|
27
27
|
});
|
|
28
28
|
//# sourceMappingURL=turnstile-challenge.cjs.map
|
|
29
29
|
//# sourceMappingURL=turnstile-challenge.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnstile-challenge.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/turnstile-challenge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,cAAc,mCAAmC,CAAA;AAE9D,eAAO,MAAM,qBAAqB,0CAA6B,CAAA;AAE/D,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"turnstile-challenge.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/turnstile-challenge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,cAAc,mCAAmC,CAAA;AAE9D,eAAO,MAAM,qBAAqB,0CAA6B,CAAA;AAE/D,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AA2HxD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,OAAO,CAAC;IAAE,QAAQ,EAAE,eAAe,CAAA;CAAE,CAAC;;;;;;;;;;;;;;;;;;oEA6C1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB;cACH,eAAe;yBA2BpD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { TURNSTILE_COOKIE_NAME, TURNSTILE_PATH, TURNSTILE_VERIFY_PATH, createTurnstileMiddleware, handleTurnstileVerify } from '../../chunk-
|
|
1
|
+
export { TURNSTILE_COOKIE_NAME, TURNSTILE_PATH, TURNSTILE_VERIFY_PATH, createTurnstileMiddleware, handleTurnstileVerify } from '../../chunk-WTA2QGY5.js';
|
|
2
2
|
import '../../chunk-PZ5AY32C.js';
|
|
3
3
|
//# sourceMappingURL=turnstile-challenge.js.map
|
|
4
4
|
//# sourceMappingURL=turnstile-challenge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/routes/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/routes/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA+B1C,eAAO,MAAM,WAAW,yDAAyB,CAAA"}
|
package/dist/worker.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Hono } from 'hono';
|
|
|
2
2
|
import { cors } from 'hono/cors';
|
|
3
3
|
import { drizzle } from 'drizzle-orm/d1';
|
|
4
4
|
import { sqliteTable, integer, text, index, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
5
|
-
import { sql, relations, eq, and, count, isNotNull, lte } from 'drizzle-orm';
|
|
5
|
+
import { sql, relations, eq, and, asc, count, isNotNull, lte } from 'drizzle-orm';
|
|
6
6
|
import { createMiddleware } from 'hono/factory';
|
|
7
7
|
import { betterAuth } from 'better-auth';
|
|
8
8
|
import { drizzleAdapter } from 'better-auth/adapters/drizzle';
|
|
@@ -24,8 +24,6 @@ var LeapifyError = class extends Error {
|
|
|
24
24
|
this.code = code;
|
|
25
25
|
this.name = "LeapifyError";
|
|
26
26
|
}
|
|
27
|
-
statusCode;
|
|
28
|
-
code;
|
|
29
27
|
};
|
|
30
28
|
var unauthorized = (message = "Unauthorized") => new LeapifyError(401, "UNAUTHORIZED", message);
|
|
31
29
|
var domainRestricted = () => new LeapifyError(
|
|
@@ -91,6 +89,10 @@ var themes = sqliteTable("themes", {
|
|
|
91
89
|
name: text("name").notNull().unique(),
|
|
92
90
|
path: text("path").notNull().unique(),
|
|
93
91
|
// e.g. "/pirates-cove"
|
|
92
|
+
imageUrl: text("image_url"),
|
|
93
|
+
descriptionEn: text("description_en"),
|
|
94
|
+
descriptionFil: text("description_fil"),
|
|
95
|
+
sortOrder: integer("sort_order").notNull().default(0),
|
|
94
96
|
createdAt: integer("created_at").notNull().$defaultFn(() => Math.floor(Date.now() / 1e3)),
|
|
95
97
|
updatedAt: integer("updated_at").notNull().$defaultFn(() => Math.floor(Date.now() / 1e3))
|
|
96
98
|
});
|
|
@@ -405,6 +407,8 @@ var EXEMPT_PATHS = [
|
|
|
405
407
|
"/api/classes",
|
|
406
408
|
"/api/faqs",
|
|
407
409
|
"/api/config",
|
|
410
|
+
"/api/themes",
|
|
411
|
+
"/api/organizations",
|
|
408
412
|
TURNSTILE_VERIFY_PATH
|
|
409
413
|
];
|
|
410
414
|
function base64urlEncode(bytes) {
|
|
@@ -906,7 +910,6 @@ var CacheService = class {
|
|
|
906
910
|
constructor(kv) {
|
|
907
911
|
this.kv = kv;
|
|
908
912
|
}
|
|
909
|
-
kv;
|
|
910
913
|
async get(key) {
|
|
911
914
|
return this.kv.get(key, "json");
|
|
912
915
|
}
|
|
@@ -952,8 +955,6 @@ var SlotsService = class {
|
|
|
952
955
|
this.db = db;
|
|
953
956
|
this.cache = cache;
|
|
954
957
|
}
|
|
955
|
-
db;
|
|
956
|
-
cache;
|
|
957
958
|
kvKey(slug) {
|
|
958
959
|
return `${SLOT_KV_PREFIX}${slug}`;
|
|
959
960
|
}
|
|
@@ -1611,7 +1612,7 @@ faqsRoute.get("/", async (c) => {
|
|
|
1611
1612
|
const data = await cache.getOrSet(
|
|
1612
1613
|
FAQS_KV_KEY,
|
|
1613
1614
|
() => db.query.faqs.findMany({
|
|
1614
|
-
orderBy: (t, { asc }) => [
|
|
1615
|
+
orderBy: (t, { asc: asc2 }) => [asc2(t.sortOrder), asc2(t.createdAt)]
|
|
1615
1616
|
}),
|
|
1616
1617
|
FAQS_TTL
|
|
1617
1618
|
);
|
|
@@ -2002,14 +2003,27 @@ function extensionFromMime(mime) {
|
|
|
2002
2003
|
};
|
|
2003
2004
|
return map[mime] ?? "bin";
|
|
2004
2005
|
}
|
|
2006
|
+
function generatePath(name) {
|
|
2007
|
+
return name.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
2008
|
+
}
|
|
2005
2009
|
var createThemeSchema = z.object({
|
|
2006
2010
|
name: z.string().min(1),
|
|
2007
|
-
|
|
2011
|
+
imageUrl: z.string().url().nullable().optional(),
|
|
2012
|
+
descriptionEn: z.string().nullable().optional(),
|
|
2013
|
+
descriptionFil: z.string().nullable().optional(),
|
|
2014
|
+
sortOrder: z.number().int().default(0)
|
|
2015
|
+
});
|
|
2016
|
+
z.object({
|
|
2017
|
+
name: z.string().min(1).optional(),
|
|
2018
|
+
imageUrl: z.string().url().nullable().optional(),
|
|
2019
|
+
descriptionEn: z.string().nullable().optional(),
|
|
2020
|
+
descriptionFil: z.string().nullable().optional(),
|
|
2021
|
+
sortOrder: z.number().int().optional()
|
|
2008
2022
|
});
|
|
2009
2023
|
var themesRoute = new Hono();
|
|
2010
2024
|
themesRoute.get("/", async (c) => {
|
|
2011
2025
|
const db = createDb(c.env.DB);
|
|
2012
|
-
const data = await db.select().from(themes);
|
|
2026
|
+
const data = await db.select().from(themes).orderBy(asc(themes.sortOrder), asc(themes.createdAt));
|
|
2013
2027
|
return c.json({ data });
|
|
2014
2028
|
});
|
|
2015
2029
|
themesRoute.post(
|
|
@@ -2020,8 +2034,9 @@ themesRoute.post(
|
|
|
2020
2034
|
async (c) => {
|
|
2021
2035
|
const body = c.req.valid("json");
|
|
2022
2036
|
const db = createDb(c.env.DB);
|
|
2037
|
+
const path = generatePath(body.name);
|
|
2023
2038
|
try {
|
|
2024
|
-
const [created] = await db.insert(themes).values(body).returning();
|
|
2039
|
+
const [created] = await db.insert(themes).values({ ...body, path }).returning();
|
|
2025
2040
|
return c.json({ data: created }, 201);
|
|
2026
2041
|
} catch (err) {
|
|
2027
2042
|
if (err.message && err.message.includes("UNIQUE constraint failed")) {
|
|
@@ -2039,8 +2054,12 @@ themesRoute.patch(
|
|
|
2039
2054
|
const { id } = c.req.param();
|
|
2040
2055
|
const body = await c.req.json();
|
|
2041
2056
|
const db = createDb(c.env.DB);
|
|
2057
|
+
const update = { ...body };
|
|
2058
|
+
if (body.name) {
|
|
2059
|
+
update.path = generatePath(body.name);
|
|
2060
|
+
}
|
|
2042
2061
|
try {
|
|
2043
|
-
const [updated] = await db.update(themes).set(
|
|
2062
|
+
const [updated] = await db.update(themes).set(update).where(eq(themes.id, id)).returning();
|
|
2044
2063
|
if (!updated) throw notFound("Theme");
|
|
2045
2064
|
return c.json({ data: updated });
|
|
2046
2065
|
} catch (err) {
|
|
@@ -2278,7 +2297,6 @@ var SesError = class extends Error {
|
|
|
2278
2297
|
this.status = status;
|
|
2279
2298
|
this.name = "SesError";
|
|
2280
2299
|
}
|
|
2281
|
-
status;
|
|
2282
2300
|
/**
|
|
2283
2301
|
* True for errors that are permanent (not worth retrying via SES again).
|
|
2284
2302
|
* 400 BadRequest, 403 Forbidden, 404 NotFound → non-retryable.
|