@routier/core 0.0.1-alpha.1 → 0.0.1-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/assertions/index.d.ts +5 -0
  2. package/dist/assertions/index.js +131 -0
  3. package/dist/assertions/index.js.map +1 -0
  4. package/dist/codegen/SlotPath.d.ts +7 -0
  5. package/dist/codegen/blocks.d.ts +130 -0
  6. package/dist/codegen/handlers/CloneHandlerBuilder.d.ts +4 -0
  7. package/dist/codegen/handlers/CompareHandlerBuilder.d.ts +4 -0
  8. package/dist/codegen/handlers/DeserializeHandlerBuilder.d.ts +4 -0
  9. package/dist/codegen/handlers/EnableChangeTrackingHandlerBuilder.d.ts +4 -0
  10. package/dist/codegen/handlers/EnrichmentHandlerBuilder.d.ts +4 -0
  11. package/dist/codegen/handlers/FreezeHandlerBuilder.d.ts +4 -0
  12. package/dist/codegen/handlers/HashHandlerBuilder.d.ts +4 -0
  13. package/dist/codegen/handlers/HashTypeHandlerBuilder.d.ts +4 -0
  14. package/dist/codegen/handlers/IdSelectorHandlerBuilder.d.ts +4 -0
  15. package/dist/codegen/handlers/MergeHandlerBuilder.d.ts +4 -0
  16. package/dist/codegen/handlers/PrepareHandlerBuilder.d.ts +4 -0
  17. package/dist/codegen/handlers/SerializeHandlerBuilder.d.ts +4 -0
  18. package/dist/codegen/handlers/StripHandlerBuilder.d.ts +4 -0
  19. package/dist/codegen/handlers/clone/CloneObjectHandler.d.ts +6 -0
  20. package/dist/codegen/handlers/clone/CloneValueHandler.d.ts +6 -0
  21. package/dist/codegen/handlers/compare/CompareObjectHandler.d.ts +6 -0
  22. package/dist/codegen/handlers/compare/CompareValueHandler.d.ts +6 -0
  23. package/dist/codegen/handlers/deserialize/DeserializeComputedValueHandler.d.ts +6 -0
  24. package/dist/codegen/handlers/deserialize/DeserializeDateHandler.d.ts +9 -0
  25. package/dist/codegen/handlers/deserialize/DeserializeFunctionHandler.d.ts +6 -0
  26. package/dist/codegen/handlers/deserialize/DeserializeObjectHandler.d.ts +6 -0
  27. package/dist/codegen/handlers/deserialize/DeserializeValueHandler.d.ts +6 -0
  28. package/dist/codegen/handlers/enableChangeTracking/EnableChangeTrackingObjectHandler.d.ts +6 -0
  29. package/dist/codegen/handlers/enableChangeTracking/EnableChangeTrackingPrimitiveValueHandler.d.ts +6 -0
  30. package/dist/codegen/handlers/enrichment/EnrichmentComputedValueHandler.d.ts +6 -0
  31. package/dist/codegen/handlers/enrichment/EnrichmentDefaultFunctionHandler.d.ts +6 -0
  32. package/dist/codegen/handlers/enrichment/EnrichmentDefaultValueHandler.d.ts +6 -0
  33. package/dist/codegen/handlers/enrichment/EnrichmentFunctionHandler.d.ts +6 -0
  34. package/dist/codegen/handlers/enrichment/EnrichmentNullableObjectHandler.d.ts +6 -0
  35. package/dist/codegen/handlers/enrichment/EnrichmentObjectHandler.d.ts +6 -0
  36. package/dist/codegen/handlers/enrichment/EnrichmentObjectIdentityHandler.d.ts +6 -0
  37. package/dist/codegen/handlers/enrichment/EnrichmentPrimitiveHandler.d.ts +6 -0
  38. package/dist/codegen/handlers/enrichment/EnrichmentPrimitiveIdentityHandler.d.ts +6 -0
  39. package/dist/codegen/handlers/freeze/FreezeObjectHandler.d.ts +6 -0
  40. package/dist/codegen/handlers/freeze/FreezePrimitiveValueHandler.d.ts +6 -0
  41. package/dist/codegen/handlers/hash/HashComputedValueHandler.d.ts +6 -0
  42. package/dist/codegen/handlers/hash/HashDateHandler.d.ts +6 -0
  43. package/dist/codegen/handlers/hash/HashFunctionHandler.d.ts +6 -0
  44. package/dist/codegen/handlers/hash/HashIdentityHandler.d.ts +6 -0
  45. package/dist/codegen/handlers/hash/HashKeyHandler.d.ts +6 -0
  46. package/dist/codegen/handlers/hash/HashValueHandler.d.ts +6 -0
  47. package/dist/codegen/handlers/hashType/HashTypeValueHandler.d.ts +6 -0
  48. package/dist/codegen/handlers/idSelector/IdSelectorValueHandler.d.ts +6 -0
  49. package/{src/codegen/handlers/index.ts → dist/codegen/handlers/index.d.ts} +1 -1
  50. package/dist/codegen/handlers/merge/MergeComputedValueHandler.d.ts +6 -0
  51. package/dist/codegen/handlers/merge/MergeDefaultFunctionHandler.d.ts +6 -0
  52. package/dist/codegen/handlers/merge/MergeDefaultValueHandler.d.ts +6 -0
  53. package/dist/codegen/handlers/merge/MergeFunctionHandler.d.ts +6 -0
  54. package/dist/codegen/handlers/merge/MergePrimitiveHandler.d.ts +6 -0
  55. package/dist/codegen/handlers/prepare/PrepareComputedValueHandler.d.ts +6 -0
  56. package/dist/codegen/handlers/prepare/PrepareFunctionHandler.d.ts +6 -0
  57. package/dist/codegen/handlers/prepare/PrepareIdentityHandler.d.ts +6 -0
  58. package/dist/codegen/handlers/prepare/PrepareKeyHandler.d.ts +6 -0
  59. package/dist/codegen/handlers/prepare/PrepareObjectHandler.d.ts +6 -0
  60. package/dist/codegen/handlers/prepare/PrepareValueHandler.d.ts +6 -0
  61. package/dist/codegen/handlers/serialize/SerializeDateHandler.d.ts +9 -0
  62. package/dist/codegen/handlers/serialize/SerializeObjectHandler.d.ts +6 -0
  63. package/dist/codegen/handlers/serialize/SerializeValueHandler.d.ts +6 -0
  64. package/dist/codegen/handlers/strip/StripIdentityHandler.d.ts +6 -0
  65. package/dist/codegen/handlers/strip/StripKeyHandler.d.ts +6 -0
  66. package/dist/codegen/handlers/strip/StripObjectHandler.d.ts +6 -0
  67. package/dist/codegen/handlers/strip/StripValueHandler.d.ts +6 -0
  68. package/dist/codegen/handlers/types.d.ts +18 -0
  69. package/{src/codegen/index.ts → dist/codegen/index.d.ts} +1 -1
  70. package/dist/codegen/types.d.ts +9 -0
  71. package/dist/codegen/utils.d.ts +22 -0
  72. package/dist/collections/Changes.d.ts +51 -0
  73. package/dist/collections/Changes.test.d.ts +1 -0
  74. package/dist/collections/IdSet.d.ts +7 -0
  75. package/dist/collections/MemoryDataCollection.d.ts +22 -0
  76. package/dist/collections/MemoryDataCollection.test.d.ts +1 -0
  77. package/dist/collections/ReadonlySchemaCollection.d.ts +17 -0
  78. package/dist/collections/SchemaCollection.d.ts +10 -0
  79. package/dist/collections/TagCollection.d.ts +15 -0
  80. package/dist/collections/TagCollection.test.d.ts +1 -0
  81. package/{src/collections/index.ts → dist/collections/index.d.ts} +2 -1
  82. package/dist/collections/index.js +717 -0
  83. package/dist/collections/index.js.map +1 -0
  84. package/dist/errors/SchemaError.d.ts +3 -0
  85. package/dist/errors/index.d.ts +1 -0
  86. package/dist/errors/index.js +90 -0
  87. package/dist/errors/index.js.map +1 -0
  88. package/{src/expressions/index.ts → dist/expressions/index.d.ts} +1 -1
  89. package/{src/expressions/parser.ts → dist/expressions/index.js} +387 -205
  90. package/dist/expressions/index.js.map +1 -0
  91. package/dist/expressions/parser.d.ts +4 -0
  92. package/dist/expressions/parser.test.d.ts +1 -0
  93. package/{src/expressions/types.ts → dist/expressions/types.d.ts} +42 -99
  94. package/dist/expressions/utils.d.ts +10 -0
  95. package/dist/expressions/utils.test.d.ts +1 -0
  96. package/{src/index.ts → dist/index.d.ts} +1 -1
  97. package/dist/index.js +8589 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/performance/index.d.ts +5 -0
  100. package/dist/performance/index.js +65 -0
  101. package/dist/performance/index.js.map +1 -0
  102. package/dist/pipeline/SyncronousQueue.d.ts +7 -0
  103. package/dist/pipeline/SyncronousQueue.test.d.ts +1 -0
  104. package/dist/pipeline/TrampolinePipeline.d.ts +36 -0
  105. package/dist/pipeline/TrampolinePipeline.test.d.ts +1 -0
  106. package/dist/pipeline/index.d.ts +2 -0
  107. package/{src/pipeline/TrampolinePipeline.ts → dist/pipeline/index.js} +297 -140
  108. package/dist/pipeline/index.js.map +1 -0
  109. package/dist/plugins/EphemeralDataPlugin.d.ts +13 -0
  110. package/dist/plugins/capabilities/DbPluginCapability.d.ts +23 -0
  111. package/{src/plugins/capabilities/index.ts → dist/plugins/capabilities/index.d.ts} +1 -1
  112. package/dist/plugins/capabilities/logging/DbPluginLoggingCapability.d.ts +28 -0
  113. package/dist/plugins/capabilities/logging/index.d.ts +1 -0
  114. package/{src/plugins/index.ts → dist/plugins/index.d.ts} +1 -1
  115. package/dist/plugins/index.js +2332 -0
  116. package/dist/plugins/index.js.map +1 -0
  117. package/dist/plugins/query/Query.d.ts +13 -0
  118. package/dist/plugins/query/QueryOptionsCollection.d.ts +27 -0
  119. package/dist/plugins/query/QueryOptionsCollection.test.d.ts +1 -0
  120. package/{src/plugins/query/index.ts → dist/plugins/query/index.d.ts} +1 -1
  121. package/{src/plugins/query/types.ts → dist/plugins/query/types.d.ts} +29 -20
  122. package/dist/plugins/replication/OptimisticReplicationDbPlugin.d.ts +21 -0
  123. package/dist/plugins/replication/ReplicationDbPlugin.d.ts +21 -0
  124. package/{src/plugins/replication/index.ts → dist/plugins/replication/index.d.ts} +1 -1
  125. package/{src/plugins/replication/types.ts → dist/plugins/replication/types.d.ts} +1 -2
  126. package/dist/plugins/translators/DataTranslator.d.ts +18 -0
  127. package/dist/plugins/translators/JsonTranslator.d.ts +17 -0
  128. package/dist/plugins/translators/JsonTranslator.test.d.ts +1 -0
  129. package/dist/plugins/translators/SqlTranslator.d.ts +14 -0
  130. package/{src/plugins/translators/index.ts → dist/plugins/translators/index.d.ts} +1 -1
  131. package/{src/plugins/types.ts → dist/plugins/types.d.ts} +13 -26
  132. package/dist/results/Result.d.ts +29 -0
  133. package/{src/results/index.ts → dist/results/index.d.ts} +1 -1
  134. package/dist/results/index.js +192 -0
  135. package/dist/results/index.js.map +1 -0
  136. package/{src/results/types.ts → dist/results/types.d.ts} +18 -7
  137. package/dist/results/utils.d.ts +2 -0
  138. package/dist/schema/PropertyInfo.d.ts +132 -0
  139. package/dist/schema/PropertyInfo.test.d.ts +1 -0
  140. package/dist/schema/SchemaDefinition.d.ts +17 -0
  141. package/dist/schema/builder.d.ts +17 -0
  142. package/dist/schema/communication/broadcast.d.ts +11 -0
  143. package/{src/schema/index.ts → dist/schema/index.d.ts} +1 -1
  144. package/dist/schema/index.js +4929 -0
  145. package/dist/schema/index.js.map +1 -0
  146. package/dist/schema/property/base/SchemaBase.d.ts +23 -0
  147. package/dist/schema/property/base/index.d.ts +1 -0
  148. package/dist/schema/property/modifiers/SchemaDefault.d.ts +13 -0
  149. package/dist/schema/property/modifiers/SchemaDeserialize.d.ts +11 -0
  150. package/dist/schema/property/modifiers/SchemaDistinct.d.ts +7 -0
  151. package/dist/schema/property/modifiers/SchemaFrom.d.ts +23 -0
  152. package/dist/schema/property/modifiers/SchemaIdentity.d.ts +7 -0
  153. package/dist/schema/property/modifiers/SchemaIndex.d.ts +23 -0
  154. package/dist/schema/property/modifiers/SchemaKey.d.ts +13 -0
  155. package/dist/schema/property/modifiers/SchemaNullable.d.ts +9 -0
  156. package/dist/schema/property/modifiers/SchemaOptional.d.ts +9 -0
  157. package/dist/schema/property/modifiers/SchemaReadonly.d.ts +15 -0
  158. package/dist/schema/property/modifiers/SchemaSerialize.d.ts +9 -0
  159. package/dist/schema/property/modifiers/SchemaTracked.d.ts +7 -0
  160. package/{src/schema/property/modifiers/index.ts → dist/schema/property/modifiers/index.d.ts} +1 -1
  161. package/dist/schema/property/types/SchemaArray.d.ts +23 -0
  162. package/dist/schema/property/types/SchemaBoolean.d.ts +27 -0
  163. package/dist/schema/property/types/SchemaDate.d.ts +27 -0
  164. package/dist/schema/property/types/SchemaNumber.d.ts +31 -0
  165. package/dist/schema/property/types/SchemaObject.d.ts +20 -0
  166. package/dist/schema/property/types/SchemaString.d.ts +31 -0
  167. package/{src/schema/property/types/index.ts → dist/schema/property/types/index.d.ts} +1 -1
  168. package/dist/schema/table/SchemaComputed.d.ts +10 -0
  169. package/dist/schema/table/SchemaFunction.d.ts +8 -0
  170. package/{src/schema/table/index.ts → dist/schema/table/index.d.ts} +1 -1
  171. package/{src/schema/types.ts → dist/schema/types.d.ts} +61 -101
  172. package/{src/types/index.ts → dist/types/index.d.ts} +1 -2
  173. package/dist/types/index.js +25 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/utilities/arrays.d.ts +1 -0
  176. package/dist/utilities/arrays.test.d.ts +1 -0
  177. package/dist/utilities/dates.d.ts +1 -0
  178. package/dist/utilities/dates.test.d.ts +1 -0
  179. package/dist/utilities/dbPluginEventUtils.d.ts +14 -0
  180. package/dist/utilities/functions.d.ts +1 -0
  181. package/{src/utilities/index.ts → dist/utilities/index.d.ts} +2 -1
  182. package/dist/utilities/index.js +571 -0
  183. package/dist/utilities/index.js.map +1 -0
  184. package/dist/utilities/objects.d.ts +2 -0
  185. package/dist/utilities/queryOptionsCollection.d.ts +2 -0
  186. package/dist/utilities/replication.d.ts +3 -0
  187. package/dist/utilities/runtime.d.ts +1 -0
  188. package/dist/utilities/strings.d.ts +1 -0
  189. package/dist/utilities/types.d.ts +4 -0
  190. package/dist/utilities/uuid.d.ts +2 -0
  191. package/package.json +6 -1
  192. package/readme.md +95 -0
  193. package/CHANGELOG.md +0 -8
  194. package/rspack.config.mjs +0 -65
  195. package/src/assertions/index.ts +0 -37
  196. package/src/codegen/SlotPath.ts +0 -20
  197. package/src/codegen/blocks.ts +0 -578
  198. package/src/codegen/handlers/CloneHandlerBuilder.ts +0 -13
  199. package/src/codegen/handlers/CompareHandlerBuilder.ts +0 -13
  200. package/src/codegen/handlers/DeserializeHandlerBuilder.ts +0 -20
  201. package/src/codegen/handlers/EnableChangeTrackingHandlerBuilder.ts +0 -13
  202. package/src/codegen/handlers/EnrichmentHandlerBuilder.ts +0 -28
  203. package/src/codegen/handlers/FreezeHandlerBuilder.ts +0 -13
  204. package/src/codegen/handlers/HashHandlerBuilder.ts +0 -25
  205. package/src/codegen/handlers/HashTypeHandlerBuilder.ts +0 -11
  206. package/src/codegen/handlers/IdSelectorHandlerBuilder.ts +0 -10
  207. package/src/codegen/handlers/MergeHandlerBuilder.ts +0 -19
  208. package/src/codegen/handlers/PrepareHandlerBuilder.ts +0 -23
  209. package/src/codegen/handlers/SerializeHandlerBuilder.ts +0 -15
  210. package/src/codegen/handlers/StripHandlerBuilder.ts +0 -18
  211. package/src/codegen/handlers/clone/CloneObjectHandler.ts +0 -29
  212. package/src/codegen/handlers/clone/CloneValueHandler.ts +0 -33
  213. package/src/codegen/handlers/compare/CompareObjectHandler.ts +0 -15
  214. package/src/codegen/handlers/compare/CompareValueHandler.ts +0 -27
  215. package/src/codegen/handlers/deserialize/DeserializeComputedValueHandler.ts +0 -16
  216. package/src/codegen/handlers/deserialize/DeserializeDateHandler.ts +0 -45
  217. package/src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts +0 -16
  218. package/src/codegen/handlers/deserialize/DeserializeObjectHandler.ts +0 -29
  219. package/src/codegen/handlers/deserialize/DeserializeValueHandler.ts +0 -33
  220. package/src/codegen/handlers/enableChangeTracking/EnableChangeTrackingObjectHandler.ts +0 -20
  221. package/src/codegen/handlers/enableChangeTracking/EnableChangeTrackingPrimitiveValueHandler.ts +0 -15
  222. package/src/codegen/handlers/enrichment/EnrichmentComputedValueHandler.ts +0 -37
  223. package/src/codegen/handlers/enrichment/EnrichmentDefaultFunctionHandler.ts +0 -50
  224. package/src/codegen/handlers/enrichment/EnrichmentDefaultValueHandler.ts +0 -18
  225. package/src/codegen/handlers/enrichment/EnrichmentFunctionHandler.ts +0 -38
  226. package/src/codegen/handlers/enrichment/EnrichmentNullableObjectHandler.ts +0 -44
  227. package/src/codegen/handlers/enrichment/EnrichmentObjectHandler.ts +0 -29
  228. package/src/codegen/handlers/enrichment/EnrichmentObjectIdentityHandler.ts +0 -16
  229. package/src/codegen/handlers/enrichment/EnrichmentPrimitiveHandler.ts +0 -13
  230. package/src/codegen/handlers/enrichment/EnrichmentPrimitiveIdentityHandler.ts +0 -21
  231. package/src/codegen/handlers/freeze/FreezeObjectHandler.ts +0 -20
  232. package/src/codegen/handlers/freeze/FreezePrimitiveValueHandler.ts +0 -15
  233. package/src/codegen/handlers/hash/HashComputedValueHandler.ts +0 -15
  234. package/src/codegen/handlers/hash/HashDateHandler.ts +0 -26
  235. package/src/codegen/handlers/hash/HashFunctionHandler.ts +0 -16
  236. package/src/codegen/handlers/hash/HashIdentityHandler.ts +0 -15
  237. package/src/codegen/handlers/hash/HashKeyHandler.ts +0 -26
  238. package/src/codegen/handlers/hash/HashValueHandler.ts +0 -26
  239. package/src/codegen/handlers/hashType/HashTypeValueHandler.ts +0 -20
  240. package/src/codegen/handlers/idSelector/IdSelectorValueHandler.ts +0 -28
  241. package/src/codegen/handlers/merge/MergeComputedValueHandler.ts +0 -37
  242. package/src/codegen/handlers/merge/MergeDefaultFunctionHandler.ts +0 -40
  243. package/src/codegen/handlers/merge/MergeDefaultValueHandler.ts +0 -32
  244. package/src/codegen/handlers/merge/MergeFunctionHandler.ts +0 -16
  245. package/src/codegen/handlers/merge/MergePrimitiveHandler.ts +0 -21
  246. package/src/codegen/handlers/prepare/PrepareComputedValueHandler.ts +0 -16
  247. package/src/codegen/handlers/prepare/PrepareFunctionHandler.ts +0 -16
  248. package/src/codegen/handlers/prepare/PrepareIdentityHandler.ts +0 -21
  249. package/src/codegen/handlers/prepare/PrepareKeyHandler.ts +0 -21
  250. package/src/codegen/handlers/prepare/PrepareObjectHandler.ts +0 -38
  251. package/src/codegen/handlers/prepare/PrepareValueHandler.ts +0 -36
  252. package/src/codegen/handlers/serialize/SerializeDateHandler.ts +0 -45
  253. package/src/codegen/handlers/serialize/SerializeObjectHandler.ts +0 -28
  254. package/src/codegen/handlers/serialize/SerializeValueHandler.ts +0 -33
  255. package/src/codegen/handlers/strip/StripIdentityHandler.ts +0 -15
  256. package/src/codegen/handlers/strip/StripKeyHandler.ts +0 -15
  257. package/src/codegen/handlers/strip/StripObjectHandler.ts +0 -35
  258. package/src/codegen/handlers/strip/StripValueHandler.ts +0 -36
  259. package/src/codegen/handlers/types.ts +0 -119
  260. package/src/codegen/types.ts +0 -2
  261. package/src/codegen/utils.ts +0 -74
  262. package/src/collections/Changes.test.ts +0 -337
  263. package/src/collections/Changes.ts +0 -177
  264. package/src/collections/IdSet.ts +0 -28
  265. package/src/collections/MemoryDataCollection.test.ts +0 -424
  266. package/src/collections/MemoryDataCollection.ts +0 -134
  267. package/src/collections/SchemaCollection.ts +0 -22
  268. package/src/collections/TagCollection.test.ts +0 -443
  269. package/src/collections/TagCollection.ts +0 -62
  270. package/src/errors/SchemaError.ts +0 -6
  271. package/src/errors/index.ts +0 -1
  272. package/src/expressions/parser.test.ts +0 -913
  273. package/src/expressions/utils.test.ts +0 -346
  274. package/src/expressions/utils.ts +0 -59
  275. package/src/performance/index.ts +0 -26
  276. package/src/pipeline/SyncronousQueue.test.ts +0 -269
  277. package/src/pipeline/SyncronousQueue.ts +0 -30
  278. package/src/pipeline/TrampolinePipeline.test.ts +0 -374
  279. package/src/pipeline/index.ts +0 -2
  280. package/src/plugins/EphemeralDataPlugin.ts +0 -132
  281. package/src/plugins/capabilities/DbPluginCapability.ts +0 -111
  282. package/src/plugins/capabilities/logging/DbPluginLoggingCapability.ts +0 -261
  283. package/src/plugins/capabilities/logging/index.ts +0 -1
  284. package/src/plugins/query/Query.ts +0 -67
  285. package/src/plugins/query/QueryOptionsCollection.test.ts +0 -86
  286. package/src/plugins/query/QueryOptionsCollection.ts +0 -154
  287. package/src/plugins/replication/OptimisticReplicationDbPlugin.ts +0 -202
  288. package/src/plugins/replication/ReplicationDbPlugin.ts +0 -137
  289. package/src/plugins/translators/DataTranslator.ts +0 -46
  290. package/src/plugins/translators/JsonTranslator.test.ts +0 -618
  291. package/src/plugins/translators/JsonTranslator.ts +0 -211
  292. package/src/plugins/translators/SqlTranslator.ts +0 -45
  293. package/src/results/Result.ts +0 -91
  294. package/src/results/utils.ts +0 -15
  295. package/src/schema/PropertyInfo.test.ts +0 -479
  296. package/src/schema/PropertyInfo.ts +0 -374
  297. package/src/schema/SchemaDefinition.ts +0 -626
  298. package/src/schema/builder.ts +0 -18
  299. package/src/schema/property/base/SchemaBase.ts +0 -49
  300. package/src/schema/property/base/index.ts +0 -1
  301. package/src/schema/property/modifiers/SchemaDefault.ts +0 -29
  302. package/src/schema/property/modifiers/SchemaDeserialize.ts +0 -23
  303. package/src/schema/property/modifiers/SchemaDistinct.ts +0 -14
  304. package/src/schema/property/modifiers/SchemaFrom.ts +0 -54
  305. package/src/schema/property/modifiers/SchemaIdentity.ts +0 -13
  306. package/src/schema/property/modifiers/SchemaIndex.ts +0 -60
  307. package/src/schema/property/modifiers/SchemaKey.ts +0 -28
  308. package/src/schema/property/modifiers/SchemaNullable.ts +0 -18
  309. package/src/schema/property/modifiers/SchemaOptional.ts +0 -19
  310. package/src/schema/property/modifiers/SchemaReadonly.ts +0 -34
  311. package/src/schema/property/modifiers/SchemaSerialize.ts +0 -18
  312. package/src/schema/property/modifiers/SchemaTracked.ts +0 -14
  313. package/src/schema/property/types/SchemaArray.ts +0 -50
  314. package/src/schema/property/types/SchemaBoolean.ts +0 -59
  315. package/src/schema/property/types/SchemaDate.ts +0 -58
  316. package/src/schema/property/types/SchemaNumber.ts +0 -69
  317. package/src/schema/property/types/SchemaObject.ts +0 -44
  318. package/src/schema/property/types/SchemaString.ts +0 -69
  319. package/src/schema/table/SchemaComputed.ts +0 -20
  320. package/src/schema/table/SchemaFunction.ts +0 -15
  321. package/src/utilities/arrays.test.ts +0 -312
  322. package/src/utilities/arrays.ts +0 -12
  323. package/src/utilities/dates.test.ts +0 -388
  324. package/src/utilities/dates.ts +0 -11
  325. package/src/utilities/dbPluginEventUtils.ts +0 -44
  326. package/src/utilities/objects.ts +0 -7
  327. package/src/utilities/queryOptionsCollection.ts +0 -16
  328. package/src/utilities/replication.ts +0 -23
  329. package/src/utilities/runtime.ts +0 -3
  330. package/src/utilities/strings.ts +0 -18
  331. package/src/utilities/types.ts +0 -1
  332. package/src/utilities/uuid.ts +0 -56
  333. package/tsconfig.json +0 -28
  334. package/vitest.config.ts +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressions/index.js","sources":["webpack://@routier/core/./src/expressions/parser.ts","webpack://@routier/core/./src/expressions/types.ts","webpack://@routier/core/./src/expressions/utils.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/expressions/index.ts"],"sourcesContent":["import { CompiledSchema, SchemaTypes } from \"../schema\";\nimport { Expression, OperatorExpression, ComparatorExpression, ValueExpression, PropertyExpression, Filter, ParamsFilter, Operator } from \"./types\";\n\n// Pre-compiled regex patterns for better performance\nconst METHOD_REGEX = /([a-zA-Z0-9_.]+)\\.(startsWith|endsWith|includes)\\(([^)]+)\\)(\\s*(===|==|!==|!=)\\s*(true|false))?/;\nconst TRANSFORM_METHOD_REGEX = /([a-zA-Z0-9_.]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)\\.(startsWith|endsWith|includes)\\(((?:[^()]|\\([^)]*\\))*)\\)(\\s*(===|==|!==|!=)\\s*(true|false))?/;\nconst EQUALITY_REGEX = /([^=!<>]+?)\\s*(===|==|!==|!=)\\s*(.+)/;\nconst COMPARISON_REGEX = /([^=!<>]+?)\\s*(>=|<=|>|<)\\s*(.+)/;\nconst PARAM_PATH_REGEX = /^([a-zA-Z0-9_.]+)/;\n\n// Pre-compiled regex patterns for comment removal\nconst SINGLE_LINE_COMMENT_REGEX = /\\/\\/.*$/gm;\nconst MULTI_LINE_COMMENT_REGEX = /\\/\\*[\\s\\S]*?\\*\\//g;\nconst WHITESPACE_REGEX = /\\s+/g;\n\n// need to have negated + strict\nconst comparators: Record<string, ComparatorExpression> = {\n startsWith: new ComparatorExpression({\n comparator: \"starts-with\",\n negated: false,\n strict: false\n }),\n endsWith: new ComparatorExpression({\n comparator: \"ends-with\",\n negated: false,\n strict: false\n }),\n includes: new ComparatorExpression({\n comparator: \"includes\",\n negated: false,\n strict: false\n }),\n \"==\": new ComparatorExpression({\n comparator: \"equals\",\n negated: false,\n strict: false\n }),\n \"===\": new ComparatorExpression({\n comparator: \"equals\",\n negated: false,\n strict: true\n }),\n \"!=\": new ComparatorExpression({\n comparator: \"equals\",\n negated: true,\n strict: false\n }),\n \"!==\": new ComparatorExpression({\n comparator: \"equals\",\n negated: true,\n strict: true\n }),\n \">=\": new ComparatorExpression({\n comparator: \"greater-than-equals\",\n negated: false,\n strict: false\n }),\n \">==\": new ComparatorExpression({\n comparator: \"greater-than-equals\",\n negated: false,\n strict: true\n }),\n \"<=\": new ComparatorExpression({\n comparator: \"less-than-equals\",\n negated: false,\n strict: false\n }),\n \"<==\": new ComparatorExpression({\n comparator: \"less-than-equals\",\n negated: false,\n strict: true\n }),\n \">\": new ComparatorExpression({\n comparator: \"greater-than\",\n negated: false,\n strict: false\n }),\n \"<\": new ComparatorExpression({\n comparator: \"less-than\",\n negated: false,\n strict: false\n })\n} as const;\n\n// Optimized comparator lookup using Map\nconst COMPARATOR_MAP = new Map(Object.entries(comparators));\n\n// Error message constants\nconst ERROR_MESSAGES = {\n COMPARATOR_NOT_FOUND: (value: string) => `Cannot find comparator: ${value}`,\n PROPERTY_NOT_FOUND: (path: string) => `Error parsing query, could not find PropertyInfo for path: ${path}`,\n PARAM_PATH_NOT_FOUND: (value: string, params: any) => `Cannot find path in params for .where(). Make sure parameters are not used inline.\\r\\nPath: ${value}, Params: ${JSON.stringify(params)}`\n};\n\nexport const combineExpressions = (...expressions: Expression[]): Expression => {\n\n if (expressions.length === 0) {\n throw new Error(\"combineExpressions requires at least 1 expression\");\n }\n\n\n if (expressions.length === 1) {\n return expressions[0];\n }\n\n // Start with the first expression\n let result = expressions[0];\n\n // Loop through remaining expressions and combine them\n for (let i = 1; i < expressions.length; i++) {\n result = new OperatorExpression({\n operator: \"&&\",\n left: result,\n right: expressions[i]\n });\n }\n\n return result;\n};\n\nexport const toExpression = <T extends any, P extends any>(schema: CompiledSchema<any>, fn: Filter<T> | ParamsFilter<T, P>, params?: P) => {\n try {\n\n const stringifiedFunction = fn.toString();\n\n // Optimized string parsing\n const arrowIndex = stringifiedFunction.indexOf('=>');\n if (arrowIndex === -1) {\n throw new Error(\"Invalid Function\");\n }\n\n const parameterNames = stringifiedFunction.substring(0, arrowIndex).trim();\n let expression = stringifiedFunction.substring(arrowIndex + 2).trim();\n\n // Remove JavaScript comments from the expression\n expression = expression\n .replace(SINGLE_LINE_COMMENT_REGEX, '') // Remove single-line comments\n .replace(MULTI_LINE_COMMENT_REGEX, '') // Remove multi-line comments\n .replace(WHITESPACE_REGEX, ' ') // Normalize whitespace\n .trim();\n\n let parameterData: { name: string, data: P } | undefined = undefined;\n\n if (params != null) {\n let name: string;\n if (parameterNames.includes(\"[\") && parameterNames.includes(\"]\")) {\n // Optimized parameter name extraction\n const commaIndex = parameterNames.indexOf(\",\");\n if (commaIndex !== -1) {\n const bracketIndex = parameterNames.indexOf(\"]\", commaIndex);\n if (bracketIndex !== -1) {\n name = parameterNames.substring(commaIndex + 1, bracketIndex).trim();\n }\n }\n }\n\n parameterData = {\n name,\n data: params\n };\n }\n\n return parseExpressionToTree(schema, expression, parameterData);\n } catch (e) {\n console.warn(\"Error parsing expression\", e);\n return Expression.NOT_PARSABLE;\n }\n}\n\nconst parseExpressionToTree = <P extends any>(schema: CompiledSchema<any>, expression: string, params?: { name: string, data: P }) => {\n\n const parse = (exp: string): Expression => {\n // Remove any wrapping parentheses\n exp = exp.trim();\n if (exp.startsWith('(') && exp.endsWith(')')) {\n let depth = 0;\n let isWrapper = true;\n for (let i = 0; i < exp.length; i++) {\n const char = exp[i];\n if (char === '(') {\n depth++;\n } else if (char === ')') {\n depth--;\n if (depth < 0) break; // Early exit for invalid parentheses\n }\n // Early exit if we find a closing parenthesis that's not the last character\n if (depth === 0 && i !== exp.length - 1) {\n isWrapper = false;\n break; // Early exit\n }\n // Early exit if we go negative (invalid parentheses)\n if (depth < 0) {\n isWrapper = false;\n break;\n }\n }\n if (isWrapper) {\n exp = exp.slice(1, -1).trim();\n }\n }\n\n // Parse based on the operator precedence\n let operator: Operator | null = null, splitIndex = -1, depth = 0;\n\n for (let i = 0; i < exp.length - 1; i++) {\n const char = exp[i];\n if (char === '(') depth++;\n else if (char === ')') depth--;\n else if (depth === 0) {\n // Optimized operator detection using character comparison\n if (char === '&' && exp[i + 1] === '&') {\n operator = '&&';\n splitIndex = i;\n break; // AND takes precedence over OR\n } else if (operator === null && char === '|' && exp[i + 1] === '|') {\n operator = '||';\n splitIndex = i;\n }\n }\n }\n\n if (operator) {\n const left = exp.slice(0, splitIndex).trim();\n const right = exp.slice(splitIndex + 2).trim();\n\n return new OperatorExpression({\n operator,\n left: parse(left),\n right: parse(right)\n });\n }\n\n // If no operator, try to parse as a condition\n return parseCondition(schema, exp, params);\n }\n\n return parse(expression);\n}\n\nconst convertAndAssignValue = (valueExpression: unknown, propertyPathExpression: unknown) => {\n\n assertIsPropertyPathExpression(propertyPathExpression);\n\n assertIsValueExpression(valueExpression)\n\n const propertyType = propertyPathExpression.property.type;\n\n valueExpression.value = converters[propertyType](valueExpression.value);\n}\n\nconst converters: Record<SchemaTypes, (value: unknown) => unknown> = {\n Array: v => v,\n Boolean: v => v == null ? v : Boolean(v),\n Computed: v => v,\n Date: v => v,\n Definition: v => v,\n Function: v => v,\n Number: v => v == null ? v : Number(v),\n Object: v => v,\n String: v => v == null ? v : String(v)\n};\n\nconst isExpression = (value: unknown): value is Expression => {\n return typeof value === \"object\" && value !== null && \"type\" in value;\n}\n\nfunction assertIsExpression(value: unknown): asserts value is Expression {\n if (isExpression(value) === false) {\n throw new Error(\"Assertion Failed: Value is not a Expression\")\n }\n}\n\nfunction assertIsPropertyPathExpression(value: unknown): asserts value is PropertyExpression {\n\n assertIsExpression(value);\n\n if (!(\"property\" in value)) {\n throw new Error(\"Assertion Failed: Value is not a PropertyPathExpression\")\n }\n}\n\nfunction assertIsValueExpression(value: unknown): asserts value is ValueExpression {\n\n assertIsExpression(value);\n\n if (!(\"value\" in value)) {\n throw new Error(\"Assertion Failed: Value is not a ValueExpression\")\n }\n}\n\n// Helper function to detect if a string is a property path\nconst isPropertyPath = (value: string): boolean => {\n return value.includes('.') && value.match(/^[a-zA-Z0-9_.]+$/) !== null;\n};\n\n// Helper function to determine if we need to swap the operator for reversed comparisons\nconst getSwappedOperator = (operator: string): string => {\n const swapMap: Record<string, string> = {\n '>': '<',\n '<': '>',\n '>=': '<=',\n '<=': '>='\n };\n return swapMap[operator] || operator;\n};\n\nconst parseCondition = <P extends any>(schema: CompiledSchema<any>, expression: string, params?: { name: string, data: P }): Expression => {\n\n // Optimized string operations - single trim operation\n const trimmed = expression.trim();\n const isNegation = trimmed.startsWith('!');\n const finalExpression = isNegation ? trimmed.slice(1).trim() : trimmed;\n\n // Enhanced pattern matching for complex expressions\n const methodMatch = finalExpression.match(METHOD_REGEX);\n const transformMethodMatch = finalExpression.match(TRANSFORM_METHOD_REGEX);\n const equalityMatch = finalExpression.match(EQUALITY_REGEX);\n const comparisonMatch = finalExpression.match(COMPARISON_REGEX);\n\n if (methodMatch) {\n // Handle .startsWith or .endsWith\n const comparator = getComparator(methodMatch[2]);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n // Check if the left side is a parameter path\n const leftSide = methodMatch[1];\n const rightSide = methodMatch[3];\n\n if (params && leftSide.startsWith(params.name)) {\n // This is a parameter path on the left side (e.g., params.distinctPlayers.includes(entity.playerId))\n // For includes method, we need to swap left and right sides\n if (methodMatch[2] === 'includes') {\n comparator.left = getValue(leftSide, params);\n comparator.right = getProperty(schema, rightSide);\n } else {\n // For other methods, return NOT_PARSABLE for now\n return Expression.NOT_PARSABLE;\n }\n } else {\n // Normal case: property on left, value on right\n comparator.left = getProperty(schema, leftSide);\n comparator.right = getValue(rightSide, params);\n }\n\n // If the comparison is explicitly to false, mark it as negated\n if (methodMatch[6] === \"false\") {\n comparator.negated = true;\n }\n\n return comparator;\n }\n\n // Check for transformations on the value side (right side of comparison) - check this FIRST\n const valueTransformMatch = finalExpression.match(/([^=!<>]+?)\\s*(===|==|!==|!=)\\s*([^)]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)/);\n if (valueTransformMatch) {\n const comparator = getComparator(valueTransformMatch[2]);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n // Create the property expression for the left side (no transformer)\n const propertyExpression = getProperty(schema, valueTransformMatch[1].trim());\n\n // Create a ValueExpression for the right side with transformer\n const valueExpression = getValue(valueTransformMatch[3], params);\n\n // Set transformer and locale based on the method\n const method = valueTransformMatch[4];\n if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {\n valueExpression.transformer = 'to-lower-case';\n if (method === 'toLocaleLowerCase') {\n valueExpression.locale = 'en-US';\n }\n } else {\n valueExpression.transformer = 'to-upper-case';\n if (method === 'toLocaleUpperCase') {\n valueExpression.locale = 'en-US';\n }\n }\n\n comparator.left = propertyExpression;\n comparator.right = valueExpression;\n\n return comparator;\n }\n\n if (transformMethodMatch) {\n // Handle .toLowerCase or .toUpperCase on the property side\n const comparator = getComparator(transformMethodMatch[3]); // e.g., startsWith, endsWith, includes\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n // Create the property expression for the left side with transformer\n const propertyExpression = getProperty(schema, transformMethodMatch[1]);\n\n // Set transformer and locale based on the method\n const method = transformMethodMatch[2];\n if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {\n propertyExpression.transformer = 'to-lower-case';\n if (method === 'toLocaleLowerCase') {\n propertyExpression.locale = 'en-US'; // Default locale, could be extracted from method call\n }\n } else {\n propertyExpression.transformer = 'to-upper-case';\n if (method === 'toLocaleUpperCase') {\n propertyExpression.locale = 'en-US'; // Default locale, could be extracted from method call\n }\n }\n\n // Create a ValueExpression for the right side\n let valueExpression = getValue(transformMethodMatch[4], params);\n\n // Check if the value also has a transformation (but only if it's not already handled by value-side check)\n const valueTransformMatch = transformMethodMatch[4].match(/^([^)]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)$/);\n\n if (valueTransformMatch) {\n // Create a new ValueExpression with the base value and transformer\n valueExpression = new ValueExpression({\n value: valueTransformMatch[1].replace(/^[\"']|[\"']$/g, '') // Remove quotes\n });\n\n // Set transformer and locale based on the method\n const valueMethod = valueTransformMatch[2];\n if (valueMethod === 'toLowerCase' || valueMethod === 'toLocaleLowerCase') {\n valueExpression.transformer = 'to-lower-case';\n if (valueMethod === 'toLocaleLowerCase') {\n valueExpression.locale = 'en-US'; // Default locale\n }\n } else {\n valueExpression.transformer = 'to-upper-case';\n if (valueMethod === 'toLocaleUpperCase') {\n valueExpression.locale = 'en-US'; // Default locale\n }\n }\n }\n\n comparator.left = propertyExpression;\n comparator.right = valueExpression;\n\n // If the comparison is explicitly to false, mark it as negated\n if (transformMethodMatch[7] === \"false\") {\n comparator.negated = true;\n }\n\n return comparator;\n }\n\n if (equalityMatch) {\n const left = equalityMatch[1].trim();\n const operator = equalityMatch[2];\n const right = equalityMatch[3].trim();\n\n const leftIsProperty = isPropertyPath(left);\n const rightIsProperty = isPropertyPath(right);\n\n // Determine which side is the property and which is the value\n let propertySide: string, valueSide: string, finalOperator: string;\n\n if (leftIsProperty && !rightIsProperty) {\n // Normal case: property === value\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n } else if (!leftIsProperty && rightIsProperty) {\n // Reversed case: value === property\n propertySide = right;\n valueSide = left;\n finalOperator = operator;\n } else {\n // Both sides look like properties or neither does - assume left is property\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n }\n\n const comparator = getComparator(finalOperator);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n comparator.left = getProperty(schema, propertySide);\n comparator.right = getValue(valueSide, params);\n\n convertAndAssignValue(comparator.right, comparator.left);\n\n return comparator;\n }\n\n if (comparisonMatch) {\n const left = comparisonMatch[1].trim();\n const operator = comparisonMatch[2];\n const right = comparisonMatch[3].trim();\n\n const leftIsProperty = isPropertyPath(left);\n const rightIsProperty = isPropertyPath(right);\n\n // Determine which side is the property and which is the value\n let propertySide: string, valueSide: string, finalOperator: string;\n\n if (leftIsProperty && !rightIsProperty) {\n // Normal case: property > value\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n } else if (!leftIsProperty && rightIsProperty) {\n // Reversed case: value > property -> property < value\n propertySide = right;\n valueSide = left;\n finalOperator = getSwappedOperator(operator);\n } else {\n // Both sides look like properties or neither does - assume left is property\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n }\n\n const comparator = getComparator(finalOperator);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n comparator.left = getProperty(schema, propertySide);\n comparator.right = getValue(valueSide, params);\n\n convertAndAssignValue(comparator.right, comparator.left);\n\n return comparator;\n }\n\n // If we get here, the expression is too complex for the current parser\n // This is expected for complex real-world expressions\n throw new Error(`Unsupported expression format: ${finalExpression}`);\n}\n\nconst getComparator = (value: string): ComparatorExpression => {\n\n const comparator = COMPARATOR_MAP.get(value);\n\n if (comparator == null) {\n throw new Error(ERROR_MESSAGES.COMPARATOR_NOT_FOUND(value))\n }\n\n // Return a new instance to avoid modifying the cached one\n return new ComparatorExpression({\n comparator: comparator.comparator,\n negated: comparator.negated,\n strict: comparator.strict\n });\n}\n\nconst getValue = <P extends any>(value: string, params?: { name: string, data: P }): ValueExpression => {\n\n // Early return for string literals\n if (value.startsWith(\"\\'\") || value.startsWith(\"\\\"\")) {\n return new ValueExpression({\n value: value.replace(/\\\"|\\'/g, \"\")\n });\n }\n\n // Early return for null/undefined\n if (value === \"null\") {\n return new ValueExpression({ value: null });\n }\n\n if (value === \"undefined\" || value === \"void 0\") {\n return new ValueExpression({ value: undefined });\n }\n\n // Optimized number parsing with early return\n const numValue = +value;\n if (!isNaN(numValue) && isFinite(numValue)) {\n return new ValueExpression({ value: numValue });\n }\n\n // Handle parameter paths if params are provided\n if (params != null) {\n // Check if this is a parameter path (starts with params.name)\n if (value.startsWith(params.name)) {\n return new ValueExpression({\n value: getValueFromParams(value, params)\n });\n }\n\n // Check if this is a parameter path without the params prefix\n if (value.includes('.')) {\n // Try to extract the parameter path\n const paramMatch = value.match(PARAM_PATH_REGEX);\n if (paramMatch) {\n const potentialParamPath = paramMatch[1];\n try {\n const paramValue = getValueFromParams(`${params.name}.${potentialParamPath}`, params);\n return new ValueExpression({ value: paramValue });\n } catch (e) {\n // Not a parameter path, continue with normal parsing\n }\n }\n }\n }\n\n // Default case: return as-is\n return new ValueExpression({ value });\n}\n\nconst getValueFromParams = <P extends any>(value: string, params: { name: string, data: P }) => {\n\n const split = value.split('.');\n\n // Early exit for invalid paths\n if (split.length === 1) {\n throw new Error(ERROR_MESSAGES.PARAM_PATH_NOT_FOUND(value, params.data))\n }\n\n let result = params.data as any;\n\n // For nested params - start from index 1 to skip the params prefix\n for (let i = 1; i < split.length; i++) {\n const name = split[i];\n\n if (name in result) {\n result = result[name];\n continue;\n }\n\n throw new Error(ERROR_MESSAGES.PARAM_PATH_NOT_FOUND(value, params.data))\n }\n\n return result;\n}\n\nconst getProperty = (schema: CompiledSchema<any>, value: string): PropertyExpression => {\n // Optimized string splitting - only split if we have the expected pattern\n if (!value.includes('.')) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n const pathSplit = value.split(/[?!.]/g).slice(1);\n const pathString = pathSplit.join(\".\");\n\n // Early exit if no path found\n if (!pathString) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n const found = schema.properties.find(w => w.getAssignmentPath() == pathString);\n\n if (found == null) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n return new PropertyExpression({ property: found });\n}\n\n\n","import { QueryOptionExecutionTarget } from \"../plugins\";\nimport { PropertyInfo } from \"../schema\";\n\nexport type ParsedExpression = {\n expression: Expression;\n // Will be memory when trying to query on an untracked computed property or on a function\n executionTarget: QueryOptionExecutionTarget;\n}\n\n/**\n * The base class for all expression types.\n */\nexport abstract class Expression {\n /** The type of the expression. */\n abstract readonly type: ExpressionType;\n /** The left-hand side of the expression (if applicable). */\n left?: Expression;\n /** The right-hand side of the expression (if applicable). */\n right?: Expression;\n\n constructor(left?: Expression, right?: Expression) {\n this.left = left;\n this.right = right;\n }\n\n static get EMPTY() {\n return new EmptyExpression();\n }\n\n static get NOT_PARSABLE() {\n return new NotParsableExpression();\n }\n\n static isEmpty(expression: Expression) {\n return expression.type === \"empty\" || expression instanceof EmptyExpression;\n }\n\n static isNotParsable(expression: Expression) {\n return expression.type === \"not-parsable\" || expression instanceof NotParsableExpression;\n }\n}\n\nexport class EmptyExpression extends Expression {\n readonly type = \"empty\" as const;\n}\n\nexport class NotParsableExpression extends Expression {\n readonly type = \"not-parsable\" as const;\n}\n\n/**\n * A class representing a comparison operation (e.g., equals, greater-than).\n */\nexport class ComparatorExpression extends Expression {\n /** The type of the expression (always 'comparator'). */\n readonly type = \"comparator\" as const;\n /** The comparator operation (e.g., equals, greater-than). */\n comparator: Comparator;\n /** Whether the comparison is negated (e.g., not equals). */\n negated: boolean;\n /** Whether the comparison is strict (type-sensitive). */\n strict: boolean;\n\n constructor(\n options: {\n comparator: Comparator,\n negated: boolean,\n strict: boolean,\n left?: Expression,\n right?: Expression\n }\n ) {\n super(options.left, options.right);\n this.comparator = options.comparator;\n this.negated = options.negated;\n this.strict = options.strict;\n }\n}\n\n/**\n * A class representing a logical operator (e.g., &&, ||).\n */\nexport class OperatorExpression extends Expression {\n /** The type of the expression (always 'operator'). */\n readonly type = \"operator\" as const;\n /** The logical operator. */\n operator: Operator;\n\n constructor(options: { operator: Operator, left?: Expression, right?: Expression }) {\n super(options.left, options.right);\n this.operator = options.operator;\n }\n}\n\n/**\n * A class representing a property path.\n */\nexport class PropertyExpression extends Expression {\n /** The type of the expression (always 'property'). */\n readonly type = \"property\" as const;\n /** The property info for the path. */\n property: PropertyInfo<any>;\n transformer: Transformer | null = null;\n locale: string | null = null;\n\n constructor(options: { property: PropertyInfo<any> }) {\n super();\n this.property = options.property;\n }\n}\n\n/**\n * A class representing a literal value.\n */\nexport class ValueExpression extends Expression {\n /** The type of the expression (always 'value'). */\n readonly type = \"value\" as const;\n /** The literal value. */\n value: unknown;\n\n transformer: Transformer | null = null;\n locale: string | null = null;\n\n constructor(options: {\n value: unknown\n }) {\n super();\n this.value = options.value;\n }\n}\n\n\n/**\n * The set of possible expression types.\n */\nexport type ExpressionType = \"operator\" | \"comparator\" | \"property\" | \"value\" | \"empty\" | \"not-parsable\";\n\n/**\n * Supported value transformations that can be applied to values.\n */\nexport type Transformer = \"to-lower-case\" | \"to-upper-case\";\n\n/**\n * Supported comparator operations for expressions.\n */\nexport type Comparator =\n | \"equals\"\n | \"starts-with\"\n | \"includes\"\n | \"ends-with\"\n | \"greater-than\"\n | \"greater-than-equals\"\n | \"less-than\"\n | \"less-than-equals\";\n\n/**\n * Supported logical operators for expressions.\n */\nexport type Operator = \"&&\" | \"||\";\n\n/**\n * A function that filters a value of type T and returns a boolean.\n */\nexport type Filter<T extends any> = (value: T) => boolean;\n\n/**\n * A function that filters a value of type T with additional parameters P.\n */\nexport type ParamsFilter<T extends any, P> = (payload: [T, P]) => boolean;\n\n/**\n * A filter that can be either a simple filter or a parameterized filter.\n */\nexport type CompositeFilter<T extends any, P = never> = Filter<T> | ParamsFilter<T, P>;\n\n/**\n * An object that can be filtered using a composite filter and optional parameters.\n */\nexport type Filterable<T extends any, P = any> = {\n /** The filter function. */\n filter: CompositeFilter<T, P>;\n /** Optional parameters for the filter. */\n params?: P;\n}","import { PropertyInfo } from \"../schema\";\nimport { Expression, PropertyExpression } from \"./types\";\n\n/**\n * Extracts all properties referenced in an expression\n * @param expression The expression to analyze\n * @returns Array of PropertyInfo objects referenced in the expression\n */\nexport function getProperties(expression: Expression): PropertyInfo<any>[] {\n const properties: PropertyInfo<any>[] = [];\n\n function traverse(expr: Expression) {\n // If this is a property expression, add it to our collection\n if (expr.type === \"property\") {\n properties.push((expr as PropertyExpression).property);\n }\n\n // Traverse left and right expressions if they exist\n if (expr.left) {\n traverse(expr.left);\n }\n if (expr.right) {\n traverse(expr.right);\n }\n }\n\n traverse(expression);\n return properties;\n}\n\nexport function isPropertyExpression(expression: Expression): expression is PropertyExpression {\n return expression.type === \"property\";\n}\n\nexport function forEach(expression: Expression, callback: (expression: Expression) => boolean) {\n function traverse(expr: Expression): boolean {\n // Call the callback for this expression\n // If callback returns false, stop traversing\n if (!callback(expr)) {\n return false;\n }\n\n // Traverse left and right expressions if they exist\n if (expr.left) {\n if (!traverse(expr.left)) {\n return false;\n }\n }\n if (expr.right) {\n if (!traverse(expr.right)) {\n return false;\n }\n }\n\n return true;\n }\n\n traverse(expression);\n}","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './parser';\nexport * from './types';\nexport * from './utils';"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { CompiledSchema } from "../schema";
2
+ import { Expression, Filter, ParamsFilter } from "./types";
3
+ export declare const combineExpressions: (...expressions: Expression[]) => Expression;
4
+ export declare const toExpression: <T extends any, P extends any>(schema: CompiledSchema<any>, fn: Filter<T> | ParamsFilter<T, P>, params?: P) => Expression;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,178 +1,121 @@
1
1
  import { QueryOptionExecutionTarget } from "../plugins";
2
2
  import { PropertyInfo } from "../schema";
3
-
4
3
  export type ParsedExpression = {
5
4
  expression: Expression;
6
- // Will be memory when trying to query on an untracked computed property or on a function
7
5
  executionTarget: QueryOptionExecutionTarget;
8
- }
9
-
6
+ };
10
7
  /**
11
8
  * The base class for all expression types.
12
9
  */
13
- export abstract class Expression {
10
+ export declare abstract class Expression {
14
11
  /** The type of the expression. */
15
12
  abstract readonly type: ExpressionType;
16
13
  /** The left-hand side of the expression (if applicable). */
17
14
  left?: Expression;
18
15
  /** The right-hand side of the expression (if applicable). */
19
16
  right?: Expression;
20
-
21
- constructor(left?: Expression, right?: Expression) {
22
- this.left = left;
23
- this.right = right;
24
- }
25
-
26
- static get EMPTY() {
27
- return new EmptyExpression();
28
- }
29
-
30
- static get NOT_PARSABLE() {
31
- return new NotParsableExpression();
32
- }
33
-
34
- static isEmpty(expression: Expression) {
35
- return expression.type === "empty" || expression instanceof EmptyExpression;
36
- }
37
-
38
- static isNotParsable(expression: Expression) {
39
- return expression.type === "not-parsable" || expression instanceof NotParsableExpression;
40
- }
17
+ constructor(left?: Expression, right?: Expression);
18
+ static get EMPTY(): EmptyExpression;
19
+ static get NOT_PARSABLE(): NotParsableExpression;
20
+ static isEmpty(expression: Expression): boolean;
21
+ static isNotParsable(expression: Expression): boolean;
41
22
  }
42
-
43
- export class EmptyExpression extends Expression {
44
- readonly type = "empty" as const;
23
+ export declare class EmptyExpression extends Expression {
24
+ readonly type: "empty";
45
25
  }
46
-
47
- export class NotParsableExpression extends Expression {
48
- readonly type = "not-parsable" as const;
26
+ export declare class NotParsableExpression extends Expression {
27
+ readonly type: "not-parsable";
49
28
  }
50
-
51
29
  /**
52
30
  * A class representing a comparison operation (e.g., equals, greater-than).
53
31
  */
54
- export class ComparatorExpression extends Expression {
32
+ export declare class ComparatorExpression extends Expression {
55
33
  /** The type of the expression (always 'comparator'). */
56
- readonly type = "comparator" as const;
34
+ readonly type: "comparator";
57
35
  /** The comparator operation (e.g., equals, greater-than). */
58
36
  comparator: Comparator;
59
37
  /** Whether the comparison is negated (e.g., not equals). */
60
38
  negated: boolean;
61
39
  /** Whether the comparison is strict (type-sensitive). */
62
40
  strict: boolean;
63
-
64
- constructor(
65
- options: {
66
- comparator: Comparator,
67
- negated: boolean,
68
- strict: boolean,
69
- left?: Expression,
70
- right?: Expression
71
- }
72
- ) {
73
- super(options.left, options.right);
74
- this.comparator = options.comparator;
75
- this.negated = options.negated;
76
- this.strict = options.strict;
77
- }
41
+ constructor(options: {
42
+ comparator: Comparator;
43
+ negated: boolean;
44
+ strict: boolean;
45
+ left?: Expression;
46
+ right?: Expression;
47
+ });
78
48
  }
79
-
80
49
  /**
81
50
  * A class representing a logical operator (e.g., &&, ||).
82
51
  */
83
- export class OperatorExpression extends Expression {
52
+ export declare class OperatorExpression extends Expression {
84
53
  /** The type of the expression (always 'operator'). */
85
- readonly type = "operator" as const;
54
+ readonly type: "operator";
86
55
  /** The logical operator. */
87
56
  operator: Operator;
88
-
89
- constructor(options: { operator: Operator, left?: Expression, right?: Expression }) {
90
- super(options.left, options.right);
91
- this.operator = options.operator;
92
- }
57
+ constructor(options: {
58
+ operator: Operator;
59
+ left?: Expression;
60
+ right?: Expression;
61
+ });
93
62
  }
94
-
95
63
  /**
96
64
  * A class representing a property path.
97
65
  */
98
- export class PropertyExpression extends Expression {
66
+ export declare class PropertyExpression extends Expression {
99
67
  /** The type of the expression (always 'property'). */
100
- readonly type = "property" as const;
68
+ readonly type: "property";
101
69
  /** The property info for the path. */
102
70
  property: PropertyInfo<any>;
103
- transformer: Transformer | null = null;
104
- locale: string | null = null;
105
-
106
- constructor(options: { property: PropertyInfo<any> }) {
107
- super();
108
- this.property = options.property;
109
- }
71
+ transformer: Transformer | null;
72
+ locale: string | null;
73
+ constructor(options: {
74
+ property: PropertyInfo<any>;
75
+ });
110
76
  }
111
-
112
77
  /**
113
78
  * A class representing a literal value.
114
79
  */
115
- export class ValueExpression extends Expression {
80
+ export declare class ValueExpression extends Expression {
116
81
  /** The type of the expression (always 'value'). */
117
- readonly type = "value" as const;
82
+ readonly type: "value";
118
83
  /** The literal value. */
119
84
  value: unknown;
120
-
121
- transformer: Transformer | null = null;
122
- locale: string | null = null;
123
-
85
+ transformer: Transformer | null;
86
+ locale: string | null;
124
87
  constructor(options: {
125
- value: unknown
126
- }) {
127
- super();
128
- this.value = options.value;
129
- }
88
+ value: unknown;
89
+ });
130
90
  }
131
-
132
-
133
91
  /**
134
92
  * The set of possible expression types.
135
93
  */
136
94
  export type ExpressionType = "operator" | "comparator" | "property" | "value" | "empty" | "not-parsable";
137
-
138
95
  /**
139
96
  * Supported value transformations that can be applied to values.
140
97
  */
141
98
  export type Transformer = "to-lower-case" | "to-upper-case";
142
-
143
99
  /**
144
100
  * Supported comparator operations for expressions.
145
101
  */
146
- export type Comparator =
147
- | "equals"
148
- | "starts-with"
149
- | "includes"
150
- | "ends-with"
151
- | "greater-than"
152
- | "greater-than-equals"
153
- | "less-than"
154
- | "less-than-equals";
155
-
102
+ export type Comparator = "equals" | "starts-with" | "includes" | "ends-with" | "greater-than" | "greater-than-equals" | "less-than" | "less-than-equals";
156
103
  /**
157
104
  * Supported logical operators for expressions.
158
105
  */
159
106
  export type Operator = "&&" | "||";
160
-
161
107
  /**
162
108
  * A function that filters a value of type T and returns a boolean.
163
109
  */
164
110
  export type Filter<T extends any> = (value: T) => boolean;
165
-
166
111
  /**
167
112
  * A function that filters a value of type T with additional parameters P.
168
113
  */
169
114
  export type ParamsFilter<T extends any, P> = (payload: [T, P]) => boolean;
170
-
171
115
  /**
172
116
  * A filter that can be either a simple filter or a parameterized filter.
173
117
  */
174
118
  export type CompositeFilter<T extends any, P = never> = Filter<T> | ParamsFilter<T, P>;
175
-
176
119
  /**
177
120
  * An object that can be filtered using a composite filter and optional parameters.
178
121
  */
@@ -181,4 +124,4 @@ export type Filterable<T extends any, P = any> = {
181
124
  filter: CompositeFilter<T, P>;
182
125
  /** Optional parameters for the filter. */
183
126
  params?: P;
184
- }
127
+ };
@@ -0,0 +1,10 @@
1
+ import { PropertyInfo } from "../schema";
2
+ import { Expression, PropertyExpression } from "./types";
3
+ /**
4
+ * Extracts all properties referenced in an expression
5
+ * @param expression The expression to analyze
6
+ * @returns Array of PropertyInfo objects referenced in the expression
7
+ */
8
+ export declare function getProperties(expression: Expression): PropertyInfo<any>[];
9
+ export declare function isPropertyExpression(expression: Expression): expression is PropertyExpression;
10
+ export declare function forEach(expression: Expression, callback: (expression: Expression) => boolean): void;
@@ -0,0 +1 @@
1
+ export {};
@@ -9,4 +9,4 @@ export * from './plugins';
9
9
  export * from './results';
10
10
  export * from './schema';
11
11
  export * from './types';
12
- export * from './utilities';
12
+ export * from './utilities';