@forklaunch/core 1.5.1 → 1.5.3

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 (265) hide show
  1. package/lib/cache/{index.d.mts → cacheKey.d.ts} +2 -6
  2. package/lib/cache/cacheKey.d.ts.map +1 -0
  3. package/lib/cache/index.d.ts +4 -15
  4. package/lib/cache/index.d.ts.map +1 -0
  5. package/lib/{ttlCache.interface-B3xaLT00.d.ts → cache/interfaces/ttlCache.interface.d.ts} +3 -5
  6. package/lib/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
  7. package/lib/{ttlCacheRecord.types-oX0ti5SP.d.mts → cache/types/ttlCacheRecord.types.d.ts} +3 -4
  8. package/lib/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
  9. package/lib/controllers/index.d.ts +2 -13
  10. package/lib/controllers/index.d.ts.map +1 -0
  11. package/lib/controllers/{index.d.mts → interfaces/controller.interface.d.ts} +2 -3
  12. package/lib/controllers/interfaces/controller.interface.d.ts.map +1 -0
  13. package/lib/environment/index.d.ts +2 -28
  14. package/lib/environment/index.d.ts.map +1 -0
  15. package/lib/environment/{index.d.mts → loadCascadingEnv.d.ts} +4 -5
  16. package/lib/environment/loadCascadingEnv.d.ts.map +1 -0
  17. package/lib/http/application/expressLikeApplication.d.ts +34 -0
  18. package/lib/http/application/expressLikeApplication.d.ts.map +1 -0
  19. package/lib/http/bootstrap/listen.d.ts +2 -0
  20. package/lib/http/bootstrap/listen.d.ts.map +1 -0
  21. package/lib/http/cluster/cluster.types.d.ts +17 -0
  22. package/lib/http/cluster/cluster.types.d.ts.map +1 -0
  23. package/lib/http/cluster/isPortBound.d.ts +2 -0
  24. package/lib/http/cluster/isPortBound.d.ts.map +1 -0
  25. package/lib/http/createHmacToken.d.ts +19 -0
  26. package/lib/http/createHmacToken.d.ts.map +1 -0
  27. package/lib/http/discriminateAuthMethod.d.ts +85 -0
  28. package/lib/http/discriminateAuthMethod.d.ts.map +1 -0
  29. package/lib/http/generateHmacAuthHeaders.d.ts +31 -0
  30. package/lib/http/generateHmacAuthHeaders.d.ts.map +1 -0
  31. package/lib/http/guards/hasFeatureChecks.d.ts +2 -0
  32. package/lib/http/guards/hasFeatureChecks.d.ts.map +1 -0
  33. package/lib/http/guards/hasPermissionChecks.d.ts +2 -0
  34. package/lib/http/guards/hasPermissionChecks.d.ts.map +1 -0
  35. package/lib/http/guards/hasRoleChecks.d.ts +2 -0
  36. package/lib/http/guards/hasRoleChecks.d.ts.map +1 -0
  37. package/lib/http/guards/hasScopeChecks.d.ts +2 -0
  38. package/lib/http/guards/hasScopeChecks.d.ts.map +1 -0
  39. package/lib/http/guards/hasSend.d.ts +17 -0
  40. package/lib/http/guards/hasSend.d.ts.map +1 -0
  41. package/lib/http/guards/hasSubscriptionChecks.d.ts +2 -0
  42. package/lib/http/guards/hasSubscriptionChecks.d.ts.map +1 -0
  43. package/lib/http/guards/hasVersionedSchema.d.ts +2 -0
  44. package/lib/http/guards/hasVersionedSchema.d.ts.map +1 -0
  45. package/lib/http/guards/isBasicAuthMethod.d.ts +3 -0
  46. package/lib/http/guards/isBasicAuthMethod.d.ts.map +1 -0
  47. package/lib/http/guards/isConstrainedForklaunchRouter.d.ts +21 -0
  48. package/lib/http/guards/isConstrainedForklaunchRouter.d.ts.map +1 -0
  49. package/lib/http/guards/isExpressLikeSchemaHandler.d.ts +32 -0
  50. package/lib/http/guards/isExpressLikeSchemaHandler.d.ts.map +1 -0
  51. package/lib/http/guards/isForklaunchExpressLikeRouter.d.ts +28 -0
  52. package/lib/http/guards/isForklaunchExpressLikeRouter.d.ts.map +1 -0
  53. package/lib/http/guards/isForklaunchRequest.d.ts +26 -0
  54. package/lib/http/guards/isForklaunchRequest.d.ts.map +1 -0
  55. package/lib/http/guards/isForklaunchResponse.d.ts +23 -0
  56. package/lib/http/guards/isForklaunchResponse.d.ts.map +1 -0
  57. package/lib/http/guards/isForklaunchRouter.d.ts +21 -0
  58. package/lib/http/guards/isForklaunchRouter.d.ts.map +1 -0
  59. package/lib/http/guards/isHmacMethod.d.ts +9 -0
  60. package/lib/http/guards/isHmacMethod.d.ts.map +1 -0
  61. package/lib/http/guards/isHttpContractDetails.d.ts +29 -0
  62. package/lib/http/guards/isHttpContractDetails.d.ts.map +1 -0
  63. package/lib/http/guards/isJwtAuthMethod.d.ts +3 -0
  64. package/lib/http/guards/isJwtAuthMethod.d.ts.map +1 -0
  65. package/lib/http/guards/isLoggerMeta.d.ts +3 -0
  66. package/lib/http/guards/isLoggerMeta.d.ts.map +1 -0
  67. package/lib/http/guards/isPath.d.ts +2 -0
  68. package/lib/http/guards/isPath.d.ts.map +1 -0
  69. package/lib/http/guards/isPathParamContractDetails.d.ts +4 -0
  70. package/lib/http/guards/isPathParamContractDetails.d.ts.map +1 -0
  71. package/lib/http/guards/isRequestShape.d.ts +3 -0
  72. package/lib/http/guards/isRequestShape.d.ts.map +1 -0
  73. package/lib/http/guards/isResponseCompiledSchema.d.ts +3 -0
  74. package/lib/http/guards/isResponseCompiledSchema.d.ts.map +1 -0
  75. package/lib/http/guards/isSdkHandler.d.ts +9 -0
  76. package/lib/http/guards/isSdkHandler.d.ts.map +1 -0
  77. package/lib/http/guards/isSdkRouter.d.ts +9 -0
  78. package/lib/http/guards/isSdkRouter.d.ts.map +1 -0
  79. package/lib/http/guards/isTypedHandler.d.ts +5 -0
  80. package/lib/http/guards/isTypedHandler.d.ts.map +1 -0
  81. package/lib/http/guards/isVersionedInputSchema.d.ts +3 -0
  82. package/lib/http/guards/isVersionedInputSchema.d.ts.map +1 -0
  83. package/lib/http/handlers/delete.d.ts +5 -0
  84. package/lib/http/handlers/delete.d.ts.map +1 -0
  85. package/lib/http/handlers/get.d.ts +5 -0
  86. package/lib/http/handlers/get.d.ts.map +1 -0
  87. package/lib/http/handlers/head.d.ts +5 -0
  88. package/lib/http/handlers/head.d.ts.map +1 -0
  89. package/lib/http/handlers/middleware.d.ts +10 -0
  90. package/lib/http/handlers/middleware.d.ts.map +1 -0
  91. package/lib/http/handlers/options.d.ts +5 -0
  92. package/lib/http/handlers/options.d.ts.map +1 -0
  93. package/lib/http/handlers/patch.d.ts +5 -0
  94. package/lib/http/handlers/patch.d.ts.map +1 -0
  95. package/lib/http/handlers/post.d.ts +5 -0
  96. package/lib/http/handlers/post.d.ts.map +1 -0
  97. package/lib/http/handlers/put.d.ts +5 -0
  98. package/lib/http/handlers/put.d.ts.map +1 -0
  99. package/lib/http/handlers/trace.d.ts +5 -0
  100. package/lib/http/handlers/trace.d.ts.map +1 -0
  101. package/lib/http/handlers/typedAuthHandler.d.ts +5 -0
  102. package/lib/http/handlers/typedAuthHandler.d.ts.map +1 -0
  103. package/lib/http/handlers/typedHandler.d.ts +14 -0
  104. package/lib/http/handlers/typedHandler.d.ts.map +1 -0
  105. package/lib/http/httpStatusCodes.d.ts +75 -0
  106. package/lib/http/httpStatusCodes.d.ts.map +1 -0
  107. package/lib/http/index.d.ts +47 -1244
  108. package/lib/http/index.d.ts.map +1 -0
  109. package/lib/http/index.js +445 -410
  110. package/lib/http/index.js.map +1 -1
  111. package/lib/http/index.mjs +439 -407
  112. package/lib/http/index.mjs.map +1 -1
  113. package/lib/http/interfaces/expressLikeRouter.interface.d.ts +25 -0
  114. package/lib/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
  115. package/lib/http/mcpGenerator/mcpGenerator.d.ts +17 -0
  116. package/lib/http/mcpGenerator/mcpGenerator.d.ts.map +1 -0
  117. package/lib/http/middleware/request/auth.middleware.d.ts +16 -0
  118. package/lib/http/middleware/request/auth.middleware.d.ts.map +1 -0
  119. package/lib/http/middleware/request/cors.middleware.d.ts +13 -0
  120. package/lib/http/middleware/request/cors.middleware.d.ts.map +1 -0
  121. package/lib/http/middleware/request/createContext.middleware.d.ts +15 -0
  122. package/lib/http/middleware/request/createContext.middleware.d.ts.map +1 -0
  123. package/lib/http/middleware/request/enrichDetails.middleware.d.ts +18 -0
  124. package/lib/http/middleware/request/enrichDetails.middleware.d.ts.map +1 -0
  125. package/lib/http/middleware/request/parse.middleware.d.ts +17 -0
  126. package/lib/http/middleware/request/parse.middleware.d.ts.map +1 -0
  127. package/lib/http/middleware/request/tenantContext.middleware.d.ts +41 -0
  128. package/lib/http/middleware/request/tenantContext.middleware.d.ts.map +1 -0
  129. package/lib/http/middleware/response/enrichExpressLikeSend.middleware.d.ts +32 -0
  130. package/lib/http/middleware/response/enrichExpressLikeSend.middleware.d.ts.map +1 -0
  131. package/lib/http/middleware/response/parse.middleware.d.ts +31 -0
  132. package/lib/http/middleware/response/parse.middleware.d.ts.map +1 -0
  133. package/lib/http/openApiV3Generator/openApiV3Generator.d.ts +17 -0
  134. package/lib/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
  135. package/lib/http/rateLimit/index.d.ts +2 -0
  136. package/lib/http/rateLimit/index.d.ts.map +1 -0
  137. package/lib/http/rateLimit/rateLimiter.d.ts +66 -0
  138. package/lib/http/rateLimit/rateLimiter.d.ts.map +1 -0
  139. package/lib/http/router/discriminateBody.d.ts +43 -0
  140. package/lib/http/router/discriminateBody.d.ts.map +1 -0
  141. package/lib/http/router/expressLikeRouter.d.ts +240 -0
  142. package/lib/http/router/expressLikeRouter.d.ts.map +1 -0
  143. package/lib/http/router/routerSharedLogic.d.ts +50 -0
  144. package/lib/http/router/routerSharedLogic.d.ts.map +1 -0
  145. package/lib/http/router/unpackRouters.d.ts +7 -0
  146. package/lib/http/router/unpackRouters.d.ts.map +1 -0
  147. package/lib/http/telemetry/auditLogger.d.ts +21 -0
  148. package/lib/http/telemetry/auditLogger.d.ts.map +1 -0
  149. package/lib/http/telemetry/constants.d.ts +6 -0
  150. package/lib/http/telemetry/constants.d.ts.map +1 -0
  151. package/lib/http/telemetry/evaluateTelemetryOptions.d.ts +11 -0
  152. package/lib/http/telemetry/evaluateTelemetryOptions.d.ts.map +1 -0
  153. package/lib/http/telemetry/metricsDefinition.d.ts +3 -0
  154. package/lib/http/telemetry/metricsDefinition.d.ts.map +1 -0
  155. package/lib/http/telemetry/openTelemetryCollector.d.ts +53 -0
  156. package/lib/http/telemetry/openTelemetryCollector.d.ts.map +1 -0
  157. package/lib/http/telemetry/pinoLogger.d.ts +20 -0
  158. package/lib/http/telemetry/pinoLogger.d.ts.map +1 -0
  159. package/lib/http/telemetry/recordMetric.d.ts +5 -0
  160. package/lib/http/telemetry/recordMetric.d.ts.map +1 -0
  161. package/lib/http/types/apiDefinition.types.d.ts +471 -0
  162. package/lib/http/types/apiDefinition.types.d.ts.map +1 -0
  163. package/lib/http/types/contractDetails.types.d.ts +404 -0
  164. package/lib/http/types/contractDetails.types.d.ts.map +1 -0
  165. package/lib/http/types/docsConfiguration.types.d.ts +7 -0
  166. package/lib/http/types/docsConfiguration.types.d.ts.map +1 -0
  167. package/lib/http/types/expressLikeOptions.d.ts +224 -0
  168. package/lib/http/types/expressLikeOptions.d.ts.map +1 -0
  169. package/lib/http/types/expressLikeRouter.types.d.ts +127 -0
  170. package/lib/http/types/expressLikeRouter.types.d.ts.map +1 -0
  171. package/lib/http/types/openTelemetryCollector.types.d.ts +21 -0
  172. package/lib/http/types/openTelemetryCollector.types.d.ts.map +1 -0
  173. package/lib/http/types/router.types.d.ts +52 -0
  174. package/lib/http/types/router.types.d.ts.map +1 -0
  175. package/lib/http/types/sdk.types.d.ts +259 -0
  176. package/lib/http/types/sdk.types.d.ts.map +1 -0
  177. package/lib/http/types/typedHandler.types.d.ts +18 -0
  178. package/lib/http/types/typedHandler.types.d.ts.map +1 -0
  179. package/lib/mappers/guards/isSchemaResolutionFunction.d.ts +10 -0
  180. package/lib/mappers/guards/isSchemaResolutionFunction.d.ts.map +1 -0
  181. package/lib/mappers/index.d.ts +3 -68
  182. package/lib/mappers/index.d.ts.map +1 -0
  183. package/lib/mappers/mapServiceSchemas.d.ts +33 -0
  184. package/lib/mappers/mapServiceSchemas.d.ts.map +1 -0
  185. package/lib/mappers/mapper.d.ts +26 -0
  186. package/lib/mappers/mapper.d.ts.map +1 -0
  187. package/lib/mappers/types/schemaResolution.types.d.ts +9 -0
  188. package/lib/mappers/types/schemaResolution.types.d.ts.map +1 -0
  189. package/lib/objectstore/index.d.ts +3 -71
  190. package/lib/objectstore/index.d.ts.map +1 -0
  191. package/lib/objectstore/{index.d.mts → interfaces/objectstore.interface.d.ts} +3 -16
  192. package/lib/objectstore/interfaces/objectstore.interface.d.ts.map +1 -0
  193. package/lib/objectstore/objectstoreKey.d.ts +11 -0
  194. package/lib/objectstore/objectstoreKey.d.ts.map +1 -0
  195. package/lib/persistence/complianceEventSubscriber.d.ts +13 -0
  196. package/lib/persistence/complianceEventSubscriber.d.ts.map +1 -0
  197. package/lib/persistence/compliancePropertyBuilder.d.ts +26 -0
  198. package/lib/persistence/compliancePropertyBuilder.d.ts.map +1 -0
  199. package/lib/persistence/complianceTypes.d.ts +64 -0
  200. package/lib/persistence/complianceTypes.d.ts.map +1 -0
  201. package/lib/persistence/defineComplianceEntity.d.ts +19 -0
  202. package/lib/persistence/defineComplianceEntity.d.ts.map +1 -0
  203. package/lib/persistence/encryptedType.d.ts +85 -0
  204. package/lib/persistence/encryptedType.d.ts.map +1 -0
  205. package/lib/persistence/fieldEncryptor.d.ts +48 -0
  206. package/lib/persistence/fieldEncryptor.d.ts.map +1 -0
  207. package/lib/persistence/index.d.ts +10 -403
  208. package/lib/persistence/index.d.ts.map +1 -0
  209. package/lib/persistence/index.js.map +1 -1
  210. package/lib/persistence/index.mjs.map +1 -1
  211. package/lib/persistence/rls.d.ts +56 -0
  212. package/lib/persistence/rls.d.ts.map +1 -0
  213. package/lib/persistence/tenantEm.d.ts +60 -0
  214. package/lib/persistence/tenantEm.d.ts.map +1 -0
  215. package/lib/persistence/tenantFilter.d.ts +47 -0
  216. package/lib/persistence/tenantFilter.d.ts.map +1 -0
  217. package/lib/secrets/index.d.ts +2 -0
  218. package/lib/secrets/index.d.ts.map +1 -0
  219. package/lib/secrets/secretsAccessor.d.ts +17 -0
  220. package/lib/secrets/secretsAccessor.d.ts.map +1 -0
  221. package/lib/services/complianceDataService.d.ts +47 -0
  222. package/lib/services/complianceDataService.d.ts.map +1 -0
  223. package/lib/services/configInjector.d.ts +43 -0
  224. package/lib/services/configInjector.d.ts.map +1 -0
  225. package/lib/services/guards/isConstructed.d.ts +3 -0
  226. package/lib/services/guards/isConstructed.d.ts.map +1 -0
  227. package/lib/services/guards/isConstructedSingleton.d.ts +3 -0
  228. package/lib/services/guards/isConstructedSingleton.d.ts.map +1 -0
  229. package/lib/services/guards/isConstructor.d.ts +3 -0
  230. package/lib/services/guards/isConstructor.d.ts.map +1 -0
  231. package/lib/services/index.d.ts +10 -184
  232. package/lib/services/index.d.ts.map +1 -0
  233. package/lib/services/retentionService.d.ts +31 -0
  234. package/lib/services/retentionService.d.ts.map +1 -0
  235. package/lib/services/runRetentionEnforcement.d.ts +19 -0
  236. package/lib/services/runRetentionEnforcement.d.ts.map +1 -0
  237. package/lib/services/types/configInjector.types.d.ts +39 -0
  238. package/lib/services/types/configInjector.types.d.ts.map +1 -0
  239. package/lib/services/types/entityManager.types.d.ts +4 -0
  240. package/lib/services/types/entityManager.types.d.ts.map +1 -0
  241. package/lib/services/types/service.types.d.ts +5 -0
  242. package/lib/services/types/service.types.d.ts.map +1 -0
  243. package/lib/ws/asyncApiV3Generator/asyncApiV3Generator.d.ts +12 -0
  244. package/lib/ws/asyncApiV3Generator/asyncApiV3Generator.d.ts.map +1 -0
  245. package/lib/ws/index.d.ts +4 -67
  246. package/lib/ws/index.d.ts.map +1 -0
  247. package/lib/ws/index.js.map +1 -1
  248. package/lib/ws/index.mjs.map +1 -1
  249. package/lib/ws/types/eventSchema.types.d.ts +28 -0
  250. package/lib/ws/types/eventSchema.types.d.ts.map +1 -0
  251. package/lib/ws/webSocketLike.d.ts +18 -0
  252. package/lib/ws/webSocketLike.d.ts.map +1 -0
  253. package/package.json +47 -46
  254. package/LICENSE +0 -21
  255. package/lib/apiDefinition.types-DF_crhB0.d.mts +0 -1092
  256. package/lib/apiDefinition.types-DW4lfZqy.d.ts +0 -1092
  257. package/lib/http/index.d.mts +0 -1244
  258. package/lib/mappers/index.d.mts +0 -68
  259. package/lib/openTelemetryCollector-BS-ej09T.d.mts +0 -70
  260. package/lib/openTelemetryCollector-BS-ej09T.d.ts +0 -70
  261. package/lib/persistence/index.d.mts +0 -403
  262. package/lib/services/index.d.mts +0 -185
  263. package/lib/ttlCache.interface-CEOkrt8d.d.mts +0 -77
  264. package/lib/ttlCacheRecord.types-oX0ti5SP.d.ts +0 -25
  265. package/lib/ws/index.d.mts +0 -67
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ws/asyncApiV3Generator/asyncApiV3Generator.ts","../../src/ws/webSocketLike.ts"],"sourcesContent":["import type {\n AsyncAPIObject,\n ChannelObject,\n ChannelsObject,\n MessageObject,\n MessagesObject,\n OperationObject,\n OperationsObject,\n ReferenceObject\n} from '@asyncapi/parser/esm/spec-types/v3';\n\nimport type { AnySchemaValidator } from '@forklaunch/validator';\n\nimport { EventSchema, EventSchemaEntry } from '../types/eventSchema.types';\n\nexport type AsyncApiDocument = AsyncAPIObject;\n\nexport function generateAsyncApi<SV extends AnySchemaValidator>(\n eventSchemas: EventSchema<SV>,\n options?: {\n title?: string;\n version?: string;\n description?: string;\n id?: AsyncApiDocument['id'];\n defaultContentType?: AsyncApiDocument['defaultContentType'];\n }\n): AsyncApiDocument {\n const channels: ChannelsObject = {};\n\n const appendMessageToChannel = (\n collection?: Record<string, EventSchemaEntry<SV>>\n ) => {\n if (!collection) {\n return;\n }\n\n Object.entries(collection).forEach(([messageKey, candidate]) => {\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n Array.isArray(candidate) ||\n !('shape' in candidate)\n ) {\n return;\n }\n\n const entry = candidate as EventSchemaEntry<SV>;\n const schema = entry.shape;\n\n // Determine which channels to use\n const channelNames: string[] = entry.channel\n ? [entry.channel]\n : entry.channels && entry.channels.length > 0\n ? entry.channels\n : [messageKey];\n\n const messageName =\n entry.operation ?? entry.operations?.[0] ?? messageKey;\n\n // Add message to all specified channels\n channelNames.forEach((channelName) => {\n const existingChannel = channels[channelName];\n if (!existingChannel || '$ref' in existingChannel) {\n channels[channelName] = {\n address: channelName,\n messages: {}\n };\n }\n\n const channelEntry = channels[channelName] as ChannelObject;\n channelEntry.messages = (channelEntry.messages ?? {}) as MessagesObject;\n const messages = channelEntry.messages as MessagesObject;\n\n const message: MessageObject = {\n name: messageName,\n payload: schema\n };\n\n messages[messageName] = message;\n });\n });\n };\n\n appendMessageToChannel(eventSchemas.clientMessages);\n appendMessageToChannel(eventSchemas.serverMessages);\n appendMessageToChannel(eventSchemas.errors);\n\n const operations: OperationsObject = {};\n\n const addOperationsForCollection = (\n collection: Record<string, EventSchemaEntry<SV>> | undefined,\n action: 'send' | 'receive'\n ) => {\n if (!collection) {\n return;\n }\n\n Object.entries(collection).forEach(([messageKey, candidate]) => {\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n Array.isArray(candidate) ||\n !('shape' in candidate)\n ) {\n return;\n }\n\n const entry = candidate as EventSchemaEntry<SV>;\n\n // Determine which channels to use\n const channelNames: string[] = entry.channel\n ? [entry.channel]\n : entry.channels && entry.channels.length > 0\n ? entry.channels\n : [messageKey];\n\n const messageName =\n entry.operation ?? entry.operations?.[0] ?? messageKey;\n\n // Create operations for all specified channels\n channelNames.forEach((channelName) => {\n const operationKey = `${action}-${channelName}-${messageName}`;\n\n const operation: OperationObject = {\n action,\n channel: {\n $ref: `#/channels/${channelName}`\n } as ReferenceObject,\n messages: [\n {\n $ref: `#/channels/${channelName}/messages/${messageName}`\n } as ReferenceObject\n ]\n };\n\n operations[operationKey] = operation;\n });\n });\n };\n\n addOperationsForCollection(eventSchemas.clientMessages, 'receive');\n addOperationsForCollection(eventSchemas.serverMessages, 'send');\n\n const { title, version, description } = options ?? {};\n\n const asyncApiDocument: AsyncApiDocument = {\n asyncapi: '3.0.0',\n info: {\n title: title || process.env.API_TITLE || 'Forklaunch WebSocket API',\n version: version || '1.0.0',\n ...(description ? { description } : {})\n },\n ...(options?.id ? { id: options.id } : {}),\n ...(options?.defaultContentType\n ? { defaultContentType: options.defaultContentType }\n : {}),\n ...(Object.keys(channels).length > 0 ? { channels } : {}),\n ...(Object.keys(operations).length > 0 ? { operations } : {})\n };\n\n return asyncApiDocument;\n}\n","import {\n AnySchemaValidator,\n IdiomaticSchema,\n prettyPrintParseErrors,\n SchemaValidator\n} from '@forklaunch/validator';\n\nimport { EventSchema, EventSchemaEntry } from './types/eventSchema.types';\n\ntype SchemaRecord<SV extends AnySchemaValidator> =\n | Record<string, EventSchemaEntry<SV>>\n | undefined;\n\nexport function buildUnionSchema<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n record: SchemaRecord<SV>\n): IdiomaticSchema<SV> | undefined {\n if (!record) {\n return undefined;\n }\n\n const schemas = Object.values(record)\n .filter((entry): entry is EventSchemaEntry<SV> => Boolean(entry))\n .map((entry) => entry.shape);\n\n if (schemas.length === 0) {\n return undefined;\n }\n\n if (schemas.length === 1) {\n return schemas[0];\n }\n\n return schemaValidator.union(schemas) as IdiomaticSchema<SV>;\n}\n\nexport function parseSchemaValue<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n value: unknown,\n schema: IdiomaticSchema<SV> | undefined,\n context: string\n): unknown {\n if (!schema) {\n return value;\n }\n\n const result = schemaValidator.parse(schema, value);\n if (result.ok) {\n return result.value;\n }\n\n const errors = 'errors' in result ? result.errors || [] : [];\n throw new Error(prettyPrintParseErrors(errors, context));\n}\n\nexport function encodeSchemaValue<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n value: unknown,\n schema: IdiomaticSchema<SV> | undefined,\n context: string\n): unknown {\n const validated = parseSchemaValue(schemaValidator, value, schema, context);\n\n if (\n Buffer.isBuffer(validated) ||\n validated instanceof ArrayBuffer ||\n ArrayBuffer.isView(validated)\n ) {\n if (Buffer.isBuffer(validated)) {\n return validated;\n }\n\n if (validated instanceof ArrayBuffer) {\n return Buffer.from(validated);\n }\n\n const view = validated as {\n buffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n };\n const typed = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n return Buffer.from(typed);\n }\n\n if (typeof validated === 'string') {\n return Buffer.from(validated, 'utf-8');\n }\n\n if (validated === null || validated === undefined) {\n return validated;\n }\n\n return Buffer.from(JSON.stringify(validated), 'utf-8');\n}\n\nexport function decodeSchemaValue<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n data: unknown,\n schema: IdiomaticSchema<SV> | undefined,\n context: string\n): unknown {\n let decoded: string;\n let parsed: unknown;\n\n if (Buffer.isBuffer(data)) {\n decoded = data.toString('utf-8');\n } else if (data instanceof ArrayBuffer) {\n decoded = Buffer.from(data).toString('utf-8');\n } else if (ArrayBuffer.isView(data)) {\n const view = data as {\n buffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n };\n decoded = Buffer.from(\n view.buffer,\n view.byteOffset,\n view.byteLength\n ).toString('utf-8');\n } else if (typeof data === 'string') {\n decoded = data;\n } else {\n parsed = data;\n return parseSchemaValue(schemaValidator, parsed, schema, context);\n }\n\n try {\n parsed = JSON.parse(decoded);\n } catch {\n parsed = decoded;\n }\n\n return parseSchemaValue(schemaValidator, parsed, schema, context);\n}\n\nexport function normalizeEncodedValue(\n encoded: unknown,\n context: string,\n allowUndefined = false\n): Buffer | undefined {\n if (encoded === null || encoded === undefined) {\n if (allowUndefined) {\n return undefined;\n }\n throw new Error(`Invalid ${context}`);\n }\n\n if (Buffer.isBuffer(encoded)) {\n return encoded;\n }\n\n if (encoded instanceof ArrayBuffer) {\n return Buffer.from(encoded);\n }\n\n if (ArrayBuffer.isView(encoded)) {\n const view = encoded as ArrayBufferView;\n return Buffer.from(view.buffer, view.byteOffset, view.byteLength);\n }\n\n if (typeof encoded === 'string') {\n return Buffer.from(encoded, 'utf-8');\n }\n\n if (\n typeof encoded === 'number' ||\n typeof encoded === 'boolean' ||\n typeof encoded === 'bigint'\n ) {\n return Buffer.from(JSON.stringify(encoded), 'utf-8');\n }\n\n if (typeof encoded === 'object') {\n return Buffer.from(JSON.stringify(encoded), 'utf-8');\n }\n\n throw new Error(`Unsupported payload type for ${context}`);\n}\n\nexport function createWebSocketSchemas<\n SV extends AnySchemaValidator,\n ES extends EventSchema<SV>\n>(schemaValidator: SchemaValidator, eventSchemas: ES) {\n const clientMessagesSchema = buildUnionSchema<SV>(\n schemaValidator,\n eventSchemas.clientMessages\n );\n const serverMessagesSchema = buildUnionSchema<SV>(\n schemaValidator,\n eventSchemas.serverMessages\n );\n const errorsSchema = buildUnionSchema<SV>(\n schemaValidator,\n eventSchemas.errors\n );\n const pingSchema = eventSchemas.ping?.shape;\n const pongSchema = eventSchemas.pong?.shape;\n const closeReasonSchema = eventSchemas.closeReason\n ? buildUnionSchema<SV>(schemaValidator, eventSchemas.closeReason)\n : undefined;\n\n return {\n clientMessagesSchema,\n serverMessagesSchema,\n errorsSchema,\n pingSchema,\n pongSchema,\n closeReasonSchema\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/ws/asyncApiV3Generator/asyncApiV3Generator.ts","../../src/ws/webSocketLike.ts"],"sourcesContent":["import type {\n AsyncAPIObject,\n ChannelObject,\n ChannelsObject,\n MessageObject,\n MessagesObject,\n OperationObject,\n OperationsObject,\n ReferenceObject\n} from '@asyncapi/parser/esm/spec-types/v3';\n\nimport type { AnySchemaValidator } from '@forklaunch/validator';\n\nimport { EventSchema, EventSchemaEntry } from '../types/eventSchema.types';\n\nexport type AsyncApiDocument = AsyncAPIObject;\n\nexport function generateAsyncApi<SV extends AnySchemaValidator>(\n eventSchemas: EventSchema<SV>,\n options?: {\n title?: string;\n version?: string;\n description?: string;\n id?: AsyncApiDocument['id'];\n defaultContentType?: AsyncApiDocument['defaultContentType'];\n }\n): AsyncApiDocument {\n const channels: ChannelsObject = {};\n\n const appendMessageToChannel = (\n collection?: Record<string, EventSchemaEntry<SV>>\n ) => {\n if (!collection) {\n return;\n }\n\n Object.entries(collection).forEach(([messageKey, candidate]) => {\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n Array.isArray(candidate) ||\n !('shape' in candidate)\n ) {\n return;\n }\n\n const entry = candidate as EventSchemaEntry<SV>;\n const schema = entry.shape;\n\n // Determine which channels to use\n const channelNames: string[] = entry.channel\n ? [entry.channel]\n : entry.channels && entry.channels.length > 0\n ? entry.channels\n : [messageKey];\n\n const messageName =\n entry.operation ?? entry.operations?.[0] ?? messageKey;\n\n // Add message to all specified channels\n channelNames.forEach((channelName) => {\n const existingChannel = channels[channelName];\n if (!existingChannel || '$ref' in existingChannel) {\n channels[channelName] = {\n address: channelName,\n messages: {}\n };\n }\n\n const channelEntry = channels[channelName] as ChannelObject;\n channelEntry.messages = (channelEntry.messages ?? {}) as MessagesObject;\n const messages = channelEntry.messages as MessagesObject;\n\n const message: MessageObject = {\n name: messageName,\n payload: schema\n };\n\n messages[messageName] = message;\n });\n });\n };\n\n appendMessageToChannel(eventSchemas.clientMessages);\n appendMessageToChannel(eventSchemas.serverMessages);\n appendMessageToChannel(eventSchemas.errors);\n\n const operations: OperationsObject = {};\n\n const addOperationsForCollection = (\n collection: Record<string, EventSchemaEntry<SV>> | undefined,\n action: 'send' | 'receive'\n ) => {\n if (!collection) {\n return;\n }\n\n Object.entries(collection).forEach(([messageKey, candidate]) => {\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n Array.isArray(candidate) ||\n !('shape' in candidate)\n ) {\n return;\n }\n\n const entry = candidate as EventSchemaEntry<SV>;\n\n // Determine which channels to use\n const channelNames: string[] = entry.channel\n ? [entry.channel]\n : entry.channels && entry.channels.length > 0\n ? entry.channels\n : [messageKey];\n\n const messageName =\n entry.operation ?? entry.operations?.[0] ?? messageKey;\n\n // Create operations for all specified channels\n channelNames.forEach((channelName) => {\n const operationKey = `${action}-${channelName}-${messageName}`;\n\n const operation: OperationObject = {\n action,\n channel: {\n $ref: `#/channels/${channelName}`\n } as ReferenceObject,\n messages: [\n {\n $ref: `#/channels/${channelName}/messages/${messageName}`\n } as ReferenceObject\n ]\n };\n\n operations[operationKey] = operation;\n });\n });\n };\n\n addOperationsForCollection(eventSchemas.clientMessages, 'receive');\n addOperationsForCollection(eventSchemas.serverMessages, 'send');\n\n const { title, version, description } = options ?? {};\n\n const asyncApiDocument: AsyncApiDocument = {\n asyncapi: '3.0.0',\n info: {\n title: title || process.env.API_TITLE || 'Forklaunch WebSocket API',\n version: version || '1.0.0',\n ...(description ? { description } : {})\n },\n ...(options?.id ? { id: options.id } : {}),\n ...(options?.defaultContentType\n ? { defaultContentType: options.defaultContentType }\n : {}),\n ...(Object.keys(channels).length > 0 ? { channels } : {}),\n ...(Object.keys(operations).length > 0 ? { operations } : {})\n };\n\n return asyncApiDocument;\n}\n","import {\n AnySchemaValidator,\n IdiomaticSchema,\n prettyPrintParseErrors,\n SchemaValidator\n} from '@forklaunch/validator';\n\nimport { EventSchema, EventSchemaEntry } from './types/eventSchema.types';\n\ntype SchemaRecord<SV extends AnySchemaValidator> =\n Record<string, EventSchemaEntry<SV>> | undefined;\n\nexport function buildUnionSchema<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n record: SchemaRecord<SV>\n): IdiomaticSchema<SV> | undefined {\n if (!record) {\n return undefined;\n }\n\n const schemas = Object.values(record)\n .filter((entry): entry is EventSchemaEntry<SV> => Boolean(entry))\n .map((entry) => entry.shape);\n\n if (schemas.length === 0) {\n return undefined;\n }\n\n if (schemas.length === 1) {\n return schemas[0];\n }\n\n return schemaValidator.union(schemas) as IdiomaticSchema<SV>;\n}\n\nexport function parseSchemaValue<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n value: unknown,\n schema: IdiomaticSchema<SV> | undefined,\n context: string\n): unknown {\n if (!schema) {\n return value;\n }\n\n const result = schemaValidator.parse(schema, value);\n if (result.ok) {\n return result.value;\n }\n\n const errors = 'errors' in result ? result.errors || [] : [];\n throw new Error(prettyPrintParseErrors(errors, context));\n}\n\nexport function encodeSchemaValue<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n value: unknown,\n schema: IdiomaticSchema<SV> | undefined,\n context: string\n): unknown {\n const validated = parseSchemaValue(schemaValidator, value, schema, context);\n\n if (\n Buffer.isBuffer(validated) ||\n validated instanceof ArrayBuffer ||\n ArrayBuffer.isView(validated)\n ) {\n if (Buffer.isBuffer(validated)) {\n return validated;\n }\n\n if (validated instanceof ArrayBuffer) {\n return Buffer.from(validated);\n }\n\n const view = validated as {\n buffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n };\n const typed = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n return Buffer.from(typed);\n }\n\n if (typeof validated === 'string') {\n return Buffer.from(validated, 'utf-8');\n }\n\n if (validated === null || validated === undefined) {\n return validated;\n }\n\n return Buffer.from(JSON.stringify(validated), 'utf-8');\n}\n\nexport function decodeSchemaValue<SV extends AnySchemaValidator>(\n schemaValidator: SchemaValidator,\n data: unknown,\n schema: IdiomaticSchema<SV> | undefined,\n context: string\n): unknown {\n let decoded: string;\n let parsed: unknown;\n\n if (Buffer.isBuffer(data)) {\n decoded = data.toString('utf-8');\n } else if (data instanceof ArrayBuffer) {\n decoded = Buffer.from(data).toString('utf-8');\n } else if (ArrayBuffer.isView(data)) {\n const view = data as {\n buffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n };\n decoded = Buffer.from(\n view.buffer,\n view.byteOffset,\n view.byteLength\n ).toString('utf-8');\n } else if (typeof data === 'string') {\n decoded = data;\n } else {\n parsed = data;\n return parseSchemaValue(schemaValidator, parsed, schema, context);\n }\n\n try {\n parsed = JSON.parse(decoded);\n } catch {\n parsed = decoded;\n }\n\n return parseSchemaValue(schemaValidator, parsed, schema, context);\n}\n\nexport function normalizeEncodedValue(\n encoded: unknown,\n context: string,\n allowUndefined = false\n): Buffer | undefined {\n if (encoded === null || encoded === undefined) {\n if (allowUndefined) {\n return undefined;\n }\n throw new Error(`Invalid ${context}`);\n }\n\n if (Buffer.isBuffer(encoded)) {\n return encoded;\n }\n\n if (encoded instanceof ArrayBuffer) {\n return Buffer.from(encoded);\n }\n\n if (ArrayBuffer.isView(encoded)) {\n const view = encoded as ArrayBufferView;\n return Buffer.from(view.buffer, view.byteOffset, view.byteLength);\n }\n\n if (typeof encoded === 'string') {\n return Buffer.from(encoded, 'utf-8');\n }\n\n if (\n typeof encoded === 'number' ||\n typeof encoded === 'boolean' ||\n typeof encoded === 'bigint'\n ) {\n return Buffer.from(JSON.stringify(encoded), 'utf-8');\n }\n\n if (typeof encoded === 'object') {\n return Buffer.from(JSON.stringify(encoded), 'utf-8');\n }\n\n throw new Error(`Unsupported payload type for ${context}`);\n}\n\nexport function createWebSocketSchemas<\n SV extends AnySchemaValidator,\n ES extends EventSchema<SV>\n>(schemaValidator: SchemaValidator, eventSchemas: ES) {\n const clientMessagesSchema = buildUnionSchema<SV>(\n schemaValidator,\n eventSchemas.clientMessages\n );\n const serverMessagesSchema = buildUnionSchema<SV>(\n schemaValidator,\n eventSchemas.serverMessages\n );\n const errorsSchema = buildUnionSchema<SV>(\n schemaValidator,\n eventSchemas.errors\n );\n const pingSchema = eventSchemas.ping?.shape;\n const pongSchema = eventSchemas.pong?.shape;\n const closeReasonSchema = eventSchemas.closeReason\n ? buildUnionSchema<SV>(schemaValidator, eventSchemas.closeReason)\n : undefined;\n\n return {\n clientMessagesSchema,\n serverMessagesSchema,\n errorsSchema,\n pingSchema,\n pongSchema,\n closeReasonSchema\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,28 @@
1
+ import { AnySchemaValidator, IdiomaticSchema } from '@forklaunch/validator';
2
+ import { StringOnlyObject } from '../../http/types/contractDetails.types';
3
+ export type AsyncApiEnrichment = {
4
+ channel?: string;
5
+ channels?: string[];
6
+ operation?: string;
7
+ operations?: string[];
8
+ };
9
+ export type EventSchemaEntry<SV extends AnySchemaValidator> = {
10
+ shape: IdiomaticSchema<SV>;
11
+ } & AsyncApiEnrichment;
12
+ export type EventSchema<SV extends AnySchemaValidator> = {
13
+ ping?: EventSchemaEntry<SV>;
14
+ pong?: EventSchemaEntry<SV>;
15
+ clientMessages: Record<string, EventSchemaEntry<SV>>;
16
+ serverMessages: Record<string, EventSchemaEntry<SV>>;
17
+ errors?: Record<string, EventSchemaEntry<SV>>;
18
+ closeReason?: Record<string, EventSchemaEntry<SV>>;
19
+ context?: StringOnlyObject<SV>;
20
+ userData?: StringOnlyObject<SV>;
21
+ };
22
+ export type ServerEventSchema<SV extends AnySchemaValidator, ES extends EventSchema<SV>> = Omit<ES, 'serverMessages' | 'clientMessages'> & {
23
+ serverMessages: ES['clientMessages'];
24
+ clientMessages: ES['serverMessages'];
25
+ };
26
+ export type ExtractSchemaFromEntry<SV extends AnySchemaValidator, Entry extends EventSchemaEntry<SV> | undefined> = Entry extends EventSchemaEntry<SV> ? Entry['shape'] : never;
27
+ export type ExtractSchemaFromRecord<SV extends AnySchemaValidator, RecordType extends Record<string, EventSchemaEntry<SV>> | undefined> = RecordType extends Record<string, EventSchemaEntry<SV>> ? RecordType[keyof RecordType]['shape'] : never;
28
+ //# sourceMappingURL=eventSchema.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventSchema.types.d.ts","sourceRoot":"","sources":["../../../src/ws/types/eventSchema.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,IAAI;IAC5D,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;CAC5B,GAAG,kBAAkB,CAAC;AAEvB,MAAM,MAAM,WAAW,CAAC,EAAE,SAAS,kBAAkB,IAAI;IACvD,IAAI,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,EAAE,SAAS,kBAAkB,EAC7B,EAAE,SAAS,WAAW,CAAC,EAAE,CAAC,IACxB,IAAI,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,GAAG;IAClD,cAAc,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACrC,cAAc,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAChC,EAAE,SAAS,kBAAkB,EAC7B,KAAK,SAAS,gBAAgB,CAAC,EAAE,CAAC,GAAG,SAAS,IAC5C,KAAK,SAAS,gBAAgB,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAEhE,MAAM,MAAM,uBAAuB,CACjC,EAAE,SAAS,kBAAkB,EAC7B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,IAEnE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,GACnD,UAAU,CAAC,MAAM,UAAU,CAAC,CAAC,OAAO,CAAC,GACrC,KAAK,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { AnySchemaValidator, IdiomaticSchema, SchemaValidator } from '@forklaunch/validator';
2
+ import { EventSchema, EventSchemaEntry } from './types/eventSchema.types';
3
+ type SchemaRecord<SV extends AnySchemaValidator> = Record<string, EventSchemaEntry<SV>> | undefined;
4
+ export declare function buildUnionSchema<SV extends AnySchemaValidator>(schemaValidator: SchemaValidator, record: SchemaRecord<SV>): IdiomaticSchema<SV> | undefined;
5
+ export declare function parseSchemaValue<SV extends AnySchemaValidator>(schemaValidator: SchemaValidator, value: unknown, schema: IdiomaticSchema<SV> | undefined, context: string): unknown;
6
+ export declare function encodeSchemaValue<SV extends AnySchemaValidator>(schemaValidator: SchemaValidator, value: unknown, schema: IdiomaticSchema<SV> | undefined, context: string): unknown;
7
+ export declare function decodeSchemaValue<SV extends AnySchemaValidator>(schemaValidator: SchemaValidator, data: unknown, schema: IdiomaticSchema<SV> | undefined, context: string): unknown;
8
+ export declare function normalizeEncodedValue(encoded: unknown, context: string, allowUndefined?: boolean): Buffer | undefined;
9
+ export declare function createWebSocketSchemas<SV extends AnySchemaValidator, ES extends EventSchema<SV>>(schemaValidator: SchemaValidator, eventSchemas: ES): {
10
+ clientMessagesSchema: IdiomaticSchema<SV> | undefined;
11
+ serverMessagesSchema: IdiomaticSchema<SV> | undefined;
12
+ errorsSchema: IdiomaticSchema<SV> | undefined;
13
+ pingSchema: IdiomaticSchema<SV> | undefined;
14
+ pongSchema: IdiomaticSchema<SV> | undefined;
15
+ closeReasonSchema: IdiomaticSchema<SV> | undefined;
16
+ };
17
+ export {};
18
+ //# sourceMappingURL=webSocketLike.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webSocketLike.d.ts","sourceRoot":"","sources":["../../src/ws/webSocketLike.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EAEf,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,KAAK,YAAY,CAAC,EAAE,SAAS,kBAAkB,IAC7C,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAC5D,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GACvB,eAAe,CAAC,EAAE,CAAC,GAAG,SAAS,CAkBjC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAC5D,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,SAAS,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAYT;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,kBAAkB,EAC7D,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,SAAS,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAkCT;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,kBAAkB,EAC7D,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,SAAS,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAiCT;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,cAAc,UAAQ,GACrB,MAAM,GAAG,SAAS,CAsCpB;AAED,wBAAgB,sBAAsB,CACpC,EAAE,SAAS,kBAAkB,EAC7B,EAAE,SAAS,WAAW,CAAC,EAAE,CAAC,EAC1B,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE;;;;;;;EA2BnD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forklaunch/core",
3
- "version": "1.5.1",
3
+ "version": "1.5.3",
4
4
  "description": "forklaunch-js core package. Contains useful building blocks.",
5
5
  "homepage": "https://github.com/forklaunch/forklaunch-js#readme",
6
6
  "bugs": {
@@ -75,67 +75,68 @@
75
75
  "files": [
76
76
  "lib/**"
77
77
  ],
78
+ "scripts": {
79
+ "build": "tsgo --noEmit && tsup ./src/cache/index.ts ./src/controllers/index.ts ./src/mappers/index.ts ./src/objectstore/index.ts ./src/persistence/index.ts ./src/http/index.ts ./src/services/index.ts ./src/environment/index.ts ./src/ws/index.ts --format cjs,esm --no-splitting --tsconfig tsconfig.json --out-dir lib --clean --sourcemap && tsgo -p tsconfig.build.json --emitDeclarationOnly",
80
+ "clean": "rm -rf lib pnpm.lock.yaml node_modules",
81
+ "docs": "typedoc --out docs *",
82
+ "format": "prettier --ignore-path=.prettierignore --config .prettierrc '**/*.{ts,tsx,json}' --write",
83
+ "lint": "eslint . -c eslint.config.mjs",
84
+ "lint:fix": "eslint . -c eslint.config.mjs --fix",
85
+ "prepack": "pnpm run build",
86
+ "publish:package": "./publish-package.bash",
87
+ "test": "vitest --passWithNoTests"
88
+ },
78
89
  "dependencies": {
79
90
  "@asyncapi/parser": "^3.6.0",
91
+ "@forklaunch/common": "workspace:*",
80
92
  "@forklaunch/opentelemetry-instrumentation-hyper-express": "0.0.5",
81
- "@mikro-orm/core": "7.0.11",
82
- "@mikro-orm/mongodb": "7.0.11",
93
+ "@forklaunch/validator": "workspace:*",
94
+ "@mikro-orm/core": "7.1.7",
95
+ "@mikro-orm/mongodb": "7.1.7",
83
96
  "@opentelemetry/api": "^1.9.1",
84
- "@opentelemetry/api-logs": "^0.215.0",
85
- "@opentelemetry/exporter-logs-otlp-http": "^0.215.0",
86
- "@opentelemetry/exporter-metrics-otlp-http": "^0.215.0",
87
- "@opentelemetry/exporter-prometheus": "^0.215.0",
88
- "@opentelemetry/exporter-trace-otlp-http": "^0.215.0",
89
- "@opentelemetry/instrumentation-express": "^0.63.0",
90
- "@opentelemetry/instrumentation-http": "^0.215.0",
91
- "@opentelemetry/resources": "^2.7.0",
92
- "@opentelemetry/sdk-logs": "^0.215.0",
93
- "@opentelemetry/sdk-metrics": "^2.7.0",
94
- "@opentelemetry/sdk-node": "^0.215.0",
95
- "@opentelemetry/sdk-trace-node": "^2.7.0",
96
- "@opentelemetry/semantic-conventions": "^1.40.0",
97
+ "@opentelemetry/api-logs": "^0.221.0",
98
+ "@opentelemetry/exporter-logs-otlp-http": "^0.221.0",
99
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.221.0",
100
+ "@opentelemetry/exporter-prometheus": "^0.221.0",
101
+ "@opentelemetry/exporter-trace-otlp-http": "^0.221.0",
102
+ "@opentelemetry/instrumentation-express": "^0.69.0",
103
+ "@opentelemetry/instrumentation-http": "^0.221.0",
104
+ "@opentelemetry/resources": "^2.10.0",
105
+ "@opentelemetry/sdk-logs": "^0.221.0",
106
+ "@opentelemetry/sdk-metrics": "^2.10.0",
107
+ "@opentelemetry/sdk-node": "^0.221.0",
108
+ "@opentelemetry/sdk-trace-node": "^2.10.0",
109
+ "@opentelemetry/semantic-conventions": "^1.43.0",
97
110
  "cors": "^2.8.6",
98
111
  "dotenv": "^17.4.2",
99
- "fastmcp": "^4.0.0",
100
- "jose": "6.2.2",
101
- "openapi3-ts": "^4.5.0",
112
+ "fastmcp": "^4.12.0",
113
+ "jose": "6.2.4",
114
+ "openapi3-ts": "^4.6.0",
102
115
  "pino": "^10.3.1",
103
116
  "pino-http": "^11.0.0",
104
117
  "pino-pretty": "^13.1.3",
105
- "redis": "^5.12.1",
106
- "uuid": "^13.0.0",
107
- "zod": "^4.3.6",
108
- "@forklaunch/common": "1.2.17",
109
- "@forklaunch/validator": "1.2.17"
118
+ "redis": "^6.1.0",
119
+ "uuid": "^14.0.1",
120
+ "zod": "^4.4.3"
110
121
  },
111
122
  "devDependencies": {
112
123
  "@eslint/js": "^10.0.1",
113
- "@scalar/express-api-reference": "^0.9.8",
124
+ "@scalar/express-api-reference": "^0.10.11",
114
125
  "@types/cors": "^2.8.19",
115
126
  "@types/jest": "^30.0.0",
116
- "@types/qs": "^6.15.0",
127
+ "@types/qs": "^6.15.1",
117
128
  "@types/uuid": "^11.0.0",
118
- "@typescript/native-preview": "7.0.0-dev.20260417.1",
119
- "globals": "^17.5.0",
120
- "jest": "^30.3.0",
129
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
130
+ "globals": "^17.7.0",
131
+ "jest": "^30.4.2",
121
132
  "jose": "6.1.3",
122
- "prettier": "^3.8.3",
123
- "testcontainers": "^11.14.0",
124
- "ts-jest": "^29.4.9",
133
+ "prettier": "^3.9.6",
134
+ "testcontainers": "^12.0.4",
135
+ "ts-jest": "^29.4.12",
125
136
  "ts-node": "^10.9.2",
126
137
  "tsup": "^8.5.1",
127
- "typedoc": "^0.28.19",
128
- "typescript": "^6.0.3",
129
- "typescript-eslint": "^8.58.2"
130
- },
131
- "scripts": {
132
- "build": "tsgo --noEmit && tsup ./src/cache/index.ts ./src/controllers/index.ts ./src/mappers/index.ts ./src/objectstore/index.ts ./src/persistence/index.ts ./src/http/index.ts ./src/services/index.ts ./src/environment/index.ts ./src/ws/index.ts --format cjs,esm --no-splitting --dts --tsconfig tsconfig.json --out-dir lib --clean --sourcemap",
133
- "clean": "rm -rf lib pnpm.lock.yaml node_modules",
134
- "docs": "typedoc --out docs *",
135
- "format": "prettier --ignore-path=.prettierignore --config .prettierrc '**/*.{ts,tsx,json}' --write",
136
- "lint": "eslint . -c eslint.config.mjs",
137
- "lint:fix": "eslint . -c eslint.config.mjs --fix",
138
- "publish:package": "./publish-package.bash",
139
- "test": "vitest --passWithNoTests"
138
+ "typedoc": "^0.28.20",
139
+ "typescript": "npm:@typescript/typescript6@^6.0.2",
140
+ "typescript-eslint": "^8.65.0"
140
141
  }
141
- }
142
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 forklaunch
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.