@monkeyplus/flow 6.0.37 → 6.0.39

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 (77) hide show
  1. package/cms/dist/assets/AuthForm-D9zqy79A.js +1 -0
  2. package/cms/dist/assets/Button-BxK__vWW.js +3 -0
  3. package/cms/dist/assets/Checkbox-ZAz-DF2K.js +1 -0
  4. package/cms/dist/assets/Cms-C6Sdowsy.js +1 -0
  5. package/cms/dist/assets/Cms-Dy96x5P5.js +1 -0
  6. package/cms/dist/assets/Cms.vue_vue_type_script_setup_true_lang-DibRYDhk.js +1 -0
  7. package/cms/dist/assets/Collection-CeT7sqBS.js +1 -0
  8. package/cms/dist/assets/Collection-CkmskhNr.js +1 -0
  9. package/cms/dist/assets/Collection.vue_vue_type_script_setup_true_lang-CLuwC8Uj.js +4 -0
  10. package/cms/dist/assets/DropdownMenu-D5x3rHhs.js +1 -0
  11. package/cms/dist/assets/Entry-C0oNgptm.js +1 -0
  12. package/cms/dist/assets/Entry-DK9arl_r.js +1 -0
  13. package/cms/dist/assets/Entry-DiaxpV9P.js +1 -0
  14. package/cms/dist/assets/Entry-DnIfmeOq.js +1 -0
  15. package/cms/dist/assets/Entry.vue_vue_type_script_setup_true_lang-DQpUwjD1.js +1 -0
  16. package/cms/dist/assets/Entry.vue_vue_type_script_setup_true_lang-Lpiwz51b.js +1 -0
  17. package/cms/dist/assets/Fields-25hjY31I.js +210 -0
  18. package/cms/dist/assets/Fields-CnUfMg91.css +1 -0
  19. package/cms/dist/assets/FormField-j7eHJ9wN.js +1 -0
  20. package/cms/dist/assets/Input-1aJl-rMT.js +1 -0
  21. package/cms/dist/assets/Main-I4OsPHC_.js +1 -0
  22. package/cms/dist/assets/Media-BiUrdhiy.js +64 -0
  23. package/cms/dist/assets/Modal-CL4NZ42V.js +1 -0
  24. package/cms/dist/assets/Page-C2SS3gyg.js +1 -0
  25. package/cms/dist/assets/PageSideForm-BZD26RtU.js +1 -0
  26. package/cms/dist/assets/PageSideForm-CEDt6M5O.js +1 -0
  27. package/cms/dist/assets/Pages-BQ95j-9A.js +1 -0
  28. package/cms/dist/assets/Pages-Ci78caHB.js +1 -0
  29. package/cms/dist/assets/Preview-DV3zHCWR.js +1 -0
  30. package/cms/dist/assets/RovingFocusGroup-CnDWyi3J.js +1 -0
  31. package/cms/dist/assets/RovingFocusItem-VyijGu8z.js +1 -0
  32. package/cms/dist/assets/Settings-BygzRFRi.js +1 -0
  33. package/cms/dist/assets/Sidebar-RRp6XCg_.js +1 -0
  34. package/cms/dist/assets/TooltipProvider-B0Lr7v95.js +1 -0
  35. package/cms/dist/assets/app-DFMmXmuL.js +1 -0
  36. package/cms/dist/assets/app-DyuvC6pP.js +1 -0
  37. package/cms/dist/assets/app.vue_vue_type_script_setup_true_lang-a-0WngBC.js +13 -0
  38. package/cms/dist/assets/auth-DCLgP-Ce.js +3 -0
  39. package/cms/dist/assets/cms-BfAB9urh.js +1 -0
  40. package/cms/dist/assets/dist-gC8hGhMx.js +1 -0
  41. package/cms/dist/assets/index-B-MXuuNZ.css +2 -0
  42. package/cms/dist/assets/index.spa-_gVd6eNI.js +18 -0
  43. package/cms/dist/assets/index.vue_vue_type_script_setup_true_lang-mq8D_l8z.js +1 -0
  44. package/cms/dist/assets/not-found-DKsTsHpk.js +1 -0
  45. package/cms/dist/assets/not-found-DclK62tc.js +1 -0
  46. package/cms/dist/assets/pages-DLGXw_J5.js +1 -0
  47. package/cms/dist/assets/pages-DhCx_5RP.js +1 -0
  48. package/cms/dist/assets/preview-EralP1Qk.js +1 -0
  49. package/cms/dist/assets/useCmsBreadcrumb-Cvg0a25f.js +1 -0
  50. package/cms/dist/assets/useOverlay-42WuI5Jo.js +1 -0
  51. package/cms/dist/assets/usePortal-BkuxWRnT.js +1 -0
  52. package/cms/dist/assets/useToast-CDyjwefJ.js +1 -0
  53. package/cms/dist/assets/utils-DsgHgvSL.js +1 -0
  54. package/cms/dist/assets/virtualizer-IKP0IcQd.js +1 -0
  55. package/cms/dist/index.spa.html +13 -0
  56. package/cms/server/database/schema.d.ts +257 -261
  57. package/cms/server/database/schema.mjs +58 -38
  58. package/cms/server/middleware/auth.d.ts +2 -0
  59. package/cms/server/middleware/auth.mjs +18 -0
  60. package/cms/server/plugins/migrate.d.ts +2 -0
  61. package/cms/server/plugins/migrate.mjs +16 -0
  62. package/cms/server/routes/api/auth/init/index.get.d.ts +2 -0
  63. package/cms/server/routes/api/auth/init/index.get.mjs +8 -0
  64. package/cms/server/routes/api/auth/init/index.post.d.ts +2 -0
  65. package/cms/server/routes/api/auth/init/index.post.mjs +18 -0
  66. package/cms/server/routes/api/repos/remote/[repo]/files/[branch]/index.mjs +5 -1
  67. package/cms/server/utils/auth.d.ts +1139 -0
  68. package/cms/server/utils/auth.mjs +79 -8
  69. package/cms/server/utils/db.d.ts +4 -2
  70. package/cms/server/utils/db.mjs +7 -4
  71. package/cms/server/utils/github.d.ts +0 -1
  72. package/cms/server/utils/github.mjs +15 -25
  73. package/modules/cms/server/api/admin.mjs +2 -1
  74. package/package.json +2 -2
  75. package/src/public/nitro.mjs +11 -1
  76. package/src/runtime/nitro-plugin.mjs +0 -3
  77. package/src/runtime/ssg.mjs +0 -3
@@ -1,43 +1,63 @@
1
- import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
2
- export const user = sqliteTable("user", {
1
+ import { boolean, index, snakeCase, text, timestamp } from "drizzle-orm/pg-core";
2
+ export const auth = snakeCase.schema("auth");
3
+ export const user = auth.table("user", {
3
4
  id: text("id").primaryKey(),
4
5
  name: text("name").notNull(),
5
6
  email: text("email").notNull().unique(),
6
- emailVerified: integer("emailVerified", { mode: "boolean" }).notNull(),
7
+ emailVerified: boolean("email_verified").default(false).notNull(),
7
8
  image: text("image"),
8
- createdAt: integer("createdAt", { mode: "timestamp" }).notNull(),
9
- updatedAt: integer("updatedAt", { mode: "timestamp" }).notNull()
10
- });
11
- export const session = sqliteTable("session", {
12
- id: text("id").primaryKey(),
13
- expiresAt: integer("expiresAt", { mode: "timestamp" }).notNull(),
14
- token: text("token").notNull().unique(),
15
- createdAt: integer("createdAt", { mode: "timestamp" }).notNull(),
16
- updatedAt: integer("updatedAt", { mode: "timestamp" }).notNull(),
17
- ipAddress: text("ipAddress"),
18
- userAgent: text("userAgent"),
19
- userId: text("userId").notNull().references(() => user.id)
20
- });
21
- export const account = sqliteTable("account", {
22
- id: text("id").primaryKey(),
23
- accountId: text("accountId").notNull(),
24
- providerId: text("providerId").notNull(),
25
- userId: text("userId").notNull().references(() => user.id),
26
- accessToken: text("accessToken"),
27
- refreshToken: text("refreshToken"),
28
- idToken: text("idToken"),
29
- accessTokenExpiresAt: integer("accessTokenExpiresAt", { mode: "timestamp" }),
30
- refreshTokenExpiresAt: integer("refreshTokenExpiresAt", { mode: "timestamp" }),
31
- scope: text("scope"),
32
- password: text("password"),
33
- createdAt: integer("createdAt", { mode: "timestamp" }).notNull(),
34
- updatedAt: integer("updatedAt", { mode: "timestamp" }).notNull()
35
- });
36
- export const verification = sqliteTable("verification", {
37
- id: text("id").primaryKey(),
38
- identifier: text("identifier").notNull(),
39
- value: text("value").notNull(),
40
- expiresAt: integer("expiresAt", { mode: "timestamp" }).notNull(),
41
- createdAt: integer("createdAt", { mode: "timestamp" }).notNull(),
42
- updatedAt: integer("updatedAt", { mode: "timestamp" }).notNull()
9
+ createdAt: timestamp("created_at").defaultNow().notNull(),
10
+ updatedAt: timestamp("updated_at").defaultNow().$onUpdate(() => /* @__PURE__ */ new Date()).notNull(),
11
+ role: text("role"),
12
+ banned: boolean("banned").default(false),
13
+ banReason: text("ban_reason"),
14
+ banExpires: timestamp("ban_expires"),
15
+ username: text("username").unique(),
16
+ displayUsername: text("display_username")
43
17
  });
18
+ export const session = auth.table(
19
+ "session",
20
+ {
21
+ id: text("id").primaryKey(),
22
+ expiresAt: timestamp("expires_at").notNull(),
23
+ token: text("token").notNull().unique(),
24
+ createdAt: timestamp("created_at").defaultNow().notNull(),
25
+ updatedAt: timestamp("updated_at").$onUpdate(() => /* @__PURE__ */ new Date()).notNull(),
26
+ ipAddress: text("ip_address"),
27
+ userAgent: text("user_agent"),
28
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
29
+ impersonatedBy: text("impersonated_by")
30
+ },
31
+ (table) => [index("session_userId_idx").on(table.userId)]
32
+ );
33
+ export const account = auth.table(
34
+ "account",
35
+ {
36
+ id: text("id").primaryKey(),
37
+ accountId: text("account_id").notNull(),
38
+ providerId: text("provider_id").notNull(),
39
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
40
+ accessToken: text("access_token"),
41
+ refreshToken: text("refresh_token"),
42
+ idToken: text("id_token"),
43
+ accessTokenExpiresAt: timestamp("access_token_expires_at"),
44
+ refreshTokenExpiresAt: timestamp("refresh_token_expires_at"),
45
+ scope: text("scope"),
46
+ password: text("password"),
47
+ createdAt: timestamp("created_at").defaultNow().notNull(),
48
+ updatedAt: timestamp("updated_at").$onUpdate(() => /* @__PURE__ */ new Date()).notNull()
49
+ },
50
+ (table) => [index("account_userId_idx").on(table.userId)]
51
+ );
52
+ export const verification = auth.table(
53
+ "verification",
54
+ {
55
+ id: text("id").primaryKey(),
56
+ identifier: text("identifier").notNull(),
57
+ value: text("value").notNull(),
58
+ expiresAt: timestamp("expires_at").notNull(),
59
+ createdAt: timestamp("created_at").defaultNow().notNull(),
60
+ updatedAt: timestamp("updated_at").defaultNow().$onUpdate(() => /* @__PURE__ */ new Date()).notNull()
61
+ },
62
+ (table) => [index("verification_identifier_idx").on(table.identifier)]
63
+ );
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { defineHandler, HTTPError } from "nitro";
2
+ import { auth } from "#cms-utils/auth";
3
+ export default defineHandler(async (event) => {
4
+ if (event.url.pathname.startsWith("/api/repos") || event.url.pathname.startsWith("/api/draft")) {
5
+ const session = await auth.api.getSession({
6
+ headers: event.req.headers
7
+ });
8
+ if (!session?.user) {
9
+ return new HTTPError({
10
+ statusCode: 401,
11
+ statusMessage: "Unauthorized"
12
+ });
13
+ }
14
+ event.context.user = session.user;
15
+ event.context.session = session.session;
16
+ event.context.auth = session;
17
+ }
18
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import process from "node:process";
2
+ import { migrate } from "drizzle-orm/node-postgres/migrator";
3
+ import { definePlugin } from "nitro";
4
+ import { db } from "../utils/db.mjs";
5
+ export default definePlugin(async (nitroApp) => {
6
+ if (process.env.NODE_ENV === "production" || process.env.RUN_MIGRATIONS === "true") {
7
+ console.log("[Migrations] Iniciando ejecuci\xF3n de migraciones de la base de datos...");
8
+ try {
9
+ await migrate(db, { migrationsFolder: "./drizzle" });
10
+ console.log("[Migrations] Migraciones completadas exitosamente.");
11
+ } catch (error) {
12
+ console.error("[Migrations] Error cr\xEDtico al ejecutar las migraciones:", error);
13
+ process.exit(1);
14
+ }
15
+ }
16
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { defineEventHandler } from "nitro/h3";
2
+ import { db } from "#cms-utils/db";
3
+ export default defineEventHandler(async () => {
4
+ const user = await db.query.user.findFirst();
5
+ return {
6
+ init: !!user
7
+ };
8
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { defineEventHandler, readBody } from "nitro/h3";
2
+ import { auth } from "#cms-utils/auth";
3
+ import { db } from "#cms-utils/db";
4
+ export default defineEventHandler(async (event) => {
5
+ const user = await db.query.user.findFirst();
6
+ if (user) {
7
+ throw new Error("User already exists");
8
+ }
9
+ const body = await readBody(event);
10
+ const newUser = await auth.api.createUser({
11
+ body: {
12
+ ...body,
13
+ role: "admin"
14
+ // username
15
+ }
16
+ });
17
+ return newUser;
18
+ });
@@ -12,7 +12,11 @@ export default defineHandler(async (event) => {
12
12
  const branch = event.context.params.branch;
13
13
  const query = getQuery(event);
14
14
  if (query.file) {
15
- return await ghRepoFile(repo, query.file, branch);
15
+ if (query.invalidate && event.req.method === "PATCH") {
16
+ await ghRepoFile.invalidate(repo, query.file, branch);
17
+ return await ghRepoFile(repo, query.file, branch, true);
18
+ }
19
+ return await ghRepoFile(repo, query.file, branch, false);
16
20
  }
17
21
  if (!query.folder) {
18
22
  return new HTTPError({