@graphoria/server 0.1.0

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 (628) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +10 -0
  3. package/README.md +129 -0
  4. package/cli.ts +105 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/src/ai/agent/agent.d.ts +37 -0
  8. package/dist/src/ai/agent/agent.d.ts.map +1 -0
  9. package/dist/src/ai/agent/index.d.ts +3 -0
  10. package/dist/src/ai/agent/index.d.ts.map +1 -0
  11. package/dist/src/ai/agent/providers/anthropic.d.ts +10 -0
  12. package/dist/src/ai/agent/providers/anthropic.d.ts.map +1 -0
  13. package/dist/src/ai/agent/providers/index.d.ts +8 -0
  14. package/dist/src/ai/agent/providers/index.d.ts.map +1 -0
  15. package/dist/src/ai/agent/providers/ollama.d.ts +11 -0
  16. package/dist/src/ai/agent/providers/ollama.d.ts.map +1 -0
  17. package/dist/src/ai/agent/providers/openai.d.ts +14 -0
  18. package/dist/src/ai/agent/providers/openai.d.ts.map +1 -0
  19. package/dist/src/ai/agent/types.d.ts +51 -0
  20. package/dist/src/ai/agent/types.d.ts.map +1 -0
  21. package/dist/src/ai/ask-field.test.d.ts +2 -0
  22. package/dist/src/ai/ask-field.test.d.ts.map +1 -0
  23. package/dist/src/ai/index.d.ts +7 -0
  24. package/dist/src/ai/index.d.ts.map +1 -0
  25. package/dist/src/ai/mcp/create-server.d.ts +14 -0
  26. package/dist/src/ai/mcp/create-server.d.ts.map +1 -0
  27. package/dist/src/ai/mcp/create-server.test.d.ts +2 -0
  28. package/dist/src/ai/mcp/create-server.test.d.ts.map +1 -0
  29. package/dist/src/ai/mcp/index.d.ts +13 -0
  30. package/dist/src/ai/mcp/index.d.ts.map +1 -0
  31. package/dist/src/ai/mcp/index.test.d.ts +2 -0
  32. package/dist/src/ai/mcp/index.test.d.ts.map +1 -0
  33. package/dist/src/ai/mcp/instructions.d.ts +2 -0
  34. package/dist/src/ai/mcp/instructions.d.ts.map +1 -0
  35. package/dist/src/ai/tools/agent.d.ts +4 -0
  36. package/dist/src/ai/tools/agent.d.ts.map +1 -0
  37. package/dist/src/ai/tools/agent.test.d.ts +2 -0
  38. package/dist/src/ai/tools/agent.test.d.ts.map +1 -0
  39. package/dist/src/ai/tools/core.d.ts +75 -0
  40. package/dist/src/ai/tools/core.d.ts.map +1 -0
  41. package/dist/src/ai/tools/query-data.d.ts +35 -0
  42. package/dist/src/ai/tools/query-data.d.ts.map +1 -0
  43. package/dist/src/analyzeQuery/analyzers/fragmentAnalyzer.d.ts +5 -0
  44. package/dist/src/analyzeQuery/analyzers/fragmentAnalyzer.d.ts.map +1 -0
  45. package/dist/src/analyzeQuery/analyzers/operationAnalyzer.d.ts +6 -0
  46. package/dist/src/analyzeQuery/analyzers/operationAnalyzer.d.ts.map +1 -0
  47. package/dist/src/analyzeQuery/analyzers/selectionAnalyzer.d.ts +6 -0
  48. package/dist/src/analyzeQuery/analyzers/selectionAnalyzer.d.ts.map +1 -0
  49. package/dist/src/analyzeQuery/analyzers/variableAnalyzer.d.ts +4 -0
  50. package/dist/src/analyzeQuery/analyzers/variableAnalyzer.d.ts.map +1 -0
  51. package/dist/src/analyzeQuery/depthLimit.d.ts +16 -0
  52. package/dist/src/analyzeQuery/depthLimit.d.ts.map +1 -0
  53. package/dist/src/analyzeQuery/depthLimit.test.d.ts +2 -0
  54. package/dist/src/analyzeQuery/depthLimit.test.d.ts.map +1 -0
  55. package/dist/src/analyzeQuery/directiveUtils.d.ts +4 -0
  56. package/dist/src/analyzeQuery/directiveUtils.d.ts.map +1 -0
  57. package/dist/src/analyzeQuery/directiveUtils.test.d.ts +2 -0
  58. package/dist/src/analyzeQuery/directiveUtils.test.d.ts.map +1 -0
  59. package/dist/src/analyzeQuery/index.d.ts +5 -0
  60. package/dist/src/analyzeQuery/index.d.ts.map +1 -0
  61. package/dist/src/analyzeQuery/index.test.d.ts +2 -0
  62. package/dist/src/analyzeQuery/index.test.d.ts.map +1 -0
  63. package/dist/src/analyzeQuery/resolveVariables.d.ts +71 -0
  64. package/dist/src/analyzeQuery/resolveVariables.d.ts.map +1 -0
  65. package/dist/src/analyzeQuery/resolveVariables.test.d.ts +2 -0
  66. package/dist/src/analyzeQuery/resolveVariables.test.d.ts.map +1 -0
  67. package/dist/src/analyzeQuery/staticValues.test.d.ts +2 -0
  68. package/dist/src/analyzeQuery/staticValues.test.d.ts.map +1 -0
  69. package/dist/src/analyzeQuery/typeUtils.d.ts +9 -0
  70. package/dist/src/analyzeQuery/typeUtils.d.ts.map +1 -0
  71. package/dist/src/analyzeQuery/types.d.ts +54 -0
  72. package/dist/src/analyzeQuery/types.d.ts.map +1 -0
  73. package/dist/src/analyzeQuery/valueExtractors.d.ts +4 -0
  74. package/dist/src/analyzeQuery/valueExtractors.d.ts.map +1 -0
  75. package/dist/src/authentication/duration.d.ts +14 -0
  76. package/dist/src/authentication/duration.d.ts.map +1 -0
  77. package/dist/src/authentication/duration.test.d.ts +2 -0
  78. package/dist/src/authentication/duration.test.d.ts.map +1 -0
  79. package/dist/src/authentication/index.d.ts +4 -0
  80. package/dist/src/authentication/index.d.ts.map +1 -0
  81. package/dist/src/authentication/index.test.d.ts +2 -0
  82. package/dist/src/authentication/index.test.d.ts.map +1 -0
  83. package/dist/src/authentication/jwt.d.ts +10 -0
  84. package/dist/src/authentication/jwt.d.ts.map +1 -0
  85. package/dist/src/authentication/jwt.test.d.ts +2 -0
  86. package/dist/src/authentication/jwt.test.d.ts.map +1 -0
  87. package/dist/src/authentication/paseto.d.ts +7 -0
  88. package/dist/src/authentication/paseto.d.ts.map +1 -0
  89. package/dist/src/authentication/paseto.test.d.ts +2 -0
  90. package/dist/src/authentication/paseto.test.d.ts.map +1 -0
  91. package/dist/src/authentication/tokenRepository.d.ts +14 -0
  92. package/dist/src/authentication/tokenRepository.d.ts.map +1 -0
  93. package/dist/src/authentication/tokenRepository.test.d.ts +2 -0
  94. package/dist/src/authentication/tokenRepository.test.d.ts.map +1 -0
  95. package/dist/src/authentication/types.d.ts +42 -0
  96. package/dist/src/authentication/types.d.ts.map +1 -0
  97. package/dist/src/cli/seedAuth.d.ts +4 -0
  98. package/dist/src/cli/seedAuth.d.ts.map +1 -0
  99. package/dist/src/cli/seedAuth.test.d.ts +2 -0
  100. package/dist/src/cli/seedAuth.test.d.ts.map +1 -0
  101. package/dist/src/cli/seedAuthArgs.d.ts +9 -0
  102. package/dist/src/cli/seedAuthArgs.d.ts.map +1 -0
  103. package/dist/src/config/helpers/cronHelper.d.ts +21 -0
  104. package/dist/src/config/helpers/cronHelper.d.ts.map +1 -0
  105. package/dist/src/config/helpers/cronHelper.test.d.ts +2 -0
  106. package/dist/src/config/helpers/cronHelper.test.d.ts.map +1 -0
  107. package/dist/src/config/helpers/index.d.ts +4 -0
  108. package/dist/src/config/helpers/index.d.ts.map +1 -0
  109. package/dist/src/config/helpers/operationHelper.d.ts +44 -0
  110. package/dist/src/config/helpers/operationHelper.d.ts.map +1 -0
  111. package/dist/src/config/helpers/queueHelper.d.ts +20 -0
  112. package/dist/src/config/helpers/queueHelper.d.ts.map +1 -0
  113. package/dist/src/config/helpers/queueHelper.test.d.ts +2 -0
  114. package/dist/src/config/helpers/queueHelper.test.d.ts.map +1 -0
  115. package/dist/src/config/index.d.ts +236 -0
  116. package/dist/src/config/index.d.ts.map +1 -0
  117. package/dist/src/config/types/ai.d.ts +29 -0
  118. package/dist/src/config/types/ai.d.ts.map +1 -0
  119. package/dist/src/config/types/auth.d.ts +112 -0
  120. package/dist/src/config/types/auth.d.ts.map +1 -0
  121. package/dist/src/config/types/configuration.d.ts +61 -0
  122. package/dist/src/config/types/configuration.d.ts.map +1 -0
  123. package/dist/src/config/types/cron.d.ts +81 -0
  124. package/dist/src/config/types/cron.d.ts.map +1 -0
  125. package/dist/src/config/types/db.d.ts +210 -0
  126. package/dist/src/config/types/db.d.ts.map +1 -0
  127. package/dist/src/config/types/index.d.ts +17 -0
  128. package/dist/src/config/types/index.d.ts.map +1 -0
  129. package/dist/src/config/types/operation.d.ts +226 -0
  130. package/dist/src/config/types/operation.d.ts.map +1 -0
  131. package/dist/src/config/types/queue.d.ts +142 -0
  132. package/dist/src/config/types/queue.d.ts.map +1 -0
  133. package/dist/src/config/types/remote-rest.d.ts +18 -0
  134. package/dist/src/config/types/remote-rest.d.ts.map +1 -0
  135. package/dist/src/config/types/remote-schema.d.ts +27 -0
  136. package/dist/src/config/types/remote-schema.d.ts.map +1 -0
  137. package/dist/src/config/types/virtual-columns.d.ts +89 -0
  138. package/dist/src/config/types/virtual-columns.d.ts.map +1 -0
  139. package/dist/src/config/types/virtual-columns.test.d.ts +2 -0
  140. package/dist/src/config/types/virtual-columns.test.d.ts.map +1 -0
  141. package/dist/src/configuration/getSchemas/index.d.ts +867 -0
  142. package/dist/src/configuration/getSchemas/index.d.ts.map +1 -0
  143. package/dist/src/configuration/getSchemas/mergeEntities/index.d.ts +412 -0
  144. package/dist/src/configuration/getSchemas/mergeEntities/index.d.ts.map +1 -0
  145. package/dist/src/configuration/getSchemas/type-definition-generator/index.d.ts +16 -0
  146. package/dist/src/configuration/getSchemas/type-definition-generator/index.d.ts.map +1 -0
  147. package/dist/src/configuration/getSchemas/type-definition-generator/index.test.d.ts +2 -0
  148. package/dist/src/configuration/getSchemas/type-definition-generator/index.test.d.ts.map +1 -0
  149. package/dist/src/configuration/gql/buildExecute.d.ts +31 -0
  150. package/dist/src/configuration/gql/buildExecute.d.ts.map +1 -0
  151. package/dist/src/configuration/gql/buildExecute.test.d.ts +2 -0
  152. package/dist/src/configuration/gql/buildExecute.test.d.ts.map +1 -0
  153. package/dist/src/configuration/gql/gqlAuthOperations.d.ts +9 -0
  154. package/dist/src/configuration/gql/gqlAuthOperations.d.ts.map +1 -0
  155. package/dist/src/configuration/gql/gqlAuthOperations.test.d.ts +2 -0
  156. package/dist/src/configuration/gql/gqlAuthOperations.test.d.ts.map +1 -0
  157. package/dist/src/configuration/gql/handleGraphQLRequestFactory.d.ts +28 -0
  158. package/dist/src/configuration/gql/handleGraphQLRequestFactory.d.ts.map +1 -0
  159. package/dist/src/configuration/gql/handleGraphQLRequestFactory.test.d.ts +2 -0
  160. package/dist/src/configuration/gql/handleGraphQLRequestFactory.test.d.ts.map +1 -0
  161. package/dist/src/configuration/gql/handleGraphQLSubscriptionFactory.d.ts +19 -0
  162. package/dist/src/configuration/gql/handleGraphQLSubscriptionFactory.d.ts.map +1 -0
  163. package/dist/src/configuration/index.d.ts +719 -0
  164. package/dist/src/configuration/index.d.ts.map +1 -0
  165. package/dist/src/configuration/rest/generateOpenAPI.d.ts +19 -0
  166. package/dist/src/configuration/rest/generateOpenAPI.d.ts.map +1 -0
  167. package/dist/src/configuration/rest/handleRESTRequestFactory.d.ts +12 -0
  168. package/dist/src/configuration/rest/handleRESTRequestFactory.d.ts.map +1 -0
  169. package/dist/src/configuration/rest/handleRESTRequestFactory.test.d.ts +2 -0
  170. package/dist/src/configuration/rest/handleRESTRequestFactory.test.d.ts.map +1 -0
  171. package/dist/src/configuration/rest/index.d.ts +20 -0
  172. package/dist/src/configuration/rest/index.d.ts.map +1 -0
  173. package/dist/src/configuration/rest/openApiErrors.d.ts +71 -0
  174. package/dist/src/configuration/rest/openApiErrors.d.ts.map +1 -0
  175. package/dist/src/console/App.d.ts +3 -0
  176. package/dist/src/console/App.d.ts.map +1 -0
  177. package/dist/src/console/Login.d.ts +6 -0
  178. package/dist/src/console/Login.d.ts.map +1 -0
  179. package/dist/src/console/api.d.ts +17 -0
  180. package/dist/src/console/api.d.ts.map +1 -0
  181. package/dist/src/console/api.test.d.ts +2 -0
  182. package/dist/src/console/api.test.d.ts.map +1 -0
  183. package/dist/src/console/client.d.ts +67 -0
  184. package/dist/src/console/client.d.ts.map +1 -0
  185. package/dist/src/console/frontend.d.ts +8 -0
  186. package/dist/src/console/frontend.d.ts.map +1 -0
  187. package/dist/src/console/pages/ConfigPage.d.ts +2 -0
  188. package/dist/src/console/pages/ConfigPage.d.ts.map +1 -0
  189. package/dist/src/console/pages/RolesPage.d.ts +2 -0
  190. package/dist/src/console/pages/RolesPage.d.ts.map +1 -0
  191. package/dist/src/console/pages/StatusPage.d.ts +2 -0
  192. package/dist/src/console/pages/StatusPage.d.ts.map +1 -0
  193. package/dist/src/console/pages/TablesPage.d.ts +2 -0
  194. package/dist/src/console/pages/TablesPage.d.ts.map +1 -0
  195. package/dist/src/console/useApi.d.ts +8 -0
  196. package/dist/src/console/useApi.d.ts.map +1 -0
  197. package/dist/src/cron/index.d.ts +63 -0
  198. package/dist/src/cron/index.d.ts.map +1 -0
  199. package/dist/src/databases/auth/auth-operations.d.ts +11 -0
  200. package/dist/src/databases/auth/auth-operations.d.ts.map +1 -0
  201. package/dist/src/databases/auth/password.d.ts +3 -0
  202. package/dist/src/databases/auth/password.d.ts.map +1 -0
  203. package/dist/src/databases/auth/password.test.d.ts +2 -0
  204. package/dist/src/databases/auth/password.test.d.ts.map +1 -0
  205. package/dist/src/databases/common.d.ts +53 -0
  206. package/dist/src/databases/common.d.ts.map +1 -0
  207. package/dist/src/databases/common.test.d.ts +2 -0
  208. package/dist/src/databases/common.test.d.ts.map +1 -0
  209. package/dist/src/databases/core/executor.d.ts +10 -0
  210. package/dist/src/databases/core/executor.d.ts.map +1 -0
  211. package/dist/src/databases/core/executor.test.d.ts +2 -0
  212. package/dist/src/databases/core/executor.test.d.ts.map +1 -0
  213. package/dist/src/databases/core/function-mapping.d.ts +38 -0
  214. package/dist/src/databases/core/function-mapping.d.ts.map +1 -0
  215. package/dist/src/databases/core/identifier.d.ts +2 -0
  216. package/dist/src/databases/core/identifier.d.ts.map +1 -0
  217. package/dist/src/databases/core/identifier.test.d.ts +2 -0
  218. package/dist/src/databases/core/identifier.test.d.ts.map +1 -0
  219. package/dist/src/databases/core/query-builder.d.ts +64 -0
  220. package/dist/src/databases/core/query-builder.d.ts.map +1 -0
  221. package/dist/src/databases/core/query-builder.test.d.ts +2 -0
  222. package/dist/src/databases/core/query-builder.test.d.ts.map +1 -0
  223. package/dist/src/databases/directives.d.ts +16 -0
  224. package/dist/src/databases/directives.d.ts.map +1 -0
  225. package/dist/src/databases/directives.test.d.ts +2 -0
  226. package/dist/src/databases/directives.test.d.ts.map +1 -0
  227. package/dist/src/databases/engines/mssql/auth.d.ts +9 -0
  228. package/dist/src/databases/engines/mssql/auth.d.ts.map +1 -0
  229. package/dist/src/databases/engines/mssql/auth.test.d.ts +2 -0
  230. package/dist/src/databases/engines/mssql/auth.test.d.ts.map +1 -0
  231. package/dist/src/databases/engines/mssql/connection.d.ts +14 -0
  232. package/dist/src/databases/engines/mssql/connection.d.ts.map +1 -0
  233. package/dist/src/databases/engines/mssql/format.d.ts +5 -0
  234. package/dist/src/databases/engines/mssql/format.d.ts.map +1 -0
  235. package/dist/src/databases/engines/mssql/getStructure.d.ts +48 -0
  236. package/dist/src/databases/engines/mssql/getStructure.d.ts.map +1 -0
  237. package/dist/src/databases/engines/mssql/getViews.d.ts +7 -0
  238. package/dist/src/databases/engines/mssql/getViews.d.ts.map +1 -0
  239. package/dist/src/databases/engines/mssql/query/index.d.ts +7 -0
  240. package/dist/src/databases/engines/mssql/query/index.d.ts.map +1 -0
  241. package/dist/src/databases/engines/mssql/query/index.test.d.ts +2 -0
  242. package/dist/src/databases/engines/mssql/query/index.test.d.ts.map +1 -0
  243. package/dist/src/databases/engines/mysql/auth.d.ts +9 -0
  244. package/dist/src/databases/engines/mysql/auth.d.ts.map +1 -0
  245. package/dist/src/databases/engines/mysql/auth.test.d.ts +2 -0
  246. package/dist/src/databases/engines/mysql/auth.test.d.ts.map +1 -0
  247. package/dist/src/databases/engines/mysql/connection.d.ts +14 -0
  248. package/dist/src/databases/engines/mysql/connection.d.ts.map +1 -0
  249. package/dist/src/databases/engines/mysql/format.d.ts +5 -0
  250. package/dist/src/databases/engines/mysql/format.d.ts.map +1 -0
  251. package/dist/src/databases/engines/mysql/getStructure.d.ts +48 -0
  252. package/dist/src/databases/engines/mysql/getStructure.d.ts.map +1 -0
  253. package/dist/src/databases/engines/mysql/getViews.d.ts +7 -0
  254. package/dist/src/databases/engines/mysql/getViews.d.ts.map +1 -0
  255. package/dist/src/databases/engines/mysql/query/index.d.ts +7 -0
  256. package/dist/src/databases/engines/mysql/query/index.d.ts.map +1 -0
  257. package/dist/src/databases/engines/mysql/query/index.test.d.ts +2 -0
  258. package/dist/src/databases/engines/mysql/query/index.test.d.ts.map +1 -0
  259. package/dist/src/databases/engines/postgresql/auth.d.ts +9 -0
  260. package/dist/src/databases/engines/postgresql/auth.d.ts.map +1 -0
  261. package/dist/src/databases/engines/postgresql/auth.test.d.ts +2 -0
  262. package/dist/src/databases/engines/postgresql/auth.test.d.ts.map +1 -0
  263. package/dist/src/databases/engines/postgresql/connection.d.ts +14 -0
  264. package/dist/src/databases/engines/postgresql/connection.d.ts.map +1 -0
  265. package/dist/src/databases/engines/postgresql/format.d.ts +5 -0
  266. package/dist/src/databases/engines/postgresql/format.d.ts.map +1 -0
  267. package/dist/src/databases/engines/postgresql/getStructure.d.ts +48 -0
  268. package/dist/src/databases/engines/postgresql/getStructure.d.ts.map +1 -0
  269. package/dist/src/databases/engines/postgresql/getViews.d.ts +7 -0
  270. package/dist/src/databases/engines/postgresql/getViews.d.ts.map +1 -0
  271. package/dist/src/databases/engines/postgresql/query/index.d.ts +7 -0
  272. package/dist/src/databases/engines/postgresql/query/index.d.ts.map +1 -0
  273. package/dist/src/databases/engines/postgresql/query/index.test.d.ts +2 -0
  274. package/dist/src/databases/engines/postgresql/query/index.test.d.ts.map +1 -0
  275. package/dist/src/databases/engines/shared/claims.d.ts +2 -0
  276. package/dist/src/databases/engines/shared/claims.d.ts.map +1 -0
  277. package/dist/src/databases/engines/shared/types.d.ts +8 -0
  278. package/dist/src/databases/engines/shared/types.d.ts.map +1 -0
  279. package/dist/src/databases/high-level-operations.d.ts +146 -0
  280. package/dist/src/databases/high-level-operations.d.ts.map +1 -0
  281. package/dist/src/databases/high-level-operations.test.d.ts +2 -0
  282. package/dist/src/databases/high-level-operations.test.d.ts.map +1 -0
  283. package/dist/src/databases/index.d.ts +8 -0
  284. package/dist/src/databases/index.d.ts.map +1 -0
  285. package/dist/src/databases/metadata/structure.d.ts +56 -0
  286. package/dist/src/databases/metadata/structure.d.ts.map +1 -0
  287. package/dist/src/databases/schemaBuilder/convert.d.ts +2 -0
  288. package/dist/src/databases/schemaBuilder/convert.d.ts.map +1 -0
  289. package/dist/src/databases/schemaBuilder/generateCreateTable/index.d.ts +15 -0
  290. package/dist/src/databases/schemaBuilder/generateCreateTable/index.d.ts.map +1 -0
  291. package/dist/src/databases/schemaBuilder/generateCreateTable/index.test.d.ts +2 -0
  292. package/dist/src/databases/schemaBuilder/generateCreateTable/index.test.d.ts.map +1 -0
  293. package/dist/src/databases/schemaBuilder/generateCreateView/index.d.ts +18 -0
  294. package/dist/src/databases/schemaBuilder/generateCreateView/index.d.ts.map +1 -0
  295. package/dist/src/databases/schemaBuilder/generateInsert/index.d.ts +8 -0
  296. package/dist/src/databases/schemaBuilder/generateInsert/index.d.ts.map +1 -0
  297. package/dist/src/databases/schemaBuilder/generateInsert/index.test.d.ts +2 -0
  298. package/dist/src/databases/schemaBuilder/generateInsert/index.test.d.ts.map +1 -0
  299. package/dist/src/databases/schemaBuilder/generateSchemaCreation/index.d.ts +7 -0
  300. package/dist/src/databases/schemaBuilder/generateSchemaCreation/index.d.ts.map +1 -0
  301. package/dist/src/databases/schemaBuilder/generateSchemaCreation/index.test.d.ts +2 -0
  302. package/dist/src/databases/schemaBuilder/generateSchemaCreation/index.test.d.ts.map +1 -0
  303. package/dist/src/databases/schemaBuilder/mssqlToPostgres/convertView.d.ts +2 -0
  304. package/dist/src/databases/schemaBuilder/mssqlToPostgres/convertView.d.ts.map +1 -0
  305. package/dist/src/databases/schemaBuilder/utils.d.ts +8 -0
  306. package/dist/src/databases/schemaBuilder/utils.d.ts.map +1 -0
  307. package/dist/src/databases/sqlTypeUtils.d.ts +24 -0
  308. package/dist/src/databases/sqlTypeUtils.d.ts.map +1 -0
  309. package/dist/src/databases/sqlTypeUtils.test.d.ts +2 -0
  310. package/dist/src/databases/sqlTypeUtils.test.d.ts.map +1 -0
  311. package/dist/src/databases/transformers/data-transformers.d.ts +215 -0
  312. package/dist/src/databases/transformers/data-transformers.d.ts.map +1 -0
  313. package/dist/src/databases/transformers/data-transformers.test.d.ts +2 -0
  314. package/dist/src/databases/transformers/data-transformers.test.d.ts.map +1 -0
  315. package/dist/src/databases/transformers/genResolverName.d.ts +2 -0
  316. package/dist/src/databases/transformers/genResolverName.d.ts.map +1 -0
  317. package/dist/src/databases/transformers/genResolverName.test.d.ts +2 -0
  318. package/dist/src/databases/transformers/genResolverName.test.d.ts.map +1 -0
  319. package/dist/src/index.d.ts +139 -0
  320. package/dist/src/index.d.ts.map +1 -0
  321. package/dist/src/logging/index.d.ts +21 -0
  322. package/dist/src/logging/index.d.ts.map +1 -0
  323. package/dist/src/queues/kafka.d.ts +22 -0
  324. package/dist/src/queues/kafka.d.ts.map +1 -0
  325. package/dist/src/queues/rabbitmq.d.ts +34 -0
  326. package/dist/src/queues/rabbitmq.d.ts.map +1 -0
  327. package/dist/src/queues/rabbitmq.test.d.ts +2 -0
  328. package/dist/src/queues/rabbitmq.test.d.ts.map +1 -0
  329. package/dist/src/remoteREST/index.d.ts +13 -0
  330. package/dist/src/remoteREST/index.d.ts.map +1 -0
  331. package/dist/src/remoteREST/parse.d.ts +8 -0
  332. package/dist/src/remoteREST/parse.d.ts.map +1 -0
  333. package/dist/src/remoteREST/parse.test.d.ts +2 -0
  334. package/dist/src/remoteREST/parse.test.d.ts.map +1 -0
  335. package/dist/src/remoteREST/proxy.d.ts +6 -0
  336. package/dist/src/remoteREST/proxy.d.ts.map +1 -0
  337. package/dist/src/remoteREST/proxy.test.d.ts +2 -0
  338. package/dist/src/remoteREST/proxy.test.d.ts.map +1 -0
  339. package/dist/src/remoteREST/transform.d.ts +8 -0
  340. package/dist/src/remoteREST/transform.d.ts.map +1 -0
  341. package/dist/src/remoteREST/transform.test.d.ts +2 -0
  342. package/dist/src/remoteREST/transform.test.d.ts.map +1 -0
  343. package/dist/src/remoteREST/types.d.ts +37 -0
  344. package/dist/src/remoteREST/types.d.ts.map +1 -0
  345. package/dist/src/remoteSchemas/index.d.ts +13 -0
  346. package/dist/src/remoteSchemas/index.d.ts.map +1 -0
  347. package/dist/src/remoteSchemas/introspect.d.ts +7 -0
  348. package/dist/src/remoteSchemas/introspect.d.ts.map +1 -0
  349. package/dist/src/remoteSchemas/introspect.test.d.ts +2 -0
  350. package/dist/src/remoteSchemas/introspect.test.d.ts.map +1 -0
  351. package/dist/src/remoteSchemas/proxy.d.ts +7 -0
  352. package/dist/src/remoteSchemas/proxy.d.ts.map +1 -0
  353. package/dist/src/remoteSchemas/proxy.test.d.ts +2 -0
  354. package/dist/src/remoteSchemas/proxy.test.d.ts.map +1 -0
  355. package/dist/src/remoteSchemas/transform.d.ts +9 -0
  356. package/dist/src/remoteSchemas/transform.d.ts.map +1 -0
  357. package/dist/src/remoteSchemas/transform.test.d.ts +2 -0
  358. package/dist/src/remoteSchemas/transform.test.d.ts.map +1 -0
  359. package/dist/src/remoteSchemas/types.d.ts +41 -0
  360. package/dist/src/remoteSchemas/types.d.ts.map +1 -0
  361. package/dist/src/singletons/ai.d.ts +25 -0
  362. package/dist/src/singletons/ai.d.ts.map +1 -0
  363. package/dist/src/singletons/ai.test.d.ts +2 -0
  364. package/dist/src/singletons/ai.test.d.ts.map +1 -0
  365. package/dist/src/singletons/authentication.d.ts +4 -0
  366. package/dist/src/singletons/authentication.d.ts.map +1 -0
  367. package/dist/src/singletons/cache/index.d.ts +5 -0
  368. package/dist/src/singletons/cache/index.d.ts.map +1 -0
  369. package/dist/src/singletons/cache/lruCacheStore.d.ts +12 -0
  370. package/dist/src/singletons/cache/lruCacheStore.d.ts.map +1 -0
  371. package/dist/src/singletons/cache/lruCacheStore.test.d.ts +2 -0
  372. package/dist/src/singletons/cache/lruCacheStore.test.d.ts.map +1 -0
  373. package/dist/src/singletons/cache/redisCacheStore.d.ts +16 -0
  374. package/dist/src/singletons/cache/redisCacheStore.d.ts.map +1 -0
  375. package/dist/src/singletons/cache/redisClient.d.ts +3 -0
  376. package/dist/src/singletons/cache/redisClient.d.ts.map +1 -0
  377. package/dist/src/singletons/cache/registry.d.ts +7 -0
  378. package/dist/src/singletons/cache/registry.d.ts.map +1 -0
  379. package/dist/src/singletons/cache/registry.test.d.ts +2 -0
  380. package/dist/src/singletons/cache/registry.test.d.ts.map +1 -0
  381. package/dist/src/singletons/cache/types.d.ts +8 -0
  382. package/dist/src/singletons/cache/types.d.ts.map +1 -0
  383. package/dist/src/singletons/cron.d.ts +69 -0
  384. package/dist/src/singletons/cron.d.ts.map +1 -0
  385. package/dist/src/singletons/databases.d.ts +27 -0
  386. package/dist/src/singletons/databases.d.ts.map +1 -0
  387. package/dist/src/singletons/databases.test.d.ts +2 -0
  388. package/dist/src/singletons/databases.test.d.ts.map +1 -0
  389. package/dist/src/singletons/env.d.ts +494 -0
  390. package/dist/src/singletons/env.d.ts.map +1 -0
  391. package/dist/src/singletons/queues.d.ts +17 -0
  392. package/dist/src/singletons/queues.d.ts.map +1 -0
  393. package/dist/src/subscriptions/index.d.ts +4 -0
  394. package/dist/src/subscriptions/index.d.ts.map +1 -0
  395. package/dist/src/subscriptions/strategies/database.d.ts +12 -0
  396. package/dist/src/subscriptions/strategies/database.d.ts.map +1 -0
  397. package/dist/src/subscriptions/strategies/index.d.ts +12 -0
  398. package/dist/src/subscriptions/strategies/index.d.ts.map +1 -0
  399. package/dist/src/subscriptions/strategies/queue.d.ts +11 -0
  400. package/dist/src/subscriptions/strategies/queue.d.ts.map +1 -0
  401. package/dist/src/subscriptions/types.d.ts +67 -0
  402. package/dist/src/subscriptions/types.d.ts.map +1 -0
  403. package/dist/src/subscriptions/utils/polling.d.ts +17 -0
  404. package/dist/src/subscriptions/utils/polling.d.ts.map +1 -0
  405. package/dist/src/types/common.d.ts +44 -0
  406. package/dist/src/types/common.d.ts.map +1 -0
  407. package/dist/src/types/configuration.d.ts +28 -0
  408. package/dist/src/types/configuration.d.ts.map +1 -0
  409. package/dist/src/types/db.d.ts +43 -0
  410. package/dist/src/types/db.d.ts.map +1 -0
  411. package/dist/src/types/env.d.ts +2302 -0
  412. package/dist/src/types/env.d.ts.map +1 -0
  413. package/dist/src/types/env.test.d.ts +2 -0
  414. package/dist/src/types/env.test.d.ts.map +1 -0
  415. package/dist/src/types/resolver.d.ts +121 -0
  416. package/dist/src/types/resolver.d.ts.map +1 -0
  417. package/dist/src/types/zod/ai.d.ts +6 -0
  418. package/dist/src/types/zod/ai.d.ts.map +1 -0
  419. package/dist/src/types/zod/auth.d.ts +76 -0
  420. package/dist/src/types/zod/auth.d.ts.map +1 -0
  421. package/dist/src/types/zod/configuration.d.ts +1278 -0
  422. package/dist/src/types/zod/configuration.d.ts.map +1 -0
  423. package/dist/src/types/zod/configuration.test.d.ts +2 -0
  424. package/dist/src/types/zod/configuration.test.d.ts.map +1 -0
  425. package/dist/src/types/zod/cron.d.ts +32 -0
  426. package/dist/src/types/zod/cron.d.ts.map +1 -0
  427. package/dist/src/types/zod/db.d.ts +441 -0
  428. package/dist/src/types/zod/db.d.ts.map +1 -0
  429. package/dist/src/types/zod/db.test.d.ts +2 -0
  430. package/dist/src/types/zod/db.test.d.ts.map +1 -0
  431. package/dist/src/types/zod/mcp.d.ts +6 -0
  432. package/dist/src/types/zod/mcp.d.ts.map +1 -0
  433. package/dist/src/types/zod/operation.d.ts +9 -0
  434. package/dist/src/types/zod/operation.d.ts.map +1 -0
  435. package/dist/src/types/zod/queue.d.ts +656 -0
  436. package/dist/src/types/zod/queue.d.ts.map +1 -0
  437. package/dist/src/types/zod/queue.test.d.ts +2 -0
  438. package/dist/src/types/zod/queue.test.d.ts.map +1 -0
  439. package/dist/src/types/zod/remoteREST.d.ts +6 -0
  440. package/dist/src/types/zod/remoteREST.d.ts.map +1 -0
  441. package/dist/src/types/zod/remoteSchema.d.ts +6 -0
  442. package/dist/src/types/zod/remoteSchema.d.ts.map +1 -0
  443. package/dist/src/utils/benchmark.d.ts +2 -0
  444. package/dist/src/utils/benchmark.d.ts.map +1 -0
  445. package/dist/src/utils/event-emitter.d.ts +19 -0
  446. package/dist/src/utils/event-emitter.d.ts.map +1 -0
  447. package/dist/src/utils/responses.d.ts +19 -0
  448. package/dist/src/utils/responses.d.ts.map +1 -0
  449. package/dist/src/utils/responses.test.d.ts +2 -0
  450. package/dist/src/utils/responses.test.d.ts.map +1 -0
  451. package/dist/src/utils/safeJSONParse.d.ts +2 -0
  452. package/dist/src/utils/safeJSONParse.d.ts.map +1 -0
  453. package/dist/src/utils/selection.d.ts +3 -0
  454. package/dist/src/utils/selection.d.ts.map +1 -0
  455. package/dist/src/utils/selection.test.d.ts +2 -0
  456. package/dist/src/utils/selection.test.d.ts.map +1 -0
  457. package/dist/src/utils/sessionVariables.d.ts +47 -0
  458. package/dist/src/utils/sessionVariables.d.ts.map +1 -0
  459. package/dist/src/utils/sessionVariables.test.d.ts +2 -0
  460. package/dist/src/utils/sessionVariables.test.d.ts.map +1 -0
  461. package/dist/src/utils/writeSchema.d.ts +3 -0
  462. package/dist/src/utils/writeSchema.d.ts.map +1 -0
  463. package/dist/standalone.d.ts +3 -0
  464. package/dist/standalone.d.ts.map +1 -0
  465. package/dist/tsconfig.tsbuildinfo +1 -0
  466. package/package.json +119 -0
  467. package/playgrounds/console/index.html +25 -0
  468. package/playgrounds/graphiql/index.html +1144 -0
  469. package/playgrounds/scalar/index.html +19 -0
  470. package/src/ai/agent/agent.ts +222 -0
  471. package/src/ai/agent/index.ts +2 -0
  472. package/src/ai/agent/providers/anthropic.ts +113 -0
  473. package/src/ai/agent/providers/index.ts +62 -0
  474. package/src/ai/agent/providers/ollama.ts +128 -0
  475. package/src/ai/agent/providers/openai.ts +100 -0
  476. package/src/ai/agent/types.ts +65 -0
  477. package/src/ai/index.ts +8 -0
  478. package/src/ai/mcp/create-server.ts +444 -0
  479. package/src/ai/mcp/index.ts +80 -0
  480. package/src/ai/mcp/instructions.ts +103 -0
  481. package/src/ai/tools/agent.ts +111 -0
  482. package/src/ai/tools/core.ts +486 -0
  483. package/src/ai/tools/query-data.ts +109 -0
  484. package/src/analyzeQuery/analyzers/fragmentAnalyzer.ts +29 -0
  485. package/src/analyzeQuery/analyzers/operationAnalyzer.ts +50 -0
  486. package/src/analyzeQuery/analyzers/selectionAnalyzer.ts +135 -0
  487. package/src/analyzeQuery/analyzers/variableAnalyzer.ts +17 -0
  488. package/src/analyzeQuery/depthLimit.ts +124 -0
  489. package/src/analyzeQuery/directiveUtils.ts +99 -0
  490. package/src/analyzeQuery/index.ts +66 -0
  491. package/src/analyzeQuery/resolveVariables.ts +394 -0
  492. package/src/analyzeQuery/typeUtils.ts +47 -0
  493. package/src/analyzeQuery/types.ts +57 -0
  494. package/src/analyzeQuery/valueExtractors.ts +96 -0
  495. package/src/authentication/duration.ts +50 -0
  496. package/src/authentication/index.ts +34 -0
  497. package/src/authentication/jwt.ts +220 -0
  498. package/src/authentication/paseto.ts +256 -0
  499. package/src/authentication/tokenRepository.ts +75 -0
  500. package/src/authentication/types.ts +78 -0
  501. package/src/cli/seedAuth.ts +51 -0
  502. package/src/cli/seedAuthArgs.ts +50 -0
  503. package/src/config/helpers/cronHelper.ts +29 -0
  504. package/src/config/helpers/index.ts +8 -0
  505. package/src/config/helpers/operationHelper.ts +146 -0
  506. package/src/config/helpers/queueHelper.ts +27 -0
  507. package/src/config/index.ts +315 -0
  508. package/src/config/types/ai.ts +35 -0
  509. package/src/config/types/auth.ts +147 -0
  510. package/src/config/types/configuration.ts +69 -0
  511. package/src/config/types/cron.ts +140 -0
  512. package/src/config/types/db.ts +256 -0
  513. package/src/config/types/index.ts +129 -0
  514. package/src/config/types/operation.ts +253 -0
  515. package/src/config/types/queue.ts +172 -0
  516. package/src/config/types/remote-rest.ts +28 -0
  517. package/src/config/types/remote-schema.ts +39 -0
  518. package/src/config/types/virtual-columns.ts +157 -0
  519. package/src/configuration/getSchemas/index.ts +82 -0
  520. package/src/configuration/getSchemas/mergeEntities/index.ts +221 -0
  521. package/src/configuration/getSchemas/type-definition-generator/index.ts +511 -0
  522. package/src/configuration/gql/buildExecute.ts +54 -0
  523. package/src/configuration/gql/gqlAuthOperations.ts +150 -0
  524. package/src/configuration/gql/handleGraphQLRequestFactory.ts +415 -0
  525. package/src/configuration/gql/handleGraphQLSubscriptionFactory.ts +249 -0
  526. package/src/configuration/index.ts +138 -0
  527. package/src/configuration/rest/generateOpenAPI.ts +361 -0
  528. package/src/configuration/rest/handleRESTRequestFactory.ts +335 -0
  529. package/src/configuration/rest/index.ts +167 -0
  530. package/src/configuration/rest/openApiErrors.ts +106 -0
  531. package/src/console/api.ts +270 -0
  532. package/src/cron/index.ts +251 -0
  533. package/src/databases/auth/auth-operations.ts +36 -0
  534. package/src/databases/auth/password.ts +4 -0
  535. package/src/databases/common.ts +642 -0
  536. package/src/databases/core/executor.ts +97 -0
  537. package/src/databases/core/function-mapping.ts +176 -0
  538. package/src/databases/core/identifier.ts +8 -0
  539. package/src/databases/core/query-builder.ts +47 -0
  540. package/src/databases/directives.ts +112 -0
  541. package/src/databases/engines/mssql/auth.ts +112 -0
  542. package/src/databases/engines/mssql/connection.ts +151 -0
  543. package/src/databases/engines/mssql/format.ts +23 -0
  544. package/src/databases/engines/mssql/getStructure.ts +112 -0
  545. package/src/databases/engines/mssql/getViews.ts +17 -0
  546. package/src/databases/engines/mssql/query/index.ts +306 -0
  547. package/src/databases/engines/mysql/auth.ts +100 -0
  548. package/src/databases/engines/mysql/connection.ts +100 -0
  549. package/src/databases/engines/mysql/format.ts +23 -0
  550. package/src/databases/engines/mysql/getStructure.ts +116 -0
  551. package/src/databases/engines/mysql/getViews.ts +20 -0
  552. package/src/databases/engines/mysql/query/index.ts +291 -0
  553. package/src/databases/engines/postgresql/auth.ts +98 -0
  554. package/src/databases/engines/postgresql/connection.ts +99 -0
  555. package/src/databases/engines/postgresql/format.ts +23 -0
  556. package/src/databases/engines/postgresql/getStructure.ts +149 -0
  557. package/src/databases/engines/postgresql/getViews.ts +20 -0
  558. package/src/databases/engines/postgresql/query/index.ts +291 -0
  559. package/src/databases/engines/shared/claims.ts +26 -0
  560. package/src/databases/engines/shared/types.ts +7 -0
  561. package/src/databases/high-level-operations.ts +272 -0
  562. package/src/databases/index.ts +28 -0
  563. package/src/databases/metadata/structure.ts +12 -0
  564. package/src/databases/schemaBuilder/convert.ts +121 -0
  565. package/src/databases/schemaBuilder/generateCreateTable/index.ts +133 -0
  566. package/src/databases/schemaBuilder/generateCreateView/index.ts +101 -0
  567. package/src/databases/schemaBuilder/generateInsert/index.ts +47 -0
  568. package/src/databases/schemaBuilder/generateSchemaCreation/index.ts +29 -0
  569. package/src/databases/schemaBuilder/mssqlToPostgres/convertView.ts +47 -0
  570. package/src/databases/schemaBuilder/utils.ts +17 -0
  571. package/src/databases/sqlTypeUtils.ts +91 -0
  572. package/src/databases/transformers/data-transformers.ts +128 -0
  573. package/src/databases/transformers/genResolverName.ts +18 -0
  574. package/src/index.ts +461 -0
  575. package/src/logging/index.ts +69 -0
  576. package/src/queues/kafka.ts +409 -0
  577. package/src/queues/rabbitmq.ts +331 -0
  578. package/src/remoteREST/index.ts +46 -0
  579. package/src/remoteREST/parse.ts +68 -0
  580. package/src/remoteREST/proxy.ts +92 -0
  581. package/src/remoteREST/transform.ts +121 -0
  582. package/src/remoteREST/types.ts +38 -0
  583. package/src/remoteSchemas/index.ts +48 -0
  584. package/src/remoteSchemas/introspect.ts +44 -0
  585. package/src/remoteSchemas/proxy.ts +146 -0
  586. package/src/remoteSchemas/transform.ts +210 -0
  587. package/src/remoteSchemas/types.ts +43 -0
  588. package/src/singletons/ai.ts +91 -0
  589. package/src/singletons/authentication.ts +13 -0
  590. package/src/singletons/cache/index.ts +4 -0
  591. package/src/singletons/cache/lruCacheStore.ts +34 -0
  592. package/src/singletons/cache/redisCacheStore.ts +81 -0
  593. package/src/singletons/cache/redisClient.ts +12 -0
  594. package/src/singletons/cache/registry.ts +51 -0
  595. package/src/singletons/cache/types.ts +7 -0
  596. package/src/singletons/cron.ts +21 -0
  597. package/src/singletons/databases.ts +68 -0
  598. package/src/singletons/env.ts +3 -0
  599. package/src/singletons/queues.ts +101 -0
  600. package/src/subscriptions/index.ts +20 -0
  601. package/src/subscriptions/strategies/database.ts +68 -0
  602. package/src/subscriptions/strategies/index.ts +38 -0
  603. package/src/subscriptions/strategies/queue.ts +61 -0
  604. package/src/subscriptions/types.ts +74 -0
  605. package/src/subscriptions/utils/polling.ts +119 -0
  606. package/src/types/common.ts +57 -0
  607. package/src/types/configuration.ts +52 -0
  608. package/src/types/db.ts +87 -0
  609. package/src/types/env.ts +137 -0
  610. package/src/types/resolver.ts +181 -0
  611. package/src/types/zod/ai.ts +8 -0
  612. package/src/types/zod/auth.ts +96 -0
  613. package/src/types/zod/configuration.ts +46 -0
  614. package/src/types/zod/cron.ts +35 -0
  615. package/src/types/zod/db.ts +146 -0
  616. package/src/types/zod/mcp.ts +8 -0
  617. package/src/types/zod/operation.ts +37 -0
  618. package/src/types/zod/queue.ts +182 -0
  619. package/src/types/zod/remoteREST.ts +8 -0
  620. package/src/types/zod/remoteSchema.ts +11 -0
  621. package/src/utils/benchmark.ts +13 -0
  622. package/src/utils/event-emitter.ts +217 -0
  623. package/src/utils/responses.ts +42 -0
  624. package/src/utils/safeJSONParse.ts +10 -0
  625. package/src/utils/selection.ts +35 -0
  626. package/src/utils/sessionVariables.ts +131 -0
  627. package/src/utils/writeSchema.ts +13 -0
  628. package/standalone.ts +32 -0
@@ -0,0 +1,394 @@
1
+ import { isString } from "es-toolkit";
2
+
3
+ import type { SessionContext } from "../utils/sessionVariables";
4
+ import type {
5
+ OperationAnalysis,
6
+ ResolvedOperation,
7
+ SelectionAnalysis,
8
+ VariableDefinition,
9
+ } from "./types";
10
+
11
+ import { hasSessionVariables, replaceSessionVariables } from "../utils/sessionVariables";
12
+
13
+ const PRIMITIVE_GRAPHQL_TYPES = new Set(["Int", "Float", "String", "Boolean", "ID"]);
14
+
15
+ // ─── Utilities ──────────────────────────────────────────────────────────────
16
+
17
+ /**
18
+ * Resolves a single `$varName` reference against a flat variable map.
19
+ * Returns the resolved value, or the original value if it's not a variable ref.
20
+ */
21
+ export const resolveVariableRef = (variables: Record<string, unknown>, value: unknown): unknown => {
22
+ if (!isString(value)) return value;
23
+ if (!value.startsWith("$")) return value;
24
+
25
+ const varName = value.substring(1);
26
+ if (variables[varName] === undefined) throw new Error(`Variable ${varName} not found`);
27
+ return variables[varName];
28
+ };
29
+
30
+ // ─── Step 1: Validation ─────────────────────────────────────────────────────
31
+
32
+ /**
33
+ * Validates that all declared variables have runtime values or defaults.
34
+ * Throws if a required variable is missing.
35
+ */
36
+ export const validateVariables = (
37
+ variables: VariableDefinition[] | undefined,
38
+ runtimeVars: Record<string, unknown>,
39
+ ): void => {
40
+ variables?.forEach((variable) => {
41
+ if (runtimeVars[variable.name] === undefined && variable.defaultValue === undefined) {
42
+ throw new Error(`Missing value for variable: $${variable.name}`);
43
+ }
44
+ });
45
+ };
46
+
47
+ // ─── Step 2: Object Variable Flattening ─────────────────────────────────────
48
+
49
+ /** Result of flattening object-type variables into static_N primitives. */
50
+ export interface FlattenResult {
51
+ /** Map from object var name → transformed object with $static_N refs */
52
+ resolvedMap: Map<string, unknown>;
53
+ /** New VariableDefinition entries for generated static_N vars */
54
+ newStaticVariables: VariableDefinition[];
55
+ /** Runtime values for the generated static_N vars */
56
+ resolvedRuntimeValues: Record<string, unknown>;
57
+ /** Names of object-type variables that were consumed */
58
+ resolvedObjectVarNames: Set<string>;
59
+ /** Variable names referenced via $varName inside object values */
60
+ nestedReferencedVars: Set<string>;
61
+ }
62
+
63
+ /**
64
+ * Extracts primitive values from a runtime object and converts them to static variable references.
65
+ * This mirrors what extractArgumentValue does for AST nodes, but works on resolved JavaScript objects.
66
+ * Ensures primitive values get parameterized in SQL instead of being inlined.
67
+ * Also tracks any nested variable references found within the object.
68
+ */
69
+ export const extractRuntimePrimitivesToVariables = (
70
+ obj: unknown,
71
+ generatedVariables: VariableDefinition[],
72
+ runtimeVariables: Record<string, unknown>,
73
+ startIndex: number,
74
+ referencedVariables: Set<string> = new Set(),
75
+ ): unknown => {
76
+ // Handle null/undefined
77
+ if (obj === null || obj === undefined) {
78
+ return obj;
79
+ }
80
+
81
+ // Handle arrays - recurse into each element
82
+ if (Array.isArray(obj)) {
83
+ return obj.map((item) =>
84
+ extractRuntimePrimitivesToVariables(
85
+ item,
86
+ generatedVariables,
87
+ runtimeVariables,
88
+ startIndex,
89
+ referencedVariables,
90
+ ),
91
+ );
92
+ }
93
+
94
+ // Handle primitives - convert to static variable references
95
+ if (typeof obj === "string") {
96
+ if (obj.startsWith("$")) {
97
+ referencedVariables.add(obj.substring(1));
98
+ return obj;
99
+ }
100
+ const varName = `static_${startIndex + generatedVariables.length}`;
101
+ generatedVariables.push({
102
+ name: varName,
103
+ type: "String",
104
+ required: false,
105
+ defaultValue: obj,
106
+ });
107
+ runtimeVariables[varName] = obj;
108
+ return `$${varName}`;
109
+ }
110
+
111
+ if (typeof obj === "number") {
112
+ const varName = `static_${startIndex + generatedVariables.length}`;
113
+ const type = Number.isInteger(obj) ? "Int" : "Float";
114
+ generatedVariables.push({
115
+ name: varName,
116
+ type,
117
+ required: false,
118
+ defaultValue: obj,
119
+ });
120
+ runtimeVariables[varName] = obj;
121
+ return `$${varName}`;
122
+ }
123
+
124
+ if (typeof obj === "boolean") {
125
+ const varName = `static_${startIndex + generatedVariables.length}`;
126
+ generatedVariables.push({
127
+ name: varName,
128
+ type: "Boolean",
129
+ required: false,
130
+ defaultValue: obj,
131
+ });
132
+ runtimeVariables[varName] = obj;
133
+ return `$${varName}`;
134
+ }
135
+
136
+ // Handle objects - recurse into each property
137
+ if (typeof obj === "object") {
138
+ const result: Record<string, unknown> = {};
139
+ for (const [key, value] of Object.entries(obj)) {
140
+ result[key] = extractRuntimePrimitivesToVariables(
141
+ value,
142
+ generatedVariables,
143
+ runtimeVariables,
144
+ startIndex,
145
+ referencedVariables,
146
+ );
147
+ }
148
+ return result;
149
+ }
150
+
151
+ return obj;
152
+ };
153
+
154
+ /**
155
+ * Identifies object-type variables from the operation, flattens their primitive
156
+ * leaves into static_N variable references, and returns all resolution artifacts.
157
+ * Pure function — does not mutate the input variable definitions.
158
+ */
159
+ export const flattenObjectVariables = (
160
+ variables: VariableDefinition[],
161
+ runtimeVars: Record<string, unknown>,
162
+ existingStaticCount: number,
163
+ ): FlattenResult => {
164
+ const newStaticVariables: VariableDefinition[] = [];
165
+ const resolvedRuntimeValues: Record<string, unknown> = {};
166
+ const resolvedObjectVarNames = new Set<string>();
167
+ const nestedReferencedVars = new Set<string>();
168
+ const resolvedMap = new Map<string, unknown>();
169
+
170
+ for (const varDef of variables) {
171
+ if (varDef.name.startsWith("static_")) continue;
172
+ if (PRIMITIVE_GRAPHQL_TYPES.has(varDef.type)) continue;
173
+
174
+ const value = runtimeVars[varDef.name];
175
+ if (value === undefined || typeof value !== "object" || value === null) {
176
+ continue;
177
+ }
178
+
179
+ resolvedObjectVarNames.add(varDef.name);
180
+
181
+ const transformed = extractRuntimePrimitivesToVariables(
182
+ value,
183
+ newStaticVariables,
184
+ resolvedRuntimeValues,
185
+ existingStaticCount,
186
+ nestedReferencedVars,
187
+ );
188
+
189
+ resolvedMap.set(varDef.name, transformed);
190
+ }
191
+
192
+ return {
193
+ resolvedMap,
194
+ newStaticVariables,
195
+ resolvedRuntimeValues,
196
+ resolvedObjectVarNames,
197
+ nestedReferencedVars,
198
+ };
199
+ };
200
+
201
+ // ─── Step 3: Immutable Field Resolution ─────────────────────────────────────
202
+
203
+ /**
204
+ * Replaces `$session.*` placeholders in any argument value.
205
+ * Walks all arguments, not just `where`.
206
+ */
207
+ const resolveSessionInArguments = (
208
+ args: Record<string, unknown>,
209
+ session: SessionContext,
210
+ ): Record<string, unknown> => {
211
+ const result: Record<string, unknown> = {};
212
+
213
+ for (const [key, value] of Object.entries(args)) {
214
+ if (
215
+ value &&
216
+ typeof value === "object" &&
217
+ !Array.isArray(value) &&
218
+ hasSessionVariables(value as Record<string, unknown>)
219
+ ) {
220
+ result[key] = replaceSessionVariables(value as Record<string, unknown>, session);
221
+ } else {
222
+ result[key] = value;
223
+ }
224
+ }
225
+
226
+ return result;
227
+ };
228
+
229
+ /**
230
+ * Returns a new field tree with:
231
+ * 1. `$varName` argument references replaced with their resolved objects from `resolvedMap`
232
+ * 2. `$session.*` placeholders replaced with actual JWT claim values in ALL arguments
233
+ *
234
+ * Does NOT mutate the input fields — returns a new array.
235
+ */
236
+ export const resolveFieldArguments = (
237
+ fields: SelectionAnalysis[],
238
+ resolvedMap: Map<string, unknown>,
239
+ session?: SessionContext,
240
+ ): SelectionAnalysis[] => {
241
+ return fields.map((field) => {
242
+ let newArguments = field.arguments;
243
+
244
+ if (field.arguments) {
245
+ // Shallow-copy arguments so we don't mutate originals
246
+ newArguments = { ...field.arguments };
247
+
248
+ // Replace object variable references in arguments
249
+ for (const [key, value] of Object.entries(newArguments)) {
250
+ if (isString(value) && value.startsWith("$")) {
251
+ const varName = value.substring(1);
252
+ if (resolvedMap.has(varName)) {
253
+ newArguments[key] = resolvedMap.get(varName);
254
+ }
255
+ }
256
+ }
257
+
258
+ // Replace session variables in ALL argument values (not just where)
259
+ if (session) {
260
+ newArguments = resolveSessionInArguments(newArguments, session);
261
+ }
262
+ }
263
+
264
+ // Recurse into nested selections
265
+ const newSelections = field.selections
266
+ ? resolveFieldArguments(field.selections, resolvedMap, session)
267
+ : field.selections;
268
+
269
+ // Only create a new field object if something changed
270
+ if (newArguments !== field.arguments || newSelections !== field.selections) {
271
+ return {
272
+ ...field,
273
+ arguments: newArguments,
274
+ selections: newSelections,
275
+ };
276
+ }
277
+
278
+ return field;
279
+ });
280
+ };
281
+
282
+ // ─── Step 4: Variable List Rebuilding ───────────────────────────────────────
283
+
284
+ /** Result of rebuilding the final variable list and values. */
285
+ interface BuildFinalResult {
286
+ variables: VariableDefinition[];
287
+ allVariables: Record<string, unknown>;
288
+ }
289
+
290
+ /**
291
+ * Produces the rebuilt variable definition list and merged flat variable map.
292
+ * - Removes consumed object-type variable definitions
293
+ * - Preserves nested $ref variable definitions
294
+ * - Appends generated static_N definitions
295
+ * - Merges defaults → runtime → generated values (in override order)
296
+ */
297
+ export const buildFinalVariables = (
298
+ originalVars: VariableDefinition[],
299
+ flattenResult: FlattenResult,
300
+ runtimeVars: Record<string, unknown>,
301
+ ): BuildFinalResult => {
302
+ const {
303
+ newStaticVariables,
304
+ resolvedObjectVarNames,
305
+ nestedReferencedVars,
306
+ resolvedRuntimeValues,
307
+ } = flattenResult;
308
+
309
+ const variables = [
310
+ ...originalVars.filter(
311
+ (v) => !resolvedObjectVarNames.has(v.name) || nestedReferencedVars.has(v.name),
312
+ ),
313
+ ...newStaticVariables,
314
+ ];
315
+
316
+ // Merge: defaults → runtime → generated static values
317
+ const allVariables = {
318
+ ...variables.reduce<Record<string, unknown>>((acc, variable) => {
319
+ if (variable.defaultValue !== undefined) {
320
+ acc[variable.name] = variable.defaultValue;
321
+ }
322
+ return acc;
323
+ }, {}),
324
+ ...runtimeVars,
325
+ ...resolvedRuntimeValues,
326
+ };
327
+
328
+ return { variables, allVariables };
329
+ };
330
+
331
+ // ─── Orchestrator ───────────────────────────────────────────────────────────
332
+
333
+ /**
334
+ * Resolves an operation's variables in a single pass:
335
+ * 1. Validates that all declared variables have values or defaults
336
+ * 2. Flattens object-type variables into static_N primitive references
337
+ * 3. Produces new fields with argument references and session variables resolved
338
+ * 4. Builds the final variable list and merged value map
339
+ *
340
+ * Returns a `ResolvedOperation` — the input `operation` is NEVER mutated.
341
+ */
342
+ export const resolveVariables = (
343
+ operation: OperationAnalysis,
344
+ variables: Record<string, unknown>,
345
+ session?: SessionContext,
346
+ ): ResolvedOperation => {
347
+ // 1. Validate
348
+ validateVariables(operation.variables, variables);
349
+
350
+ // 2. Flatten object-type variables
351
+ const hasVars = operation.variables && operation.variables.length > 0;
352
+
353
+ if (!hasVars) {
354
+ // No variable definitions — still need to resolve session variables in fields
355
+ const fields = session
356
+ ? resolveFieldArguments(operation.fields, new Map(), session)
357
+ : operation.fields;
358
+
359
+ return {
360
+ fields,
361
+ variables: operation.variables ?? [],
362
+ allVariables: { ...variables },
363
+ };
364
+ }
365
+
366
+ const existingStaticCount = operation.variables!.filter((v) =>
367
+ v.name.startsWith("static_"),
368
+ ).length;
369
+
370
+ const flattenResult = flattenObjectVariables(
371
+ operation.variables!,
372
+ variables,
373
+ existingStaticCount,
374
+ );
375
+
376
+ // 3. Resolve field arguments (immutable)
377
+ const fields =
378
+ flattenResult.resolvedMap.size > 0 || session
379
+ ? resolveFieldArguments(operation.fields, flattenResult.resolvedMap, session)
380
+ : operation.fields;
381
+
382
+ // 4. Build final variable list and merged values
383
+ const { variables: resolvedVarDefs, allVariables } = buildFinalVariables(
384
+ operation.variables!,
385
+ flattenResult,
386
+ variables,
387
+ );
388
+
389
+ return {
390
+ fields,
391
+ variables: resolvedVarDefs.length > 0 ? resolvedVarDefs : operation.variables!,
392
+ allVariables,
393
+ };
394
+ };
@@ -0,0 +1,47 @@
1
+ import { GraphQLList, GraphQLNonNull, GraphQLObjectType } from "graphql";
2
+
3
+ import type { GraphQLType, TypeNode } from "graphql";
4
+
5
+ export const getFieldType = (
6
+ parentType: GraphQLObjectType,
7
+ fieldName: string,
8
+ ): GraphQLType | undefined => {
9
+ const fields = parentType.getFields();
10
+ const field = fields[fieldName];
11
+ return field ? field.type : undefined;
12
+ };
13
+
14
+ export const unwrapType = (
15
+ type: GraphQLType,
16
+ ): {
17
+ type: GraphQLType;
18
+ isArray: boolean;
19
+ } => {
20
+ let isArray = false;
21
+
22
+ while (true) {
23
+ if (type instanceof GraphQLNonNull) {
24
+ type = type.ofType;
25
+ } else if (type instanceof GraphQLList) {
26
+ isArray = true;
27
+ type = type.ofType;
28
+ } else {
29
+ break;
30
+ }
31
+ }
32
+
33
+ return { type, isArray };
34
+ };
35
+
36
+ export const processType = (typeNode: TypeNode): string => {
37
+ switch (typeNode.kind) {
38
+ case "NonNullType":
39
+ return `${processType(typeNode.type)}!`;
40
+ case "ListType":
41
+ return `[${processType(typeNode.type)}]`;
42
+ case "NamedType":
43
+ return typeNode.name.value;
44
+ default:
45
+ return "Unknown";
46
+ }
47
+ };
@@ -0,0 +1,57 @@
1
+ import type { EntitySource } from "../types/resolver";
2
+
3
+ export interface AnalysisResult {
4
+ operations: OperationAnalysis[];
5
+ fragments: FragmentAnalysis[];
6
+ }
7
+
8
+ export interface OperationAnalysis {
9
+ name: string | null;
10
+ operation: "query" | "mutation" | "subscription";
11
+ variables?: VariableDefinition[];
12
+ fields: SelectionAnalysis[];
13
+ }
14
+
15
+ export interface FragmentAnalysis {
16
+ name: string;
17
+ typeCondition: string;
18
+ fields: SelectionAnalysis[];
19
+ }
20
+
21
+ export interface SelectionAnalysis {
22
+ name: string;
23
+ alias?: string;
24
+ /** The source of this field (table, queue, auth, operation, etc.) */
25
+ source?: EntitySource;
26
+ // oxlint-disable-next-line typescript/no-explicit-any
27
+ arguments?: { [key: string]: any };
28
+ selections?: SelectionAnalysis[];
29
+ isArray?: boolean;
30
+ directives?: DirectiveAnalysis[];
31
+ isRequired?: boolean;
32
+ }
33
+
34
+ export interface DirectiveAnalysis {
35
+ name: string;
36
+ arguments?: { [key: string]: unknown };
37
+ }
38
+
39
+ export interface VariableDefinition {
40
+ name: string;
41
+ type: string;
42
+ required: boolean;
43
+ defaultValue?: unknown;
44
+ }
45
+
46
+ /**
47
+ * The result of resolving variables for an operation.
48
+ * This is an immutable snapshot — the original OperationAnalysis is never mutated.
49
+ */
50
+ export interface ResolvedOperation {
51
+ /** Fields with all $varName references and $session.* placeholders resolved */
52
+ fields: SelectionAnalysis[];
53
+ /** Rebuilt variable definitions (object vars replaced with static_N entries) */
54
+ variables: VariableDefinition[];
55
+ /** Flat map of all variable values: defaults → runtime → generated static values */
56
+ allVariables: Record<string, unknown>;
57
+ }
@@ -0,0 +1,96 @@
1
+ import type { ValueNode } from "graphql";
2
+ import type { VariableDefinition } from "./types";
3
+
4
+ // Helper function to extract argument values from AST nodes
5
+ // When a static value is found, it creates a virtual variable and returns a variable reference
6
+ export const extractArgumentValue = (
7
+ valueNode: ValueNode,
8
+ generatedVariables?: VariableDefinition[],
9
+ // oxlint-disable-next-line typescript/no-explicit-any
10
+ ): any => {
11
+ switch (valueNode.kind) {
12
+ case "IntValue": {
13
+ const value = parseInt(valueNode.value, 10);
14
+ if (generatedVariables) {
15
+ const varName = `static_${generatedVariables.length}`;
16
+
17
+ generatedVariables.push({
18
+ name: varName,
19
+ type: "Int",
20
+ required: false,
21
+ defaultValue: value,
22
+ });
23
+
24
+ return `$${varName}`;
25
+ }
26
+ return value;
27
+ }
28
+ case "FloatValue": {
29
+ const value = parseFloat(valueNode.value);
30
+ if (generatedVariables) {
31
+ const varName = `static_${generatedVariables.length}`;
32
+
33
+ generatedVariables.push({
34
+ name: varName,
35
+ type: "Float",
36
+ required: false,
37
+ defaultValue: value,
38
+ });
39
+
40
+ return `$${varName}`;
41
+ }
42
+ return value;
43
+ }
44
+ case "StringValue": {
45
+ const value = valueNode.value;
46
+ if (generatedVariables) {
47
+ const varName = `static_${generatedVariables.length}`;
48
+
49
+ generatedVariables.push({
50
+ name: varName,
51
+ type: "String",
52
+ required: false,
53
+ defaultValue: value,
54
+ });
55
+
56
+ return `$${varName}`;
57
+ }
58
+ return value;
59
+ }
60
+ case "BooleanValue": {
61
+ const value = valueNode.value;
62
+ if (generatedVariables) {
63
+ const varName = `static_${generatedVariables.length}`;
64
+
65
+ generatedVariables.push({
66
+ name: varName,
67
+ type: "Boolean",
68
+ required: false,
69
+ defaultValue: value,
70
+ });
71
+
72
+ return `$${varName}`;
73
+ }
74
+ return value;
75
+ }
76
+ case "EnumValue": {
77
+ return valueNode.value;
78
+ }
79
+ case "ListValue":
80
+ return valueNode.values.map((v) => extractArgumentValue(v, generatedVariables));
81
+ case "ObjectValue":
82
+ return valueNode.fields.reduce(
83
+ (obj, field) => {
84
+ obj[field.name.value] = extractArgumentValue(field.value, generatedVariables);
85
+ return obj;
86
+ },
87
+ {} as { [key: string]: unknown },
88
+ );
89
+ case "NullValue":
90
+ return null;
91
+ case "Variable":
92
+ return `$${valueNode.name.value}`;
93
+ default:
94
+ return null;
95
+ }
96
+ };
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Parse duration string (e.g., "5m", "1h", "7d") to seconds
3
+ */
4
+ export const parseDurationToSeconds = (duration: string): number => {
5
+ const unit = duration.slice(-1);
6
+ const value = parseInt(duration.slice(0, -1), 10);
7
+
8
+ switch (unit) {
9
+ case "s":
10
+ return value;
11
+ case "m":
12
+ return value * 60;
13
+ case "h":
14
+ return value * 60 * 60;
15
+ case "d":
16
+ return value * 24 * 60 * 60;
17
+ default:
18
+ return value; // assume seconds if no unit
19
+ }
20
+ };
21
+
22
+ /**
23
+ * Parse duration string (e.g., "5m", "1h", "7d") to milliseconds
24
+ */
25
+ export const parseDurationToMs = (duration: string): number => {
26
+ return parseDurationToSeconds(duration) * 1000;
27
+ };
28
+
29
+ const PASETO_UNIT_MAP: Record<string, string> = {
30
+ s: "seconds",
31
+ m: "minutes",
32
+ h: "hours",
33
+ d: "days",
34
+ };
35
+
36
+ /**
37
+ * Convert compact duration string to PASETO-compatible relative time format.
38
+ * e.g., "5m" → "5 minutes", "7d" → "7 days", "1h" → "1 hour", "30s" → "30 seconds"
39
+ */
40
+ export const toPasetoDuration = (duration: string): string => {
41
+ const unit = duration.slice(-1);
42
+ const value = parseInt(duration.slice(0, -1), 10);
43
+ const unitName = PASETO_UNIT_MAP[unit];
44
+
45
+ if (!unitName) {
46
+ return `${value} seconds`;
47
+ }
48
+
49
+ return value === 1 ? `${value} ${unitName.slice(0, -1)}` : `${value} ${unitName}`;
50
+ };
@@ -0,0 +1,34 @@
1
+ import type { Env } from "../types/env";
2
+ import type { TokenService, TokenStrategy } from "./types";
3
+
4
+ import { createJWTService } from "./jwt";
5
+ import { createPASETOService } from "./paseto";
6
+
7
+ export const createTokenService = (env: Env, strategy: TokenStrategy = "jwt"): TokenService => {
8
+ switch (strategy) {
9
+ case "jwt": {
10
+ if (!env.jwt.secret) {
11
+ throw new Error(
12
+ "JWT_SECRET environment variable is required when using jwt token strategy",
13
+ );
14
+ }
15
+ return createJWTService(env);
16
+ }
17
+ case "paseto_local": {
18
+ if (!env.paseto.localKey) {
19
+ throw new Error(
20
+ "PASETO_LOCAL_KEY environment variable is required when using paseto_local token strategy.",
21
+ );
22
+ }
23
+ return createPASETOService(env, "local");
24
+ }
25
+ case "paseto_public": {
26
+ if (!env.paseto.secretKey || !env.paseto.publicKey) {
27
+ throw new Error(
28
+ "PASETO_SECRET_KEY and PASETO_PUBLIC_KEY environment variables are required when using paseto_public token strategy.",
29
+ );
30
+ }
31
+ return createPASETOService(env, "public");
32
+ }
33
+ }
34
+ };