@kyro-cms/core 0.1.0

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 (88) hide show
  1. package/README.md +241 -0
  2. package/dist/base-CQkFzqQl.d.ts +62 -0
  3. package/dist/base-DlhVlwnN.d.cts +62 -0
  4. package/dist/chunk-3Q3FS5J4.cjs +273 -0
  5. package/dist/chunk-3Q3FS5J4.cjs.map +1 -0
  6. package/dist/chunk-3TPQ2BU6.js +423 -0
  7. package/dist/chunk-3TPQ2BU6.js.map +1 -0
  8. package/dist/chunk-3VZCX4DF.cjs +384 -0
  9. package/dist/chunk-3VZCX4DF.cjs.map +1 -0
  10. package/dist/chunk-BXMWDUED.js +115 -0
  11. package/dist/chunk-BXMWDUED.js.map +1 -0
  12. package/dist/chunk-DIC236EW.js +290 -0
  13. package/dist/chunk-DIC236EW.js.map +1 -0
  14. package/dist/chunk-DKSMFC3L.js +268 -0
  15. package/dist/chunk-DKSMFC3L.js.map +1 -0
  16. package/dist/chunk-DVD5P72E.cjs +428 -0
  17. package/dist/chunk-DVD5P72E.cjs.map +1 -0
  18. package/dist/chunk-HT6VE4NW.cjs +293 -0
  19. package/dist/chunk-HT6VE4NW.cjs.map +1 -0
  20. package/dist/chunk-K7QF2QCM.cjs +311 -0
  21. package/dist/chunk-K7QF2QCM.cjs.map +1 -0
  22. package/dist/chunk-OG3KX56O.js +308 -0
  23. package/dist/chunk-OG3KX56O.js.map +1 -0
  24. package/dist/chunk-R3XIBBAW.cjs +34 -0
  25. package/dist/chunk-R3XIBBAW.cjs.map +1 -0
  26. package/dist/chunk-RLTG4YZM.cjs +117 -0
  27. package/dist/chunk-RLTG4YZM.cjs.map +1 -0
  28. package/dist/chunk-SDMNUYVU.js +30 -0
  29. package/dist/chunk-SDMNUYVU.js.map +1 -0
  30. package/dist/chunk-UEG7KMKC.cjs +228 -0
  31. package/dist/chunk-UEG7KMKC.cjs.map +1 -0
  32. package/dist/chunk-UEYC46RL.js +374 -0
  33. package/dist/chunk-UEYC46RL.js.map +1 -0
  34. package/dist/chunk-YPAFJ7EV.js +225 -0
  35. package/dist/chunk-YPAFJ7EV.js.map +1 -0
  36. package/dist/cli/index.cjs +306 -0
  37. package/dist/cli/index.cjs.map +1 -0
  38. package/dist/cli/index.d.cts +1 -0
  39. package/dist/cli/index.d.ts +1 -0
  40. package/dist/cli/index.js +303 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/drizzle/index.cjs +25 -0
  43. package/dist/drizzle/index.cjs.map +1 -0
  44. package/dist/drizzle/index.d.cts +49 -0
  45. package/dist/drizzle/index.d.ts +49 -0
  46. package/dist/drizzle/index.js +4 -0
  47. package/dist/drizzle/index.js.map +1 -0
  48. package/dist/graphql/index.cjs +16 -0
  49. package/dist/graphql/index.cjs.map +1 -0
  50. package/dist/graphql/index.d.cts +20 -0
  51. package/dist/graphql/index.d.ts +20 -0
  52. package/dist/graphql/index.js +3 -0
  53. package/dist/graphql/index.js.map +1 -0
  54. package/dist/index-4fJKLFK2.d.ts +63 -0
  55. package/dist/index-DI0DRPNv.d.cts +63 -0
  56. package/dist/index.cjs +2506 -0
  57. package/dist/index.cjs.map +1 -0
  58. package/dist/index.d.cts +525 -0
  59. package/dist/index.d.ts +525 -0
  60. package/dist/index.js +2334 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/mongodb/index.cjs +17 -0
  63. package/dist/mongodb/index.cjs.map +1 -0
  64. package/dist/mongodb/index.d.cts +49 -0
  65. package/dist/mongodb/index.d.ts +49 -0
  66. package/dist/mongodb/index.js +4 -0
  67. package/dist/mongodb/index.js.map +1 -0
  68. package/dist/rest/index.cjs +17 -0
  69. package/dist/rest/index.cjs.map +1 -0
  70. package/dist/rest/index.d.cts +28 -0
  71. package/dist/rest/index.d.ts +28 -0
  72. package/dist/rest/index.js +4 -0
  73. package/dist/rest/index.js.map +1 -0
  74. package/dist/trpc/index.cjs +45 -0
  75. package/dist/trpc/index.cjs.map +1 -0
  76. package/dist/trpc/index.d.cts +130 -0
  77. package/dist/trpc/index.d.ts +130 -0
  78. package/dist/trpc/index.js +4 -0
  79. package/dist/trpc/index.js.map +1 -0
  80. package/dist/types-BGM5MV_K.d.cts +589 -0
  81. package/dist/types-BGM5MV_K.d.ts +589 -0
  82. package/dist/ws/index.cjs +24 -0
  83. package/dist/ws/index.cjs.map +1 -0
  84. package/dist/ws/index.d.cts +88 -0
  85. package/dist/ws/index.d.ts +88 -0
  86. package/dist/ws/index.js +3 -0
  87. package/dist/ws/index.js.map +1 -0
  88. package/package.json +120 -0
@@ -0,0 +1,525 @@
1
+ import { KyroRouter } from './trpc/index.js';
2
+ export { createContext, createCountProcedure, createCreateProcedure, createDeleteProcedure, createDynamicRouter, createFindByIDProcedure, createFindProcedure, createKyroServer, createUpdateProcedure } from './trpc/index.js';
3
+ import * as graphql from 'graphql';
4
+ import * as hono from 'hono';
5
+ import * as hono_types from 'hono/types';
6
+ import { R as Registry } from './index-4fJKLFK2.js';
7
+ export { c as createRegistry, g as getRegistry, r as resetRegistry } from './index-4fJKLFK2.js';
8
+ import { B as BaseAdapter, K as KyroConfig, f as User, g as Request, C as CollectionConfig, G as GlobalConfig, F as Field, a as FindArgs, b as FindResult, c as FindByIDArgs, d as CreateArgs, U as UpdateArgs, D as DeleteArgs, H as Hook } from './types-BGM5MV_K.js';
9
+ export { A as ALL_FIELD_TYPES, h as AccessArgs, i as AccessControl, j as AdapterConfig, k as AdminConfig, l as ArrayField, m as AuthConfig, n as BaseField, o as Block, p as BlocksField, q as COMPLEX_FIELD_TYPES, r as CheckboxField, s as CodeField, t as CollapsibleField, u as CollectionAccess, v as CollectionHooks, w as ColorField, x as CreateResult, y as DateField, E as EmailField, z as FieldAccess, I as FieldAdmin, J as FieldHooks, L as FieldType, M as GlobalAccess, N as GlobalHooks, O as GroupField, Q as HookArgs, S as ImageSize, T as JSONField, V as LAYOUT_FIELD_TYPES, W as MarkdownField, X as NumberField, Y as PRIMITIVE_FIELD_TYPES, Z as PasswordField, P as PluginConfig, _ as RELATIONAL_FIELD_TYPES, $ as RadioField, R as RelationshipField, a0 as RichTextBlock, a1 as RichTextField, a2 as RowField, a3 as SelectField, a4 as TabsField, a5 as TextField, a6 as TextareaField, a7 as UploadConfig, e as UploadField, a8 as ValidateOptions, a9 as VersionConfig, aa as WhereClause, ab as evaluateAccess, ac as getWhereClause, ad as isArrayField, ae as isBlocksField, af as isGroupField, ag as isLayoutField, ah as isNumberField, ai as isRelationshipField, aj as isRichTextField, ak as isSelectField, al as isTextField, am as isUploadField, an as mergeWhereClauses, ao as runFieldHooks, ap as runHooks } from './types-BGM5MV_K.js';
10
+ import { KyroPubSub, KyroWSServer } from './ws/index.js';
11
+ export { PubSub, createWSServer } from './ws/index.js';
12
+ import { ZodTypeAny } from 'zod';
13
+ export { z } from 'zod';
14
+ import { A as AbstractBaseAdapter } from './base-CQkFzqQl.js';
15
+ export { DrizzleAdapter, collectionToDrizzleSchema, createDrizzleAdapter, fieldToDrizzleType } from './drizzle/index.js';
16
+ export { MongoDBAdapter, createMongoDBAdapter } from './mongodb/index.js';
17
+ export { buildGraphQLSchema, createGraphQLSchema } from './graphql/index.js';
18
+ export { createHonoApp, createRESTAPI } from './rest/index.js';
19
+ import 'ws';
20
+
21
+ declare class Kyro {
22
+ registry: Registry;
23
+ db: BaseAdapter;
24
+ pubsub: KyroPubSub;
25
+ private wsServer?;
26
+ private config;
27
+ constructor(config: KyroConfig);
28
+ init(): Promise<void>;
29
+ getREST(options?: {
30
+ user?: User;
31
+ req?: Request;
32
+ tenantID?: string;
33
+ }): hono.Hono<hono_types.BlankEnv, hono_types.BlankSchema, "/">;
34
+ getGraphQL(options?: {
35
+ user?: User;
36
+ req?: Request;
37
+ tenantID?: string;
38
+ }): graphql.GraphQLSchema;
39
+ getTRPC(options?: {
40
+ user?: User;
41
+ req?: Request;
42
+ tenantID?: string;
43
+ }): KyroRouter;
44
+ startWebSocket(options?: {
45
+ port?: number;
46
+ requireAuth?: boolean;
47
+ verifyToken?: (token: string) => Promise<any>;
48
+ }): Promise<KyroWSServer>;
49
+ shutdown(): Promise<void>;
50
+ }
51
+ declare function createKyro(config: KyroConfig): Kyro;
52
+
53
+ declare class ConfigValidationError extends Error {
54
+ errors: string[];
55
+ constructor(errors: string[]);
56
+ }
57
+ declare function validateCollection(config: CollectionConfig): string[];
58
+ declare function validateGlobal(config: GlobalConfig): string[];
59
+ declare function validateFields(fields: Field[], context: string): string[];
60
+ declare function validateConfig(collections: CollectionConfig[], globals?: GlobalConfig[]): void;
61
+
62
+ declare function fieldToZod(field: Field): ZodTypeAny;
63
+ declare function collectionToZod(collection: CollectionConfig): ZodTypeAny;
64
+ declare function collectionToCreateZod(collection: CollectionConfig): ZodTypeAny;
65
+ declare function collectionToUpdateZod(collection: CollectionConfig): ZodTypeAny;
66
+ declare function collectionToWhereZod(collection: CollectionConfig): ZodTypeAny;
67
+ declare function globalToZod(global: GlobalConfig): ZodTypeAny;
68
+
69
+ type DatabaseType = 'postgres' | 'mysql' | 'sqlite' | 'mongodb';
70
+ interface DatabaseConnectionOptions {
71
+ type: DatabaseType;
72
+ host?: string;
73
+ port?: number;
74
+ database?: string;
75
+ user?: string;
76
+ password?: string;
77
+ url?: string;
78
+ ssl?: boolean | Record<string, any>;
79
+ maxConnections?: number;
80
+ connectionTimeout?: number;
81
+ }
82
+ interface DrizzleAdapterOptions {
83
+ type: 'postgres' | 'mysql' | 'sqlite';
84
+ client: any;
85
+ schema?: any;
86
+ connectionOptions?: DatabaseConnectionOptions;
87
+ }
88
+ interface MongoDBAdapterOptions {
89
+ type: 'mongodb';
90
+ client: any;
91
+ database: string;
92
+ connectionOptions?: DatabaseConnectionOptions;
93
+ }
94
+ type AdapterOptions = DrizzleAdapterOptions | MongoDBAdapterOptions;
95
+
96
+ declare class LocalAdapter extends AbstractBaseAdapter {
97
+ private db;
98
+ private migrations;
99
+ constructor(options: {
100
+ db?: any;
101
+ path?: string;
102
+ });
103
+ connect(): Promise<void>;
104
+ disconnect(): Promise<void>;
105
+ private ensureTable;
106
+ private fieldToSQL;
107
+ find<T>(args: FindArgs): Promise<FindResult<T>>;
108
+ findByID<T>(args: FindByIDArgs): Promise<T | null>;
109
+ create<T>(args: CreateArgs): Promise<T>;
110
+ update<T>(args: UpdateArgs): Promise<T>;
111
+ delete<T>(args: DeleteArgs): Promise<T>;
112
+ count(args: {
113
+ collection: string;
114
+ where?: Record<string, any>;
115
+ tenantID?: string;
116
+ }): Promise<number>;
117
+ findOne(args: {
118
+ collection: string;
119
+ where: Record<string, any>;
120
+ tenantID?: string;
121
+ }): Promise<any>;
122
+ findVersions(): Promise<FindResult<any>>;
123
+ findVersionByID(): Promise<any>;
124
+ createVersion(): Promise<any>;
125
+ deleteVersions(): Promise<void>;
126
+ private rowToDoc;
127
+ private generateId;
128
+ private getTableNameFor;
129
+ migrate(): Promise<void>;
130
+ rollback(): Promise<void>;
131
+ transaction<T>(fn: (tx: any) => Promise<T>): Promise<T>;
132
+ getDatabase(): any;
133
+ exec(sql: string): void;
134
+ prepare(sql: string): any;
135
+ }
136
+ declare function createLocalAdapter(options?: {
137
+ db?: any;
138
+ path?: string;
139
+ }): LocalAdapter;
140
+
141
+ interface PluginHooks {
142
+ beforeInit?: Hook[];
143
+ afterInit?: Hook[];
144
+ beforeRegisterCollections?: Hook[];
145
+ afterRegisterCollections?: Hook[];
146
+ beforeRegisterGlobals?: Hook[];
147
+ afterRegisterGlobals?: Hook[];
148
+ beforeServerStart?: Hook[];
149
+ afterServerStart?: Hook[];
150
+ beforeServerStop?: Hook[];
151
+ afterServerStop?: Hook[];
152
+ }
153
+ interface PluginCollectionExtension {
154
+ slug: string;
155
+ config: Partial<CollectionConfig>;
156
+ }
157
+ interface PluginGlobalExtension {
158
+ slug: string;
159
+ config: Partial<GlobalConfig>;
160
+ }
161
+ interface PluginFieldExtension {
162
+ collectionSlug: string;
163
+ field: Field;
164
+ }
165
+ interface PluginAPI {
166
+ registry: {
167
+ getCollection: (slug: string) => CollectionConfig | undefined;
168
+ getCollections: () => CollectionConfig[];
169
+ getGlobal: (slug: string) => GlobalConfig | undefined;
170
+ addCollection: (config: CollectionConfig) => void;
171
+ addGlobal: (config: GlobalConfig) => void;
172
+ extendCollection: (slug: string, extension: Partial<CollectionConfig>) => void;
173
+ extendGlobal: (slug: string, extension: Partial<GlobalConfig>) => void;
174
+ addField: (collectionSlug: string, field: Field, position?: number) => void;
175
+ };
176
+ hooks: {
177
+ register: (event: string, handler: Hook) => void;
178
+ unregister: (event: string, handler: Hook) => void;
179
+ };
180
+ config: {
181
+ get: (key: string) => any;
182
+ set: (key: string, value: any) => void;
183
+ };
184
+ db: any;
185
+ }
186
+ declare abstract class KyroPlugin {
187
+ name: string;
188
+ version?: string;
189
+ description?: string;
190
+ hooks: PluginHooks;
191
+ collections: Partial<CollectionConfig>[];
192
+ globals: Partial<GlobalConfig>[];
193
+ fields: PluginFieldExtension[];
194
+ extensions: {
195
+ collections: PluginCollectionExtension[];
196
+ globals: PluginGlobalExtension[];
197
+ };
198
+ adminComponents: Record<string, any>;
199
+ adminStyles: string[];
200
+ serverMiddleware?: (app: any) => void;
201
+ clientMiddleware?: (req: any) => any;
202
+ constructor(name: string);
203
+ init?(api: PluginAPI): Promise<void>;
204
+ beforeInit?(api: PluginAPI): Promise<void>;
205
+ afterInit?(api: PluginAPI): Promise<void>;
206
+ getCollections?(): Partial<CollectionConfig>[];
207
+ getGlobals?(): Partial<GlobalConfig>[];
208
+ getHooks?(): PluginHooks;
209
+ }
210
+ declare class PluginManager {
211
+ private plugins;
212
+ private hooks;
213
+ register(plugin: KyroPlugin): void;
214
+ unregister(name: string): void;
215
+ get(name: string): KyroPlugin | undefined;
216
+ getAll(): KyroPlugin[];
217
+ has(name: string): boolean;
218
+ registerHook(event: string, handler: Hook): void;
219
+ unregisterHook(event: string, handler: Hook): void;
220
+ executeHook(event: string, args?: any): Promise<any>;
221
+ getAllCollections(): Partial<CollectionConfig>[];
222
+ getAllGlobals(): Partial<GlobalConfig>[];
223
+ getAllFields(): PluginFieldExtension[];
224
+ getAdminComponents(): Record<string, any>;
225
+ getAdminStyles(): string[];
226
+ }
227
+ declare class SEOPLugin extends KyroPlugin {
228
+ constructor();
229
+ }
230
+ declare class AnalyticsPlugin extends KyroPlugin {
231
+ constructor();
232
+ }
233
+ declare class CommentsPlugin extends KyroPlugin {
234
+ constructor();
235
+ }
236
+ declare class ReviewsPlugin extends KyroPlugin {
237
+ constructor();
238
+ }
239
+ declare class WishlistPlugin extends KyroPlugin {
240
+ constructor();
241
+ }
242
+ declare const presetPlugins: {
243
+ SEO: typeof SEOPLugin;
244
+ Analytics: typeof AnalyticsPlugin;
245
+ Comments: typeof CommentsPlugin;
246
+ Reviews: typeof ReviewsPlugin;
247
+ Wishlist: typeof WishlistPlugin;
248
+ };
249
+
250
+ type StylingMode = 'css' | 'tailwind' | 'css-in-js' | 'styled-components' | 'vanilla-extract';
251
+ interface StylingConfig {
252
+ mode: StylingMode;
253
+ theme?: ThemeConfig;
254
+ customProperties?: Record<string, string>;
255
+ }
256
+ interface ThemeConfig {
257
+ colors?: ThemeColors;
258
+ fonts?: ThemeFonts;
259
+ spacing?: ThemeSpacing;
260
+ borderRadius?: ThemeBorderRadius;
261
+ shadows?: ThemeShadows;
262
+ breakpoints?: Record<string, string>;
263
+ }
264
+ interface ThemeColors {
265
+ primary?: string;
266
+ secondary?: string;
267
+ accent?: string;
268
+ background?: string;
269
+ surface?: string;
270
+ text?: string;
271
+ textMuted?: string;
272
+ border?: string;
273
+ error?: string;
274
+ warning?: string;
275
+ success?: string;
276
+ info?: string;
277
+ }
278
+ interface ThemeFonts {
279
+ sans?: string;
280
+ serif?: string;
281
+ mono?: string;
282
+ }
283
+ interface ThemeSpacing {
284
+ xs?: string;
285
+ sm?: string;
286
+ md?: string;
287
+ lg?: string;
288
+ xl?: string;
289
+ '2xl'?: string;
290
+ '3xl'?: string;
291
+ '4xl'?: string;
292
+ }
293
+ interface ThemeBorderRadius {
294
+ sm?: string;
295
+ md?: string;
296
+ lg?: string;
297
+ xl?: string;
298
+ full?: string;
299
+ }
300
+ interface ThemeShadows {
301
+ sm?: string;
302
+ md?: string;
303
+ lg?: string;
304
+ xl?: string;
305
+ }
306
+ declare class CSSGenerator {
307
+ private config;
308
+ private css;
309
+ constructor(config: StylingConfig);
310
+ addRule(selector: string, properties: Record<string, string>): this;
311
+ addMediaQuery(breakpoint: string, rules: string[]): this;
312
+ generate(): string;
313
+ }
314
+ declare function generateTailwindConfig(theme: ThemeConfig): Record<string, any>;
315
+ declare const defaultLightTheme: ThemeConfig;
316
+ declare const defaultDarkTheme: ThemeConfig;
317
+ declare const ecommerce2026Theme: ThemeConfig;
318
+ declare function generateCSSVariables(theme: ThemeConfig): string;
319
+ interface AdminStylingConfig {
320
+ mode: StylingMode;
321
+ theme?: ThemeConfig;
322
+ customStyles?: string;
323
+ componentOverrides?: Record<string, Record<string, string>>;
324
+ }
325
+ declare function createAdminStyling(config: AdminStylingConfig): string;
326
+ interface FieldStyling {
327
+ wrapper?: Record<string, string>;
328
+ label?: Record<string, string>;
329
+ input?: Record<string, string>;
330
+ error?: Record<string, string>;
331
+ description?: Record<string, string>;
332
+ }
333
+ declare const defaultFieldStyling: Record<string, FieldStyling>;
334
+
335
+ interface AuthUser {
336
+ id: string;
337
+ email: string;
338
+ passwordHash?: string;
339
+ role: UserRole;
340
+ tenant?: string;
341
+ createdAt: Date;
342
+ updatedAt: Date;
343
+ }
344
+ type UserRole = 'admin' | 'editor' | 'author' | 'customer' | 'vendor';
345
+ interface Session {
346
+ id: string;
347
+ userId: string;
348
+ token: string;
349
+ expiresAt: Date;
350
+ createdAt: Date;
351
+ ipAddress?: string;
352
+ userAgent?: string;
353
+ }
354
+ interface JWTPayload {
355
+ sub: string;
356
+ email: string;
357
+ role: UserRole;
358
+ tenant?: string;
359
+ iat: number;
360
+ exp: number;
361
+ }
362
+ interface AuthTokenConfig {
363
+ secret: string;
364
+ expiresIn?: string | number;
365
+ refreshExpiresIn?: string | number;
366
+ issuer?: string;
367
+ audience?: string[];
368
+ saltRounds?: number;
369
+ }
370
+ interface LoginCredentials {
371
+ email: string;
372
+ password: string;
373
+ }
374
+ interface RegisterData {
375
+ email: string;
376
+ password: string;
377
+ role?: UserRole;
378
+ tenant?: string;
379
+ }
380
+ interface AuthResult {
381
+ success: boolean;
382
+ user?: AuthUser;
383
+ session?: Session;
384
+ token?: string;
385
+ error?: string;
386
+ }
387
+ interface AuthAdapter {
388
+ createUser(data: {
389
+ email: string;
390
+ passwordHash: string;
391
+ role: UserRole;
392
+ tenant?: string;
393
+ }): Promise<AuthUser>;
394
+ findUserByEmail(email: string): Promise<AuthUser | null>;
395
+ findUserById(id: string): Promise<AuthUser | null>;
396
+ updateUser(id: string, data: Partial<AuthUser>): Promise<AuthUser>;
397
+ deleteUser(id: string): Promise<void>;
398
+ verifyPassword(password: string, hash: string): Promise<boolean>;
399
+ hashPassword(password: string): Promise<string>;
400
+ createSession(userId: string, token: string, expiresAt: Date): Promise<Session>;
401
+ findSessionByToken(token: string): Promise<Session | null>;
402
+ deleteSession(token: string): Promise<void>;
403
+ deleteUserSessions(userId: string): Promise<void>;
404
+ }
405
+
406
+ declare class Auth {
407
+ private adapter;
408
+ private config;
409
+ constructor(adapter: AuthAdapter, config: AuthTokenConfig);
410
+ register(data: RegisterData): Promise<AuthResult>;
411
+ login(credentials: LoginCredentials): Promise<AuthResult>;
412
+ logout(token: string): Promise<void>;
413
+ refreshToken(refreshToken: string): Promise<AuthResult>;
414
+ verifyToken(token: string): Promise<JWTPayload | null>;
415
+ getUserFromToken(token: string): Promise<AuthUser | null>;
416
+ changePassword(userId: string, currentPassword: string, newPassword: string): Promise<AuthResult>;
417
+ resetPassword(email: string, newPassword: string): Promise<AuthResult>;
418
+ deleteAccount(userId: string): Promise<AuthResult>;
419
+ private createSessionForUser;
420
+ private generateToken;
421
+ private hashPassword;
422
+ private parseExpiresIn;
423
+ }
424
+ declare function createAuth(adapter: AuthAdapter, config: AuthTokenConfig): Auth;
425
+
426
+ type VersionStatus = 'draft' | 'published' | 'archived';
427
+ interface Version<T = Record<string, unknown>> {
428
+ id: string;
429
+ collection: string;
430
+ documentId: string;
431
+ version: number;
432
+ status: VersionStatus;
433
+ data: T;
434
+ createdBy: string;
435
+ createdAt: Date;
436
+ publishedAt?: Date;
437
+ changeDescription?: string;
438
+ }
439
+ interface VersionDiff {
440
+ field: string;
441
+ oldValue: unknown;
442
+ newValue: unknown;
443
+ }
444
+ interface VersionHistoryOptions {
445
+ collection: string;
446
+ documentId: string;
447
+ limit?: number;
448
+ offset?: number;
449
+ }
450
+ interface CreateVersionOptions<T = Record<string, unknown>> {
451
+ collection: string;
452
+ documentId: string;
453
+ data: T;
454
+ status?: VersionStatus;
455
+ createdBy: string;
456
+ changeDescription?: string;
457
+ }
458
+ interface PublishVersionOptions {
459
+ collection: string;
460
+ documentId: string;
461
+ versionId: string;
462
+ publishedBy: string;
463
+ }
464
+ interface CompareVersionsOptions {
465
+ collection: string;
466
+ documentId: string;
467
+ versionA: string | number;
468
+ versionB: string | number;
469
+ }
470
+ interface VersionAdapter {
471
+ createVersion<T>(options: CreateVersionOptions<T>): Promise<Version<T>>;
472
+ getVersion<T>(collection: string, versionId: string): Promise<Version<T> | null>;
473
+ getVersions<T>(options: VersionHistoryOptions): Promise<Version<T>[]>;
474
+ getLatestVersion<T>(collection: string, documentId: string): Promise<Version<T> | null>;
475
+ getPublishedVersion<T>(collection: string, documentId: string): Promise<Version<T> | null>;
476
+ publishVersion(options: PublishVersionOptions): Promise<void>;
477
+ revertToVersion<T>(options: {
478
+ collection: string;
479
+ documentId: string;
480
+ versionId: string;
481
+ userId: string;
482
+ }): Promise<Version<T>>;
483
+ compareVersions<T>(options: CompareVersionsOptions): Promise<VersionDiff[]>;
484
+ deleteVersions(collection: string, documentId: string): Promise<void>;
485
+ }
486
+ interface DraftPublishConfig {
487
+ enabled?: boolean;
488
+ draftsEnabled?: boolean;
489
+ publishEnabled?: boolean;
490
+ scheduleEnabled?: boolean;
491
+ versioningEnabled?: boolean;
492
+ maxVersionsPerDocument?: number;
493
+ autoPublish?: boolean;
494
+ requirePublishPermission?: boolean;
495
+ }
496
+ interface VersionPublishSchedule {
497
+ versionId: string;
498
+ scheduledFor: Date;
499
+ status: 'pending' | 'published' | 'cancelled';
500
+ }
501
+ declare function getDefaultDraftPublishConfig(): Required<DraftPublishConfig>;
502
+
503
+ declare class VersionManager<T = Record<string, unknown>> {
504
+ private adapter;
505
+ private config;
506
+ constructor(adapter: VersionAdapter, config?: DraftPublishConfig);
507
+ createVersion(options: Omit<CreateVersionOptions<T>, 'version'>): Promise<Version<T>>;
508
+ publishVersion(options: PublishVersionOptions): Promise<void>;
509
+ unpublishDocument(collection: string, documentId: string): Promise<void>;
510
+ revertToVersion(collection: string, documentId: string, versionId: string, userId: string): Promise<Version<T>>;
511
+ getVersionHistory(collection: string, documentId: string, limit?: number, offset?: number): Promise<Version<T>[]>;
512
+ compareTwoVersions(collection: string, documentId: string, versionA: string | number, versionB: string | number): Promise<VersionDiff[]>;
513
+ getLatestDraft(collection: string, documentId: string): Promise<Version<T> | null>;
514
+ getPublishedVersion(collection: string, documentId: string): Promise<Version<T> | null>;
515
+ getVersion(collection: string, versionId: string): Promise<Version<T> | null>;
516
+ schedulePublish(collection: string, documentId: string, versionId: string, scheduledFor: Date): Promise<void>;
517
+ deleteVersionHistory(collection: string, documentId: string): Promise<void>;
518
+ private pruneOldVersions;
519
+ }
520
+ declare function createVersionManager<T>(adapter: VersionAdapter, config?: DraftPublishConfig): VersionManager<T>;
521
+ declare function isPublished(status: VersionStatus): boolean;
522
+ declare function isDraft(status: VersionStatus): boolean;
523
+ declare function isArchived(status: VersionStatus): boolean;
524
+
525
+ export { AbstractBaseAdapter, type AdapterOptions, type AdminStylingConfig, AnalyticsPlugin, Auth, type AuthAdapter, type AuthResult, type Session as AuthSession, type AuthTokenConfig, type AuthUser, BaseAdapter, CSSGenerator, CollectionConfig, CommentsPlugin, type CompareVersionsOptions, ConfigValidationError, CreateArgs, type CreateVersionOptions, type DatabaseConnectionOptions, type DatabaseType, DeleteArgs, type DraftPublishConfig, type DrizzleAdapterOptions, Field, type FieldStyling, FindArgs, FindByIDArgs, FindResult, GlobalConfig, Hook, type JWTPayload, Kyro, KyroConfig, KyroPlugin, KyroPubSub, KyroWSServer, LocalAdapter, type LoginCredentials, type MongoDBAdapterOptions, type PluginAPI, type PluginHooks, PluginManager, type PublishVersionOptions, type RegisterData, Registry, Request, ReviewsPlugin, SEOPLugin, type StylingConfig, type StylingMode, type ThemeBorderRadius, type ThemeColors, type ThemeConfig, type ThemeFonts, type ThemeShadows, type ThemeSpacing, UpdateArgs, User, type UserRole, type Version, type VersionAdapter, type VersionDiff, type VersionHistoryOptions, VersionManager, type VersionPublishSchedule, type VersionStatus, WishlistPlugin, collectionToCreateZod, collectionToUpdateZod, collectionToWhereZod, collectionToZod, createAdminStyling, createAuth, createKyro, createLocalAdapter, createVersionManager, defaultDarkTheme, defaultFieldStyling, defaultLightTheme, ecommerce2026Theme, fieldToZod, generateCSSVariables, generateTailwindConfig, getDefaultDraftPublishConfig, globalToZod, isArchived, isDraft, isPublished, presetPlugins, validateCollection, validateConfig, validateFields, validateGlobal };