@kyro-cms/core 0.9.1 → 0.9.4

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 (186) 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-4AO3A3JM.js → chunk-NFKRKH3P.js} +10 -2
  53. package/dist/chunk-NFKRKH3P.js.map +1 -0
  54. package/dist/{chunk-L46ROHUS.cjs → chunk-NI5D3F7H.cjs} +13 -5
  55. package/dist/chunk-NI5D3F7H.cjs.map +1 -0
  56. package/dist/{chunk-UERVXYVK.cjs → chunk-NWUEVLQT.cjs} +13 -13
  57. package/dist/{chunk-UERVXYVK.cjs.map → chunk-NWUEVLQT.cjs.map} +1 -1
  58. package/dist/{chunk-KPA4AN4R.js → chunk-OHC6UHFY.js} +86 -12
  59. package/dist/chunk-OHC6UHFY.js.map +1 -0
  60. package/dist/{chunk-DEVFAKCQ.cjs → chunk-PHJRNPHY.cjs} +6 -6
  61. package/dist/chunk-PHJRNPHY.cjs.map +1 -0
  62. package/dist/{chunk-VO35MNPH.js → chunk-PQ72Z6WC.js} +67 -105
  63. package/dist/chunk-PQ72Z6WC.js.map +1 -0
  64. package/dist/{chunk-KNRSROWB.cjs → chunk-PV2I2KMI.cjs} +86 -12
  65. package/dist/chunk-PV2I2KMI.cjs.map +1 -0
  66. package/dist/{chunk-V2TVSCV5.cjs → chunk-Q23GAMLE.cjs} +71 -109
  67. package/dist/chunk-Q23GAMLE.cjs.map +1 -0
  68. package/dist/{chunk-COIASRDK.cjs → chunk-RFFSZSCL.cjs} +107 -171
  69. package/dist/chunk-RFFSZSCL.cjs.map +1 -0
  70. package/dist/{chunk-AL5KX63J.js → chunk-UUDTPZX6.js} +3 -3
  71. package/dist/chunk-UUDTPZX6.js.map +1 -0
  72. package/dist/{chunk-EJN2PAOE.js → chunk-V7KZQIZ6.js} +102 -166
  73. package/dist/chunk-V7KZQIZ6.js.map +1 -0
  74. package/dist/{chunk-DYTZ6FQ7.js → chunk-WXVB364T.js} +2 -2
  75. package/dist/chunk-WXVB364T.js.map +1 -0
  76. package/dist/{chunk-WNCYAKF3.cjs → chunk-Y7AQK4R4.cjs} +93 -9
  77. package/dist/chunk-Y7AQK4R4.cjs.map +1 -0
  78. package/dist/{chunk-SPBTLUN6.js → chunk-YFAVQQTU.js} +7 -7
  79. package/dist/{chunk-SPBTLUN6.js.map → chunk-YFAVQQTU.js.map} +1 -1
  80. package/dist/cli/index.cjs +5 -5
  81. package/dist/cli/index.js +5 -5
  82. package/dist/client.cjs +4 -4
  83. package/dist/client.d.cts +2 -2
  84. package/dist/client.d.ts +2 -2
  85. package/dist/client.js +2 -2
  86. package/dist/drizzle/index.cjs +14 -14
  87. package/dist/drizzle/index.d.cts +4 -10
  88. package/dist/drizzle/index.d.ts +4 -10
  89. package/dist/drizzle/index.js +5 -5
  90. package/dist/fields/index.cjs +22 -22
  91. package/dist/fields/index.d.cts +1 -1
  92. package/dist/fields/index.d.ts +1 -1
  93. package/dist/fields/index.js +2 -2
  94. package/dist/graphql/index.cjs +1 -1
  95. package/dist/graphql/index.d.cts +3 -3
  96. package/dist/graphql/index.d.ts +3 -3
  97. package/dist/graphql/index.js +1 -1
  98. package/dist/{index-CJXPB_ot.d.ts → index-BKta3cBH.d.cts} +3 -2
  99. package/dist/{index-CaTNnLGd.d.cts → index-ClOqnkTO.d.ts} +3 -2
  100. package/dist/index.cjs +119 -119
  101. package/dist/index.d.cts +10 -15
  102. package/dist/index.d.ts +10 -15
  103. package/dist/index.js +19 -19
  104. package/dist/integration.cjs +3 -3
  105. package/dist/integration.js +2 -2
  106. package/dist/media-7WDX4BDJ.js +4 -0
  107. package/dist/{media-GPPTZ43E.js.map → media-7WDX4BDJ.js.map} +1 -1
  108. package/dist/{media-XNTUFJZR.cjs → media-TUSLVRQ6.cjs} +3 -3
  109. package/dist/{media-XNTUFJZR.cjs.map → media-TUSLVRQ6.cjs.map} +1 -1
  110. package/dist/{mongo-auth-adapter-ISOM7FSS.cjs → mongo-auth-adapter-GT4S7SCU.cjs} +3 -3
  111. package/dist/{mongo-auth-adapter-ISOM7FSS.cjs.map → mongo-auth-adapter-GT4S7SCU.cjs.map} +1 -1
  112. package/dist/mongo-auth-adapter-M7VV4LNB.js +4 -0
  113. package/dist/{mongo-auth-adapter-MO6STCV3.js.map → mongo-auth-adapter-M7VV4LNB.js.map} +1 -1
  114. package/dist/mongodb/index.cjs +5 -5
  115. package/dist/mongodb/index.d.cts +4 -9
  116. package/dist/mongodb/index.d.ts +4 -9
  117. package/dist/mongodb/index.js +3 -3
  118. package/dist/postgres-auth-adapter-AFAPISH7.js +5 -0
  119. package/dist/{postgres-auth-adapter-DWDR7P5G.js.map → postgres-auth-adapter-AFAPISH7.js.map} +1 -1
  120. package/dist/postgres-auth-adapter-SFDTLONT.cjs +14 -0
  121. package/dist/{postgres-auth-adapter-WRWSJD4E.cjs.map → postgres-auth-adapter-SFDTLONT.cjs.map} +1 -1
  122. package/dist/{redis-adapter-KJ3YOOT6.cjs → redis-adapter-UQX4EE3B.cjs} +3 -3
  123. package/dist/{redis-adapter-KJ3YOOT6.cjs.map → redis-adapter-UQX4EE3B.cjs.map} +1 -1
  124. package/dist/redis-adapter-XALOGWY3.js +4 -0
  125. package/dist/{redis-adapter-HGTPWIGV.js.map → redis-adapter-XALOGWY3.js.map} +1 -1
  126. package/dist/rest/index.cjs +10 -10
  127. package/dist/rest/index.d.cts +4 -4
  128. package/dist/rest/index.d.ts +4 -4
  129. package/dist/rest/index.js +8 -8
  130. package/dist/{schema-TTFE4467.cjs → schema-6QL3USNB.cjs} +15 -15
  131. package/dist/{schema-TTFE4467.cjs.map → schema-6QL3USNB.cjs.map} +1 -1
  132. package/dist/{schema-6I5OFR4Z.js → schema-FNNWEAAW.js} +4 -4
  133. package/dist/{schema-6I5OFR4Z.js.map → schema-FNNWEAAW.js.map} +1 -1
  134. package/dist/{sqlite-adapter-CSIZE5SX.cjs → sqlite-adapter-AQB5TCGV.cjs} +3 -3
  135. package/dist/{sqlite-adapter-CSIZE5SX.cjs.map → sqlite-adapter-AQB5TCGV.cjs.map} +1 -1
  136. package/dist/sqlite-adapter-N5H6IM2X.js +4 -0
  137. package/dist/{sqlite-adapter-6GEUSVXQ.js.map → sqlite-adapter-N5H6IM2X.js.map} +1 -1
  138. package/dist/templates/index.cjs +49 -49
  139. package/dist/templates/index.d.cts +2 -2
  140. package/dist/templates/index.d.ts +2 -2
  141. package/dist/templates/index.js +2 -2
  142. package/dist/trpc/index.cjs +11 -11
  143. package/dist/trpc/index.d.cts +3 -3
  144. package/dist/trpc/index.d.ts +3 -3
  145. package/dist/trpc/index.js +2 -2
  146. package/dist/{types-Z6FBiqa2.d.cts → types-DeSApf9T.d.cts} +1 -0
  147. package/dist/{types-Z6FBiqa2.d.ts → types-DeSApf9T.d.ts} +1 -0
  148. package/dist/{types-CyCQ6SAI.d.ts → types-Dgzlftb7.d.ts} +6 -28
  149. package/dist/{types-DJxD9394.d.cts → types-Ds0tCA3L.d.cts} +6 -28
  150. package/dist/ws/index.cjs +6 -6
  151. package/dist/ws/index.js +2 -2
  152. package/package.json +1 -1
  153. package/dist/bootstrap-5NLASFOG.cjs +0 -32
  154. package/dist/bootstrap-T5BK77LD.js +0 -7
  155. package/dist/chunk-22M4O4ZJ.js.map +0 -1
  156. package/dist/chunk-2HZRBATX.cjs.map +0 -1
  157. package/dist/chunk-3TPQ2BU6.js.map +0 -1
  158. package/dist/chunk-4AO3A3JM.js.map +0 -1
  159. package/dist/chunk-5EPFQUQD.js.map +0 -1
  160. package/dist/chunk-AL5KX63J.js.map +0 -1
  161. package/dist/chunk-C36TMDTY.cjs.map +0 -1
  162. package/dist/chunk-COIASRDK.cjs.map +0 -1
  163. package/dist/chunk-DEVFAKCQ.cjs.map +0 -1
  164. package/dist/chunk-DVD5P72E.cjs.map +0 -1
  165. package/dist/chunk-DYTZ6FQ7.js.map +0 -1
  166. package/dist/chunk-EJN2PAOE.js.map +0 -1
  167. package/dist/chunk-FAXU7BMP.js.map +0 -1
  168. package/dist/chunk-FOPGUM27.js.map +0 -1
  169. package/dist/chunk-JOPVMWTM.cjs.map +0 -1
  170. package/dist/chunk-KNRSROWB.cjs.map +0 -1
  171. package/dist/chunk-KPA4AN4R.js.map +0 -1
  172. package/dist/chunk-L46ROHUS.cjs.map +0 -1
  173. package/dist/chunk-PI73NNOK.cjs.map +0 -1
  174. package/dist/chunk-PU2Z5VWF.js.map +0 -1
  175. package/dist/chunk-ROJHKAQ4.cjs.map +0 -1
  176. package/dist/chunk-RSF3UU7H.cjs.map +0 -1
  177. package/dist/chunk-TXSZFA4G.js.map +0 -1
  178. package/dist/chunk-V2TVSCV5.cjs.map +0 -1
  179. package/dist/chunk-VO35MNPH.js.map +0 -1
  180. package/dist/chunk-WNCYAKF3.cjs.map +0 -1
  181. package/dist/media-GPPTZ43E.js +0 -4
  182. package/dist/mongo-auth-adapter-MO6STCV3.js +0 -4
  183. package/dist/postgres-auth-adapter-DWDR7P5G.js +0 -5
  184. package/dist/postgres-auth-adapter-WRWSJD4E.cjs +0 -14
  185. package/dist/redis-adapter-HGTPWIGV.js +0 -4
  186. package/dist/sqlite-adapter-6GEUSVXQ.js +0 -4
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkPI73NNOK_cjs = require('./chunk-PI73NNOK.cjs');
3
+ var chunkGUUB5EAG_cjs = require('./chunk-GUUB5EAG.cjs');
4
4
  var drizzleOrm = require('drizzle-orm');
5
5
  var pgCore = require('drizzle-orm/pg-core');
6
6
  var sqliteCore = require('drizzle-orm/sqlite-core');
@@ -83,17 +83,16 @@ function collectionToDrizzleSchema(collection, dialect = "postgres") {
83
83
  lines.push(` createdAt: pg.timestamp('created_at').defaultNow(),`);
84
84
  lines.push(` updatedAt: pg.timestamp('updated_at').defaultNow(),`);
85
85
  }
86
- lines.push(` publishStatus: ${dialect === "sqlite" ? "sqlite" : "pg"}.varchar('publishStatus').default('draft'),`);
86
+ lines.push(` status: ${dialect === "sqlite" ? "sqlite" : "pg"}.varchar('status').default('draft'),`);
87
87
  lines.push(` hasDraft: ${dialect === "sqlite" ? "sqlite" : "pg"}.boolean('hasDraft').default(false),`);
88
88
  lines.push("});");
89
89
  return lines.join("\n");
90
90
  }
91
- var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
91
+ var DrizzleAdapter = class extends chunkGUUB5EAG_cjs.AbstractBaseAdapter {
92
92
  client;
93
93
  schema;
94
94
  dialect;
95
95
  connectionString;
96
- draftsTableReady = false;
97
96
  versionsTableReady = false;
98
97
  constructor(options) {
99
98
  super();
@@ -281,7 +280,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
281
280
  }
282
281
  if (!columns.createdAt) columns.createdAt = this.dialect === "sqlite" ? sqliteCore.text("created_at").default((/* @__PURE__ */ new Date()).toISOString()) : pgCore.timestamp("created_at").defaultNow();
283
282
  if (!columns.updatedAt) columns.updatedAt = this.dialect === "sqlite" ? sqliteCore.text("updated_at").default((/* @__PURE__ */ new Date()).toISOString()) : pgCore.timestamp("updated_at").defaultNow();
284
- columns.publishStatus = this.dialect === "sqlite" ? sqliteCore.text("publishStatus").default("draft") : pgCore.varchar("publishStatus", { length: 20 }).default("draft");
283
+ columns.status = this.dialect === "sqlite" ? sqliteCore.text("status").default("draft") : pgCore.varchar("status", { length: 20 }).default("draft");
285
284
  columns.hasDraft = this.dialect === "sqlite" ? sqliteCore.integer("hasDraft", { mode: "boolean" }).default(false) : pgCore.boolean("hasDraft").default(false);
286
285
  return this.dialect === "sqlite" ? sqliteCore.sqliteTable(tableName, columns) : pgCore.pgTable(tableName, columns);
287
286
  }
@@ -301,7 +300,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
301
300
  ${colDefs}
302
301
  ${hasCreated ? "" : '"created_at" TIMESTAMP NOT NULL DEFAULT NOW(),'}
303
302
  ${hasUpdated ? "" : '"updated_at" TIMESTAMP NOT NULL DEFAULT NOW(),'}
304
- "publishStatus" VARCHAR(20) DEFAULT 'draft',
303
+ "status" VARCHAR(20) DEFAULT 'draft',
305
304
  "hasDraft" BOOLEAN DEFAULT false
306
305
  )
307
306
  `);
@@ -313,7 +312,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
313
312
  ${colDefs}
314
313
  ${hasCreated ? "" : `"created_at" TEXT NOT NULL DEFAULT (datetime('now')),`}
315
314
  ${hasUpdated ? "" : `"updated_at" TEXT NOT NULL DEFAULT (datetime('now')),`}
316
- "publishStatus" TEXT DEFAULT 'draft',
315
+ "status" TEXT DEFAULT 'draft',
317
316
  "hasDraft" INTEGER DEFAULT 0
318
317
  )
319
318
  `);
@@ -391,13 +390,13 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
391
390
  defs["id"] = isGlobal ? '"id" TEXT PRIMARY KEY' : '"id" UUID PRIMARY KEY DEFAULT gen_random_uuid()';
392
391
  if (!hasCreated) defs["created_at"] = '"created_at" TIMESTAMP DEFAULT NULL';
393
392
  if (!hasUpdated) defs["updated_at"] = '"updated_at" TIMESTAMP DEFAULT NULL';
394
- defs["publishStatus"] = '"publishStatus" VARCHAR(20) DEFAULT NULL';
393
+ defs["status"] = '"status" VARCHAR(20) DEFAULT NULL';
395
394
  defs["hasDraft"] = '"hasDraft" BOOLEAN DEFAULT NULL';
396
395
  } else {
397
396
  defs["id"] = '"id" TEXT PRIMARY KEY';
398
397
  if (!hasCreated) defs["created_at"] = '"created_at" TEXT DEFAULT NULL';
399
398
  if (!hasUpdated) defs["updated_at"] = '"updated_at" TEXT DEFAULT NULL';
400
- defs["publishStatus"] = '"publishStatus" TEXT DEFAULT NULL';
399
+ defs["status"] = '"status" TEXT DEFAULT NULL';
401
400
  defs["hasDraft"] = '"hasDraft" INTEGER DEFAULT NULL';
402
401
  }
403
402
  for (const field of config.fields) {
@@ -520,15 +519,16 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
520
519
  const table = this.getTable(slug);
521
520
  let effectiveWhere = { ...where };
522
521
  if (this.tenantContext && config.tenantScoped) {
523
- const rlsQuery = chunkPI73NNOK_cjs.applyRLS({ where: effectiveWhere }, slug, this.tenantContext, chunkPI73NNOK_cjs.DEFAULT_RLS_CONFIG);
522
+ const rlsQuery = chunkGUUB5EAG_cjs.applyRLS({ where: effectiveWhere }, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG);
524
523
  effectiveWhere = rlsQuery.where || {};
525
524
  }
526
525
  const filters = this.buildWhereClause(effectiveWhere, config, table, tenantID);
527
- if (!draft && table.publishStatus) {
528
- filters.push(drizzleOrm.eq(table.publishStatus, "published"));
526
+ if (!draft && table.status) {
527
+ filters.push(drizzleOrm.eq(table.status, "published"));
529
528
  }
530
529
  const sortOption = this.parseSort(sort);
531
- const totalDocs = await this.count({ collection: slug, where: effectiveWhere, tenantID });
530
+ const countWhere = !draft && table.status ? { ...effectiveWhere, status: "published" } : effectiveWhere;
531
+ const totalDocs = await this.count({ collection: slug, where: countWhere, tenantID });
532
532
  const offset = (page - 1) * limit;
533
533
  let results = [];
534
534
  try {
@@ -544,20 +544,21 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
544
544
  }
545
545
  let docs = results.map((doc) => this.processResult(doc, config));
546
546
  if (this.tenantContext && !this.tenantContext.isSuperAdmin) {
547
- docs = docs.filter((doc) => chunkPI73NNOK_cjs.canAccessDocument(doc, slug, this.tenantContext, chunkPI73NNOK_cjs.DEFAULT_RLS_CONFIG));
547
+ docs = docs.filter((doc) => chunkGUUB5EAG_cjs.canAccessDocument(doc, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG));
548
548
  }
549
549
  if (draft) {
550
550
  docs = await Promise.all(docs.map(async (doc) => {
551
- if (doc.hasDraft) {
552
- const versions = await this.findVersions({
553
- collection: slug,
554
- documentId: doc.id,
555
- limit: 1,
556
- sort: "-createdAt"
557
- });
558
- if (versions.docs.length > 0 && versions.docs[0].status === "draft") {
559
- return { ...doc, ...versions.docs[0].data, hasDraft: true, publishStatus: doc.publishStatus };
560
- }
551
+ const versions = await this.executeRaw(drizzleOrm.sql`
552
+ SELECT * FROM kyro_versions
553
+ WHERE collection_slug = ${slug}
554
+ AND document_id = ${doc.id}
555
+ ORDER BY created_at DESC
556
+ LIMIT 1
557
+ `);
558
+ if (versions.length > 0) {
559
+ const ver = versions[0];
560
+ const versionData = typeof ver.data === "string" ? JSON.parse(ver.data) : ver.data;
561
+ return { ...doc, ...versionData, status: doc.status };
561
562
  }
562
563
  return doc;
563
564
  }));
@@ -573,26 +574,29 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
573
574
  const table = this.getTable(slug);
574
575
  if (this.tenantContext && config.tenantScoped) {
575
576
  const tempDoc = { id, tenantId: this.tenantContext.tenantId };
576
- if (!chunkPI73NNOK_cjs.canAccessDocument(tempDoc, slug, this.tenantContext, chunkPI73NNOK_cjs.DEFAULT_RLS_CONFIG)) {
577
+ if (!chunkGUUB5EAG_cjs.canAccessDocument(tempDoc, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG)) {
577
578
  return null;
578
579
  }
579
580
  }
580
581
  const conditions = [drizzleOrm.eq(table.id, id)];
581
582
  if (tenantID && table.tenantId) conditions.push(drizzleOrm.eq(table.tenantId, tenantID));
582
- if (!draft && table.publishStatus) conditions.push(drizzleOrm.eq(table.publishStatus, "published"));
583
+ if (!draft && table.status) conditions.push(drizzleOrm.eq(table.status, "published"));
583
584
  const whereClause = conditions.length > 1 ? drizzleOrm.and(...conditions) : conditions[0];
584
585
  let allRows = await this.client.select().from(table).where(whereClause);
585
586
  if (allRows.length === 0) return null;
586
587
  let doc = this.processResult(allRows[0], config);
587
- if (draft && doc.hasDraft) {
588
- const versions = await this.findVersions({
589
- collection: slug,
590
- documentId: doc.id,
591
- limit: 1,
592
- sort: "-createdAt"
593
- });
594
- if (versions.docs.length > 0 && versions.docs[0].status === "draft") {
595
- doc = { ...doc, ...versions.docs[0].data, hasDraft: true, publishStatus: doc.publishStatus };
588
+ if (draft) {
589
+ const versions = await this.executeRaw(drizzleOrm.sql`
590
+ SELECT * FROM kyro_versions
591
+ WHERE collection_slug = ${slug}
592
+ AND document_id = ${doc.id}
593
+ ORDER BY created_at DESC
594
+ LIMIT 1
595
+ `);
596
+ if (versions.length > 0) {
597
+ const ver = versions[0];
598
+ const versionData = typeof ver.data === "string" ? JSON.parse(ver.data) : ver.data;
599
+ doc = { ...doc, ...versionData, status: doc.status };
596
600
  }
597
601
  }
598
602
  return doc;
@@ -663,21 +667,24 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
663
667
  if (!globalConfig) throw new Error(`Global "${globalSlug}" not found`);
664
668
  const table = this.getTable(slug);
665
669
  let query = this.client.select().from(table);
666
- if (!draft && table.publishStatus) {
667
- query = query.where(drizzleOrm.eq(table.publishStatus, "published"));
670
+ if (!draft && table.status) {
671
+ query = query.where(drizzleOrm.eq(table.status, "published"));
668
672
  }
669
673
  const results = await query.limit(1);
670
674
  if (results.length === 0) return null;
671
675
  let doc = this.processResult(results[0], globalConfig);
672
- if (draft && doc.hasDraft) {
673
- const versions = await this.findVersions({
674
- collection: slug,
675
- documentId: globalSlug,
676
- limit: 1,
677
- sort: "-createdAt"
678
- });
679
- if (versions.docs.length > 0 && versions.docs[0].status === "draft") {
680
- doc = { ...doc, ...versions.docs[0].data, hasDraft: true, publishStatus: doc.publishStatus };
676
+ if (draft) {
677
+ const versions = await this.executeRaw(drizzleOrm.sql`
678
+ SELECT * FROM kyro_versions
679
+ WHERE collection_slug = ${slug}
680
+ AND document_id = ${globalSlug}
681
+ ORDER BY created_at DESC
682
+ LIMIT 1
683
+ `);
684
+ if (versions.length > 0) {
685
+ const ver = versions[0];
686
+ const versionData = typeof ver.data === "string" ? JSON.parse(ver.data) : ver.data;
687
+ doc = { ...doc, ...versionData, status: doc.status };
681
688
  }
682
689
  }
683
690
  return doc;
@@ -694,6 +701,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
694
701
  FROM kyro_versions
695
702
  WHERE collection_slug = ${slug}
696
703
  AND document_id = ${documentId}
704
+ AND autosave = 0
697
705
  ${tenantID ? drizzleOrm.sql`AND tenant_id = ${tenantID}` : drizzleOrm.sql``}
698
706
  `);
699
707
  const totalDocs = parseInt(countResult[0]?.count || "0");
@@ -702,6 +710,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
702
710
  FROM kyro_versions
703
711
  WHERE collection_slug = ${slug}
704
712
  AND document_id = ${documentId}
713
+ AND autosave = 0
705
714
  ${tenantID ? drizzleOrm.sql`AND tenant_id = ${tenantID}` : drizzleOrm.sql``}
706
715
  ORDER BY created_at DESC
707
716
  LIMIT ${limit}
@@ -733,28 +742,53 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
733
742
  }
734
743
  async createVersion(args) {
735
744
  await this.ensureVersionsTable();
736
- const id = Math.random().toString(36).substring(2, 15);
737
745
  const now = (/* @__PURE__ */ new Date()).toISOString();
746
+ if (args.autosave) {
747
+ const existing = await this.executeRaw(drizzleOrm.sql`
748
+ SELECT * FROM kyro_versions
749
+ WHERE collection_slug = ${args.collection}
750
+ AND document_id = ${args.documentId}
751
+ AND autosave = 1
752
+ ${args.tenantID ? drizzleOrm.sql`AND tenant_id = ${args.tenantID}` : drizzleOrm.sql``}
753
+ LIMIT 1
754
+ `);
755
+ if (existing.length > 0) {
756
+ await this.executeRaw(drizzleOrm.sql`
757
+ UPDATE kyro_versions
758
+ SET data = ${JSON.stringify(args.data)},
759
+ status = ${args.status},
760
+ updated_at = ${now}
761
+ WHERE id = ${existing[0].id}
762
+ `);
763
+ return this.findVersionByID({ collection: args.collection, versionId: existing[0].id, tenantID: args.tenantID });
764
+ }
765
+ }
766
+ const id = Math.random().toString(36).substring(2, 15);
738
767
  await this.executeRaw(drizzleOrm.sql`
739
768
  INSERT INTO kyro_versions (
740
- id, collection_slug, document_id, tenant_id, data, status, created_by, change_description, created_at, updated_at
769
+ id, collection_slug, document_id, tenant_id, data, status, autosave, created_by, change_description, created_at, updated_at
741
770
  ) VALUES (
742
771
  ${id}, ${args.collection}, ${args.documentId}, ${args.tenantID || null},
743
- ${JSON.stringify(args.data)}, ${args.status}, ${args.createdBy || null},
772
+ ${JSON.stringify(args.data)}, ${args.status}, ${args.autosave ? 1 : 0}, ${args.createdBy || null},
744
773
  ${args.changeDescription || null}, ${now}, ${now}
745
774
  )
746
775
  `);
747
- const config = this.getCollection(args.collection);
748
- if (config.versions?.maxPerDoc) {
749
- await this.deleteVersions({
750
- collection: args.collection,
751
- documentId: args.documentId,
752
- keepLatest: config.versions.maxPerDoc,
753
- tenantID: args.tenantID
754
- });
776
+ if (!args.autosave) {
777
+ const config = this.getCollection(args.collection);
778
+ if (config.versions?.maxPerDoc) {
779
+ await this.deleteVersions({
780
+ collection: args.collection,
781
+ documentId: args.documentId,
782
+ keepLatest: config.versions.maxPerDoc,
783
+ tenantID: args.tenantID
784
+ });
785
+ }
755
786
  }
756
787
  return this.findVersionByID({ collection: args.collection, versionId: id, tenantID: args.tenantID });
757
788
  }
789
+ async updateLatestVersion(args) {
790
+ return this.createVersion({ ...args, autosave: true });
791
+ }
758
792
  async deleteVersions(args) {
759
793
  await this.ensureVersionsTable();
760
794
  if (args.keepLatest) {
@@ -762,6 +796,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
762
796
  SELECT id FROM kyro_versions
763
797
  WHERE collection_slug = ${args.collection}
764
798
  AND document_id = ${args.documentId}
799
+ AND autosave = 0
765
800
  ${args.tenantID ? drizzleOrm.sql`AND tenant_id = ${args.tenantID}` : drizzleOrm.sql``}
766
801
  ORDER BY created_at DESC
767
802
  LIMIT ${args.keepLatest}
@@ -772,6 +807,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
772
807
  DELETE FROM kyro_versions
773
808
  WHERE collection_slug = ${args.collection}
774
809
  AND document_id = ${args.documentId}
810
+ AND autosave = 0
775
811
  AND id NOT IN (${drizzleOrm.sql.join(keepIds.map((id) => drizzleOrm.sql`${id}`), drizzleOrm.sql`, `)})
776
812
  `);
777
813
  }
@@ -784,65 +820,6 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
784
820
  `);
785
821
  }
786
822
  }
787
- async findDraft(args) {
788
- await this.ensureDraftsTable();
789
- const draftId = this.getDraftId(args.collection, args.documentId, args.tenantID);
790
- const rows = await this.executeRaw(drizzleOrm.sql`
791
- SELECT *
792
- FROM kyro_drafts
793
- WHERE id = ${draftId}
794
- LIMIT 1
795
- `);
796
- const row = rows[0];
797
- return row ? this.rowToDraft(row) : null;
798
- }
799
- async upsertDraft(args) {
800
- await this.ensureDraftsTable();
801
- const now = (/* @__PURE__ */ new Date()).toISOString();
802
- const draftUpdatedAt = args.draftUpdatedAt || now;
803
- const draftId = this.getDraftId(args.collection, args.documentId, args.tenantID);
804
- const existing = await this.findDraft(args);
805
- if (existing) {
806
- await this.executeRaw(drizzleOrm.sql`
807
- UPDATE kyro_drafts
808
- SET
809
- data = ${JSON.stringify(args.data)},
810
- base_updated_at = ${args.baseUpdatedAt ?? null},
811
- draft_updated_at = ${draftUpdatedAt},
812
- updated_at = ${now}
813
- WHERE id = ${draftId}
814
- `);
815
- } else {
816
- await this.executeRaw(drizzleOrm.sql`
817
- INSERT INTO kyro_drafts (
818
- id, collection_slug, document_id, tenant_id, data, base_updated_at, draft_updated_at, created_at, updated_at
819
- ) VALUES (
820
- ${draftId},
821
- ${args.collection},
822
- ${args.documentId},
823
- ${args.tenantID ?? null},
824
- ${JSON.stringify(args.data)},
825
- ${args.baseUpdatedAt ?? null},
826
- ${draftUpdatedAt},
827
- ${now},
828
- ${now}
829
- )
830
- `);
831
- }
832
- const saved = await this.findDraft(args);
833
- if (!saved) {
834
- throw new Error("Failed to persist draft snapshot");
835
- }
836
- return saved;
837
- }
838
- async deleteDraft(args) {
839
- await this.ensureDraftsTable();
840
- const draftId = this.getDraftId(args.collection, args.documentId, args.tenantID);
841
- await this.executeRaw(drizzleOrm.sql`
842
- DELETE FROM kyro_drafts
843
- WHERE id = ${draftId}
844
- `);
845
- }
846
823
  // ========================================================================
847
824
  // Helper Methods
848
825
  // ========================================================================
@@ -976,41 +953,6 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
976
953
  }
977
954
  return result;
978
955
  }
979
- async ensureDraftsTable() {
980
- if (this.draftsTableReady) return;
981
- let createTableSQL;
982
- if (this.dialect === "sqlite") {
983
- createTableSQL = `
984
- CREATE TABLE IF NOT EXISTS kyro_drafts (
985
- id text PRIMARY KEY,
986
- collection_slug text NOT NULL,
987
- document_id text NOT NULL,
988
- tenant_id text,
989
- data text NOT NULL,
990
- base_updated_at text,
991
- draft_updated_at text NOT NULL,
992
- created_at text DEFAULT (datetime('now')),
993
- updated_at text DEFAULT (datetime('now'))
994
- )
995
- `;
996
- } else {
997
- createTableSQL = `
998
- CREATE TABLE IF NOT EXISTS kyro_drafts (
999
- id text PRIMARY KEY,
1000
- collection_slug text NOT NULL,
1001
- document_id text NOT NULL,
1002
- tenant_id text,
1003
- data text NOT NULL,
1004
- base_updated_at text,
1005
- draft_updated_at text NOT NULL,
1006
- created_at text NOT NULL,
1007
- updated_at text NOT NULL
1008
- )
1009
- `;
1010
- }
1011
- await this.executeRaw(drizzleOrm.sql.raw(createTableSQL));
1012
- this.draftsTableReady = true;
1013
- }
1014
956
  async ensureVersionsTable() {
1015
957
  if (this.versionsTableReady) return;
1016
958
  let createTableSQL;
@@ -1023,6 +965,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1023
965
  tenant_id text,
1024
966
  data text NOT NULL,
1025
967
  status text NOT NULL DEFAULT 'draft',
968
+ autosave integer NOT NULL DEFAULT 0,
1026
969
  created_by text,
1027
970
  change_description text,
1028
971
  created_at text DEFAULT (datetime('now')),
@@ -1038,6 +981,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1038
981
  tenant_id text,
1039
982
  data text NOT NULL,
1040
983
  status text NOT NULL,
984
+ autosave integer NOT NULL DEFAULT 0,
1041
985
  created_by text,
1042
986
  change_description text,
1043
987
  created_at text NOT NULL,
@@ -1046,11 +990,16 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1046
990
  `;
1047
991
  }
1048
992
  await this.executeRaw(drizzleOrm.sql.raw(createTableSQL));
993
+ try {
994
+ if (this.dialect === "postgres") {
995
+ await this.executeRaw(drizzleOrm.sql.raw(`ALTER TABLE kyro_versions ADD COLUMN IF NOT EXISTS autosave integer NOT NULL DEFAULT 0`));
996
+ } else {
997
+ await this.executeRaw(drizzleOrm.sql.raw(`ALTER TABLE kyro_versions ADD COLUMN autosave integer NOT NULL DEFAULT 0`));
998
+ }
999
+ } catch {
1000
+ }
1049
1001
  this.versionsTableReady = true;
1050
1002
  }
1051
- getDraftId(collection, documentId, tenantID) {
1052
- return `${collection}::${documentId}::${tenantID || "global"}`;
1053
- }
1054
1003
  async executeRaw(query) {
1055
1004
  const result = await this.client.execute(query);
1056
1005
  if (Array.isArray(result)) {
@@ -1064,24 +1013,11 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
1064
1013
  }
1065
1014
  return [];
1066
1015
  }
1067
- rowToDraft(row) {
1068
- return {
1069
- id: String(row.id),
1070
- collection: row.collection_slug,
1071
- documentId: row.document_id,
1072
- tenantID: row.tenant_id ?? void 0,
1073
- data: row.data ? JSON.parse(row.data) : {},
1074
- baseUpdatedAt: row.base_updated_at ?? null,
1075
- draftUpdatedAt: row.draft_updated_at,
1076
- createdAt: row.created_at,
1077
- updatedAt: row.updated_at
1078
- };
1079
- }
1080
1016
  };
1081
1017
  function createDrizzleAdapter(options) {
1082
1018
  return new DrizzleAdapter(options);
1083
1019
  }
1084
- var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-COIASRDK.cjs', document.baseURI).href)));
1020
+ var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-RFFSZSCL.cjs', document.baseURI).href)));
1085
1021
  var modPath = "node:sqlite";
1086
1022
  var { DatabaseSync } = _require(modPath);
1087
1023
  function getDialect() {
@@ -1119,7 +1055,7 @@ async function runMigrations(_db, _dialect) {
1119
1055
  );
1120
1056
  }
1121
1057
  async function seedDefaultRoles(db) {
1122
- const { roles } = await import('./schema-TTFE4467.cjs');
1058
+ const { roles } = await import('./schema-6QL3USNB.cjs');
1123
1059
  await db.insert(roles).values({
1124
1060
  name: "super_admin",
1125
1061
  level: 100,
@@ -1137,5 +1073,5 @@ exports.fieldToDrizzleType = fieldToDrizzleType;
1137
1073
  exports.genId = genId;
1138
1074
  exports.runMigrations = runMigrations;
1139
1075
  exports.seedDefaultRoles = seedDefaultRoles;
1140
- //# sourceMappingURL=chunk-COIASRDK.cjs.map
1141
- //# sourceMappingURL=chunk-COIASRDK.cjs.map
1076
+ //# sourceMappingURL=chunk-RFFSZSCL.cjs.map
1077
+ //# sourceMappingURL=chunk-RFFSZSCL.cjs.map