@kyro-cms/core 0.9.8 → 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 (67) hide show
  1. package/dist/api-handler-graphql.cjs +18 -13
  2. package/dist/api-handler-graphql.cjs.map +1 -1
  3. package/dist/api-handler-graphql.js +14 -9
  4. package/dist/api-handler-graphql.js.map +1 -1
  5. package/dist/api-handler-trpc.cjs +9 -9
  6. package/dist/api-handler-trpc.js +7 -7
  7. package/dist/api-handler.cjs +10 -10
  8. package/dist/api-handler.js +7 -7
  9. package/dist/{chunk-2GXALYKV.js → chunk-3AKCVYDB.js} +4 -109
  10. package/dist/chunk-3AKCVYDB.js.map +1 -0
  11. package/dist/{chunk-KGJRJ7CU.cjs → chunk-4OCMVGEY.cjs} +4 -110
  12. package/dist/chunk-4OCMVGEY.cjs.map +1 -0
  13. package/dist/{chunk-HA4MGAZJ.js → chunk-5RFGYEQ3.js} +109 -28
  14. package/dist/chunk-5RFGYEQ3.js.map +1 -0
  15. package/dist/chunk-5RPRLTTN.js +861 -0
  16. package/dist/chunk-5RPRLTTN.js.map +1 -0
  17. package/dist/{chunk-EQTMBMDR.js → chunk-BVUDFKKS.js} +16 -3
  18. package/dist/chunk-BVUDFKKS.js.map +1 -0
  19. package/dist/{chunk-OVZO4KB6.cjs → chunk-E4JZ73FY.cjs} +34 -25
  20. package/dist/chunk-E4JZ73FY.cjs.map +1 -0
  21. package/dist/{chunk-2CBCU5ML.cjs → chunk-IEIHABVR.cjs} +129 -48
  22. package/dist/chunk-IEIHABVR.cjs.map +1 -0
  23. package/dist/{chunk-Z7OH3MWT.cjs → chunk-LNTFRAHF.cjs} +110 -2
  24. package/dist/chunk-LNTFRAHF.cjs.map +1 -0
  25. package/dist/chunk-N4GN6Q3V.cjs +869 -0
  26. package/dist/chunk-N4GN6Q3V.cjs.map +1 -0
  27. package/dist/{chunk-65DSXNQL.js → chunk-OX6GOIPH.js} +4 -4
  28. package/dist/{chunk-65DSXNQL.js.map → chunk-OX6GOIPH.js.map} +1 -1
  29. package/dist/{chunk-PJ7F4TCC.cjs → chunk-OXYSOU6Z.cjs} +18 -5
  30. package/dist/chunk-OXYSOU6Z.cjs.map +1 -0
  31. package/dist/{chunk-ZFHTJ2YX.js → chunk-OYCICW4B.js} +16 -7
  32. package/dist/chunk-OYCICW4B.js.map +1 -0
  33. package/dist/{chunk-W3GT55TY.cjs → chunk-TQG7G7YI.cjs} +13 -13
  34. package/dist/{chunk-W3GT55TY.cjs.map → chunk-TQG7G7YI.cjs.map} +1 -1
  35. package/dist/{chunk-2Z7YAJBS.js → chunk-WDTTHKDS.js} +109 -3
  36. package/dist/chunk-WDTTHKDS.js.map +1 -0
  37. package/dist/cli/index.cjs +148 -14
  38. package/dist/cli/index.cjs.map +1 -1
  39. package/dist/cli/index.js +148 -14
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/graphql/index.cjs +7 -7
  42. package/dist/graphql/index.d.cts +21 -13
  43. package/dist/graphql/index.d.ts +21 -13
  44. package/dist/graphql/index.js +2 -2
  45. package/dist/index.cjs +70 -70
  46. package/dist/index.d.cts +6 -5
  47. package/dist/index.d.ts +6 -5
  48. package/dist/index.js +7 -7
  49. package/dist/rest/index.cjs +5 -5
  50. package/dist/rest/index.js +3 -3
  51. package/dist/trpc/index.cjs +12 -12
  52. package/dist/trpc/index.js +3 -3
  53. package/package.json +1 -1
  54. package/dist/chunk-2CBCU5ML.cjs.map +0 -1
  55. package/dist/chunk-2GXALYKV.js.map +0 -1
  56. package/dist/chunk-2Z7YAJBS.js.map +0 -1
  57. package/dist/chunk-6DURKQ6W.js +0 -1072
  58. package/dist/chunk-6DURKQ6W.js.map +0 -1
  59. package/dist/chunk-EQTMBMDR.js.map +0 -1
  60. package/dist/chunk-HA4MGAZJ.js.map +0 -1
  61. package/dist/chunk-KGJRJ7CU.cjs.map +0 -1
  62. package/dist/chunk-OVZO4KB6.cjs.map +0 -1
  63. package/dist/chunk-PF642V5O.cjs +0 -1080
  64. package/dist/chunk-PF642V5O.cjs.map +0 -1
  65. package/dist/chunk-PJ7F4TCC.cjs.map +0 -1
  66. package/dist/chunk-Z7OH3MWT.cjs.map +0 -1
  67. package/dist/chunk-ZFHTJ2YX.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/graphql/schema.ts"],"names":["result","gqlType","id"],"mappings":"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","file":"chunk-5RPRLTTN.js","sourcesContent":["import {\n GraphQLSchema,\n GraphQLObjectType,\n GraphQLString,\n GraphQLInt,\n GraphQLBoolean,\n GraphQLFloat,\n GraphQLList,\n GraphQLNonNull,\n GraphQLInputObjectType,\n GraphQLUnionType,\n GraphQLScalarType,\n type GraphQLFieldConfig,\n type GraphQLType,\n type GraphQLOutputType,\n type GraphQLInputType,\n type GraphQLInputFieldConfig,\n Kind,\n} from \"graphql\";\nimport type {\n CollectionConfig,\n GlobalConfig,\n BaseAdapter,\n} from \"../../registry/types.js\";\nimport { Registry } from \"../../registry/index.js\";\nimport type { Field, SelectField } from \"../../fields/types.js\";\nimport { evaluateAccess, type WhereClause } from \"../../access/types.js\";\nimport type { User, Request } from \"../../hooks/types.js\";\nimport type { TenantContext } from \"../../auth/rls/tenant.js\";\nimport { hasApiKeyPermission } from \"../../auth/api-key.js\";\nimport { hasPermission } from \"../../auth/rbac/checker.js\";\n\n// ============================================================================\n// Batch Loading — DataLoader-style deferred batcher\n// ============================================================================\n\ninterface LoaderOptions {\n db: BaseAdapter;\n tenantID?: string;\n user?: User;\n}\n\nexport class RelationLoader {\n private db: BaseAdapter;\n private tenantID?: string;\n private user?: User;\n private caches = new Map<string, Map<string, any>>();\n private pending = new Map<string, Set<string>>();\n private waiting = new Map<string, (value: any) => void>();\n private flushScheduled = false;\n\n constructor(opts: LoaderOptions) {\n this.db = opts.db;\n this.tenantID = opts.tenantID;\n this.user = opts.user;\n }\n\n private getCacheKey(collection: string): string {\n return collection;\n }\n\n async load(collection: string, id: string): Promise<any | undefined> {\n const key = this.getCacheKey(collection);\n let cache = this.caches.get(key);\n if (!cache) {\n cache = new Map();\n this.caches.set(key, cache);\n }\n if (cache.has(id)) {\n return cache.get(id);\n }\n\n let pendingSet = this.pending.get(key);\n if (!pendingSet) {\n pendingSet = new Set();\n this.pending.set(key, pendingSet);\n }\n pendingSet.add(id);\n cache.set(id, undefined);\n\n if (!this.flushScheduled) {\n this.flushScheduled = true;\n queueMicrotask(() => {\n this.flushScheduled = false;\n this.flushAll();\n });\n }\n\n return new Promise((resolve) => {\n this.waiting.set(`${key}:${id}`, resolve);\n });\n }\n\n async flushAll(): Promise<void> {\n for (const [key, ids] of this.pending) {\n if (ids.size === 0) continue;\n const cache = this.caches.get(key)!;\n const docs = await this.db.find({\n collection: key,\n where: { id: { in: Array.from(ids) } },\n limit: ids.size,\n tenantID: this.tenantID,\n draft: !!this.user,\n });\n for (const doc of (docs.docs || []) as any[]) {\n if (doc && doc.id) {\n cache.set(doc.id, doc);\n const resolve = this.waiting.get(`${key}:${doc.id}`);\n if (resolve) {\n resolve(doc);\n this.waiting.delete(`${key}:${doc.id}`);\n }\n }\n }\n }\n\n for (const [keyId, resolve] of this.waiting) {\n resolve(undefined);\n }\n this.waiting.clear();\n this.pending.clear();\n }\n\n resolveOne(collection: string, id: string): any | undefined {\n return this.caches.get(this.getCacheKey(collection))?.get(id);\n }\n}\n\n// ============================================================================\n// JSON Scalar — for free-form data (tabs, json, richtext, blocks)\n// ============================================================================\n\nconst GraphQLJSON = new GraphQLScalarType({\n name: \"JSON\",\n description: \"Arbitrary JSON value\",\n serialize(value: any): any {\n return value;\n },\n parseValue(value: any): any {\n return value;\n },\n parseLiteral(ast: any): any {\n switch (ast.kind) {\n case Kind.STRING: return ast.value;\n case Kind.INT:\n case Kind.FLOAT: return parseFloat(ast.value);\n case Kind.BOOLEAN: return ast.value;\n case Kind.OBJECT: {\n const obj: any = {};\n for (const field of ast.fields) {\n obj[field.name.value] = GraphQLJSON.parseLiteral(field.value);\n }\n return obj;\n }\n case Kind.LIST: return ast.values.map((v: any) => GraphQLJSON.parseLiteral(v));\n case Kind.NULL: return null;\n default: return null;\n }\n },\n});\n\n// ============================================================================\n// GraphQL Context — passed through Yoga/execute contextValue per request\n// ============================================================================\n\nexport interface GraphQLContext {\n db: BaseAdapter;\n registry: Registry;\n user?: User;\n req?: Request;\n tenantID?: string;\n apiKey?: any;\n relationLoader: RelationLoader;\n}\n\n// ============================================================================\n// Depth Limiting — prevents runaway deeply-nested queries\n// ============================================================================\n\nexport function depthLimit(maxDepth: number) {\n return (validationContext: any) => {\n let depth = 0;\n return {\n Field() {\n depth++;\n if (depth > maxDepth) {\n validationContext.reportError(\n new Error(`Query exceeds max depth of ${maxDepth}`),\n );\n }\n },\n leaveField() { depth--; },\n };\n };\n}\n\n// ============================================================================\n// Naming Helpers\n// ============================================================================\n\nfunction toPascal(slug: string): string {\n return slug.split(/[-_]/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('');\n}\n\nfunction toCamel(slug: string): string {\n const p = toPascal(slug);\n return p.charAt(0).toLowerCase() + p.slice(1);\n}\n\nfunction toSingular(slug: string): string {\n return slug.endsWith('s') && slug.length > 1 ? slug.slice(0, -1) : slug;\n}\n\n// ============================================================================\n// GraphQL Error Helpers\n// ============================================================================\n\nfunction gqlError(message: string, code: string): Error {\n const err = new Error(message);\n (err as any).extensions = { code };\n return err;\n}\n\n// ============================================================================\n// Access Control Helper\n// ============================================================================\n\nasync function checkGraphQLAccess(\n collection: { access?: any; slug: string },\n operation: \"read\" | \"create\" | \"update\" | \"delete\",\n context: { user?: User; req?: Request; tenantID?: string; apiKey?: any },\n): Promise<{ allowed: boolean; extraWhere?: WhereClause }> {\n const accessRule = collection.access?.[operation];\n\n // API key authentication — the key's own permissions govern access\n if (context.apiKey) {\n if (context.apiKey.permissions?.length > 0) {\n const resource = collection.slug;\n const action = operation === \"read\" ? \"read\" : operation === \"create\" ? \"create\" : \"update\";\n const permission = `${resource}:${action}`;\n if (\n !hasApiKeyPermission(context.apiKey.permissions, permission) &&\n !hasApiKeyPermission(context.apiKey.permissions, `${resource}:admin`)\n ) {\n return { allowed: false };\n }\n return { allowed: true };\n }\n // Unrestricted key (no explicit permissions) — check accessRule if present, otherwise allow\n if (accessRule) {\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n if (typeof result === \"boolean\") {\n return { allowed: result };\n }\n return { allowed: true, extraWhere: result };\n }\n return { allowed: true };\n }\n\n // RBAC check for authenticated users (no API key)\n if (context.user) {\n const resource = collection.slug;\n const action = operation === \"read\" ? \"read\" : operation === \"create\" ? \"create\" : operation === \"update\" ? \"update\" : \"delete\";\n const permission = `${resource}:${action}`;\n const userHasPermission = hasPermission(\n { id: context.user.id, email: context.user.email, role: context.user.role } as any,\n permission,\n );\n if (!userHasPermission && !hasPermission(\n { id: context.user.id, email: context.user.email, role: context.user.role } as any,\n `${resource}:admin`,\n )) {\n if (!accessRule) {\n return { allowed: false };\n }\n }\n }\n\n if (!accessRule) {\n if (!context.user) {\n return { allowed: false };\n }\n return { allowed: true };\n }\n\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n\n if (typeof result === \"boolean\") {\n return { allowed: result };\n }\n\n return { allowed: true, extraWhere: result };\n}\n\nasync function checkGlobalAccess(\n global: { access?: any; slug?: string },\n operation: \"read\" | \"update\",\n context: { user?: User; req?: Request; tenantID?: string; apiKey?: any },\n): Promise<{ allowed: boolean }> {\n const accessRule = global.access?.[operation];\n\n // API key authentication — the key's own permissions govern access\n if (context.apiKey) {\n if (context.apiKey.permissions?.length > 0) {\n const resource = global.slug;\n const permission = `${resource}:${operation}`;\n if (\n !hasApiKeyPermission(context.apiKey.permissions, permission) &&\n !hasApiKeyPermission(context.apiKey.permissions, `${resource}:admin`) &&\n !hasApiKeyPermission(context.apiKey.permissions, `${resource}:*`)\n ) {\n return { allowed: false };\n }\n return { allowed: true };\n }\n if (accessRule) {\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n return { allowed: typeof result === \"boolean\" ? result : true };\n }\n return { allowed: true };\n }\n\n if (!accessRule) {\n if (!context.user) {\n return { allowed: false };\n }\n const userRole = context.user.role;\n if (userRole === \"super_admin\" || userRole === \"admin\") {\n return { allowed: true };\n }\n return { allowed: false };\n }\n\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n\n if (typeof result === \"boolean\") {\n return { allowed: result };\n }\n\n return { allowed: true };\n}\n\n// ============================================================================\n// Media URL Helpers\n// ============================================================================\n\nfunction resolveMediaUrl(url: string | null | undefined, origin?: string): string | null {\n if (!url) return null;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\") || url.startsWith(\"blob:\") || url.startsWith(\"data:\")) return url;\n const base = (process.env.KYRO_BASE_URL || origin || \"http://localhost:4321\").replace(/\\/+$/, \"\");\n return `${base}${url.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n}\n\nfunction processMediaDoc(doc: any, origin?: string): any {\n if (!doc) return doc;\n if (doc.url) doc.url = resolveMediaUrl(doc.url, origin);\n if (doc.thumbnailUrl) doc.thumbnailUrl = resolveMediaUrl(doc.thumbnailUrl, origin);\n return doc;\n}\n\n// ============================================================================\n// Field → GraphQL Type Mapping\n// ============================================================================\n\nfunction fieldToGraphQLType(\n field: Field,\n registry: Registry,\n collectionTypes?: Record<string, GraphQLObjectType>,\n isInputType = false,\n): GraphQLType {\n switch (field.type) {\n case \"text\":\n case \"email\":\n case \"password\":\n case \"textarea\":\n case \"color\":\n case \"code\":\n case \"markdown\":\n case \"date\":\n case \"select\":\n case \"radio\":\n return GraphQLString;\n case \"upload\": {\n const uploadField = field as any;\n if (isInputType) {\n return uploadField.hasMany ? new GraphQLList(GraphQLString) : GraphQLString;\n }\n if (uploadField.relationTo && collectionTypes?.[uploadField.relationTo]) {\n const refType = collectionTypes[uploadField.relationTo];\n return uploadField.hasMany ? new GraphQLList(refType) : refType;\n }\n return GraphQLJSON;\n }\n case \"image\": {\n if (isInputType) return GraphQLString;\n const imageField = field as any;\n if (imageField.relationTo && collectionTypes?.[imageField.relationTo]) {\n return collectionTypes[imageField.relationTo];\n }\n return GraphQLJSON;\n }\n case \"number\":\n return field.integer ? GraphQLInt : GraphQLFloat;\n case \"checkbox\":\n return GraphQLBoolean;\n case \"json\":\n case \"richtext\":\n case \"blocks\":\n case \"tabs\":\n return isInputType ? GraphQLJSON : GraphQLJSON;\n case \"relationship\":\n if (typeof field.relationTo === \"string\") {\n if (isInputType) {\n return field.hasMany ? new GraphQLList(GraphQLString) : GraphQLString;\n }\n if (collectionTypes?.[field.relationTo]) {\n return field.hasMany ? new GraphQLList(collectionTypes[field.relationTo]) : collectionTypes[field.relationTo];\n }\n const relatedCollection = registry.getCollection(field.relationTo);\n if (relatedCollection) {\n return new GraphQLObjectType({\n name: `${toPascal(field.relationTo)}Ref`,\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(relatedCollection, registry, collectionTypes),\n }),\n });\n }\n }\n return GraphQLString;\n case \"array\":\n return new GraphQLList(GraphQLString);\n case \"group\":\n return isInputType ? GraphQLJSON : GraphQLJSON;\n default:\n return GraphQLString;\n }\n}\n\nfunction buildFieldsFromCollection(\n config: CollectionConfig,\n registry: Registry,\n collectionTypes?: Record<string, GraphQLObjectType>,\n): Record<string, GraphQLFieldConfig<any, any>> {\n const fields: Record<string, GraphQLFieldConfig<any, any>> = {};\n\n for (const field of config.fields) {\n if (field.name && field.admin?.hidden !== true) {\n const fieldConfig = buildFieldConfig(field, registry, collectionTypes);\n if (fieldConfig) {\n fields[field.name] = fieldConfig;\n }\n }\n }\n\n return fields;\n}\n\n// ============================================================================\n// Field Config Builder — builds GraphQL field configs with custom resolvers\n// ============================================================================\n\nfunction buildFieldConfig(\n field: Field,\n registry: Registry,\n collectionTypes?: Record<string, any>,\n): GraphQLFieldConfig<any, any> | null {\n if (!field.name) return null;\n const deprecationReason = (field as any).deprecated || undefined;\n if (field.type === \"upload\") {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n const uploadField = field as any;\n return {\n type: field.required ? new GraphQLNonNull(gqlType) : gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n resolve: async (source: any, args: any, ctx: any) => {\n const loader: RelationLoader | undefined = ctx?.relationLoader;\n const value = source?.[uploadField.name];\n const origin = ctx?.req?.url ? new URL(ctx.req.url).origin : undefined;\n if (!value) return null;\n if (uploadField.hasMany) {\n const items: any[] = Array.isArray(value) ? value : [];\n return Promise.all(items.map(async (item: any) => {\n const id = typeof item === \"string\" ? item : item?.id;\n if (!id) return processMediaDoc(item, origin);\n if (typeof item === \"object\" && item?.url) return processMediaDoc(item, origin);\n if (loader) {\n const cached = loader.resolveOne(uploadField.relationTo, id);\n if (cached) return processMediaDoc(cached, origin);\n const loaded = await loader.load(uploadField.relationTo, id);\n if (loaded) return processMediaDoc(loaded, origin);\n }\n return { id };\n }));\n }\n const id = typeof value === \"string\" ? value : value?.id;\n if (!id) return processMediaDoc(value, origin);\n if (typeof value === \"object\" && value?.url) return processMediaDoc(value, origin);\n if (loader) {\n const cached = loader.resolveOne(uploadField.relationTo, id);\n if (cached) return processMediaDoc(cached, origin);\n const loaded = await loader.load(uploadField.relationTo, id);\n if (loaded) return processMediaDoc(loaded, origin);\n }\n return { id };\n },\n };\n }\n if (field.type === \"relationship\" && !(field as any).hasMany) {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n return {\n type: field.required ? new GraphQLNonNull(gqlType) : gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n resolve: async (source: any, args: any, ctx: any) => {\n const loader: RelationLoader | undefined = ctx?.relationLoader;\n const relField = field as any;\n const id = source?.[relField.name];\n if (!id) return null;\n if (loader && typeof id === \"string\") {\n const cached = loader.resolveOne(relField.relationTo, id);\n if (cached) return cached;\n const loaded = await loader.load(relField.relationTo, id);\n if (loaded) return loaded;\n }\n return { id };\n },\n };\n }\n if (field.type === \"relationship\" && (field as any).hasMany) {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n return {\n type: gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n resolve: async (source: any, args: any, ctx: any) => {\n const loader: RelationLoader | undefined = ctx?.relationLoader;\n const relField = field as any;\n const ids: string[] = source?.[relField.name] || [];\n if (!ids.length) return [];\n if (loader) {\n const results: any[] = [];\n for (const id of ids) {\n const cached = loader.resolveOne(relField.relationTo, id);\n if (cached) results.push(cached);\n else {\n const loaded = await loader.load(relField.relationTo, id);\n results.push(loaded || { id });\n }\n }\n return results;\n }\n return ids.map((id: string) => ({ id }));\n },\n };\n }\n // Default: build a simple field config without custom resolver\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n return {\n type: field.required ? new GraphQLNonNull(gqlType) : gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n };\n}\n\n// ============================================================================\n// GraphQL Schema Builder\n// ============================================================================\n\nexport interface GraphQLSchemaOptions {\n registry: Registry;\n db: BaseAdapter;\n user?: User;\n req?: Request;\n tenantID?: string;\n apiKey?: any;\n settings?: Record<string, any>;\n}\n\nexport function buildGraphQLSchema(\n options: GraphQLSchemaOptions,\n): GraphQLSchema {\n const { registry, db, user, req, tenantID, apiKey, settings } = options;\n\n // Check if GraphQL is disabled in settings\n const apiAccess = settings?.access?.apiAccess;\n if (apiAccess?.graphqlEnabled === false) {\n throw new Error(\"GraphQL API is disabled\");\n }\n\n const collections = registry.getCollections();\n const globals = registry.getGlobals();\n\n // Build collection types\n const collectionTypes: Record<string, GraphQLObjectType> = {};\n const collectionInputTypes: Record<string, GraphQLInputObjectType> = {};\n\n for (const collection of collections) {\n // Output type\n collectionTypes[collection.slug] = new GraphQLObjectType({\n name: toPascal(toSingular(collection.slug)),\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(collection, registry, collectionTypes),\n ...(collection.timestamps\n ? {\n createdAt: { type: GraphQLString },\n updatedAt: { type: GraphQLString },\n }\n : {}),\n ...(collection.tenantScoped\n ? {\n tenantID: { type: GraphQLString },\n }\n : {}),\n }),\n });\n\n // Input type for create/update\n const inputFields: Record<string, { type: GraphQLType }> = {};\n for (const field of collection.fields) {\n if (field.name && field.name !== \"id\") {\n inputFields[field.name] = {\n type: fieldToGraphQLType(field, registry, collectionTypes, true) as any,\n };\n }\n }\n\n collectionInputTypes[collection.slug] = new GraphQLInputObjectType({\n name: `${toPascal(toSingular(collection.slug))}Input`,\n fields: () => inputFields as any,\n });\n }\n\n // Build global types and input types\n const globalTypes: Record<string, GraphQLObjectType> = {};\n const globalInputTypes: Record<string, GraphQLInputObjectType> = {};\n\n for (const global of globals) {\n globalTypes[global.slug] = new GraphQLObjectType({\n name: `${toPascal(global.slug)}Global`,\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(\n { slug: global.slug, fields: global.fields } as CollectionConfig,\n registry,\n collectionTypes,\n ),\n }),\n });\n\n globalInputTypes[global.slug] = new GraphQLInputObjectType({\n name: `${toPascal(global.slug)}GlobalInput`,\n fields: () => {\n const inputFields: Record<string, { type: GraphQLType }> = {};\n for (const field of global.fields) {\n if (field.name && field.name !== \"id\") {\n inputFields[field.name] = {\n type: fieldToGraphQLType(field, registry, collectionTypes, true) as any,\n };\n }\n }\n return inputFields as any;\n },\n });\n }\n\n // Build query type\n const queryFields: Record<string, GraphQLFieldConfig<any, any>> = {};\n\n // List queries for each collection\n for (const collection of collections) {\n const type = collectionTypes[collection.slug];\n if (!type) continue;\n\n // FindMany query\n queryFields[toCamel(collection.slug)] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}FindResult`,\n fields: {\n docs: { type: new GraphQLList(type) },\n totalDocs: { type: GraphQLInt },\n page: { type: GraphQLInt },\n totalPages: { type: GraphQLInt },\n hasNextPage: { type: GraphQLBoolean },\n hasPrevPage: { type: GraphQLBoolean },\n },\n }),\n args: {\n where: { type: GraphQLString },\n sort: { type: GraphQLString },\n limit: { type: GraphQLInt },\n page: { type: GraphQLInt },\n draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied\");\n }\n\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n let where = {};\n if (args.where) {\n try {\n where = JSON.parse(args.where);\n } catch {}\n }\n\n if (access.extraWhere) {\n where = { ...where, ...access.extraWhere };\n }\n\n const isDraft = args.draft ?? !!context.user;\n\n return db.find({\n collection: collection.slug,\n where,\n sort: args.sort,\n limit: args.limit || 10,\n page: args.page || 1,\n tenantID: context.tenantID,\n draft: isDraft,\n });\n },\n };\n\n // FindByID query\n queryFields[toCamel(toSingular(collection.slug))] = {\n type,\n args: {\n id: { type: GraphQLString },\n slug: { type: GraphQLString },\n draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, context: any) => {\n if (!args.id && !args.slug) {\n throw new Error(\"Either id or slug is required\");\n }\n\n const access = await checkGraphQLAccess(collection, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied\");\n }\n\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n const isDraft = args.draft ?? !!context.user;\n\n if (args.id) {\n return db.findByID({\n collection: collection.slug,\n id: args.id,\n tenantID: context.tenantID,\n draft: isDraft,\n });\n }\n\n const result = await db.find({\n collection: collection.slug,\n where: { slug: { equals: args.slug } },\n limit: 1,\n page: 1,\n tenantID: context.tenantID,\n draft: isDraft,\n });\n return result.docs?.[0] || null;\n },\n };\n\n // Count query\n queryFields[`count${toPascal(collection.slug)}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}Count`,\n fields: {\n totalDocs: { type: GraphQLInt },\n },\n }),\n args: {\n where: { type: GraphQLString },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n return { totalDocs: 0 };\n }\n let where = {};\n if (args.where) {\n try {\n where = JSON.parse(args.where);\n } catch {}\n }\n const count = await db.count({\n collection: collection.slug,\n where,\n tenantID: context.tenantID,\n });\n return { totalDocs: count };\n },\n };\n }\n\n // Global queries\n for (const global of globals) {\n const type = globalTypes[global.slug];\n if (!type) continue;\n\n queryFields[toCamel(toSingular(global.slug))] = {\n type,\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGlobalAccess(global, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot read global\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n return db.findOne({\n collection: `_globals_${global.slug}`,\n where: {},\n tenantID: context.tenantID,\n });\n },\n };\n }\n\n const Query = new GraphQLObjectType({\n name: \"Query\",\n fields: queryFields,\n });\n\n // Build mutation type\n const mutationFields: Record<string, GraphQLFieldConfig<any, any>> = {};\n\n for (const collection of collections) {\n const type = collectionTypes[collection.slug];\n const inputType = collectionInputTypes[collection.slug];\n if (!type || !inputType) continue;\n\n // Create mutation\n mutationFields[`create${toPascal(toSingular(collection.slug))}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}CreateResult`,\n fields: {\n doc: { type },\n message: { type: GraphQLString },\n },\n }),\n args: {\n data: { type: new GraphQLNonNull(inputType) },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"create\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot create\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n const schema = registry.getCreateZodSchema(collection.slug);\n\n const validated = schema.parse(args.data);\n\n const doc = await db.create({\n collection: collection.slug,\n data: validated,\n tenantID: context.tenantID,\n });\n\n return { doc, message: \"Created successfully\" };\n },\n };\n\n // Update mutation\n mutationFields[`update${toPascal(toSingular(collection.slug))}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}UpdateResult`,\n fields: {\n doc: { type },\n message: { type: GraphQLString },\n },\n }),\n args: {\n id: { type: new GraphQLNonNull(GraphQLString) },\n data: { type: new GraphQLNonNull(inputType) },\n baseUpdatedAt: { type: GraphQLString },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"update\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot update\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n // Revision conflict detection\n if (args.baseUpdatedAt) {\n const originalDoc = await db.findByID<Record<string, any>>({\n collection: collection.slug,\n id: args.id,\n tenantID: context.tenantID,\n draft: true,\n });\n if (originalDoc && originalDoc.updatedAt && args.baseUpdatedAt !== originalDoc.updatedAt) {\n throw new Error(`Revision conflict: document has changed since ${args.baseUpdatedAt}. Current updatedAt: ${originalDoc.updatedAt}`);\n }\n }\n\n const schema = registry.getUpdateZodSchema(collection.slug);\n\n const validated = schema.parse(args.data);\n\n const doc = await db.update({\n collection: collection.slug,\n id: args.id,\n data: validated,\n tenantID: context.tenantID,\n });\n\n return { doc, message: \"Updated successfully\" };\n },\n };\n\n // Delete mutation\n mutationFields[`delete${toPascal(toSingular(collection.slug))}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}DeleteResult`,\n fields: {\n doc: { type },\n message: { type: GraphQLString },\n },\n }),\n args: {\n id: { type: new GraphQLNonNull(GraphQLString) },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"delete\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot delete\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n const doc = await db.delete({\n collection: collection.slug,\n id: args.id,\n tenantID: context.tenantID,\n });\n\n return { doc, message: \"Deleted successfully\" };\n },\n };\n }\n\n // Global mutations\n for (const global of globals) {\n const inputType = globalInputTypes[global.slug];\n if (!inputType) continue;\n\n mutationFields[`update${toPascal(global.slug)}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(global.slug)}UpdateResult`,\n fields: {\n doc: { type: globalTypes[global.slug] || GraphQLString },\n message: { type: GraphQLString },\n },\n }),\n args: {\n data: { type: new GraphQLNonNull(inputType) },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGlobalAccess(global, \"update\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot update global\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n const doc = await db.findOne({\n collection: `_globals_${global.slug}`,\n where: {},\n tenantID: context.tenantID,\n });\n\n let result;\n if (doc) {\n result = await db.update({\n collection: `_globals_${global.slug}`,\n id: doc.id,\n data: args.data,\n tenantID: context.tenantID,\n });\n } else {\n result = await db.create({\n collection: `_globals_${global.slug}`,\n data: args.data,\n tenantID: context.tenantID,\n });\n }\n\n return { doc: result, message: \"Updated successfully\" };\n },\n };\n }\n\n const Mutation = new GraphQLObjectType({\n name: \"Mutation\",\n fields: mutationFields,\n });\n\n return new GraphQLSchema({\n query: Query,\n mutation: Mutation,\n });\n}\n\n// ============================================================================\n// Factory\n// ============================================================================\n\nexport function createGraphQLSchema(\n registry: Registry,\n db: BaseAdapter,\n options?: {\n user?: User;\n req?: Request;\n tenantID?: string;\n apiKey?: any;\n },\n): GraphQLSchema {\n return buildGraphQLSchema({\n registry,\n db,\n user: options?.user,\n req: options?.req,\n tenantID: options?.tenantID,\n apiKey: options?.apiKey,\n });\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { createKyro, LocalAdapter } from './chunk-ZFHTJ2YX.js';
1
+ import { createKyro, LocalAdapter } from './chunk-OYCICW4B.js';
2
2
  import { autoBootstrap } from './chunk-GAAHG2Z4.js';
3
3
  import { SQLiteAuthAdapter } from './chunk-Q72BOAPK.js';
4
4
  import { DrizzleAdapter } from './chunk-V7KZQIZ6.js';
@@ -83,10 +83,23 @@ var ALL = async (context) => {
83
83
  });
84
84
  }
85
85
  }
86
+ const url = new URL(context.request.url);
87
+ const path = url.pathname;
88
+ const p = __KYRO_API_PATH__;
89
+ if (path === `${p}/graphql` && typeof kyroInstance.getGraphQL === "function") {
90
+ const yoga = kyroInstance.getGraphQL();
91
+ const res = await yoga.fetch(context.request, context.locals);
92
+ return new Response(res.body, res);
93
+ }
94
+ if (path.startsWith(`${p}/trpc/`) && typeof kyroInstance.getTRPC === "function") {
95
+ const trpc = kyroInstance.getTRPC();
96
+ const res = await trpc.fetch(context.request, context.locals);
97
+ return new Response(res.body, res);
98
+ }
86
99
  const app = kyroInstance.getREST();
87
100
  return app.fetch(context.request, context.locals);
88
101
  };
89
102
 
90
103
  export { ALL, kyroInstance, warmKyroInstance };
91
- //# sourceMappingURL=chunk-EQTMBMDR.js.map
92
- //# sourceMappingURL=chunk-EQTMBMDR.js.map
104
+ //# sourceMappingURL=chunk-BVUDFKKS.js.map
105
+ //# sourceMappingURL=chunk-BVUDFKKS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api-handler.ts"],"names":[],"mappings":"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","file":"chunk-BVUDFKKS.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\ndeclare var __KYRO_API_PATH__: string;\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 url = new URL(context.request.url);\n const path = url.pathname;\n const p = __KYRO_API_PATH__;\n\n if (path === `${p}/graphql` && typeof kyroInstance.getGraphQL === \"function\") {\n const yoga = kyroInstance.getGraphQL();\n const res = await yoga.fetch(context.request, context.locals);\n return new Response(res.body, res);\n }\n\n if (path.startsWith(`${p}/trpc/`) && typeof kyroInstance.getTRPC === \"function\") {\n const trpc = kyroInstance.getTRPC();\n const res = await trpc.fetch(context.request, context.locals);\n return new Response(res.body, res);\n }\n\n const app = kyroInstance.getREST();\n return app.fetch(context.request, context.locals);\n};\n"]}
@@ -1,12 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk3KTWGODI_cjs = require('./chunk-3KTWGODI.cjs');
4
- var chunkW3GT55TY_cjs = require('./chunk-W3GT55TY.cjs');
5
- var chunkPF642V5O_cjs = require('./chunk-PF642V5O.cjs');
6
- var chunk2CBCU5ML_cjs = require('./chunk-2CBCU5ML.cjs');
7
- var chunkZ7OH3MWT_cjs = require('./chunk-Z7OH3MWT.cjs');
8
- var chunkKGJRJ7CU_cjs = require('./chunk-KGJRJ7CU.cjs');
4
+ var chunkTQG7G7YI_cjs = require('./chunk-TQG7G7YI.cjs');
5
+ var chunkN4GN6Q3V_cjs = require('./chunk-N4GN6Q3V.cjs');
6
+ var chunkIEIHABVR_cjs = require('./chunk-IEIHABVR.cjs');
7
+ var chunkLNTFRAHF_cjs = require('./chunk-LNTFRAHF.cjs');
8
+ var chunk4OCMVGEY_cjs = require('./chunk-4OCMVGEY.cjs');
9
9
  var chunkEEJUFDMF_cjs = require('./chunk-EEJUFDMF.cjs');
10
+ var chunkRFFSZSCL_cjs = require('./chunk-RFFSZSCL.cjs');
11
+ var chunkDPA3KWPY_cjs = require('./chunk-DPA3KWPY.cjs');
10
12
  var chunkGUUB5EAG_cjs = require('./chunk-GUUB5EAG.cjs');
11
13
  var zod = require('zod');
12
14
  var graphqlYoga = require('graphql-yoga');
@@ -778,7 +780,7 @@ function globalToUpdateZod(global) {
778
780
 
779
781
  // src/registry/index.ts
780
782
  var Registry = class {
781
- storageProviders = chunk2CBCU5ML_cjs.getDefaultRegistry();
783
+ storageProviders = chunkIEIHABVR_cjs.getDefaultRegistry();
782
784
  collections = /* @__PURE__ */ new Map();
783
785
  globals = /* @__PURE__ */ new Map();
784
786
  plugins = [];
@@ -1319,7 +1321,7 @@ var s3StoragePlugin = {
1319
1321
  configFields: v.configFields,
1320
1322
  extractConfig: (sc) => buildS3ConfigFromStorageConfig(v.type, v, sc),
1321
1323
  extractRawConfig: (raw) => buildS3ConfigFromRaw(v.type, v, raw),
1322
- factory: (c) => chunk2CBCU5ML_cjs.createS3Storage(c)
1324
+ factory: (c) => chunkIEIHABVR_cjs.createS3Storage(c)
1323
1325
  });
1324
1326
  }
1325
1327
  }
@@ -1367,7 +1369,7 @@ var cloudinaryStoragePlugin = {
1367
1369
  uploadPreset: cl?.uploadPreset
1368
1370
  };
1369
1371
  },
1370
- factory: (c) => chunk2CBCU5ML_cjs.createCloudinaryStorage(c)
1372
+ factory: (c) => chunkIEIHABVR_cjs.createCloudinaryStorage(c)
1371
1373
  });
1372
1374
  }
1373
1375
  };
@@ -1417,7 +1419,7 @@ var ftpStoragePlugin = {
1417
1419
  type: "ftp"
1418
1420
  };
1419
1421
  },
1420
- factory: (c) => chunk2CBCU5ML_cjs.createFtpStorage(c)
1422
+ factory: (c) => chunkIEIHABVR_cjs.createFtpStorage(c)
1421
1423
  });
1422
1424
  }
1423
1425
  };
@@ -1477,7 +1479,7 @@ var Kyro = class {
1477
1479
  this.registry = createRegistry();
1478
1480
  this.db = config.adapter;
1479
1481
  this.pubsub = new chunkEEJUFDMF_cjs.KyroPubSub(this.registry);
1480
- this.webhookService = chunkZ7OH3MWT_cjs.createWebhookService(this.db);
1482
+ this.webhookService = chunkLNTFRAHF_cjs.createWebhookService(this.db);
1481
1483
  if (config.collections && config.admin?.collectionOverrides) {
1482
1484
  applyCollectionOverrides(config.collections, config.admin.collectionOverrides);
1483
1485
  }
@@ -1515,7 +1517,7 @@ var Kyro = class {
1515
1517
  );
1516
1518
  }
1517
1519
  const systemCollection = {
1518
- slug: chunkKGJRJ7CU_cjs.API_KEY_COLLECTION,
1520
+ slug: chunk4OCMVGEY_cjs.API_KEY_COLLECTION,
1519
1521
  fields: [
1520
1522
  { name: "userId", type: "text", required: true },
1521
1523
  { name: "name", type: "text", required: true },
@@ -1527,7 +1529,7 @@ var Kyro = class {
1527
1529
  ]
1528
1530
  };
1529
1531
  const webhookCollection = {
1530
- slug: chunkZ7OH3MWT_cjs.WEBHOOK_COLLECTION,
1532
+ slug: chunkLNTFRAHF_cjs.WEBHOOK_COLLECTION,
1531
1533
  fields: [
1532
1534
  { name: "name", type: "text", required: true },
1533
1535
  { name: "url", type: "text", required: true },
@@ -1540,7 +1542,7 @@ var Kyro = class {
1540
1542
  ]
1541
1543
  };
1542
1544
  const webhookDeliveryCollection = {
1543
- slug: chunkZ7OH3MWT_cjs.WEBHOOK_DELIVERY_COLLECTION,
1545
+ slug: chunkLNTFRAHF_cjs.WEBHOOK_DELIVERY_COLLECTION,
1544
1546
  fields: [
1545
1547
  { name: "webhookId", type: "text", required: true },
1546
1548
  { name: "event", type: "text", required: true },
@@ -1556,6 +1558,13 @@ var Kyro = class {
1556
1558
  ]
1557
1559
  };
1558
1560
  const allGlobals = this.registry.getGlobals();
1561
+ if (this.db instanceof chunkRFFSZSCL_cjs.DrizzleAdapter && this.db.dialect === "postgres") {
1562
+ const drizzle = this.db;
1563
+ const tableName = chunk4OCMVGEY_cjs.API_KEY_COLLECTION.replace(/-/g, "_");
1564
+ if (!drizzle.schema[tableName]) {
1565
+ drizzle.schema[tableName] = chunkDPA3KWPY_cjs.apiKeys;
1566
+ }
1567
+ }
1559
1568
  await this.db.init(
1560
1569
  [
1561
1570
  ...this.registry.getCollections(),
@@ -1614,7 +1623,7 @@ var Kyro = class {
1614
1623
  const authObj = typeof this.config.auth === "object" ? this.config.auth : null;
1615
1624
  const authSecret = authObj?.secret;
1616
1625
  const checkSession = authObj?.checkSession !== false;
1617
- return chunk2CBCU5ML_cjs.createHonoApp({
1626
+ return chunkIEIHABVR_cjs.createHonoApp({
1618
1627
  registry: this.registry,
1619
1628
  db: this.db,
1620
1629
  authSecret,
@@ -1627,7 +1636,7 @@ var Kyro = class {
1627
1636
  });
1628
1637
  }
1629
1638
  getGraphQL(options) {
1630
- const schema = chunkPF642V5O_cjs.buildGraphQLSchema({
1639
+ const schema = chunkN4GN6Q3V_cjs.buildGraphQLSchema({
1631
1640
  registry: this.registry,
1632
1641
  db: this.db,
1633
1642
  settings: this.settings
@@ -1635,14 +1644,14 @@ var Kyro = class {
1635
1644
  const yoga = graphqlYoga.createYoga({
1636
1645
  schema,
1637
1646
  context: async ({ request }) => {
1638
- const apiKeyRaw = chunkKGJRJ7CU_cjs.extractApiKeyFromRequest(request);
1647
+ const apiKeyRaw = chunk4OCMVGEY_cjs.extractApiKeyFromRequest(request);
1639
1648
  let gqlUser;
1640
1649
  let apiKeyCtx;
1641
1650
  if (apiKeyRaw && this.db) {
1642
- const apiKeyResult = await chunkKGJRJ7CU_cjs.validateApiKey(apiKeyRaw, this.db);
1651
+ const apiKeyResult = await chunk4OCMVGEY_cjs.validateApiKey(apiKeyRaw, this.db);
1643
1652
  if (apiKeyResult.user) {
1644
1653
  gqlUser = apiKeyResult.user;
1645
- apiKeyCtx = chunkKGJRJ7CU_cjs.createApiKeyContext(apiKeyResult);
1654
+ apiKeyCtx = chunk4OCMVGEY_cjs.createApiKeyContext(apiKeyResult);
1646
1655
  }
1647
1656
  }
1648
1657
  const tenantID = options?.tenantID;
@@ -1653,7 +1662,7 @@ var Kyro = class {
1653
1662
  req: request,
1654
1663
  tenantID,
1655
1664
  apiKey: apiKeyCtx,
1656
- relationLoader: new chunkPF642V5O_cjs.RelationLoader({ db: this.db, tenantID, user: gqlUser })
1665
+ relationLoader: new chunkN4GN6Q3V_cjs.RelationLoader({ db: this.db, tenantID, user: gqlUser })
1657
1666
  };
1658
1667
  },
1659
1668
  graphiql: false,
@@ -1684,7 +1693,7 @@ var Kyro = class {
1684
1693
  { status: 400, headers: { "Content-Type": "application/json" } }
1685
1694
  );
1686
1695
  }
1687
- const ctx = await chunkW3GT55TY_cjs.createContext({
1696
+ const ctx = await chunkTQG7G7YI_cjs.createContext({
1688
1697
  db: this.db,
1689
1698
  registry: this.registry,
1690
1699
  req: request,
@@ -1692,7 +1701,7 @@ var Kyro = class {
1692
1701
  tenantID: options?.tenantID,
1693
1702
  settings: this.settings
1694
1703
  });
1695
- const kyroRouter = chunkW3GT55TY_cjs.createKyroServer(ctx);
1704
+ const kyroRouter = chunkTQG7G7YI_cjs.createKyroServer(ctx);
1696
1705
  const collectionRouter = kyroRouter[slug];
1697
1706
  if (!collectionRouter) {
1698
1707
  return new Response(
@@ -1770,7 +1779,7 @@ var Kyro = class {
1770
1779
  return null;
1771
1780
  }
1772
1781
  const defaultVerifyToken = async (token) => {
1773
- const result = await chunkKGJRJ7CU_cjs.validateApiKey(token, this.db);
1782
+ const result = await chunk4OCMVGEY_cjs.validateApiKey(token, this.db);
1774
1783
  if (!result.valid) throw new Error(result.error || "Invalid API key");
1775
1784
  if (!result.user) throw new Error("API key has no associated user");
1776
1785
  return result.user;
@@ -1798,7 +1807,7 @@ var Kyro = class {
1798
1807
  function createKyro(config) {
1799
1808
  return new Kyro(config);
1800
1809
  }
1801
- var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-OVZO4KB6.cjs', document.baseURI).href)));
1810
+ var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-E4JZ73FY.cjs', document.baseURI).href)));
1802
1811
  var modPath = "node:sqlite";
1803
1812
  var { DatabaseSync } = _require(modPath);
1804
1813
  function flattenFields(fields) {
@@ -2749,5 +2758,5 @@ exports.validateCollection = validateCollection;
2749
2758
  exports.validateConfig = validateConfig;
2750
2759
  exports.validateFields = validateFields;
2751
2760
  exports.validateGlobal = validateGlobal;
2752
- //# sourceMappingURL=chunk-OVZO4KB6.cjs.map
2753
- //# sourceMappingURL=chunk-OVZO4KB6.cjs.map
2761
+ //# sourceMappingURL=chunk-E4JZ73FY.cjs.map
2762
+ //# sourceMappingURL=chunk-E4JZ73FY.cjs.map