@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
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { createTurnstileMiddleware, TURNSTILE_VERIFY_PATH, handleTurnstileVerify } from './chunk-
|
|
1
|
+
import { createTurnstileMiddleware, TURNSTILE_VERIFY_PATH, handleTurnstileVerify } from './chunk-WTA2QGY5.js';
|
|
2
2
|
import { __export } from './chunk-PZ5AY32C.js';
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
4
|
import { cors } from 'hono/cors';
|
|
5
5
|
import { drizzle } from 'drizzle-orm/d1';
|
|
6
6
|
import { sqliteTable, integer, text, index, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
7
|
-
import { sql, relations, eq, and, count, isNotNull, lte } from 'drizzle-orm';
|
|
7
|
+
import { sql, relations, eq, and, asc, count, isNotNull, lte } from 'drizzle-orm';
|
|
8
8
|
import { createMiddleware } from 'hono/factory';
|
|
9
9
|
import { betterAuth } from 'better-auth';
|
|
10
10
|
import { drizzleAdapter } from 'better-auth/adapters/drizzle';
|
|
@@ -20,8 +20,6 @@ var LeapifyError = class extends Error {
|
|
|
20
20
|
this.code = code;
|
|
21
21
|
this.name = "LeapifyError";
|
|
22
22
|
}
|
|
23
|
-
statusCode;
|
|
24
|
-
code;
|
|
25
23
|
};
|
|
26
24
|
var unauthorized = (message = "Unauthorized") => new LeapifyError(401, "UNAUTHORIZED", message);
|
|
27
25
|
var domainRestricted = () => new LeapifyError(
|
|
@@ -87,6 +85,10 @@ var themes = sqliteTable("themes", {
|
|
|
87
85
|
name: text("name").notNull().unique(),
|
|
88
86
|
path: text("path").notNull().unique(),
|
|
89
87
|
// e.g. "/pirates-cove"
|
|
88
|
+
imageUrl: text("image_url"),
|
|
89
|
+
descriptionEn: text("description_en"),
|
|
90
|
+
descriptionFil: text("description_fil"),
|
|
91
|
+
sortOrder: integer("sort_order").notNull().default(0),
|
|
90
92
|
createdAt: integer("created_at").notNull().$defaultFn(() => Math.floor(Date.now() / 1e3)),
|
|
91
93
|
updatedAt: integer("updated_at").notNull().$defaultFn(() => Math.floor(Date.now() / 1e3))
|
|
92
94
|
});
|
|
@@ -748,7 +750,6 @@ var CacheService = class {
|
|
|
748
750
|
constructor(kv) {
|
|
749
751
|
this.kv = kv;
|
|
750
752
|
}
|
|
751
|
-
kv;
|
|
752
753
|
async get(key) {
|
|
753
754
|
return this.kv.get(key, "json");
|
|
754
755
|
}
|
|
@@ -794,8 +795,6 @@ var SlotsService = class {
|
|
|
794
795
|
this.db = db;
|
|
795
796
|
this.cache = cache;
|
|
796
797
|
}
|
|
797
|
-
db;
|
|
798
|
-
cache;
|
|
799
798
|
kvKey(slug) {
|
|
800
799
|
return `${SLOT_KV_PREFIX}${slug}`;
|
|
801
800
|
}
|
|
@@ -1453,7 +1452,7 @@ faqsRoute.get("/", async (c) => {
|
|
|
1453
1452
|
const data = await cache.getOrSet(
|
|
1454
1453
|
FAQS_KV_KEY,
|
|
1455
1454
|
() => db.query.faqs.findMany({
|
|
1456
|
-
orderBy: (t, { asc }) => [
|
|
1455
|
+
orderBy: (t, { asc: asc2 }) => [asc2(t.sortOrder), asc2(t.createdAt)]
|
|
1457
1456
|
}),
|
|
1458
1457
|
FAQS_TTL
|
|
1459
1458
|
);
|
|
@@ -1844,14 +1843,27 @@ function extensionFromMime(mime) {
|
|
|
1844
1843
|
};
|
|
1845
1844
|
return map[mime] ?? "bin";
|
|
1846
1845
|
}
|
|
1846
|
+
function generatePath(name) {
|
|
1847
|
+
return name.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
1848
|
+
}
|
|
1847
1849
|
var createThemeSchema = z.object({
|
|
1848
1850
|
name: z.string().min(1),
|
|
1849
|
-
|
|
1851
|
+
imageUrl: z.string().url().nullable().optional(),
|
|
1852
|
+
descriptionEn: z.string().nullable().optional(),
|
|
1853
|
+
descriptionFil: z.string().nullable().optional(),
|
|
1854
|
+
sortOrder: z.number().int().default(0)
|
|
1855
|
+
});
|
|
1856
|
+
z.object({
|
|
1857
|
+
name: z.string().min(1).optional(),
|
|
1858
|
+
imageUrl: z.string().url().nullable().optional(),
|
|
1859
|
+
descriptionEn: z.string().nullable().optional(),
|
|
1860
|
+
descriptionFil: z.string().nullable().optional(),
|
|
1861
|
+
sortOrder: z.number().int().optional()
|
|
1850
1862
|
});
|
|
1851
1863
|
var themesRoute = new Hono();
|
|
1852
1864
|
themesRoute.get("/", async (c) => {
|
|
1853
1865
|
const db = createDb(c.env.DB);
|
|
1854
|
-
const data = await db.select().from(themes);
|
|
1866
|
+
const data = await db.select().from(themes).orderBy(asc(themes.sortOrder), asc(themes.createdAt));
|
|
1855
1867
|
return c.json({ data });
|
|
1856
1868
|
});
|
|
1857
1869
|
themesRoute.post(
|
|
@@ -1862,8 +1874,9 @@ themesRoute.post(
|
|
|
1862
1874
|
async (c) => {
|
|
1863
1875
|
const body = c.req.valid("json");
|
|
1864
1876
|
const db = createDb(c.env.DB);
|
|
1877
|
+
const path = generatePath(body.name);
|
|
1865
1878
|
try {
|
|
1866
|
-
const [created] = await db.insert(themes).values(body).returning();
|
|
1879
|
+
const [created] = await db.insert(themes).values({ ...body, path }).returning();
|
|
1867
1880
|
return c.json({ data: created }, 201);
|
|
1868
1881
|
} catch (err) {
|
|
1869
1882
|
if (err.message && err.message.includes("UNIQUE constraint failed")) {
|
|
@@ -1881,8 +1894,12 @@ themesRoute.patch(
|
|
|
1881
1894
|
const { id } = c.req.param();
|
|
1882
1895
|
const body = await c.req.json();
|
|
1883
1896
|
const db = createDb(c.env.DB);
|
|
1897
|
+
const update = { ...body };
|
|
1898
|
+
if (body.name) {
|
|
1899
|
+
update.path = generatePath(body.name);
|
|
1900
|
+
}
|
|
1884
1901
|
try {
|
|
1885
|
-
const [updated] = await db.update(themes).set(
|
|
1902
|
+
const [updated] = await db.update(themes).set(update).where(eq(themes.id, id)).returning();
|
|
1886
1903
|
if (!updated) throw notFound("Theme");
|
|
1887
1904
|
return c.json({ data: updated });
|
|
1888
1905
|
} catch (err) {
|
|
@@ -2120,7 +2137,6 @@ var SesError = class extends Error {
|
|
|
2120
2137
|
this.status = status;
|
|
2121
2138
|
this.name = "SesError";
|
|
2122
2139
|
}
|
|
2123
|
-
status;
|
|
2124
2140
|
/**
|
|
2125
2141
|
* True for errors that are permanent (not worth retrying via SES again).
|
|
2126
2142
|
* 400 BadRequest, 403 Forbidden, 404 NotFound → non-retryable.
|