@kyro-cms/core 0.9.7 → 0.9.9

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 (101) hide show
  1. package/dist/{WebhookService-BKszZlG0.d.cts → WebhookService-Dj8pJ3sp.d.cts} +1 -1
  2. package/dist/{WebhookService-Ccf1j-IN.d.ts → WebhookService-DpRB940h.d.ts} +1 -1
  3. package/dist/api-handler-graphql.cjs +18 -13
  4. package/dist/api-handler-graphql.cjs.map +1 -1
  5. package/dist/api-handler-graphql.js +14 -9
  6. package/dist/api-handler-graphql.js.map +1 -1
  7. package/dist/api-handler-trpc.cjs +9 -9
  8. package/dist/api-handler-trpc.js +7 -7
  9. package/dist/api-handler.cjs +10 -10
  10. package/dist/api-handler.js +7 -7
  11. package/dist/{base-CIuXkrH4.d.cts → base-BjyoF6da.d.cts} +2 -2
  12. package/dist/{base-fFo4lqER.d.ts → base-C2YR8lWt.d.ts} +2 -2
  13. package/dist/{chunk-NZEUU7QB.js → chunk-3AKCVYDB.js} +4 -109
  14. package/dist/chunk-3AKCVYDB.js.map +1 -0
  15. package/dist/{chunk-FKKQUMXR.cjs → chunk-4OCMVGEY.cjs} +4 -110
  16. package/dist/chunk-4OCMVGEY.cjs.map +1 -0
  17. package/dist/{chunk-VLK5SJRI.js → chunk-5RFGYEQ3.js} +133 -46
  18. package/dist/chunk-5RFGYEQ3.js.map +1 -0
  19. package/dist/chunk-5RPRLTTN.js +861 -0
  20. package/dist/chunk-5RPRLTTN.js.map +1 -0
  21. package/dist/{chunk-AX2TZRQJ.js → chunk-BVUDFKKS.js} +16 -3
  22. package/dist/chunk-BVUDFKKS.js.map +1 -0
  23. package/dist/{chunk-DRVOUQMT.cjs → chunk-E4JZ73FY.cjs} +54 -79
  24. package/dist/chunk-E4JZ73FY.cjs.map +1 -0
  25. package/dist/{chunk-E5UJBLQ7.js → chunk-FIAMXNTH.js} +2 -2
  26. package/dist/chunk-FIAMXNTH.js.map +1 -0
  27. package/dist/{chunk-QVJNSAQL.cjs → chunk-IEIHABVR.cjs} +152 -65
  28. package/dist/chunk-IEIHABVR.cjs.map +1 -0
  29. package/dist/{chunk-QFLB4EIJ.cjs → chunk-LNTFRAHF.cjs} +118 -9
  30. package/dist/chunk-LNTFRAHF.cjs.map +1 -0
  31. package/dist/chunk-N4GN6Q3V.cjs +869 -0
  32. package/dist/chunk-N4GN6Q3V.cjs.map +1 -0
  33. package/dist/{chunk-FSKONGCX.cjs → chunk-OJ2AM75W.cjs} +2 -2
  34. package/dist/chunk-OJ2AM75W.cjs.map +1 -0
  35. package/dist/{chunk-QX3WNQ7V.js → chunk-OX6GOIPH.js} +4 -4
  36. package/dist/{chunk-QX3WNQ7V.js.map → chunk-OX6GOIPH.js.map} +1 -1
  37. package/dist/{chunk-OZ3CCTTA.cjs → chunk-OXYSOU6Z.cjs} +18 -5
  38. package/dist/chunk-OXYSOU6Z.cjs.map +1 -0
  39. package/dist/{chunk-CMXVTUYV.js → chunk-OYCICW4B.js} +38 -63
  40. package/dist/chunk-OYCICW4B.js.map +1 -0
  41. package/dist/{chunk-HVCUIII2.cjs → chunk-TQG7G7YI.cjs} +13 -13
  42. package/dist/{chunk-HVCUIII2.cjs.map → chunk-TQG7G7YI.cjs.map} +1 -1
  43. package/dist/{chunk-3UK5XBVJ.js → chunk-WDTTHKDS.js} +117 -10
  44. package/dist/chunk-WDTTHKDS.js.map +1 -0
  45. package/dist/cli/index.cjs +148 -14
  46. package/dist/cli/index.cjs.map +1 -1
  47. package/dist/cli/index.js +148 -14
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/client.cjs +3 -3
  50. package/dist/client.d.cts +2 -2
  51. package/dist/client.d.ts +2 -2
  52. package/dist/client.js +1 -1
  53. package/dist/drizzle/index.d.cts +3 -3
  54. package/dist/drizzle/index.d.ts +3 -3
  55. package/dist/fields/index.cjs +21 -21
  56. package/dist/fields/index.d.cts +1 -1
  57. package/dist/fields/index.d.ts +1 -1
  58. package/dist/fields/index.js +1 -1
  59. package/dist/graphql/index.cjs +13 -5
  60. package/dist/graphql/index.d.cts +37 -7
  61. package/dist/graphql/index.d.ts +37 -7
  62. package/dist/graphql/index.js +2 -2
  63. package/dist/{index-BKta3cBH.d.cts → index-DHbywDs-.d.cts} +2 -2
  64. package/dist/{index-ClOqnkTO.d.ts → index-jLs0zlft.d.ts} +2 -2
  65. package/dist/index.cjs +90 -90
  66. package/dist/index.d.cts +15 -14
  67. package/dist/index.d.ts +15 -14
  68. package/dist/index.js +8 -8
  69. package/dist/mongodb/index.d.cts +3 -3
  70. package/dist/mongodb/index.d.ts +3 -3
  71. package/dist/rest/index.cjs +5 -5
  72. package/dist/rest/index.d.cts +4 -4
  73. package/dist/rest/index.d.ts +4 -4
  74. package/dist/rest/index.js +3 -3
  75. package/dist/templates/index.d.cts +2 -2
  76. package/dist/templates/index.d.ts +2 -2
  77. package/dist/trpc/index.cjs +12 -12
  78. package/dist/trpc/index.d.cts +3 -3
  79. package/dist/trpc/index.d.ts +3 -3
  80. package/dist/trpc/index.js +3 -3
  81. package/dist/{types-Dgzlftb7.d.ts → types-BzH3_rtP.d.ts} +7 -7
  82. package/dist/{types-Ds0tCA3L.d.cts → types-CY_iNunL.d.cts} +7 -7
  83. package/dist/{types-DeSApf9T.d.ts → types-C_rVxU2T.d.cts} +4 -4
  84. package/dist/{types-DeSApf9T.d.cts → types-C_rVxU2T.d.ts} +4 -4
  85. package/package.json +2 -1
  86. package/dist/chunk-3UK5XBVJ.js.map +0 -1
  87. package/dist/chunk-AX2TZRQJ.js.map +0 -1
  88. package/dist/chunk-CMXVTUYV.js.map +0 -1
  89. package/dist/chunk-DRVOUQMT.cjs.map +0 -1
  90. package/dist/chunk-E5UJBLQ7.js.map +0 -1
  91. package/dist/chunk-FKKQUMXR.cjs.map +0 -1
  92. package/dist/chunk-FSKONGCX.cjs.map +0 -1
  93. package/dist/chunk-NZEUU7QB.js.map +0 -1
  94. package/dist/chunk-OZ3CCTTA.cjs.map +0 -1
  95. package/dist/chunk-PONTBXR5.js +0 -842
  96. package/dist/chunk-PONTBXR5.js.map +0 -1
  97. package/dist/chunk-QFLB4EIJ.cjs.map +0 -1
  98. package/dist/chunk-QVJNSAQL.cjs.map +0 -1
  99. package/dist/chunk-RRKCIAPU.cjs +0 -848
  100. package/dist/chunk-RRKCIAPU.cjs.map +0 -1
  101. package/dist/chunk-VLK5SJRI.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { A as AbstractBaseAdapter } from '../base-CIuXkrH4.cjs';
2
- import { F as FindArgs, b as FindResult, c as FindByIDArgs, d as CreateArgs, e as UpdateArgs, D as DeleteArgs, f as FindVersionsArgs, g as VersionRecord, h as CreateVersionArgs } from '../types-Ds0tCA3L.cjs';
1
+ import { A as AbstractBaseAdapter } from '../base-BjyoF6da.cjs';
2
+ import { F as FindArgs, b as FindResult, c as FindByIDArgs, d as CreateArgs, e as UpdateArgs, D as DeleteArgs, f as FindVersionsArgs, g as VersionRecord, h as CreateVersionArgs } from '../types-CY_iNunL.cjs';
3
3
  import { A as AuthAdapter, U as UserRole, c as AuthUser, S as Session, e as AuditLogFilter, d as AuditLog } from '../types-CpjuXbe7.cjs';
4
- import '../types-DeSApf9T.cjs';
4
+ import '../types-C_rVxU2T.cjs';
5
5
 
6
6
  declare class MongoDBAdapter extends AbstractBaseAdapter {
7
7
  client: any;
@@ -1,7 +1,7 @@
1
- import { A as AbstractBaseAdapter } from '../base-fFo4lqER.js';
2
- import { F as FindArgs, b as FindResult, c as FindByIDArgs, d as CreateArgs, e as UpdateArgs, D as DeleteArgs, f as FindVersionsArgs, g as VersionRecord, h as CreateVersionArgs } from '../types-Dgzlftb7.js';
1
+ import { A as AbstractBaseAdapter } from '../base-C2YR8lWt.js';
2
+ import { F as FindArgs, b as FindResult, c as FindByIDArgs, d as CreateArgs, e as UpdateArgs, D as DeleteArgs, f as FindVersionsArgs, g as VersionRecord, h as CreateVersionArgs } from '../types-BzH3_rtP.js';
3
3
  import { A as AuthAdapter, U as UserRole, c as AuthUser, S as Session, e as AuditLogFilter, d as AuditLog } from '../types-CpjuXbe7.js';
4
- import '../types-DeSApf9T.js';
4
+ import '../types-C_rVxU2T.js';
5
5
 
6
6
  declare class MongoDBAdapter extends AbstractBaseAdapter {
7
7
  client: any;
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkQVJNSAQL_cjs = require('../chunk-QVJNSAQL.cjs');
3
+ var chunkIEIHABVR_cjs = require('../chunk-IEIHABVR.cjs');
4
4
  require('../chunk-Y7AQK4R4.cjs');
5
5
  require('../chunk-4PWRCMTQ.cjs');
6
6
  require('../chunk-KC2GDBLS.cjs');
7
7
  require('../chunk-IDVRRRAK.cjs');
8
8
  require('../chunk-ADLJSJSN.cjs');
9
- require('../chunk-QFLB4EIJ.cjs');
10
- require('../chunk-FKKQUMXR.cjs');
9
+ require('../chunk-LNTFRAHF.cjs');
10
+ require('../chunk-4OCMVGEY.cjs');
11
11
  require('../chunk-RFFSZSCL.cjs');
12
12
  require('../chunk-7OS7TX2Q.cjs');
13
13
  require('../chunk-DPA3KWPY.cjs');
@@ -21,11 +21,11 @@ require('../chunk-CZLDE2OZ.cjs');
21
21
 
22
22
  Object.defineProperty(exports, "createHonoApp", {
23
23
  enumerable: true,
24
- get: function () { return chunkQVJNSAQL_cjs.createHonoApp; }
24
+ get: function () { return chunkIEIHABVR_cjs.createHonoApp; }
25
25
  });
26
26
  Object.defineProperty(exports, "createRESTAPI", {
27
27
  enumerable: true,
28
- get: function () { return chunkQVJNSAQL_cjs.createRESTAPI; }
28
+ get: function () { return chunkIEIHABVR_cjs.createRESTAPI; }
29
29
  });
30
30
  //# sourceMappingURL=index.cjs.map
31
31
  //# sourceMappingURL=index.cjs.map
@@ -1,8 +1,8 @@
1
1
  import { Hono } from 'hono';
2
- import { B as BaseAdapter, i as User } from '../types-Ds0tCA3L.cjs';
3
- import { R as Registry } from '../index-BKta3cBH.cjs';
4
- import { i as createWebhookService } from '../WebhookService-BKszZlG0.cjs';
5
- import '../types-DeSApf9T.cjs';
2
+ import { B as BaseAdapter, i as User } from '../types-CY_iNunL.cjs';
3
+ import { R as Registry } from '../index-DHbywDs-.cjs';
4
+ import { i as createWebhookService } from '../WebhookService-Dj8pJ3sp.cjs';
5
+ import '../types-C_rVxU2T.cjs';
6
6
  import 'zod';
7
7
 
8
8
  interface HonoAppOptions {
@@ -1,8 +1,8 @@
1
1
  import { Hono } from 'hono';
2
- import { B as BaseAdapter, i as User } from '../types-Dgzlftb7.js';
3
- import { R as Registry } from '../index-ClOqnkTO.js';
4
- import { i as createWebhookService } from '../WebhookService-Ccf1j-IN.js';
5
- import '../types-DeSApf9T.js';
2
+ import { B as BaseAdapter, i as User } from '../types-BzH3_rtP.js';
3
+ import { R as Registry } from '../index-jLs0zlft.js';
4
+ import { i as createWebhookService } from '../WebhookService-DpRB940h.js';
5
+ import '../types-C_rVxU2T.js';
6
6
  import 'zod';
7
7
 
8
8
  interface HonoAppOptions {
@@ -1,11 +1,11 @@
1
- export { createHonoApp, createRESTAPI } from '../chunk-VLK5SJRI.js';
1
+ export { createHonoApp, createRESTAPI } from '../chunk-5RFGYEQ3.js';
2
2
  import '../chunk-6UNONDW7.js';
3
3
  import '../chunk-YT7HXXVN.js';
4
4
  import '../chunk-XEB7PH2E.js';
5
5
  import '../chunk-Q72BOAPK.js';
6
6
  import '../chunk-P2YW545G.js';
7
- import '../chunk-3UK5XBVJ.js';
8
- import '../chunk-NZEUU7QB.js';
7
+ import '../chunk-WDTTHKDS.js';
8
+ import '../chunk-3AKCVYDB.js';
9
9
  import '../chunk-V7KZQIZ6.js';
10
10
  import '../chunk-CJX74IYK.js';
11
11
  import '../chunk-UUDTPZX6.js';
@@ -1,5 +1,5 @@
1
- import { G as GlobalConfig, C as CollectionConfig } from '../types-Ds0tCA3L.cjs';
2
- import '../types-DeSApf9T.cjs';
1
+ import { G as GlobalConfig, C as CollectionConfig } from '../types-CY_iNunL.cjs';
2
+ import '../types-C_rVxU2T.cjs';
3
3
 
4
4
  declare const minimalCollections: Record<string, any>;
5
5
 
@@ -1,5 +1,5 @@
1
- import { G as GlobalConfig, C as CollectionConfig } from '../types-Dgzlftb7.js';
2
- import '../types-DeSApf9T.js';
1
+ import { G as GlobalConfig, C as CollectionConfig } from '../types-BzH3_rtP.js';
2
+ import '../types-C_rVxU2T.js';
3
3
 
4
4
  declare const minimalCollections: Record<string, any>;
5
5
 
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkHVCUIII2_cjs = require('../chunk-HVCUIII2.cjs');
4
- require('../chunk-QFLB4EIJ.cjs');
5
- require('../chunk-FKKQUMXR.cjs');
3
+ var chunkTQG7G7YI_cjs = require('../chunk-TQG7G7YI.cjs');
4
+ require('../chunk-LNTFRAHF.cjs');
5
+ require('../chunk-4OCMVGEY.cjs');
6
6
  require('../chunk-NKPKR5BW.cjs');
7
7
  require('../chunk-CZLDE2OZ.cjs');
8
8
 
@@ -10,39 +10,39 @@ require('../chunk-CZLDE2OZ.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "createContext", {
12
12
  enumerable: true,
13
- get: function () { return chunkHVCUIII2_cjs.createContext; }
13
+ get: function () { return chunkTQG7G7YI_cjs.createContext; }
14
14
  });
15
15
  Object.defineProperty(exports, "createCountProcedure", {
16
16
  enumerable: true,
17
- get: function () { return chunkHVCUIII2_cjs.createCountProcedure; }
17
+ get: function () { return chunkTQG7G7YI_cjs.createCountProcedure; }
18
18
  });
19
19
  Object.defineProperty(exports, "createCreateProcedure", {
20
20
  enumerable: true,
21
- get: function () { return chunkHVCUIII2_cjs.createCreateProcedure; }
21
+ get: function () { return chunkTQG7G7YI_cjs.createCreateProcedure; }
22
22
  });
23
23
  Object.defineProperty(exports, "createDeleteProcedure", {
24
24
  enumerable: true,
25
- get: function () { return chunkHVCUIII2_cjs.createDeleteProcedure; }
25
+ get: function () { return chunkTQG7G7YI_cjs.createDeleteProcedure; }
26
26
  });
27
27
  Object.defineProperty(exports, "createDynamicRouter", {
28
28
  enumerable: true,
29
- get: function () { return chunkHVCUIII2_cjs.createDynamicRouter; }
29
+ get: function () { return chunkTQG7G7YI_cjs.createDynamicRouter; }
30
30
  });
31
31
  Object.defineProperty(exports, "createFindByIDProcedure", {
32
32
  enumerable: true,
33
- get: function () { return chunkHVCUIII2_cjs.createFindByIDProcedure; }
33
+ get: function () { return chunkTQG7G7YI_cjs.createFindByIDProcedure; }
34
34
  });
35
35
  Object.defineProperty(exports, "createFindProcedure", {
36
36
  enumerable: true,
37
- get: function () { return chunkHVCUIII2_cjs.createFindProcedure; }
37
+ get: function () { return chunkTQG7G7YI_cjs.createFindProcedure; }
38
38
  });
39
39
  Object.defineProperty(exports, "createKyroServer", {
40
40
  enumerable: true,
41
- get: function () { return chunkHVCUIII2_cjs.createKyroServer; }
41
+ get: function () { return chunkTQG7G7YI_cjs.createKyroServer; }
42
42
  });
43
43
  Object.defineProperty(exports, "createUpdateProcedure", {
44
44
  enumerable: true,
45
- get: function () { return chunkHVCUIII2_cjs.createUpdateProcedure; }
45
+ get: function () { return chunkTQG7G7YI_cjs.createUpdateProcedure; }
46
46
  });
47
47
  //# sourceMappingURL=index.cjs.map
48
48
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
- import { B as BaseAdapter, R as Request, i as User, b as FindResult } from '../types-Ds0tCA3L.cjs';
2
- import { i as createWebhookService } from '../WebhookService-BKszZlG0.cjs';
3
- import '../types-DeSApf9T.cjs';
1
+ import { B as BaseAdapter, R as Request, i as User, b as FindResult } from '../types-CY_iNunL.cjs';
2
+ import { i as createWebhookService } from '../WebhookService-Dj8pJ3sp.cjs';
3
+ import '../types-C_rVxU2T.cjs';
4
4
 
5
5
  interface ApiKeyContext {
6
6
  userId: string;
@@ -1,6 +1,6 @@
1
- import { B as BaseAdapter, R as Request, i as User, b as FindResult } from '../types-Dgzlftb7.js';
2
- import { i as createWebhookService } from '../WebhookService-Ccf1j-IN.js';
3
- import '../types-DeSApf9T.js';
1
+ import { B as BaseAdapter, R as Request, i as User, b as FindResult } from '../types-BzH3_rtP.js';
2
+ import { i as createWebhookService } from '../WebhookService-DpRB940h.js';
3
+ import '../types-C_rVxU2T.js';
4
4
 
5
5
  interface ApiKeyContext {
6
6
  userId: string;
@@ -1,6 +1,6 @@
1
- export { createContext, createCountProcedure, createCreateProcedure, createDeleteProcedure, createDynamicRouter, createFindByIDProcedure, createFindProcedure, createKyroServer, createUpdateProcedure } from '../chunk-QX3WNQ7V.js';
2
- import '../chunk-3UK5XBVJ.js';
3
- import '../chunk-NZEUU7QB.js';
1
+ export { createContext, createCountProcedure, createCreateProcedure, createDeleteProcedure, createDynamicRouter, createFindByIDProcedure, createFindProcedure, createKyroServer, createUpdateProcedure } from '../chunk-OX6GOIPH.js';
2
+ import '../chunk-WDTTHKDS.js';
3
+ import '../chunk-3AKCVYDB.js';
4
4
  import '../chunk-L4EZKIEX.js';
5
5
  import '../chunk-4CV4JOE5.js';
6
6
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { F as Field } from './types-DeSApf9T.js';
1
+ import { F as Field } from './types-C_rVxU2T.js';
2
2
 
3
3
  interface Request {
4
4
  body?: any;
@@ -68,11 +68,11 @@ interface WhereClause {
68
68
  interface AccessArgs {
69
69
  req: Request;
70
70
  user?: User;
71
- data?: any;
72
- doc?: any;
71
+ data?: unknown;
72
+ doc?: unknown;
73
73
  id?: string;
74
74
  tenantID?: string;
75
- context?: Record<string, any>;
75
+ context?: Record<string, unknown>;
76
76
  }
77
77
  type AccessControl = boolean | ((args: AccessArgs) => Promise<boolean | WhereClause> | boolean | WhereClause);
78
78
  interface CollectionAccess {
@@ -114,8 +114,8 @@ interface AdminConfig {
114
114
  hideAPIURL?: boolean;
115
115
  group?: string;
116
116
  icon?: string;
117
- preview?: (doc: any, options: {
118
- req: any;
117
+ preview?: (doc: Record<string, unknown>, options: {
118
+ req: unknown;
119
119
  }) => string;
120
120
  disableDuplicate?: boolean;
121
121
  pagination?: {
@@ -145,7 +145,7 @@ interface UploadConfig {
145
145
  focalPoint?: boolean;
146
146
  formatOptions?: {
147
147
  format: "webp" | "png" | "jpg";
148
- options?: Record<string, any>;
148
+ options?: Record<string, unknown>;
149
149
  };
150
150
  resizeOptions?: Record<string, any>;
151
151
  adminThumbnail?: string;
@@ -1,4 +1,4 @@
1
- import { F as Field } from './types-DeSApf9T.cjs';
1
+ import { F as Field } from './types-C_rVxU2T.cjs';
2
2
 
3
3
  interface Request {
4
4
  body?: any;
@@ -68,11 +68,11 @@ interface WhereClause {
68
68
  interface AccessArgs {
69
69
  req: Request;
70
70
  user?: User;
71
- data?: any;
72
- doc?: any;
71
+ data?: unknown;
72
+ doc?: unknown;
73
73
  id?: string;
74
74
  tenantID?: string;
75
- context?: Record<string, any>;
75
+ context?: Record<string, unknown>;
76
76
  }
77
77
  type AccessControl = boolean | ((args: AccessArgs) => Promise<boolean | WhereClause> | boolean | WhereClause);
78
78
  interface CollectionAccess {
@@ -114,8 +114,8 @@ interface AdminConfig {
114
114
  hideAPIURL?: boolean;
115
115
  group?: string;
116
116
  icon?: string;
117
- preview?: (doc: any, options: {
118
- req: any;
117
+ preview?: (doc: Record<string, unknown>, options: {
118
+ req: unknown;
119
119
  }) => string;
120
120
  disableDuplicate?: boolean;
121
121
  pagination?: {
@@ -145,7 +145,7 @@ interface UploadConfig {
145
145
  focalPoint?: boolean;
146
146
  formatOptions?: {
147
147
  format: "webp" | "png" | "jpg";
148
- options?: Record<string, any>;
148
+ options?: Record<string, unknown>;
149
149
  };
150
150
  resizeOptions?: Record<string, any>;
151
151
  adminThumbnail?: string;
@@ -16,8 +16,8 @@ interface DeclarativeCondition {
16
16
  interface FieldAdmin {
17
17
  description?: string;
18
18
  placeholder?: string;
19
- readOnly?: boolean | ((data: Record<string, any>, siblingData: Record<string, any>) => boolean);
20
- hidden?: boolean | ((data: Record<string, any>, siblingData: Record<string, any>) => boolean);
19
+ readOnly?: boolean | ((data: Record<string, unknown>, siblingData: Record<string, unknown>) => boolean);
20
+ hidden?: boolean | ((data: Record<string, unknown>, siblingData: Record<string, unknown>) => boolean);
21
21
  width?: string;
22
22
  position?: "sidebar" | "main";
23
23
  autoGenerate?: string;
@@ -25,7 +25,7 @@ interface FieldAdmin {
25
25
  method?: string;
26
26
  inline?: boolean;
27
27
  pickerMode?: "drawer" | "dropdown";
28
- condition?: ((data: Record<string, any>, siblingData: Record<string, any>) => boolean) | DeclarativeCondition;
28
+ condition?: ((data: Record<string, unknown>, siblingData: Record<string, unknown>) => boolean) | DeclarativeCondition;
29
29
  }
30
30
  interface BaseField {
31
31
  name: string;
@@ -46,7 +46,7 @@ interface BaseField {
46
46
  interface ValidateOptions {
47
47
  data?: Record<string, any>;
48
48
  siblingData?: Record<string, any>;
49
- user?: any;
49
+ user?: unknown;
50
50
  operation?: string;
51
51
  required?: boolean;
52
52
  }
@@ -16,8 +16,8 @@ interface DeclarativeCondition {
16
16
  interface FieldAdmin {
17
17
  description?: string;
18
18
  placeholder?: string;
19
- readOnly?: boolean | ((data: Record<string, any>, siblingData: Record<string, any>) => boolean);
20
- hidden?: boolean | ((data: Record<string, any>, siblingData: Record<string, any>) => boolean);
19
+ readOnly?: boolean | ((data: Record<string, unknown>, siblingData: Record<string, unknown>) => boolean);
20
+ hidden?: boolean | ((data: Record<string, unknown>, siblingData: Record<string, unknown>) => boolean);
21
21
  width?: string;
22
22
  position?: "sidebar" | "main";
23
23
  autoGenerate?: string;
@@ -25,7 +25,7 @@ interface FieldAdmin {
25
25
  method?: string;
26
26
  inline?: boolean;
27
27
  pickerMode?: "drawer" | "dropdown";
28
- condition?: ((data: Record<string, any>, siblingData: Record<string, any>) => boolean) | DeclarativeCondition;
28
+ condition?: ((data: Record<string, unknown>, siblingData: Record<string, unknown>) => boolean) | DeclarativeCondition;
29
29
  }
30
30
  interface BaseField {
31
31
  name: string;
@@ -46,7 +46,7 @@ interface BaseField {
46
46
  interface ValidateOptions {
47
47
  data?: Record<string, any>;
48
48
  siblingData?: Record<string, any>;
49
- user?: any;
49
+ user?: unknown;
50
50
  operation?: string;
51
51
  required?: boolean;
52
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kyro-cms/core",
3
- "version": "0.9.7",
3
+ "version": "0.9.9",
4
4
  "description": "Astro-native headless CMS with multi-database adapters, multi-protocol APIs, and multi-vendor support",
5
5
  "engines": {
6
6
  "node": ">=22"
@@ -193,6 +193,7 @@
193
193
  "esbuild": "^0.25.0",
194
194
  "glob": "^11.0.1",
195
195
  "graphql": "^16.10.0",
196
+ "graphql-yoga": "^5.21.2",
196
197
  "hono": "^4.7.0",
197
198
  "ioredis": "^5.10.1",
198
199
  "jsondiffpatch": "^0.7.3",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/webhooks/types.ts","../src/webhooks/delivery.ts","../src/webhooks/WebhookService.ts"],"names":[],"mappings":"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","file":"chunk-3UK5XBVJ.js","sourcesContent":["export const WEBHOOK_EVENTS = {\n COLLECTION_CREATE: \"collection.create\",\n COLLECTION_UPDATE: \"collection.update\",\n COLLECTION_DELETE: \"collection.delete\",\n MEDIA_UPLOAD: \"media.upload\",\n MEDIA_DELETE: \"media.delete\",\n AUTH_LOGIN: \"auth.login\",\n AUTH_REGISTER: \"auth.register\",\n AUTH_LOGOUT: \"auth.logout\",\n ORDER_CREATED: \"order.created\",\n ORDER_PAID: \"order.paid\",\n ORDER_SHIPPED: \"order.shipped\",\n ORDER_DELIVERED: \"order.delivered\",\n} as const;\n\nexport type WebhookEvent = (typeof WEBHOOK_EVENTS)[keyof typeof WEBHOOK_EVENTS];\n\nexport const ALL_WEBHOOK_EVENTS: WebhookEvent[] = Object.values(WEBHOOK_EVENTS);\n\nexport interface WebhookConfig {\n id: string;\n name: string;\n url: string;\n events: WebhookEvent[];\n status: \"active\" | \"inactive\" | \"error\";\n secret?: string;\n headers?: Record<string, string>;\n lastTriggered?: string;\n lastError?: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CreateWebhookData {\n name: string;\n url: string;\n events: WebhookEvent[];\n status?: \"active\" | \"inactive\";\n secret?: string;\n headers?: Record<string, string>;\n}\n\nexport interface UpdateWebhookData {\n name?: string;\n url?: string;\n events?: WebhookEvent[];\n status?: \"active\" | \"inactive\" | \"error\";\n secret?: string;\n headers?: Record<string, string>;\n lastTriggered?: string | null;\n lastError?: string | null;\n}\n\nexport interface WebhookPayload {\n id: string;\n event: WebhookEvent;\n timestamp: string;\n collection?: string;\n operation?: \"create\" | \"update\" | \"delete\";\n data?: unknown;\n previousData?: unknown;\n user?: {\n id: string;\n email?: string;\n role?: string;\n };\n tenantId?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface WebhookDelivery {\n id: string;\n webhookId: string;\n event: WebhookEvent;\n payload: WebhookPayload;\n attempt: number;\n status: \"pending\" | \"success\" | \"failed\" | \"retrying\";\n responseStatus?: number;\n responseBody?: string;\n error?: string;\n duration?: number;\n createdAt: string;\n deliveredAt?: string;\n nextRetryAt?: string;\n}\n\nexport interface WebhookTriggerResult {\n deliveryId: string;\n webhookId: string;\n event: WebhookEvent;\n status: \"queued\" | \"success\" | \"failed\";\n responseStatus?: number;\n duration?: number;\n error?: string;\n}\n\nexport const WEBHOOK_COLLECTION = \"_webhooks\";\nexport const WEBHOOK_DELIVERY_COLLECTION = \"_webhook_deliveries\";\n","import { createHmac, randomBytes } from \"crypto\";\nimport type {\n WebhookConfig,\n WebhookPayload,\n WebhookDelivery,\n} from \"./types.js\";\n\nexport interface DeliveryResult {\n success: boolean;\n status: number;\n statusText?: string;\n body?: string;\n duration: number;\n error?: string;\n}\n\nexport interface DeliveryOptions {\n timeout?: number;\n maxRetries?: number;\n retryDelay?: number;\n onRetry?: (attempt: number, error: string) => void;\n onSuccess?: (result: DeliveryResult) => void;\n onFailure?: (error: string) => void;\n}\n\nexport function signPayload(payload: string, secret: string): string {\n return `sha256=${createHmac(\"sha256\", secret).update(payload).digest(\"hex\")}`;\n}\n\nexport function generateWebhookSecret(): string {\n return randomBytes(32).toString(\"hex\");\n}\n\nexport async function deliverWebhook(\n webhook: WebhookConfig,\n payload: WebhookPayload,\n options: DeliveryOptions = {},\n): Promise<DeliveryResult> {\n const timeout = options.timeout || 30000;\n const startTime = Date.now();\n\n const body = JSON.stringify(payload);\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"Kyro-CMS-Webhook/1.0\",\n \"X-Webhook-Event\": payload.event,\n \"X-Webhook-Delivery\": payload.id,\n \"X-Webhook-Timestamp\": payload.timestamp,\n ...(webhook.headers || {}),\n };\n\n if (webhook.secret) {\n const signature = signPayload(body, webhook.secret);\n headers[\"X-Webhook-Signature\"] = signature;\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(webhook.url, {\n method: \"POST\",\n headers,\n body,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n const duration = Date.now() - startTime;\n let responseBody: string | undefined;\n\n try {\n const text = await response.text();\n responseBody = text.slice(0, 1000);\n } catch {}\n\n const result: DeliveryResult = {\n success: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseBody,\n duration,\n };\n\n if (result.success && options.onSuccess) {\n options.onSuccess(result);\n } else if (!result.success && options.onFailure) {\n options.onFailure(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n return result;\n } catch (error: any) {\n clearTimeout(timeoutId);\n const duration = Date.now() - startTime;\n const errorMessage =\n error.name === \"AbortError\"\n ? `Request timed out after ${timeout}ms`\n : error.message || \"Unknown error\";\n\n if (options.onFailure) {\n options.onFailure(errorMessage);\n }\n\n return {\n success: false,\n status: 0,\n duration,\n error: errorMessage,\n };\n }\n}\n\nexport async function deliverWithRetry(\n webhook: WebhookConfig,\n payload: WebhookPayload,\n deliveryId: string,\n options: DeliveryOptions = {},\n): Promise<DeliveryResult> {\n const maxRetries = options.maxRetries ?? 5;\n const baseDelay = options.retryDelay ?? 1000;\n let lastResult: DeliveryResult | null = null;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(baseDelay * Math.pow(2, attempt - 1), 30000);\n if (options.onRetry) {\n options.onRetry(attempt, `Retrying in ${delay}ms...`);\n }\n await sleep(delay);\n }\n\n if (options.onRetry && attempt > 0) {\n options.onRetry(attempt, `Attempt ${attempt + 1}/${maxRetries + 1}`);\n }\n\n lastResult = await deliverWebhook(webhook, payload, {\n ...options,\n onRetry: undefined,\n onSuccess: undefined,\n onFailure: undefined,\n });\n\n if (lastResult.success) {\n return lastResult;\n }\n\n if (lastResult.error?.includes(\"timed out\") && attempt < maxRetries) {\n continue;\n }\n\n if (lastResult.status >= 400 && lastResult.status < 500) {\n return lastResult;\n }\n }\n\n return (\n lastResult || {\n success: false,\n status: 0,\n duration: 0,\n error: \"All delivery attempts failed\",\n }\n );\n}\n\nexport function buildDeliveryRecord(\n deliveryId: string,\n webhookId: string,\n event: string,\n payload: WebhookPayload,\n attempt: number,\n result: DeliveryResult,\n): WebhookDelivery {\n return {\n id: deliveryId,\n webhookId,\n event: event as any,\n payload,\n attempt,\n status: result.success ? \"success\" : \"failed\",\n responseStatus: result.status || undefined,\n responseBody: result.body,\n duration: result.duration,\n error: result.error,\n createdAt: new Date().toISOString(),\n deliveredAt: result.success ? new Date().toISOString() : undefined,\n };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function createTestPayload(): WebhookPayload {\n return {\n id: `test_${Date.now()}`,\n event: \"collection.create\",\n timestamp: new Date().toISOString(),\n collection: \"test\",\n operation: \"create\",\n data: { message: \"This is a test webhook delivery\" },\n user: { id: \"system\", email: \"system@kyro.dev\", role: \"super_admin\" },\n };\n}\n","import { randomUUID } from \"crypto\";\nimport type { BaseAdapter } from \"../registry/types.js\";\nimport {\n type WebhookConfig,\n type CreateWebhookData,\n type UpdateWebhookData,\n type WebhookPayload,\n type WebhookDelivery,\n type WebhookEvent,\n type WebhookTriggerResult,\n WEBHOOK_COLLECTION,\n WEBHOOK_DELIVERY_COLLECTION,\n} from \"./types.js\";\nimport {\n deliverWithRetry,\n buildDeliveryRecord,\n generateWebhookSecret,\n} from \"./delivery.js\";\n\nexport class WebhookService {\n private db: BaseAdapter;\n\n constructor(db: BaseAdapter) {\n this.db = db;\n }\n\n async getWebhooks(filters?: {\n status?: string;\n event?: WebhookEvent;\n }): Promise<WebhookConfig[]> {\n const result = await this.db.find({\n collection: WEBHOOK_COLLECTION,\n where: filters?.status ? { status: { equals: filters.status } } : {},\n limit: 100,\n page: 1,\n });\n\n const webhooks = result.docs as unknown as WebhookConfig[];\n\n if (filters?.event) {\n return webhooks.filter((w) =>\n w.events.includes(filters.event as WebhookEvent),\n );\n }\n\n return webhooks;\n }\n\n async getWebhookById(id: string): Promise<WebhookConfig | null> {\n return this.db.findByID({\n collection: WEBHOOK_COLLECTION,\n id,\n }) as Promise<WebhookConfig | null>;\n }\n\n async createWebhook(data: CreateWebhookData): Promise<WebhookConfig> {\n const now = new Date().toISOString();\n const secret = data.secret || generateWebhookSecret();\n\n const webhook = {\n id: randomUUID(),\n name: data.name,\n url: data.url,\n events: data.events,\n status: data.status || \"active\",\n secret,\n headers: data.headers || {},\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.create({\n collection: WEBHOOK_COLLECTION,\n data: webhook,\n });\n\n return webhook as WebhookConfig;\n }\n\n async updateWebhook(\n id: string,\n data: UpdateWebhookData,\n ): Promise<WebhookConfig | null> {\n const existing = await this.getWebhookById(id);\n if (!existing) return null;\n\n const updated = {\n ...existing,\n ...data,\n updatedAt: new Date().toISOString(),\n };\n\n if (data.secret === \"\" && \"secret\" in data) {\n delete updated.secret;\n }\n\n await this.db.update({\n collection: WEBHOOK_COLLECTION,\n id,\n data: updated,\n });\n\n return updated as WebhookConfig;\n }\n\n async deleteWebhook(id: string): Promise<void> {\n await this.db.delete({\n collection: WEBHOOK_COLLECTION,\n id,\n });\n }\n\n async trigger(\n event: WebhookEvent,\n payloadData: Omit<WebhookPayload, \"id\" | \"event\" | \"timestamp\">,\n ): Promise<WebhookTriggerResult[]> {\n const webhooks = await this.getWebhooks();\n const activeWebhooks = webhooks.filter((w) => w.status === \"active\");\n\n const matchingWebhooks = activeWebhooks.filter((w) =>\n w.events.includes(event),\n );\n\n if (matchingWebhooks.length === 0) {\n return [];\n }\n\n const payload: WebhookPayload = {\n id: `wh_${Date.now()}_${randomUUID().slice(0, 8)}`,\n event,\n timestamp: new Date().toISOString(),\n ...payloadData,\n };\n\n const results: WebhookTriggerResult[] = [];\n\n for (const webhook of matchingWebhooks) {\n const result = await this.triggerWebhook(webhook, payload);\n results.push(result);\n }\n\n return results;\n }\n\n async triggerWebhook(\n webhook: WebhookConfig,\n payload: WebhookPayload,\n ): Promise<WebhookTriggerResult> {\n const deliveryId = `dlv_${Date.now()}_${randomUUID().slice(0, 8)}`;\n\n try {\n const result = await deliverWithRetry(webhook, payload, deliveryId, {\n maxRetries: 5,\n retryDelay: 1000,\n });\n\n const deliveryRecord = buildDeliveryRecord(\n deliveryId,\n webhook.id,\n webhook.events[0],\n payload,\n 1,\n result,\n );\n\n try {\n await this.db.create({\n collection: WEBHOOK_DELIVERY_COLLECTION,\n data: deliveryRecord,\n });\n } catch {\n console.warn(\n \"[WebhookService] Failed to save delivery record:\",\n deliveryId,\n );\n }\n\n if (!result.success) {\n await this.updateWebhook(webhook.id, {\n status: \"error\",\n lastError: result.error,\n }).catch(() => {});\n } else {\n await this.updateWebhook(webhook.id, {\n status: \"active\",\n lastTriggered: new Date().toISOString(),\n }).catch(() => {});\n }\n\n return {\n deliveryId,\n webhookId: webhook.id,\n event: webhook.events[0],\n status: result.success ? \"success\" : \"failed\",\n responseStatus: result.status,\n duration: result.duration,\n error: result.error,\n };\n } catch (error: any) {\n return {\n deliveryId,\n webhookId: webhook.id,\n event: webhook.events[0],\n status: \"failed\",\n error: error.message,\n };\n }\n }\n\n async testWebhook(webhookId: string): Promise<WebhookTriggerResult | null> {\n const webhook = await this.getWebhookById(webhookId);\n if (!webhook) return null;\n\n const payload: WebhookPayload = {\n id: `test_${Date.now()}`,\n event: webhook.events[0] || \"collection.create\",\n timestamp: new Date().toISOString(),\n collection: \"test\",\n operation: \"create\",\n data: { message: \"This is a test webhook delivery from Kyro CMS\" },\n user: {\n id: \"system\",\n email: \"system@kyro.dev\",\n role: \"super_admin\",\n },\n };\n\n return this.triggerWebhook(webhook, payload);\n }\n\n async getDeliveryHistory(\n webhookId: string,\n limit: number = 50,\n ): Promise<WebhookDelivery[]> {\n const result = await this.db.find({\n collection: WEBHOOK_DELIVERY_COLLECTION,\n where: { webhookId: { equals: webhookId } },\n sort: \"-createdAt\",\n limit,\n page: 1,\n });\n\n return result.docs as unknown as WebhookDelivery[];\n }\n\n async retryDelivery(\n deliveryId: string,\n ): Promise<WebhookTriggerResult | null> {\n const delivery = (await this.db.findByID({\n collection: WEBHOOK_DELIVERY_COLLECTION,\n id: deliveryId,\n })) as WebhookDelivery | null;\n\n if (!delivery) return null;\n\n const webhook = await this.getWebhookById(delivery.webhookId);\n if (!webhook) return null;\n\n return this.triggerWebhook(webhook, delivery.payload);\n }\n}\n\nexport function createWebhookService(db: BaseAdapter): WebhookService {\n return new WebhookService(db);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/api-handler.ts"],"names":[],"mappings":"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","file":"chunk-AX2TZRQJ.js","sourcesContent":["import type { APIRoute } from \"astro\";\nimport { createKyro } from \"./createKyro.js\";\nimport { autoBootstrap } from \"./auth/bootstrap.js\";\nimport { DrizzleAdapter } from \"./database/drizzle/adapter.js\";\nimport { PostgresAuthAdapter } from \"./database/drizzle/postgres-auth-adapter.js\";\nimport { LocalAdapter } from \"./database/local/adapter.js\";\nimport { SQLiteAuthAdapter } from \"./auth/sqlite-adapter.js\";\nimport { MongoDBAdapter } from \"./database/mongodb/adapter.js\";\nimport { MongoDBAuthAdapter } from \"./database/mongodb/mongo-auth-adapter.js\";\n// @ts-ignore - handled by vite alias\nimport projectConfig from \"kyro:config\";\n\nexport let kyroInstance: any = null;\nlet initPromise: Promise<void> | null = null;\n\nasync function doInit(): Promise<void> {\n if (kyroInstance) return;\n\n try {\n const config = projectConfig.default || projectConfig;\n kyroInstance = createKyro(config);\n await kyroInstance.init();\n await kyroInstance.loadSettings();\n\n const db = kyroInstance.db;\n let bootstrapAuthAdapter: any = undefined;\n \n if (db instanceof DrizzleAdapter) {\n if (db.dialect === \"postgres\") {\n bootstrapAuthAdapter = new PostgresAuthAdapter({ db: db.client });\n } else if (db.dialect === \"sqlite\") {\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n bootstrapAuthAdapter = new SQLiteAuthAdapter({ path: authDbPath });\n }\n } else if (db instanceof LocalAdapter) {\n const authDbPath = process.env.KYRO_AUTH_DB_PATH || \"./data/auth.db\";\n bootstrapAuthAdapter = new SQLiteAuthAdapter({ path: authDbPath });\n } else if (db instanceof MongoDBAdapter) {\n bootstrapAuthAdapter = new MongoDBAuthAdapter({ db: db.db });\n }\n\n if (bootstrapAuthAdapter?.connect) {\n await bootstrapAuthAdapter.connect();\n }\n\n const result = await autoBootstrap(bootstrapAuthAdapter);\n if (result?.success) {\n console.log(`[Kyro] Admin user auto-created from env: ${result.user?.email}`);\n }\n\n // Auto-start WebSocket (checks settings.access.apiAccess.wsEnabled internally)\n if (typeof kyroInstance.startWebSocket === \"function\") {\n kyroInstance.startWebSocket().catch((err: any) => {\n console.error(\"[Kyro] WebSocket auto-start failed:\", err);\n });\n }\n\n // Expose instance globally so admin SSR can read DB directly\n (globalThis as any).__KYRO_INSTANCE__ = kyroInstance;\n\n console.log(\"[Kyro API] Backend initialized via Astro Integration\");\n } catch (err) {\n kyroInstance = null;\n initPromise = null;\n console.error(\"[Kyro API] Init failed, will retry:\", err);\n throw err;\n }\n}\n\nexport async function warmKyroInstance(): Promise<void> {\n if (!initPromise) {\n initPromise = doInit();\n }\n await initPromise;\n}\n\nexport const ALL: APIRoute = async (context) => {\n if (!kyroInstance) {\n if (!initPromise) {\n initPromise = doInit();\n }\n\n try {\n await Promise.race([\n initPromise,\n new Promise<void>((_, reject) =>\n setTimeout(() => reject(new Error(\"Initialization timeout\")), 30000)\n ),\n ]);\n } catch {\n return new Response(JSON.stringify({\n error: \"Service Unavailable\",\n message: \"Kyro CMS is still starting up. Please try again in a moment.\",\n }), {\n status: 503,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Retry-After\": \"5\",\n },\n });\n }\n }\n\n const app = kyroInstance.getREST();\n return app.fetch(context.request, context.locals);\n};\n"]}