@undefineds.co/xpod 0.1.0-local.202602081751

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 (970) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +146 -0
  3. package/components/components.jsonld +72 -0
  4. package/components/context.jsonld +1635 -0
  5. package/config/bun.json +90 -0
  6. package/config/cli.json +260 -0
  7. package/config/cloud.json +469 -0
  8. package/config/extensions.local.initializer.json +23 -0
  9. package/config/local.json +261 -0
  10. package/config/logging/configurable.json +18 -0
  11. package/config/main.json +200 -0
  12. package/config/main.vanilla.json +6 -0
  13. package/config/resolver.json +347 -0
  14. package/config/search.json +66 -0
  15. package/config/seed.dev.json +29 -0
  16. package/config/seeds/admin.example.json +11 -0
  17. package/config/seeds/test.json +11 -0
  18. package/config/terminal.json +22 -0
  19. package/config/vector.json +35 -0
  20. package/config/xpod.base.json +155 -0
  21. package/config/xpod.cluster.json +419 -0
  22. package/config/xpod.json +233 -0
  23. package/dist/agents/AgentExecutorFactory.d.ts +67 -0
  24. package/dist/agents/AgentExecutorFactory.js +193 -0
  25. package/dist/agents/AgentExecutorFactory.js.map +1 -0
  26. package/dist/agents/AgentManager.d.ts +114 -0
  27. package/dist/agents/AgentManager.js +289 -0
  28. package/dist/agents/AgentManager.js.map +1 -0
  29. package/dist/agents/BaseAgentExecutor.d.ts +67 -0
  30. package/dist/agents/BaseAgentExecutor.js +101 -0
  31. package/dist/agents/BaseAgentExecutor.js.map +1 -0
  32. package/dist/agents/ClaudeExecutor.d.ts +63 -0
  33. package/dist/agents/ClaudeExecutor.js +335 -0
  34. package/dist/agents/ClaudeExecutor.js.map +1 -0
  35. package/dist/agents/CodeBuddyExecutor.d.ts +54 -0
  36. package/dist/agents/CodeBuddyExecutor.js +273 -0
  37. package/dist/agents/CodeBuddyExecutor.js.map +1 -0
  38. package/dist/agents/IndexAgent.d.ts +70 -0
  39. package/dist/agents/IndexAgent.js +417 -0
  40. package/dist/agents/IndexAgent.js.map +1 -0
  41. package/dist/agents/index.d.ts +22 -0
  42. package/dist/agents/index.js +48 -0
  43. package/dist/agents/index.js.map +1 -0
  44. package/dist/agents/schema/agent-config.d.ts +58 -0
  45. package/dist/agents/schema/agent-config.js +74 -0
  46. package/dist/agents/schema/agent-config.js.map +1 -0
  47. package/dist/agents/schema/tables.d.ts +46 -0
  48. package/dist/agents/schema/tables.js +64 -0
  49. package/dist/agents/schema/tables.js.map +1 -0
  50. package/dist/agents/types.d.ts +266 -0
  51. package/dist/agents/types.js +9 -0
  52. package/dist/agents/types.js.map +1 -0
  53. package/dist/ai/index.d.ts +5 -0
  54. package/dist/ai/index.js +22 -0
  55. package/dist/ai/index.js.map +1 -0
  56. package/dist/ai/schema/config.d.ts +27 -0
  57. package/dist/ai/schema/config.js +36 -0
  58. package/dist/ai/schema/config.js.map +1 -0
  59. package/dist/ai/schema/index.d.ts +8 -0
  60. package/dist/ai/schema/index.js +27 -0
  61. package/dist/ai/schema/index.js.map +1 -0
  62. package/dist/ai/schema/model.d.ts +40 -0
  63. package/dist/ai/schema/model.js +60 -0
  64. package/dist/ai/schema/model.js.map +1 -0
  65. package/dist/ai/schema/provider.d.ts +21 -0
  66. package/dist/ai/schema/provider.js +30 -0
  67. package/dist/ai/schema/provider.js.map +1 -0
  68. package/dist/ai/schema/types.d.ts +52 -0
  69. package/dist/ai/schema/types.js +62 -0
  70. package/dist/ai/schema/types.js.map +1 -0
  71. package/dist/ai/schema/vector-store.d.ts +53 -0
  72. package/dist/ai/schema/vector-store.js +65 -0
  73. package/dist/ai/schema/vector-store.js.map +1 -0
  74. package/dist/ai/service/CredentialReader.d.ts +7 -0
  75. package/dist/ai/service/CredentialReader.js +10 -0
  76. package/dist/ai/service/CredentialReader.js.map +1 -0
  77. package/dist/ai/service/CredentialReaderImpl.d.ts +6 -0
  78. package/dist/ai/service/CredentialReaderImpl.js +55 -0
  79. package/dist/ai/service/CredentialReaderImpl.js.map +1 -0
  80. package/dist/ai/service/EmbeddingService.d.ts +8 -0
  81. package/dist/ai/service/EmbeddingService.js +10 -0
  82. package/dist/ai/service/EmbeddingService.js.map +1 -0
  83. package/dist/ai/service/EmbeddingServiceImpl.d.ts +11 -0
  84. package/dist/ai/service/EmbeddingServiceImpl.js +73 -0
  85. package/dist/ai/service/EmbeddingServiceImpl.js.map +1 -0
  86. package/dist/ai/service/ProviderRegistry.d.ts +26 -0
  87. package/dist/ai/service/ProviderRegistry.js +10 -0
  88. package/dist/ai/service/ProviderRegistry.js.map +1 -0
  89. package/dist/ai/service/ProviderRegistryImpl.d.ts +14 -0
  90. package/dist/ai/service/ProviderRegistryImpl.js +112 -0
  91. package/dist/ai/service/ProviderRegistryImpl.js.map +1 -0
  92. package/dist/ai/service/index.d.ts +10 -0
  93. package/dist/ai/service/index.js +29 -0
  94. package/dist/ai/service/index.js.map +1 -0
  95. package/dist/ai/service/types.d.ts +12 -0
  96. package/dist/ai/service/types.js +6 -0
  97. package/dist/ai/service/types.js.map +1 -0
  98. package/dist/api/ApiServer.d.ts +77 -0
  99. package/dist/api/ApiServer.js +191 -0
  100. package/dist/api/ApiServer.js.map +1 -0
  101. package/dist/api/auth/AuthContext.d.ts +41 -0
  102. package/dist/api/auth/AuthContext.js +44 -0
  103. package/dist/api/auth/AuthContext.js.map +1 -0
  104. package/dist/api/auth/Authenticator.d.ts +23 -0
  105. package/dist/api/auth/Authenticator.js +3 -0
  106. package/dist/api/auth/Authenticator.js.map +1 -0
  107. package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +56 -0
  108. package/dist/api/auth/ClientCredentialsAuthenticator.js +191 -0
  109. package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -0
  110. package/dist/api/auth/MultiAuthenticator.d.ts +15 -0
  111. package/dist/api/auth/MultiAuthenticator.js +36 -0
  112. package/dist/api/auth/MultiAuthenticator.js.map +1 -0
  113. package/dist/api/auth/NodeTokenAuthenticator.d.ts +21 -0
  114. package/dist/api/auth/NodeTokenAuthenticator.js +124 -0
  115. package/dist/api/auth/NodeTokenAuthenticator.js.map +1 -0
  116. package/dist/api/auth/SolidTokenAuthenticator.d.ts +27 -0
  117. package/dist/api/auth/SolidTokenAuthenticator.js +144 -0
  118. package/dist/api/auth/SolidTokenAuthenticator.js.map +1 -0
  119. package/dist/api/auth/index.d.ts +5 -0
  120. package/dist/api/auth/index.js +23 -0
  121. package/dist/api/auth/index.js.map +1 -0
  122. package/dist/api/chatkit/ai-provider.d.ts +44 -0
  123. package/dist/api/chatkit/ai-provider.js +157 -0
  124. package/dist/api/chatkit/ai-provider.js.map +1 -0
  125. package/dist/api/chatkit/index.d.ts +11 -0
  126. package/dist/api/chatkit/index.js +44 -0
  127. package/dist/api/chatkit/index.js.map +1 -0
  128. package/dist/api/chatkit/pod-store.d.ts +154 -0
  129. package/dist/api/chatkit/pod-store.js +794 -0
  130. package/dist/api/chatkit/pod-store.js.map +1 -0
  131. package/dist/api/chatkit/schema.d.ts +139 -0
  132. package/dist/api/chatkit/schema.js +168 -0
  133. package/dist/api/chatkit/schema.js.map +1 -0
  134. package/dist/api/chatkit/service.d.ts +143 -0
  135. package/dist/api/chatkit/service.js +442 -0
  136. package/dist/api/chatkit/service.js.map +1 -0
  137. package/dist/api/chatkit/store.d.ts +63 -0
  138. package/dist/api/chatkit/store.js +178 -0
  139. package/dist/api/chatkit/store.js.map +1 -0
  140. package/dist/api/chatkit/types.d.ts +461 -0
  141. package/dist/api/chatkit/types.js +50 -0
  142. package/dist/api/chatkit/types.js.map +1 -0
  143. package/dist/api/container/cloud.d.ts +12 -0
  144. package/dist/api/container/cloud.js +97 -0
  145. package/dist/api/container/cloud.js.map +1 -0
  146. package/dist/api/container/common.d.ts +11 -0
  147. package/dist/api/container/common.js +82 -0
  148. package/dist/api/container/common.js.map +1 -0
  149. package/dist/api/container/index.d.ts +16 -0
  150. package/dist/api/container/index.js +90 -0
  151. package/dist/api/container/index.js.map +1 -0
  152. package/dist/api/container/local.d.ts +13 -0
  153. package/dist/api/container/local.js +197 -0
  154. package/dist/api/container/local.js.map +1 -0
  155. package/dist/api/container/routes.d.ts +11 -0
  156. package/dist/api/container/routes.js +129 -0
  157. package/dist/api/container/routes.js.map +1 -0
  158. package/dist/api/container/types.d.ts +92 -0
  159. package/dist/api/container/types.js +8 -0
  160. package/dist/api/container/types.js.map +1 -0
  161. package/dist/api/handlers/AdminHandler.d.ts +6 -0
  162. package/dist/api/handlers/AdminHandler.js +330 -0
  163. package/dist/api/handlers/AdminHandler.js.map +1 -0
  164. package/dist/api/handlers/ApiKeyHandler.d.ts +15 -0
  165. package/dist/api/handlers/ApiKeyHandler.js +159 -0
  166. package/dist/api/handlers/ApiKeyHandler.js.map +1 -0
  167. package/dist/api/handlers/ChatHandler.d.ts +60 -0
  168. package/dist/api/handlers/ChatHandler.js +230 -0
  169. package/dist/api/handlers/ChatHandler.js.map +1 -0
  170. package/dist/api/handlers/ChatKitHandler.d.ts +18 -0
  171. package/dist/api/handlers/ChatKitHandler.js +151 -0
  172. package/dist/api/handlers/ChatKitHandler.js.map +1 -0
  173. package/dist/api/handlers/DashboardHandler.d.ts +14 -0
  174. package/dist/api/handlers/DashboardHandler.js +117 -0
  175. package/dist/api/handlers/DashboardHandler.js.map +1 -0
  176. package/dist/api/handlers/DdnsHandler.d.ts +19 -0
  177. package/dist/api/handlers/DdnsHandler.js +306 -0
  178. package/dist/api/handlers/DdnsHandler.js.map +1 -0
  179. package/dist/api/handlers/DevHandler.d.ts +18 -0
  180. package/dist/api/handlers/DevHandler.js +276 -0
  181. package/dist/api/handlers/DevHandler.js.map +1 -0
  182. package/dist/api/handlers/NodeHandler.d.ts +16 -0
  183. package/dist/api/handlers/NodeHandler.js +190 -0
  184. package/dist/api/handlers/NodeHandler.js.map +1 -0
  185. package/dist/api/handlers/PodManagementHandler.d.ts +39 -0
  186. package/dist/api/handlers/PodManagementHandler.js +294 -0
  187. package/dist/api/handlers/PodManagementHandler.js.map +1 -0
  188. package/dist/api/handlers/QuotaHandler.d.ts +21 -0
  189. package/dist/api/handlers/QuotaHandler.js +209 -0
  190. package/dist/api/handlers/QuotaHandler.js.map +1 -0
  191. package/dist/api/handlers/SignalHandler.d.ts +13 -0
  192. package/dist/api/handlers/SignalHandler.js +122 -0
  193. package/dist/api/handlers/SignalHandler.js.map +1 -0
  194. package/dist/api/handlers/SubdomainClientHandler.d.ts +24 -0
  195. package/dist/api/handlers/SubdomainClientHandler.js +169 -0
  196. package/dist/api/handlers/SubdomainClientHandler.js.map +1 -0
  197. package/dist/api/handlers/SubdomainHandler.d.ts +17 -0
  198. package/dist/api/handlers/SubdomainHandler.js +312 -0
  199. package/dist/api/handlers/SubdomainHandler.js.map +1 -0
  200. package/dist/api/handlers/VectorHandler.d.ts +15 -0
  201. package/dist/api/handlers/VectorHandler.js +293 -0
  202. package/dist/api/handlers/VectorHandler.js.map +1 -0
  203. package/dist/api/handlers/VectorStoreHandler.d.ts +20 -0
  204. package/dist/api/handlers/VectorStoreHandler.js +348 -0
  205. package/dist/api/handlers/VectorStoreHandler.js.map +1 -0
  206. package/dist/api/handlers/VectorStoreWebhookHandler.d.ts +74 -0
  207. package/dist/api/handlers/VectorStoreWebhookHandler.js +121 -0
  208. package/dist/api/handlers/VectorStoreWebhookHandler.js.map +1 -0
  209. package/dist/api/handlers/WebIdProfileHandler.d.ts +14 -0
  210. package/dist/api/handlers/WebIdProfileHandler.js +204 -0
  211. package/dist/api/handlers/WebIdProfileHandler.js.map +1 -0
  212. package/dist/api/handlers/index.d.ts +11 -0
  213. package/dist/api/handlers/index.js +28 -0
  214. package/dist/api/handlers/index.js.map +1 -0
  215. package/dist/api/index.d.ts +12 -0
  216. package/dist/api/index.js +29 -0
  217. package/dist/api/index.js.map +1 -0
  218. package/dist/api/main.d.ts +14 -0
  219. package/dist/api/main.js +106 -0
  220. package/dist/api/main.js.map +1 -0
  221. package/dist/api/middleware/AuthMiddleware.d.ts +35 -0
  222. package/dist/api/middleware/AuthMiddleware.js +51 -0
  223. package/dist/api/middleware/AuthMiddleware.js.map +1 -0
  224. package/dist/api/middleware/index.d.ts +1 -0
  225. package/dist/api/middleware/index.js +18 -0
  226. package/dist/api/middleware/index.js.map +1 -0
  227. package/dist/api/models/model-provider.schema.d.ts +12 -0
  228. package/dist/api/models/model-provider.schema.js +21 -0
  229. package/dist/api/models/model-provider.schema.js.map +1 -0
  230. package/dist/api/models/namespaces.d.ts +9 -0
  231. package/dist/api/models/namespaces.js +34 -0
  232. package/dist/api/models/namespaces.js.map +1 -0
  233. package/dist/api/service/InternalPodService.d.ts +19 -0
  234. package/dist/api/service/InternalPodService.js +82 -0
  235. package/dist/api/service/InternalPodService.js.map +1 -0
  236. package/dist/api/service/VectorService.d.ts +156 -0
  237. package/dist/api/service/VectorService.js +202 -0
  238. package/dist/api/service/VectorService.js.map +1 -0
  239. package/dist/api/service/VectorStoreService.d.ts +262 -0
  240. package/dist/api/service/VectorStoreService.js +985 -0
  241. package/dist/api/service/VectorStoreService.js.map +1 -0
  242. package/dist/api/service/VercelChatService.d.ts +28 -0
  243. package/dist/api/service/VercelChatService.js +289 -0
  244. package/dist/api/service/VercelChatService.js.map +1 -0
  245. package/dist/api/store/DrizzleClientCredentialsStore.d.ts +56 -0
  246. package/dist/api/store/DrizzleClientCredentialsStore.js +145 -0
  247. package/dist/api/store/DrizzleClientCredentialsStore.js.map +1 -0
  248. package/dist/api/store/index.d.ts +1 -0
  249. package/dist/api/store/index.js +18 -0
  250. package/dist/api/store/index.js.map +1 -0
  251. package/dist/components/components.jsonld +88 -0
  252. package/dist/components/context.jsonld +1962 -0
  253. package/dist/credential/index.d.ts +1 -0
  254. package/dist/credential/index.js +18 -0
  255. package/dist/credential/index.js.map +1 -0
  256. package/dist/credential/schema/index.d.ts +2 -0
  257. package/dist/credential/schema/index.js +19 -0
  258. package/dist/credential/schema/index.js.map +1 -0
  259. package/dist/credential/schema/tables.d.ts +31 -0
  260. package/dist/credential/schema/tables.js +42 -0
  261. package/dist/credential/schema/tables.js.map +1 -0
  262. package/dist/credential/schema/types.d.ts +20 -0
  263. package/dist/credential/schema/types.js +26 -0
  264. package/dist/credential/schema/types.js.map +1 -0
  265. package/dist/dns/DnsProvider.d.ts +46 -0
  266. package/dist/dns/DnsProvider.js +3 -0
  267. package/dist/dns/DnsProvider.js.map +1 -0
  268. package/dist/dns/DnsProvider.jsonld +161 -0
  269. package/dist/dns/cloudflare/CloudflareDnsProvider.d.ts +51 -0
  270. package/dist/dns/cloudflare/CloudflareDnsProvider.js +227 -0
  271. package/dist/dns/cloudflare/CloudflareDnsProvider.js.map +1 -0
  272. package/dist/dns/cloudflare/index.d.ts +1 -0
  273. package/dist/dns/cloudflare/index.js +18 -0
  274. package/dist/dns/cloudflare/index.js.map +1 -0
  275. package/dist/dns/tencent/TencentDnsProvider.d.ts +42 -0
  276. package/dist/dns/tencent/TencentDnsProvider.js +221 -0
  277. package/dist/dns/tencent/TencentDnsProvider.js.map +1 -0
  278. package/dist/dns/tencent/TencentDnsProvider.jsonld +239 -0
  279. package/dist/document/Chunker.d.ts +64 -0
  280. package/dist/document/Chunker.js +8 -0
  281. package/dist/document/Chunker.js.map +1 -0
  282. package/dist/document/DocumentParser.d.ts +58 -0
  283. package/dist/document/DocumentParser.js +8 -0
  284. package/dist/document/DocumentParser.js.map +1 -0
  285. package/dist/document/HeadingChunker.d.ts +34 -0
  286. package/dist/document/HeadingChunker.js +182 -0
  287. package/dist/document/HeadingChunker.js.map +1 -0
  288. package/dist/document/JinaDocumentParser.d.ts +40 -0
  289. package/dist/document/JinaDocumentParser.js +129 -0
  290. package/dist/document/JinaDocumentParser.js.map +1 -0
  291. package/dist/document/index.d.ts +7 -0
  292. package/dist/document/index.js +26 -0
  293. package/dist/document/index.js.map +1 -0
  294. package/dist/edge/DdnsManager.d.ts +53 -0
  295. package/dist/edge/DdnsManager.js +153 -0
  296. package/dist/edge/DdnsManager.js.map +1 -0
  297. package/dist/edge/Dns01CertificateProvisioner.d.ts +27 -0
  298. package/dist/edge/Dns01CertificateProvisioner.js +160 -0
  299. package/dist/edge/Dns01CertificateProvisioner.js.map +1 -0
  300. package/dist/edge/Dns01CertificateProvisioner.jsonld +148 -0
  301. package/dist/edge/EdgeNodeAgent.d.ts +56 -0
  302. package/dist/edge/EdgeNodeAgent.js +230 -0
  303. package/dist/edge/EdgeNodeAgent.js.map +1 -0
  304. package/dist/edge/EdgeNodeAgent.jsonld +89 -0
  305. package/dist/edge/EdgeNodeAgentInitializer.d.ts +25 -0
  306. package/dist/edge/EdgeNodeAgentInitializer.js +64 -0
  307. package/dist/edge/EdgeNodeAgentInitializer.js.map +1 -0
  308. package/dist/edge/EdgeNodeCapabilityDetector.d.ts +98 -0
  309. package/dist/edge/EdgeNodeCapabilityDetector.js +425 -0
  310. package/dist/edge/EdgeNodeCapabilityDetector.js.map +1 -0
  311. package/dist/edge/EdgeNodeCertificateProvisioner.d.ts +3 -0
  312. package/dist/edge/EdgeNodeCertificateProvisioner.js +3 -0
  313. package/dist/edge/EdgeNodeCertificateProvisioner.js.map +1 -0
  314. package/dist/edge/EdgeNodeCertificateProvisioner.jsonld +21 -0
  315. package/dist/edge/EdgeNodeDnsCoordinator.d.ts +38 -0
  316. package/dist/edge/EdgeNodeDnsCoordinator.js +201 -0
  317. package/dist/edge/EdgeNodeDnsCoordinator.js.map +1 -0
  318. package/dist/edge/EdgeNodeDnsCoordinator.jsonld +212 -0
  319. package/dist/edge/EdgeNodeHealthProbeService.d.ts +25 -0
  320. package/dist/edge/EdgeNodeHealthProbeService.js +208 -0
  321. package/dist/edge/EdgeNodeHealthProbeService.js.map +1 -0
  322. package/dist/edge/EdgeNodeHealthProbeService.jsonld +176 -0
  323. package/dist/edge/EdgeNodeModeDetector.d.ts +50 -0
  324. package/dist/edge/EdgeNodeModeDetector.js +194 -0
  325. package/dist/edge/EdgeNodeModeDetector.js.map +1 -0
  326. package/dist/edge/EdgeNodeModeDetector.jsonld +114 -0
  327. package/dist/edge/EdgeNodeTunnelManager.d.ts +23 -0
  328. package/dist/edge/EdgeNodeTunnelManager.js +99 -0
  329. package/dist/edge/EdgeNodeTunnelManager.js.map +1 -0
  330. package/dist/edge/EdgeNodeTunnelManager.jsonld +128 -0
  331. package/dist/edge/FrpTunnelManager.d.ts +30 -0
  332. package/dist/edge/FrpTunnelManager.js +151 -0
  333. package/dist/edge/FrpTunnelManager.js.map +1 -0
  334. package/dist/edge/FrpTunnelManager.jsonld +192 -0
  335. package/dist/edge/LocalNetworkManager.d.ts +41 -0
  336. package/dist/edge/LocalNetworkManager.js +115 -0
  337. package/dist/edge/LocalNetworkManager.js.map +1 -0
  338. package/dist/edge/acme/AcmeCertificateManager.d.ts +65 -0
  339. package/dist/edge/acme/AcmeCertificateManager.js +233 -0
  340. package/dist/edge/acme/AcmeCertificateManager.js.map +1 -0
  341. package/dist/edge/acme/AcmeCertificateManager.jsonld +373 -0
  342. package/dist/edge/acme/ClusterCertificateManager.d.ts +40 -0
  343. package/dist/edge/acme/ClusterCertificateManager.js +184 -0
  344. package/dist/edge/acme/ClusterCertificateManager.js.map +1 -0
  345. package/dist/edge/acme/DnsChallengeClient.d.ts +15 -0
  346. package/dist/edge/acme/DnsChallengeClient.js +40 -0
  347. package/dist/edge/acme/DnsChallengeClient.js.map +1 -0
  348. package/dist/edge/acme/utils.d.ts +4 -0
  349. package/dist/edge/acme/utils.js +17 -0
  350. package/dist/edge/acme/utils.js.map +1 -0
  351. package/dist/edge/frp/FrpRelay.d.ts +11 -0
  352. package/dist/edge/frp/FrpRelay.js +29 -0
  353. package/dist/edge/frp/FrpRelay.js.map +1 -0
  354. package/dist/edge/frp/FrpcProcessManager.d.ts +51 -0
  355. package/dist/edge/frp/FrpcProcessManager.js +174 -0
  356. package/dist/edge/frp/FrpcProcessManager.js.map +1 -0
  357. package/dist/edge/interfaces/EdgeNodeTunnelManager.d.ts +6 -0
  358. package/dist/edge/interfaces/EdgeNodeTunnelManager.js +3 -0
  359. package/dist/edge/interfaces/EdgeNodeTunnelManager.js.map +1 -0
  360. package/dist/edge/interfaces/EdgeNodeTunnelManager.jsonld +21 -0
  361. package/dist/embedding/CredentialReader.d.ts +7 -0
  362. package/dist/embedding/CredentialReader.js +10 -0
  363. package/dist/embedding/CredentialReader.js.map +1 -0
  364. package/dist/embedding/CredentialReader.jsonld +22 -0
  365. package/dist/embedding/CredentialReaderImpl.d.ts +6 -0
  366. package/dist/embedding/CredentialReaderImpl.js +55 -0
  367. package/dist/embedding/CredentialReaderImpl.js.map +1 -0
  368. package/dist/embedding/CredentialReaderImpl.jsonld +31 -0
  369. package/dist/embedding/EmbeddingService.d.ts +8 -0
  370. package/dist/embedding/EmbeddingService.js +10 -0
  371. package/dist/embedding/EmbeddingService.js.map +1 -0
  372. package/dist/embedding/EmbeddingService.jsonld +26 -0
  373. package/dist/embedding/EmbeddingServiceImpl.d.ts +11 -0
  374. package/dist/embedding/EmbeddingServiceImpl.js +73 -0
  375. package/dist/embedding/EmbeddingServiceImpl.js.map +1 -0
  376. package/dist/embedding/EmbeddingServiceImpl.jsonld +53 -0
  377. package/dist/embedding/ProviderRegistry.d.ts +26 -0
  378. package/dist/embedding/ProviderRegistry.js +10 -0
  379. package/dist/embedding/ProviderRegistry.js.map +1 -0
  380. package/dist/embedding/ProviderRegistry.jsonld +30 -0
  381. package/dist/embedding/ProviderRegistryImpl.d.ts +14 -0
  382. package/dist/embedding/ProviderRegistryImpl.js +112 -0
  383. package/dist/embedding/ProviderRegistryImpl.js.map +1 -0
  384. package/dist/embedding/ProviderRegistryImpl.jsonld +40 -0
  385. package/dist/embedding/index.d.ts +5 -0
  386. package/dist/embedding/index.js +22 -0
  387. package/dist/embedding/index.js.map +1 -0
  388. package/dist/embedding/schema/index.d.ts +1 -0
  389. package/dist/embedding/schema/index.js +18 -0
  390. package/dist/embedding/schema/index.js.map +1 -0
  391. package/dist/embedding/schema/tables.d.ts +70 -0
  392. package/dist/embedding/schema/tables.js +102 -0
  393. package/dist/embedding/schema/tables.js.map +1 -0
  394. package/dist/embedding/types.d.ts +12 -0
  395. package/dist/embedding/types.js +6 -0
  396. package/dist/embedding/types.js.map +1 -0
  397. package/dist/gateway/port-finder.d.ts +4 -0
  398. package/dist/gateway/port-finder.js +15 -0
  399. package/dist/gateway/port-finder.js.map +1 -0
  400. package/dist/gateway/proxy.d.ts +22 -0
  401. package/dist/gateway/proxy.js +149 -0
  402. package/dist/gateway/proxy.js.map +1 -0
  403. package/dist/gateway/supervisor.d.ts +2 -0
  404. package/dist/gateway/supervisor.js +7 -0
  405. package/dist/gateway/supervisor.js.map +1 -0
  406. package/dist/gateway/types.d.ts +1 -0
  407. package/dist/gateway/types.js +3 -0
  408. package/dist/gateway/types.js.map +1 -0
  409. package/dist/http/AppStaticAssetHandler.d.ts +8 -0
  410. package/dist/http/AppStaticAssetHandler.js +27 -0
  411. package/dist/http/AppStaticAssetHandler.js.map +1 -0
  412. package/dist/http/AppStaticAssetHandler.jsonld +26 -0
  413. package/dist/http/ClusterIngressRouter.d.ts +93 -0
  414. package/dist/http/ClusterIngressRouter.js +355 -0
  415. package/dist/http/ClusterIngressRouter.js.map +1 -0
  416. package/dist/http/ClusterIngressRouter.jsonld +227 -0
  417. package/dist/http/ClusterWebSocketConfigurator.d.ts +59 -0
  418. package/dist/http/ClusterWebSocketConfigurator.js +226 -0
  419. package/dist/http/ClusterWebSocketConfigurator.js.map +1 -0
  420. package/dist/http/ClusterWebSocketConfigurator.jsonld +145 -0
  421. package/dist/http/EdgeNodeDirectDebugHttpHandler.d.ts +25 -0
  422. package/dist/http/EdgeNodeDirectDebugHttpHandler.js +126 -0
  423. package/dist/http/EdgeNodeDirectDebugHttpHandler.js.map +1 -0
  424. package/dist/http/EdgeNodeDirectDebugHttpHandler.jsonld +151 -0
  425. package/dist/http/EdgeNodeProxyHttpHandler.d.ts +28 -0
  426. package/dist/http/EdgeNodeProxyHttpHandler.js +190 -0
  427. package/dist/http/EdgeNodeProxyHttpHandler.js.map +1 -0
  428. package/dist/http/EdgeNodeProxyHttpHandler.jsonld +162 -0
  429. package/dist/http/PodRoutingHttpHandler.d.ts +64 -0
  430. package/dist/http/PodRoutingHttpHandler.js +233 -0
  431. package/dist/http/PodRoutingHttpHandler.js.map +1 -0
  432. package/dist/http/PodRoutingHttpHandler.jsonld +171 -0
  433. package/dist/http/RequestIdHttpHandler.d.ts +15 -0
  434. package/dist/http/RequestIdHttpHandler.js +59 -0
  435. package/dist/http/RequestIdHttpHandler.js.map +1 -0
  436. package/dist/http/RouterHttpHandler.d.ts +21 -0
  437. package/dist/http/RouterHttpHandler.js +49 -0
  438. package/dist/http/RouterHttpHandler.js.map +1 -0
  439. package/dist/http/RouterHttpHandler.jsonld +80 -0
  440. package/dist/http/RouterHttpRoute.d.ts +6 -0
  441. package/dist/http/RouterHttpRoute.js +11 -0
  442. package/dist/http/RouterHttpRoute.js.map +1 -0
  443. package/dist/http/RouterHttpRoute.jsonld +48 -0
  444. package/dist/http/SignalInterceptHttpHandler.d.ts +24 -0
  445. package/dist/http/SignalInterceptHttpHandler.js +47 -0
  446. package/dist/http/SignalInterceptHttpHandler.js.map +1 -0
  447. package/dist/http/SignalInterceptHttpHandler.jsonld +103 -0
  448. package/dist/http/SubgraphSparqlHttpHandler.d.ts +70 -0
  449. package/dist/http/SubgraphSparqlHttpHandler.js +640 -0
  450. package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -0
  451. package/dist/http/SubgraphSparqlHttpHandler.jsonld +363 -0
  452. package/dist/http/TracingHandler.d.ts +19 -0
  453. package/dist/http/TracingHandler.js +60 -0
  454. package/dist/http/TracingHandler.js.map +1 -0
  455. package/dist/http/TracingHandler.jsonld +37 -0
  456. package/dist/http/admin/EdgeNodeAdminHttpHandler.d.ts +45 -0
  457. package/dist/http/admin/EdgeNodeAdminHttpHandler.js +292 -0
  458. package/dist/http/admin/EdgeNodeAdminHttpHandler.js.map +1 -0
  459. package/dist/http/admin/EdgeNodeCertificateHttpHandler.d.ts +33 -0
  460. package/dist/http/admin/EdgeNodeCertificateHttpHandler.js +172 -0
  461. package/dist/http/admin/EdgeNodeCertificateHttpHandler.js.map +1 -0
  462. package/dist/http/admin/EdgeNodeCertificateHttpHandler.jsonld +182 -0
  463. package/dist/http/admin/EdgeNodeSignalHttpHandler.d.ts +71 -0
  464. package/dist/http/admin/EdgeNodeSignalHttpHandler.js +674 -0
  465. package/dist/http/admin/EdgeNodeSignalHttpHandler.js.map +1 -0
  466. package/dist/http/admin/EdgeNodeSignalHttpHandler.jsonld +406 -0
  467. package/dist/http/cluster/PodMigrationHttpHandler.d.ts +52 -0
  468. package/dist/http/cluster/PodMigrationHttpHandler.js +208 -0
  469. package/dist/http/cluster/PodMigrationHttpHandler.js.map +1 -0
  470. package/dist/http/cluster/PodMigrationHttpHandler.jsonld +169 -0
  471. package/dist/http/quota/QuotaAdminHttpHandler.d.ts +34 -0
  472. package/dist/http/quota/QuotaAdminHttpHandler.js +241 -0
  473. package/dist/http/quota/QuotaAdminHttpHandler.js.map +1 -0
  474. package/dist/http/quota/QuotaAdminHttpHandler.jsonld +171 -0
  475. package/dist/http/search/SearchHttpHandler.d.ts +59 -0
  476. package/dist/http/search/SearchHttpHandler.js +312 -0
  477. package/dist/http/search/SearchHttpHandler.js.map +1 -0
  478. package/dist/http/search/index.d.ts +1 -0
  479. package/dist/http/search/index.js +18 -0
  480. package/dist/http/search/index.js.map +1 -0
  481. package/dist/http/terminal/TerminalHttpHandler.d.ts +45 -0
  482. package/dist/http/terminal/TerminalHttpHandler.js +306 -0
  483. package/dist/http/terminal/TerminalHttpHandler.js.map +1 -0
  484. package/dist/http/terminal/TerminalHttpHandler.jsonld +232 -0
  485. package/dist/http/terminal/index.d.ts +1 -0
  486. package/dist/http/terminal/index.js +18 -0
  487. package/dist/http/terminal/index.js.map +1 -0
  488. package/dist/http/vector/VectorHttpHandler.d.ts +42 -0
  489. package/dist/http/vector/VectorHttpHandler.js +301 -0
  490. package/dist/http/vector/VectorHttpHandler.js.map +1 -0
  491. package/dist/http/vector/VectorHttpHandler.jsonld +157 -0
  492. package/dist/http/vector/index.d.ts +1 -0
  493. package/dist/http/vector/index.js +18 -0
  494. package/dist/http/vector/index.js.map +1 -0
  495. package/dist/ice/IceServerProvider.d.ts +85 -0
  496. package/dist/ice/IceServerProvider.js +122 -0
  497. package/dist/ice/IceServerProvider.js.map +1 -0
  498. package/dist/ice/index.d.ts +8 -0
  499. package/dist/ice/index.js +25 -0
  500. package/dist/ice/index.js.map +1 -0
  501. package/dist/identity/CenterNodeRegistrationService.d.ts +102 -0
  502. package/dist/identity/CenterNodeRegistrationService.js +266 -0
  503. package/dist/identity/CenterNodeRegistrationService.js.map +1 -0
  504. package/dist/identity/CenterNodeRegistrationService.jsonld +251 -0
  505. package/dist/identity/ReactAppViewHandler.d.ts +31 -0
  506. package/dist/identity/ReactAppViewHandler.js +79 -0
  507. package/dist/identity/ReactAppViewHandler.js.map +1 -0
  508. package/dist/identity/ReactAppViewHandler.jsonld +99 -0
  509. package/dist/identity/drizzle/AccountRepository.d.ts +31 -0
  510. package/dist/identity/drizzle/AccountRepository.js +130 -0
  511. package/dist/identity/drizzle/AccountRepository.js.map +1 -0
  512. package/dist/identity/drizzle/AccountRoleRepository.d.ts +23 -0
  513. package/dist/identity/drizzle/AccountRoleRepository.js +233 -0
  514. package/dist/identity/drizzle/AccountRoleRepository.js.map +1 -0
  515. package/dist/identity/drizzle/DdnsRepository.d.ts +87 -0
  516. package/dist/identity/drizzle/DdnsRepository.js +284 -0
  517. package/dist/identity/drizzle/DdnsRepository.js.map +1 -0
  518. package/dist/identity/drizzle/DrizzleIndexedStorage.d.ts +26 -0
  519. package/dist/identity/drizzle/DrizzleIndexedStorage.js +159 -0
  520. package/dist/identity/drizzle/DrizzleIndexedStorage.js.map +1 -0
  521. package/dist/identity/drizzle/DrizzleIndexedStorage.jsonld +130 -0
  522. package/dist/identity/drizzle/EdgeNodeRepository.d.ts +155 -0
  523. package/dist/identity/drizzle/EdgeNodeRepository.js +555 -0
  524. package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -0
  525. package/dist/identity/drizzle/PodLookupRepository.d.ts +59 -0
  526. package/dist/identity/drizzle/PodLookupRepository.js +153 -0
  527. package/dist/identity/drizzle/PodLookupRepository.js.map +1 -0
  528. package/dist/identity/drizzle/WebIdProfileRepository.d.ts +58 -0
  529. package/dist/identity/drizzle/WebIdProfileRepository.js +157 -0
  530. package/dist/identity/drizzle/WebIdProfileRepository.js.map +1 -0
  531. package/dist/identity/drizzle/db.d.ts +60 -0
  532. package/dist/identity/drizzle/db.js +269 -0
  533. package/dist/identity/drizzle/db.js.map +1 -0
  534. package/dist/identity/drizzle/schema.d.ts +1 -0
  535. package/dist/identity/drizzle/schema.js +20 -0
  536. package/dist/identity/drizzle/schema.js.map +1 -0
  537. package/dist/identity/drizzle/schema.pg.d.ts +20 -0
  538. package/dist/identity/drizzle/schema.pg.js +103 -0
  539. package/dist/identity/drizzle/schema.pg.js.map +1 -0
  540. package/dist/identity/drizzle/schema.sqlite.d.ts +872 -0
  541. package/dist/identity/drizzle/schema.sqlite.js +100 -0
  542. package/dist/identity/drizzle/schema.sqlite.js.map +1 -0
  543. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.d.ts +43 -0
  544. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +92 -0
  545. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -0
  546. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.jsonld +122 -0
  547. package/dist/identity/oidc/AutoDetectOidcHandler.d.ts +55 -0
  548. package/dist/identity/oidc/AutoDetectOidcHandler.js +137 -0
  549. package/dist/identity/oidc/AutoDetectOidcHandler.js.map +1 -0
  550. package/dist/identity/oidc/AutoDetectOidcHandler.jsonld +138 -0
  551. package/dist/identity/oidc/DisabledIdentityProviderHandler.d.ts +51 -0
  552. package/dist/identity/oidc/DisabledIdentityProviderHandler.js +104 -0
  553. package/dist/identity/oidc/DisabledIdentityProviderHandler.js.map +1 -0
  554. package/dist/identity/oidc/DisabledIdentityProviderHandler.jsonld +111 -0
  555. package/dist/identity/oidc/DisabledOidcHandler.d.ts +55 -0
  556. package/dist/identity/oidc/DisabledOidcHandler.js +132 -0
  557. package/dist/identity/oidc/DisabledOidcHandler.js.map +1 -0
  558. package/dist/identity/oidc/DisabledOidcHandler.jsonld +157 -0
  559. package/dist/index.d.ts +80 -0
  560. package/dist/index.js +155 -0
  561. package/dist/index.js.map +1 -0
  562. package/dist/legacy/DrizzleClientCredentialsStore.d.ts +51 -0
  563. package/dist/legacy/DrizzleClientCredentialsStore.js +142 -0
  564. package/dist/legacy/DrizzleClientCredentialsStore.js.map +1 -0
  565. package/dist/legacy/DrizzleIndexedStorage.d.ts +26 -0
  566. package/dist/legacy/DrizzleIndexedStorage.js +159 -0
  567. package/dist/legacy/DrizzleIndexedStorage.js.map +1 -0
  568. package/dist/legacy/DrizzleQuotaService.d.ts +16 -0
  569. package/dist/legacy/DrizzleQuotaService.js +37 -0
  570. package/dist/legacy/DrizzleQuotaService.js.map +1 -0
  571. package/dist/libs/backends/index.d.ts +6 -0
  572. package/dist/libs/backends/index.js +31 -0
  573. package/dist/libs/backends/index.js.map +1 -0
  574. package/dist/libs/backends/sqlup.d.ts +44 -0
  575. package/dist/libs/backends/sqlup.js +437 -0
  576. package/dist/libs/backends/sqlup.js.map +1 -0
  577. package/dist/logging/ConfigurableLoggerFactory.d.ts +24 -0
  578. package/dist/logging/ConfigurableLoggerFactory.js +77 -0
  579. package/dist/logging/ConfigurableLoggerFactory.js.map +1 -0
  580. package/dist/logging/ConfigurableLoggerFactory.jsonld +169 -0
  581. package/dist/logging/LogContext.d.ts +5 -0
  582. package/dist/logging/LogContext.js +6 -0
  583. package/dist/logging/LogContext.js.map +1 -0
  584. package/dist/main.d.ts +2 -0
  585. package/dist/main.js +148 -0
  586. package/dist/main.js.map +1 -0
  587. package/dist/network/LocalNetworkDetector.d.ts +65 -0
  588. package/dist/network/LocalNetworkDetector.js +185 -0
  589. package/dist/network/LocalNetworkDetector.js.map +1 -0
  590. package/dist/network/index.d.ts +4 -0
  591. package/dist/network/index.js +21 -0
  592. package/dist/network/index.js.map +1 -0
  593. package/dist/pods/ReservedSuffixIdentifierGenerator.d.ts +13 -0
  594. package/dist/pods/ReservedSuffixIdentifierGenerator.js +26 -0
  595. package/dist/pods/ReservedSuffixIdentifierGenerator.js.map +1 -0
  596. package/dist/pods/ReservedSuffixIdentifierGenerator.jsonld +75 -0
  597. package/dist/quota/DefaultQuotaService.d.ts +16 -0
  598. package/dist/quota/DefaultQuotaService.js +37 -0
  599. package/dist/quota/DefaultQuotaService.js.map +1 -0
  600. package/dist/quota/DefaultQuotaService.jsonld +85 -0
  601. package/dist/quota/DrizzleQuotaService.d.ts +16 -0
  602. package/dist/quota/DrizzleQuotaService.js +37 -0
  603. package/dist/quota/DrizzleQuotaService.js.map +1 -0
  604. package/dist/quota/DrizzleQuotaService.jsonld +87 -0
  605. package/dist/quota/NoopQuotaService.d.ts +7 -0
  606. package/dist/quota/NoopQuotaService.js +15 -0
  607. package/dist/quota/NoopQuotaService.js.map +1 -0
  608. package/dist/quota/NoopQuotaService.jsonld +36 -0
  609. package/dist/quota/QuotaService.d.ts +6 -0
  610. package/dist/quota/QuotaService.js +3 -0
  611. package/dist/quota/QuotaService.js.map +1 -0
  612. package/dist/quota/QuotaService.jsonld +33 -0
  613. package/dist/sdk/SignalingClientAdapter.d.ts +38 -0
  614. package/dist/sdk/SignalingClientAdapter.js +99 -0
  615. package/dist/sdk/SignalingClientAdapter.js.map +1 -0
  616. package/dist/sdk/createFetch.d.ts +23 -0
  617. package/dist/sdk/createFetch.js +258 -0
  618. package/dist/sdk/createFetch.js.map +1 -0
  619. package/dist/sdk/index.d.ts +29 -0
  620. package/dist/sdk/index.js +34 -0
  621. package/dist/sdk/index.js.map +1 -0
  622. package/dist/sdk/xpodFetch.d.ts +112 -0
  623. package/dist/sdk/xpodFetch.js +251 -0
  624. package/dist/sdk/xpodFetch.js.map +1 -0
  625. package/dist/service/EdgeNodeCertificateService.d.ts +45 -0
  626. package/dist/service/EdgeNodeCertificateService.js +164 -0
  627. package/dist/service/EdgeNodeCertificateService.js.map +1 -0
  628. package/dist/service/EdgeNodeCertificateService.jsonld +216 -0
  629. package/dist/service/EdgeNodeHeartbeatService.d.ts +68 -0
  630. package/dist/service/EdgeNodeHeartbeatService.js +262 -0
  631. package/dist/service/EdgeNodeHeartbeatService.js.map +1 -0
  632. package/dist/service/PodMigrationService.d.ts +43 -0
  633. package/dist/service/PodMigrationService.js +72 -0
  634. package/dist/service/PodMigrationService.js.map +1 -0
  635. package/dist/service/PodMigrationService.jsonld +76 -0
  636. package/dist/signaling/SignalingClient.d.ts +142 -0
  637. package/dist/signaling/SignalingClient.js +305 -0
  638. package/dist/signaling/SignalingClient.js.map +1 -0
  639. package/dist/signaling/SignalingService.d.ts +104 -0
  640. package/dist/signaling/SignalingService.js +440 -0
  641. package/dist/signaling/SignalingService.js.map +1 -0
  642. package/dist/signaling/index.d.ts +11 -0
  643. package/dist/signaling/index.js +28 -0
  644. package/dist/signaling/index.js.map +1 -0
  645. package/dist/signaling/types.d.ts +237 -0
  646. package/dist/signaling/types.js +18 -0
  647. package/dist/signaling/types.js.map +1 -0
  648. package/dist/storage/DrizzleCompat.d.ts +15 -0
  649. package/dist/storage/DrizzleCompat.js +60 -0
  650. package/dist/storage/DrizzleCompat.js.map +1 -0
  651. package/dist/storage/LockingResourceStore.d.ts +8 -0
  652. package/dist/storage/LockingResourceStore.js +68 -0
  653. package/dist/storage/LockingResourceStore.js.map +1 -0
  654. package/dist/storage/MigratableDataAccessor.d.ts +63 -0
  655. package/dist/storage/MigratableDataAccessor.js +11 -0
  656. package/dist/storage/MigratableDataAccessor.js.map +1 -0
  657. package/dist/storage/MigratableDataAccessor.jsonld +60 -0
  658. package/dist/storage/ObservableResourceStore.d.ts +89 -0
  659. package/dist/storage/ObservableResourceStore.js +125 -0
  660. package/dist/storage/ObservableResourceStore.js.map +1 -0
  661. package/dist/storage/RepresentationPartialConvertingStore.d.ts +22 -0
  662. package/dist/storage/RepresentationPartialConvertingStore.js +94 -0
  663. package/dist/storage/RepresentationPartialConvertingStore.js.map +1 -0
  664. package/dist/storage/RepresentationPartialConvertingStore.jsonld +332 -0
  665. package/dist/storage/SparqlUpdateResourceStore.d.ts +30 -0
  666. package/dist/storage/SparqlUpdateResourceStore.js +292 -0
  667. package/dist/storage/SparqlUpdateResourceStore.js.map +1 -0
  668. package/dist/storage/SparqlUpdateResourceStore.jsonld +112 -0
  669. package/dist/storage/SqliteCompat.d.ts +60 -0
  670. package/dist/storage/SqliteCompat.js +158 -0
  671. package/dist/storage/SqliteCompat.js.map +1 -0
  672. package/dist/storage/accessors/MinioDataAccessor.d.ts +127 -0
  673. package/dist/storage/accessors/MinioDataAccessor.js +249 -0
  674. package/dist/storage/accessors/MinioDataAccessor.js.map +1 -0
  675. package/dist/storage/accessors/MinioDataAccessor.jsonld +138 -0
  676. package/dist/storage/accessors/MixDataAccessor.d.ts +43 -0
  677. package/dist/storage/accessors/MixDataAccessor.js +130 -0
  678. package/dist/storage/accessors/MixDataAccessor.js.map +1 -0
  679. package/dist/storage/accessors/MixDataAccessor.jsonld +101 -0
  680. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +146 -0
  681. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +415 -0
  682. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js.map +1 -0
  683. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +180 -0
  684. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +95 -0
  685. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +376 -0
  686. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js.map +1 -0
  687. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +168 -0
  688. package/dist/storage/accessors/TieredMinioDataAccessor.d.ts +150 -0
  689. package/dist/storage/accessors/TieredMinioDataAccessor.js +582 -0
  690. package/dist/storage/accessors/TieredMinioDataAccessor.js.map +1 -0
  691. package/dist/storage/accessors/TieredMinioDataAccessor.jsonld +333 -0
  692. package/dist/storage/database/PostgresPoolManager.d.ts +56 -0
  693. package/dist/storage/database/PostgresPoolManager.js +117 -0
  694. package/dist/storage/database/PostgresPoolManager.js.map +1 -0
  695. package/dist/storage/keyvalue/PostgresKeyValueStorage.d.ts +34 -0
  696. package/dist/storage/keyvalue/PostgresKeyValueStorage.js +146 -0
  697. package/dist/storage/keyvalue/PostgresKeyValueStorage.js.map +1 -0
  698. package/dist/storage/keyvalue/PostgresKeyValueStorage.jsonld +192 -0
  699. package/dist/storage/keyvalue/RedisKeyValueStorage.d.ts +30 -0
  700. package/dist/storage/keyvalue/RedisKeyValueStorage.js +133 -0
  701. package/dist/storage/keyvalue/RedisKeyValueStorage.js.map +1 -0
  702. package/dist/storage/keyvalue/RedisKeyValueStorage.jsonld +237 -0
  703. package/dist/storage/keyvalue/SqliteKeyValueStorage.d.ts +30 -0
  704. package/dist/storage/keyvalue/SqliteKeyValueStorage.js +164 -0
  705. package/dist/storage/keyvalue/SqliteKeyValueStorage.js.map +1 -0
  706. package/dist/storage/keyvalue/SqliteKeyValueStorage.jsonld +167 -0
  707. package/dist/storage/quint/BaseQuintStore.d.ts +80 -0
  708. package/dist/storage/quint/BaseQuintStore.js +535 -0
  709. package/dist/storage/quint/BaseQuintStore.js.map +1 -0
  710. package/dist/storage/quint/BaseQuintStore.jsonld +175 -0
  711. package/dist/storage/quint/PgQuintStore.d.ts +61 -0
  712. package/dist/storage/quint/PgQuintStore.drizzle.d.ts +45 -0
  713. package/dist/storage/quint/PgQuintStore.drizzle.js +327 -0
  714. package/dist/storage/quint/PgQuintStore.drizzle.js.map +1 -0
  715. package/dist/storage/quint/PgQuintStore.js +275 -0
  716. package/dist/storage/quint/PgQuintStore.js.map +1 -0
  717. package/dist/storage/quint/PgQuintStore.jsonld +258 -0
  718. package/dist/storage/quint/SqliteQuintStore.d.ts +55 -0
  719. package/dist/storage/quint/SqliteQuintStore.js +630 -0
  720. package/dist/storage/quint/SqliteQuintStore.js.map +1 -0
  721. package/dist/storage/quint/SqliteQuintStore.jsonld +157 -0
  722. package/dist/storage/quint/index.d.ts +11 -0
  723. package/dist/storage/quint/index.js +30 -0
  724. package/dist/storage/quint/index.js.map +1 -0
  725. package/dist/storage/quint/schema.d.ts +82 -0
  726. package/dist/storage/quint/schema.js +33 -0
  727. package/dist/storage/quint/schema.js.map +1 -0
  728. package/dist/storage/quint/serialization.d.ts +56 -0
  729. package/dist/storage/quint/serialization.js +198 -0
  730. package/dist/storage/quint/serialization.js.map +1 -0
  731. package/dist/storage/quint/types.d.ts +152 -0
  732. package/dist/storage/quint/types.js +27 -0
  733. package/dist/storage/quint/types.js.map +1 -0
  734. package/dist/storage/quint/types.jsonld +78 -0
  735. package/dist/storage/quota/PerAccountQuotaStrategy.d.ts +19 -0
  736. package/dist/storage/quota/PerAccountQuotaStrategy.js +63 -0
  737. package/dist/storage/quota/PerAccountQuotaStrategy.js.map +1 -0
  738. package/dist/storage/quota/PerAccountQuotaStrategy.jsonld +113 -0
  739. package/dist/storage/quota/UsageRepository.d.ts +46 -0
  740. package/dist/storage/quota/UsageRepository.js +278 -0
  741. package/dist/storage/quota/UsageRepository.js.map +1 -0
  742. package/dist/storage/quota/UsageTrackingStore.d.ts +37 -0
  743. package/dist/storage/quota/UsageTrackingStore.js +355 -0
  744. package/dist/storage/quota/UsageTrackingStore.js.map +1 -0
  745. package/dist/storage/quota/UsageTrackingStore.jsonld +193 -0
  746. package/dist/storage/sparql/AlgebraUtils.d.ts +48 -0
  747. package/dist/storage/sparql/AlgebraUtils.js +118 -0
  748. package/dist/storage/sparql/AlgebraUtils.js.map +1 -0
  749. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +59 -0
  750. package/dist/storage/sparql/ComunicaOptimizedEngine.js +254 -0
  751. package/dist/storage/sparql/ComunicaOptimizedEngine.js.map +1 -0
  752. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +134 -0
  753. package/dist/storage/sparql/ComunicaQuintEngine.js +727 -0
  754. package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -0
  755. package/dist/storage/sparql/ExpressionEvaluator.d.ts +54 -0
  756. package/dist/storage/sparql/ExpressionEvaluator.js +340 -0
  757. package/dist/storage/sparql/ExpressionEvaluator.js.map +1 -0
  758. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +74 -0
  759. package/dist/storage/sparql/FilterPushdownExtractor.js +409 -0
  760. package/dist/storage/sparql/FilterPushdownExtractor.js.map +1 -0
  761. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +65 -0
  762. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +327 -0
  763. package/dist/storage/sparql/OptimizedQuadstoreEngine.js.map +1 -0
  764. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +46 -0
  765. package/dist/storage/sparql/OptimizedQuadstoreSource.js +118 -0
  766. package/dist/storage/sparql/OptimizedQuadstoreSource.js.map +1 -0
  767. package/dist/storage/sparql/PatternBuilder.d.ts +41 -0
  768. package/dist/storage/sparql/PatternBuilder.js +118 -0
  769. package/dist/storage/sparql/PatternBuilder.js.map +1 -0
  770. package/dist/storage/sparql/QueryOptimizer.d.ts +125 -0
  771. package/dist/storage/sparql/QueryOptimizer.js +363 -0
  772. package/dist/storage/sparql/QueryOptimizer.js.map +1 -0
  773. package/dist/storage/sparql/QuintEngine.d.ts +92 -0
  774. package/dist/storage/sparql/QuintEngine.js +150 -0
  775. package/dist/storage/sparql/QuintEngine.js.map +1 -0
  776. package/dist/storage/sparql/QuintQuerySource.d.ts +227 -0
  777. package/dist/storage/sparql/QuintQuerySource.js +918 -0
  778. package/dist/storage/sparql/QuintQuerySource.js.map +1 -0
  779. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +40 -0
  780. package/dist/storage/sparql/SimpleSparqlExecutor.js +131 -0
  781. package/dist/storage/sparql/SimpleSparqlExecutor.js.map +1 -0
  782. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +74 -0
  783. package/dist/storage/sparql/SubgraphQueryEngine.js +248 -0
  784. package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -0
  785. package/dist/storage/sparql/SubgraphQueryEngine.jsonld +250 -0
  786. package/dist/storage/vector/PostgresVectorStore.d.ts +46 -0
  787. package/dist/storage/vector/PostgresVectorStore.js +291 -0
  788. package/dist/storage/vector/PostgresVectorStore.js.map +1 -0
  789. package/dist/storage/vector/PostgresVectorStore.jsonld +142 -0
  790. package/dist/storage/vector/SqliteVectorStore.d.ts +44 -0
  791. package/dist/storage/vector/SqliteVectorStore.js +282 -0
  792. package/dist/storage/vector/SqliteVectorStore.js.map +1 -0
  793. package/dist/storage/vector/SqliteVectorStore.jsonld +137 -0
  794. package/dist/storage/vector/VectorIndexingListener.d.ts +114 -0
  795. package/dist/storage/vector/VectorIndexingListener.js +351 -0
  796. package/dist/storage/vector/VectorIndexingListener.js.map +1 -0
  797. package/dist/storage/vector/VectorStore.d.ts +42 -0
  798. package/dist/storage/vector/VectorStore.js +50 -0
  799. package/dist/storage/vector/VectorStore.js.map +1 -0
  800. package/dist/storage/vector/VectorStore.jsonld +87 -0
  801. package/dist/storage/vector/VectorStoreInit.d.ts +28 -0
  802. package/dist/storage/vector/VectorStoreInit.js +104 -0
  803. package/dist/storage/vector/VectorStoreInit.js.map +1 -0
  804. package/dist/storage/vector/index.d.ts +5 -0
  805. package/dist/storage/vector/index.js +22 -0
  806. package/dist/storage/vector/index.js.map +1 -0
  807. package/dist/storage/vector/types.d.ts +39 -0
  808. package/dist/storage/vector/types.js +8 -0
  809. package/dist/storage/vector/types.js.map +1 -0
  810. package/dist/subdomain/SubdomainClient.d.ts +156 -0
  811. package/dist/subdomain/SubdomainClient.js +220 -0
  812. package/dist/subdomain/SubdomainClient.js.map +1 -0
  813. package/dist/subdomain/SubdomainService.d.ts +114 -0
  814. package/dist/subdomain/SubdomainService.js +212 -0
  815. package/dist/subdomain/SubdomainService.js.map +1 -0
  816. package/dist/subdomain/SubdomainService.jsonld +261 -0
  817. package/dist/subdomain/index.d.ts +2 -0
  818. package/dist/subdomain/index.js +9 -0
  819. package/dist/subdomain/index.js.map +1 -0
  820. package/dist/supervisor/Supervisor.d.ts +20 -0
  821. package/dist/supervisor/Supervisor.js +174 -0
  822. package/dist/supervisor/Supervisor.js.map +1 -0
  823. package/dist/supervisor/index.d.ts +2 -0
  824. package/dist/supervisor/index.js +6 -0
  825. package/dist/supervisor/index.js.map +1 -0
  826. package/dist/supervisor/types.d.ts +19 -0
  827. package/dist/supervisor/types.js +3 -0
  828. package/dist/supervisor/types.js.map +1 -0
  829. package/dist/task/DrizzleTaskQueue.d.ts +60 -0
  830. package/dist/task/DrizzleTaskQueue.js +171 -0
  831. package/dist/task/DrizzleTaskQueue.js.map +1 -0
  832. package/dist/task/TaskExecutor.d.ts +82 -0
  833. package/dist/task/TaskExecutor.js +198 -0
  834. package/dist/task/TaskExecutor.js.map +1 -0
  835. package/dist/task/index.d.ts +10 -0
  836. package/dist/task/index.js +20 -0
  837. package/dist/task/index.js.map +1 -0
  838. package/dist/task/schema.d.ts +53 -0
  839. package/dist/task/schema.js +71 -0
  840. package/dist/task/schema.js.map +1 -0
  841. package/dist/task/types.d.ts +186 -0
  842. package/dist/task/types.js +12 -0
  843. package/dist/task/types.js.map +1 -0
  844. package/dist/terminal/AclPermissionService.d.ts +28 -0
  845. package/dist/terminal/AclPermissionService.js +141 -0
  846. package/dist/terminal/AclPermissionService.js.map +1 -0
  847. package/dist/terminal/BubblewrapSandbox.d.ts +51 -0
  848. package/dist/terminal/BubblewrapSandbox.js +147 -0
  849. package/dist/terminal/BubblewrapSandbox.js.map +1 -0
  850. package/dist/terminal/TerminalSession.d.ts +33 -0
  851. package/dist/terminal/TerminalSession.js +164 -0
  852. package/dist/terminal/TerminalSession.js.map +1 -0
  853. package/dist/terminal/TerminalSessionManager.d.ts +69 -0
  854. package/dist/terminal/TerminalSessionManager.js +196 -0
  855. package/dist/terminal/TerminalSessionManager.js.map +1 -0
  856. package/dist/terminal/index.d.ts +5 -0
  857. package/dist/terminal/index.js +22 -0
  858. package/dist/terminal/index.js.map +1 -0
  859. package/dist/terminal/sandbox/BubblewrapSandbox.d.ts +8 -0
  860. package/dist/terminal/sandbox/BubblewrapSandbox.js +105 -0
  861. package/dist/terminal/sandbox/BubblewrapSandbox.js.map +1 -0
  862. package/dist/terminal/sandbox/MacOSSandbox.d.ts +19 -0
  863. package/dist/terminal/sandbox/MacOSSandbox.js +120 -0
  864. package/dist/terminal/sandbox/MacOSSandbox.js.map +1 -0
  865. package/dist/terminal/sandbox/index.d.ts +29 -0
  866. package/dist/terminal/sandbox/index.js +113 -0
  867. package/dist/terminal/sandbox/index.js.map +1 -0
  868. package/dist/terminal/sandbox/types.d.ts +38 -0
  869. package/dist/terminal/sandbox/types.js +3 -0
  870. package/dist/terminal/sandbox/types.js.map +1 -0
  871. package/dist/terminal/types.d.ts +80 -0
  872. package/dist/terminal/types.js +16 -0
  873. package/dist/terminal/types.js.map +1 -0
  874. package/dist/tunnel/CloudflareTunnelProvider.d.ts +120 -0
  875. package/dist/tunnel/CloudflareTunnelProvider.js +376 -0
  876. package/dist/tunnel/CloudflareTunnelProvider.js.map +1 -0
  877. package/dist/tunnel/CloudflareTunnelProvider.jsonld +204 -0
  878. package/dist/tunnel/LocalTunnelProvider.d.ts +85 -0
  879. package/dist/tunnel/LocalTunnelProvider.js +295 -0
  880. package/dist/tunnel/LocalTunnelProvider.js.map +1 -0
  881. package/dist/tunnel/LocalTunnelProvider.jsonld +142 -0
  882. package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +59 -0
  883. package/dist/tunnel/SakuraFrpTunnelProvider.js +207 -0
  884. package/dist/tunnel/SakuraFrpTunnelProvider.js.map +1 -0
  885. package/dist/tunnel/TunnelProvider.d.ts +91 -0
  886. package/dist/tunnel/TunnelProvider.js +10 -0
  887. package/dist/tunnel/TunnelProvider.js.map +1 -0
  888. package/dist/tunnel/TunnelProvider.jsonld +144 -0
  889. package/dist/tunnel/index.d.ts +3 -0
  890. package/dist/tunnel/index.js +8 -0
  891. package/dist/tunnel/index.js.map +1 -0
  892. package/dist/util/LockContext.d.ts +3 -0
  893. package/dist/util/LockContext.js +6 -0
  894. package/dist/util/LockContext.js.map +1 -0
  895. package/dist/util/ResourceStoreFetch.d.ts +11 -0
  896. package/dist/util/ResourceStoreFetch.js +147 -0
  897. package/dist/util/ResourceStoreFetch.js.map +1 -0
  898. package/dist/util/database/DatabaseMaintenance.d.ts +23 -0
  899. package/dist/util/database/DatabaseMaintenance.js +82 -0
  900. package/dist/util/database/DatabaseMaintenance.js.map +1 -0
  901. package/dist/util/identifiers/ClusterIdentifierStrategy.d.ts +23 -0
  902. package/dist/util/identifiers/ClusterIdentifierStrategy.js +73 -0
  903. package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -0
  904. package/dist/util/identifiers/ClusterIdentifierStrategy.jsonld +90 -0
  905. package/dist/util/identifiers/MultiDomainIdentifierStrategy.d.ts +40 -0
  906. package/dist/util/identifiers/MultiDomainIdentifierStrategy.js +73 -0
  907. package/dist/util/identifiers/MultiDomainIdentifierStrategy.js.map +1 -0
  908. package/dist/util/identifiers/MultiDomainIdentifierStrategy.jsonld +90 -0
  909. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.d.ts +78 -0
  910. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js +182 -0
  911. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js.map +1 -0
  912. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.jsonld +88 -0
  913. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.d.ts +68 -0
  914. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js +149 -0
  915. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js.map +1 -0
  916. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.jsonld +84 -0
  917. package/dist/util/locking/DebugRedisLocker.d.ts +8 -0
  918. package/dist/util/locking/DebugRedisLocker.js +33 -0
  919. package/dist/util/locking/DebugRedisLocker.js.map +1 -0
  920. package/dist/util/logger.d.ts +13 -0
  921. package/dist/util/logger.js +36 -0
  922. package/dist/util/logger.js.map +1 -0
  923. package/dist/util/stream/BandwidthThrottleTransform.d.ts +8 -0
  924. package/dist/util/stream/BandwidthThrottleTransform.js +55 -0
  925. package/dist/util/stream/BandwidthThrottleTransform.js.map +1 -0
  926. package/dist/vocab/external.d.ts +216 -0
  927. package/dist/vocab/external.js +276 -0
  928. package/dist/vocab/external.js.map +1 -0
  929. package/dist/vocab/index.d.ts +26 -0
  930. package/dist/vocab/index.js +46 -0
  931. package/dist/vocab/index.js.map +1 -0
  932. package/dist/vocab/udfs.d.ts +184 -0
  933. package/dist/vocab/udfs.js +217 -0
  934. package/dist/vocab/udfs.js.map +1 -0
  935. package/dist/webrtc/WebRTCClient.d.ts +109 -0
  936. package/dist/webrtc/WebRTCClient.js +344 -0
  937. package/dist/webrtc/WebRTCClient.js.map +1 -0
  938. package/dist/webrtc/WebRTCPeerManager.d.ts +112 -0
  939. package/dist/webrtc/WebRTCPeerManager.js +289 -0
  940. package/dist/webrtc/WebRTCPeerManager.js.map +1 -0
  941. package/dist/webrtc/WeriftPeerConnectionFactory.d.ts +13 -0
  942. package/dist/webrtc/WeriftPeerConnectionFactory.js +255 -0
  943. package/dist/webrtc/WeriftPeerConnectionFactory.js.map +1 -0
  944. package/dist/webrtc/index.d.ts +13 -0
  945. package/dist/webrtc/index.js +30 -0
  946. package/dist/webrtc/index.js.map +1 -0
  947. package/dist/webrtc/types.d.ts +169 -0
  948. package/dist/webrtc/types.js +6 -0
  949. package/dist/webrtc/types.js.map +1 -0
  950. package/dist/xpod.single.cjs +826 -0
  951. package/dist/xpod.single.cjs.map +7 -0
  952. package/package.json +173 -0
  953. package/static/app/assets/index.css +1 -0
  954. package/static/app/assets/main.js +11 -0
  955. package/static/app/auth.html +21 -0
  956. package/static/app/index.html +14 -0
  957. package/static/app/vite.svg +1 -0
  958. package/static/dashboard/assets/dashboard-G96F8267.js +52 -0
  959. package/static/dashboard/assets/dashboard-PJyGDppf.css +1 -0
  960. package/static/dashboard/auth.html +21 -0
  961. package/static/dashboard/index.html +13 -0
  962. package/static/dashboard/vite.svg +1 -0
  963. package/static/landing/index.html +165 -0
  964. package/templates/identity/index.html.ejs +12 -0
  965. package/templates/identity/login.html.ejs +49 -0
  966. package/templates/identity/oidc/consent.html.ejs +103 -0
  967. package/templates/identity/password/forgot.html.ejs +49 -0
  968. package/templates/identity/password/login.html.ejs +58 -0
  969. package/templates/identity/password/register.html.ejs +65 -0
  970. package/templates/main.html.ejs +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComunicaQuintEngine.js","sourceRoot":"","sources":["../../../src/storage/sparql/ComunicaQuintEngine.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ComunicaQuintEngine - Comunica SPARQL engine backed by QuintStore\n * \n * Features:\n * 1. Query pushdown optimization (LIMIT/ORDER BY)\n * 2. FILTER pushdown via IQuerySource interface\n * 3. External filters for security boundaries (ACL)\n * 4. OPTIONAL optimization via QueryOptimizer\n * \n * Architecture:\n * - Uses QuintQuerySource (IQuerySource) for proper FILTER pushdown\n * - Uses QueryOptimizer for OPTIONAL and Compound Query optimization\n * - Comunica pushes FILTER operations down to sources that declare support\n * - QuintQuerySource extracts filters from algebra and applies them to QuintStore\n */\n\nimport { EventEmitter } from 'events';\nimport type { Quad, Term, Bindings, ResultStream } from '@rdfjs/types';\nimport type * as RDF from '@rdfjs/types';\nimport { QueryEngine } from '@comunica/query-sparql-rdfjs';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport { translate, type Algebra } from 'sparqlalgebrajs';\nimport { wrap } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\n\nimport type { QuintStore, QuintPattern, QueryOptions, TermName, TermOperators } from '../quint/types';\nimport { QuintQuerySource } from './QuintQuerySource';\nimport { QueryOptimizer } from './QueryOptimizer';\nimport { SimpleSparqlExecutor } from './SimpleSparqlExecutor';\n\nexport interface ComunicaQuintEngineOptions {\n debug?: boolean;\n}\n\n/**\n * Security/ACL filters passed from upstream\n * These are applied unconditionally to restrict query scope\n */\nexport interface SecurityFilters {\n subject?: TermOperators;\n predicate?: TermOperators;\n object?: TermOperators;\n graph?: TermOperators;\n}\n\nexport interface QueryContext {\n sources?: unknown[];\n baseIRI?: string;\n /** Security filters for access control */\n filters?: SecurityFilters;\n [key: string]: unknown;\n}\n\n/**\n * Query analysis result (stateless)\n */\nexport interface QueryAnalysis {\n hasFilter: boolean;\n filterTypes: string[];\n pushdownable: string[];\n nonPushdownable: string[];\n estimatedPushdownRate: number;\n}\n\ninterface OptimizeParams {\n limit?: number;\n offset?: number;\n order?: TermName[];\n /** 原始 ORDER BY 变量名,用于在 QuintQuerySource 中分析绑定位置 */\n orderVarName?: string;\n reverse?: boolean;\n}\n\n// Context key names - must match Comunica's internal keys\nconst CONTEXT_KEY_QUERY_SOURCES = '@comunica/bus-query-operation:querySources';\n\nconst dataFactory = new DataFactory();\n\n/**\n * Custom RDF/JS Store backed by QuintStore\n * Used for UPDATE operations (INSERT/DELETE) which don't need FILTER pushdown\n */\nclass QuintRdfStore implements RDF.Store {\n constructor(\n private readonly store: QuintStore,\n private readonly getSecurityFilters: () => SecurityFilters | undefined,\n private readonly debug: boolean\n ) {}\n\n match(\n subject?: Term | null,\n predicate?: Term | null,\n object?: Term | null,\n graph?: Term | null\n ): RDF.Stream {\n // Build QuintPattern\n const pattern: QuintPattern = {};\n \n if (subject && subject.termType !== 'Variable') {\n pattern.subject = subject;\n }\n if (predicate && predicate.termType !== 'Variable') {\n pattern.predicate = predicate;\n }\n if (object && object.termType !== 'Variable') {\n pattern.object = object;\n }\n if (graph && graph.termType !== 'Variable' && graph.termType !== 'DefaultGraph') {\n pattern.graph = graph;\n }\n\n // Apply security filters (from upstream, e.g., ACL)\n const securityFilters = this.getSecurityFilters();\n if (securityFilters) {\n if (securityFilters.subject && !pattern.subject) {\n pattern.subject = securityFilters.subject;\n }\n if (securityFilters.predicate && !pattern.predicate) {\n pattern.predicate = securityFilters.predicate;\n }\n if (securityFilters.object && !pattern.object) {\n pattern.object = securityFilters.object;\n }\n if (securityFilters.graph && !pattern.graph) {\n pattern.graph = securityFilters.graph;\n }\n }\n\n if (this.debug) {\n console.log(`[QuintRdfStore] match() called`);\n console.log(` pattern:`, pattern);\n }\n\n // Use wrap to convert Promise<Array> to AsyncIterator\n const promiseIterator = wrap(this.store.get(pattern));\n return promiseIterator as any;\n }\n\n /**\n * Import quads from a stream (Sink interface)\n */\n import(stream: RDF.Stream<Quad>): EventEmitter {\n const emitter = new EventEmitter();\n \n const quads: Quad[] = [];\n let ended = false;\n \n // Handle data events\n stream.on('data', (quad: Quad) => {\n quads.push(quad);\n });\n \n const handleEnd = () => {\n if (ended) return;\n ended = true;\n if (quads.length > 0) {\n this.store.multiPut(quads as any[])\n .then(() => emitter.emit('end'))\n .catch((err) => emitter.emit('error', err));\n } else {\n emitter.emit('end');\n }\n };\n \n stream.on('end', handleEnd);\n stream.on('error', (err) => {\n emitter.emit('error', err);\n });\n \n // Handle already-ended streams (synchronous streams)\n // Use setImmediate to ensure we check after all synchronous data events\n setImmediate(() => {\n if ((stream as any).readableEnded || (stream as any).closed) {\n handleEnd();\n }\n });\n \n return emitter;\n }\n\n /**\n * Remove quads from a stream (Store interface)\n */\n remove(stream: RDF.Stream<Quad>): EventEmitter {\n const emitter = new EventEmitter();\n \n const deletePromises: Promise<number>[] = [];\n let ended = false;\n \n stream.on('data', (quad: Quad) => {\n const pattern: QuintPattern = {\n subject: quad.subject,\n predicate: quad.predicate,\n object: quad.object,\n };\n if (quad.graph && quad.graph.termType !== 'DefaultGraph') {\n pattern.graph = quad.graph;\n }\n deletePromises.push(this.store.del(pattern));\n });\n \n const handleEnd = () => {\n if (ended) return;\n ended = true;\n Promise.all(deletePromises)\n .then(() => emitter.emit('end'))\n .catch((err) => emitter.emit('error', err));\n };\n \n stream.on('end', handleEnd);\n stream.on('error', (err) => {\n emitter.emit('error', err);\n });\n \n // Handle already-ended streams (synchronous streams)\n setImmediate(() => {\n if ((stream as any).readableEnded || (stream as any).closed) {\n handleEnd();\n }\n });\n \n return emitter;\n }\n\n /**\n * Remove all matching quads (Store interface)\n */\n removeMatches(\n subject?: Term | null,\n predicate?: Term | null,\n object?: Term | null,\n graph?: Term | null\n ): EventEmitter {\n const emitter = new EventEmitter();\n \n if (this.debug) {\n console.log(`[QuintRdfStore] removeMatches()`, { subject, predicate, object, graph });\n }\n \n const pattern: QuintPattern = {};\n if (subject && subject.termType !== 'Variable') {\n pattern.subject = subject;\n }\n if (predicate && predicate.termType !== 'Variable') {\n pattern.predicate = predicate;\n }\n if (object && object.termType !== 'Variable') {\n pattern.object = object;\n }\n if (graph && graph.termType !== 'Variable' && graph.termType !== 'DefaultGraph') {\n pattern.graph = graph;\n }\n \n this.store.del(pattern)\n .then(() => emitter.emit('end'))\n .catch((err) => emitter.emit('error', err));\n \n return emitter;\n }\n\n /**\n * Delete a named graph (Store interface)\n */\n deleteGraph(graph: Term | string): EventEmitter {\n const emitter = new EventEmitter();\n \n const graphTerm = typeof graph === 'string' \n ? { termType: 'NamedNode' as const, value: graph }\n : graph;\n \n const pattern: QuintPattern = { graph: graphTerm as Term };\n \n this.store.del(pattern)\n .then(() => emitter.emit('end'))\n .catch((err) => emitter.emit('error', err));\n \n return emitter;\n }\n}\n\nexport class ComunicaQuintEngine {\n private readonly store: QuintStore;\n private readonly rdfStore: QuintRdfStore;\n private readonly querySource: QuintQuerySource;\n private readonly queryOptimizer: QueryOptimizer;\n private readonly simpleExecutor: SimpleSparqlExecutor;\n private readonly engine: QueryEngine;\n private readonly debug: boolean;\n private bindingsFactory: any;\n \n // Current query optimization params\n private currentOptimizeParams: OptimizeParams | null = null;\n // Current security filters (from upstream)\n private currentSecurityFilters: SecurityFilters | undefined;\n // Current query's FILTER expressions for pushdown\n private currentFilterExpressions: Map<string, Algebra.Expression> = new Map();\n\n constructor(store: QuintStore, options?: ComunicaQuintEngineOptions) {\n this.store = store;\n this.debug = options?.debug ?? false;\n \n // Create RdfStore for UPDATE operations\n this.rdfStore = new QuintRdfStore(\n store,\n () => this.currentSecurityFilters,\n this.debug\n );\n \n // Create BindingsFactory\n this.bindingsFactory = new (BindingsFactory as any)(dataFactory);\n \n // Create QuintQuerySource with IQuerySource interface for proper FILTER pushdown\n this.querySource = new QuintQuerySource(store, {\n debug: this.debug,\n bindingsFactory: this.bindingsFactory,\n getSecurityFilters: () => this.currentSecurityFilters,\n getOptimizeParams: () => this.currentOptimizeParams,\n getFilterExpression: (varName: string) => this.currentFilterExpressions.get(varName),\n });\n \n // Create QueryOptimizer for OPTIONAL and Compound Query optimization\n this.queryOptimizer = new QueryOptimizer(store, {\n debug: this.debug,\n bindingsFactory: this.bindingsFactory,\n });\n \n this.engine = new QueryEngine();\n }\n\n /**\n * Analyze a query's pushdown potential (stateless)\n * Returns analysis of what can/cannot be pushed down without executing the query\n */\n analyzeQuery(query: string): QueryAnalysis {\n const algebra = translate(query);\n return this.analyzeAlgebra(algebra);\n }\n\n /**\n * Analyze algebra tree for pushdown potential\n */\n private analyzeAlgebra(op: Algebra.Operation): QueryAnalysis {\n const result: QueryAnalysis = {\n hasFilter: false,\n filterTypes: [],\n pushdownable: [],\n nonPushdownable: [],\n estimatedPushdownRate: 1.0,\n };\n\n this.walkAlgebra(op, result);\n\n // Calculate pushdown rate\n const total = result.pushdownable.length + result.nonPushdownable.length;\n if (total > 0) {\n result.estimatedPushdownRate = result.pushdownable.length / total;\n }\n\n return result;\n }\n\n /**\n * Walk algebra tree and collect filter info\n */\n private walkAlgebra(op: Algebra.Operation, result: QueryAnalysis): void {\n if (op.type === 'filter') {\n result.hasFilter = true;\n const filterOp = op as Algebra.Filter;\n this.analyzeExpression(filterOp.expression, result);\n this.walkAlgebra(filterOp.input, result);\n } else if ('input' in op && op.input) {\n this.walkAlgebra(op.input as Algebra.Operation, result);\n }\n if ('left' in op && op.left) {\n this.walkAlgebra(op.left as Algebra.Operation, result);\n }\n if ('right' in op && op.right) {\n this.walkAlgebra(op.right as Algebra.Operation, result);\n }\n }\n\n /**\n * Analyze a filter expression\n */\n private analyzeExpression(expr: Algebra.Expression, result: QueryAnalysis): void {\n if (expr.expressionType === 'operator') {\n const opExpr = expr as Algebra.OperatorExpression;\n const op = opExpr.operator.toLowerCase();\n\n // Classify the operator\n if (['=', '!='].includes(op)) {\n result.filterTypes.push('equality');\n result.pushdownable.push(op);\n } else if (['<', '>', '<=', '>='].includes(op)) {\n result.filterTypes.push('range');\n result.pushdownable.push(op);\n } else if (['in', 'notin'].includes(op)) {\n result.filterTypes.push('equality');\n result.pushdownable.push(op);\n } else if (['strstarts', 'strends', 'contains', 'regex'].includes(op)) {\n result.filterTypes.push('string');\n result.pushdownable.push(op);\n } else if (op === 'bound') {\n result.filterTypes.push('bound');\n result.pushdownable.push(op);\n } else if (['isiri', 'isuri', 'isblank', 'isliteral', 'isnumeric'].includes(op)) {\n // Type checking functions - can be pushed down\n result.filterTypes.push('typecheck');\n result.pushdownable.push(op);\n } else if (op === 'langmatches') {\n // LANGMATCHES can be pushed down using $endsWith on serialized format\n result.filterTypes.push('language');\n result.pushdownable.push(op);\n } else if (['&&', '||', '!'].includes(op)) {\n result.filterTypes.push('logical');\n // Recurse into logical operators\n for (const arg of opExpr.args) {\n this.analyzeExpression(arg, result);\n }\n } else {\n // Non-pushdownable functions\n result.filterTypes.push('function');\n result.nonPushdownable.push(op);\n }\n } else if (expr.expressionType === 'existence') {\n result.filterTypes.push('exists');\n result.pushdownable.push('exists');\n }\n }\n\n /**\n * Execute SELECT query\n * Uses IQuerySource for proper FILTER pushdown\n * \n * OPTIONAL 优化:\n * 如果查询包含多个 OPTIONAL 且只是获取属性(不参与过滤),\n * 则先执行核心条件获取 subjects,再批量获取属性\n */\n async queryBindings(query: string, context?: QueryContext): Promise<ResultStream<Bindings>> {\n const params = this.extractOptimizeParams(query);\n this.currentOptimizeParams = params;\n this.currentSecurityFilters = context?.filters;\n \n // Extract FILTER expressions from the query for pushdown\n // Note: We don't clear these in finally because the stream is lazy-evaluated\n // and sub-queries may need access to filters after this function returns\n this.extractAndStoreFilters(query);\n \n if (this.debug) {\n console.log(`[ComunicaQuintEngine] Query optimization:`, this.currentOptimizeParams);\n console.log(`[ComunicaQuintEngine] Security filters:`, this.currentSecurityFilters);\n console.log(`[ComunicaQuintEngine] Filter expressions for pushdown:`, this.currentFilterExpressions.size);\n }\n\n // 尝试 OPTIONAL 优化(使用 QueryOptimizer)\n try {\n const algebra = translate(query, { quads: true });\n const optResult = this.queryOptimizer.analyzeQuery(algebra);\n \n if (optResult.type === 'optional' && optResult.analysis) {\n const optionalAnalysis = optResult.analysis as import('./QueryOptimizer').OptionalAnalysis;\n \n if (this.debug) {\n console.log(`[ComunicaQuintEngine] OPTIONAL optimization available:`, {\n subjectVar: optionalAnalysis.subjectVar,\n predicates: optionalAnalysis.optionalPredicates?.length,\n });\n }\n \n // 执行核心查询获取 subjects\n const coreBindings = await this.executeCoreQuery(optionalAnalysis.coreOperation!, context);\n \n // 使用 QueryOptimizer 执行优化查询(排序也在 QueryOptimizer 中处理)\n const orderOptions = params?.orderVarName \n ? { varName: params.orderVarName, reverse: params.reverse }\n : undefined;\n let results = await this.queryOptimizer.executeOptionalOptimized(\n optionalAnalysis, \n coreBindings,\n orderOptions\n );\n \n // 应用 LIMIT 和 OFFSET\n if (params?.offset || params?.limit) {\n const start = params.offset ?? 0;\n const end = params.limit ? start + params.limit : undefined;\n results = results.slice(start, end);\n }\n \n if (this.debug) {\n console.log(`[ComunicaQuintEngine] OPTIONAL optimized: ${results.length} results`);\n }\n \n const resultStream = wrap(Promise.resolve(results));\n return resultStream as ResultStream<Bindings>;\n }\n } catch (error) {\n if (this.debug) {\n console.log(`[ComunicaQuintEngine] OPTIONAL optimization failed, falling back:`, error);\n }\n }\n\n // Create context with pre-identified source to bypass source identification\n // This allows us to use our IQuerySource directly\n // IMPORTANT: Use plain object instead of ActionContext to avoid version mismatch\n // between the root @comunica/core and the one bundled with @comunica/query-sparql-rdfjs\n // The engine will convert it to ActionContext using its internal @comunica/core\n const { sources: _ignored, filters: _filters, ...restContext } = context || {};\n const queryContext = {\n ...restContext,\n // Set the identified sources directly - this skips ActorContextPreprocessQuerySourceIdentify\n [CONTEXT_KEY_QUERY_SOURCES]: [{ source: this.querySource }],\n };\n\n return await this.engine.queryBindings(query, queryContext as any);\n }\n\n /**\n * 执行核心查询(不含 OPTIONAL)\n */\n private async executeCoreQuery(\n coreOperation: Algebra.Operation,\n _context?: QueryContext\n ): Promise<Bindings[]> {\n const bindings: Bindings[] = [];\n\n const mockContext = {\n get: <V>() => undefined as V | undefined,\n getSafe: <V>() => { throw new Error('Not implemented'); },\n has: () => false,\n };\n\n const stream = this.querySource.queryBindings(coreOperation, mockContext as any, undefined);\n \n for await (const binding of stream) {\n bindings.push(binding);\n }\n\n return bindings;\n }\n\n /**\n * Extract FILTER expressions from query and store them for later pushdown\n * Maps variable names to their filter expressions\n */\n private extractAndStoreFilters(query: string): void {\n this.currentFilterExpressions.clear();\n \n try {\n const algebra = translate(query, { quads: true });\n this.collectFilterExpressions(algebra);\n } catch (error) {\n if (this.debug) {\n console.log(`[ComunicaQuintEngine] Failed to extract filters:`, error);\n }\n }\n }\n \n /**\n * Recursively collect FILTER expressions and their variable bindings\n */\n private collectFilterExpressions(op: Algebra.Operation): void {\n if (op.type === 'filter') {\n const filterOp = op as Algebra.Filter;\n const expression = filterOp.expression;\n \n // Extract variables from the expression\n const variables = this.getExpressionVariables(expression);\n \n // Store the expression for each variable\n for (const varName of variables) {\n // Merge with existing expressions for this variable\n const existing = this.currentFilterExpressions.get(varName);\n if (existing) {\n // Combine with AND\n this.currentFilterExpressions.set(varName, {\n type: 'expression',\n expressionType: 'operator',\n operator: '&&',\n args: [existing, expression],\n } as Algebra.OperatorExpression);\n } else {\n this.currentFilterExpressions.set(varName, expression);\n }\n }\n \n // Continue to nested operations\n this.collectFilterExpressions(filterOp.input);\n } else if ('input' in op && op.input) {\n if (Array.isArray(op.input)) {\n for (const child of op.input) {\n this.collectFilterExpressions(child as Algebra.Operation);\n }\n } else {\n this.collectFilterExpressions(op.input as Algebra.Operation);\n }\n }\n if ('left' in op && op.left) {\n this.collectFilterExpressions(op.left as Algebra.Operation);\n }\n if ('right' in op && op.right) {\n this.collectFilterExpressions(op.right as Algebra.Operation);\n }\n }\n \n /**\n * Get variable names from an expression\n */\n private getExpressionVariables(expr: Algebra.Expression): string[] {\n const variables: string[] = [];\n \n const collectVars = (e: Algebra.Expression): void => {\n if (e.expressionType === 'term') {\n const term = (e as Algebra.TermExpression).term;\n if (term.termType === 'Variable') {\n variables.push(term.value);\n }\n } else if (e.expressionType === 'operator') {\n const opExpr = e as Algebra.OperatorExpression;\n for (const arg of opExpr.args) {\n collectVars(arg);\n }\n }\n };\n \n collectVars(expr);\n return variables;\n }\n \n /**\n * Get the current filter expression for a variable (used by QuintQuerySource)\n */\n getFilterExpressionForVariable(varName: string): Algebra.Expression | undefined {\n return this.currentFilterExpressions.get(varName);\n }\n\n /**\n * Execute ASK query\n */\n async queryBoolean(query: string, context?: QueryContext): Promise<boolean> {\n const params = this.extractOptimizeParams(query);\n this.currentOptimizeParams = params;\n this.currentSecurityFilters = context?.filters;\n \n // Optimize ASK with limit=1\n if (!this.currentOptimizeParams) {\n this.currentOptimizeParams = { limit: 1 };\n } else if (this.currentOptimizeParams.limit === undefined) {\n this.currentOptimizeParams.limit = 1;\n }\n \n try {\n const { sources: _ignored, filters: _filters, ...restContext } = context || {};\n const queryContext = {\n ...restContext,\n [CONTEXT_KEY_QUERY_SOURCES]: [{ source: this.querySource }],\n };\n\n return await this.engine.queryBoolean(query, queryContext as any);\n } finally {\n this.currentOptimizeParams = null;\n this.currentSecurityFilters = undefined;\n }\n }\n\n /**\n * Execute CONSTRUCT/DESCRIBE query\n */\n async queryQuads(query: string, context?: QueryContext): Promise<ResultStream<Quad>> {\n console.log(`[ComunicaQuintEngine.queryQuads] Starting: ${query.slice(0, 100)}...`);\n const params = this.extractOptimizeParams(query);\n this.currentOptimizeParams = params;\n this.currentSecurityFilters = context?.filters;\n \n try {\n const start = Date.now();\n const { sources: _ignored, filters: _filters, ...restContext } = context || {};\n const queryContext = {\n ...restContext,\n [CONTEXT_KEY_QUERY_SOURCES]: [{ source: this.querySource }],\n };\n\n const result = await this.engine.queryQuads(query, queryContext as any);\n console.log(`[ComunicaQuintEngine.queryQuads] Completed in ${Date.now() - start}ms`);\n return result;\n } catch (err) {\n console.error(`[ComunicaQuintEngine.queryQuads] Failed:`, err);\n throw err;\n } finally {\n this.currentOptimizeParams = null;\n this.currentSecurityFilters = undefined;\n }\n }\n\n /**\n * Execute UPDATE query (INSERT/DELETE)\n * Uses RDF.Store interface since UPDATE doesn't need FILTER pushdown\n */\n async queryVoid(query: string, context?: QueryContext): Promise<void> {\n console.log(`[ComunicaQuintEngine.queryVoid] Starting: ${query.slice(0, 100)}...`);\n this.currentSecurityFilters = context?.filters;\n \n try {\n const start = Date.now();\n const result = await this.engine.queryVoid(query, {\n sources: [this.rdfStore],\n ...context,\n } as any);\n console.log(`[ComunicaQuintEngine.queryVoid] Completed in ${Date.now() - start}ms`);\n return result;\n } catch (err) {\n console.error(`[ComunicaQuintEngine.queryVoid] Failed:`, err);\n throw err;\n } finally {\n this.currentSecurityFilters = undefined;\n }\n }\n\n /**\n * Extract optimization params from SPARQL query\n */\n private extractOptimizeParams(query: string): OptimizeParams | null {\n try {\n const algebra = translate(query, { quads: true });\n return this.extractOptimizeParamsFromAlgebra(algebra);\n } catch (error) {\n if (this.debug) {\n console.log(`[ComunicaQuintEngine] Failed to analyze query:`, error);\n }\n return null;\n }\n }\n\n /**\n * Extract optimization params from SPARQL algebra\n */\n private extractOptimizeParamsFromAlgebra(algebra: Algebra.Operation): OptimizeParams | null {\n let limit: number | undefined;\n let offset: number | undefined;\n let order: TermName[] | undefined;\n let orderVarName: string | undefined;\n let reverse: boolean | undefined;\n let currentOp = algebra;\n let canPushLimit = true;\n\n while (currentOp) {\n switch (currentOp.type) {\n case 'slice': {\n const slice = currentOp as Algebra.Slice;\n if (slice.length !== undefined) {\n limit = slice.length;\n }\n if (slice.start !== undefined) {\n offset = slice.start;\n }\n currentOp = slice.input;\n break;\n }\n \n case 'orderby': {\n const orderBy = currentOp as Algebra.OrderBy;\n if (orderBy.expressions.length === 1) {\n const expr = orderBy.expressions[0] as Algebra.Expression;\n \n // 提取变量名和排序方向\n // ORDER BY ?name: { expressionType: \"term\", term: { value: \"name\" } }\n // ORDER BY DESC(?name): { expressionType: \"operator\", operator: \"desc\", args: [{ expressionType: \"term\", term: {...} }] }\n let varName: string | undefined;\n reverse = false;\n \n if (expr.expressionType === 'term') {\n const termExpr = expr as Algebra.TermExpression;\n if (termExpr.term?.termType === 'Variable') {\n varName = termExpr.term.value;\n }\n } else if (expr.expressionType === 'operator') {\n const opExpr = expr as Algebra.OperatorExpression;\n if (opExpr.operator === 'desc' && opExpr.args.length === 1) {\n reverse = true;\n const innerExpr = opExpr.args[0] as Algebra.Expression;\n if (innerExpr.expressionType === 'term') {\n const termExpr = innerExpr as Algebra.TermExpression;\n if (termExpr.term?.termType === 'Variable') {\n varName = termExpr.term.value;\n }\n }\n } else if (opExpr.operator === 'asc' && opExpr.args.length === 1) {\n const innerExpr = opExpr.args[0] as Algebra.Expression;\n if (innerExpr.expressionType === 'term') {\n const termExpr = innerExpr as Algebra.TermExpression;\n if (termExpr.term?.termType === 'Variable') {\n varName = termExpr.term.value;\n }\n }\n }\n }\n \n if (varName) {\n orderVarName = varName; // 保存原始变量名\n \n // 尝试直接映射(s/p/o/g)\n const termName = this.variableToTermName(varName);\n if (termName) {\n order = [termName];\n }\n // 如果直接映射失败,QuintQuerySource 会通过 pattern 分析来确定\n }\n }\n currentOp = orderBy.input;\n break;\n }\n\n case 'project':\n case 'distinct':\n case 'reduced': {\n currentOp = (currentOp as any).input;\n break;\n }\n\n case 'bgp': {\n const bgp = currentOp as Algebra.Bgp;\n if (bgp.patterns.length === 1) {\n return { limit, offset, order, orderVarName, reverse };\n }\n canPushLimit = false;\n return canPushLimit ? { limit, offset, order, orderVarName, reverse } : null;\n }\n\n case 'join':\n case 'leftjoin':\n case 'union':\n case 'minus':\n // 虽然不能下推 LIMIT,但仍然返回 ORDER BY 参数\n // 因为 OPTIONAL 优化路径会自己处理排序\n canPushLimit = false;\n if (orderVarName) {\n return { limit, offset, order, orderVarName, reverse };\n }\n return null;\n\n case 'filter':\n case 'extend':\n case 'group':\n // 同样,返回 ORDER BY 参数供 OPTIONAL 优化路径使用\n if (orderVarName) {\n return { limit, offset, order, orderVarName, reverse };\n }\n return null;\n\n default:\n return null;\n }\n }\n\n return null;\n }\n\n /**\n * Map SPARQL variable name to TermName\n */\n private variableToTermName(varName: string): TermName | null {\n const mapping: Record<string, TermName> = {\n 's': 'subject',\n 'subject': 'subject',\n 'p': 'predicate',\n 'predicate': 'predicate',\n 'o': 'object',\n 'object': 'object',\n 'g': 'graph',\n 'graph': 'graph',\n };\n return mapping[varName.toLowerCase()] ?? null;\n }\n}\n"]}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * ExpressionEvaluator - In-memory SPARQL expression evaluation
3
+ *
4
+ * Evaluates SPARQL expressions that cannot be pushed down to the database.
5
+ * Used for filtering bindings after initial pattern matching.
6
+ */
7
+ import type { Term, Bindings } from '@rdfjs/types';
8
+ import type { Algebra } from 'sparqlalgebrajs';
9
+ import type { QuintStore } from '../quint/types';
10
+ import type { PatternBuilder } from './PatternBuilder';
11
+ /**
12
+ * Callback for extracting pattern from operation
13
+ */
14
+ export type ExtractPatternFn = (operation: Algebra.Operation) => {
15
+ pattern: Algebra.Pattern;
16
+ filter: Algebra.Expression | null;
17
+ };
18
+ /**
19
+ * ExpressionEvaluator handles in-memory evaluation of SPARQL expressions
20
+ */
21
+ export declare class ExpressionEvaluator {
22
+ private readonly store;
23
+ private readonly patternBuilder;
24
+ private readonly extractPatternAndFilter;
25
+ constructor(store: QuintStore, patternBuilder: PatternBuilder, extractPatternAndFilter: ExtractPatternFn);
26
+ /**
27
+ * Evaluate filter expression tree against candidate bindings
28
+ */
29
+ evaluateFilterTree(expr: Algebra.Expression, candidates: Bindings[], pattern: Algebra.Pattern): Promise<Bindings[]>;
30
+ /**
31
+ * Evaluate operator expression
32
+ */
33
+ private evaluateOperator;
34
+ /**
35
+ * Union multiple binding sets
36
+ */
37
+ private unionBindings;
38
+ /**
39
+ * Evaluate EXISTS/NOT EXISTS
40
+ */
41
+ private evaluateExistence;
42
+ private checkExists;
43
+ /**
44
+ * Evaluate single binding against operator
45
+ */
46
+ evaluateSingleBinding(expr: Algebra.OperatorExpression, binding: Bindings): boolean;
47
+ getTermValue(expr: Algebra.Expression, binding: Bindings): Term | null;
48
+ getNumericValue(expr: Algebra.Expression, binding: Bindings): number | null;
49
+ getStringValue(expr: Algebra.Expression, binding: Bindings): string | null;
50
+ compareTerms(left: Term | null, right: Term | null, op: string): boolean;
51
+ isNumericLiteral(lit: any): boolean;
52
+ effectiveBooleanValue(term: Term): boolean;
53
+ getBindingKey(binding: Bindings): string;
54
+ }
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ /**
3
+ * ExpressionEvaluator - In-memory SPARQL expression evaluation
4
+ *
5
+ * Evaluates SPARQL expressions that cannot be pushed down to the database.
6
+ * Used for filtering bindings after initial pattern matching.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ExpressionEvaluator = void 0;
10
+ const rdf_data_factory_1 = require("rdf-data-factory");
11
+ const serialization_1 = require("../quint/serialization");
12
+ const dataFactory = new rdf_data_factory_1.DataFactory();
13
+ /**
14
+ * ExpressionEvaluator handles in-memory evaluation of SPARQL expressions
15
+ */
16
+ class ExpressionEvaluator {
17
+ constructor(store, patternBuilder, extractPatternAndFilter) {
18
+ this.store = store;
19
+ this.patternBuilder = patternBuilder;
20
+ this.extractPatternAndFilter = extractPatternAndFilter;
21
+ }
22
+ /**
23
+ * Evaluate filter expression tree against candidate bindings
24
+ */
25
+ async evaluateFilterTree(expr, candidates, pattern) {
26
+ if (candidates.length === 0)
27
+ return [];
28
+ switch (expr.expressionType) {
29
+ case 'operator':
30
+ return this.evaluateOperator(expr, candidates, pattern);
31
+ case 'existence':
32
+ return this.evaluateExistence(expr, candidates, pattern);
33
+ case 'term':
34
+ const termExpr = expr;
35
+ return this.effectiveBooleanValue(termExpr.term) ? candidates : [];
36
+ default:
37
+ return candidates; // Unknown: be permissive
38
+ }
39
+ }
40
+ /**
41
+ * Evaluate operator expression
42
+ */
43
+ async evaluateOperator(expr, candidates, pattern) {
44
+ const op = expr.operator.toLowerCase();
45
+ // Logical AND
46
+ if (op === '&&') {
47
+ let result = candidates;
48
+ for (const arg of expr.args) {
49
+ result = await this.evaluateFilterTree(arg, result, pattern);
50
+ }
51
+ return result;
52
+ }
53
+ // Logical OR
54
+ if (op === '||') {
55
+ const resultSets = await Promise.all(expr.args.map(arg => this.evaluateFilterTree(arg, candidates, pattern)));
56
+ return this.unionBindings(resultSets);
57
+ }
58
+ // Logical NOT
59
+ if (op === '!') {
60
+ const positives = await this.evaluateFilterTree(expr.args[0], candidates, pattern);
61
+ const positiveKeys = new Set(positives.map(b => this.getBindingKey(b)));
62
+ return candidates.filter(b => !positiveKeys.has(this.getBindingKey(b)));
63
+ }
64
+ // Other operators: evaluate each binding individually
65
+ return candidates.filter(b => this.evaluateSingleBinding(expr, b));
66
+ }
67
+ /**
68
+ * Union multiple binding sets
69
+ */
70
+ unionBindings(sets) {
71
+ const seen = new Set();
72
+ const result = [];
73
+ for (const set of sets) {
74
+ for (const binding of set) {
75
+ const key = this.getBindingKey(binding);
76
+ if (!seen.has(key)) {
77
+ seen.add(key);
78
+ result.push(binding);
79
+ }
80
+ }
81
+ }
82
+ return result;
83
+ }
84
+ /**
85
+ * Evaluate EXISTS/NOT EXISTS
86
+ */
87
+ async evaluateExistence(expr, candidates, _pattern) {
88
+ const results = [];
89
+ for (const binding of candidates) {
90
+ const exists = await this.checkExists(expr.input, binding);
91
+ if (expr.not ? !exists : exists) {
92
+ results.push(binding);
93
+ }
94
+ }
95
+ return results;
96
+ }
97
+ async checkExists(subOperation, binding) {
98
+ const { pattern: subPattern } = this.extractPatternAndFilter(subOperation);
99
+ const quintPattern = this.patternBuilder.buildExistsPattern(subPattern, binding);
100
+ const results = await this.store.get(quintPattern, { limit: 1 });
101
+ return results.length > 0;
102
+ }
103
+ /**
104
+ * Evaluate single binding against operator
105
+ */
106
+ evaluateSingleBinding(expr, binding) {
107
+ const op = expr.operator.toLowerCase();
108
+ // Comparison
109
+ if (['=', '!=', '<', '>', '<=', '>='].includes(op)) {
110
+ const left = this.getTermValue(expr.args[0], binding);
111
+ const right = this.getTermValue(expr.args[1], binding);
112
+ if (left === null || right === null)
113
+ return false;
114
+ return this.compareTerms(left, right, op);
115
+ }
116
+ // BOUND
117
+ if (op === 'bound') {
118
+ const varExpr = expr.args[0];
119
+ if (varExpr.expressionType === 'term') {
120
+ const term = varExpr.term;
121
+ if (term.termType === 'Variable') {
122
+ return binding.get(term) !== undefined;
123
+ }
124
+ }
125
+ return false;
126
+ }
127
+ // String functions
128
+ if (op === 'strstarts') {
129
+ const str = this.getStringValue(expr.args[0], binding);
130
+ const prefix = this.getStringValue(expr.args[1], binding);
131
+ return str !== null && prefix !== null && str.startsWith(prefix);
132
+ }
133
+ if (op === 'strends') {
134
+ const str = this.getStringValue(expr.args[0], binding);
135
+ const suffix = this.getStringValue(expr.args[1], binding);
136
+ return str !== null && suffix !== null && str.endsWith(suffix);
137
+ }
138
+ if (op === 'contains') {
139
+ const str = this.getStringValue(expr.args[0], binding);
140
+ const substr = this.getStringValue(expr.args[1], binding);
141
+ return str !== null && substr !== null && str.includes(substr);
142
+ }
143
+ if (op === 'regex') {
144
+ const str = this.getStringValue(expr.args[0], binding);
145
+ const pattern = this.getStringValue(expr.args[1], binding);
146
+ if (str === null || pattern === null)
147
+ return false;
148
+ try {
149
+ const flags = expr.args[2] ? this.getStringValue(expr.args[2], binding) || '' : '';
150
+ return new RegExp(pattern, flags).test(str);
151
+ }
152
+ catch {
153
+ return false;
154
+ }
155
+ }
156
+ // Type checking functions
157
+ if (op === 'isiri' || op === 'isuri') {
158
+ const term = this.getTermValue(expr.args[0], binding);
159
+ return term !== null && term.termType === 'NamedNode';
160
+ }
161
+ if (op === 'isblank') {
162
+ const term = this.getTermValue(expr.args[0], binding);
163
+ return term !== null && term.termType === 'BlankNode';
164
+ }
165
+ if (op === 'isliteral') {
166
+ const term = this.getTermValue(expr.args[0], binding);
167
+ return term !== null && term.termType === 'Literal';
168
+ }
169
+ if (op === 'isnumeric') {
170
+ const term = this.getTermValue(expr.args[0], binding);
171
+ if (term?.termType === 'Literal') {
172
+ const lit = term;
173
+ return lit.datatype && serialization_1.NUMERIC_TYPES.has(lit.datatype.value);
174
+ }
175
+ return false;
176
+ }
177
+ // LANGMATCHES
178
+ if (op === 'langmatches') {
179
+ const langExpr = expr.args[0];
180
+ if (langExpr.expressionType === 'operator' && langExpr.operator.toLowerCase() === 'lang') {
181
+ const term = this.getTermValue(langExpr.args[0], binding);
182
+ if (term?.termType === 'Literal') {
183
+ const lit = term;
184
+ const lang = lit.language || '';
185
+ const pattern = this.getStringValue(expr.args[1], binding);
186
+ if (pattern === '*')
187
+ return lang.length > 0;
188
+ if (pattern)
189
+ return lang.toLowerCase() === pattern.toLowerCase();
190
+ }
191
+ }
192
+ return false;
193
+ }
194
+ // IN / NOT IN
195
+ if (op === 'in') {
196
+ const value = this.getTermValue(expr.args[0], binding);
197
+ if (value === null)
198
+ return false;
199
+ for (let i = 1; i < expr.args.length; i++) {
200
+ if (this.compareTerms(value, this.getTermValue(expr.args[i], binding), '='))
201
+ return true;
202
+ }
203
+ return false;
204
+ }
205
+ if (op === 'notin') {
206
+ const value = this.getTermValue(expr.args[0], binding);
207
+ if (value === null)
208
+ return true;
209
+ for (let i = 1; i < expr.args.length; i++) {
210
+ if (this.compareTerms(value, this.getTermValue(expr.args[i], binding), '='))
211
+ return false;
212
+ }
213
+ return true;
214
+ }
215
+ return true; // Unknown: be permissive
216
+ }
217
+ // ============================================================
218
+ // Helper Methods
219
+ // ============================================================
220
+ getTermValue(expr, binding) {
221
+ if (expr.expressionType === 'term') {
222
+ const termExpr = expr;
223
+ if (termExpr.term.termType === 'Variable') {
224
+ return binding.get(termExpr.term) || null;
225
+ }
226
+ return termExpr.term;
227
+ }
228
+ if (expr.expressionType === 'operator') {
229
+ const opExpr = expr;
230
+ const op = opExpr.operator.toLowerCase();
231
+ // STR function
232
+ if (op === 'str') {
233
+ const inner = this.getTermValue(opExpr.args[0], binding);
234
+ if (inner)
235
+ return dataFactory.literal(inner.value);
236
+ }
237
+ // STRLEN function - returns integer
238
+ if (op === 'strlen') {
239
+ const str = this.getStringValue(opExpr.args[0], binding);
240
+ if (str !== null) {
241
+ return dataFactory.literal(str.length.toString(), dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#integer'));
242
+ }
243
+ }
244
+ // Numeric functions
245
+ if (op === 'abs') {
246
+ const val = this.getNumericValue(opExpr.args[0], binding);
247
+ if (val !== null) {
248
+ return dataFactory.literal(Math.abs(val).toString(), dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal'));
249
+ }
250
+ }
251
+ if (op === 'round') {
252
+ const val = this.getNumericValue(opExpr.args[0], binding);
253
+ if (val !== null) {
254
+ return dataFactory.literal(Math.round(val).toString(), dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal'));
255
+ }
256
+ }
257
+ if (op === 'floor') {
258
+ const val = this.getNumericValue(opExpr.args[0], binding);
259
+ if (val !== null) {
260
+ return dataFactory.literal(Math.floor(val).toString(), dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal'));
261
+ }
262
+ }
263
+ if (op === 'ceil') {
264
+ const val = this.getNumericValue(opExpr.args[0], binding);
265
+ if (val !== null) {
266
+ return dataFactory.literal(Math.ceil(val).toString(), dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal'));
267
+ }
268
+ }
269
+ }
270
+ return null;
271
+ }
272
+ getNumericValue(expr, binding) {
273
+ const term = this.getTermValue(expr, binding);
274
+ if (term?.termType === 'Literal') {
275
+ const val = parseFloat(term.value);
276
+ if (!isNaN(val))
277
+ return val;
278
+ }
279
+ return null;
280
+ }
281
+ getStringValue(expr, binding) {
282
+ const term = this.getTermValue(expr, binding);
283
+ return term?.value ?? null;
284
+ }
285
+ compareTerms(left, right, op) {
286
+ if (left === null || right === null)
287
+ return false;
288
+ if (left.termType === 'Literal' && right.termType === 'Literal') {
289
+ const leftLit = left;
290
+ const rightLit = right;
291
+ if (this.isNumericLiteral(leftLit) && this.isNumericLiteral(rightLit)) {
292
+ const l = parseFloat(leftLit.value), r = parseFloat(rightLit.value);
293
+ switch (op) {
294
+ case '=': return l === r;
295
+ case '!=': return l !== r;
296
+ case '<': return l < r;
297
+ case '>': return l > r;
298
+ case '<=': return l <= r;
299
+ case '>=': return l >= r;
300
+ }
301
+ }
302
+ const cmp = leftLit.value.localeCompare(rightLit.value);
303
+ switch (op) {
304
+ case '=': return cmp === 0;
305
+ case '!=': return cmp !== 0;
306
+ case '<': return cmp < 0;
307
+ case '>': return cmp > 0;
308
+ case '<=': return cmp <= 0;
309
+ case '>=': return cmp >= 0;
310
+ }
311
+ }
312
+ switch (op) {
313
+ case '=': return left.value === right.value;
314
+ case '!=': return left.value !== right.value;
315
+ default: return false;
316
+ }
317
+ }
318
+ isNumericLiteral(lit) {
319
+ return lit.datatype && serialization_1.NUMERIC_TYPES.has(lit.datatype.value);
320
+ }
321
+ effectiveBooleanValue(term) {
322
+ if (term.termType === 'Literal') {
323
+ const lit = term;
324
+ if (lit.datatype?.value === 'http://www.w3.org/2001/XMLSchema#boolean') {
325
+ return lit.value === 'true';
326
+ }
327
+ return lit.value.length > 0;
328
+ }
329
+ return true;
330
+ }
331
+ getBindingKey(binding) {
332
+ const parts = [];
333
+ binding.forEach((value, key) => {
334
+ parts.push(`${key.value}=${value.value}`);
335
+ });
336
+ return parts.sort().join('|');
337
+ }
338
+ }
339
+ exports.ExpressionEvaluator = ExpressionEvaluator;
340
+ //# sourceMappingURL=ExpressionEvaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpressionEvaluator.js","sourceRoot":"","sources":["../../../src/storage/sparql/ExpressionEvaluator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ExpressionEvaluator - In-memory SPARQL expression evaluation\n * \n * Evaluates SPARQL expressions that cannot be pushed down to the database.\n * Used for filtering bindings after initial pattern matching.\n */\n\nimport type { Term, Variable, Bindings } from '@rdfjs/types';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { DataFactory } from 'rdf-data-factory';\n\nimport type { QuintStore, QuintPattern } from '../quint/types';\nimport { NUMERIC_TYPES } from '../quint/serialization';\nimport type { PatternBuilder } from './PatternBuilder';\n\nconst dataFactory = new DataFactory();\n\n/**\n * Callback for extracting pattern from operation\n */\nexport type ExtractPatternFn = (operation: Algebra.Operation) => { pattern: Algebra.Pattern; filter: Algebra.Expression | null };\n\n/**\n * ExpressionEvaluator handles in-memory evaluation of SPARQL expressions\n */\nexport class ExpressionEvaluator {\n constructor(\n private readonly store: QuintStore,\n private readonly patternBuilder: PatternBuilder,\n private readonly extractPatternAndFilter: ExtractPatternFn\n ) {}\n\n /**\n * Evaluate filter expression tree against candidate bindings\n */\n async evaluateFilterTree(\n expr: Algebra.Expression,\n candidates: Bindings[],\n pattern: Algebra.Pattern\n ): Promise<Bindings[]> {\n if (candidates.length === 0) return [];\n\n switch (expr.expressionType) {\n case 'operator':\n return this.evaluateOperator(expr as Algebra.OperatorExpression, candidates, pattern);\n case 'existence':\n return this.evaluateExistence(expr as Algebra.ExistenceExpression, candidates, pattern);\n case 'term':\n const termExpr = expr as Algebra.TermExpression;\n return this.effectiveBooleanValue(termExpr.term) ? candidates : [];\n default:\n return candidates; // Unknown: be permissive\n }\n }\n\n /**\n * Evaluate operator expression\n */\n private async evaluateOperator(\n expr: Algebra.OperatorExpression,\n candidates: Bindings[],\n pattern: Algebra.Pattern\n ): Promise<Bindings[]> {\n const op = expr.operator.toLowerCase();\n\n // Logical AND\n if (op === '&&') {\n let result = candidates;\n for (const arg of expr.args) {\n result = await this.evaluateFilterTree(arg, result, pattern);\n }\n return result;\n }\n\n // Logical OR\n if (op === '||') {\n const resultSets = await Promise.all(\n expr.args.map(arg => this.evaluateFilterTree(arg, candidates, pattern))\n );\n return this.unionBindings(resultSets);\n }\n\n // Logical NOT\n if (op === '!') {\n const positives = await this.evaluateFilterTree(expr.args[0], candidates, pattern);\n const positiveKeys = new Set(positives.map(b => this.getBindingKey(b)));\n return candidates.filter(b => !positiveKeys.has(this.getBindingKey(b)));\n }\n\n // Other operators: evaluate each binding individually\n return candidates.filter(b => this.evaluateSingleBinding(expr, b));\n }\n\n /**\n * Union multiple binding sets\n */\n private unionBindings(sets: Bindings[][]): Bindings[] {\n const seen = new Set<string>();\n const result: Bindings[] = [];\n for (const set of sets) {\n for (const binding of set) {\n const key = this.getBindingKey(binding);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(binding);\n }\n }\n }\n return result;\n }\n\n /**\n * Evaluate EXISTS/NOT EXISTS\n */\n private async evaluateExistence(\n expr: Algebra.ExistenceExpression,\n candidates: Bindings[],\n _pattern: Algebra.Pattern\n ): Promise<Bindings[]> {\n const results: Bindings[] = [];\n for (const binding of candidates) {\n const exists = await this.checkExists(expr.input, binding);\n if (expr.not ? !exists : exists) {\n results.push(binding);\n }\n }\n return results;\n }\n\n private async checkExists(subOperation: Algebra.Operation, binding: Bindings): Promise<boolean> {\n const { pattern: subPattern } = this.extractPatternAndFilter(subOperation);\n const quintPattern = this.patternBuilder.buildExistsPattern(subPattern, binding);\n const results = await this.store.get(quintPattern, { limit: 1 });\n return results.length > 0;\n }\n\n /**\n * Evaluate single binding against operator\n */\n evaluateSingleBinding(expr: Algebra.OperatorExpression, binding: Bindings): boolean {\n const op = expr.operator.toLowerCase();\n\n // Comparison\n if (['=', '!=', '<', '>', '<=', '>='].includes(op)) {\n const left = this.getTermValue(expr.args[0], binding);\n const right = this.getTermValue(expr.args[1], binding);\n if (left === null || right === null) return false;\n return this.compareTerms(left, right, op);\n }\n\n // BOUND\n if (op === 'bound') {\n const varExpr = expr.args[0];\n if (varExpr.expressionType === 'term') {\n const term = (varExpr as Algebra.TermExpression).term;\n if (term.termType === 'Variable') {\n return binding.get(term as Variable) !== undefined;\n }\n }\n return false;\n }\n\n // String functions\n if (op === 'strstarts') {\n const str = this.getStringValue(expr.args[0], binding);\n const prefix = this.getStringValue(expr.args[1], binding);\n return str !== null && prefix !== null && str.startsWith(prefix);\n }\n if (op === 'strends') {\n const str = this.getStringValue(expr.args[0], binding);\n const suffix = this.getStringValue(expr.args[1], binding);\n return str !== null && suffix !== null && str.endsWith(suffix);\n }\n if (op === 'contains') {\n const str = this.getStringValue(expr.args[0], binding);\n const substr = this.getStringValue(expr.args[1], binding);\n return str !== null && substr !== null && str.includes(substr);\n }\n if (op === 'regex') {\n const str = this.getStringValue(expr.args[0], binding);\n const pattern = this.getStringValue(expr.args[1], binding);\n if (str === null || pattern === null) return false;\n try {\n const flags = expr.args[2] ? this.getStringValue(expr.args[2], binding) || '' : '';\n return new RegExp(pattern, flags).test(str);\n } catch {\n return false;\n }\n }\n\n // Type checking functions\n if (op === 'isiri' || op === 'isuri') {\n const term = this.getTermValue(expr.args[0], binding);\n return term !== null && term.termType === 'NamedNode';\n }\n if (op === 'isblank') {\n const term = this.getTermValue(expr.args[0], binding);\n return term !== null && term.termType === 'BlankNode';\n }\n if (op === 'isliteral') {\n const term = this.getTermValue(expr.args[0], binding);\n return term !== null && term.termType === 'Literal';\n }\n if (op === 'isnumeric') {\n const term = this.getTermValue(expr.args[0], binding);\n if (term?.termType === 'Literal') {\n const lit = term as any;\n return lit.datatype && NUMERIC_TYPES.has(lit.datatype.value);\n }\n return false;\n }\n\n // LANGMATCHES\n if (op === 'langmatches') {\n const langExpr = expr.args[0] as Algebra.OperatorExpression;\n if (langExpr.expressionType === 'operator' && langExpr.operator.toLowerCase() === 'lang') {\n const term = this.getTermValue(langExpr.args[0], binding);\n if (term?.termType === 'Literal') {\n const lit = term as any;\n const lang = lit.language || '';\n const pattern = this.getStringValue(expr.args[1], binding);\n if (pattern === '*') return lang.length > 0;\n if (pattern) return lang.toLowerCase() === pattern.toLowerCase();\n }\n }\n return false;\n }\n\n // IN / NOT IN\n if (op === 'in') {\n const value = this.getTermValue(expr.args[0], binding);\n if (value === null) return false;\n for (let i = 1; i < expr.args.length; i++) {\n if (this.compareTerms(value, this.getTermValue(expr.args[i], binding), '=')) return true;\n }\n return false;\n }\n if (op === 'notin') {\n const value = this.getTermValue(expr.args[0], binding);\n if (value === null) return true;\n for (let i = 1; i < expr.args.length; i++) {\n if (this.compareTerms(value, this.getTermValue(expr.args[i], binding), '=')) return false;\n }\n return true;\n }\n\n return true; // Unknown: be permissive\n }\n\n // ============================================================\n // Helper Methods\n // ============================================================\n\n getTermValue(expr: Algebra.Expression, binding: Bindings): Term | null {\n if (expr.expressionType === 'term') {\n const termExpr = expr as Algebra.TermExpression;\n if (termExpr.term.termType === 'Variable') {\n return binding.get(termExpr.term as Variable) || null;\n }\n return termExpr.term;\n }\n if (expr.expressionType === 'operator') {\n const opExpr = expr as Algebra.OperatorExpression;\n const op = opExpr.operator.toLowerCase();\n \n // STR function\n if (op === 'str') {\n const inner = this.getTermValue(opExpr.args[0], binding);\n if (inner) return dataFactory.literal(inner.value);\n }\n \n // STRLEN function - returns integer\n if (op === 'strlen') {\n const str = this.getStringValue(opExpr.args[0], binding);\n if (str !== null) {\n return dataFactory.literal(\n str.length.toString(),\n dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#integer')\n );\n }\n }\n \n // Numeric functions\n if (op === 'abs') {\n const val = this.getNumericValue(opExpr.args[0], binding);\n if (val !== null) {\n return dataFactory.literal(\n Math.abs(val).toString(),\n dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal')\n );\n }\n }\n if (op === 'round') {\n const val = this.getNumericValue(opExpr.args[0], binding);\n if (val !== null) {\n return dataFactory.literal(\n Math.round(val).toString(),\n dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal')\n );\n }\n }\n if (op === 'floor') {\n const val = this.getNumericValue(opExpr.args[0], binding);\n if (val !== null) {\n return dataFactory.literal(\n Math.floor(val).toString(),\n dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal')\n );\n }\n }\n if (op === 'ceil') {\n const val = this.getNumericValue(opExpr.args[0], binding);\n if (val !== null) {\n return dataFactory.literal(\n Math.ceil(val).toString(),\n dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#decimal')\n );\n }\n }\n }\n return null;\n }\n\n getNumericValue(expr: Algebra.Expression, binding: Bindings): number | null {\n const term = this.getTermValue(expr, binding);\n if (term?.termType === 'Literal') {\n const val = parseFloat(term.value);\n if (!isNaN(val)) return val;\n }\n return null;\n }\n\n getStringValue(expr: Algebra.Expression, binding: Bindings): string | null {\n const term = this.getTermValue(expr, binding);\n return term?.value ?? null;\n }\n\n compareTerms(left: Term | null, right: Term | null, op: string): boolean {\n if (left === null || right === null) return false;\n \n if (left.termType === 'Literal' && right.termType === 'Literal') {\n const leftLit = left as any;\n const rightLit = right as any;\n \n if (this.isNumericLiteral(leftLit) && this.isNumericLiteral(rightLit)) {\n const l = parseFloat(leftLit.value), r = parseFloat(rightLit.value);\n switch (op) {\n case '=': return l === r;\n case '!=': return l !== r;\n case '<': return l < r;\n case '>': return l > r;\n case '<=': return l <= r;\n case '>=': return l >= r;\n }\n }\n \n const cmp = leftLit.value.localeCompare(rightLit.value);\n switch (op) {\n case '=': return cmp === 0;\n case '!=': return cmp !== 0;\n case '<': return cmp < 0;\n case '>': return cmp > 0;\n case '<=': return cmp <= 0;\n case '>=': return cmp >= 0;\n }\n }\n \n switch (op) {\n case '=': return left.value === right.value;\n case '!=': return left.value !== right.value;\n default: return false;\n }\n }\n\n isNumericLiteral(lit: any): boolean {\n return lit.datatype && NUMERIC_TYPES.has(lit.datatype.value);\n }\n\n effectiveBooleanValue(term: Term): boolean {\n if (term.termType === 'Literal') {\n const lit = term as any;\n if (lit.datatype?.value === 'http://www.w3.org/2001/XMLSchema#boolean') {\n return lit.value === 'true';\n }\n return lit.value.length > 0;\n }\n return true;\n }\n\n getBindingKey(binding: Bindings): string {\n const parts: string[] = [];\n binding.forEach((value: Term, key: Variable) => {\n parts.push(`${key.value}=${value.value}`);\n });\n return parts.sort().join('|');\n }\n}\n"]}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * FilterPushdownExtractor - Extract pushdownable conditions from SPARQL FILTER
3
+ *
4
+ * Analyzes SPARQL FILTER expressions and extracts conditions that can be
5
+ * pushed down to the database layer for efficient query execution.
6
+ *
7
+ * Supported pushdown operations:
8
+ * - Comparison: =, !=, <, >, <=, >=
9
+ * - String functions: STRSTARTS, STRENDS, CONTAINS, REGEX
10
+ * - Type checking: isIRI, isBlank, isLiteral, isNumeric
11
+ * - Language: LANGMATCHES
12
+ * - Logical: AND, OR (with $in optimization)
13
+ * - Set operations: IN, NOT IN
14
+ * - Existence: BOUND, !BOUND
15
+ */
16
+ import type { Algebra } from 'sparqlalgebrajs';
17
+ import type { TermOperators } from '../quint/types';
18
+ /**
19
+ * Pushdown filters extracted from SPARQL FILTER clauses
20
+ * Maps variable names to their filter conditions
21
+ */
22
+ export interface PushdownFilters {
23
+ [varName: string]: TermOperators;
24
+ }
25
+ /**
26
+ * Result of extracting pushdown filters from an expression
27
+ */
28
+ export interface PushdownResult {
29
+ filters: PushdownFilters;
30
+ remainder: Algebra.Expression | null;
31
+ orBranches?: PushdownFilters[];
32
+ orNonPushdownBranches?: Algebra.Expression[];
33
+ }
34
+ /**
35
+ * FilterPushdownExtractor extracts pushdownable conditions from FILTER expressions
36
+ */
37
+ export declare class FilterPushdownExtractor {
38
+ /**
39
+ * Extract pushdownable filters from an expression
40
+ * Returns filters that can be pushed down and the remaining expression
41
+ */
42
+ extractPushdownFilters(expr: Algebra.Expression, pattern: Algebra.Pattern): PushdownResult;
43
+ /**
44
+ * Handle OR expression pushdown
45
+ * - Same variable equality: convert to $in
46
+ * - Different variables: create OR branches for separate queries
47
+ * - Mixed (pushdownable + non-pushdownable): orBranches + orNonPushdownBranches
48
+ */
49
+ private extractOrPushdown;
50
+ /**
51
+ * Try to convert same-variable equalities to $in
52
+ */
53
+ private tryConvertToIn;
54
+ /**
55
+ * Try to extract pushdown filter from a single operator expression
56
+ */
57
+ tryExtractSinglePushdown(expr: Algebra.OperatorExpression, pattern: Algebra.Pattern): PushdownFilters | null;
58
+ /**
59
+ * Extract comparison operator info
60
+ */
61
+ private extractComparison;
62
+ private mapComparisonOp;
63
+ private reverseComparisonOp;
64
+ /**
65
+ * Serialize value for comparison
66
+ *
67
+ * Range comparison handling:
68
+ * - $gt, $lte: Use fpstring + max suffix to be >= all values with same fpstring
69
+ * - $lt, $gte: Use fpstring only (prefix), stored values are always > prefix
70
+ * - $eq, $ne: Use exact serialization
71
+ */
72
+ serializeForComparison(value: string, datatype: string | undefined, filterOp: string): string;
73
+ serializeExactValue(value: string, datatype?: string): string;
74
+ }