@kyro-cms/core 0.1.7 → 0.1.8

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 (42) hide show
  1. package/README.md +25 -2
  2. package/dist/{WebhookService-BPVJUgTl.d.ts → WebhookService-CXJ5oz6L.d.ts} +1 -1
  3. package/dist/{WebhookService-BCgL1bLF.d.cts → WebhookService-Dqx9Is7m.d.cts} +1 -1
  4. package/dist/{base-DaP-5PPG.d.ts → base-CciYzoDF.d.ts} +1 -1
  5. package/dist/{base-B0Y6isUJ.d.cts → base-Cfek4fp3.d.cts} +1 -1
  6. package/dist/chunk-EWP5AT6A.cjs +268 -0
  7. package/dist/chunk-EWP5AT6A.cjs.map +1 -0
  8. package/dist/chunk-QKOFKITP.js +258 -0
  9. package/dist/chunk-QKOFKITP.js.map +1 -0
  10. package/dist/client.cjs +45 -0
  11. package/dist/client.cjs.map +1 -0
  12. package/dist/client.d.cts +11 -0
  13. package/dist/client.d.ts +11 -0
  14. package/dist/client.js +4 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/drizzle/index.d.cts +114 -4
  17. package/dist/drizzle/index.d.ts +114 -4
  18. package/dist/graphql/index.d.cts +2 -2
  19. package/dist/graphql/index.d.ts +2 -2
  20. package/dist/{index-DupWTmW6.d.ts → index-BvZ1iWm2.d.ts} +1 -1
  21. package/dist/{index-BwE4NueJ.d.cts → index-CTLPjpMH.d.cts} +1 -1
  22. package/dist/index.cjs +45 -268
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +15 -230
  25. package/dist/index.d.ts +15 -230
  26. package/dist/index.js +13 -260
  27. package/dist/index.js.map +1 -1
  28. package/dist/mongodb/index.d.cts +2 -2
  29. package/dist/mongodb/index.d.ts +2 -2
  30. package/dist/rate-limit-BvUAVCzw.d.cts +223 -0
  31. package/dist/rate-limit-CJnqG1mG.d.ts +223 -0
  32. package/dist/rest/index.d.cts +3 -3
  33. package/dist/rest/index.d.ts +3 -3
  34. package/dist/templates/index.d.cts +1 -1
  35. package/dist/templates/index.d.ts +1 -1
  36. package/dist/trpc/index.d.cts +2 -2
  37. package/dist/trpc/index.d.ts +2 -2
  38. package/dist/{index-DtBi3zP0.d.ts → types-BSR91JFN.d.cts} +1 -112
  39. package/dist/{index-DUKmDSeC.d.cts → types-BSR91JFN.d.ts} +1 -112
  40. package/dist/{types-BM0s_YOy.d.cts → types-Bt1OEk0S.d.cts} +12 -4
  41. package/dist/{types-BM0s_YOy.d.ts → types-Bt1OEk0S.d.ts} +12 -4
  42. package/package.json +9 -2
package/dist/index.cjs CHANGED
@@ -3,6 +3,7 @@
3
3
  var chunkKDVDIZ4Y_cjs = require('./chunk-KDVDIZ4Y.cjs');
4
4
  var chunkBLMFBDBG_cjs = require('./chunk-BLMFBDBG.cjs');
5
5
  var chunk4M5PHMUE_cjs = require('./chunk-4M5PHMUE.cjs');
6
+ var chunkEWP5AT6A_cjs = require('./chunk-EWP5AT6A.cjs');
6
7
  var chunk42JPONZU_cjs = require('./chunk-42JPONZU.cjs');
7
8
  var chunkFTSSDDZQ_cjs = require('./chunk-FTSSDDZQ.cjs');
8
9
  var chunkE63IF3MD_cjs = require('./chunk-E63IF3MD.cjs');
@@ -2116,6 +2117,9 @@ function isBlocksField(field) {
2116
2117
  function isUploadField(field) {
2117
2118
  return field.type === "upload";
2118
2119
  }
2120
+ function isImageField(field) {
2121
+ return field.type === "image";
2122
+ }
2119
2123
  function isRichTextField(field) {
2120
2124
  return field.type === "richtext";
2121
2125
  }
@@ -2142,6 +2146,7 @@ var COMPLEX_FIELD_TYPES = [
2142
2146
  "json",
2143
2147
  "code",
2144
2148
  "upload",
2149
+ "image",
2145
2150
  "markdown"
2146
2151
  ];
2147
2152
  var RELATIONAL_FIELD_TYPES = [
@@ -3233,253 +3238,6 @@ var presetPlugins = {
3233
3238
  Wishlist: WishlistPlugin
3234
3239
  };
3235
3240
 
3236
- // src/styling/index.ts
3237
- var CSSGenerator = class {
3238
- constructor(config) {
3239
- this.config = config;
3240
- }
3241
- config;
3242
- css = [];
3243
- addRule(selector, properties) {
3244
- const props = Object.entries(properties).map(([k, v]) => ` ${k}: ${v};`).join("\n");
3245
- this.css.push(`${selector} {
3246
- ${props}
3247
- }`);
3248
- return this;
3249
- }
3250
- addMediaQuery(breakpoint, rules) {
3251
- this.css.push(`@media (min-width: ${breakpoint}) {
3252
- ${rules.join("\n ")}
3253
- }`);
3254
- return this;
3255
- }
3256
- generate() {
3257
- return this.css.join("\n\n");
3258
- }
3259
- };
3260
- function generateTailwindConfig(theme) {
3261
- return {
3262
- theme: {
3263
- extend: {
3264
- colors: theme.colors || {},
3265
- fontFamily: theme.fonts || {},
3266
- spacing: theme.spacing || {},
3267
- borderRadius: theme.borderRadius || {},
3268
- boxShadow: theme.shadows || {},
3269
- screens: theme.breakpoints || {}
3270
- }
3271
- }
3272
- };
3273
- }
3274
- var defaultLightTheme = {
3275
- colors: {
3276
- primary: "#3b82f6",
3277
- secondary: "#6366f1",
3278
- accent: "#ec4899",
3279
- background: "#ffffff",
3280
- surface: "#f9fafb",
3281
- text: "#111827",
3282
- textMuted: "#6b7280",
3283
- border: "#e5e7eb",
3284
- error: "#ef4444",
3285
- warning: "#f59e0b",
3286
- success: "#10b981",
3287
- info: "#3b82f6"
3288
- },
3289
- fonts: {
3290
- sans: "system-ui, -apple-system, sans-serif",
3291
- serif: "Georgia, serif",
3292
- mono: "Menlo, monospace"
3293
- },
3294
- spacing: {
3295
- xs: "0.25rem",
3296
- sm: "0.5rem",
3297
- md: "1rem",
3298
- lg: "1.5rem",
3299
- xl: "2rem",
3300
- "2xl": "3rem",
3301
- "3xl": "4rem"
3302
- },
3303
- borderRadius: {
3304
- sm: "0.125rem",
3305
- md: "0.375rem",
3306
- lg: "0.5rem",
3307
- xl: "0.75rem",
3308
- full: "9999px"
3309
- },
3310
- shadows: {
3311
- sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
3312
- md: "0 4px 6px -1px rgb(0 0 0 / 0.1)",
3313
- lg: "0 10px 15px -3px rgb(0 0 0 / 0.1)",
3314
- xl: "0 20px 25px -5px rgb(0 0 0 / 0.1)"
3315
- }
3316
- };
3317
- var defaultDarkTheme = {
3318
- colors: {
3319
- primary: "#60a5fa",
3320
- secondary: "#818cf8",
3321
- accent: "#f472b6",
3322
- background: "#111827",
3323
- surface: "#1f2937",
3324
- text: "#f9fafb",
3325
- textMuted: "#9ca3af",
3326
- border: "#374151",
3327
- error: "#f87171",
3328
- warning: "#fbbf24",
3329
- success: "#34d399",
3330
- info: "#60a5fa"
3331
- },
3332
- fonts: defaultLightTheme.fonts,
3333
- spacing: defaultLightTheme.spacing,
3334
- borderRadius: defaultLightTheme.borderRadius,
3335
- shadows: {
3336
- sm: "0 1px 2px 0 rgb(0 0 0 / 0.3)",
3337
- md: "0 4px 6px -1px rgb(0 0 0 / 0.4)",
3338
- lg: "0 10px 15px -3px rgb(0 0 0 / 0.5)",
3339
- xl: "0 20px 25px -5px rgb(0 0 0 / 0.6)"
3340
- }
3341
- };
3342
- var ecommerce2026Theme = {
3343
- colors: {
3344
- primary: "#FF6B35",
3345
- secondary: "#1A1A2E",
3346
- accent: "#16C79A",
3347
- background: "#FFFFFF",
3348
- surface: "#F8F9FA",
3349
- text: "#1A1A2E",
3350
- textMuted: "#6B7280",
3351
- border: "#E5E7EB",
3352
- error: "#EF4444",
3353
- warning: "#F59E0B",
3354
- success: "#16C79A",
3355
- info: "#3B82F6"
3356
- },
3357
- fonts: {
3358
- sans: '"Inter", "Satoshi", system-ui, sans-serif',
3359
- serif: '"Playfair Display", Georgia, serif',
3360
- mono: '"JetBrains Mono", monospace'
3361
- },
3362
- spacing: {
3363
- xs: "0.125rem",
3364
- sm: "0.25rem",
3365
- md: "0.5rem",
3366
- lg: "1rem",
3367
- xl: "1.5rem",
3368
- "2xl": "2rem",
3369
- "3xl": "3rem",
3370
- "4xl": "4rem"
3371
- },
3372
- borderRadius: {
3373
- sm: "0",
3374
- md: "0",
3375
- lg: "0",
3376
- xl: "0",
3377
- full: "9999px"
3378
- },
3379
- shadows: {
3380
- sm: "0 1px 2px rgba(0,0,0,0.05)",
3381
- md: "0 4px 6px rgba(0,0,0,0.07)",
3382
- lg: "0 10px 15px rgba(0,0,0,0.1)",
3383
- xl: "0 20px 25px rgba(0,0,0,0.15)"
3384
- }
3385
- };
3386
- function generateCSSVariables(theme) {
3387
- const variables = [];
3388
- if (theme.colors) {
3389
- for (const [key, value] of Object.entries(theme.colors)) {
3390
- variables.push(` --color-${key}: ${value};`);
3391
- }
3392
- }
3393
- if (theme.fonts) {
3394
- for (const [key, value] of Object.entries(theme.fonts)) {
3395
- variables.push(` --font-${key}: ${value};`);
3396
- }
3397
- }
3398
- if (theme.spacing) {
3399
- for (const [key, value] of Object.entries(theme.spacing)) {
3400
- variables.push(` --spacing-${key}: ${value};`);
3401
- }
3402
- }
3403
- if (theme.borderRadius) {
3404
- for (const [key, value] of Object.entries(theme.borderRadius)) {
3405
- variables.push(` --radius-${key}: ${value};`);
3406
- }
3407
- }
3408
- if (theme.shadows) {
3409
- for (const [key, value] of Object.entries(theme.shadows)) {
3410
- variables.push(` --shadow-${key}: ${value};`);
3411
- }
3412
- }
3413
- return `:root {
3414
- ${variables.join("\n")}
3415
- }`;
3416
- }
3417
- function createAdminStyling(config) {
3418
- const cssVars = generateCSSVariables(config.theme || defaultLightTheme);
3419
- const componentStyles = [];
3420
- if (config.componentOverrides) {
3421
- for (const [selector, styles] of Object.entries(config.componentOverrides)) {
3422
- const props = Object.entries(styles).map(([k, v]) => ` ${k}: ${v};`).join("\n");
3423
- componentStyles.push(`${selector} {
3424
- ${props}
3425
- }`);
3426
- }
3427
- }
3428
- return `
3429
- ${cssVars}
3430
- ${config.customStyles || ""}
3431
- ${componentStyles.join("\n")}
3432
- `;
3433
- }
3434
- var defaultFieldStyling = {
3435
- text: {
3436
- wrapper: { marginBottom: "var(--spacing-md)" },
3437
- label: {
3438
- display: "block",
3439
- marginBottom: "var(--spacing-xs)",
3440
- fontWeight: "500",
3441
- color: "var(--color-text)"
3442
- },
3443
- input: {
3444
- width: "100%",
3445
- padding: "var(--spacing-sm) var(--spacing-md)",
3446
- border: "1px solid var(--color-border)",
3447
- borderRadius: "var(--radius-md)",
3448
- fontSize: "0.875rem"
3449
- },
3450
- error: {
3451
- color: "var(--color-error)",
3452
- fontSize: "0.75rem",
3453
- marginTop: "var(--spacing-xs)"
3454
- }
3455
- },
3456
- number: {
3457
- wrapper: { marginBottom: "var(--spacing-md)" },
3458
- label: { display: "block", marginBottom: "var(--spacing-xs)", fontWeight: "500" },
3459
- input: {
3460
- width: "100%",
3461
- padding: "var(--spacing-sm) var(--spacing-md)",
3462
- border: "1px solid var(--color-border)",
3463
- borderRadius: "var(--radius-md)"
3464
- }
3465
- },
3466
- checkbox: {
3467
- wrapper: { display: "flex", alignItems: "center", gap: "var(--spacing-sm)" },
3468
- input: { width: "1rem", height: "1rem" },
3469
- label: { cursor: "pointer" }
3470
- },
3471
- select: {
3472
- wrapper: { marginBottom: "var(--spacing-md)" },
3473
- input: {
3474
- width: "100%",
3475
- padding: "var(--spacing-sm) var(--spacing-md)",
3476
- border: "1px solid var(--color-border)",
3477
- borderRadius: "var(--radius-md)",
3478
- backgroundColor: "white"
3479
- }
3480
- }
3481
- };
3482
-
3483
3241
  // src/auth/security/lockout.ts
3484
3242
  var DEFAULT_LOCKOUT_CONFIG = {
3485
3243
  maxAttempts: 5,
@@ -3971,7 +3729,7 @@ var AuditLogger = class {
3971
3729
  };
3972
3730
  }
3973
3731
  };
3974
- function createAuditContext(req) {
3732
+ function createAuditContext2(req) {
3975
3733
  return {
3976
3734
  ipAddress: req.headers.get("x-forwarded-for")?.split(",")[0]?.trim() || req.headers.get("x-real-ip") || "unknown",
3977
3735
  userAgent: req.headers.get("user-agent") || "unknown"
@@ -4426,12 +4184,6 @@ var InMemoryAuditLogger = class {
4426
4184
  this.logs = this.logs.filter((log) => log.timestamp >= cutoffDate);
4427
4185
  }
4428
4186
  };
4429
- function createAuditContext2(req) {
4430
- return {
4431
- ipAddress: req.headers.get("x-forwarded-for")?.split(",")[0]?.trim() || req.headers.get("x-real-ip") || "unknown",
4432
- userAgent: req.headers.get("user-agent") || "unknown"
4433
- };
4434
- }
4435
4187
  var AuthRoutes = class {
4436
4188
  authAdapter;
4437
4189
  email;
@@ -4460,7 +4212,7 @@ var AuthRoutes = class {
4460
4212
  this.emailVerificationRequired = config.emailVerificationRequired ?? true;
4461
4213
  }
4462
4214
  async register(req) {
4463
- const { ipAddress, userAgent } = createAuditContext2(req);
4215
+ const { ipAddress, userAgent } = chunkEWP5AT6A_cjs.createAuditContext(req);
4464
4216
  if (this.rateLimiter) {
4465
4217
  const limit = await this.rateLimiter.check("auth:register", ipAddress);
4466
4218
  if (!limit.allowed) {
@@ -4521,7 +4273,7 @@ var AuthRoutes = class {
4521
4273
  }
4522
4274
  }
4523
4275
  async login(req) {
4524
- const { ipAddress, userAgent } = createAuditContext2(req);
4276
+ const { ipAddress, userAgent } = chunkEWP5AT6A_cjs.createAuditContext(req);
4525
4277
  if (this.rateLimiter) {
4526
4278
  const limit = await this.rateLimiter.check("auth:login", ipAddress);
4527
4279
  if (!limit.allowed) {
@@ -4618,7 +4370,7 @@ var AuthRoutes = class {
4618
4370
  if (!token) {
4619
4371
  return this.errorResponse("No session to logout", 401);
4620
4372
  }
4621
- const { ipAddress, userAgent } = createAuditContext2(req);
4373
+ const { ipAddress, userAgent } = chunkEWP5AT6A_cjs.createAuditContext(req);
4622
4374
  try {
4623
4375
  const payload = jwt__default.default.decode(token);
4624
4376
  if (payload && payload.sub) {
@@ -4682,7 +4434,7 @@ var AuthRoutes = class {
4682
4434
  if (!token) {
4683
4435
  return this.errorResponse("Not authenticated", 401);
4684
4436
  }
4685
- const { ipAddress, userAgent } = createAuditContext2(req);
4437
+ const { ipAddress, userAgent } = chunkEWP5AT6A_cjs.createAuditContext(req);
4686
4438
  try {
4687
4439
  const payload = jwt__default.default.verify(token, this.jwtSecret);
4688
4440
  const body = await req.json();
@@ -4758,7 +4510,7 @@ var AuthRoutes = class {
4758
4510
  }
4759
4511
  }
4760
4512
  async forgotPassword(req) {
4761
- const { ipAddress, userAgent } = createAuditContext2(req);
4513
+ const { ipAddress, userAgent } = chunkEWP5AT6A_cjs.createAuditContext(req);
4762
4514
  if (this.rateLimiter) {
4763
4515
  const limit = await this.rateLimiter.check("auth:forgot", ipAddress);
4764
4516
  if (!limit.allowed) {
@@ -7036,6 +6788,38 @@ Object.defineProperty(exports, "getBootstrapFromEnv", {
7036
6788
  enumerable: true,
7037
6789
  get: function () { return chunk4M5PHMUE_cjs.getBootstrapFromEnv; }
7038
6790
  });
6791
+ Object.defineProperty(exports, "CSSGenerator", {
6792
+ enumerable: true,
6793
+ get: function () { return chunkEWP5AT6A_cjs.CSSGenerator; }
6794
+ });
6795
+ Object.defineProperty(exports, "createAdminStyling", {
6796
+ enumerable: true,
6797
+ get: function () { return chunkEWP5AT6A_cjs.createAdminStyling; }
6798
+ });
6799
+ Object.defineProperty(exports, "defaultDarkTheme", {
6800
+ enumerable: true,
6801
+ get: function () { return chunkEWP5AT6A_cjs.defaultDarkTheme; }
6802
+ });
6803
+ Object.defineProperty(exports, "defaultFieldStyling", {
6804
+ enumerable: true,
6805
+ get: function () { return chunkEWP5AT6A_cjs.defaultFieldStyling; }
6806
+ });
6807
+ Object.defineProperty(exports, "defaultLightTheme", {
6808
+ enumerable: true,
6809
+ get: function () { return chunkEWP5AT6A_cjs.defaultLightTheme; }
6810
+ });
6811
+ Object.defineProperty(exports, "ecommerce2026Theme", {
6812
+ enumerable: true,
6813
+ get: function () { return chunkEWP5AT6A_cjs.ecommerce2026Theme; }
6814
+ });
6815
+ Object.defineProperty(exports, "generateCSSVariables", {
6816
+ enumerable: true,
6817
+ get: function () { return chunkEWP5AT6A_cjs.generateCSSVariables; }
6818
+ });
6819
+ Object.defineProperty(exports, "generateTailwindConfig", {
6820
+ enumerable: true,
6821
+ get: function () { return chunkEWP5AT6A_cjs.generateTailwindConfig; }
6822
+ });
7039
6823
  Object.defineProperty(exports, "createContext", {
7040
6824
  enumerable: true,
7041
6825
  get: function () { return chunk42JPONZU_cjs.createContext; }
@@ -7230,7 +7014,6 @@ exports.AnalyticsPlugin = AnalyticsPlugin;
7230
7014
  exports.AuditLogger = AuditLogger;
7231
7015
  exports.Auth = Auth;
7232
7016
  exports.COMPLEX_FIELD_TYPES = COMPLEX_FIELD_TYPES;
7233
- exports.CSSGenerator = CSSGenerator;
7234
7017
  exports.CommentsPlugin = CommentsPlugin;
7235
7018
  exports.ConfigValidationError = ConfigValidationError;
7236
7019
  exports.InMemoryAccountLockout = InMemoryAccountLockout;
@@ -7255,8 +7038,7 @@ exports.collectionToCreateZod = collectionToCreateZod;
7255
7038
  exports.collectionToUpdateZod = collectionToUpdateZod;
7256
7039
  exports.collectionToWhereZod = collectionToWhereZod;
7257
7040
  exports.collectionToZod = collectionToZod;
7258
- exports.createAdminStyling = createAdminStyling;
7259
- exports.createAuditContext = createAuditContext;
7041
+ exports.createAuditContext = createAuditContext2;
7260
7042
  exports.createAuth = createAuth;
7261
7043
  exports.createAuthConfig = createAuthConfig;
7262
7044
  exports.createColumnsNode = createColumnsNode;
@@ -7265,14 +7047,8 @@ exports.createLocalAdapter = createLocalAdapter;
7265
7047
  exports.createLocalStorage = createLocalStorage;
7266
7048
  exports.createRegistry = createRegistry;
7267
7049
  exports.createVersionManager = createVersionManager;
7268
- exports.defaultDarkTheme = defaultDarkTheme;
7269
- exports.defaultFieldStyling = defaultFieldStyling;
7270
- exports.defaultLightTheme = defaultLightTheme;
7271
7050
  exports.defineConfig = defineConfig;
7272
- exports.ecommerce2026Theme = ecommerce2026Theme;
7273
7051
  exports.fieldToZod = fieldToZod;
7274
- exports.generateCSSVariables = generateCSSVariables;
7275
- exports.generateTailwindConfig = generateTailwindConfig;
7276
7052
  exports.getDefaultDraftPublishConfig = getDefaultDraftPublishConfig;
7277
7053
  exports.getRegistry = getRegistry;
7278
7054
  exports.globalToZod = globalToZod;
@@ -7281,6 +7057,7 @@ exports.isArrayField = isArrayField;
7281
7057
  exports.isBlocksField = isBlocksField;
7282
7058
  exports.isDraft = isDraft;
7283
7059
  exports.isGroupField = isGroupField;
7060
+ exports.isImageField = isImageField;
7284
7061
  exports.isLayoutField = isLayoutField;
7285
7062
  exports.isNumberField = isNumberField;
7286
7063
  exports.isPublished = isPublished;