Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements

- Add comprehensive database migrations (001-024) for schema evolution
- Enhance API schema with expanded type definitions and resolvers
- Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth
- Implement new services: AI optimization, billing, blockchain, compliance, marketplace
- Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage)
- Update Crossplane provider with enhanced VM management capabilities
- Add comprehensive test suite for API endpoints and services
- Update frontend components with improved GraphQL subscriptions and real-time updates
- Enhance security configurations and headers (CSP, CORS, etc.)
- Update documentation and configuration files
- Add new CI/CD workflows and validation scripts
- Implement design system improvements and UI enhancements
This commit is contained in:
defiQUG
2025-12-12 18:01:35 -08:00
parent e01131efaf
commit 9daf1fd378
968 changed files with 160890 additions and 1092 deletions
+3 -1
View File
@@ -1,9 +1,11 @@
import { makeExecutableSchema } from '@graphql-tools/schema'
import { mergeResolvers } from '@graphql-tools/merge'
import { typeDefs } from './typeDefs'
import { resolvers } from './resolvers'
import { subscriptionResolvers } from './subscriptions'
export const schema = makeExecutableSchema({
typeDefs,
resolvers,
resolvers: mergeResolvers([resolvers, subscriptionResolvers]),
})
File diff suppressed because it is too large Load Diff
+64
View File
@@ -0,0 +1,64 @@
/**
* GraphQL Subscription implementations
* These are the actual subscription resolvers that publish events
*/
import { PubSub } from 'graphql-subscriptions'
import { Context } from '../types/context'
// Create a simple in-memory PubSub instance
// In production, use Redis or another pub/sub system
export const pubsub = new PubSub()
// Event channels
export const EVENTS = {
RESOURCE_CREATED: 'RESOURCE_CREATED',
RESOURCE_UPDATED: 'RESOURCE_UPDATED',
RESOURCE_DELETED: 'RESOURCE_DELETED',
} as const
// Helper functions to publish events
export function publishResourceCreated(resource: any) {
pubsub.publish(EVENTS.RESOURCE_CREATED, {
resourceCreated: resource,
})
}
export function publishResourceUpdated(resourceId: string, resource: any) {
pubsub.publish(EVENTS.RESOURCE_UPDATED, {
resourceUpdated: resource,
})
}
export function publishResourceDeleted(resourceId: string) {
pubsub.publish(EVENTS.RESOURCE_DELETED, {
resourceDeleted: resourceId,
})
}
// Subscription resolvers
export const subscriptionResolvers = {
Subscription: {
resourceCreated: {
subscribe: () => pubsub.asyncIterator([EVENTS.RESOURCE_CREATED]),
},
resourceUpdated: {
subscribe: (_: unknown, args: { id: string }) => {
return pubsub.asyncIterator([EVENTS.RESOURCE_UPDATED])
},
resolve: (payload: any) => {
// Filter by id if provided
return payload.resourceUpdated
},
},
resourceDeleted: {
subscribe: (_: unknown, args: { id: string }) => {
return pubsub.asyncIterator([EVENTS.RESOURCE_DELETED])
},
resolve: (payload: any) => {
return payload.resourceDeleted
},
},
},
}
File diff suppressed because it is too large Load Diff