@kyro-cms/core 0.9.1 → 0.9.2

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 (180) hide show
  1. package/README.md +0 -6
  2. package/dist/{WebhookService-Yg2UEOB4.d.cts → WebhookService-BKszZlG0.d.cts} +1 -1
  3. package/dist/{WebhookService-CUTb9XOy.d.ts → WebhookService-Ccf1j-IN.d.ts} +1 -1
  4. package/dist/api-handler-graphql.cjs +17 -17
  5. package/dist/api-handler-graphql.js +13 -13
  6. package/dist/api-handler-trpc.cjs +15 -15
  7. package/dist/api-handler-trpc.js +13 -13
  8. package/dist/api-handler.cjs +16 -16
  9. package/dist/api-handler.js +13 -13
  10. package/dist/{base-DaqY2GhA.d.ts → base-CIuXkrH4.d.cts} +3 -5
  11. package/dist/{base-B71y_EAF.d.cts → base-fFo4lqER.d.ts} +3 -5
  12. package/dist/bootstrap-3PV3GJ3S.js +7 -0
  13. package/dist/{bootstrap-T5BK77LD.js.map → bootstrap-3PV3GJ3S.js.map} +1 -1
  14. package/dist/bootstrap-4CELFLJO.cjs +32 -0
  15. package/dist/{bootstrap-5NLASFOG.cjs.map → bootstrap-4CELFLJO.cjs.map} +1 -1
  16. package/dist/{chunk-Z6ZWNWWR.js → chunk-4CV4JOE5.js} +3 -9
  17. package/dist/{chunk-Z6ZWNWWR.js.map → chunk-4CV4JOE5.js.map} +1 -1
  18. package/dist/{chunk-5EPFQUQD.js → chunk-53NYVYVX.js} +6 -6
  19. package/dist/chunk-53NYVYVX.js.map +1 -0
  20. package/dist/{chunk-22M4O4ZJ.js → chunk-5H3MWQJS.js} +129 -143
  21. package/dist/chunk-5H3MWQJS.js.map +1 -0
  22. package/dist/{chunk-RAMGUDJN.cjs → chunk-5PMQQFRE.cjs} +5 -5
  23. package/dist/{chunk-RAMGUDJN.cjs.map → chunk-5PMQQFRE.cjs.map} +1 -1
  24. package/dist/{chunk-TXSZFA4G.js → chunk-6UNONDW7.js} +93 -9
  25. package/dist/chunk-6UNONDW7.js.map +1 -0
  26. package/dist/{chunk-C36TMDTY.cjs → chunk-7OS7TX2Q.cjs} +49 -48
  27. package/dist/chunk-7OS7TX2Q.cjs.map +1 -0
  28. package/dist/{chunk-3TPQ2BU6.js → chunk-BYBMTIMT.js} +2 -6
  29. package/dist/chunk-BYBMTIMT.js.map +1 -0
  30. package/dist/{chunk-FOPGUM27.js → chunk-CJX74IYK.js} +5 -4
  31. package/dist/chunk-CJX74IYK.js.map +1 -0
  32. package/dist/{chunk-RSF3UU7H.cjs → chunk-CNKT4PME.cjs} +196 -200
  33. package/dist/chunk-CNKT4PME.cjs.map +1 -0
  34. package/dist/{chunk-G7VZBCD6.cjs → chunk-CZLDE2OZ.cjs} +2 -9
  35. package/dist/{chunk-G7VZBCD6.cjs.map → chunk-CZLDE2OZ.cjs.map} +1 -1
  36. package/dist/{chunk-JOPVMWTM.cjs → chunk-DPA3KWPY.cjs} +3 -3
  37. package/dist/chunk-DPA3KWPY.cjs.map +1 -0
  38. package/dist/{chunk-ROJHKAQ4.cjs → chunk-E2763JUP.cjs} +143 -157
  39. package/dist/chunk-E2763JUP.cjs.map +1 -0
  40. package/dist/{chunk-FAXU7BMP.js → chunk-E5UJBLQ7.js} +2 -2
  41. package/dist/chunk-E5UJBLQ7.js.map +1 -0
  42. package/dist/{chunk-DVD5P72E.cjs → chunk-EEJUFDMF.cjs} +2 -6
  43. package/dist/chunk-EEJUFDMF.cjs.map +1 -0
  44. package/dist/{chunk-2HZRBATX.cjs → chunk-FSKONGCX.cjs} +2 -2
  45. package/dist/chunk-FSKONGCX.cjs.map +1 -0
  46. package/dist/{chunk-P2HKJ7P5.js → chunk-GAAHG2Z4.js} +3 -3
  47. package/dist/{chunk-P2HKJ7P5.js.map → chunk-GAAHG2Z4.js.map} +1 -1
  48. package/dist/{chunk-PI73NNOK.cjs → chunk-GUUB5EAG.cjs} +2 -2
  49. package/dist/chunk-GUUB5EAG.cjs.map +1 -0
  50. package/dist/{chunk-PU2Z5VWF.js → chunk-IPTZM3VE.js} +183 -187
  51. package/dist/chunk-IPTZM3VE.js.map +1 -0
  52. package/dist/{chunk-UERVXYVK.cjs → chunk-NWUEVLQT.cjs} +13 -13
  53. package/dist/{chunk-UERVXYVK.cjs.map → chunk-NWUEVLQT.cjs.map} +1 -1
  54. package/dist/{chunk-KPA4AN4R.js → chunk-OHC6UHFY.js} +86 -12
  55. package/dist/chunk-OHC6UHFY.js.map +1 -0
  56. package/dist/{chunk-DEVFAKCQ.cjs → chunk-PHJRNPHY.cjs} +6 -6
  57. package/dist/chunk-PHJRNPHY.cjs.map +1 -0
  58. package/dist/{chunk-VO35MNPH.js → chunk-PQ72Z6WC.js} +67 -105
  59. package/dist/chunk-PQ72Z6WC.js.map +1 -0
  60. package/dist/{chunk-KNRSROWB.cjs → chunk-PV2I2KMI.cjs} +86 -12
  61. package/dist/chunk-PV2I2KMI.cjs.map +1 -0
  62. package/dist/{chunk-V2TVSCV5.cjs → chunk-Q23GAMLE.cjs} +71 -109
  63. package/dist/chunk-Q23GAMLE.cjs.map +1 -0
  64. package/dist/{chunk-COIASRDK.cjs → chunk-RFFSZSCL.cjs} +107 -171
  65. package/dist/chunk-RFFSZSCL.cjs.map +1 -0
  66. package/dist/{chunk-AL5KX63J.js → chunk-UUDTPZX6.js} +3 -3
  67. package/dist/chunk-UUDTPZX6.js.map +1 -0
  68. package/dist/{chunk-EJN2PAOE.js → chunk-V7KZQIZ6.js} +102 -166
  69. package/dist/chunk-V7KZQIZ6.js.map +1 -0
  70. package/dist/{chunk-DYTZ6FQ7.js → chunk-WXVB364T.js} +2 -2
  71. package/dist/chunk-WXVB364T.js.map +1 -0
  72. package/dist/{chunk-WNCYAKF3.cjs → chunk-Y7AQK4R4.cjs} +93 -9
  73. package/dist/chunk-Y7AQK4R4.cjs.map +1 -0
  74. package/dist/{chunk-SPBTLUN6.js → chunk-YFAVQQTU.js} +7 -7
  75. package/dist/{chunk-SPBTLUN6.js.map → chunk-YFAVQQTU.js.map} +1 -1
  76. package/dist/cli/index.cjs +5 -5
  77. package/dist/cli/index.js +5 -5
  78. package/dist/client.cjs +4 -4
  79. package/dist/client.d.cts +2 -2
  80. package/dist/client.d.ts +2 -2
  81. package/dist/client.js +2 -2
  82. package/dist/drizzle/index.cjs +14 -14
  83. package/dist/drizzle/index.d.cts +4 -10
  84. package/dist/drizzle/index.d.ts +4 -10
  85. package/dist/drizzle/index.js +5 -5
  86. package/dist/fields/index.cjs +22 -22
  87. package/dist/fields/index.d.cts +1 -1
  88. package/dist/fields/index.d.ts +1 -1
  89. package/dist/fields/index.js +2 -2
  90. package/dist/graphql/index.cjs +1 -1
  91. package/dist/graphql/index.d.cts +3 -3
  92. package/dist/graphql/index.d.ts +3 -3
  93. package/dist/graphql/index.js +1 -1
  94. package/dist/{index-CaTNnLGd.d.cts → index-BKta3cBH.d.cts} +3 -2
  95. package/dist/{index-CJXPB_ot.d.ts → index-ClOqnkTO.d.ts} +3 -2
  96. package/dist/index.cjs +117 -117
  97. package/dist/index.d.cts +10 -15
  98. package/dist/index.d.ts +10 -15
  99. package/dist/index.js +18 -18
  100. package/dist/integration.cjs +1 -1
  101. package/dist/integration.js +1 -1
  102. package/dist/media-7WDX4BDJ.js +4 -0
  103. package/dist/{media-GPPTZ43E.js.map → media-7WDX4BDJ.js.map} +1 -1
  104. package/dist/{media-XNTUFJZR.cjs → media-TUSLVRQ6.cjs} +3 -3
  105. package/dist/{media-XNTUFJZR.cjs.map → media-TUSLVRQ6.cjs.map} +1 -1
  106. package/dist/{mongo-auth-adapter-ISOM7FSS.cjs → mongo-auth-adapter-GT4S7SCU.cjs} +3 -3
  107. package/dist/{mongo-auth-adapter-ISOM7FSS.cjs.map → mongo-auth-adapter-GT4S7SCU.cjs.map} +1 -1
  108. package/dist/mongo-auth-adapter-M7VV4LNB.js +4 -0
  109. package/dist/{mongo-auth-adapter-MO6STCV3.js.map → mongo-auth-adapter-M7VV4LNB.js.map} +1 -1
  110. package/dist/mongodb/index.cjs +5 -5
  111. package/dist/mongodb/index.d.cts +4 -9
  112. package/dist/mongodb/index.d.ts +4 -9
  113. package/dist/mongodb/index.js +3 -3
  114. package/dist/postgres-auth-adapter-AFAPISH7.js +5 -0
  115. package/dist/{postgres-auth-adapter-DWDR7P5G.js.map → postgres-auth-adapter-AFAPISH7.js.map} +1 -1
  116. package/dist/postgres-auth-adapter-SFDTLONT.cjs +14 -0
  117. package/dist/{postgres-auth-adapter-WRWSJD4E.cjs.map → postgres-auth-adapter-SFDTLONT.cjs.map} +1 -1
  118. package/dist/{redis-adapter-KJ3YOOT6.cjs → redis-adapter-UQX4EE3B.cjs} +3 -3
  119. package/dist/{redis-adapter-KJ3YOOT6.cjs.map → redis-adapter-UQX4EE3B.cjs.map} +1 -1
  120. package/dist/redis-adapter-XALOGWY3.js +4 -0
  121. package/dist/{redis-adapter-HGTPWIGV.js.map → redis-adapter-XALOGWY3.js.map} +1 -1
  122. package/dist/rest/index.cjs +10 -10
  123. package/dist/rest/index.d.cts +4 -4
  124. package/dist/rest/index.d.ts +4 -4
  125. package/dist/rest/index.js +8 -8
  126. package/dist/{schema-TTFE4467.cjs → schema-6QL3USNB.cjs} +15 -15
  127. package/dist/{schema-TTFE4467.cjs.map → schema-6QL3USNB.cjs.map} +1 -1
  128. package/dist/{schema-6I5OFR4Z.js → schema-FNNWEAAW.js} +4 -4
  129. package/dist/{schema-6I5OFR4Z.js.map → schema-FNNWEAAW.js.map} +1 -1
  130. package/dist/{sqlite-adapter-CSIZE5SX.cjs → sqlite-adapter-AQB5TCGV.cjs} +3 -3
  131. package/dist/{sqlite-adapter-CSIZE5SX.cjs.map → sqlite-adapter-AQB5TCGV.cjs.map} +1 -1
  132. package/dist/sqlite-adapter-N5H6IM2X.js +4 -0
  133. package/dist/{sqlite-adapter-6GEUSVXQ.js.map → sqlite-adapter-N5H6IM2X.js.map} +1 -1
  134. package/dist/templates/index.cjs +49 -49
  135. package/dist/templates/index.d.cts +2 -2
  136. package/dist/templates/index.d.ts +2 -2
  137. package/dist/templates/index.js +2 -2
  138. package/dist/trpc/index.cjs +11 -11
  139. package/dist/trpc/index.d.cts +3 -3
  140. package/dist/trpc/index.d.ts +3 -3
  141. package/dist/trpc/index.js +2 -2
  142. package/dist/{types-Z6FBiqa2.d.cts → types-DeSApf9T.d.cts} +1 -0
  143. package/dist/{types-Z6FBiqa2.d.ts → types-DeSApf9T.d.ts} +1 -0
  144. package/dist/{types-CyCQ6SAI.d.ts → types-Dgzlftb7.d.ts} +6 -28
  145. package/dist/{types-DJxD9394.d.cts → types-Ds0tCA3L.d.cts} +6 -28
  146. package/dist/ws/index.cjs +6 -6
  147. package/dist/ws/index.js +2 -2
  148. package/package.json +1 -1
  149. package/dist/bootstrap-5NLASFOG.cjs +0 -32
  150. package/dist/bootstrap-T5BK77LD.js +0 -7
  151. package/dist/chunk-22M4O4ZJ.js.map +0 -1
  152. package/dist/chunk-2HZRBATX.cjs.map +0 -1
  153. package/dist/chunk-3TPQ2BU6.js.map +0 -1
  154. package/dist/chunk-5EPFQUQD.js.map +0 -1
  155. package/dist/chunk-AL5KX63J.js.map +0 -1
  156. package/dist/chunk-C36TMDTY.cjs.map +0 -1
  157. package/dist/chunk-COIASRDK.cjs.map +0 -1
  158. package/dist/chunk-DEVFAKCQ.cjs.map +0 -1
  159. package/dist/chunk-DVD5P72E.cjs.map +0 -1
  160. package/dist/chunk-DYTZ6FQ7.js.map +0 -1
  161. package/dist/chunk-EJN2PAOE.js.map +0 -1
  162. package/dist/chunk-FAXU7BMP.js.map +0 -1
  163. package/dist/chunk-FOPGUM27.js.map +0 -1
  164. package/dist/chunk-JOPVMWTM.cjs.map +0 -1
  165. package/dist/chunk-KNRSROWB.cjs.map +0 -1
  166. package/dist/chunk-KPA4AN4R.js.map +0 -1
  167. package/dist/chunk-PI73NNOK.cjs.map +0 -1
  168. package/dist/chunk-PU2Z5VWF.js.map +0 -1
  169. package/dist/chunk-ROJHKAQ4.cjs.map +0 -1
  170. package/dist/chunk-RSF3UU7H.cjs.map +0 -1
  171. package/dist/chunk-TXSZFA4G.js.map +0 -1
  172. package/dist/chunk-V2TVSCV5.cjs.map +0 -1
  173. package/dist/chunk-VO35MNPH.js.map +0 -1
  174. package/dist/chunk-WNCYAKF3.cjs.map +0 -1
  175. package/dist/media-GPPTZ43E.js +0 -4
  176. package/dist/mongo-auth-adapter-MO6STCV3.js +0 -4
  177. package/dist/postgres-auth-adapter-DWDR7P5G.js +0 -5
  178. package/dist/postgres-auth-adapter-WRWSJD4E.cjs +0 -14
  179. package/dist/redis-adapter-HGTPWIGV.js +0 -4
  180. package/dist/sqlite-adapter-6GEUSVXQ.js +0 -4
@@ -4,12 +4,6 @@ var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
- }) : x)(function(x) {
10
- if (typeof require !== "undefined") return require.apply(this, arguments);
11
- throw Error('Dynamic require of "' + x + '" is not supported');
12
- });
13
7
  var __esm = (fn, res) => function __init() {
14
8
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
15
9
  };
@@ -29,7 +23,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
23
 
30
24
  exports.__esm = __esm;
31
25
  exports.__export = __export;
32
- exports.__require = __require;
33
26
  exports.__toCommonJS = __toCommonJS;
34
- //# sourceMappingURL=chunk-G7VZBCD6.cjs.map
35
- //# sourceMappingURL=chunk-G7VZBCD6.cjs.map
27
+ //# sourceMappingURL=chunk-CZLDE2OZ.cjs.map
28
+ //# sourceMappingURL=chunk-CZLDE2OZ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-G7VZBCD6.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CZLDE2OZ.cjs"}
@@ -86,7 +86,7 @@ var auditLogs = pgCore.pgTable(
86
86
  userEmail: pgCore.varchar("user_email", { length: 255 }),
87
87
  role: pgCore.varchar("role", { length: 50 }),
88
88
  resource: pgCore.varchar("resource", { length: 100 }).notNull(),
89
- resourceId: pgCore.uuid("resource_id"),
89
+ resourceId: pgCore.varchar("resource_id", { length: 255 }),
90
90
  changes: pgCore.jsonb("changes").$type(),
91
91
  ipAddress: pgCore.varchar("ip_address", { length: 45 }),
92
92
  userAgent: pgCore.text("user_agent"),
@@ -201,5 +201,5 @@ exports.roles = roles;
201
201
  exports.sessions = sessions;
202
202
  exports.tenants = tenants;
203
203
  exports.users = users;
204
- //# sourceMappingURL=chunk-JOPVMWTM.cjs.map
205
- //# sourceMappingURL=chunk-JOPVMWTM.cjs.map
204
+ //# sourceMappingURL=chunk-DPA3KWPY.cjs.map
205
+ //# sourceMappingURL=chunk-DPA3KWPY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/database/drizzle/schema/auth.ts"],"names":["pgTable","uuid","varchar","boolean","timestamp","integer","jsonb","uniqueIndex","index","text"],"mappings":"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","file":"chunk-DPA3KWPY.cjs","sourcesContent":["import {\n pgTable,\n uuid,\n varchar,\n boolean,\n timestamp,\n integer,\n text,\n jsonb,\n index,\n uniqueIndex,\n} from \"drizzle-orm/pg-core\";\n\nexport const users = pgTable(\n \"users\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: varchar(\"name\", { length: 255 }),\n email: varchar(\"email\", { length: 255 }).notNull(),\n passwordHash: varchar(\"password_hash\", { length: 255 }),\n role: varchar(\"role\", { length: 50 }).notNull().default(\"customer\"),\n tenantId: uuid(\"tenant_id\"),\n emailVerified: boolean(\"email_verified\").default(false),\n avatar: varchar(\"avatar\", { length: 255 }),\n locked: boolean(\"locked\").default(false),\n lastLogin: timestamp(\"last_login\"),\n failedLoginAttempts: integer(\"failed_login_attempts\").default(0),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n },\n (table) => [\n uniqueIndex(\"users_email_idx\").on(table.email),\n index(\"users_tenant_idx\").on(table.tenantId),\n index(\"users_role_idx\").on(table.role),\n ],\n);\n\nexport const roles = pgTable(\n \"roles\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: varchar(\"name\", { length: 100 }).notNull().unique(),\n level: integer(\"level\").notNull().default(0),\n inherits: text(\"inherits\").array(),\n description: text(\"description\"),\n permissions: jsonb(\"permissions\").$type<string[]>().default([]),\n isSystem: boolean(\"is_system\").default(false),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n },\n (table) => [index(\"roles_level_idx\").on(table.level)],\n);\n\nexport const permissions = pgTable(\n \"permissions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n roleId: uuid(\"role_id\").references(() => roles.id, { onDelete: \"cascade\" }),\n resource: varchar(\"resource\", { length: 100 }).notNull(),\n action: varchar(\"action\", { length: 50 }).notNull(),\n conditions: jsonb(\"conditions\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n },\n (table) => [\n index(\"permissions_role_idx\").on(table.roleId),\n index(\"permissions_resource_idx\").on(table.resource),\n ],\n);\n\nexport const sessions = pgTable(\n \"sessions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\")\n .notNull()\n .references(() => users.id, { onDelete: \"cascade\" }),\n token: varchar(\"token\", { length: 512 }).notNull().unique(),\n refreshToken: varchar(\"refresh_token\", { length: 512 }),\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n expiresAt: timestamp(\"expires_at\").notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n },\n (table) => [\n index(\"sessions_user_idx\").on(table.userId),\n index(\"sessions_token_idx\").on(table.token),\n index(\"sessions_expires_idx\").on(table.expiresAt),\n ],\n);\n\nexport const auditLogs = pgTable(\n \"audit_logs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n action: varchar(\"action\", { length: 100 }).notNull(),\n userId: uuid(\"user_id\").references(() => users.id, {\n onDelete: \"set null\",\n }),\n userEmail: varchar(\"user_email\", { length: 255 }),\n role: varchar(\"role\", { length: 50 }),\n resource: varchar(\"resource\", { length: 100 }).notNull(),\n resourceId: varchar(\"resource_id\", { length: 255 }),\n changes:\n jsonb(\"changes\").$type<{ field: string; old: unknown; new: unknown }[]>(),\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n success: boolean(\"success\").notNull().default(true),\n error: text(\"error\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>(),\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n },\n (table) => [\n index(\"audit_logs_user_idx\").on(table.userId),\n index(\"audit_logs_action_idx\").on(table.action),\n index(\"audit_logs_resource_idx\").on(table.resource),\n index(\"audit_logs_timestamp_idx\").on(table.timestamp),\n ],\n);\n\nexport const tenants = pgTable(\n \"tenants\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: varchar(\"name\", { length: 255 }).notNull(),\n slug: varchar(\"slug\", { length: 100 }).notNull().unique(),\n settings: jsonb(\"settings\").$type<Record<string, unknown>>().default({}),\n isActive: boolean(\"is_active\").default(true),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n },\n (table) => [uniqueIndex(\"tenants_slug_idx\").on(table.slug)],\n);\n\nexport const apiKeys = pgTable(\n \"api_keys\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\")\n .notNull()\n .references(() => users.id, { onDelete: \"cascade\" }),\n name: varchar(\"name\", { length: 255 }).notNull(),\n key: varchar(\"key\", { length: 64 }).notNull().unique(),\n keyPrefix: varchar(\"key_prefix\", { length: 8 }).notNull(),\n permissions: jsonb(\"permissions\").$type<string[]>().default([]),\n lastUsedAt: timestamp(\"last_used_at\"),\n expiresAt: timestamp(\"expires_at\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n },\n (table) => [\n index(\"api_keys_user_idx\").on(table.userId),\n index(\"api_keys_key_idx\").on(table.key),\n ],\n);\n\nexport const emailVerifications = pgTable(\n \"email_verifications\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\")\n .notNull()\n .references(() => users.id, { onDelete: \"cascade\" }),\n token: varchar(\"token\", { length: 64 }).notNull().unique(),\n expiresAt: timestamp(\"expires_at\").notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n },\n (table) => [\n index(\"email_verifications_token_idx\").on(table.token),\n index(\"email_verifications_user_idx\").on(table.userId),\n ],\n);\n\nexport const passwordResets = pgTable(\n \"password_resets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\")\n .notNull()\n .references(() => users.id, { onDelete: \"cascade\" }),\n token: varchar(\"token\", { length: 64 }).notNull().unique(),\n expiresAt: timestamp(\"expires_at\").notNull(),\n usedAt: timestamp(\"used_at\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n },\n (table) => [\n index(\"password_resets_token_idx\").on(table.token),\n index(\"password_resets_user_idx\").on(table.userId),\n ],\n);\n\nexport const passwordHistory = pgTable(\n \"password_history\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\")\n .notNull()\n .references(() => users.id, { onDelete: \"cascade\" }),\n passwordHash: varchar(\"password_hash\", { length: 255 }).notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n },\n (table) => [index(\"password_history_user_idx\").on(table.userId)],\n);\n\nexport const lockouts = pgTable(\n \"lockouts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\")\n .notNull()\n .references(() => users.id, { onDelete: \"cascade\" }),\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n reason: varchar(\"reason\", { length: 255 }),\n lockedUntil: timestamp(\"locked_until\").notNull(),\n releasedAt: timestamp(\"released_at\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n },\n (table) => [\n index(\"lockouts_user_idx\").on(table.userId),\n index(\"lockouts_ip_idx\").on(table.ipAddress),\n index(\"lockouts_locked_until_idx\").on(table.lockedUntil),\n ],\n);\n\nexport type AuthUser = typeof users.$inferSelect;\nexport type AuthUserNew = typeof users.$inferInsert;\nexport type AuthRole = typeof roles.$inferSelect;\nexport type AuthRoleNew = typeof roles.$inferInsert;\nexport type AuthSession = typeof sessions.$inferSelect;\nexport type AuthSessionNew = typeof sessions.$inferInsert;\nexport type AuthAuditLog = typeof auditLogs.$inferSelect;\nexport type AuthAuditLogNew = typeof auditLogs.$inferInsert;\nexport type AuthTenant = typeof tenants.$inferSelect;\nexport type AuthTenantNew = typeof tenants.$inferInsert;\nexport type AuthApiKey = typeof apiKeys.$inferSelect;\nexport type AuthApiKeyNew = typeof apiKeys.$inferInsert;\nexport type AuthEmailVerification = typeof emailVerifications.$inferSelect;\nexport type AuthPasswordReset = typeof passwordResets.$inferSelect;\nexport type AuthPasswordHistoryEntry = typeof passwordHistory.$inferSelect;\nexport type AuthLockout = typeof lockouts.$inferSelect;\n"]}
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk3KTWGODI_cjs = require('./chunk-3KTWGODI.cjs');
4
- var chunkKNRSROWB_cjs = require('./chunk-KNRSROWB.cjs');
4
+ var chunkPV2I2KMI_cjs = require('./chunk-PV2I2KMI.cjs');
5
5
  var chunk3HR772HI_cjs = require('./chunk-3HR772HI.cjs');
6
- var chunkRSF3UU7H_cjs = require('./chunk-RSF3UU7H.cjs');
6
+ var chunkCNKT4PME_cjs = require('./chunk-CNKT4PME.cjs');
7
7
  var chunkQFLB4EIJ_cjs = require('./chunk-QFLB4EIJ.cjs');
8
8
  var chunk4M7X5HAB_cjs = require('./chunk-4M7X5HAB.cjs');
9
- var chunkDVD5P72E_cjs = require('./chunk-DVD5P72E.cjs');
10
- var chunkPI73NNOK_cjs = require('./chunk-PI73NNOK.cjs');
9
+ var chunkEEJUFDMF_cjs = require('./chunk-EEJUFDMF.cjs');
10
+ var chunkGUUB5EAG_cjs = require('./chunk-GUUB5EAG.cjs');
11
11
  var zod = require('zod');
12
12
  var graphql = require('graphql');
13
13
  var module$1 = require('module');
@@ -650,6 +650,30 @@ function buildNestedShape(fields) {
650
650
  }
651
651
  return shape;
652
652
  }
653
+ function buildUpdateNestedShape(fields) {
654
+ const shape = {};
655
+ for (const field of fields) {
656
+ if (!field.name) continue;
657
+ if (field.type === "tabs" && "tabs" in field) {
658
+ const tabShape = {};
659
+ for (const tab of field.tabs) {
660
+ const nestedShape = buildUpdateNestedShape(tab.fields);
661
+ Object.assign(tabShape, nestedShape);
662
+ }
663
+ shape[field.name] = zod.z.object(tabShape).passthrough().optional().nullable();
664
+ } else if (field.type === "row" && "fields" in field) {
665
+ const rowShape = buildUpdateNestedShape(field.fields);
666
+ Object.assign(shape, rowShape);
667
+ } else if (field.type === "collapsible" && "fields" in field) {
668
+ shape[field.name] = zod.z.object(buildUpdateNestedShape(field.fields)).passthrough().optional().nullable();
669
+ } else if (field.type === "group" && "fields" in field) {
670
+ shape[field.name] = zod.z.object(buildUpdateNestedShape(field.fields)).passthrough().optional().nullable();
671
+ } else {
672
+ shape[field.name] = fieldToZod(field).optional().nullable();
673
+ }
674
+ }
675
+ return shape;
676
+ }
653
677
  function collectionToZod(collection) {
654
678
  const shape = buildNestedShape(collection.fields);
655
679
  if (collection.timestamps) {
@@ -689,7 +713,9 @@ function collectionToUpdateZod(collection) {
689
713
  }
690
714
  Object.assign(shape, rowShape);
691
715
  } else if (field.type === "collapsible" && "fields" in field) {
692
- shape[field.name] = zod.z.object(buildNestedShape(field.fields)).optional().nullable();
716
+ shape[field.name] = zod.z.object(buildUpdateNestedShape(field.fields)).optional().nullable();
717
+ } else if (field.type === "group" && "fields" in field) {
718
+ shape[field.name] = zod.z.object(buildUpdateNestedShape(field.fields)).optional().nullable();
693
719
  } else {
694
720
  shape[field.name] = fieldToZod(field).optional().nullable();
695
721
  }
@@ -725,10 +751,34 @@ function globalToZod(global) {
725
751
  shape["id"] = zod.z.string().optional();
726
752
  return zod.z.object(shape).passthrough();
727
753
  }
754
+ function globalToUpdateZod(global) {
755
+ const shape = {};
756
+ for (const field of global.fields) {
757
+ if (!field.name) continue;
758
+ if (field.type === "tabs" && "tabs" in field) {
759
+ const tabShape = {};
760
+ for (const tab of field.tabs) {
761
+ for (const tabField of tab.fields) {
762
+ if (tabField.name) {
763
+ tabShape[tabField.name] = fieldToZod(tabField).optional().nullable();
764
+ }
765
+ }
766
+ }
767
+ shape[field.name] = zod.z.object(tabShape).optional().nullable();
768
+ } else if (field.type === "collapsible" && "fields" in field) {
769
+ shape[field.name] = zod.z.object(buildUpdateNestedShape(field.fields)).optional().nullable();
770
+ } else if (field.type === "group" && "fields" in field) {
771
+ shape[field.name] = zod.z.object(buildUpdateNestedShape(field.fields)).optional().nullable();
772
+ } else {
773
+ shape[field.name] = fieldToZod(field).optional().nullable();
774
+ }
775
+ }
776
+ return zod.z.object(shape).passthrough();
777
+ }
728
778
 
729
779
  // src/registry/index.ts
730
780
  var Registry = class {
731
- storageProviders = chunkRSF3UU7H_cjs.getDefaultRegistry();
781
+ storageProviders = chunkCNKT4PME_cjs.getDefaultRegistry();
732
782
  collections = /* @__PURE__ */ new Map();
733
783
  globals = /* @__PURE__ */ new Map();
734
784
  plugins = [];
@@ -908,7 +958,13 @@ var Registry = class {
908
958
  this.schemaCache.set(cacheKey, schema);
909
959
  return schema;
910
960
  }
911
- throw new Error(`No collection found with slug "${slug}"`);
961
+ const global = this.globals.get(slug);
962
+ if (global) {
963
+ const schema = globalToUpdateZod(global);
964
+ this.schemaCache.set(`global:${slug}:update`, schema);
965
+ return schema;
966
+ }
967
+ throw new Error(`No collection or global found with slug "${slug}"`);
912
968
  }
913
969
  getWhereZodSchema(slug) {
914
970
  const cacheKey = `${slug}:where`;
@@ -963,9 +1019,9 @@ var Registry = class {
963
1019
  admin: { readOnly: true, hidden: true }
964
1020
  });
965
1021
  }
966
- if (config.versions?.drafts && !fields.some((f) => f.name === "publishStatus")) {
1022
+ if (config.versions?.drafts && !fields.some((f) => f.name === "status")) {
967
1023
  fields.push({
968
- name: "publishStatus",
1024
+ name: "status",
969
1025
  type: "select",
970
1026
  options: [
971
1027
  { value: "draft", label: "Draft" },
@@ -1263,7 +1319,7 @@ var s3StoragePlugin = {
1263
1319
  configFields: v.configFields,
1264
1320
  extractConfig: (sc) => buildS3ConfigFromStorageConfig(v.type, v, sc),
1265
1321
  extractRawConfig: (raw) => buildS3ConfigFromRaw(v.type, v, raw),
1266
- factory: (c) => chunkRSF3UU7H_cjs.createS3Storage(c)
1322
+ factory: (c) => chunkCNKT4PME_cjs.createS3Storage(c)
1267
1323
  });
1268
1324
  }
1269
1325
  }
@@ -1311,7 +1367,7 @@ var cloudinaryStoragePlugin = {
1311
1367
  uploadPreset: cl?.uploadPreset
1312
1368
  };
1313
1369
  },
1314
- factory: (c) => chunkRSF3UU7H_cjs.createCloudinaryStorage(c)
1370
+ factory: (c) => chunkCNKT4PME_cjs.createCloudinaryStorage(c)
1315
1371
  });
1316
1372
  }
1317
1373
  };
@@ -1361,7 +1417,7 @@ var ftpStoragePlugin = {
1361
1417
  type: "ftp"
1362
1418
  };
1363
1419
  },
1364
- factory: (c) => chunkRSF3UU7H_cjs.createFtpStorage(c)
1420
+ factory: (c) => chunkCNKT4PME_cjs.createFtpStorage(c)
1365
1421
  });
1366
1422
  }
1367
1423
  };
@@ -1420,7 +1476,7 @@ var Kyro = class {
1420
1476
  this.config = config;
1421
1477
  this.registry = createRegistry();
1422
1478
  this.db = config.adapter;
1423
- this.pubsub = new chunkDVD5P72E_cjs.KyroPubSub(this.registry);
1479
+ this.pubsub = new chunkEEJUFDMF_cjs.KyroPubSub(this.registry);
1424
1480
  this.webhookService = chunkQFLB4EIJ_cjs.createWebhookService(this.db);
1425
1481
  if (config.collections && config.admin?.collectionOverrides) {
1426
1482
  applyCollectionOverrides(config.collections, config.admin.collectionOverrides);
@@ -1558,7 +1614,7 @@ var Kyro = class {
1558
1614
  const authObj = typeof this.config.auth === "object" ? this.config.auth : null;
1559
1615
  const authSecret = authObj?.secret;
1560
1616
  const checkSession = authObj?.checkSession !== false;
1561
- return chunkRSF3UU7H_cjs.createHonoApp({
1617
+ return chunkCNKT4PME_cjs.createHonoApp({
1562
1618
  registry: this.registry,
1563
1619
  db: this.db,
1564
1620
  authSecret,
@@ -1665,7 +1721,7 @@ var Kyro = class {
1665
1721
  { status: 400, headers: { "Content-Type": "application/json" } }
1666
1722
  );
1667
1723
  }
1668
- const ctx = await chunkKNRSROWB_cjs.createContext({
1724
+ const ctx = await chunkPV2I2KMI_cjs.createContext({
1669
1725
  db: this.db,
1670
1726
  registry: this.registry,
1671
1727
  req: request,
@@ -1673,7 +1729,7 @@ var Kyro = class {
1673
1729
  tenantID: options?.tenantID,
1674
1730
  settings: this.settings
1675
1731
  });
1676
- const kyroRouter = chunkKNRSROWB_cjs.createKyroServer(ctx);
1732
+ const kyroRouter = chunkPV2I2KMI_cjs.createKyroServer(ctx);
1677
1733
  const collectionRouter = kyroRouter[slug];
1678
1734
  if (!collectionRouter) {
1679
1735
  return new Response(
@@ -1756,7 +1812,7 @@ var Kyro = class {
1756
1812
  if (!result.user) throw new Error("API key has no associated user");
1757
1813
  return result.user;
1758
1814
  };
1759
- this.wsServer = chunkDVD5P72E_cjs.createWSServer({
1815
+ this.wsServer = chunkEEJUFDMF_cjs.createWSServer({
1760
1816
  pubsub: this.pubsub,
1761
1817
  port: options?.port || 8080,
1762
1818
  requireAuth: options?.requireAuth ?? apiAccess?.requireAuth,
@@ -1779,7 +1835,7 @@ var Kyro = class {
1779
1835
  function createKyro(config) {
1780
1836
  return new Kyro(config);
1781
1837
  }
1782
- var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-ROJHKAQ4.cjs', document.baseURI).href)));
1838
+ var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-E2763JUP.cjs', document.baseURI).href)));
1783
1839
  var modPath = "node:sqlite";
1784
1840
  var { DatabaseSync } = _require(modPath);
1785
1841
  function flattenFields(fields) {
@@ -1879,11 +1935,10 @@ function getTableColumns(db, tableName) {
1879
1935
  return [];
1880
1936
  }
1881
1937
  }
1882
- var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1938
+ var LocalAdapter = class extends chunkGUUB5EAG_cjs.AbstractBaseAdapter {
1883
1939
  db;
1884
1940
  path;
1885
1941
  migrations = /* @__PURE__ */ new Map();
1886
- draftsTableName = "kyro_drafts";
1887
1942
  versionsTableName = "kyro_versions";
1888
1943
  constructor(options) {
1889
1944
  super();
@@ -1953,7 +2008,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1953
2008
  }
1954
2009
  columns.push(`${this.col("createdAt")} TEXT DEFAULT (datetime('now'))`);
1955
2010
  columns.push(`${this.col("updatedAt")} TEXT DEFAULT (datetime('now'))`);
1956
- columns.push(`publishStatus TEXT DEFAULT 'draft'`);
2011
+ columns.push(`status TEXT DEFAULT 'draft'`);
1957
2012
  columns.push(`hasDraft INTEGER DEFAULT 0`);
1958
2013
  if (config.tenantScoped) {
1959
2014
  columns.push(`tenant_id TEXT NOT NULL`);
@@ -1962,7 +2017,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1962
2017
  if (existingColumns.length === 0) {
1963
2018
  const createSQL = `CREATE TABLE IF NOT EXISTS ${name} (${columns.join(", ")})`;
1964
2019
  this.db.exec(createSQL);
1965
- this.db.exec(`CREATE INDEX IF NOT EXISTS idx_${name}_publishStatus ON ${name}(publishStatus)`);
2020
+ this.db.exec(`CREATE INDEX IF NOT EXISTS idx_${name}_status ON ${name}(status)`);
1966
2021
  for (const field of flattenFields(config.fields)) {
1967
2022
  if (field.name && field.indexed) {
1968
2023
  this.db.exec(
@@ -1981,7 +2036,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1981
2036
  const colName = colDef.split(" ")[0].replace(/^"/, "").replace(/"$/, "");
1982
2037
  if (!existingSet.has(colName) && colName !== "id") {
1983
2038
  try {
1984
- if (colName === "publishStatus") {
2039
+ if (colName === "status") {
1985
2040
  this.db.exec(`ALTER TABLE ${name} ADD COLUMN ${this.col(colName)} TEXT DEFAULT 'published'`);
1986
2041
  } else if (colName === "hasDraft") {
1987
2042
  this.db.exec(`ALTER TABLE ${name} ADD COLUMN ${this.col(colName)} INTEGER DEFAULT 0`);
@@ -2004,6 +2059,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2004
2059
  tenant_id TEXT,
2005
2060
  version INTEGER NOT NULL,
2006
2061
  status TEXT NOT NULL DEFAULT 'draft',
2062
+ autosave INTEGER NOT NULL DEFAULT 0,
2007
2063
  data TEXT NOT NULL,
2008
2064
  created_by TEXT,
2009
2065
  change_description TEXT,
@@ -2016,26 +2072,15 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2016
2072
  `CREATE INDEX IF NOT EXISTS idx_${this.versionsTableName}_doc ON ${this.versionsTableName}(collection_slug, document_id)`
2017
2073
  );
2018
2074
  this.db.exec(
2019
- `CREATE INDEX IF NOT EXISTS idx_${this.versionsTableName}publishStatus ON ${this.versionsTableName}(status)`
2075
+ `CREATE INDEX IF NOT EXISTS idx_${this.versionsTableName}_status ON ${this.versionsTableName}(status)`
2020
2076
  );
2021
- }
2022
- ensureDraftsTable() {
2023
- this.db.exec(`
2024
- CREATE TABLE IF NOT EXISTS ${this.draftsTableName} (
2025
- id TEXT PRIMARY KEY,
2026
- collection_slug TEXT NOT NULL,
2027
- document_id TEXT NOT NULL,
2028
- tenant_id TEXT,
2029
- data TEXT NOT NULL,
2030
- base_updated_at TEXT,
2031
- draft_updated_at TEXT NOT NULL,
2032
- created_at TEXT DEFAULT (datetime('now')),
2033
- updated_at TEXT DEFAULT (datetime('now'))
2034
- )
2035
- `);
2036
2077
  this.db.exec(
2037
- `CREATE UNIQUE INDEX IF NOT EXISTS idx_${this.draftsTableName}_document ON ${this.draftsTableName}(collection_slug, document_id, tenant_id)`
2078
+ `CREATE INDEX IF NOT EXISTS idx_${this.versionsTableName}_autosave ON ${this.versionsTableName}(autosave)`
2038
2079
  );
2080
+ try {
2081
+ this.db.exec(`ALTER TABLE ${this.versionsTableName} ADD COLUMN autosave INTEGER NOT NULL DEFAULT 0`);
2082
+ } catch {
2083
+ }
2039
2084
  }
2040
2085
  // ========================================================================
2041
2086
  // SQL Quoting
@@ -2113,11 +2158,11 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2113
2158
  const conditions = [];
2114
2159
  let effectiveWhere = { ...where };
2115
2160
  if (this.tenantContext && config.tenantScoped) {
2116
- const rlsQuery = chunkPI73NNOK_cjs.applyRLS({ where: effectiveWhere }, slug, this.tenantContext, chunkPI73NNOK_cjs.DEFAULT_RLS_CONFIG);
2161
+ const rlsQuery = chunkGUUB5EAG_cjs.applyRLS({ where: effectiveWhere }, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG);
2117
2162
  effectiveWhere = rlsQuery.where || {};
2118
2163
  }
2119
- if (!draft && config.versions?.drafts) {
2120
- conditions.push(`publishStatus = ?`);
2164
+ if (!draft) {
2165
+ conditions.push(`status = ?`);
2121
2166
  params.push("published");
2122
2167
  }
2123
2168
  if (tenantID && config.tenantScoped) {
@@ -2158,20 +2203,14 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2158
2203
  const rows = this.db.prepare(sql).all(...params);
2159
2204
  let docs = rows.map((row) => this.rowToDoc(row, config));
2160
2205
  if (this.tenantContext && !this.tenantContext.isSuperAdmin) {
2161
- docs = docs.filter((doc) => chunkPI73NNOK_cjs.canAccessDocument(doc, slug, this.tenantContext, chunkPI73NNOK_cjs.DEFAULT_RLS_CONFIG));
2206
+ docs = docs.filter((doc) => chunkGUUB5EAG_cjs.canAccessDocument(doc, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG));
2162
2207
  }
2163
2208
  if (draft) {
2164
2209
  docs = await Promise.all(docs.map(async (doc) => {
2165
- if (doc.hasDraft) {
2166
- const versions = await this.findVersions({
2167
- collection: slug,
2168
- documentId: doc.id,
2169
- limit: 1,
2170
- sort: "-createdAt"
2171
- });
2172
- if (versions.docs.length > 0 && versions.docs[0].status === "draft") {
2173
- return { ...doc, ...versions.docs[0].data, hasDraft: true, publishStatus: doc.publishStatus };
2174
- }
2210
+ const version = this.db.prepare(`SELECT * FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? AND tenant_id IS NULL ORDER BY version DESC LIMIT 1`).get(slug, doc.id);
2211
+ if (version) {
2212
+ const versionData = version.data ? JSON.parse(version.data) : {};
2213
+ return { ...doc, ...versionData, status: doc.status };
2175
2214
  }
2176
2215
  return doc;
2177
2216
  }));
@@ -2199,12 +2238,12 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2199
2238
  const params = [id];
2200
2239
  if (this.tenantContext && config.tenantScoped) {
2201
2240
  const tempDoc = { id, tenant_id: this.tenantContext.tenantId };
2202
- if (!chunkPI73NNOK_cjs.canAccessDocument(tempDoc, slug, this.tenantContext, chunkPI73NNOK_cjs.DEFAULT_RLS_CONFIG)) {
2241
+ if (!chunkGUUB5EAG_cjs.canAccessDocument(tempDoc, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG)) {
2203
2242
  return null;
2204
2243
  }
2205
2244
  }
2206
- if (!draft && config.versions?.drafts) {
2207
- sql += ` AND publishStatus = ?`;
2245
+ if (!draft) {
2246
+ sql += ` AND status = ?`;
2208
2247
  params.push("published");
2209
2248
  }
2210
2249
  if (tenantID && config.tenantScoped) {
@@ -2214,15 +2253,11 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2214
2253
  const row = this.db.prepare(sql).get(...params);
2215
2254
  if (!row) return null;
2216
2255
  let doc = this.rowToDoc(row, config);
2217
- if (draft && doc.hasDraft) {
2218
- const versions = await this.findVersions({
2219
- collection: slug,
2220
- documentId: doc.id,
2221
- limit: 1,
2222
- sort: "-createdAt"
2223
- });
2224
- if (versions.docs.length > 0 && versions.docs[0].status === "draft") {
2225
- doc = { ...doc, ...versions.docs[0].data, hasDraft: true, publishStatus: doc.publishStatus };
2256
+ if (draft) {
2257
+ const version = this.db.prepare(`SELECT * FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? AND tenant_id IS NULL ORDER BY version DESC LIMIT 1`).get(slug, doc.id);
2258
+ if (version) {
2259
+ const versionData = version.data ? JSON.parse(version.data) : {};
2260
+ doc = { ...doc, ...versionData, status: doc.status };
2226
2261
  }
2227
2262
  }
2228
2263
  return doc;
@@ -2333,7 +2368,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2333
2368
  const conditions = [];
2334
2369
  const params = [];
2335
2370
  if (!args.draft && globalConfig.versions) {
2336
- conditions.push("publishStatus = 'published'");
2371
+ conditions.push("status = 'published'");
2337
2372
  }
2338
2373
  if (conditions.length > 0) {
2339
2374
  sql += ` WHERE ${conditions.join(" AND ")}`;
@@ -2342,15 +2377,11 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2342
2377
  const result2 = this.db.prepare(sql).get(...params);
2343
2378
  if (result2) {
2344
2379
  let doc = this.rowToDoc(result2, globalConfig);
2345
- if (args.draft && doc.hasDraft) {
2346
- const versions = await this.findVersions({
2347
- collection: args.collection,
2348
- documentId: parsed.globalSlug,
2349
- limit: 1,
2350
- sort: "-createdAt"
2351
- });
2352
- if (versions.docs.length > 0 && versions.docs[0].status === "draft") {
2353
- doc = { ...doc, ...versions.docs[0].data, hasDraft: true, publishStatus: doc.publishStatus };
2380
+ if (args.draft) {
2381
+ const version = this.db.prepare(`SELECT * FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? AND tenant_id IS NULL ORDER BY version DESC LIMIT 1`).get(args.collection, parsed.globalSlug);
2382
+ if (version) {
2383
+ const versionData = version.data ? JSON.parse(version.data) : {};
2384
+ doc = { ...doc, ...versionData, status: doc.status };
2354
2385
  }
2355
2386
  }
2356
2387
  return doc;
@@ -2366,7 +2397,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2366
2397
  async findVersions(args) {
2367
2398
  this.ensureVersionsTable();
2368
2399
  const { collection, documentId, tenantID, limit = 20, page = 1 } = args;
2369
- const conditions = [`collection_slug = ?`, `document_id = ?`];
2400
+ const conditions = [`collection_slug = ?`, `document_id = ?`, `autosave = 0`];
2370
2401
  const params = [collection, documentId];
2371
2402
  if (tenantID) {
2372
2403
  conditions.push(`tenant_id = ?`);
@@ -2401,13 +2432,30 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2401
2432
  async createVersion(args) {
2402
2433
  this.ensureVersionsTable();
2403
2434
  const now = (/* @__PURE__ */ new Date()).toISOString();
2435
+ if (args.autosave) {
2436
+ let sql = `SELECT * FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? AND autosave = 1`;
2437
+ const params = [args.collection, args.documentId];
2438
+ if (args.tenantID) {
2439
+ sql += ` AND tenant_id = ?`;
2440
+ params.push(args.tenantID);
2441
+ } else {
2442
+ sql += ` AND tenant_id IS NULL`;
2443
+ }
2444
+ sql += ` LIMIT 1`;
2445
+ const existing = this.db.prepare(sql).get(...params);
2446
+ if (existing) {
2447
+ this.db.prepare(`UPDATE ${this.versionsTableName} SET data = ?, status = ?, updated_at = ? WHERE id = ?`).run(JSON.stringify(args.data), args.status, now, existing.id);
2448
+ const result = await this.findVersionByID({ collection: args.collection, versionId: existing.id });
2449
+ if (result) return result;
2450
+ }
2451
+ }
2404
2452
  const id = this.generateId();
2405
- const latestRow = this.db.prepare(`SELECT version FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? ORDER BY version DESC LIMIT 1`).get(args.collection, args.documentId);
2453
+ const latestRow = this.db.prepare(`SELECT version FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? AND autosave = 0 ORDER BY version DESC LIMIT 1`).get(args.collection, args.documentId);
2406
2454
  const nextVersion = (latestRow?.version ?? 0) + 1;
2407
2455
  this.db.prepare(
2408
2456
  `INSERT INTO ${this.versionsTableName} (
2409
- id, collection_slug, document_id, tenant_id, version, status, data, created_by, change_description, published_at, created_at, updated_at
2410
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
2457
+ id, collection_slug, document_id, tenant_id, version, status, autosave, data, created_by, change_description, published_at, created_at, updated_at
2458
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
2411
2459
  ).run(
2412
2460
  id,
2413
2461
  args.collection,
@@ -2415,6 +2463,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2415
2463
  args.tenantID ?? null,
2416
2464
  nextVersion,
2417
2465
  args.status,
2466
+ args.autosave ? 1 : 0,
2418
2467
  JSON.stringify(args.data),
2419
2468
  args.createdBy ?? null,
2420
2469
  args.changeDescription ?? null,
@@ -2422,23 +2471,28 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2422
2471
  now,
2423
2472
  now
2424
2473
  );
2425
- const collectionConfig = this.collections.get(args.collection);
2426
- const maxPerDoc = collectionConfig?.versions?.maxPerDoc;
2427
- if (maxPerDoc && maxPerDoc > 0) {
2428
- await this.deleteVersions({ collection: args.collection, documentId: args.documentId, keepLatest: maxPerDoc, tenantID: args.tenantID });
2474
+ if (!args.autosave) {
2475
+ const collectionConfig = this.collections.get(args.collection);
2476
+ const maxPerDoc = collectionConfig?.versions?.maxPerDoc;
2477
+ if (maxPerDoc && maxPerDoc > 0) {
2478
+ await this.deleteVersions({ collection: args.collection, documentId: args.documentId, keepLatest: maxPerDoc, tenantID: args.tenantID });
2479
+ }
2429
2480
  }
2430
2481
  const saved = await this.findVersionByID({ collection: args.collection, versionId: id });
2431
2482
  return saved;
2432
2483
  }
2484
+ async updateLatestVersion(args) {
2485
+ return this.createVersion({ ...args, autosave: true });
2486
+ }
2433
2487
  async deleteVersions(args) {
2434
2488
  this.ensureVersionsTable();
2435
2489
  const { collection, documentId, keepLatest, tenantID } = args;
2436
2490
  if (keepLatest && keepLatest > 0) {
2437
- const rows = this.db.prepare(`SELECT id, status FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? ORDER BY version DESC`).all(collection, documentId);
2491
+ const rows = this.db.prepare(`SELECT id, status, autosave FROM ${this.versionsTableName} WHERE collection_slug = ? AND document_id = ? ORDER BY version DESC`).all(collection, documentId);
2438
2492
  let draftCount = 0;
2439
2493
  const toDelete = [];
2440
2494
  for (const row of rows) {
2441
- if (row.status === "published") continue;
2495
+ if (row.status === "published" || row.autosave === 1) continue;
2442
2496
  draftCount++;
2443
2497
  if (draftCount > keepLatest) toDelete.push(row.id);
2444
2498
  }
@@ -2470,60 +2524,6 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2470
2524
  updatedAt: row.updated_at
2471
2525
  };
2472
2526
  }
2473
- async findDraft(args) {
2474
- this.ensureDraftsTable();
2475
- let sql = `SELECT * FROM ${this.draftsTableName} WHERE collection_slug = ? AND document_id = ?`;
2476
- const params = [args.collection, args.documentId];
2477
- if (args.tenantID) {
2478
- sql += ` AND tenant_id = ?`;
2479
- params.push(args.tenantID);
2480
- } else {
2481
- sql += ` AND tenant_id IS NULL`;
2482
- }
2483
- sql += ` LIMIT 1`;
2484
- const row = this.db.prepare(sql).get(...params);
2485
- if (!row) return null;
2486
- return this.rowToDraft(row);
2487
- }
2488
- async upsertDraft(args) {
2489
- this.ensureDraftsTable();
2490
- const existing = await this.findDraft(args);
2491
- const now = (/* @__PURE__ */ new Date()).toISOString();
2492
- const draftUpdatedAt = args.draftUpdatedAt || now;
2493
- const id = existing?.id || this.generateId();
2494
- this.db.prepare(
2495
- `INSERT OR REPLACE INTO ${this.draftsTableName} (
2496
- id, collection_slug, document_id, tenant_id, data, base_updated_at, draft_updated_at, created_at, updated_at
2497
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`
2498
- ).run(
2499
- id,
2500
- args.collection,
2501
- args.documentId,
2502
- args.tenantID ?? null,
2503
- JSON.stringify(args.data),
2504
- args.baseUpdatedAt ?? null,
2505
- draftUpdatedAt,
2506
- existing?.createdAt || now,
2507
- now
2508
- );
2509
- const saved = await this.findDraft(args);
2510
- if (!saved) {
2511
- throw new Error("Failed to persist draft snapshot");
2512
- }
2513
- return saved;
2514
- }
2515
- async deleteDraft(args) {
2516
- this.ensureDraftsTable();
2517
- let sql = `DELETE FROM ${this.draftsTableName} WHERE collection_slug = ? AND document_id = ?`;
2518
- const params = [args.collection, args.documentId];
2519
- if (args.tenantID) {
2520
- sql += ` AND tenant_id = ?`;
2521
- params.push(args.tenantID);
2522
- } else {
2523
- sql += ` AND tenant_id IS NULL`;
2524
- }
2525
- this.db.prepare(sql).run(...params);
2526
- }
2527
2527
  // ========================================================================
2528
2528
  // Helpers
2529
2529
  // ========================================================================
@@ -2692,7 +2692,7 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2692
2692
  if (config.tenantScoped) {
2693
2693
  doc.tenantID = row.tenant_id;
2694
2694
  }
2695
- doc.publishStatus = row.publishStatus ?? "published";
2695
+ doc.status = row.status ?? "published";
2696
2696
  doc.hasDraft = row.hasDraft ? Boolean(row.hasDraft) : false;
2697
2697
  return doc;
2698
2698
  }
@@ -2719,19 +2719,6 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2719
2719
  getTableNameFor(slug) {
2720
2720
  return slug.replace(/-/g, "_");
2721
2721
  }
2722
- rowToDraft(row) {
2723
- return {
2724
- id: row.id,
2725
- collection: row.collection_slug,
2726
- documentId: row.document_id,
2727
- tenantID: row.tenant_id ?? void 0,
2728
- data: row.data ? JSON.parse(row.data) : {},
2729
- baseUpdatedAt: row.base_updated_at ?? null,
2730
- draftUpdatedAt: row.draft_updated_at,
2731
- createdAt: row.created_at,
2732
- updatedAt: row.updated_at
2733
- };
2734
- }
2735
2722
  // ========================================================================
2736
2723
  // Migrations
2737
2724
  // ========================================================================
@@ -2739,7 +2726,6 @@ var LocalAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
2739
2726
  for (const config of this.collections.values()) {
2740
2727
  this.ensureTable(config);
2741
2728
  }
2742
- this.ensureDraftsTable();
2743
2729
  console.log("[LocalAdapter] Migrations complete");
2744
2730
  }
2745
2731
  async rollback() {
@@ -2797,5 +2783,5 @@ exports.validateCollection = validateCollection;
2797
2783
  exports.validateConfig = validateConfig;
2798
2784
  exports.validateFields = validateFields;
2799
2785
  exports.validateGlobal = validateGlobal;
2800
- //# sourceMappingURL=chunk-ROJHKAQ4.cjs.map
2801
- //# sourceMappingURL=chunk-ROJHKAQ4.cjs.map
2786
+ //# sourceMappingURL=chunk-E2763JUP.cjs.map
2787
+ //# sourceMappingURL=chunk-E2763JUP.cjs.map