@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,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":"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"}
@@ -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;
@@ -0,0 +1,78 @@
1
+ // GraphQL Middleware - Hook-based integration
2
+ import { createFrameworkLogger } from '../../../logger/index.js';
3
+ import { GraphQLCore } from '../../../graphql/core.js';
4
+ const logger = createFrameworkLogger('GraphQLHook');
5
+ /**
6
+ * GraphQL Hook Middleware
7
+ * Provides hook-based GraphQL integration with MoroJS middleware system
8
+ */
9
+ export const graphql = (options) => ({
10
+ name: 'graphql',
11
+ version: '1.0.0',
12
+ metadata: {
13
+ name: 'graphql',
14
+ version: '1.0.0',
15
+ description: 'GraphQL middleware with Pothos support and GraphQL-JIT performance optimization',
16
+ author: 'MoroJS Team',
17
+ dependencies: ['graphql'],
18
+ tags: ['graphql', 'api', 'pothos', 'performance'],
19
+ },
20
+ install: async (hooks, middlewareOptions = {}) => {
21
+ logger.debug('Installing GraphQL middleware', 'Installation', { options: middlewareOptions });
22
+ const config = { ...options, ...middlewareOptions };
23
+ const graphqlCore = new GraphQLCore(config);
24
+ // Initialize GraphQL
25
+ await graphqlCore.initialize();
26
+ const graphqlPath = config.path || '/graphql';
27
+ const playgroundPath = config.playgroundPath || `${graphqlPath}/playground`;
28
+ const enablePlayground = config.enablePlayground !== false && process.env.NODE_ENV !== 'production';
29
+ logger.info('GraphQL endpoint configured', 'Configuration', {
30
+ graphqlPath,
31
+ playgroundPath: enablePlayground ? playgroundPath : 'disabled',
32
+ jit: graphqlCore.getStats()?.jit?.enabled || false,
33
+ });
34
+ // Register hooks for request processing
35
+ hooks.before('request', async (context) => {
36
+ const req = context.request;
37
+ const res = context.response;
38
+ // Handle GraphQL Playground
39
+ if (enablePlayground && req.path === playgroundPath && req.method === 'GET') {
40
+ logger.debug('Serving GraphQL Playground', 'Playground');
41
+ res.setHeader('Content-Type', 'text/html');
42
+ res.status(200).send(graphqlCore.getPlaygroundHTML());
43
+ return; // Stop processing
44
+ }
45
+ // Handle GraphQL endpoint
46
+ if (req.path === graphqlPath) {
47
+ logger.debug('Processing GraphQL request', 'Request', {
48
+ method: req.method,
49
+ operationName: req.body?.operationName,
50
+ });
51
+ // Handle OPTIONS for CORS
52
+ if (req.method === 'OPTIONS') {
53
+ res.status(200).end();
54
+ return;
55
+ }
56
+ // Only allow GET and POST
57
+ if (req.method !== 'GET' && req.method !== 'POST') {
58
+ res.status(405).json({
59
+ errors: [{ message: 'GraphQL only supports GET and POST requests' }],
60
+ });
61
+ return;
62
+ }
63
+ // Execute GraphQL request
64
+ await graphqlCore.handleRequest(req, res);
65
+ return; // Stop processing
66
+ }
67
+ // Not a GraphQL request, continue
68
+ });
69
+ // Expose GraphQL stats via context
70
+ hooks.after('request', async (context) => {
71
+ const req = context.request;
72
+ if (req.path === graphqlPath && req.graphqlMetrics) {
73
+ logger.debug('GraphQL request completed', 'Metrics', req.graphqlMetrics);
74
+ }
75
+ });
76
+ },
77
+ });
78
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { graphql } from './hook.js';
2
+ export { createGraphQLMiddleware } from './middleware.js';
3
+ export { GraphQLCore, getSharedGraphQLCore, resetSharedGraphQLCore } from './core.js';
4
+ export type * from '../../../graphql/types.js';
5
+ export type { GraphQLSchema, GraphQLObjectType, GraphQLFieldResolver, GraphQLResolveInfo, GraphQLError, } from 'graphql';
@@ -0,0 +1,5 @@
1
+ // GraphQL Middleware - Main exports
2
+ export { graphql } from './hook.js';
3
+ export { createGraphQLMiddleware } from './middleware.js';
4
+ export { GraphQLCore, getSharedGraphQLCore, resetSharedGraphQLCore } from './core.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { StandardMiddleware } from '../../../../types/hooks.js';
2
+ import type { GraphQLOptions } from '../../../graphql/types.js';
3
+ /**
4
+ * Create GraphQL standard middleware
5
+ * For use in standard middleware chains (req, res, next)
6
+ */
7
+ export declare function createGraphQLMiddleware(options: GraphQLOptions): StandardMiddleware;
@@ -0,0 +1,54 @@
1
+ import { GraphQLCore } from '../../../graphql/core.js';
2
+ import { createFrameworkLogger } from '../../../logger/index.js';
3
+ const logger = createFrameworkLogger('GraphQLMiddleware');
4
+ /**
5
+ * Create GraphQL standard middleware
6
+ * For use in standard middleware chains (req, res, next)
7
+ */
8
+ export function createGraphQLMiddleware(options) {
9
+ const graphqlCore = new GraphQLCore(options);
10
+ let initialized = false;
11
+ const graphqlPath = options.path || '/graphql';
12
+ const playgroundPath = options.playgroundPath || `${graphqlPath}/playground`;
13
+ const enablePlayground = options.enablePlayground !== false && process.env.NODE_ENV !== 'production';
14
+ return async (req, res, next) => {
15
+ // Initialize on first request
16
+ if (!initialized) {
17
+ await graphqlCore.initialize();
18
+ initialized = true;
19
+ logger.info('GraphQL middleware initialized', 'Initialization', {
20
+ graphqlPath,
21
+ playgroundPath: enablePlayground ? playgroundPath : 'disabled',
22
+ jit: graphqlCore.getStats()?.jit?.enabled || false,
23
+ });
24
+ }
25
+ const reqAny = req;
26
+ // Handle GraphQL Playground
27
+ if (enablePlayground && reqAny.path === playgroundPath && req.method === 'GET') {
28
+ res.setHeader('Content-Type', 'text/html');
29
+ res.status(200).send(graphqlCore.getPlaygroundHTML());
30
+ return;
31
+ }
32
+ // Handle GraphQL endpoint
33
+ if (reqAny.path === graphqlPath) {
34
+ // Handle OPTIONS for CORS
35
+ if (req.method === 'OPTIONS') {
36
+ res.status(200).end();
37
+ return;
38
+ }
39
+ // Only allow GET and POST
40
+ if (req.method !== 'GET' && req.method !== 'POST') {
41
+ res.status(405).json({
42
+ errors: [{ message: 'GraphQL only supports GET and POST requests' }],
43
+ });
44
+ return;
45
+ }
46
+ // Execute GraphQL request
47
+ await graphqlCore.handleRequest(req, res);
48
+ return;
49
+ }
50
+ // Not a GraphQL request, continue
51
+ await next();
52
+ };
53
+ }
54
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,WAAW,aAAa,CAAC;IAC7E,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE9E,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,8BAA8B;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;YAC/B,WAAW,GAAG,IAAI,CAAC;YAEnB,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,gBAAgB,EAAE;gBAC9D,WAAW;gBACX,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;gBAC9D,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,IAAI,KAAK;aACnD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,GAAU,CAAC;QAE1B,4BAA4B;QAC5B,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC9E,GAAW,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACnD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACjD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;iBACrE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * GraphQL Subscription Manager
3
+ * Handles WebSocket-based GraphQL subscriptions
4
+ *
5
+ * NOTE: This needs to be refactored to use the new adapter pattern.
6
+ * For now, subscriptions are disabled pending refactor.
7
+ */
8
+ export declare class GraphQLSubscriptionManager {
9
+ private subscriptions;
10
+ constructor(_schema: any, _contextFactory?: any);
11
+ subscribe(): Promise<void>;
12
+ unsubscribe(): void;
13
+ cleanup(): void;
14
+ }
15
+ /**
16
+ * Setup GraphQL subscriptions on WebSocket
17
+ *
18
+ * NOTE: Temporarily disabled pending refactor to adapter pattern
19
+ */
20
+ export declare function setupGraphQLSubscriptions(_websocketManager: any, schema: any, _options?: any): GraphQLSubscriptionManager;
@@ -0,0 +1,37 @@
1
+ // GraphQL WebSocket Subscriptions Support
2
+ // TODO: Refactor to use adapter pattern
3
+ import { createFrameworkLogger } from '../../../logger/index.js';
4
+ const logger = createFrameworkLogger('GraphQLSubscriptions');
5
+ /**
6
+ * GraphQL Subscription Manager
7
+ * Handles WebSocket-based GraphQL subscriptions
8
+ *
9
+ * NOTE: This needs to be refactored to use the new adapter pattern.
10
+ * For now, subscriptions are disabled pending refactor.
11
+ */
12
+ export class GraphQLSubscriptionManager {
13
+ subscriptions = new Map();
14
+ constructor(_schema, _contextFactory) {
15
+ logger.warn('GraphQL subscriptions are temporarily disabled pending adapter refactor', 'Subscriptions');
16
+ }
17
+ // Placeholder methods
18
+ async subscribe() {
19
+ throw new Error('GraphQL subscriptions temporarily disabled');
20
+ }
21
+ unsubscribe() {
22
+ // no-op
23
+ }
24
+ cleanup() {
25
+ this.subscriptions.clear();
26
+ }
27
+ }
28
+ /**
29
+ * Setup GraphQL subscriptions on WebSocket
30
+ *
31
+ * NOTE: Temporarily disabled pending refactor to adapter pattern
32
+ */
33
+ export function setupGraphQLSubscriptions(_websocketManager, schema, _options = {}) {
34
+ logger.warn('GraphQL subscriptions setup called but feature is temporarily disabled', 'Subscriptions');
35
+ return new GraphQLSubscriptionManager(schema);
36
+ }
37
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/subscriptions.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wCAAwC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IAC7B,aAAa,GAAG,IAAI,GAAG,EAAe,CAAC;IAE/C,YAAY,OAAY,EAAE,eAAqB;QAC7C,MAAM,CAAC,IAAI,CACT,yEAAyE,EACzE,eAAe,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,WAAW;QACT,QAAQ;IACV,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,iBAAsB,EACtB,MAAW,EACX,WAAgB,EAAE;IAElB,MAAM,CAAC,IAAI,CACT,wEAAwE,EACxE,eAAe,CAChB,CAAC;IACF,OAAO,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC"}
@@ -24,13 +24,14 @@ export declare const builtInMiddleware: {
24
24
  }) => import("../index.js").MiddlewareInterface;
25
25
  cors: (options?: import("./cors/core.js").CORSOptions) => import("../index.js").MiddlewareInterface;
26
26
  validation: () => import("../index.js").MiddlewareInterface;
27
- cookie: (config?: import("./cookie/hook.js").CookieConfig) => import("../index.js").MiddlewareInterface;
27
+ cookie: (_config?: import("./cookie/hook.js").CookieConfig) => import("../index.js").MiddlewareInterface;
28
28
  csrf: (options?: import("./csrf/core.js").CSRFOptions) => import("../index.js").MiddlewareInterface;
29
29
  csp: (options?: import("./csp/core.js").CSPOptions) => import("../index.js").MiddlewareInterface;
30
30
  sse: (options?: import("./sse/core.js").SSEOptions) => import("../index.js").MiddlewareInterface;
31
31
  session: (options?: import("./session/core.js").SessionOptions) => import("../index.js").MiddlewareInterface;
32
32
  cache: (options?: import("../../../index.js").CacheOptions) => import("../index.js").MiddlewareInterface;
33
33
  cdn: (options?: import("./cdn/index.js").CDNOptions) => import("../index.js").MiddlewareInterface;
34
+ graphql: (options: import("./graphql/index.js").GraphQLOptions) => import("../index.js").MiddlewareInterface;
34
35
  };
35
36
  export declare const simpleMiddleware: {
36
37
  requestLogger: (context: any) => Promise<void>;
@@ -35,6 +35,7 @@ import { sse } from './sse/index.js';
35
35
  import { session } from './session/index.js';
36
36
  import { cache } from './cache/index.js';
37
37
  import { cdn } from './cdn/index.js';
38
+ import { graphql } from './graphql/index.js';
38
39
  export const builtInMiddleware = {
39
40
  auth,
40
41
  rateLimit,
@@ -49,6 +50,8 @@ export const builtInMiddleware = {
49
50
  // Clean architecture middleware
50
51
  cache,
51
52
  cdn,
53
+ // GraphQL
54
+ graphql,
52
55
  };
53
56
  export const simpleMiddleware = {
54
57
  requestLogger,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,6CAA6C;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,gCAAgC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,sCAAsC;AACtC,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,SAAS,EACT,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,sCAAsC;AACtC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,yBAAyB;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,UAAU;IACV,sBAAsB;IACtB,MAAM;IACN,IAAI;IACJ,GAAG;IACH,GAAG;IACH,OAAO;IACP,gCAAgC;IAChC,KAAK;IACL,GAAG;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,aAAa;IACb,kBAAkB;IAClB,YAAY;CACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,6CAA6C;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,gCAAgC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,sCAAsC;AACtC,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,SAAS,EACT,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,sCAAsC;AACtC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,yBAAyB;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,UAAU;IACV,sBAAsB;IACtB,MAAM;IACN,IAAI;IACJ,GAAG;IACH,GAAG;IACH,OAAO;IACP,gCAAgC;IAChC,KAAK;IACL,GAAG;IACH,UAAU;IACV,OAAO;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,aAAa;IACb,kBAAkB;IAClB,YAAY;CACb,CAAC"}
@@ -11,6 +11,11 @@ export interface RateLimitConfig {
11
11
  */
12
12
  export declare class RateLimitCore {
13
13
  private store;
14
+ private static readonly startTime;
15
+ /**
16
+ * Get monotonic timestamp (smaller integers for better JIT optimization)
17
+ */
18
+ private static getTime;
14
19
  /**
15
20
  * High-level check for router use: checkLimit(req, res, config)
16
21
  * Sends response if rate limit exceeded
@@ -9,6 +9,14 @@ const logger = createFrameworkLogger('RateLimitCore');
9
9
  */
10
10
  export class RateLimitCore {
11
11
  store = new Map();
12
+ // Monotonic timestamp optimization
13
+ static startTime = Date.now();
14
+ /**
15
+ * Get monotonic timestamp (smaller integers for better JIT optimization)
16
+ */
17
+ static getTime() {
18
+ return Date.now() - RateLimitCore.startTime;
19
+ }
12
20
  /**
13
21
  * High-level check for router use: checkLimit(req, res, config)
14
22
  * Sends response if rate limit exceeded
@@ -37,22 +45,20 @@ export class RateLimitCore {
37
45
  */
38
46
  check(clientId, routeKey, requests, window) {
39
47
  const key = `${routeKey}:${clientId}`;
40
- const now = Date.now();
41
- if (!this.store.has(key)) {
42
- this.store.set(key, { count: 1, resetTime: now + window });
43
- return true;
44
- }
48
+ const now = RateLimitCore.getTime();
45
49
  const limitData = this.store.get(key);
46
50
  if (!limitData) {
51
+ this.store.set(key, { count: 1, resetTime: now + window });
47
52
  return true;
48
53
  }
54
+ // Fast path: check if window expired
49
55
  if (now > limitData.resetTime) {
50
56
  limitData.count = 1;
51
57
  limitData.resetTime = now + window;
52
58
  return true;
53
59
  }
54
- limitData.count++;
55
- if (limitData.count > requests) {
60
+ // Check limit before incrementing
61
+ if (limitData.count >= requests) {
56
62
  logger.warn('Rate limit exceeded', 'RateLimit', {
57
63
  clientId,
58
64
  route: routeKey,
@@ -61,6 +67,7 @@ export class RateLimitCore {
61
67
  });
62
68
  return false;
63
69
  }
70
+ limitData.count++;
64
71
  return true;
65
72
  }
66
73
  /**
@@ -70,7 +77,8 @@ export class RateLimitCore {
70
77
  const key = `${routeKey}:${clientId}`;
71
78
  const limitData = this.store.get(key);
72
79
  if (limitData) {
73
- return Math.ceil((limitData.resetTime - Date.now()) / 1000);
80
+ const now = RateLimitCore.getTime();
81
+ return Math.ceil((limitData.resetTime - now) / 1000);
74
82
  }
75
83
  return 0;
76
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/rate-limit/core.ts"],"names":[],"mappings":"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"}