@morojs/moro 1.6.6 → 1.6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +20 -4
  2. package/dist/core/auth/morojs-adapter.js +17 -14
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-sources.js +44 -0
  5. package/dist/core/config/config-sources.js.map +1 -1
  6. package/dist/core/database/adapters/drizzle.js +5 -5
  7. package/dist/core/database/adapters/drizzle.js.map +1 -1
  8. package/dist/core/database/adapters/mongodb.js +5 -1
  9. package/dist/core/database/adapters/mongodb.js.map +1 -1
  10. package/dist/core/database/adapters/mysql.js +5 -1
  11. package/dist/core/database/adapters/mysql.js.map +1 -1
  12. package/dist/core/database/adapters/postgresql.js +1 -1
  13. package/dist/core/database/adapters/postgresql.js.map +1 -1
  14. package/dist/core/database/adapters/redis.js +2 -2
  15. package/dist/core/database/adapters/redis.js.map +1 -1
  16. package/dist/core/database/adapters/sqlite.js +5 -1
  17. package/dist/core/database/adapters/sqlite.js.map +1 -1
  18. package/dist/core/docs/index.js.map +1 -1
  19. package/dist/core/docs/simple-docs.js +2 -1
  20. package/dist/core/docs/simple-docs.js.map +1 -1
  21. package/dist/core/docs/swagger-ui.js +1 -0
  22. package/dist/core/docs/swagger-ui.js.map +1 -1
  23. package/dist/core/docs/zod-to-openapi.js +4 -0
  24. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  25. package/dist/core/events/event-bus.d.ts +1 -1
  26. package/dist/core/events/event-bus.js +1 -0
  27. package/dist/core/events/event-bus.js.map +1 -1
  28. package/dist/core/framework.d.ts +1 -1
  29. package/dist/core/framework.js +3 -1
  30. package/dist/core/framework.js.map +1 -1
  31. package/dist/core/graphql/adapter.d.ts +73 -0
  32. package/dist/core/graphql/adapter.js +2 -0
  33. package/dist/core/graphql/adapter.js.map +1 -0
  34. package/dist/core/graphql/adapters/graphql-js-adapter.d.ts +26 -0
  35. package/dist/core/graphql/adapters/graphql-js-adapter.js +229 -0
  36. package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -0
  37. package/dist/core/graphql/core.d.ts +60 -0
  38. package/dist/core/graphql/core.js +165 -0
  39. package/dist/core/graphql/core.js.map +1 -0
  40. package/dist/core/graphql/index.d.ts +4 -0
  41. package/dist/core/graphql/index.js +4 -0
  42. package/dist/core/graphql/index.js.map +1 -0
  43. package/dist/core/graphql/loader.d.ts +9 -0
  44. package/dist/core/graphql/loader.js +32 -0
  45. package/dist/core/graphql/loader.js.map +1 -0
  46. package/dist/core/graphql/types.d.ts +211 -0
  47. package/dist/core/graphql/types.js +2 -0
  48. package/dist/core/graphql/types.js.map +1 -0
  49. package/dist/core/http/http-server.js +31 -9
  50. package/dist/core/http/http-server.js.map +1 -1
  51. package/dist/core/http/utils/uws-worker-clustering.d.ts +28 -0
  52. package/dist/core/http/utils/uws-worker-clustering.js +313 -0
  53. package/dist/core/http/utils/uws-worker-clustering.js.map +1 -0
  54. package/dist/core/http/uws-http-server.d.ts +3 -1
  55. package/dist/core/http/uws-http-server.js +37 -8
  56. package/dist/core/http/uws-http-server.js.map +1 -1
  57. package/dist/core/jobs/cron-parser.d.ts +62 -0
  58. package/dist/core/jobs/cron-parser.js +239 -0
  59. package/dist/core/jobs/cron-parser.js.map +1 -0
  60. package/dist/core/jobs/index.d.ts +12 -0
  61. package/dist/core/jobs/index.js +9 -0
  62. package/dist/core/jobs/index.js.map +1 -0
  63. package/dist/core/jobs/job-executor.d.ts +134 -0
  64. package/dist/core/jobs/job-executor.js +413 -0
  65. package/dist/core/jobs/job-executor.js.map +1 -0
  66. package/dist/core/jobs/job-scheduler.d.ts +214 -0
  67. package/dist/core/jobs/job-scheduler.js +551 -0
  68. package/dist/core/jobs/job-scheduler.js.map +1 -0
  69. package/dist/core/jobs/job-state-manager.d.ts +158 -0
  70. package/dist/core/jobs/job-state-manager.js +444 -0
  71. package/dist/core/jobs/job-state-manager.js.map +1 -0
  72. package/dist/core/jobs/leader-election.d.ts +124 -0
  73. package/dist/core/jobs/leader-election.js +481 -0
  74. package/dist/core/jobs/leader-election.js.map +1 -0
  75. package/dist/core/jobs/types.d.ts +151 -0
  76. package/dist/core/jobs/types.js +4 -0
  77. package/dist/core/jobs/types.js.map +1 -0
  78. package/dist/core/jobs/utils.d.ts +95 -0
  79. package/dist/core/jobs/utils.js +258 -0
  80. package/dist/core/jobs/utils.js.map +1 -0
  81. package/dist/core/logger/filters.js +2 -0
  82. package/dist/core/logger/filters.js.map +1 -1
  83. package/dist/core/logger/logger.js +7 -3
  84. package/dist/core/logger/logger.js.map +1 -1
  85. package/dist/core/logger/outputs.js +2 -0
  86. package/dist/core/logger/outputs.js.map +1 -1
  87. package/dist/core/middleware/built-in/auth/helpers.js +1 -1
  88. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
  89. package/dist/core/middleware/built-in/auth/jwt-helpers.js +1 -1
  90. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
  91. package/dist/core/middleware/built-in/auth/providers.js +1 -1
  92. package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
  93. package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -3
  94. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
  95. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js +1 -0
  96. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  97. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js +1 -1
  98. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
  99. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.d.ts +8 -0
  100. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js +100 -7
  101. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
  102. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.d.ts +6 -0
  103. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js +97 -13
  104. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
  105. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js +1 -1
  106. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
  107. package/dist/core/middleware/built-in/cookie/hook.d.ts +1 -1
  108. package/dist/core/middleware/built-in/cookie/hook.js +2 -2
  109. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
  110. package/dist/core/middleware/built-in/csrf/core.js +1 -0
  111. package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
  112. package/dist/core/middleware/built-in/graphql/core.d.ts +11 -0
  113. package/dist/core/middleware/built-in/graphql/core.js +24 -0
  114. package/dist/core/middleware/built-in/graphql/core.js.map +1 -0
  115. package/dist/core/middleware/built-in/graphql/helpers.d.ts +69 -0
  116. package/dist/core/middleware/built-in/graphql/helpers.js +187 -0
  117. package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -0
  118. package/dist/core/middleware/built-in/graphql/hook.d.ts +7 -0
  119. package/dist/core/middleware/built-in/graphql/hook.js +78 -0
  120. package/dist/core/middleware/built-in/graphql/hook.js.map +1 -0
  121. package/dist/core/middleware/built-in/graphql/index.d.ts +5 -0
  122. package/dist/core/middleware/built-in/graphql/index.js +5 -0
  123. package/dist/core/middleware/built-in/graphql/index.js.map +1 -0
  124. package/dist/core/middleware/built-in/graphql/middleware.d.ts +7 -0
  125. package/dist/core/middleware/built-in/graphql/middleware.js +54 -0
  126. package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -0
  127. package/dist/core/middleware/built-in/graphql/subscriptions.d.ts +20 -0
  128. package/dist/core/middleware/built-in/graphql/subscriptions.js +37 -0
  129. package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -0
  130. package/dist/core/middleware/built-in/index.d.ts +2 -1
  131. package/dist/core/middleware/built-in/index.js +3 -0
  132. package/dist/core/middleware/built-in/index.js.map +1 -1
  133. package/dist/core/middleware/built-in/validation/core.js +4 -2
  134. package/dist/core/middleware/built-in/validation/core.js.map +1 -1
  135. package/dist/core/middleware/index.js +1 -0
  136. package/dist/core/middleware/index.js.map +1 -1
  137. package/dist/core/modules/auto-discovery.js +5 -4
  138. package/dist/core/modules/auto-discovery.js.map +1 -1
  139. package/dist/core/modules/modules.js.map +1 -1
  140. package/dist/core/networking/adapters/socketio-adapter.js +1 -1
  141. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  142. package/dist/core/networking/adapters/uws-adapter.js +7 -2
  143. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  144. package/dist/core/networking/adapters/ws-adapter.js +5 -2
  145. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  146. package/dist/core/networking/websocket-manager.js +2 -0
  147. package/dist/core/networking/websocket-manager.js.map +1 -1
  148. package/dist/core/pooling/object-pool-manager.js +3 -0
  149. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  150. package/dist/core/routing/app-integration.d.ts +3 -3
  151. package/dist/core/routing/app-integration.js +1 -1
  152. package/dist/core/routing/app-integration.js.map +1 -1
  153. package/dist/core/routing/index.d.ts +1 -1
  154. package/dist/core/routing/index.js +1 -1
  155. package/dist/core/routing/index.js.map +1 -1
  156. package/dist/core/runtime/base-adapter.js +3 -3
  157. package/dist/core/runtime/base-adapter.js.map +1 -1
  158. package/dist/core/runtime/cloudflare-workers-adapter.js +1 -1
  159. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  160. package/dist/core/runtime/node-adapter.d.ts +1 -1
  161. package/dist/core/runtime/node-adapter.js +7 -4
  162. package/dist/core/runtime/node-adapter.js.map +1 -1
  163. package/dist/core/runtime/vercel-edge-adapter.js +1 -0
  164. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  165. package/dist/core/utilities/circuit-breaker.d.ts +9 -2
  166. package/dist/core/utilities/circuit-breaker.js +32 -3
  167. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  168. package/dist/core/utilities/container.js +6 -0
  169. package/dist/core/utilities/container.js.map +1 -1
  170. package/dist/core/utilities/hooks.js +4 -0
  171. package/dist/core/utilities/hooks.js.map +1 -1
  172. package/dist/core/validation/index.js +6 -1
  173. package/dist/core/validation/index.js.map +1 -1
  174. package/dist/index.d.ts +6 -0
  175. package/dist/index.js +5 -0
  176. package/dist/index.js.map +1 -1
  177. package/dist/moro.d.ts +154 -1
  178. package/dist/moro.js +588 -11
  179. package/dist/moro.js.map +1 -1
  180. package/dist/types/config.d.ts +28 -0
  181. package/dist/types/core.d.ts +1 -0
  182. package/dist/types/events.d.ts +1 -1
  183. package/dist/types/events.js +1 -0
  184. package/dist/types/events.js.map +1 -1
  185. package/dist/types/module.d.ts +2 -2
  186. package/package.json +21 -1
@@ -2,11 +2,17 @@ import { CDNAdapter } from '../../../../../../types/cdn.js';
2
2
  export declare class CloudflareCDNAdapter implements CDNAdapter {
3
3
  private apiToken;
4
4
  private zoneId;
5
+ private cacheControlMaxAge;
6
+ private email?;
5
7
  constructor(options: {
6
8
  apiToken: string;
7
9
  zoneId: string;
10
+ email?: string;
11
+ cacheControlMaxAge?: number;
8
12
  });
9
13
  purge(urls: string[]): Promise<void>;
14
+ purgeEverything(): Promise<void>;
15
+ purgeByTags(tags: string[]): Promise<void>;
10
16
  prefetch(urls: string[]): Promise<void>;
11
17
  getStats(): Promise<any>;
12
18
  setHeaders(response: any): void;
@@ -3,12 +3,20 @@ const logger = createFrameworkLogger('CloudflareCDNAdapter');
3
3
  export class CloudflareCDNAdapter {
4
4
  apiToken;
5
5
  zoneId;
6
+ cacheControlMaxAge;
7
+ email;
6
8
  constructor(options) {
7
9
  this.apiToken = options.apiToken;
8
10
  this.zoneId = options.zoneId;
11
+ this.email = options.email;
12
+ this.cacheControlMaxAge = options.cacheControlMaxAge ?? 3600;
9
13
  logger.info('Cloudflare CDN adapter initialized', 'Cloudflare');
10
14
  }
11
15
  async purge(urls) {
16
+ if (!urls || urls.length === 0) {
17
+ logger.warn('No URLs provided for purge', 'Cloudflare');
18
+ return;
19
+ }
12
20
  try {
13
21
  const response = await this.cfRequest('POST', `/zones/${this.zoneId}/purge_cache`, {
14
22
  files: urls,
@@ -17,7 +25,8 @@ export class CloudflareCDNAdapter {
17
25
  logger.info(`Cloudflare cache purged: ${urls.length} URLs`, 'Cloudflare');
18
26
  }
19
27
  else {
20
- throw new Error('Cloudflare purge failed');
28
+ const errorMessages = response.errors?.map(e => e.message).join(', ') || 'Unknown error';
29
+ throw new Error(`Cloudflare purge failed: ${errorMessages}`);
21
30
  }
22
31
  }
23
32
  catch (error) {
@@ -25,22 +34,79 @@ export class CloudflareCDNAdapter {
25
34
  throw error;
26
35
  }
27
36
  }
37
+ async purgeEverything() {
38
+ try {
39
+ const response = await this.cfRequest('POST', `/zones/${this.zoneId}/purge_cache`, {
40
+ purge_everything: true,
41
+ });
42
+ if (response.success) {
43
+ logger.info('Cloudflare entire cache purged', 'Cloudflare');
44
+ }
45
+ else {
46
+ const errorMessages = response.errors?.map(e => e.message).join(', ') || 'Unknown error';
47
+ throw new Error(`Cloudflare purge everything failed: ${errorMessages}`);
48
+ }
49
+ }
50
+ catch (error) {
51
+ logger.error('Cloudflare purge everything failed', 'Cloudflare', { error });
52
+ throw error;
53
+ }
54
+ }
55
+ async purgeByTags(tags) {
56
+ if (!tags || tags.length === 0) {
57
+ logger.warn('No tags provided for purge', 'Cloudflare');
58
+ return;
59
+ }
60
+ try {
61
+ const response = await this.cfRequest('POST', `/zones/${this.zoneId}/purge_cache`, {
62
+ tags: tags,
63
+ });
64
+ if (response.success) {
65
+ logger.info(`Cloudflare cache purged by tags: ${tags.join(', ')}`, 'Cloudflare');
66
+ }
67
+ else {
68
+ const errorMessages = response.errors?.map(e => e.message).join(', ') || 'Unknown error';
69
+ throw new Error(`Cloudflare purge by tags failed: ${errorMessages}`);
70
+ }
71
+ }
72
+ catch (error) {
73
+ logger.error('Cloudflare purge by tags failed', 'Cloudflare', { error, tags });
74
+ throw error;
75
+ }
76
+ }
28
77
  async prefetch(urls) {
78
+ if (!urls || urls.length === 0) {
79
+ logger.warn('No URLs provided for prefetch', 'Cloudflare');
80
+ return;
81
+ }
82
+ logger.info(`Cloudflare prefetch requested for ${urls.length} URLs. Note: Cloudflare does not have a direct prefetch API. Consider using Cache Reserve or Workers for cache warming.`, 'Cloudflare');
29
83
  try {
30
- logger.debug(`Cloudflare prefetch requested for ${urls.length} URLs`, 'Cloudflare');
31
- // Cloudflare doesn't have direct prefetch, but we can use preload links
32
84
  for (const url of urls) {
33
- // Implementation would depend on Cloudflare Workers or edge functions
85
+ if (!url) {
86
+ continue;
87
+ }
88
+ await fetch(url, {
89
+ method: 'GET',
90
+ headers: {
91
+ 'User-Agent': 'MoroJS-Cloudflare-Prefetch/1.0',
92
+ },
93
+ });
34
94
  }
95
+ logger.info(`Cloudflare prefetch completed for ${urls.length} URLs`, 'Cloudflare');
35
96
  }
36
97
  catch (error) {
37
98
  logger.error('Cloudflare prefetch failed', 'Cloudflare', { error, urls });
99
+ throw error;
38
100
  }
39
101
  }
40
102
  async getStats() {
41
103
  try {
42
104
  const response = await this.cfRequest('GET', `/zones/${this.zoneId}/analytics/dashboard`);
43
- return response.result;
105
+ if (response.success) {
106
+ return response.result;
107
+ }
108
+ logger.warn('Failed to get Cloudflare stats', 'Cloudflare', { errors: response.errors });
109
+ return null;
44
110
  }
45
111
  catch (error) {
46
112
  logger.error('Cloudflare stats failed', 'Cloudflare', { error });
@@ -48,19 +114,37 @@ export class CloudflareCDNAdapter {
48
114
  }
49
115
  }
50
116
  setHeaders(response) {
51
- response.setHeader('Cache-Control', 'public, max-age=3600');
52
- response.setHeader('CF-Cache-Status', 'DYNAMIC');
53
- response.setHeader('CF-Ray', `${Math.random().toString(36)}-DFW`);
117
+ if (!response || typeof response.setHeader !== 'function') {
118
+ logger.warn('Invalid response object provided to setHeaders', 'Cloudflare');
119
+ return;
120
+ }
121
+ response.setHeader('Cache-Control', `public, max-age=${this.cacheControlMaxAge}`);
122
+ response.setHeader('X-CDN-Provider', 'Cloudflare');
54
123
  }
55
124
  async cfRequest(method, endpoint, data) {
56
125
  const url = `https://api.cloudflare.com/client/v4${endpoint}`;
57
126
  try {
58
- // In a real implementation, you'd use fetch or axios
59
- const response = {
60
- success: true,
61
- result: data || {},
127
+ const headers = {
128
+ Authorization: `Bearer ${this.apiToken}`,
129
+ 'Content-Type': 'application/json',
62
130
  };
63
- return response;
131
+ if (this.email) {
132
+ headers['X-Auth-Email'] = this.email;
133
+ }
134
+ const options = {
135
+ method,
136
+ headers,
137
+ };
138
+ if (data && (method === 'POST' || method === 'PUT' || method === 'PATCH')) {
139
+ options.body = JSON.stringify(data);
140
+ }
141
+ const response = await fetch(url, options);
142
+ if (!response.ok) {
143
+ const errorText = await response.text();
144
+ throw new Error(`Cloudflare API request failed: ${response.status} ${errorText}`);
145
+ }
146
+ const result = (await response.json());
147
+ return result;
64
148
  }
65
149
  catch (error) {
66
150
  logger.error('Cloudflare API request failed', 'Cloudflare', {
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../../../../../../src/core/middleware/built-in/cdn/adapters/cdn/cloudflare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../../../../../../src/core/middleware/built-in/cdn/adapters/cdn/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export class CloudFrontCDNAdapter {
21
21
  this.cloudfront = new AWS.default.CloudFront();
22
22
  logger.info('CloudFront CDN adapter initialized', 'CloudFront');
23
23
  }
24
- catch (error) {
24
+ catch {
25
25
  logger.error('AWS SDK not available', 'CloudFront');
26
26
  throw new Error('AWS SDK not installed. Run: npm install aws-sdk');
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cloudfront.js","sourceRoot":"","sources":["../../../../../../../src/core/middleware/built-in/cdn/adapters/cdn/cloudfront.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudfront.js","sourceRoot":"","sources":["../../../../../../../src/core/middleware/built-in/cdn/adapters/cdn/cloudfront.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,4 @@ export interface CookieConfig {
17
17
  * }));
18
18
  * ```
19
19
  */
20
- export declare const cookie: (config?: CookieConfig) => MiddlewareInterface;
20
+ export declare const cookie: (_config?: CookieConfig) => MiddlewareInterface;
@@ -15,7 +15,7 @@ const logger = createFrameworkLogger('CookieMiddleware');
15
15
  * }));
16
16
  * ```
17
17
  */
18
- export const cookie = (config = {}) => ({
18
+ export const cookie = (_config = {}) => ({
19
19
  name: 'cookie',
20
20
  version: '1.0.0',
21
21
  metadata: {
@@ -24,7 +24,7 @@ export const cookie = (config = {}) => ({
24
24
  description: 'Cookie parsing and setting middleware with security features',
25
25
  author: 'MoroJS Team',
26
26
  },
27
- install: async (hooks, middlewareOptions = {}) => {
27
+ install: async (hooks, _middlewareOptions = {}) => {
28
28
  logger.debug('Installing cookie middleware', 'Installation');
29
29
  const cookieCore = new CookieCore();
30
30
  hooks.before('request', async (context) => {
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/cookie/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAsB,MAAM,WAAW,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;AAOzD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,SAAuB,EAAE,EAAuB,EAAE,CAAC,CAAC;IACzE,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,8DAA8D;QAC3E,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,oBAAyB,EAAE,EAAE,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAEpC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAe,CAAC;YAEpC,6BAA6B;YAC7B,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE1D,iCAAiC;YACjC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,UAAyB,EAAE,EAAE,EAAE;gBACxE,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC;YAEF,GAAG,CAAC,WAAW,GAAG,CAAC,IAAY,EAAE,UAAyB,EAAE,EAAE,EAAE;gBAC9D,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3C,OAAO,GAAG,CAAC;YACb,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/cookie/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAsB,MAAM,WAAW,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;AAOzD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAwB,EAAE,EAAuB,EAAE,CAAC,CAAC;IAC1E,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,8DAA8D;QAC3E,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,qBAA0B,EAAE,EAAE,EAAE;QAC1D,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAEpC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAe,CAAC;YAEpC,6BAA6B;YAC7B,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE1D,iCAAiC;YACjC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,UAAyB,EAAE,EAAE,EAAE;gBACxE,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC;YAEF,GAAG,CAAC,WAAW,GAAG,CAAC,IAAY,EAAE,UAAyB,EAAE,EAAE,EAAE;gBAC9D,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3C,OAAO,GAAG,CAAC;YACb,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  // CSRF Core - Reusable CSRF protection logic
2
2
  import crypto from 'crypto';
3
3
  import { createFrameworkLogger } from '../../../logger/index.js';
4
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
5
  const logger = createFrameworkLogger('CSRFCore');
5
6
  // ===== Core Logic =====
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/csrf/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/csrf/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { GraphQLCore } from '../../../graphql/core.js';
2
+ import type { GraphQLOptions } from '../../../graphql/types.js';
3
+ /**
4
+ * Get or create shared GraphQL core
5
+ */
6
+ export declare function getSharedGraphQLCore(options?: GraphQLOptions): GraphQLCore | null;
7
+ /**
8
+ * Reset shared GraphQL core (for testing)
9
+ */
10
+ export declare function resetSharedGraphQLCore(): void;
11
+ export { GraphQLCore };
@@ -0,0 +1,24 @@
1
+ // GraphQL Core - Shared instance and utilities
2
+ import { GraphQLCore } from '../../../graphql/core.js';
3
+ /**
4
+ * Shared GraphQL core instance
5
+ */
6
+ let sharedGraphQLCore = null;
7
+ /**
8
+ * Get or create shared GraphQL core
9
+ */
10
+ export function getSharedGraphQLCore(options) {
11
+ if (options && !sharedGraphQLCore) {
12
+ sharedGraphQLCore = new GraphQLCore(options);
13
+ }
14
+ return sharedGraphQLCore;
15
+ }
16
+ /**
17
+ * Reset shared GraphQL core (for testing)
18
+ */
19
+ export function resetSharedGraphQLCore() {
20
+ sharedGraphQLCore = null;
21
+ }
22
+ // Re-export core
23
+ export { GraphQLCore };
24
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/core.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD;;GAEG;AACH,IAAI,iBAAiB,GAAuB,IAAI,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,IAAI,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClC,iBAAiB,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { GraphQLSchema } from 'graphql';
2
+ /**
3
+ * Check if Pothos is available
4
+ */
5
+ export declare function isPothosAvailable(): boolean;
6
+ /**
7
+ * Create Pothos schema builder instance
8
+ * Users should use this to create their schema builder
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { createPothosBuilder } from '@morojs/moro';
13
+ *
14
+ * const builder = createPothosBuilder({
15
+ * plugins: ['relay', 'errors'],
16
+ * });
17
+ *
18
+ * builder.queryType({
19
+ * fields: (t) => ({
20
+ * hello: t.string({
21
+ * resolve: () => 'Hello World!'
22
+ * })
23
+ * })
24
+ * });
25
+ *
26
+ * const schema = builder.toSchema();
27
+ * ```
28
+ */
29
+ export declare function createPothosBuilder(options?: any): Promise<any>;
30
+ /**
31
+ * Helper to check if value is a Pothos schema
32
+ */
33
+ export declare function isPothosSchema(value: any): boolean;
34
+ /**
35
+ * Extract GraphQL schema from Pothos builder
36
+ */
37
+ export declare function pothosToSchema(pothosBuilder: any): GraphQLSchema;
38
+ /**
39
+ * GraphQL query complexity calculator
40
+ * Helps prevent expensive queries from overloading the server
41
+ *
42
+ * Note: This is a basic implementation. For production use, consider
43
+ * installing graphql-query-complexity package for full features.
44
+ */
45
+ export declare function createComplexityPlugin(options?: {
46
+ maximumComplexity: number;
47
+ onComplete?: (complexity: number) => void;
48
+ estimators?: any[];
49
+ }): any;
50
+ /**
51
+ * GraphQL depth limit validator
52
+ * Prevents deeply nested queries
53
+ *
54
+ * Note: This is a basic implementation. For production use, consider
55
+ * installing graphql-depth-limit package for full features.
56
+ */
57
+ export declare function createDepthLimitPlugin(options?: {
58
+ maxDepth: number;
59
+ callback?: (depth: number) => void;
60
+ }): any;
61
+ /**
62
+ * DataLoader helper for batching
63
+ * Prevents N+1 query problems
64
+ */
65
+ export declare function createDataLoader<K, V>(batchFn: (keys: readonly K[]) => Promise<(V | Error)[]>, options?: {
66
+ batch?: boolean;
67
+ maxBatchSize?: number;
68
+ cache?: boolean;
69
+ }): Promise<any>;
@@ -0,0 +1,187 @@
1
+ // GraphQL Helpers - Pothos integration and utilities
2
+ import { createFrameworkLogger } from '../../../logger/index.js';
3
+ import { isPackageAvailable } from '../../../utilities/package-utils.js';
4
+ const logger = createFrameworkLogger('GraphQLHelpers');
5
+ /**
6
+ * Check if Pothos is available
7
+ */
8
+ export function isPothosAvailable() {
9
+ return isPackageAvailable('@pothos/core');
10
+ }
11
+ /**
12
+ * Create Pothos schema builder instance
13
+ * Users should use this to create their schema builder
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { createPothosBuilder } from '@morojs/moro';
18
+ *
19
+ * const builder = createPothosBuilder({
20
+ * plugins: ['relay', 'errors'],
21
+ * });
22
+ *
23
+ * builder.queryType({
24
+ * fields: (t) => ({
25
+ * hello: t.string({
26
+ * resolve: () => 'Hello World!'
27
+ * })
28
+ * })
29
+ * });
30
+ *
31
+ * const schema = builder.toSchema();
32
+ * ```
33
+ */
34
+ export async function createPothosBuilder(options = {}) {
35
+ if (!isPothosAvailable()) {
36
+ throw new Error('Pothos support requires @pothos/core to be installed.\n' +
37
+ 'Install it with: npm install @pothos/core\n' +
38
+ 'For TypeScript-first GraphQL, also consider: @pothos/plugin-relay @pothos/plugin-errors');
39
+ }
40
+ try {
41
+ // Use dynamic import for ESM compatibility
42
+ const pothosModule = await import('@pothos/core');
43
+ const SchemaBuilder = pothosModule.default;
44
+ logger.info('Creating Pothos schema builder', 'Pothos', { plugins: options.plugins || [] });
45
+ return new SchemaBuilder(options);
46
+ }
47
+ catch (error) {
48
+ logger.error('Failed to create Pothos schema builder', 'Pothos', { error });
49
+ throw error;
50
+ }
51
+ }
52
+ /**
53
+ * Helper to check if value is a Pothos schema
54
+ */
55
+ export function isPothosSchema(value) {
56
+ return value && typeof value === 'object' && typeof value.toSchema === 'function';
57
+ }
58
+ /**
59
+ * Extract GraphQL schema from Pothos builder
60
+ */
61
+ export function pothosToSchema(pothosBuilder) {
62
+ if (!pothosBuilder) {
63
+ throw new Error('Pothos builder is required');
64
+ }
65
+ if (typeof pothosBuilder.toSchema !== 'function') {
66
+ throw new Error('Invalid Pothos builder - missing toSchema() method');
67
+ }
68
+ return pothosBuilder.toSchema();
69
+ }
70
+ /**
71
+ * GraphQL query complexity calculator
72
+ * Helps prevent expensive queries from overloading the server
73
+ *
74
+ * Note: This is a basic implementation. For production use, consider
75
+ * installing graphql-query-complexity package for full features.
76
+ */
77
+ export function createComplexityPlugin(options = { maximumComplexity: 1000 }) {
78
+ logger.info('Creating query complexity plugin', 'Complexity', {
79
+ maxComplexity: options.maximumComplexity,
80
+ });
81
+ return {
82
+ name: 'complexity',
83
+ requestDidStart: () => ({
84
+ didResolveOperation({ document, operationName }) {
85
+ // Basic complexity check - counts fields in query
86
+ let complexity = 0;
87
+ const visit = (node) => {
88
+ if (node.kind === 'Field') {
89
+ complexity++;
90
+ }
91
+ if (node.selectionSet) {
92
+ node.selectionSet.selections.forEach(visit);
93
+ }
94
+ };
95
+ if (document.definitions) {
96
+ document.definitions.forEach((def) => {
97
+ if (def.selectionSet) {
98
+ def.selectionSet.selections.forEach(visit);
99
+ }
100
+ });
101
+ }
102
+ logger.debug('Query complexity calculated', 'Complexity', {
103
+ operationName,
104
+ complexity,
105
+ maxComplexity: options.maximumComplexity,
106
+ });
107
+ if (options.onComplete) {
108
+ options.onComplete(complexity);
109
+ }
110
+ if (complexity > options.maximumComplexity) {
111
+ throw new Error(`Query complexity of ${complexity} exceeds maximum allowed complexity of ${options.maximumComplexity}`);
112
+ }
113
+ },
114
+ }),
115
+ };
116
+ }
117
+ /**
118
+ * GraphQL depth limit validator
119
+ * Prevents deeply nested queries
120
+ *
121
+ * Note: This is a basic implementation. For production use, consider
122
+ * installing graphql-depth-limit package for full features.
123
+ */
124
+ export function createDepthLimitPlugin(options = { maxDepth: 10 }) {
125
+ logger.info('Creating depth limit plugin', 'DepthLimit', {
126
+ maxDepth: options.maxDepth,
127
+ });
128
+ return {
129
+ name: 'depthLimit',
130
+ requestDidStart: () => ({
131
+ didResolveOperation({ document, operationName }) {
132
+ // Basic depth check - traverses query tree
133
+ let maxDepthFound = 0;
134
+ const calculateDepth = (node, currentDepth = 0) => {
135
+ if (!node)
136
+ return currentDepth;
137
+ let depth = currentDepth;
138
+ if (node.kind === 'Field') {
139
+ depth = currentDepth + 1;
140
+ maxDepthFound = Math.max(maxDepthFound, depth);
141
+ }
142
+ if (node.selectionSet?.selections) {
143
+ for (const selection of node.selectionSet.selections) {
144
+ calculateDepth(selection, depth);
145
+ }
146
+ }
147
+ return depth;
148
+ };
149
+ if (document.definitions) {
150
+ document.definitions.forEach((def) => {
151
+ if (def.selectionSet) {
152
+ def.selectionSet.selections.forEach((selection) => {
153
+ calculateDepth(selection, 0);
154
+ });
155
+ }
156
+ });
157
+ }
158
+ logger.debug('Query depth calculated', 'DepthLimit', {
159
+ operationName,
160
+ depth: maxDepthFound,
161
+ maxDepth: options.maxDepth,
162
+ });
163
+ if (options.callback) {
164
+ options.callback(maxDepthFound);
165
+ }
166
+ if (maxDepthFound > options.maxDepth) {
167
+ throw new Error(`Query depth of ${maxDepthFound} exceeds maximum allowed depth of ${options.maxDepth}`);
168
+ }
169
+ },
170
+ }),
171
+ };
172
+ }
173
+ /**
174
+ * DataLoader helper for batching
175
+ * Prevents N+1 query problems
176
+ */
177
+ export async function createDataLoader(batchFn, options = {}) {
178
+ if (!isPackageAvailable('dataloader')) {
179
+ throw new Error('DataLoader support requires dataloader package.\n' +
180
+ 'Install it with: npm install dataloader');
181
+ }
182
+ // Use dynamic import for ESM compatibility
183
+ const DataLoaderModule = await import('dataloader');
184
+ const DataLoader = DataLoaderModule.default;
185
+ return new DataLoader(batchFn, options);
186
+ }
187
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/helpers.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,MAAM,MAAM,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAe,EAAE;IACzD,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,yDAAyD;YACvD,6CAA6C;YAC7C,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAU;IACvC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,aAAkB;IAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAII,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAE/B,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,YAAY,EAAE;QAC5D,aAAa,EAAE,OAAO,CAAC,iBAAiB;KACzC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;YACtB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAO;gBAClD,kDAAkD;gBAClD,IAAI,UAAU,GAAG,CAAC,CAAC;gBAEnB,MAAM,KAAK,GAAG,CAAC,IAAS,EAAE,EAAE;oBAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC1B,UAAU,EAAE,CAAC;oBACf,CAAC;oBACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACzB,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;wBACxC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;4BACrB,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC7C,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,YAAY,EAAE;oBACxD,aAAa;oBACb,UAAU;oBACV,aAAa,EAAE,OAAO,CAAC,iBAAiB;iBACzC,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBACjC,CAAC;gBAED,IAAI,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,0CAA0C,OAAO,CAAC,iBAAiB,EAAE,CACvG,CAAC;gBACJ,CAAC;YACH,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAGI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAEpB,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,YAAY,EAAE;QACvD,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;YACtB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAO;gBAClD,2CAA2C;gBAC3C,IAAI,aAAa,GAAG,CAAC,CAAC;gBAEtB,MAAM,cAAc,GAAG,CAAC,IAAS,EAAE,eAAuB,CAAC,EAAU,EAAE;oBACrE,IAAI,CAAC,IAAI;wBAAE,OAAO,YAAY,CAAC;oBAE/B,IAAI,KAAK,GAAG,YAAY,CAAC;oBAEzB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC1B,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;wBACzB,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBACjD,CAAC;oBAED,IAAI,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;wBAClC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;4BACrD,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBACnC,CAAC;oBACH,CAAC;oBAED,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC;gBAEF,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACzB,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;wBACxC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;4BACrB,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAc,EAAE,EAAE;gCACrD,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,CAAC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,YAAY,EAAE;oBACnD,aAAa;oBACb,KAAK,EAAE,aAAa;oBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAClC,CAAC;gBAED,IAAI,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CACb,kBAAkB,aAAa,qCAAqC,OAAO,CAAC,QAAQ,EAAE,CACvF,CAAC;gBACJ,CAAC;YACH,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuD,EACvD,UAII,EAAE;IAEN,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,mDAAmD;YACjD,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAC5C,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { MiddlewareInterface } from '../../index.js';
2
+ import type { GraphQLOptions } from '../../../graphql/types.js';
3
+ /**
4
+ * GraphQL Hook Middleware
5
+ * Provides hook-based GraphQL integration with MoroJS middleware system
6
+ */
7
+ export declare const graphql: (options: GraphQLOptions) => MiddlewareInterface;