quidproquo-dev-server 0.0.237 → 0.0.239

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 (194) hide show
  1. package/lib/commonjs/actionProcessor/core/event/index.d.ts +3 -0
  2. package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/index.js +2 -0
  3. package/lib/commonjs/actionProcessor/core/event/node/index.d.ts +1 -0
  4. package/lib/commonjs/{getActionProcessor/core → actionProcessor/core/event/node}/index.js +1 -1
  5. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/getEventAutoRespondActionProcessor.js +24 -0
  6. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/getEventGetRecordsActionProcessor.js +28 -0
  7. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/getEventGetStorySessionActionProcessor.js +24 -0
  8. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/getEventMatchStoryActionProcessor.js +33 -0
  9. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/getEventTransformResponseResultActionProcessor.js +30 -0
  10. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/index.d.ts +2 -0
  11. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/index.js +21 -0
  12. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/types.d.ts +11 -0
  13. package/lib/commonjs/actionProcessor/core/event/node/serviceFunction/types.js +2 -0
  14. package/lib/commonjs/actionProcessor/core/event/queue/getEventAutoRespondActionProcessor.d.ts +2 -0
  15. package/lib/commonjs/actionProcessor/core/event/queue/getEventAutoRespondActionProcessor.js +29 -0
  16. package/lib/commonjs/actionProcessor/core/event/queue/getEventGetRecordsActionProcessor.d.ts +2 -0
  17. package/lib/commonjs/actionProcessor/core/event/queue/getEventGetRecordsActionProcessor.js +31 -0
  18. package/lib/commonjs/actionProcessor/core/event/queue/getEventGetStorySessionActionProcessor.d.ts +2 -0
  19. package/lib/commonjs/actionProcessor/core/event/queue/getEventGetStorySessionActionProcessor.js +24 -0
  20. package/lib/commonjs/actionProcessor/core/event/queue/getEventMatchStoryActionProcessor.d.ts +2 -0
  21. package/lib/commonjs/actionProcessor/core/event/queue/getEventMatchStoryActionProcessor.js +43 -0
  22. package/lib/commonjs/actionProcessor/core/event/queue/getEventTransformResponseResultActionProcessor.d.ts +2 -0
  23. package/lib/commonjs/actionProcessor/core/event/queue/getEventTransformResponseResultActionProcessor.js +26 -0
  24. package/lib/commonjs/actionProcessor/core/event/queue/index.d.ts +2 -0
  25. package/lib/commonjs/actionProcessor/core/event/queue/index.js +21 -0
  26. package/lib/commonjs/actionProcessor/core/event/queue/types.d.ts +17 -0
  27. package/lib/commonjs/actionProcessor/core/event/queue/types.js +2 -0
  28. package/lib/commonjs/actionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.d.ts +10 -0
  29. package/lib/commonjs/actionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +43 -0
  30. package/lib/commonjs/actionProcessor/core/eventBus/index.d.ts +2 -0
  31. package/lib/commonjs/actionProcessor/core/eventBus/index.js +17 -0
  32. package/lib/commonjs/actionProcessor/core/getCoreActionProcessor.d.ts +2 -0
  33. package/lib/commonjs/actionProcessor/core/getCoreActionProcessor.js +19 -0
  34. package/lib/commonjs/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/getGraphDatabaseExecuteOpenCypherQueryActionProcessor.js +7 -3
  35. package/lib/commonjs/actionProcessor/core/index.d.ts +2 -0
  36. package/lib/commonjs/actionProcessor/core/index.js +18 -0
  37. package/lib/commonjs/actionProcessor/core/queue/getQueueSendMessageActionProcessor.d.ts +2 -0
  38. package/lib/commonjs/actionProcessor/core/queue/getQueueSendMessageActionProcessor.js +46 -0
  39. package/lib/commonjs/actionProcessor/core/queue/index.d.ts +2 -0
  40. package/lib/commonjs/actionProcessor/core/queue/index.js +17 -0
  41. package/lib/commonjs/actionProcessor/index.d.ts +4 -1
  42. package/lib/commonjs/actionProcessor/index.js +21 -1
  43. package/lib/commonjs/actionProcessor/webserver/index.d.ts +2 -0
  44. package/lib/commonjs/actionProcessor/webserver/index.js +17 -0
  45. package/lib/commonjs/actionProcessor/webserver/serviceFunctionOverride/getServiceFunctionExecuteActionProcessor.d.ts +2 -0
  46. package/lib/commonjs/actionProcessor/webserver/serviceFunctionOverride/getServiceFunctionExecuteActionProcessor.js +41 -0
  47. package/lib/commonjs/actionProcessor/webserver/serviceFunctionOverride/index.d.ts +2 -0
  48. package/lib/commonjs/actionProcessor/webserver/serviceFunctionOverride/index.js +17 -0
  49. package/lib/commonjs/implementations/apiImplementation.d.ts +2 -0
  50. package/lib/commonjs/implementations/apiImplementation.js +145 -0
  51. package/lib/commonjs/implementations/eventBusImplementation.d.ts +2 -0
  52. package/lib/commonjs/implementations/eventBusImplementation.js +55 -0
  53. package/lib/commonjs/implementations/index.d.ts +4 -1
  54. package/lib/commonjs/implementations/index.js +4 -1
  55. package/lib/commonjs/implementations/queueImplementation.d.ts +2 -0
  56. package/lib/commonjs/implementations/queueImplementation.js +47 -0
  57. package/lib/commonjs/implementations/serviceFunctionImplementation.d.ts +2 -0
  58. package/lib/commonjs/implementations/serviceFunctionImplementation.js +34 -0
  59. package/lib/commonjs/logic/eventBus.d.ts +11 -0
  60. package/lib/commonjs/logic/eventBus.js +46 -0
  61. package/lib/commonjs/logic/index.d.ts +2 -0
  62. package/lib/commonjs/{getActionProcessor → logic}/index.js +2 -1
  63. package/lib/commonjs/logic/processEvent.d.ts +2 -0
  64. package/lib/commonjs/logic/processEvent.js +32 -0
  65. package/lib/commonjs/main.d.ts +1 -0
  66. package/lib/commonjs/main.js +22 -125
  67. package/lib/esm/actionProcessor/core/event/express/api/getEventAutoRespondActionProcessor.d.ts +2 -0
  68. package/lib/esm/actionProcessor/core/event/express/api/getEventGetRecordsActionProcessor.d.ts +2 -0
  69. package/lib/esm/actionProcessor/core/event/express/api/getEventGetStorySessionActionProcessor.d.ts +2 -0
  70. package/lib/esm/actionProcessor/core/event/express/api/getEventMatchStoryActionProcessor.d.ts +2 -0
  71. package/lib/esm/actionProcessor/core/event/express/api/getEventTransformResponseResultActionProcessor.d.ts +2 -0
  72. package/lib/esm/actionProcessor/core/event/index.d.ts +3 -0
  73. package/lib/esm/actionProcessor/core/event/index.js +3 -0
  74. package/lib/esm/actionProcessor/core/event/node/index.d.ts +1 -0
  75. package/lib/esm/actionProcessor/core/event/node/index.js +1 -0
  76. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventAutoRespondActionProcessor.d.ts +2 -0
  77. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventAutoRespondActionProcessor.js +9 -0
  78. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventGetRecordsActionProcessor.d.ts +2 -0
  79. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventGetRecordsActionProcessor.js +13 -0
  80. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventGetStorySessionActionProcessor.d.ts +2 -0
  81. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventGetStorySessionActionProcessor.js +9 -0
  82. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventMatchStoryActionProcessor.d.ts +2 -0
  83. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventMatchStoryActionProcessor.js +18 -0
  84. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventTransformResponseResultActionProcessor.d.ts +2 -0
  85. package/lib/esm/actionProcessor/core/event/node/serviceFunction/getEventTransformResponseResultActionProcessor.js +15 -0
  86. package/lib/esm/actionProcessor/core/event/node/serviceFunction/index.d.ts +2 -0
  87. package/lib/esm/actionProcessor/core/event/node/serviceFunction/index.js +12 -0
  88. package/lib/esm/actionProcessor/core/event/node/serviceFunction/types.d.ts +11 -0
  89. package/lib/esm/actionProcessor/core/event/node/serviceFunction/types.js +1 -0
  90. package/lib/esm/actionProcessor/core/event/queue/getEventAutoRespondActionProcessor.d.ts +2 -0
  91. package/lib/esm/actionProcessor/core/event/queue/getEventAutoRespondActionProcessor.js +14 -0
  92. package/lib/esm/actionProcessor/core/event/queue/getEventGetRecordsActionProcessor.d.ts +2 -0
  93. package/lib/esm/actionProcessor/core/event/queue/getEventGetRecordsActionProcessor.js +16 -0
  94. package/lib/esm/actionProcessor/core/event/queue/getEventGetStorySessionActionProcessor.d.ts +2 -0
  95. package/lib/esm/actionProcessor/core/event/queue/getEventGetStorySessionActionProcessor.js +9 -0
  96. package/lib/esm/actionProcessor/core/event/queue/getEventMatchStoryActionProcessor.d.ts +2 -0
  97. package/lib/esm/actionProcessor/core/event/queue/getEventMatchStoryActionProcessor.js +28 -0
  98. package/lib/esm/actionProcessor/core/event/queue/getEventTransformResponseResultActionProcessor.d.ts +2 -0
  99. package/lib/esm/actionProcessor/core/event/queue/getEventTransformResponseResultActionProcessor.js +11 -0
  100. package/lib/esm/actionProcessor/core/event/queue/index.d.ts +2 -0
  101. package/lib/esm/actionProcessor/core/event/queue/index.js +12 -0
  102. package/lib/esm/actionProcessor/core/event/queue/types.d.ts +17 -0
  103. package/lib/esm/actionProcessor/core/event/queue/types.js +1 -0
  104. package/lib/esm/actionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.d.ts +10 -0
  105. package/lib/esm/actionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +30 -0
  106. package/lib/esm/actionProcessor/core/eventBus/index.d.ts +2 -0
  107. package/lib/esm/actionProcessor/core/eventBus/index.js +4 -0
  108. package/lib/esm/actionProcessor/core/getCoreActionProcessor.d.ts +2 -0
  109. package/lib/esm/actionProcessor/core/getCoreActionProcessor.js +8 -0
  110. package/lib/esm/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/getGraphDatabaseExecuteOpenCypherQueryActionProcessor.js +9 -3
  111. package/lib/esm/actionProcessor/core/index.d.ts +2 -0
  112. package/lib/esm/actionProcessor/core/index.js +2 -0
  113. package/lib/esm/actionProcessor/core/queue/getQueueSendMessageActionProcessor.d.ts +2 -0
  114. package/lib/esm/actionProcessor/core/queue/getQueueSendMessageActionProcessor.js +33 -0
  115. package/lib/esm/actionProcessor/core/queue/index.d.ts +2 -0
  116. package/lib/esm/actionProcessor/core/queue/index.js +4 -0
  117. package/lib/esm/actionProcessor/index.d.ts +4 -1
  118. package/lib/esm/actionProcessor/index.js +18 -1
  119. package/lib/esm/actionProcessor/webserver/index.d.ts +2 -0
  120. package/lib/esm/actionProcessor/webserver/index.js +4 -0
  121. package/lib/esm/actionProcessor/webserver/serviceFunctionOverride/getServiceFunctionExecuteActionProcessor.d.ts +2 -0
  122. package/lib/esm/actionProcessor/webserver/serviceFunctionOverride/getServiceFunctionExecuteActionProcessor.js +29 -0
  123. package/lib/esm/actionProcessor/webserver/serviceFunctionOverride/index.d.ts +2 -0
  124. package/lib/esm/actionProcessor/webserver/serviceFunctionOverride/index.js +4 -0
  125. package/lib/esm/implementations/apiImplementation.d.ts +2 -0
  126. package/lib/esm/implementations/apiImplementation.js +129 -0
  127. package/lib/esm/implementations/eventBusImplementation.d.ts +2 -0
  128. package/lib/esm/implementations/eventBusImplementation.js +40 -0
  129. package/lib/esm/implementations/index.d.ts +4 -1
  130. package/lib/esm/implementations/index.js +4 -1
  131. package/lib/esm/implementations/queueImplementation.d.ts +2 -0
  132. package/lib/esm/implementations/queueImplementation.js +34 -0
  133. package/lib/esm/implementations/serviceFunctionImplementation.d.ts +2 -0
  134. package/lib/esm/implementations/serviceFunctionImplementation.js +21 -0
  135. package/lib/esm/logic/eventBus.d.ts +11 -0
  136. package/lib/esm/logic/eventBus.js +31 -0
  137. package/lib/esm/logic/index.d.ts +2 -0
  138. package/lib/esm/logic/index.js +2 -0
  139. package/lib/esm/logic/processEvent.d.ts +2 -0
  140. package/lib/esm/logic/processEvent.js +20 -0
  141. package/lib/esm/main.d.ts +1 -0
  142. package/lib/esm/main.js +9 -123
  143. package/package.json +6 -6
  144. package/lib/commonjs/getActionProcessor/core/event/index.d.ts +0 -1
  145. package/lib/commonjs/getActionProcessor/core/index.d.ts +0 -1
  146. package/lib/commonjs/getActionProcessor/index.d.ts +0 -1
  147. package/lib/commonjs/implementations/route.d.ts +0 -3
  148. package/lib/commonjs/implementations/route.js +0 -67
  149. package/lib/esm/getActionProcessor/core/event/index.d.ts +0 -1
  150. package/lib/esm/getActionProcessor/core/event/index.js +0 -1
  151. package/lib/esm/getActionProcessor/core/index.d.ts +0 -1
  152. package/lib/esm/getActionProcessor/core/index.js +0 -1
  153. package/lib/esm/getActionProcessor/index.d.ts +0 -1
  154. package/lib/esm/getActionProcessor/index.js +0 -1
  155. package/lib/esm/implementations/route.d.ts +0 -3
  156. package/lib/esm/implementations/route.js +0 -58
  157. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventAutoRespondActionProcessor.d.ts +0 -0
  158. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventAutoRespondActionProcessor.js +0 -0
  159. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventGetRecordsActionProcessor.d.ts +0 -0
  160. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventGetRecordsActionProcessor.js +0 -0
  161. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventGetStorySessionActionProcessor.d.ts +0 -0
  162. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventGetStorySessionActionProcessor.js +0 -0
  163. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventMatchStoryActionProcessor.d.ts +0 -0
  164. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventMatchStoryActionProcessor.js +0 -0
  165. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventTransformResponseResultActionProcessor.d.ts +0 -0
  166. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/getEventTransformResponseResultActionProcessor.js +0 -0
  167. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/index.d.ts +0 -0
  168. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/index.js +0 -0
  169. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/types.d.ts +0 -0
  170. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/api/types.js +0 -0
  171. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/index.d.ts +0 -0
  172. /package/lib/commonjs/{getActionProcessor → actionProcessor}/core/event/express/index.js +0 -0
  173. /package/lib/{esm/getActionProcessor/core/event/express/api → commonjs/actionProcessor/core/event/node/serviceFunction}/getEventAutoRespondActionProcessor.d.ts +0 -0
  174. /package/lib/{esm/getActionProcessor/core/event/express/api → commonjs/actionProcessor/core/event/node/serviceFunction}/getEventGetRecordsActionProcessor.d.ts +0 -0
  175. /package/lib/{esm/getActionProcessor/core/event/express/api → commonjs/actionProcessor/core/event/node/serviceFunction}/getEventGetStorySessionActionProcessor.d.ts +0 -0
  176. /package/lib/{esm/getActionProcessor/core/event/express/api → commonjs/actionProcessor/core/event/node/serviceFunction}/getEventMatchStoryActionProcessor.d.ts +0 -0
  177. /package/lib/{esm/getActionProcessor/core/event/express/api → commonjs/actionProcessor/core/event/node/serviceFunction}/getEventTransformResponseResultActionProcessor.d.ts +0 -0
  178. /package/lib/commonjs/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/getGraphDatabaseExecuteOpenCypherQueryActionProcessor.d.ts +0 -0
  179. /package/lib/commonjs/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/index.d.ts +0 -0
  180. /package/lib/commonjs/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/index.js +0 -0
  181. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/getEventAutoRespondActionProcessor.js +0 -0
  182. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/getEventGetRecordsActionProcessor.js +0 -0
  183. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/getEventGetStorySessionActionProcessor.js +0 -0
  184. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/getEventMatchStoryActionProcessor.js +0 -0
  185. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/getEventTransformResponseResultActionProcessor.js +0 -0
  186. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/index.d.ts +0 -0
  187. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/index.js +0 -0
  188. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/types.d.ts +0 -0
  189. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/api/types.js +0 -0
  190. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/index.d.ts +0 -0
  191. /package/lib/esm/{getActionProcessor → actionProcessor}/core/event/express/index.js +0 -0
  192. /package/lib/esm/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/getGraphDatabaseExecuteOpenCypherQueryActionProcessor.d.ts +0 -0
  193. /package/lib/esm/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/index.d.ts +0 -0
  194. /package/lib/esm/actionProcessor/{graphDatabaseOverride → core/graphDatabaseOverride}/index.js +0 -0
@@ -0,0 +1,4 @@
1
+ import { getQueueSendMessagesActionProcessor } from './getQueueSendMessageActionProcessor';
2
+ export const getQueueActionProcessor = async (qpqConfig, dynamicModuleLoader) => ({
3
+ ...(await getQueueSendMessagesActionProcessor(qpqConfig, dynamicModuleLoader)),
4
+ });
@@ -1 +1,4 @@
1
- export * from './graphDatabaseOverride';
1
+ import { ActionProcessorListResolver } from 'quidproquo-core';
2
+ export * from './core';
3
+ export * from './webserver';
4
+ export declare const getDevServerActionProcessors: ActionProcessorListResolver;
@@ -1 +1,18 @@
1
- export * from './graphDatabaseOverride';
1
+ import { getAwsActionProcessors } from 'quidproquo-actionprocessor-awslambda';
2
+ import { getCustomActionActionProcessor } from 'quidproquo-actionprocessor-node';
3
+ import { getCoreActionProcessor } from './core';
4
+ import { getWebserverActionProcessor } from './webserver';
5
+ export * from './core';
6
+ export * from './webserver';
7
+ export const getDevServerActionProcessors = async (qpqConfig, dynamicModuleLoader) => {
8
+ const storyActionProcessor = {
9
+ // Start with all the aws action processors..
10
+ ...(await getAwsActionProcessors(qpqConfig, dynamicModuleLoader)),
11
+ // Override with custom ones
12
+ ...(await getCoreActionProcessor(qpqConfig, dynamicModuleLoader)),
13
+ ...(await getWebserverActionProcessor(qpqConfig, dynamicModuleLoader)),
14
+ // Always done last, so they can ovveride the default ones if the user wants.
15
+ ...(await getCustomActionActionProcessor(qpqConfig, dynamicModuleLoader)),
16
+ };
17
+ return storyActionProcessor;
18
+ };
@@ -0,0 +1,2 @@
1
+ import { ActionProcessorListResolver } from 'quidproquo-core';
2
+ export declare const getWebserverActionProcessor: ActionProcessorListResolver;
@@ -0,0 +1,4 @@
1
+ import { getServiceFunctionActionProcessor } from './serviceFunctionOverride';
2
+ export const getWebserverActionProcessor = async (qpqConfig, dynamicModuleLoader) => ({
3
+ ...(await getServiceFunctionActionProcessor(qpqConfig, dynamicModuleLoader)),
4
+ });
@@ -0,0 +1,2 @@
1
+ import { ActionProcessorListResolver } from 'quidproquo-core';
2
+ export declare const getServiceFunctionExecuteActionProcessor: ActionProcessorListResolver;
@@ -0,0 +1,29 @@
1
+ import { actionResult, actionResultError, } from 'quidproquo-core';
2
+ import { ServiceFunctionActionType } from 'quidproquo-webserver';
3
+ import { eventBus } from '../../../logic/eventBus';
4
+ const getProcessExecute = (qpqConfig, dynamicModuleLoader) => {
5
+ return async ({ functionName, service, payload, context, isAsync }, session) => {
6
+ const serviceFunctionEvent = {
7
+ functionName: functionName,
8
+ serviceName: service,
9
+ payload: payload,
10
+ storySession: {
11
+ ...session,
12
+ context,
13
+ },
14
+ };
15
+ const eventPromise = eventBus.publishAndWaitForResponse(ServiceFunctionActionType.Execute, serviceFunctionEvent);
16
+ if (isAsync) {
17
+ return actionResult(void 0);
18
+ }
19
+ const response = await eventPromise;
20
+ if (response.error) {
21
+ return actionResultError(response.error.errorType, response.error.errorText, response.error.errorStack);
22
+ }
23
+ console.log('Result', response.result);
24
+ return actionResult(response.result);
25
+ };
26
+ };
27
+ export const getServiceFunctionExecuteActionProcessor = async (qpqConfig, dynamicModuleLoader) => ({
28
+ [ServiceFunctionActionType.Execute]: getProcessExecute(qpqConfig, dynamicModuleLoader),
29
+ });
@@ -0,0 +1,2 @@
1
+ import { ActionProcessorListResolver } from 'quidproquo-core';
2
+ export declare const getServiceFunctionActionProcessor: ActionProcessorListResolver;
@@ -0,0 +1,4 @@
1
+ import { getServiceFunctionExecuteActionProcessor } from './getServiceFunctionExecuteActionProcessor';
2
+ export const getServiceFunctionActionProcessor = async (qpqConfig, dynamicModuleLoader) => ({
3
+ ...(await getServiceFunctionExecuteActionProcessor(qpqConfig, dynamicModuleLoader)),
4
+ });
@@ -0,0 +1,2 @@
1
+ import { DevServerConfig } from '../types';
2
+ export declare const apiImplementation: (devServerConfig: DevServerConfig) => Promise<void>;
@@ -0,0 +1,129 @@
1
+ import { askProcessEvent, qpqCoreUtils, qpqExecuteLog, QpqRuntimeType } from 'quidproquo-core';
2
+ import { qpqWebServerUtils } from 'quidproquo-webserver';
3
+ import bodyParser from 'body-parser';
4
+ import express from 'express';
5
+ import multer from 'multer';
6
+ import path from 'path';
7
+ import { getExpressApiEventEventProcessor } from '../actionProcessor';
8
+ import { getAllServiceConfigs } from '../allServiceConfig';
9
+ import { processEvent } from '../logic';
10
+ const getServiceBaseDomain = (qpqConfig, devServerConfig) => qpqWebServerUtils.getDomainRoot(`${devServerConfig.serverDomain}:${devServerConfig.serverPort}`, qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig), qpqCoreUtils.getApplicationModuleFeature(qpqConfig));
11
+ const getApiDomainsFromConfig = (qpqConfig, devServerConfig) => {
12
+ const baseDomain = getServiceBaseDomain(qpqConfig, devServerConfig);
13
+ const serviceName = qpqCoreUtils.getApplicationModuleName(qpqConfig);
14
+ // Get apis
15
+ const apiConfigs = qpqWebServerUtils.getApiConfigs(qpqConfig);
16
+ const apiDomains = apiConfigs.map((apiConfig) => ({
17
+ apiName: apiConfig.apiName,
18
+ service: serviceName,
19
+ qpqConfig,
20
+ domain: `${apiConfig.apiSubdomain}.${baseDomain}`,
21
+ devDomain: baseDomain,
22
+ devPath: `/${apiConfig.apiSubdomain}/${serviceName}`,
23
+ }));
24
+ return apiDomains;
25
+ };
26
+ const getDynamicModuleLoader = (qpqConfig, devServerConfig) => {
27
+ const serviceName = qpqCoreUtils.getApplicationModuleName(qpqConfig);
28
+ return async (runtime) => devServerConfig.dynamicModuleLoader(serviceName, runtime);
29
+ };
30
+ export const apiImplementation = async (devServerConfig) => {
31
+ const allServiceConfig = getAllServiceConfigs(devServerConfig);
32
+ const app = express();
33
+ app.use(multer().any());
34
+ app.use(bodyParser.json({ limit: '50mb' }));
35
+ const apiConfigs = allServiceConfig.map((qpqConfig) => getApiDomainsFromConfig(qpqConfig, devServerConfig)).flat();
36
+ console.log(apiConfigs.map((ac) => ac.devPath));
37
+ const adminFrontend = path.join(__dirname, '../../..', 'node_modules', 'quidproquo-web-admin', 'lib');
38
+ // Admin page
39
+ app.use('/admin', express.static(adminFrontend));
40
+ app.get('/admin/service/log/list', (req, res) => {
41
+ // Manually set CORS headers
42
+ res.header('Access-Control-Allow-Headers', '*');
43
+ res.header('Access-Control-Allow-Methods', '*');
44
+ res.header('Access-Control-Allow-Origin', '*');
45
+ res.header('Access-Control-Allow-Credentials', 'false');
46
+ const serviceList = allServiceConfig.map((qpqConfig) => qpqCoreUtils.getApplicationModuleName(qpqConfig)).map((name) => `api/${name}`);
47
+ res.json(serviceList);
48
+ });
49
+ app.use(express.json());
50
+ app.options('/admin/service/log/execute', async (req, res) => {
51
+ // Manually set CORS headers
52
+ res.header('Access-Control-Allow-Headers', '*');
53
+ res.header('Access-Control-Allow-Methods', '*');
54
+ res.header('Access-Control-Allow-Origin', '*');
55
+ res.header('Access-Control-Allow-Credentials', 'false');
56
+ res.json({ done: true });
57
+ });
58
+ app.get('/mf-manifest-location.json', async (req, res) => {
59
+ // Manually set CORS headers
60
+ res.header('Access-Control-Allow-Headers', '*');
61
+ res.header('Access-Control-Allow-Methods', '*');
62
+ res.header('Access-Control-Allow-Origin', '*');
63
+ res.header('Access-Control-Allow-Credentials', 'false');
64
+ res.json({ location: 'http://localhost:3005/mf-manifest.json' });
65
+ });
66
+ app.post('/admin/service/log/execute', async (req, res) => {
67
+ // Manually set CORS headers
68
+ res.header('Access-Control-Allow-Headers', '*');
69
+ res.header('Access-Control-Allow-Methods', '*');
70
+ res.header('Access-Control-Allow-Origin', '*');
71
+ res.header('Access-Control-Allow-Credentials', 'false');
72
+ // TODO: Get list of services from config dynamically
73
+ const serviceLog = req.body;
74
+ let runtimeModule = askProcessEvent;
75
+ if (serviceLog.runtimeType === QpqRuntimeType.EXECUTE_STORY) {
76
+ const [srcEntry, module] = serviceLog.tags[0].split('::');
77
+ const loadedModule = await devServerConfig.dynamicModuleLoader(serviceLog.moduleName, srcEntry);
78
+ runtimeModule = loadedModule[module];
79
+ }
80
+ const result = await qpqExecuteLog(serviceLog, runtimeModule);
81
+ res.json(result);
82
+ });
83
+ // Proxy for all services
84
+ app.all('*', async (req, res) => {
85
+ const apiConfig = apiConfigs.find((c) => req.url.startsWith(`${c.devPath}/`));
86
+ if (apiConfig) {
87
+ console.log(`[${req.method}::${req.socket.remoteAddress}]: ${req.protocol}://${req.get('host')}${req.url}`);
88
+ const event = {
89
+ protocol: req.protocol,
90
+ host: req.get('host') || devServerConfig.serverDomain,
91
+ path: req.url.substring(apiConfig.devPath.length).split('?')[0],
92
+ ip: req.socket.remoteAddress || '127.0.0.1',
93
+ query: req.query,
94
+ correlation: '',
95
+ headers: req.headers,
96
+ method: req.method,
97
+ isBase64Encoded: false,
98
+ body: typeof req.body === 'object' ? JSON.stringify(req.body) : req.body,
99
+ };
100
+ if (req.files) {
101
+ event.files = req.files.map((file) => ({
102
+ base64Data: file.buffer.toString('base64'),
103
+ filename: file.originalname,
104
+ mimetype: file.mimetype,
105
+ }));
106
+ }
107
+ const response = await processEvent(event, apiConfig.qpqConfig, getDynamicModuleLoader(apiConfig.qpqConfig, devServerConfig), getExpressApiEventEventProcessor, QpqRuntimeType.API);
108
+ if (response.result) {
109
+ for (const [header, value] of Object.entries(response.result.headers)) {
110
+ res.set(header, value);
111
+ }
112
+ if (response.result.isBase64Encoded) {
113
+ res.status(response.result.statusCode).send(Buffer.from(response.result.body, 'base64'));
114
+ }
115
+ else {
116
+ res.status(response.result.statusCode).send(response.result.body);
117
+ }
118
+ }
119
+ }
120
+ else {
121
+ console.log(`NotFound::[${req.method}::${req.socket.remoteAddress}]: ${req.protocol}://${req.get('host')}${req.url}`);
122
+ res.status(500).send({ message: 'resource does not exist' });
123
+ }
124
+ });
125
+ app.listen(devServerConfig.serverPort, '0.0.0.0', () => {
126
+ const baseDomain = getServiceBaseDomain(allServiceConfig[0], devServerConfig);
127
+ console.log(`⚡️⚡️⚡️[Qpq - Dev Server]⚡️⚡️⚡️: Server is running at [http://${baseDomain}]`);
128
+ });
129
+ };
@@ -0,0 +1,2 @@
1
+ import { DevServerConfig } from '../types';
2
+ export declare const eventBusImplementation: (devServerConfig: DevServerConfig) => Promise<void>;
@@ -0,0 +1,40 @@
1
+ import { EventBusActionType, qpqCoreUtils, QueueActionType } from 'quidproquo-core';
2
+ import { v4 as uuidV4 } from 'uuid';
3
+ import { eventBus } from '../logic';
4
+ const processQueueEventBusSubscriptions = async (qpqConfig, ebMessage) => {
5
+ const allEventBuses = qpqCoreUtils.getAllEventBusConfigs(qpqConfig).filter((ebc) => {
6
+ return ((!ebc.owner?.application || ebc.owner?.application === ebMessage.targetApplication) &&
7
+ (!ebc.owner?.environment || ebc.owner?.environment === ebMessage.targetEnvironment) &&
8
+ (!ebc.owner?.module || ebc.owner?.module === ebMessage.targetModule) &&
9
+ ((!ebc.owner?.feature && !ebMessage.targetFeature) || ebc.owner?.feature === ebMessage.targetFeature));
10
+ });
11
+ // All the queues that we should publish to
12
+ const queues = qpqCoreUtils.getQueues(qpqConfig).filter((q) => {
13
+ return !!q.eventBusSubscriptions.find((ebsub) => {
14
+ return allEventBuses.some((eb) => ebsub === eb.owner?.resourceNameOverride || (!eb.owner?.resourceNameOverride && ebsub === eb.name));
15
+ });
16
+ });
17
+ for (const queue of queues) {
18
+ const queueMessage = {
19
+ payload: ebMessage.payload,
20
+ type: ebMessage.type,
21
+ storySession: ebMessage.storySession,
22
+ queueName: queue.name,
23
+ targetApplication: queue.owner?.application || qpqCoreUtils.getApplicationName(qpqConfig),
24
+ targetEnvironment: queue.owner?.environment || qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig),
25
+ targetFeature: queue.owner?.feature || qpqCoreUtils.getApplicationModuleFeature(qpqConfig),
26
+ targetModule: queue.owner?.module || qpqCoreUtils.getApplicationModuleName(qpqConfig),
27
+ messageId: uuidV4(),
28
+ };
29
+ eventBus.publish(QueueActionType.SendMessages, queueMessage);
30
+ }
31
+ };
32
+ export const eventBusImplementation = async (devServerConfig) => {
33
+ eventBus.on(EventBusActionType.SendMessages, async (payload, correlation) => {
34
+ for (const qpqConfig of devServerConfig.qpqConfigs) {
35
+ await processQueueEventBusSubscriptions(qpqConfig, payload);
36
+ }
37
+ });
38
+ // Never ends
39
+ await new Promise(() => { });
40
+ };
@@ -1 +1,4 @@
1
- export * from './route';
1
+ export * from './apiImplementation';
2
+ export * from './eventBusImplementation';
3
+ export * from './queueImplementation';
4
+ export * from './serviceFunctionImplementation';
@@ -1 +1,4 @@
1
- export * from './route';
1
+ export * from './apiImplementation';
2
+ export * from './eventBusImplementation';
3
+ export * from './queueImplementation';
4
+ export * from './serviceFunctionImplementation';
@@ -0,0 +1,2 @@
1
+ import { DevServerConfig } from '../types';
2
+ export declare const queueImplementation: (devServerConfig: DevServerConfig) => Promise<void>;
@@ -0,0 +1,34 @@
1
+ import { qpqCoreUtils, QpqRuntimeType, QueueActionType } from 'quidproquo-core';
2
+ import { getQueueEventProcessor } from '../actionProcessor/core/event/queue';
3
+ import { eventBus, processEvent } from '../logic';
4
+ const getDynamicModuleLoader = (qpqConfig, devServerConfig) => {
5
+ const serviceName = qpqCoreUtils.getApplicationModuleName(qpqConfig);
6
+ return async (runtime) => devServerConfig.dynamicModuleLoader(serviceName, runtime);
7
+ };
8
+ const processQueueMessages = async (qpqConfig, payload, devServerConfig) => {
9
+ if (payload.targetEnvironment !== qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig)) {
10
+ return;
11
+ }
12
+ if (payload.targetApplication !== qpqCoreUtils.getApplicationName(qpqConfig)) {
13
+ return;
14
+ }
15
+ if (payload.targetModule !== qpqCoreUtils.getApplicationModuleName(qpqConfig)) {
16
+ return;
17
+ }
18
+ const feature = qpqCoreUtils.getApplicationModuleFeature(qpqConfig);
19
+ if ((!!payload.targetFeature || !!feature) && payload.targetFeature !== qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig)) {
20
+ return;
21
+ }
22
+ console.log('Ready to process: ', JSON.stringify(payload, null, 2));
23
+ await processEvent(payload, qpqConfig, getDynamicModuleLoader(qpqConfig, devServerConfig), getQueueEventProcessor, QpqRuntimeType.QUEUE_EVENT);
24
+ };
25
+ export const queueImplementation = async (devServerConfig) => {
26
+ eventBus.on(QueueActionType.SendMessages, async (payload, correlation) => {
27
+ console.log('Got QUEUE send message event');
28
+ for (const qpqConfig of devServerConfig.qpqConfigs) {
29
+ await processQueueMessages(qpqConfig, payload, devServerConfig);
30
+ }
31
+ });
32
+ // Never ends
33
+ await new Promise(() => { });
34
+ };
@@ -0,0 +1,2 @@
1
+ import { DevServerConfig } from '../types';
2
+ export declare const serviceFunctionImplementation: (devServerConfig: DevServerConfig) => Promise<void>;
@@ -0,0 +1,21 @@
1
+ import { qpqCoreUtils, QpqRuntimeType } from 'quidproquo-core';
2
+ import { ServiceFunctionActionType } from 'quidproquo-webserver';
3
+ import { getNodeServiceFunctionEventProcessor } from '../actionProcessor';
4
+ import { eventBus, processEvent } from '../logic';
5
+ const getDynamicModuleLoader = (qpqConfig, devServerConfig) => {
6
+ const serviceName = qpqCoreUtils.getApplicationModuleName(qpqConfig);
7
+ return async (runtime) => devServerConfig.dynamicModuleLoader(serviceName, runtime);
8
+ };
9
+ export const serviceFunctionImplementation = async (devServerConfig) => {
10
+ eventBus.on(ServiceFunctionActionType.Execute, async (payload, correlation) => {
11
+ // We need to find the qpqConfig for this service.
12
+ const qpqConfig = devServerConfig.qpqConfigs.find((qpqConfig) => qpqCoreUtils.getApplicationModuleName(qpqConfig) === payload.serviceName);
13
+ const eventPromise = await processEvent(payload, qpqConfig, getDynamicModuleLoader(qpqConfig, devServerConfig), getNodeServiceFunctionEventProcessor, QpqRuntimeType.SERVICE_FUNCTION_EXE);
14
+ if (correlation) {
15
+ // Emit the response back on the unique responseEvent channel
16
+ eventBus.emit(correlation, eventPromise);
17
+ }
18
+ });
19
+ // Never ends
20
+ await new Promise(() => { });
21
+ };
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ declare class EventBus extends EventEmitter {
4
+ private static instance;
5
+ private constructor();
6
+ static getInstance(): EventBus;
7
+ publishAndWaitForResponse(eventType: string, payload: any): Promise<any>;
8
+ publish(eventType: string, payload: any): Promise<void>;
9
+ }
10
+ export declare const eventBus: EventBus;
11
+ export {};
@@ -0,0 +1,31 @@
1
+ // EventBus.ts
2
+ import { EventEmitter } from 'events';
3
+ import { v4 as uuidv4 } from 'uuid';
4
+ class EventBus extends EventEmitter {
5
+ static instance;
6
+ constructor() {
7
+ super();
8
+ }
9
+ static getInstance() {
10
+ if (!EventBus.instance) {
11
+ EventBus.instance = new EventBus();
12
+ }
13
+ return EventBus.instance;
14
+ }
15
+ async publishAndWaitForResponse(eventType, payload) {
16
+ return new Promise((resolve) => {
17
+ const responseCorrelation = uuidv4();
18
+ // Listen for the response once
19
+ this.once(responseCorrelation, (response) => {
20
+ resolve(response);
21
+ });
22
+ // Emit the event along with the response event name
23
+ this.emit(eventType, payload, responseCorrelation);
24
+ });
25
+ }
26
+ async publish(eventType, payload) {
27
+ this.emit(eventType, payload);
28
+ }
29
+ }
30
+ // Exporting a singleton instance of EventBus
31
+ export const eventBus = EventBus.getInstance();
@@ -0,0 +1,2 @@
1
+ export * from './eventBus';
2
+ export * from './processEvent';
@@ -0,0 +1,2 @@
1
+ export * from './eventBus';
2
+ export * from './processEvent';
@@ -0,0 +1,2 @@
1
+ import { ActionProcessorListResolver, DynamicModuleLoader, QPQConfig, QpqRuntimeType, StoryResult } from 'quidproquo-core';
2
+ export declare const processEvent: <E, ER>(expressEvent: E, qpqConfig: QPQConfig, dynamicModuleLoader: DynamicModuleLoader, getActionProcessors: ActionProcessorListResolver, qpqRuntimeType: QpqRuntimeType) => Promise<StoryResult<[E], ER>>;
@@ -0,0 +1,20 @@
1
+ import { getLogger } from 'quidproquo-actionprocessor-awslambda';
2
+ import { askProcessEvent, createRuntime, qpqCoreUtils, } from 'quidproquo-core';
3
+ import { randomUUID } from 'crypto';
4
+ import { getDevServerActionProcessors } from '../actionProcessor';
5
+ // TODO: Make this a util or something based on server time or something..
6
+ const getDateNow = () => new Date().toISOString();
7
+ export const processEvent = async (expressEvent, qpqConfig, dynamicModuleLoader, getActionProcessors, qpqRuntimeType) => {
8
+ const serviceName = qpqCoreUtils.getApplicationModuleName(qpqConfig);
9
+ const logger = getLogger(qpqConfig);
10
+ const resolveStory = createRuntime(qpqConfig, {
11
+ depth: 0,
12
+ context: {},
13
+ }, async () => ({
14
+ ...(await getDevServerActionProcessors(qpqConfig, dynamicModuleLoader)),
15
+ ...(await getActionProcessors(qpqConfig, dynamicModuleLoader)),
16
+ }), getDateNow, logger, `${serviceName}::${randomUUID()}`, qpqRuntimeType, dynamicModuleLoader, []);
17
+ const result = await resolveStory(askProcessEvent, [expressEvent]);
18
+ await logger.waitToFinishWriting();
19
+ return result;
20
+ };
package/lib/esm/main.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import { DevServerConfig } from './types';
2
+ export * from './implementations';
2
3
  export declare const startDevServer: (devServerConfig: DevServerConfig) => Promise<void>;
package/lib/esm/main.js CHANGED
@@ -1,125 +1,11 @@
1
- import { askProcessEvent, qpqCoreUtils, qpqExecuteLog, QpqRuntimeType } from 'quidproquo-core';
2
- import { qpqWebServerUtils } from 'quidproquo-webserver';
3
- import bodyParser from 'body-parser';
4
- import express from 'express';
5
- import multer from 'multer';
6
- import path from 'path';
7
- import { getAllServiceConfigs } from './allServiceConfig';
8
- import { route } from './implementations';
9
- const getServiceBaseDomain = (qpqConfig, devServerConfig) => qpqWebServerUtils.getDomainRoot(`${devServerConfig.serverDomain}:${devServerConfig.serverPort}`, qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig), qpqCoreUtils.getApplicationModuleFeature(qpqConfig));
10
- const getApiDomainsFromConfig = (qpqConfig, devServerConfig) => {
11
- const baseDomain = getServiceBaseDomain(qpqConfig, devServerConfig);
12
- const serviceName = qpqCoreUtils.getApplicationModuleName(qpqConfig);
13
- // Get apis
14
- const apiConfigs = qpqWebServerUtils.getApiConfigs(qpqConfig);
15
- const apiDomains = apiConfigs.map((apiConfig) => ({
16
- apiName: apiConfig.apiName,
17
- service: serviceName,
18
- qpqConfig,
19
- domain: `${apiConfig.apiSubdomain}.${baseDomain}`,
20
- devDomain: baseDomain,
21
- devPath: `/${apiConfig.apiSubdomain}/${serviceName}`,
22
- }));
23
- return apiDomains;
24
- };
25
- const getDynamicModuleLoader = (qpqConfig, devServerConfig) => {
26
- const serviceName = qpqCoreUtils.getApplicationModuleName(qpqConfig);
27
- return async (runtime) => devServerConfig.dynamicModuleLoader(serviceName, runtime);
28
- };
1
+ import { apiImplementation, eventBusImplementation, queueImplementation, serviceFunctionImplementation } from './implementations';
2
+ export * from './implementations';
29
3
  export const startDevServer = async (devServerConfig) => {
30
- const allServiceConfig = await getAllServiceConfigs(devServerConfig);
31
- const app = express();
32
- app.use(multer().any());
33
- app.use(bodyParser.json({ limit: '50mb' }));
34
- const apiConfigs = allServiceConfig.map((qpqConfig) => getApiDomainsFromConfig(qpqConfig, devServerConfig)).flat();
35
- const adminFrontend = path.join(__dirname, '../../..', 'node_modules', 'quidproquo-web-admin', 'lib');
36
- // Admin page
37
- app.use('/admin', express.static(adminFrontend));
38
- app.get('/admin/service/log/list', (req, res) => {
39
- // Manually set CORS headers
40
- res.header('Access-Control-Allow-Headers', '*');
41
- res.header('Access-Control-Allow-Methods', '*');
42
- res.header('Access-Control-Allow-Origin', '*');
43
- res.header('Access-Control-Allow-Credentials', 'false');
44
- const serviceList = allServiceConfig.map((qpqConfig) => qpqCoreUtils.getApplicationModuleName(qpqConfig)).map((name) => `api/${name}`);
45
- res.json(serviceList);
46
- });
47
- app.use(express.json());
48
- app.options('/admin/service/log/execute', async (req, res) => {
49
- // Manually set CORS headers
50
- res.header('Access-Control-Allow-Headers', '*');
51
- res.header('Access-Control-Allow-Methods', '*');
52
- res.header('Access-Control-Allow-Origin', '*');
53
- res.header('Access-Control-Allow-Credentials', 'false');
54
- res.json({ done: true });
55
- });
56
- app.get('/mf-manifest-location.json', async (req, res) => {
57
- // Manually set CORS headers
58
- res.header('Access-Control-Allow-Headers', '*');
59
- res.header('Access-Control-Allow-Methods', '*');
60
- res.header('Access-Control-Allow-Origin', '*');
61
- res.header('Access-Control-Allow-Credentials', 'false');
62
- res.json({ location: 'http://localhost:3005/mf-manifest.json' });
63
- });
64
- app.post('/admin/service/log/execute', async (req, res) => {
65
- // Manually set CORS headers
66
- res.header('Access-Control-Allow-Headers', '*');
67
- res.header('Access-Control-Allow-Methods', '*');
68
- res.header('Access-Control-Allow-Origin', '*');
69
- res.header('Access-Control-Allow-Credentials', 'false');
70
- // TODO: Get list of services from config dynamically
71
- const serviceLog = req.body;
72
- let runtimeModule = askProcessEvent;
73
- if (serviceLog.runtimeType === QpqRuntimeType.EXECUTE_STORY) {
74
- const [srcEntry, module] = serviceLog.tags[0].split('::');
75
- const loadedModule = await devServerConfig.dynamicModuleLoader(serviceLog.moduleName, srcEntry);
76
- runtimeModule = loadedModule[module];
77
- }
78
- const result = await qpqExecuteLog(serviceLog, runtimeModule);
79
- res.json(result);
80
- });
81
- // Proxy for all services
82
- app.all('*', async (req, res) => {
83
- const apiConfig = apiConfigs.find((c) => req.url.startsWith(`${c.devPath}/`));
84
- if (apiConfig) {
85
- console.log(`[${req.method}::${req.socket.remoteAddress}]: ${req.protocol}://${req.get('host')}${req.url}`);
86
- const event = {
87
- protocol: req.protocol,
88
- host: req.get('host') || devServerConfig.serverDomain,
89
- path: req.url.substring(apiConfig.devPath.length).split('?')[0],
90
- ip: req.socket.remoteAddress || '127.0.0.1',
91
- query: req.query,
92
- correlation: '',
93
- headers: req.headers,
94
- method: req.method,
95
- isBase64Encoded: false,
96
- body: typeof req.body === 'object' ? JSON.stringify(req.body) : req.body,
97
- };
98
- if (req.files) {
99
- event.files = req.files.map((file) => ({
100
- base64Data: file.buffer.toString('base64'),
101
- filename: file.originalname,
102
- mimetype: file.mimetype,
103
- }));
104
- }
105
- const response = await route(event, apiConfig.qpqConfig, getDynamicModuleLoader(apiConfig.qpqConfig, devServerConfig));
106
- for (const [header, value] of Object.entries(response.headers)) {
107
- res.set(header, value);
108
- }
109
- if (response.isBase64Encoded) {
110
- res.status(response.statusCode).send(Buffer.from(response.body, 'base64'));
111
- }
112
- else {
113
- res.status(response.statusCode).send(response.body);
114
- }
115
- }
116
- else {
117
- console.log(`NotFound::[${req.method}::${req.socket.remoteAddress}]: ${req.protocol}://${req.get('host')}${req.url}`);
118
- res.status(500).send({ message: 'resource does not exist' });
119
- }
120
- });
121
- app.listen(devServerConfig.serverPort, '0.0.0.0', () => {
122
- const baseDomain = getServiceBaseDomain(allServiceConfig[0], devServerConfig);
123
- console.log(`⚡️⚡️⚡️[Qpq - Dev Server]⚡️⚡️⚡️: Server is running at [http://${baseDomain}]`);
124
- });
4
+ console.log('Starting QPQ Dev Server!!!');
5
+ await Promise.all([
6
+ apiImplementation(devServerConfig),
7
+ serviceFunctionImplementation(devServerConfig),
8
+ eventBusImplementation(devServerConfig),
9
+ queueImplementation(devServerConfig),
10
+ ]);
125
11
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quidproquo-dev-server",
3
- "version": "0.0.237",
3
+ "version": "0.0.239",
4
4
  "description": "",
5
5
  "main": "./lib/commonjs/index.js",
6
6
  "module": "./lib/esm/index.js",
@@ -33,14 +33,14 @@
33
33
  "homepage": "https://github.com/joe-coady/quidproquo#readme",
34
34
  "dependencies": {
35
35
  "multer": "^1.4.5-lts.1",
36
- "quidproquo-core": "0.0.237",
37
- "quidproquo-webserver": "0.0.237",
38
- "quidproquo-actionprocessor-awslambda": "0.0.237",
39
- "quidproquo-actionprocessor-node": "0.0.237"
36
+ "quidproquo-core": "0.0.239",
37
+ "quidproquo-webserver": "0.0.239",
38
+ "quidproquo-actionprocessor-awslambda": "0.0.239",
39
+ "quidproquo-actionprocessor-node": "0.0.239"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/multer": "^1.4.12",
43
- "quidproquo-tsconfig": "0.0.237",
43
+ "quidproquo-tsconfig": "0.0.239",
44
44
  "typescript": "^4.9.3"
45
45
  }
46
46
  }
@@ -1 +0,0 @@
1
- export * from './express';
@@ -1 +0,0 @@
1
- export * from './event';
@@ -1 +0,0 @@
1
- export * from './core';
@@ -1,3 +0,0 @@
1
- import { DynamicModuleLoader, QPQConfig } from 'quidproquo-core';
2
- import { ExpressEvent, ExpressEventResponse } from '../types';
3
- export declare const route: (expressEvent: ExpressEvent, qpqConfig: QPQConfig, dynamicModuleLoader: DynamicModuleLoader) => Promise<ExpressEventResponse>;