@morojs/moro 1.6.5 → 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 (200) 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 +8 -4
  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.d.ts +7 -0
  50. package/dist/core/http/http-server.js +267 -123
  51. package/dist/core/http/http-server.js.map +1 -1
  52. package/dist/core/http/utils/uws-worker-clustering.d.ts +28 -0
  53. package/dist/core/http/utils/uws-worker-clustering.js +313 -0
  54. package/dist/core/http/utils/uws-worker-clustering.js.map +1 -0
  55. package/dist/core/http/uws-http-server.d.ts +7 -1
  56. package/dist/core/http/uws-http-server.js +272 -189
  57. package/dist/core/http/uws-http-server.js.map +1 -1
  58. package/dist/core/jobs/cron-parser.d.ts +62 -0
  59. package/dist/core/jobs/cron-parser.js +239 -0
  60. package/dist/core/jobs/cron-parser.js.map +1 -0
  61. package/dist/core/jobs/index.d.ts +12 -0
  62. package/dist/core/jobs/index.js +9 -0
  63. package/dist/core/jobs/index.js.map +1 -0
  64. package/dist/core/jobs/job-executor.d.ts +134 -0
  65. package/dist/core/jobs/job-executor.js +413 -0
  66. package/dist/core/jobs/job-executor.js.map +1 -0
  67. package/dist/core/jobs/job-scheduler.d.ts +214 -0
  68. package/dist/core/jobs/job-scheduler.js +551 -0
  69. package/dist/core/jobs/job-scheduler.js.map +1 -0
  70. package/dist/core/jobs/job-state-manager.d.ts +158 -0
  71. package/dist/core/jobs/job-state-manager.js +444 -0
  72. package/dist/core/jobs/job-state-manager.js.map +1 -0
  73. package/dist/core/jobs/leader-election.d.ts +124 -0
  74. package/dist/core/jobs/leader-election.js +481 -0
  75. package/dist/core/jobs/leader-election.js.map +1 -0
  76. package/dist/core/jobs/types.d.ts +151 -0
  77. package/dist/core/jobs/types.js +4 -0
  78. package/dist/core/jobs/types.js.map +1 -0
  79. package/dist/core/jobs/utils.d.ts +95 -0
  80. package/dist/core/jobs/utils.js +258 -0
  81. package/dist/core/jobs/utils.js.map +1 -0
  82. package/dist/core/logger/filters.js +2 -0
  83. package/dist/core/logger/filters.js.map +1 -1
  84. package/dist/core/logger/logger.d.ts +7 -5
  85. package/dist/core/logger/logger.js +68 -27
  86. package/dist/core/logger/logger.js.map +1 -1
  87. package/dist/core/logger/outputs.js +2 -0
  88. package/dist/core/logger/outputs.js.map +1 -1
  89. package/dist/core/middleware/built-in/auth/helpers.js +1 -1
  90. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
  91. package/dist/core/middleware/built-in/auth/jwt-helpers.js +1 -1
  92. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
  93. package/dist/core/middleware/built-in/auth/providers.js +1 -1
  94. package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
  95. package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -3
  96. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
  97. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js +1 -0
  98. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  99. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js +1 -1
  100. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
  101. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.d.ts +8 -0
  102. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js +100 -7
  103. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
  104. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.d.ts +6 -0
  105. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js +97 -13
  106. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
  107. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js +1 -1
  108. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
  109. package/dist/core/middleware/built-in/cookie/hook.d.ts +1 -1
  110. package/dist/core/middleware/built-in/cookie/hook.js +2 -2
  111. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
  112. package/dist/core/middleware/built-in/csrf/core.js +1 -0
  113. package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
  114. package/dist/core/middleware/built-in/graphql/core.d.ts +11 -0
  115. package/dist/core/middleware/built-in/graphql/core.js +24 -0
  116. package/dist/core/middleware/built-in/graphql/core.js.map +1 -0
  117. package/dist/core/middleware/built-in/graphql/helpers.d.ts +69 -0
  118. package/dist/core/middleware/built-in/graphql/helpers.js +187 -0
  119. package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -0
  120. package/dist/core/middleware/built-in/graphql/hook.d.ts +7 -0
  121. package/dist/core/middleware/built-in/graphql/hook.js +78 -0
  122. package/dist/core/middleware/built-in/graphql/hook.js.map +1 -0
  123. package/dist/core/middleware/built-in/graphql/index.d.ts +5 -0
  124. package/dist/core/middleware/built-in/graphql/index.js +5 -0
  125. package/dist/core/middleware/built-in/graphql/index.js.map +1 -0
  126. package/dist/core/middleware/built-in/graphql/middleware.d.ts +7 -0
  127. package/dist/core/middleware/built-in/graphql/middleware.js +54 -0
  128. package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -0
  129. package/dist/core/middleware/built-in/graphql/subscriptions.d.ts +20 -0
  130. package/dist/core/middleware/built-in/graphql/subscriptions.js +37 -0
  131. package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -0
  132. package/dist/core/middleware/built-in/index.d.ts +2 -1
  133. package/dist/core/middleware/built-in/index.js +3 -0
  134. package/dist/core/middleware/built-in/index.js.map +1 -1
  135. package/dist/core/middleware/built-in/rate-limit/core.d.ts +5 -0
  136. package/dist/core/middleware/built-in/rate-limit/core.js +16 -8
  137. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
  138. package/dist/core/middleware/built-in/validation/core.js +42 -19
  139. package/dist/core/middleware/built-in/validation/core.js.map +1 -1
  140. package/dist/core/middleware/index.js +1 -0
  141. package/dist/core/middleware/index.js.map +1 -1
  142. package/dist/core/modules/auto-discovery.js +5 -4
  143. package/dist/core/modules/auto-discovery.js.map +1 -1
  144. package/dist/core/modules/modules.js.map +1 -1
  145. package/dist/core/networking/adapters/socketio-adapter.js +1 -1
  146. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  147. package/dist/core/networking/adapters/uws-adapter.js +7 -2
  148. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  149. package/dist/core/networking/adapters/ws-adapter.js +5 -2
  150. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  151. package/dist/core/networking/websocket-manager.js +2 -0
  152. package/dist/core/networking/websocket-manager.js.map +1 -1
  153. package/dist/core/pooling/object-pool-manager.d.ts +8 -2
  154. package/dist/core/pooling/object-pool-manager.js +38 -18
  155. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  156. package/dist/core/routing/app-integration.d.ts +3 -3
  157. package/dist/core/routing/app-integration.js +1 -1
  158. package/dist/core/routing/app-integration.js.map +1 -1
  159. package/dist/core/routing/index.d.ts +1 -1
  160. package/dist/core/routing/index.js +1 -1
  161. package/dist/core/routing/index.js.map +1 -1
  162. package/dist/core/routing/path-matcher.d.ts +6 -0
  163. package/dist/core/routing/path-matcher.js +46 -7
  164. package/dist/core/routing/path-matcher.js.map +1 -1
  165. package/dist/core/routing/unified-router.d.ts +4 -0
  166. package/dist/core/routing/unified-router.js +104 -43
  167. package/dist/core/routing/unified-router.js.map +1 -1
  168. package/dist/core/runtime/base-adapter.js +3 -3
  169. package/dist/core/runtime/base-adapter.js.map +1 -1
  170. package/dist/core/runtime/cloudflare-workers-adapter.js +1 -1
  171. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  172. package/dist/core/runtime/node-adapter.d.ts +1 -1
  173. package/dist/core/runtime/node-adapter.js +7 -4
  174. package/dist/core/runtime/node-adapter.js.map +1 -1
  175. package/dist/core/runtime/vercel-edge-adapter.js +1 -0
  176. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  177. package/dist/core/utilities/circuit-breaker.d.ts +9 -2
  178. package/dist/core/utilities/circuit-breaker.js +32 -3
  179. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  180. package/dist/core/utilities/container.js +6 -0
  181. package/dist/core/utilities/container.js.map +1 -1
  182. package/dist/core/utilities/hooks.d.ts +4 -0
  183. package/dist/core/utilities/hooks.js +134 -22
  184. package/dist/core/utilities/hooks.js.map +1 -1
  185. package/dist/core/validation/index.js +6 -1
  186. package/dist/core/validation/index.js.map +1 -1
  187. package/dist/index.d.ts +6 -0
  188. package/dist/index.js +5 -0
  189. package/dist/index.js.map +1 -1
  190. package/dist/moro.d.ts +154 -1
  191. package/dist/moro.js +592 -16
  192. package/dist/moro.js.map +1 -1
  193. package/dist/types/config.d.ts +28 -0
  194. package/dist/types/core.d.ts +1 -0
  195. package/dist/types/events.d.ts +1 -1
  196. package/dist/types/events.js +1 -0
  197. package/dist/types/events.js.map +1 -1
  198. package/dist/types/logger.d.ts +1 -0
  199. package/dist/types/module.d.ts +2 -2
  200. package/package.json +21 -1
@@ -0,0 +1,165 @@
1
+ // GraphQL Core - Adapter-based GraphQL system
2
+ import { createFrameworkLogger } from '../logger/index.js';
3
+ import { GraphQLJsAdapter } from './adapters/graphql-js-adapter.js';
4
+ const logger = createFrameworkLogger('GraphQL');
5
+ /**
6
+ * GraphQL Core - Manages GraphQL adapter and handles HTTP requests
7
+ */
8
+ export class GraphQLCore {
9
+ adapter;
10
+ options;
11
+ contextFactory;
12
+ constructor(options) {
13
+ this.options = options;
14
+ this.contextFactory = options.context;
15
+ }
16
+ /**
17
+ * Initialize GraphQL system with adapter
18
+ */
19
+ async initialize() {
20
+ logger.info('Initializing GraphQL system', 'Initialization');
21
+ // Create adapter (default to GraphQL.js)
22
+ this.adapter = this.options.adapter || new GraphQLJsAdapter();
23
+ // Initialize adapter
24
+ await this.adapter.initialize(this.options);
25
+ logger.info('GraphQL system initialized successfully', 'Initialization');
26
+ }
27
+ /**
28
+ * Handle HTTP request for GraphQL endpoint
29
+ */
30
+ async handleRequest(req, res) {
31
+ // Parse request
32
+ const graphqlRequest = await this.parseRequest(req);
33
+ if (!graphqlRequest) {
34
+ res.status(400).json({ errors: [{ message: 'Invalid GraphQL request' }] });
35
+ return;
36
+ }
37
+ // Build context
38
+ const baseContext = {
39
+ request: req,
40
+ response: res,
41
+ };
42
+ const context = this.contextFactory ? await this.contextFactory(req, res) : baseContext;
43
+ // Merge contexts
44
+ graphqlRequest.context = { ...baseContext, ...context };
45
+ // Check introspection
46
+ if (this.options.enableIntrospection === false &&
47
+ this.isIntrospectionQuery(graphqlRequest.query)) {
48
+ res.status(400).json({
49
+ errors: [{ message: 'GraphQL introspection is disabled' }],
50
+ });
51
+ return;
52
+ }
53
+ // Execute query
54
+ const result = await this.adapter.execute(graphqlRequest);
55
+ // Send response
56
+ res.status(200).json(result);
57
+ }
58
+ /**
59
+ * Get GraphQL Playground HTML
60
+ */
61
+ getPlaygroundHTML() {
62
+ const path = this.options.path || '/graphql';
63
+ return `
64
+ <!DOCTYPE html>
65
+ <html>
66
+ <head>
67
+ <meta charset="utf-8">
68
+ <title>GraphQL Playground</title>
69
+ <meta name="viewport" content="width=device-width, initial-scale=1">
70
+ <link rel="stylesheet" href="https://unpkg.com/graphiql@2/graphiql.min.css" />
71
+ </head>
72
+ <body style="margin: 0;">
73
+ <div id="graphiql" style="height: 100vh;"></div>
74
+ <script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
75
+ <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
76
+ <script crossorigin src="https://unpkg.com/graphiql@2/graphiql.min.js"></script>
77
+ <script>
78
+ const fetcher = GraphiQL.createFetcher({ url: '${path}' });
79
+ const root = ReactDOM.createRoot(document.getElementById('graphiql'));
80
+ root.render(React.createElement(GraphiQL, { fetcher: fetcher }));
81
+ </script>
82
+ </body>
83
+ </html>
84
+ `.trim();
85
+ }
86
+ /**
87
+ * Get schema introspection
88
+ */
89
+ getIntrospection() {
90
+ return this.adapter.getIntrospection();
91
+ }
92
+ /**
93
+ * Get schema SDL
94
+ */
95
+ getSchemaSDL() {
96
+ return this.adapter.getSchemaSDL();
97
+ }
98
+ /**
99
+ * Get schema
100
+ */
101
+ getSchema() {
102
+ return this.adapter.getSchema();
103
+ }
104
+ /**
105
+ * Get adapter
106
+ */
107
+ getAdapter() {
108
+ return this.adapter;
109
+ }
110
+ /**
111
+ * Get statistics
112
+ */
113
+ getStats() {
114
+ return this.adapter.getStats();
115
+ }
116
+ /**
117
+ * Cleanup
118
+ */
119
+ async cleanup() {
120
+ await this.adapter.cleanup();
121
+ }
122
+ /**
123
+ * Parse GraphQL request from HTTP request
124
+ */
125
+ async parseRequest(req) {
126
+ if (req.method === 'GET') {
127
+ const query = req.query?.query;
128
+ const variables = req.query?.variables;
129
+ const operationName = req.query?.operationName;
130
+ if (!query)
131
+ return null;
132
+ return {
133
+ query,
134
+ variables: variables ? JSON.parse(variables) : undefined,
135
+ operationName,
136
+ context: {},
137
+ };
138
+ }
139
+ if (req.method === 'POST') {
140
+ const body = req.body;
141
+ if (!body || !body.query)
142
+ return null;
143
+ return {
144
+ query: body.query,
145
+ variables: body.variables,
146
+ operationName: body.operationName,
147
+ context: {},
148
+ };
149
+ }
150
+ return null;
151
+ }
152
+ /**
153
+ * Check if query is introspection
154
+ */
155
+ isIntrospectionQuery(query) {
156
+ return query.includes('__schema') || query.includes('__type');
157
+ }
158
+ }
159
+ /**
160
+ * Create GraphQL core instance
161
+ */
162
+ export function createGraphQLCore(options) {
163
+ return new GraphQLCore(options);
164
+ }
165
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/graphql/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { GraphQLCore, createGraphQLCore } from './core.js';
2
+ export type { GraphQLAdapter, GraphQLRequest, GraphQLResponse, GraphQLStats } from './adapter.js';
3
+ export { GraphQLJsAdapter } from './adapters/graphql-js-adapter.js';
4
+ export type * from './types.js';
@@ -0,0 +1,4 @@
1
+ // GraphQL System Exports
2
+ export { GraphQLCore, createGraphQLCore } from './core.js';
3
+ export { GraphQLJsAdapter } from './adapters/graphql-js-adapter.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/graphql/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Dynamically load graphql package from user's node_modules
3
+ * This ensures graphql is only required when actually used
4
+ */
5
+ export declare function loadGraphQL(): Promise<any>;
6
+ /**
7
+ * Get cached graphql module (must call loadGraphQL first)
8
+ */
9
+ export declare function getGraphQL(): any;
@@ -0,0 +1,32 @@
1
+ // GraphQL Dynamic Loader - Lazy loads graphql package
2
+ import { resolveUserPackage } from '../utilities/package-utils.js';
3
+ let graphqlModule = null;
4
+ /**
5
+ * Dynamically load graphql package from user's node_modules
6
+ * This ensures graphql is only required when actually used
7
+ */
8
+ export async function loadGraphQL() {
9
+ if (graphqlModule) {
10
+ return graphqlModule;
11
+ }
12
+ try {
13
+ const graphqlPath = resolveUserPackage('graphql');
14
+ graphqlModule = await import(graphqlPath);
15
+ return graphqlModule;
16
+ }
17
+ catch {
18
+ throw new Error('GraphQL package not found. Install it with: npm install graphql\n' +
19
+ 'For TypeScript-first GraphQL: npm install @pothos/core\n' +
20
+ 'For performance boost: npm install graphql-jit');
21
+ }
22
+ }
23
+ /**
24
+ * Get cached graphql module (must call loadGraphQL first)
25
+ */
26
+ export function getGraphQL() {
27
+ if (!graphqlModule) {
28
+ throw new Error('GraphQL not loaded. Call loadGraphQL() first.');
29
+ }
30
+ return graphqlModule;
31
+ }
32
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/graphql/loader.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,IAAI,aAAa,GAAQ,IAAI,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAClD,aAAa,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,mEAAmE;YACjE,0DAA0D;YAC1D,gDAAgD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,211 @@
1
+ import type { HttpRequest, HttpResponse } from '../../types/http.js';
2
+ import type { GraphQLSchema, GraphQLFieldResolver, GraphQLTypeResolver, GraphQLError } from 'graphql';
3
+ /**
4
+ * GraphQL context that's passed to all resolvers
5
+ */
6
+ export interface GraphQLContext {
7
+ request: HttpRequest;
8
+ response: HttpResponse;
9
+ user?: any;
10
+ auth?: any;
11
+ session?: any;
12
+ [key: string]: any;
13
+ }
14
+ /**
15
+ * GraphQL resolver function signature
16
+ */
17
+ export type GraphQLResolver<TSource = any, TArgs = any, TContext = GraphQLContext, TResult = any> = GraphQLFieldResolver<TSource, TContext, TArgs, TResult>;
18
+ /**
19
+ * GraphQL subscription resolver
20
+ */
21
+ export interface GraphQLSubscriptionResolver<TSource = any, TArgs = any, TContext = GraphQLContext> {
22
+ subscribe: GraphQLFieldResolver<TSource, TContext, TArgs>;
23
+ resolve?: GraphQLFieldResolver<TSource, TContext, TArgs>;
24
+ }
25
+ /**
26
+ * GraphQL schema builder options
27
+ */
28
+ export interface GraphQLSchemaBuilderOptions {
29
+ typeDefs?: string | string[];
30
+ resolvers?: GraphQLResolvers;
31
+ schema?: GraphQLSchema;
32
+ context?: (req: HttpRequest, res: HttpResponse) => GraphQLContext | Promise<GraphQLContext>;
33
+ formatError?: (error: GraphQLError) => any;
34
+ validationRules?: any[];
35
+ extensions?: any[];
36
+ }
37
+ /**
38
+ * GraphQL resolvers map
39
+ */
40
+ export interface GraphQLResolvers {
41
+ Query?: Record<string, GraphQLResolver>;
42
+ Mutation?: Record<string, GraphQLResolver>;
43
+ Subscription?: Record<string, GraphQLSubscriptionResolver>;
44
+ [key: string]: any;
45
+ }
46
+ /**
47
+ * GraphQL execution options
48
+ */
49
+ export interface GraphQLExecutionOptions {
50
+ schema: GraphQLSchema;
51
+ query: string;
52
+ variables?: Record<string, any>;
53
+ operationName?: string;
54
+ context?: GraphQLContext;
55
+ rootValue?: any;
56
+ fieldResolver?: GraphQLFieldResolver<any, any>;
57
+ typeResolver?: GraphQLTypeResolver<any, any>;
58
+ subscriptionFieldResolver?: GraphQLFieldResolver<any, any>;
59
+ }
60
+ /**
61
+ * GraphQL configuration options
62
+ */
63
+ export interface GraphQLOptions {
64
+ adapter?: any;
65
+ schema?: any;
66
+ typeDefs?: string | string[];
67
+ resolvers?: GraphQLResolvers;
68
+ pothosSchema?: any;
69
+ context?: (req: HttpRequest, res: HttpResponse) => GraphQLContext | Promise<GraphQLContext>;
70
+ path?: string;
71
+ playgroundPath?: string;
72
+ enablePlayground?: boolean;
73
+ enableJIT?: boolean;
74
+ jitCacheTTL?: number;
75
+ enableIntrospection?: boolean;
76
+ enableSubscriptions?: boolean;
77
+ enableBatching?: boolean;
78
+ formatError?: (error: GraphQLError) => any;
79
+ debug?: boolean;
80
+ validationRules?: any[];
81
+ maxDepth?: number;
82
+ maxComplexity?: number;
83
+ rateLimit?: {
84
+ queries?: {
85
+ requests: number;
86
+ window: number;
87
+ };
88
+ mutations?: {
89
+ requests: number;
90
+ window: number;
91
+ };
92
+ subscriptions?: {
93
+ requests: number;
94
+ window: number;
95
+ };
96
+ };
97
+ enableCache?: boolean;
98
+ cacheAdapter?: any;
99
+ cacheTTL?: number;
100
+ requireAuth?: boolean;
101
+ authScopes?: string[];
102
+ extensions?: any[];
103
+ plugins?: GraphQLPlugin[];
104
+ rootValue?: any;
105
+ fieldResolver?: GraphQLFieldResolver<any, any>;
106
+ typeResolver?: GraphQLTypeResolver<any, any>;
107
+ parseOptions?: any;
108
+ validationTypeInfo?: any;
109
+ }
110
+ /**
111
+ * GraphQL plugin interface
112
+ */
113
+ export interface GraphQLPlugin {
114
+ name: string;
115
+ requestDidStart?: (context: GraphQLRequestContext) => GraphQLRequestListener | void;
116
+ }
117
+ /**
118
+ * GraphQL request context
119
+ */
120
+ export interface GraphQLRequestContext {
121
+ request: GraphQLRequest;
122
+ response?: GraphQLResponse;
123
+ context: GraphQLContext;
124
+ schema: GraphQLSchema;
125
+ operation?: any;
126
+ operationName?: string | null;
127
+ document?: any;
128
+ metrics?: GraphQLMetrics;
129
+ }
130
+ /**
131
+ * GraphQL request listener (for plugins)
132
+ */
133
+ export interface GraphQLRequestListener {
134
+ parsingDidStart?: () => void;
135
+ validationDidStart?: () => void;
136
+ executionDidStart?: () => void;
137
+ didEncounterErrors?: (errors: readonly GraphQLError[]) => void;
138
+ willSendResponse?: (context: GraphQLRequestContext) => void;
139
+ }
140
+ /**
141
+ * GraphQL request
142
+ */
143
+ export interface GraphQLRequest {
144
+ query: string;
145
+ variables?: Record<string, any>;
146
+ operationName?: string | null;
147
+ extensions?: Record<string, any>;
148
+ }
149
+ /**
150
+ * GraphQL response
151
+ */
152
+ export interface GraphQLResponse {
153
+ data?: any;
154
+ errors?: readonly GraphQLError[];
155
+ extensions?: Record<string, any>;
156
+ }
157
+ /**
158
+ * GraphQL execution metrics
159
+ */
160
+ export interface GraphQLMetrics {
161
+ startTime: number;
162
+ endTime?: number;
163
+ duration?: number;
164
+ parsing?: number;
165
+ validation?: number;
166
+ execution?: number;
167
+ fieldResolution?: Record<string, number>;
168
+ }
169
+ /**
170
+ * GraphQL subscription options
171
+ */
172
+ export interface GraphQLSubscriptionOptions {
173
+ onConnect?: (connectionParams: any, websocket: any, context: any) => any | Promise<any>;
174
+ onDisconnect?: (websocket: any, context: any) => void | Promise<void>;
175
+ keepAlive?: number;
176
+ }
177
+ /**
178
+ * GraphQL DataLoader options
179
+ */
180
+ export interface DataLoaderOptions<K, V> {
181
+ batch?: boolean;
182
+ maxBatchSize?: number;
183
+ cache?: boolean;
184
+ cacheKeyFn?: (key: K) => any;
185
+ cacheMap?: Map<any, Promise<V>>;
186
+ }
187
+ /**
188
+ * GraphQL field complexity calculator
189
+ */
190
+ export type ComplexityEstimator = (options: {
191
+ type: any;
192
+ field: any;
193
+ args: Record<string, any>;
194
+ childComplexity: number;
195
+ }) => number;
196
+ /**
197
+ * GraphQL query complexity options
198
+ */
199
+ export interface QueryComplexityOptions {
200
+ maximumComplexity: number;
201
+ variables?: Record<string, any>;
202
+ onComplete?: (complexity: number) => void;
203
+ estimators?: ComplexityEstimator[];
204
+ }
205
+ /**
206
+ * GraphQL depth limit options
207
+ */
208
+ export interface DepthLimitOptions {
209
+ maxDepth: number;
210
+ callback?: (obj: any) => void;
211
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/graphql/types.ts"],"names":[],"mappings":""}
@@ -11,6 +11,13 @@ export declare class MoroHttpServer {
11
11
  private hookManager;
12
12
  private requestCounter;
13
13
  private poolManager;
14
+ private static readonly METHOD_POST;
15
+ private static readonly METHOD_PUT;
16
+ private static readonly METHOD_PATCH;
17
+ private static readonly METHOD_GET;
18
+ private static readonly METHOD_DELETE;
19
+ private static readonly METHOD_HEAD;
20
+ private static readonly METHOD_OPTIONS;
14
21
  private static readonly RESPONSE_TEMPLATES;
15
22
  private static readonly BUFFER_SIZES;
16
23
  private static readonly BUFFER_POOLS;