@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.
- package/README.md +0 -6
- package/dist/{WebhookService-Yg2UEOB4.d.cts → WebhookService-BKszZlG0.d.cts} +1 -1
- package/dist/{WebhookService-CUTb9XOy.d.ts → WebhookService-Ccf1j-IN.d.ts} +1 -1
- package/dist/api-handler-graphql.cjs +17 -17
- package/dist/api-handler-graphql.js +13 -13
- package/dist/api-handler-trpc.cjs +15 -15
- package/dist/api-handler-trpc.js +13 -13
- package/dist/api-handler.cjs +16 -16
- package/dist/api-handler.js +13 -13
- package/dist/{base-DaqY2GhA.d.ts → base-CIuXkrH4.d.cts} +3 -5
- package/dist/{base-B71y_EAF.d.cts → base-fFo4lqER.d.ts} +3 -5
- package/dist/bootstrap-3PV3GJ3S.js +7 -0
- package/dist/{bootstrap-T5BK77LD.js.map → bootstrap-3PV3GJ3S.js.map} +1 -1
- package/dist/bootstrap-4CELFLJO.cjs +32 -0
- package/dist/{bootstrap-5NLASFOG.cjs.map → bootstrap-4CELFLJO.cjs.map} +1 -1
- package/dist/{chunk-Z6ZWNWWR.js → chunk-4CV4JOE5.js} +3 -9
- package/dist/{chunk-Z6ZWNWWR.js.map → chunk-4CV4JOE5.js.map} +1 -1
- package/dist/{chunk-5EPFQUQD.js → chunk-53NYVYVX.js} +6 -6
- package/dist/chunk-53NYVYVX.js.map +1 -0
- package/dist/{chunk-22M4O4ZJ.js → chunk-5H3MWQJS.js} +129 -143
- package/dist/chunk-5H3MWQJS.js.map +1 -0
- package/dist/{chunk-RAMGUDJN.cjs → chunk-5PMQQFRE.cjs} +5 -5
- package/dist/{chunk-RAMGUDJN.cjs.map → chunk-5PMQQFRE.cjs.map} +1 -1
- package/dist/{chunk-TXSZFA4G.js → chunk-6UNONDW7.js} +93 -9
- package/dist/chunk-6UNONDW7.js.map +1 -0
- package/dist/{chunk-C36TMDTY.cjs → chunk-7OS7TX2Q.cjs} +49 -48
- package/dist/chunk-7OS7TX2Q.cjs.map +1 -0
- package/dist/{chunk-3TPQ2BU6.js → chunk-BYBMTIMT.js} +2 -6
- package/dist/chunk-BYBMTIMT.js.map +1 -0
- package/dist/{chunk-FOPGUM27.js → chunk-CJX74IYK.js} +5 -4
- package/dist/chunk-CJX74IYK.js.map +1 -0
- package/dist/{chunk-RSF3UU7H.cjs → chunk-CNKT4PME.cjs} +196 -200
- package/dist/chunk-CNKT4PME.cjs.map +1 -0
- package/dist/{chunk-G7VZBCD6.cjs → chunk-CZLDE2OZ.cjs} +2 -9
- package/dist/{chunk-G7VZBCD6.cjs.map → chunk-CZLDE2OZ.cjs.map} +1 -1
- package/dist/{chunk-JOPVMWTM.cjs → chunk-DPA3KWPY.cjs} +3 -3
- package/dist/chunk-DPA3KWPY.cjs.map +1 -0
- package/dist/{chunk-ROJHKAQ4.cjs → chunk-E2763JUP.cjs} +143 -157
- package/dist/chunk-E2763JUP.cjs.map +1 -0
- package/dist/{chunk-FAXU7BMP.js → chunk-E5UJBLQ7.js} +2 -2
- package/dist/chunk-E5UJBLQ7.js.map +1 -0
- package/dist/{chunk-DVD5P72E.cjs → chunk-EEJUFDMF.cjs} +2 -6
- package/dist/chunk-EEJUFDMF.cjs.map +1 -0
- package/dist/{chunk-2HZRBATX.cjs → chunk-FSKONGCX.cjs} +2 -2
- package/dist/chunk-FSKONGCX.cjs.map +1 -0
- package/dist/{chunk-P2HKJ7P5.js → chunk-GAAHG2Z4.js} +3 -3
- package/dist/{chunk-P2HKJ7P5.js.map → chunk-GAAHG2Z4.js.map} +1 -1
- package/dist/{chunk-PI73NNOK.cjs → chunk-GUUB5EAG.cjs} +2 -2
- package/dist/chunk-GUUB5EAG.cjs.map +1 -0
- package/dist/{chunk-PU2Z5VWF.js → chunk-IPTZM3VE.js} +183 -187
- package/dist/chunk-IPTZM3VE.js.map +1 -0
- package/dist/{chunk-UERVXYVK.cjs → chunk-NWUEVLQT.cjs} +13 -13
- package/dist/{chunk-UERVXYVK.cjs.map → chunk-NWUEVLQT.cjs.map} +1 -1
- package/dist/{chunk-KPA4AN4R.js → chunk-OHC6UHFY.js} +86 -12
- package/dist/chunk-OHC6UHFY.js.map +1 -0
- package/dist/{chunk-DEVFAKCQ.cjs → chunk-PHJRNPHY.cjs} +6 -6
- package/dist/chunk-PHJRNPHY.cjs.map +1 -0
- package/dist/{chunk-VO35MNPH.js → chunk-PQ72Z6WC.js} +67 -105
- package/dist/chunk-PQ72Z6WC.js.map +1 -0
- package/dist/{chunk-KNRSROWB.cjs → chunk-PV2I2KMI.cjs} +86 -12
- package/dist/chunk-PV2I2KMI.cjs.map +1 -0
- package/dist/{chunk-V2TVSCV5.cjs → chunk-Q23GAMLE.cjs} +71 -109
- package/dist/chunk-Q23GAMLE.cjs.map +1 -0
- package/dist/{chunk-COIASRDK.cjs → chunk-RFFSZSCL.cjs} +107 -171
- package/dist/chunk-RFFSZSCL.cjs.map +1 -0
- package/dist/{chunk-AL5KX63J.js → chunk-UUDTPZX6.js} +3 -3
- package/dist/chunk-UUDTPZX6.js.map +1 -0
- package/dist/{chunk-EJN2PAOE.js → chunk-V7KZQIZ6.js} +102 -166
- package/dist/chunk-V7KZQIZ6.js.map +1 -0
- package/dist/{chunk-DYTZ6FQ7.js → chunk-WXVB364T.js} +2 -2
- package/dist/chunk-WXVB364T.js.map +1 -0
- package/dist/{chunk-WNCYAKF3.cjs → chunk-Y7AQK4R4.cjs} +93 -9
- package/dist/chunk-Y7AQK4R4.cjs.map +1 -0
- package/dist/{chunk-SPBTLUN6.js → chunk-YFAVQQTU.js} +7 -7
- package/dist/{chunk-SPBTLUN6.js.map → chunk-YFAVQQTU.js.map} +1 -1
- package/dist/cli/index.cjs +5 -5
- package/dist/cli/index.js +5 -5
- package/dist/client.cjs +4 -4
- package/dist/client.d.cts +2 -2
- package/dist/client.d.ts +2 -2
- package/dist/client.js +2 -2
- package/dist/drizzle/index.cjs +14 -14
- package/dist/drizzle/index.d.cts +4 -10
- package/dist/drizzle/index.d.ts +4 -10
- package/dist/drizzle/index.js +5 -5
- package/dist/fields/index.cjs +22 -22
- package/dist/fields/index.d.cts +1 -1
- package/dist/fields/index.d.ts +1 -1
- package/dist/fields/index.js +2 -2
- package/dist/graphql/index.cjs +1 -1
- package/dist/graphql/index.d.cts +3 -3
- package/dist/graphql/index.d.ts +3 -3
- package/dist/graphql/index.js +1 -1
- package/dist/{index-CaTNnLGd.d.cts → index-BKta3cBH.d.cts} +3 -2
- package/dist/{index-CJXPB_ot.d.ts → index-ClOqnkTO.d.ts} +3 -2
- package/dist/index.cjs +117 -117
- package/dist/index.d.cts +10 -15
- package/dist/index.d.ts +10 -15
- package/dist/index.js +18 -18
- package/dist/integration.cjs +1 -1
- package/dist/integration.js +1 -1
- package/dist/media-7WDX4BDJ.js +4 -0
- package/dist/{media-GPPTZ43E.js.map → media-7WDX4BDJ.js.map} +1 -1
- package/dist/{media-XNTUFJZR.cjs → media-TUSLVRQ6.cjs} +3 -3
- package/dist/{media-XNTUFJZR.cjs.map → media-TUSLVRQ6.cjs.map} +1 -1
- package/dist/{mongo-auth-adapter-ISOM7FSS.cjs → mongo-auth-adapter-GT4S7SCU.cjs} +3 -3
- package/dist/{mongo-auth-adapter-ISOM7FSS.cjs.map → mongo-auth-adapter-GT4S7SCU.cjs.map} +1 -1
- package/dist/mongo-auth-adapter-M7VV4LNB.js +4 -0
- package/dist/{mongo-auth-adapter-MO6STCV3.js.map → mongo-auth-adapter-M7VV4LNB.js.map} +1 -1
- package/dist/mongodb/index.cjs +5 -5
- package/dist/mongodb/index.d.cts +4 -9
- package/dist/mongodb/index.d.ts +4 -9
- package/dist/mongodb/index.js +3 -3
- package/dist/postgres-auth-adapter-AFAPISH7.js +5 -0
- package/dist/{postgres-auth-adapter-DWDR7P5G.js.map → postgres-auth-adapter-AFAPISH7.js.map} +1 -1
- package/dist/postgres-auth-adapter-SFDTLONT.cjs +14 -0
- package/dist/{postgres-auth-adapter-WRWSJD4E.cjs.map → postgres-auth-adapter-SFDTLONT.cjs.map} +1 -1
- package/dist/{redis-adapter-KJ3YOOT6.cjs → redis-adapter-UQX4EE3B.cjs} +3 -3
- package/dist/{redis-adapter-KJ3YOOT6.cjs.map → redis-adapter-UQX4EE3B.cjs.map} +1 -1
- package/dist/redis-adapter-XALOGWY3.js +4 -0
- package/dist/{redis-adapter-HGTPWIGV.js.map → redis-adapter-XALOGWY3.js.map} +1 -1
- package/dist/rest/index.cjs +10 -10
- package/dist/rest/index.d.cts +4 -4
- package/dist/rest/index.d.ts +4 -4
- package/dist/rest/index.js +8 -8
- package/dist/{schema-TTFE4467.cjs → schema-6QL3USNB.cjs} +15 -15
- package/dist/{schema-TTFE4467.cjs.map → schema-6QL3USNB.cjs.map} +1 -1
- package/dist/{schema-6I5OFR4Z.js → schema-FNNWEAAW.js} +4 -4
- package/dist/{schema-6I5OFR4Z.js.map → schema-FNNWEAAW.js.map} +1 -1
- package/dist/{sqlite-adapter-CSIZE5SX.cjs → sqlite-adapter-AQB5TCGV.cjs} +3 -3
- package/dist/{sqlite-adapter-CSIZE5SX.cjs.map → sqlite-adapter-AQB5TCGV.cjs.map} +1 -1
- package/dist/sqlite-adapter-N5H6IM2X.js +4 -0
- package/dist/{sqlite-adapter-6GEUSVXQ.js.map → sqlite-adapter-N5H6IM2X.js.map} +1 -1
- package/dist/templates/index.cjs +49 -49
- package/dist/templates/index.d.cts +2 -2
- package/dist/templates/index.d.ts +2 -2
- package/dist/templates/index.js +2 -2
- package/dist/trpc/index.cjs +11 -11
- package/dist/trpc/index.d.cts +3 -3
- package/dist/trpc/index.d.ts +3 -3
- package/dist/trpc/index.js +2 -2
- package/dist/{types-Z6FBiqa2.d.cts → types-DeSApf9T.d.cts} +1 -0
- package/dist/{types-Z6FBiqa2.d.ts → types-DeSApf9T.d.ts} +1 -0
- package/dist/{types-CyCQ6SAI.d.ts → types-Dgzlftb7.d.ts} +6 -28
- package/dist/{types-DJxD9394.d.cts → types-Ds0tCA3L.d.cts} +6 -28
- package/dist/ws/index.cjs +6 -6
- package/dist/ws/index.js +2 -2
- package/package.json +1 -1
- package/dist/bootstrap-5NLASFOG.cjs +0 -32
- package/dist/bootstrap-T5BK77LD.js +0 -7
- package/dist/chunk-22M4O4ZJ.js.map +0 -1
- package/dist/chunk-2HZRBATX.cjs.map +0 -1
- package/dist/chunk-3TPQ2BU6.js.map +0 -1
- package/dist/chunk-5EPFQUQD.js.map +0 -1
- package/dist/chunk-AL5KX63J.js.map +0 -1
- package/dist/chunk-C36TMDTY.cjs.map +0 -1
- package/dist/chunk-COIASRDK.cjs.map +0 -1
- package/dist/chunk-DEVFAKCQ.cjs.map +0 -1
- package/dist/chunk-DVD5P72E.cjs.map +0 -1
- package/dist/chunk-DYTZ6FQ7.js.map +0 -1
- package/dist/chunk-EJN2PAOE.js.map +0 -1
- package/dist/chunk-FAXU7BMP.js.map +0 -1
- package/dist/chunk-FOPGUM27.js.map +0 -1
- package/dist/chunk-JOPVMWTM.cjs.map +0 -1
- package/dist/chunk-KNRSROWB.cjs.map +0 -1
- package/dist/chunk-KPA4AN4R.js.map +0 -1
- package/dist/chunk-PI73NNOK.cjs.map +0 -1
- package/dist/chunk-PU2Z5VWF.js.map +0 -1
- package/dist/chunk-ROJHKAQ4.cjs.map +0 -1
- package/dist/chunk-RSF3UU7H.cjs.map +0 -1
- package/dist/chunk-TXSZFA4G.js.map +0 -1
- package/dist/chunk-V2TVSCV5.cjs.map +0 -1
- package/dist/chunk-VO35MNPH.js.map +0 -1
- package/dist/chunk-WNCYAKF3.cjs.map +0 -1
- package/dist/media-GPPTZ43E.js +0 -4
- package/dist/mongo-auth-adapter-MO6STCV3.js +0 -4
- package/dist/postgres-auth-adapter-DWDR7P5G.js +0 -5
- package/dist/postgres-auth-adapter-WRWSJD4E.cjs +0 -14
- package/dist/redis-adapter-HGTPWIGV.js +0 -4
- 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-
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-CZLDE2OZ.cjs.map
|
|
28
|
+
//# sourceMappingURL=chunk-CZLDE2OZ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-
|
|
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.
|
|
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-
|
|
205
|
-
//# sourceMappingURL=chunk-
|
|
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
|
|
4
|
+
var chunkPV2I2KMI_cjs = require('./chunk-PV2I2KMI.cjs');
|
|
5
5
|
var chunk3HR772HI_cjs = require('./chunk-3HR772HI.cjs');
|
|
6
|
-
var
|
|
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
|
|
10
|
-
var
|
|
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(
|
|
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 =
|
|
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
|
-
|
|
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 === "
|
|
1022
|
+
if (config.versions?.drafts && !fields.some((f) => f.name === "status")) {
|
|
967
1023
|
fields.push({
|
|
968
|
-
name: "
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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-
|
|
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
|
|
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(`
|
|
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}
|
|
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 === "
|
|
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}
|
|
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
|
|
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 =
|
|
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
|
|
2120
|
-
conditions.push(`
|
|
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) =>
|
|
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
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
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 (!
|
|
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
|
|
2207
|
-
sql += ` AND
|
|
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
|
|
2218
|
-
const
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
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("
|
|
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
|
|
2346
|
-
const
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
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
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
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.
|
|
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-
|
|
2801
|
-
//# sourceMappingURL=chunk-
|
|
2786
|
+
//# sourceMappingURL=chunk-E2763JUP.cjs.map
|
|
2787
|
+
//# sourceMappingURL=chunk-E2763JUP.cjs.map
|