@deterministic-code/datasources 0.1.0 → 0.1.2

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 (715) hide show
  1. package/dist/ArrayReader.d.ts +12 -0
  2. package/dist/ArrayReader.js +27 -0
  3. package/dist/BatchCommandIBulkWriteStrategy.d.ts +33 -0
  4. package/dist/BatchCommandIBulkWriteStrategy.js +150 -0
  5. package/dist/BuiltRepository.d.ts +16 -0
  6. package/dist/BuiltRepository.js +1 -0
  7. package/dist/BulkCRUDRepository.d.ts +17 -0
  8. package/dist/BulkCRUDRepository.js +48 -0
  9. package/dist/BulkCommand.d.ts +5 -0
  10. package/dist/BulkCommand.js +1 -0
  11. package/dist/BulkWriteEnrichment.d.ts +4 -0
  12. package/dist/BulkWriteEnrichment.js +11 -0
  13. package/dist/CRUDRepository.d.ts +40 -0
  14. package/dist/CRUDRepository.js +182 -0
  15. package/dist/CRUDRepositoryBuilder.d.ts +19 -0
  16. package/dist/CRUDRepositoryBuilder.js +30 -0
  17. package/{src/CRUDRepositoryOptions.ts → dist/CRUDRepositoryOptions.d.ts} +5 -6
  18. package/dist/CRUDRepositoryOptions.js +1 -0
  19. package/dist/CRUDRepositoryStatements.d.ts +17 -0
  20. package/dist/CRUDRepositoryStatements.js +19 -0
  21. package/dist/CascadeDeleteEnrichmentStrategy.d.ts +7 -0
  22. package/dist/CascadeDeleteEnrichmentStrategy.js +28 -0
  23. package/dist/CascadeDeleteUpdateEnrichmentStrategy.d.ts +8 -0
  24. package/dist/CascadeDeleteUpdateEnrichmentStrategy.js +25 -0
  25. package/dist/CommandMiddlewareHost.d.ts +22 -0
  26. package/dist/CommandMiddlewareHost.js +73 -0
  27. package/dist/ConsoleCommandMiddleware.d.ts +14 -0
  28. package/dist/ConsoleCommandMiddleware.js +45 -0
  29. package/dist/CreateEnrichmentStrategy.d.ts +14 -0
  30. package/dist/CreateEnrichmentStrategy.js +64 -0
  31. package/dist/Datasource.d.ts +30 -0
  32. package/dist/Datasource.js +98 -0
  33. package/dist/DatasourceError.d.ts +3 -0
  34. package/dist/DatasourceError.js +6 -0
  35. package/dist/DatasourceFactory.d.ts +12 -0
  36. package/dist/DatasourceFactory.js +76 -0
  37. package/dist/DatasourceOptions.js +1 -0
  38. package/dist/DatasourceUrl.d.ts +12 -0
  39. package/dist/DatasourceUrl.js +28 -0
  40. package/dist/DatasourceUrlParser.d.ts +4 -0
  41. package/dist/DatasourceUrlParser.js +168 -0
  42. package/dist/DefaultCreateEnrichmentStrategy.d.ts +7 -0
  43. package/dist/DefaultCreateEnrichmentStrategy.js +18 -0
  44. package/dist/DefaultReadonlyEnrichmentStrategy.d.ts +19 -0
  45. package/dist/DefaultReadonlyEnrichmentStrategy.js +107 -0
  46. package/dist/DefaultUpdateEnrichmentStrategy.d.ts +7 -0
  47. package/dist/DefaultUpdateEnrichmentStrategy.js +41 -0
  48. package/dist/DefaultWriteEnrichmentStrategy.d.ts +21 -0
  49. package/dist/DefaultWriteEnrichmentStrategy.js +135 -0
  50. package/dist/DeleteEnrichmentStrategy.d.ts +11 -0
  51. package/dist/DeleteEnrichmentStrategy.js +28 -0
  52. package/dist/DriverLoader.d.ts +5 -0
  53. package/dist/DriverLoader.js +87 -0
  54. package/dist/Enrichment.d.ts +13 -0
  55. package/dist/Enrichment.js +1 -0
  56. package/dist/EnrichmentPropertyType.d.ts +7 -0
  57. package/dist/EnrichmentPropertyType.js +6 -0
  58. package/dist/ExpectConsoleMiddleware.d.ts +15 -0
  59. package/dist/ExpectConsoleMiddleware.js +30 -0
  60. package/dist/FirstResultReader.d.ts +19 -0
  61. package/dist/FirstResultReader.js +43 -0
  62. package/dist/HashsetOptimizedReadonlyEnrichmentStrategy.d.ts +9 -0
  63. package/dist/HashsetOptimizedReadonlyEnrichmentStrategy.js +58 -0
  64. package/dist/IBulkWriteStrategy.d.ts +12 -0
  65. package/dist/IBulkWriteStrategy.js +1 -0
  66. package/dist/ICRUDRepository.d.ts +12 -0
  67. package/dist/ICRUDRepository.js +1 -0
  68. package/dist/ICRUDRepositoryFactory.d.ts +7 -0
  69. package/dist/ICRUDRepositoryFactory.js +1 -0
  70. package/dist/ICommand.d.ts +20 -0
  71. package/dist/ICommand.js +6 -0
  72. package/dist/ICommandMiddleware.d.ts +12 -0
  73. package/dist/ICommandMiddleware.js +1 -0
  74. package/dist/IConnection.d.ts +12 -0
  75. package/dist/IConnection.js +1 -0
  76. package/dist/IDatasource.d.ts +18 -0
  77. package/dist/IDatasource.js +1 -0
  78. package/dist/IDatasourceFactory.d.ts +5 -0
  79. package/dist/IDatasourceFactory.js +1 -0
  80. package/dist/IDriver.d.ts +23 -0
  81. package/dist/IDriver.js +1 -0
  82. package/dist/IEnriched.d.ts +6 -0
  83. package/dist/IEnriched.js +1 -0
  84. package/dist/IReader.d.ts +8 -0
  85. package/dist/IReader.js +1 -0
  86. package/dist/IReadonlyEnrichmentStrategy.d.ts +7 -0
  87. package/dist/IReadonlyEnrichmentStrategy.js +1 -0
  88. package/dist/IReadonlyRepository.d.ts +11 -0
  89. package/dist/IReadonlyRepository.js +1 -0
  90. package/dist/IRepository.d.ts +4 -0
  91. package/dist/IRepository.js +1 -0
  92. package/dist/IRepositoryFactory.d.ts +7 -0
  93. package/dist/IRepositoryFactory.js +1 -0
  94. package/{src/IRepositoryTree.ts → dist/IRepositoryTree.d.ts} +2 -3
  95. package/dist/IRepositoryTree.js +1 -0
  96. package/dist/IRepositoryTreeNode.d.ts +7 -0
  97. package/dist/IRepositoryTreeNode.js +1 -0
  98. package/dist/ITransaction.d.ts +8 -0
  99. package/dist/ITransaction.js +1 -0
  100. package/dist/IUnitOfWork.d.ts +5 -0
  101. package/dist/IUnitOfWork.js +1 -0
  102. package/dist/IWriteEnrichmentStrategy.d.ts +7 -0
  103. package/dist/IWriteEnrichmentStrategy.js +1 -0
  104. package/dist/Information.d.ts +5 -0
  105. package/dist/Information.js +1 -0
  106. package/dist/IsolationLevel.d.ts +7 -0
  107. package/dist/IsolationLevel.js +6 -0
  108. package/dist/LazyWriteEnrichmentStrategy.d.ts +4 -0
  109. package/dist/LazyWriteEnrichmentStrategy.js +4 -0
  110. package/dist/NestedToObjectEnrichmentStrategy.d.ts +10 -0
  111. package/dist/NestedToObjectEnrichmentStrategy.js +20 -0
  112. package/dist/Parameter.d.ts +7 -0
  113. package/dist/Parameter.js +1 -0
  114. package/dist/ParameterDirection.d.ts +7 -0
  115. package/dist/ParameterDirection.js +6 -0
  116. package/dist/ProviderCatalog.d.ts +7 -0
  117. package/dist/ProviderCatalog.js +23 -0
  118. package/dist/ProviderNotImplementedError.d.ts +4 -0
  119. package/dist/ProviderNotImplementedError.js +8 -0
  120. package/dist/ProviderNotInstalledError.d.ts +4 -0
  121. package/dist/ProviderNotInstalledError.js +8 -0
  122. package/dist/ReadonlyRepository.d.ts +59 -0
  123. package/dist/ReadonlyRepository.js +150 -0
  124. package/dist/ReadonlyRepositoryBuilder.d.ts +12 -0
  125. package/dist/ReadonlyRepositoryBuilder.js +43 -0
  126. package/dist/ReadonlyRepositoryMappingOptions.d.ts +14 -0
  127. package/dist/ReadonlyRepositoryMappingOptions.js +1 -0
  128. package/dist/ReadonlyRepositoryStatements.d.ts +8 -0
  129. package/dist/ReadonlyRepositoryStatements.js +10 -0
  130. package/dist/RepositoryAccess.d.ts +11 -0
  131. package/dist/RepositoryAccess.js +12 -0
  132. package/dist/RepositoryFactory.d.ts +23 -0
  133. package/dist/RepositoryFactory.js +71 -0
  134. package/dist/RepositoryNotRegisteredError.d.ts +4 -0
  135. package/dist/RepositoryNotRegisteredError.js +8 -0
  136. package/dist/RepositoryTree.d.ts +6 -0
  137. package/dist/RepositoryTree.js +6 -0
  138. package/dist/RepositoryTreeNode.d.ts +9 -0
  139. package/dist/RepositoryTreeNode.js +12 -0
  140. package/dist/Response.d.ts +7 -0
  141. package/dist/Response.js +13 -0
  142. package/dist/Row.d.ts +2 -0
  143. package/dist/Row.js +1 -0
  144. package/dist/SingleCommandIBulkWriteStrategy.d.ts +11 -0
  145. package/dist/SingleCommandIBulkWriteStrategy.js +21 -0
  146. package/dist/StatementMappers.d.ts +16 -0
  147. package/dist/StatementMappers.js +88 -0
  148. package/dist/StoredEnrichment.d.ts +11 -0
  149. package/dist/StoredEnrichment.js +12 -0
  150. package/dist/StoredProcedureBulkWriteStrategy.d.ts +27 -0
  151. package/dist/StoredProcedureBulkWriteStrategy.js +143 -0
  152. package/dist/StreamingReader.d.ts +16 -0
  153. package/dist/StreamingReader.js +53 -0
  154. package/dist/UnitOfWorkTransaction.d.ts +12 -0
  155. package/dist/UnitOfWorkTransaction.js +51 -0
  156. package/dist/UpdateEnrichmentStrategy.d.ts +18 -0
  157. package/dist/UpdateEnrichmentStrategy.js +61 -0
  158. package/dist/WriteMode.js +1 -0
  159. package/dist/builders/Field.d.ts +5 -0
  160. package/dist/builders/Field.js +1 -0
  161. package/dist/builders/Scalar.js +1 -0
  162. package/dist/builders/index.d.ts +2 -0
  163. package/dist/builders/index.js +1 -0
  164. package/dist/collectAsync.d.ts +1 -0
  165. package/dist/collectAsync.js +7 -0
  166. package/dist/converters/Cell.d.ts +2 -0
  167. package/dist/converters/Cell.js +1 -0
  168. package/dist/converters/ChangeCasingConverter.d.ts +7 -0
  169. package/dist/converters/ChangeCasingConverter.js +46 -0
  170. package/dist/converters/Constructable.js +1 -0
  171. package/dist/converters/DefaultValueConverter.d.ts +25 -0
  172. package/dist/converters/DefaultValueConverter.js +183 -0
  173. package/dist/converters/DefaultValueOptions.d.ts +9 -0
  174. package/dist/converters/DefaultValueOptions.js +1 -0
  175. package/dist/converters/DeterministicTypeConverter.d.ts +11 -0
  176. package/dist/converters/DeterministicTypeConverter.js +74 -0
  177. package/dist/converters/IMapping.d.ts +4 -0
  178. package/dist/converters/IMapping.js +1 -0
  179. package/dist/converters/MetaDataRowTypeConverter.d.ts +14 -0
  180. package/dist/converters/MetaDataRowTypeConverter.js +71 -0
  181. package/dist/converters/PluralizerConverter.d.ts +4 -0
  182. package/dist/converters/PluralizerConverter.js +54 -0
  183. package/dist/converters/RegexConverter.d.ts +7 -0
  184. package/dist/converters/RegexConverter.js +12 -0
  185. package/dist/converters/ReplaceConverter.d.ts +7 -0
  186. package/dist/converters/ReplaceConverter.js +10 -0
  187. package/dist/converters/RowTypeConverter.d.ts +10 -0
  188. package/dist/converters/RowTypeConverter.js +25 -0
  189. package/dist/converters/SpecField.d.ts +7 -0
  190. package/dist/converters/SpecField.js +1 -0
  191. package/dist/converters/SpecFieldRules.d.ts +17 -0
  192. package/dist/converters/SpecFieldRules.js +1 -0
  193. package/dist/converters/ToLowerCaseConverter.d.ts +4 -0
  194. package/dist/converters/ToLowerCaseConverter.js +4 -0
  195. package/dist/converters/ToUpperCaseConverter.d.ts +4 -0
  196. package/dist/converters/ToUpperCaseConverter.js +4 -0
  197. package/dist/converters/TypeConverter.d.ts +5 -0
  198. package/dist/converters/TypeConverter.js +2 -0
  199. package/dist/createCRUDRepositoryOptions.d.ts +7 -0
  200. package/dist/createCRUDRepositoryOptions.js +7 -0
  201. package/dist/createReadonlyRepositoryMappingOptions.d.ts +6 -0
  202. package/dist/createReadonlyRepositoryMappingOptions.js +16 -0
  203. package/dist/dotEnv.d.ts +5 -0
  204. package/dist/dotEnv.js +9 -0
  205. package/dist/index.d.ts +126 -0
  206. package/dist/index.js +83 -0
  207. package/dist/mappers/ChangeCasingMapper.d.ts +9 -0
  208. package/dist/mappers/ChangeCasingMapper.js +11 -0
  209. package/dist/mappers/DictionaryMapper.d.ts +8 -0
  210. package/dist/mappers/DictionaryMapper.js +13 -0
  211. package/dist/mappers/FlatToNestedMapper.d.ts +20 -0
  212. package/dist/mappers/FlatToNestedMapper.js +105 -0
  213. package/dist/mappers/IFlatToNestedMapper.d.ts +6 -0
  214. package/dist/mappers/IFlatToNestedMapper.js +1 -0
  215. package/dist/mappers/IMapper.d.ts +4 -0
  216. package/dist/mappers/IMapper.js +1 -0
  217. package/dist/mappers/IdentityMapper.d.ts +5 -0
  218. package/dist/mappers/IdentityMapper.js +4 -0
  219. package/dist/mappers/PluralizerMapper.d.ts +6 -0
  220. package/dist/mappers/PluralizerMapper.js +6 -0
  221. package/dist/mappers/RowTypeMapper.d.ts +6 -0
  222. package/dist/mappers/RowTypeMapper.js +7 -0
  223. package/dist/mappers/TransformConverterMapper.d.ts +5 -0
  224. package/dist/mappers/TransformConverterMapper.js +6 -0
  225. package/dist/mappers/TransformMapper.d.ts +6 -0
  226. package/dist/mappers/TransformMapper.js +8 -0
  227. package/dist/mappers/TypeMap.d.ts +8 -0
  228. package/dist/mappers/TypeMap.js +1 -0
  229. package/dist/mappers/TypeMapGroup.d.ts +5 -0
  230. package/dist/mappers/TypeMapGroup.js +1 -0
  231. package/dist/mocks/index.d.ts +9 -0
  232. package/dist/mocks/index.js +9 -0
  233. package/dist/mocks/mock-command.d.ts +28 -0
  234. package/dist/mocks/mock-command.js +42 -0
  235. package/dist/mocks/mock-connection.d.ts +22 -0
  236. package/dist/mocks/mock-connection.js +48 -0
  237. package/dist/mocks/mock-datasource.d.ts +24 -0
  238. package/dist/mocks/mock-datasource.js +44 -0
  239. package/dist/mocks/mock-driver.d.ts +15 -0
  240. package/dist/mocks/mock-driver.js +15 -0
  241. package/dist/mocks/mock-reader.d.ts +14 -0
  242. package/dist/mocks/mock-reader.js +33 -0
  243. package/dist/mocks/mock-repository.d.ts +42 -0
  244. package/dist/mocks/mock-repository.js +61 -0
  245. package/dist/mocks/mock-select-statement.d.ts +10 -0
  246. package/dist/mocks/mock-select-statement.js +13 -0
  247. package/dist/mocks/mock-transaction.d.ts +16 -0
  248. package/dist/mocks/mock-transaction.js +28 -0
  249. package/dist/mocks/mock-where.d.ts +8 -0
  250. package/dist/mocks/mock-where.js +11 -0
  251. package/dist/parametersToRecord.d.ts +2 -0
  252. package/dist/parametersToRecord.js +9 -0
  253. package/dist/readerToAsyncIterable.d.ts +2 -0
  254. package/dist/readerToAsyncIterable.js +7 -0
  255. package/dist/splitStatements.d.ts +1 -0
  256. package/dist/splitStatements.js +106 -0
  257. package/dist/statementParameters.d.ts +1 -0
  258. package/dist/statementParameters.js +25 -0
  259. package/dist/statementUsesParameter.d.ts +1 -0
  260. package/dist/statementUsesParameter.js +2 -0
  261. package/dist/statements/Aggregate.d.ts +6 -0
  262. package/dist/statements/Aggregate.js +7 -0
  263. package/dist/statements/AlterTableStatement.d.ts +33 -0
  264. package/dist/statements/AlterTableStatement.js +9 -0
  265. package/dist/statements/AlterTableStatementTextRenderer.d.ts +9 -0
  266. package/dist/statements/AlterTableStatementTextRenderer.js +33 -0
  267. package/dist/statements/ArrayExpression.d.ts +5 -0
  268. package/dist/statements/ArrayExpression.js +6 -0
  269. package/dist/statements/BulkDeleteStatement.d.ts +11 -0
  270. package/dist/statements/BulkDeleteStatement.js +15 -0
  271. package/dist/statements/BulkDeleteStatementTextRenderer.d.ts +4 -0
  272. package/dist/statements/BulkDeleteStatementTextRenderer.js +15 -0
  273. package/dist/statements/BulkInsertStatement.d.ts +12 -0
  274. package/dist/statements/BulkInsertStatement.js +29 -0
  275. package/dist/statements/BulkInsertStatementTextRenderer.d.ts +4 -0
  276. package/dist/statements/BulkInsertStatementTextRenderer.js +6 -0
  277. package/dist/statements/BulkUpdateStatement.d.ts +16 -0
  278. package/dist/statements/BulkUpdateStatement.js +17 -0
  279. package/dist/statements/BulkUpdateStatementTextRenderer.d.ts +8 -0
  280. package/dist/statements/BulkUpdateStatementTextRenderer.js +20 -0
  281. package/dist/statements/CheckConstraint.d.ts +7 -0
  282. package/dist/statements/CheckConstraint.js +9 -0
  283. package/dist/statements/Cmp.d.ts +9 -0
  284. package/dist/statements/Cmp.js +7 -0
  285. package/dist/statements/Column.d.ts +9 -0
  286. package/dist/statements/Column.js +1 -0
  287. package/dist/statements/ColumnDefault.d.ts +5 -0
  288. package/dist/statements/ColumnDefault.js +8 -0
  289. package/dist/statements/Condition.d.ts +3 -0
  290. package/dist/statements/Condition.js +2 -0
  291. package/dist/statements/ConditionRenderer.d.ts +12 -0
  292. package/dist/statements/ConditionRenderer.js +11 -0
  293. package/dist/statements/CreateBulkCreateStoredProcedureStatement.d.ts +13 -0
  294. package/dist/statements/CreateBulkCreateStoredProcedureStatement.js +17 -0
  295. package/dist/statements/CreateBulkCreateStoredProcedureStatementTextRenderer.d.ts +4 -0
  296. package/dist/statements/CreateBulkCreateStoredProcedureStatementTextRenderer.js +5 -0
  297. package/dist/statements/CreateBulkDeleteStoredProcedureStatement.d.ts +13 -0
  298. package/dist/statements/CreateBulkDeleteStoredProcedureStatement.js +17 -0
  299. package/dist/statements/CreateBulkDeleteStoredProcedureStatementTextRenderer.d.ts +4 -0
  300. package/dist/statements/CreateBulkDeleteStoredProcedureStatementTextRenderer.js +5 -0
  301. package/dist/statements/CreateBulkUpdateStoredProcedureStatement.d.ts +13 -0
  302. package/dist/statements/CreateBulkUpdateStoredProcedureStatement.js +17 -0
  303. package/dist/statements/CreateBulkUpdateStoredProcedureStatementTextRenderer.d.ts +4 -0
  304. package/dist/statements/CreateBulkUpdateStoredProcedureStatementTextRenderer.js +5 -0
  305. package/dist/statements/CreateCreateStoredProcedureStatement.d.ts +16 -0
  306. package/dist/statements/CreateCreateStoredProcedureStatement.js +23 -0
  307. package/dist/statements/CreateCreateStoredProcedureStatementTextRenderer.d.ts +4 -0
  308. package/dist/statements/CreateCreateStoredProcedureStatementTextRenderer.js +5 -0
  309. package/dist/statements/CreateDeleteStoredProcedureStatement.d.ts +17 -0
  310. package/dist/statements/CreateDeleteStoredProcedureStatement.js +25 -0
  311. package/dist/statements/CreateDeleteStoredProcedureStatementTextRenderer.d.ts +4 -0
  312. package/dist/statements/CreateDeleteStoredProcedureStatementTextRenderer.js +5 -0
  313. package/dist/statements/CreateIndexStatement.d.ts +10 -0
  314. package/dist/statements/CreateIndexStatement.js +13 -0
  315. package/dist/statements/CreateIndexStatementTextRenderer.d.ts +5 -0
  316. package/dist/statements/CreateIndexStatementTextRenderer.js +8 -0
  317. package/dist/statements/CreateReadStoredProcedureStatement.d.ts +17 -0
  318. package/dist/statements/CreateReadStoredProcedureStatement.js +25 -0
  319. package/dist/statements/CreateReadStoredProcedureStatementTextRenderer.d.ts +4 -0
  320. package/dist/statements/CreateReadStoredProcedureStatementTextRenderer.js +5 -0
  321. package/dist/statements/CreateRoutineStatement.d.ts +22 -0
  322. package/dist/statements/CreateRoutineStatementTextRenderer.d.ts +4 -0
  323. package/dist/statements/CreateTableStatement.d.ts +11 -0
  324. package/dist/statements/CreateTableStatement.js +11 -0
  325. package/dist/statements/CreateTableStatementTextRenderer.d.ts +18 -0
  326. package/dist/statements/CreateTableStatementTextRenderer.js +65 -0
  327. package/dist/statements/CreateTriggerStatement.d.ts +11 -0
  328. package/dist/statements/CreateTriggerStatement.js +15 -0
  329. package/dist/statements/CreateTriggerStatementTextRenderer.d.ts +4 -0
  330. package/dist/statements/CreateTriggerStatementTextRenderer.js +5 -0
  331. package/dist/statements/CreateUpdateStoredProcedureStatement.d.ts +17 -0
  332. package/dist/statements/CreateUpdateStoredProcedureStatement.js +25 -0
  333. package/dist/statements/CreateUpdateStoredProcedureStatementTextRenderer.d.ts +4 -0
  334. package/dist/statements/CreateUpdateStoredProcedureStatementTextRenderer.js +5 -0
  335. package/dist/statements/DefaultStatementTextRenderer.d.ts +5 -0
  336. package/dist/statements/DefaultStatementTextRenderer.js +7 -0
  337. package/dist/statements/DeleteStatement.d.ts +9 -0
  338. package/dist/statements/DeleteStatement.js +9 -0
  339. package/dist/statements/DeleteStatementTextRenderer.d.ts +7 -0
  340. package/dist/statements/DeleteStatementTextRenderer.js +11 -0
  341. package/dist/statements/DropIndexStatement.d.ts +8 -0
  342. package/dist/statements/DropIndexStatement.js +9 -0
  343. package/dist/statements/DropIndexStatementTextRenderer.d.ts +5 -0
  344. package/dist/statements/DropIndexStatementTextRenderer.js +8 -0
  345. package/dist/statements/DropRoutineStatement.d.ts +7 -0
  346. package/dist/statements/DropRoutineStatement.js +7 -0
  347. package/dist/statements/DropRoutineStatementTextRenderer.d.ts +4 -0
  348. package/dist/statements/DropRoutineStatementTextRenderer.js +5 -0
  349. package/dist/statements/DropTableStatement.d.ts +7 -0
  350. package/dist/statements/DropTableStatement.js +7 -0
  351. package/dist/statements/DropTableStatementTextRenderer.d.ts +5 -0
  352. package/dist/statements/DropTableStatementTextRenderer.js +8 -0
  353. package/dist/statements/DropTriggerStatement.d.ts +8 -0
  354. package/dist/statements/DropTriggerStatement.js +9 -0
  355. package/dist/statements/DropTriggerStatementTextRenderer.d.ts +5 -0
  356. package/dist/statements/DropTriggerStatementTextRenderer.js +8 -0
  357. package/dist/statements/ExecuteStoredProcedureStatement.d.ts +9 -0
  358. package/dist/statements/ExecuteStoredProcedureStatement.js +9 -0
  359. package/dist/statements/ExecuteStoredProcedureStatementTextRenderer.d.ts +4 -0
  360. package/dist/statements/ExecuteStoredProcedureStatementTextRenderer.js +10 -0
  361. package/dist/statements/ExpressionEvaluator.d.ts +5 -0
  362. package/dist/statements/ExpressionEvaluator.js +122 -0
  363. package/dist/statements/ExpressionRenderer.d.ts +8 -0
  364. package/dist/statements/ExpressionRenderer.js +141 -0
  365. package/dist/statements/ForeignKey.d.ts +19 -0
  366. package/dist/statements/ForeignKey.js +24 -0
  367. package/dist/statements/IAlterTableStatement.d.ts +3 -0
  368. package/dist/statements/IAlterTableStatement.js +1 -0
  369. package/dist/statements/IBulkDeleteStatement.d.ts +3 -0
  370. package/dist/statements/IBulkDeleteStatement.js +1 -0
  371. package/dist/statements/IBulkInsertStatement.d.ts +3 -0
  372. package/dist/statements/IBulkInsertStatement.js +1 -0
  373. package/dist/statements/IBulkUpdateStatement.d.ts +3 -0
  374. package/dist/statements/IBulkUpdateStatement.js +1 -0
  375. package/dist/statements/ICondition.d.ts +4 -0
  376. package/dist/statements/ICondition.js +1 -0
  377. package/dist/statements/IConditionVisitor.d.ts +6 -0
  378. package/dist/statements/IConditionVisitor.js +1 -0
  379. package/dist/statements/ICreateBulkCreateStoredProcedureStatement.d.ts +3 -0
  380. package/dist/statements/ICreateBulkCreateStoredProcedureStatement.js +1 -0
  381. package/dist/statements/ICreateBulkDeleteStoredProcedureStatement.d.ts +3 -0
  382. package/dist/statements/ICreateBulkDeleteStoredProcedureStatement.js +1 -0
  383. package/dist/statements/ICreateBulkUpdateStoredProcedureStatement.d.ts +3 -0
  384. package/dist/statements/ICreateBulkUpdateStoredProcedureStatement.js +1 -0
  385. package/dist/statements/ICreateCreateStoredProcedureStatement.d.ts +3 -0
  386. package/dist/statements/ICreateCreateStoredProcedureStatement.js +1 -0
  387. package/dist/statements/ICreateDeleteStoredProcedureStatement.d.ts +3 -0
  388. package/dist/statements/ICreateDeleteStoredProcedureStatement.js +1 -0
  389. package/dist/statements/ICreateIndexStatement.d.ts +3 -0
  390. package/dist/statements/ICreateIndexStatement.js +1 -0
  391. package/dist/statements/ICreateReadStoredProcedureStatement.d.ts +3 -0
  392. package/dist/statements/ICreateReadStoredProcedureStatement.js +1 -0
  393. package/dist/statements/ICreateRoutineStatement.d.ts +3 -0
  394. package/dist/statements/ICreateTableStatement.d.ts +3 -0
  395. package/dist/statements/ICreateTableStatement.js +1 -0
  396. package/dist/statements/ICreateTriggerStatement.d.ts +3 -0
  397. package/dist/statements/ICreateTriggerStatement.js +1 -0
  398. package/dist/statements/ICreateUpdateStoredProcedureStatement.d.ts +3 -0
  399. package/dist/statements/ICreateUpdateStoredProcedureStatement.js +1 -0
  400. package/dist/statements/IDeleteStatement.d.ts +5 -0
  401. package/dist/statements/IDeleteStatement.js +1 -0
  402. package/dist/statements/IDropIndexStatement.d.ts +3 -0
  403. package/dist/statements/IDropIndexStatement.js +1 -0
  404. package/dist/statements/IDropRoutineStatement.d.ts +3 -0
  405. package/dist/statements/IDropRoutineStatement.js +1 -0
  406. package/dist/statements/IDropTableStatement.d.ts +3 -0
  407. package/dist/statements/IDropTableStatement.js +1 -0
  408. package/dist/statements/IDropTriggerStatement.d.ts +3 -0
  409. package/dist/statements/IDropTriggerStatement.js +1 -0
  410. package/{src/statements/IExecuteStoredProcedureStatement.ts → dist/statements/IExecuteStoredProcedureStatement.d.ts} +3 -3
  411. package/dist/statements/IExecuteStoredProcedureStatement.js +1 -0
  412. package/dist/statements/IExpression.d.ts +2 -0
  413. package/dist/statements/IExpression.js +1 -0
  414. package/dist/statements/IIdentityInsertStatement.d.ts +3 -0
  415. package/dist/statements/IIdentityInsertStatement.js +1 -0
  416. package/dist/statements/IInsertStatement.d.ts +3 -0
  417. package/dist/statements/IInsertStatement.js +1 -0
  418. package/dist/statements/IReturnStatement.d.ts +3 -0
  419. package/dist/statements/IReturnStatement.js +1 -0
  420. package/dist/statements/ISelectStatement.d.ts +5 -0
  421. package/dist/statements/ISelectStatement.js +1 -0
  422. package/dist/statements/IStatement.d.ts +4 -0
  423. package/dist/statements/IStatement.js +1 -0
  424. package/dist/statements/IStatementVisitor.d.ts +54 -0
  425. package/dist/statements/IStatementVisitor.js +1 -0
  426. package/{src/statements/ITableConstraint.ts → dist/statements/ITableConstraint.d.ts} +2 -3
  427. package/dist/statements/ITableConstraint.js +1 -0
  428. package/dist/statements/IUpdateStatement.d.ts +5 -0
  429. package/dist/statements/IUpdateStatement.js +1 -0
  430. package/dist/statements/IWhere.d.ts +6 -0
  431. package/dist/statements/IWhere.js +1 -0
  432. package/dist/statements/Identifier.d.ts +5 -0
  433. package/dist/statements/Identifier.js +6 -0
  434. package/dist/statements/IdentityInsertStatement.d.ts +11 -0
  435. package/dist/statements/IdentityInsertStatement.js +13 -0
  436. package/dist/statements/IdentityInsertStatementTextRenderer.d.ts +6 -0
  437. package/dist/statements/IdentityInsertStatementTextRenderer.js +8 -0
  438. package/dist/statements/InsertStatement.d.ts +9 -0
  439. package/dist/statements/InsertStatement.js +9 -0
  440. package/dist/statements/InsertStatementTextRenderer.d.ts +4 -0
  441. package/dist/statements/InsertStatementTextRenderer.js +5 -0
  442. package/dist/statements/Join.d.ts +14 -0
  443. package/dist/statements/Join.js +10 -0
  444. package/dist/statements/Literal.d.ts +6 -0
  445. package/dist/statements/Literal.js +6 -0
  446. package/dist/statements/Native.d.ts +5 -0
  447. package/dist/statements/Native.js +7 -0
  448. package/dist/statements/NotNull.d.ts +4 -0
  449. package/dist/statements/NotNull.js +6 -0
  450. package/dist/statements/Operator.d.ts +107 -0
  451. package/dist/statements/Operator.js +207 -0
  452. package/dist/statements/OrderBy.d.ts +10 -0
  453. package/dist/statements/OrderBy.js +9 -0
  454. package/dist/statements/PrimaryKey.d.ts +7 -0
  455. package/dist/statements/PrimaryKey.js +9 -0
  456. package/dist/statements/ReturnStatement.d.ts +9 -0
  457. package/dist/statements/ReturnStatement.js +9 -0
  458. package/dist/statements/ReturnStatementTextRenderer.d.ts +4 -0
  459. package/dist/statements/ReturnStatementTextRenderer.js +10 -0
  460. package/dist/statements/RoutineParameter.d.ts +4 -0
  461. package/dist/statements/RoutineParameter.js +1 -0
  462. package/dist/statements/SelectInsertedIdStatement.d.ts +8 -0
  463. package/dist/statements/SelectInsertedIdStatement.js +9 -0
  464. package/dist/statements/SelectInsertedIdStatementTextRenderer.d.ts +4 -0
  465. package/dist/statements/SelectInsertedIdStatementTextRenderer.js +5 -0
  466. package/dist/statements/SelectStatement.d.ts +20 -0
  467. package/dist/statements/SelectStatement.js +25 -0
  468. package/dist/statements/SelectStatementOptions.d.ts +15 -0
  469. package/dist/statements/SelectStatementOptions.js +1 -0
  470. package/dist/statements/SelectStatementTextRenderer.d.ts +19 -0
  471. package/dist/statements/SelectStatementTextRenderer.js +54 -0
  472. package/dist/statements/StatementEvaluator.d.ts +4 -0
  473. package/dist/statements/StatementEvaluator.js +3 -0
  474. package/dist/statements/StatementParser.d.ts +4 -0
  475. package/dist/statements/StatementParser.js +454 -0
  476. package/dist/statements/StatementRenderer.d.ts +84 -0
  477. package/dist/statements/StatementRenderer.js +140 -0
  478. package/dist/statements/StatementTextRenderer.d.ts +14 -0
  479. package/dist/statements/StatementTextRenderer.js +27 -0
  480. package/dist/statements/Subquery.d.ts +6 -0
  481. package/dist/statements/Subquery.js +6 -0
  482. package/dist/statements/UniqueConstraint.d.ts +7 -0
  483. package/dist/statements/UniqueConstraint.js +9 -0
  484. package/dist/statements/UpdateStatement.d.ts +14 -0
  485. package/dist/statements/UpdateStatement.js +19 -0
  486. package/dist/statements/UpdateStatementTextRenderer.d.ts +14 -0
  487. package/dist/statements/UpdateStatementTextRenderer.js +51 -0
  488. package/dist/statements/Where.d.ts +16 -0
  489. package/dist/statements/Where.js +182 -0
  490. package/dist/statements/WhereText.d.ts +8 -0
  491. package/dist/statements/WhereText.js +10 -0
  492. package/dist/statements/index.d.ts +119 -0
  493. package/dist/statements/index.js +79 -0
  494. package/dist/stubs/StubCommand.d.ts +15 -0
  495. package/dist/stubs/StubCommand.js +13 -0
  496. package/dist/stubs/StubConnection.d.ts +13 -0
  497. package/dist/stubs/StubConnection.js +14 -0
  498. package/dist/stubs/StubDatasource.d.ts +20 -0
  499. package/dist/stubs/StubDatasource.js +34 -0
  500. package/dist/stubs/StubReader.d.ts +11 -0
  501. package/dist/stubs/StubReader.js +20 -0
  502. package/dist/stubs/StubRepository.d.ts +22 -0
  503. package/dist/stubs/StubRepository.js +17 -0
  504. package/dist/stubs/StubTransaction.d.ts +10 -0
  505. package/dist/stubs/StubTransaction.js +13 -0
  506. package/dist/stubs/createStubDatasource.d.ts +2 -0
  507. package/dist/stubs/createStubDatasource.js +2 -0
  508. package/dist/stubs/index.d.ts +7 -0
  509. package/dist/stubs/index.js +7 -0
  510. package/dist/stubs/notImplemented.d.ts +1 -0
  511. package/dist/stubs/notImplemented.js +4 -0
  512. package/package.json +15 -8
  513. package/src/ArrayReader.ts +0 -32
  514. package/src/BatchCommandIBulkWriteStrategy.ts +0 -228
  515. package/src/BuiltRepository.ts +0 -17
  516. package/src/BulkCRUDRepository.ts +0 -84
  517. package/src/BulkCommand.ts +0 -6
  518. package/src/BulkWriteEnrichment.ts +0 -19
  519. package/src/CRUDRepository.ts +0 -264
  520. package/src/CRUDRepositoryBuilder.ts +0 -53
  521. package/src/CRUDRepositoryStatements.ts +0 -43
  522. package/src/CascadeDeleteEnrichmentStrategy.ts +0 -51
  523. package/src/CascadeDeleteUpdateEnrichmentStrategy.ts +0 -28
  524. package/src/CommandMiddlewareHost.ts +0 -113
  525. package/src/ConsoleCommandMiddleware.ts +0 -64
  526. package/src/CreateEnrichmentStrategy.ts +0 -82
  527. package/src/Datasource.ts +0 -152
  528. package/src/DatasourceError.ts +0 -6
  529. package/src/DatasourceFactory.ts +0 -86
  530. package/src/DatasourceUrl.ts +0 -37
  531. package/src/DatasourceUrlParser.ts +0 -188
  532. package/src/DefaultCreateEnrichmentStrategy.ts +0 -21
  533. package/src/DefaultReadonlyEnrichmentStrategy.ts +0 -164
  534. package/src/DefaultUpdateEnrichmentStrategy.ts +0 -40
  535. package/src/DefaultWriteEnrichmentStrategy.ts +0 -151
  536. package/src/DeleteEnrichmentStrategy.ts +0 -56
  537. package/src/DriverLoader.ts +0 -97
  538. package/src/Enrichment.ts +0 -15
  539. package/src/EnrichmentPropertyType.ts +0 -9
  540. package/src/ExpectConsoleMiddleware.ts +0 -47
  541. package/src/FirstResultReader.ts +0 -49
  542. package/src/HashsetOptimizedReadonlyEnrichmentStrategy.ts +0 -80
  543. package/src/IBulkWriteStrategy.ts +0 -13
  544. package/src/ICRUDRepository.ts +0 -13
  545. package/src/ICRUDRepositoryFactory.ts +0 -8
  546. package/src/ICommand.ts +0 -45
  547. package/src/ICommandMiddleware.ts +0 -20
  548. package/src/IConnection.ts +0 -13
  549. package/src/IDatasource.ts +0 -27
  550. package/src/IDatasourceFactory.ts +0 -6
  551. package/src/IDriver.ts +0 -24
  552. package/src/IEnriched.ts +0 -11
  553. package/src/IReader.ts +0 -8
  554. package/src/IReadonlyEnrichmentStrategy.ts +0 -19
  555. package/src/IReadonlyRepository.ts +0 -21
  556. package/src/IRepository.ts +0 -5
  557. package/src/IRepositoryFactory.ts +0 -8
  558. package/src/IRepositoryTreeNode.ts +0 -8
  559. package/src/ITransaction.ts +0 -9
  560. package/src/IUnitOfWork.ts +0 -5
  561. package/src/IWriteEnrichmentStrategy.ts +0 -8
  562. package/src/Information.ts +0 -5
  563. package/src/IsolationLevel.ts +0 -8
  564. package/src/LazyWriteEnrichmentStrategy.ts +0 -5
  565. package/src/NestedToObjectEnrichmentStrategy.ts +0 -33
  566. package/src/Parameter.ts +0 -8
  567. package/src/ParameterDirection.ts +0 -9
  568. package/src/ProviderCatalog.ts +0 -21
  569. package/src/ProviderNotImplementedError.ts +0 -9
  570. package/src/ProviderNotInstalledError.ts +0 -9
  571. package/src/ReadonlyRepository.ts +0 -276
  572. package/src/ReadonlyRepositoryBuilder.ts +0 -53
  573. package/src/ReadonlyRepositoryMappingOptions.ts +0 -15
  574. package/src/ReadonlyRepositoryStatements.ts +0 -13
  575. package/src/RepositoryAccess.ts +0 -14
  576. package/src/RepositoryFactory.ts +0 -115
  577. package/src/RepositoryNotRegisteredError.ts +0 -9
  578. package/src/RepositoryTree.ts +0 -6
  579. package/src/RepositoryTreeNode.ts +0 -11
  580. package/src/Response.ts +0 -15
  581. package/src/Row.ts +0 -3
  582. package/src/SingleCommandIBulkWriteStrategy.ts +0 -35
  583. package/src/StatementMappers.ts +0 -110
  584. package/src/StoredEnrichment.ts +0 -25
  585. package/src/StoredProcedureBulkWriteStrategy.ts +0 -164
  586. package/src/StreamingReader.ts +0 -64
  587. package/src/UnitOfWorkTransaction.ts +0 -50
  588. package/src/UpdateEnrichmentStrategy.ts +0 -97
  589. package/src/builders/Field.ts +0 -6
  590. package/src/builders/index.ts +0 -2
  591. package/src/collectAsync.ts +0 -7
  592. package/src/converters/Cell.ts +0 -10
  593. package/src/converters/ChangeCasingConverter.ts +0 -59
  594. package/src/converters/MetaDataRowTypeConverter.ts +0 -80
  595. package/src/converters/PluralizerConverter.ts +0 -67
  596. package/src/converters/RegexConverter.ts +0 -14
  597. package/src/converters/ReplaceConverter.ts +0 -6
  598. package/src/converters/RowTypeConverter.ts +0 -33
  599. package/src/converters/ToLowerCaseConverter.ts +0 -4
  600. package/src/converters/ToUpperCaseConverter.ts +0 -4
  601. package/src/converters/TypeConverter.ts +0 -6
  602. package/src/createCRUDRepositoryOptions.ts +0 -21
  603. package/src/createReadonlyRepositoryMappingOptions.ts +0 -26
  604. package/src/dotEnv.ts +0 -16
  605. package/src/index.ts +0 -222
  606. package/src/mappers/ChangeCasingMapper.ts +0 -15
  607. package/src/mappers/DictionaryMapper.ts +0 -16
  608. package/src/mappers/FlatToNestedMapper.ts +0 -127
  609. package/src/mappers/IFlatToNestedMapper.ts +0 -7
  610. package/src/mappers/IMapper.ts +0 -4
  611. package/src/mappers/IdentityMapper.ts +0 -6
  612. package/src/mappers/PluralizerMapper.ts +0 -9
  613. package/src/mappers/RowTypeMapper.ts +0 -13
  614. package/src/mappers/TransformConverterMapper.ts +0 -11
  615. package/src/mappers/TransformMapper.ts +0 -8
  616. package/src/mappers/TypeMap.ts +0 -10
  617. package/src/mappers/TypeMapGroup.ts +0 -6
  618. package/src/mocks/index.ts +0 -9
  619. package/src/mocks/mock-command.ts +0 -66
  620. package/src/mocks/mock-connection.ts +0 -57
  621. package/src/mocks/mock-datasource.ts +0 -65
  622. package/src/mocks/mock-driver.ts +0 -27
  623. package/src/mocks/mock-reader.ts +0 -38
  624. package/src/mocks/mock-repository.ts +0 -91
  625. package/src/mocks/mock-select-statement.ts +0 -17
  626. package/src/mocks/mock-transaction.ts +0 -31
  627. package/src/mocks/mock-where.ts +0 -13
  628. package/src/parametersToRecord.ts +0 -11
  629. package/src/readerToAsyncIterable.ts +0 -11
  630. package/src/splitStatements.ts +0 -99
  631. package/src/statementParameters.ts +0 -22
  632. package/src/statementUsesParameter.ts +0 -4
  633. package/src/statements/Aggregate.ts +0 -9
  634. package/src/statements/ArrayExpression.ts +0 -5
  635. package/src/statements/BulkDeleteStatement.ts +0 -18
  636. package/src/statements/BulkDeleteStatementTextRenderer.ts +0 -16
  637. package/src/statements/BulkInsertStatement.ts +0 -37
  638. package/src/statements/BulkInsertStatementTextRenderer.ts +0 -10
  639. package/src/statements/BulkUpdateStatement.ts +0 -24
  640. package/src/statements/BulkUpdateStatementTextRenderer.ts +0 -29
  641. package/src/statements/CheckConstraint.ts +0 -9
  642. package/src/statements/Cmp.ts +0 -12
  643. package/src/statements/Column.ts +0 -10
  644. package/src/statements/ColumnDefault.ts +0 -6
  645. package/src/statements/Condition.ts +0 -3
  646. package/src/statements/ConditionRenderer.ts +0 -17
  647. package/src/statements/CreateIndexStatement.ts +0 -18
  648. package/src/statements/CreateIndexStatementTextRenderer.ts +0 -11
  649. package/src/statements/CreateTableStatement.ts +0 -18
  650. package/src/statements/CreateTableStatementTextRenderer.ts +0 -92
  651. package/src/statements/DefaultStatementTextRenderer.ts +0 -9
  652. package/src/statements/DeleteStatement.ts +0 -15
  653. package/src/statements/DeleteStatementTextRenderer.ts +0 -12
  654. package/src/statements/ExecuteStoredProcedureStatement.ts +0 -15
  655. package/src/statements/ExecuteStoredProcedureStatementTextRenderer.ts +0 -15
  656. package/src/statements/ExpressionEvaluator.ts +0 -166
  657. package/src/statements/ExpressionRenderer.ts +0 -161
  658. package/src/statements/ForeignKey.ts +0 -23
  659. package/src/statements/IBulkDeleteStatement.ts +0 -3
  660. package/src/statements/IBulkInsertStatement.ts +0 -3
  661. package/src/statements/IBulkUpdateStatement.ts +0 -3
  662. package/src/statements/ICondition.ts +0 -5
  663. package/src/statements/IConditionVisitor.ts +0 -7
  664. package/src/statements/ICreateIndexStatement.ts +0 -3
  665. package/src/statements/ICreateTableStatement.ts +0 -3
  666. package/src/statements/IDeleteStatement.ts +0 -6
  667. package/src/statements/IExpression.ts +0 -1
  668. package/src/statements/IInsertStatement.ts +0 -3
  669. package/src/statements/IReturnStatement.ts +0 -3
  670. package/src/statements/ISelectStatement.ts +0 -6
  671. package/src/statements/IStatement.ts +0 -5
  672. package/src/statements/IStatementVisitor.ts +0 -27
  673. package/src/statements/IUpdateStatement.ts +0 -6
  674. package/src/statements/IWhere.ts +0 -7
  675. package/src/statements/Identifier.ts +0 -5
  676. package/src/statements/InsertStatement.ts +0 -15
  677. package/src/statements/InsertStatementTextRenderer.ts +0 -7
  678. package/src/statements/Join.ts +0 -26
  679. package/src/statements/Literal.ts +0 -6
  680. package/src/statements/Native.ts +0 -5
  681. package/src/statements/NotNull.ts +0 -3
  682. package/src/statements/Operator.ts +0 -234
  683. package/src/statements/OrderBy.ts +0 -19
  684. package/src/statements/PrimaryKey.ts +0 -9
  685. package/src/statements/ReturnStatement.ts +0 -15
  686. package/src/statements/ReturnStatementTextRenderer.ts +0 -15
  687. package/src/statements/SelectInsertedIdStatement.ts +0 -11
  688. package/src/statements/SelectInsertedIdStatementTextRenderer.ts +0 -7
  689. package/src/statements/SelectStatement.ts +0 -34
  690. package/src/statements/SelectStatementOptions.ts +0 -16
  691. package/src/statements/SelectStatementTextRenderer.ts +0 -71
  692. package/src/statements/StatementEvaluator.ts +0 -5
  693. package/src/statements/StatementParser.ts +0 -461
  694. package/src/statements/StatementRenderer.ts +0 -120
  695. package/src/statements/StatementTextRenderer.ts +0 -60
  696. package/src/statements/Subquery.ts +0 -6
  697. package/src/statements/UniqueConstraint.ts +0 -9
  698. package/src/statements/UpdateStatement.ts +0 -34
  699. package/src/statements/UpdateStatementTextRenderer.ts +0 -63
  700. package/src/statements/Where.ts +0 -250
  701. package/src/statements/WhereText.ts +0 -10
  702. package/src/statements/index.ts +0 -75
  703. package/src/stubs/StubCommand.ts +0 -30
  704. package/src/stubs/StubConnection.ts +0 -21
  705. package/src/stubs/StubDatasource.ts +0 -60
  706. package/src/stubs/StubReader.ts +0 -25
  707. package/src/stubs/StubRepository.ts +0 -42
  708. package/src/stubs/StubTransaction.ts +0 -17
  709. package/src/stubs/createStubDatasource.ts +0 -4
  710. package/src/stubs/index.ts +0 -7
  711. package/src/stubs/notImplemented.ts +0 -5
  712. /package/{src/DatasourceOptions.ts → dist/DatasourceOptions.d.ts} +0 -0
  713. /package/{src/WriteMode.ts → dist/WriteMode.d.ts} +0 -0
  714. /package/{src/builders/Scalar.ts → dist/builders/Scalar.d.ts} +0 -0
  715. /package/{src/converters/Constructable.ts → dist/converters/Constructable.d.ts} +0 -0
@@ -0,0 +1,140 @@
1
+ import { BulkDeleteStatementTextRenderer } from "./BulkDeleteStatementTextRenderer.js";
2
+ import { BulkInsertStatementTextRenderer } from "./BulkInsertStatementTextRenderer.js";
3
+ import { BulkUpdateStatementTextRenderer } from "./BulkUpdateStatementTextRenderer.js";
4
+ import { AlterTableStatementTextRenderer } from "./AlterTableStatementTextRenderer.js";
5
+ import { CreateIndexStatementTextRenderer } from "./CreateIndexStatementTextRenderer.js";
6
+ import { CreateTableStatementTextRenderer } from "./CreateTableStatementTextRenderer.js";
7
+ import { CreateTriggerStatementTextRenderer } from "./CreateTriggerStatementTextRenderer.js";
8
+ import { DeleteStatementTextRenderer } from "./DeleteStatementTextRenderer.js";
9
+ import { DropIndexStatementTextRenderer } from "./DropIndexStatementTextRenderer.js";
10
+ import { DropRoutineStatementTextRenderer } from "./DropRoutineStatementTextRenderer.js";
11
+ import { CreateCreateStoredProcedureStatementTextRenderer } from "./CreateCreateStoredProcedureStatementTextRenderer.js";
12
+ import { CreateReadStoredProcedureStatementTextRenderer } from "./CreateReadStoredProcedureStatementTextRenderer.js";
13
+ import { CreateUpdateStoredProcedureStatementTextRenderer } from "./CreateUpdateStoredProcedureStatementTextRenderer.js";
14
+ import { CreateDeleteStoredProcedureStatementTextRenderer } from "./CreateDeleteStoredProcedureStatementTextRenderer.js";
15
+ import { CreateBulkCreateStoredProcedureStatementTextRenderer } from "./CreateBulkCreateStoredProcedureStatementTextRenderer.js";
16
+ import { CreateBulkUpdateStoredProcedureStatementTextRenderer } from "./CreateBulkUpdateStoredProcedureStatementTextRenderer.js";
17
+ import { CreateBulkDeleteStoredProcedureStatementTextRenderer } from "./CreateBulkDeleteStoredProcedureStatementTextRenderer.js";
18
+ import { DropTableStatementTextRenderer } from "./DropTableStatementTextRenderer.js";
19
+ import { DropTriggerStatementTextRenderer } from "./DropTriggerStatementTextRenderer.js";
20
+ import { ExecuteStoredProcedureStatementTextRenderer } from "./ExecuteStoredProcedureStatementTextRenderer.js";
21
+ import { IdentityInsertStatementTextRenderer } from "./IdentityInsertStatementTextRenderer.js";
22
+ import { InsertStatementTextRenderer } from "./InsertStatementTextRenderer.js";
23
+ import { ReturnStatementTextRenderer } from "./ReturnStatementTextRenderer.js";
24
+ import { SelectInsertedIdStatementTextRenderer } from "./SelectInsertedIdStatementTextRenderer.js";
25
+ import { SelectStatementTextRenderer } from "./SelectStatementTextRenderer.js";
26
+ import { UpdateStatementTextRenderer } from "./UpdateStatementTextRenderer.js";
27
+ export class StatementRenderer {
28
+ text;
29
+ constructor(text) {
30
+ this.text = text;
31
+ }
32
+ visit(statement) {
33
+ return ({
34
+ SelectStatement: () => this.visitSelect(statement),
35
+ InsertStatement: () => this.visitInsert(statement),
36
+ UpdateStatement: () => this.visitUpdate(statement),
37
+ DeleteStatement: () => this.visitDelete(statement),
38
+ CreateTableStatement: () => this.visitCreateTable(statement),
39
+ CreateIndexStatement: () => this.visitCreateIndex(statement),
40
+ ExecuteStoredProcedureStatement: () => this.visitExecuteStoredProcedure(statement),
41
+ ReturnStatement: () => this.visitReturn(statement),
42
+ BulkInsertStatement: () => this.visitBulkInsert(statement),
43
+ BulkUpdateStatement: () => this.visitBulkUpdate(statement),
44
+ BulkDeleteStatement: () => this.visitBulkDelete(statement),
45
+ DropTableStatement: () => this.visitDropTable(statement),
46
+ AlterTableStatement: () => this.visitAlterTable(statement),
47
+ DropIndexStatement: () => this.visitDropIndex(statement),
48
+ DropTriggerStatement: () => this.visitDropTrigger(statement),
49
+ CreateTriggerStatement: () => this.visitCreateTrigger(statement),
50
+ IdentityInsertStatement: () => this.visitIdentityInsert(statement),
51
+ DropRoutineStatement: () => this.visitDropRoutine(statement),
52
+ CreateCreateStoredProcedureStatement: () => this.visitCreateCreateStoredProcedureStatement(statement),
53
+ CreateReadStoredProcedureStatement: () => this.visitCreateReadStoredProcedureStatement(statement),
54
+ CreateUpdateStoredProcedureStatement: () => this.visitCreateUpdateStoredProcedureStatement(statement),
55
+ CreateDeleteStoredProcedureStatement: () => this.visitCreateDeleteStoredProcedureStatement(statement),
56
+ CreateBulkCreateStoredProcedureStatement: () => this.visitCreateBulkCreateStoredProcedureStatement(statement),
57
+ CreateBulkUpdateStoredProcedureStatement: () => this.visitCreateBulkUpdateStoredProcedureStatement(statement),
58
+ CreateBulkDeleteStoredProcedureStatement: () => this.visitCreateBulkDeleteStoredProcedureStatement(statement),
59
+ SelectInsertedIdStatement: () => this.visitSelectInsertedId(statement),
60
+ }[statement.constructor.name] ?? (() => this.visitSelectInsertedId(statement)))();
61
+ }
62
+ visitSelect(statement) {
63
+ return new SelectStatementTextRenderer(this.text).render(statement);
64
+ }
65
+ visitInsert(statement) {
66
+ return new InsertStatementTextRenderer().render(statement);
67
+ }
68
+ visitUpdate(statement) {
69
+ return new UpdateStatementTextRenderer(this.text).render(statement);
70
+ }
71
+ visitDelete(statement) {
72
+ return new DeleteStatementTextRenderer(this.text).render(statement);
73
+ }
74
+ visitCreateTable(statement) {
75
+ return new CreateTableStatementTextRenderer().render(statement);
76
+ }
77
+ visitCreateIndex(statement) {
78
+ return new CreateIndexStatementTextRenderer().render(statement);
79
+ }
80
+ visitExecuteStoredProcedure(statement) {
81
+ return new ExecuteStoredProcedureStatementTextRenderer().render(statement);
82
+ }
83
+ visitReturn(statement) {
84
+ return new ReturnStatementTextRenderer().render(statement);
85
+ }
86
+ visitSelectInsertedId(statement) {
87
+ return new SelectInsertedIdStatementTextRenderer().render(statement);
88
+ }
89
+ visitBulkInsert(statement) {
90
+ return new BulkInsertStatementTextRenderer().render(statement);
91
+ }
92
+ visitBulkUpdate(statement) {
93
+ return new BulkUpdateStatementTextRenderer().render(statement);
94
+ }
95
+ visitBulkDelete(statement) {
96
+ return new BulkDeleteStatementTextRenderer().render(statement);
97
+ }
98
+ visitDropTable(statement) {
99
+ return new DropTableStatementTextRenderer().render(statement);
100
+ }
101
+ visitAlterTable(statement) {
102
+ return new AlterTableStatementTextRenderer().renderAlter(statement);
103
+ }
104
+ visitDropIndex(statement) {
105
+ return new DropIndexStatementTextRenderer().render(statement);
106
+ }
107
+ visitDropTrigger(statement) {
108
+ return new DropTriggerStatementTextRenderer().render(statement);
109
+ }
110
+ visitCreateTrigger(statement) {
111
+ return new CreateTriggerStatementTextRenderer().render(statement);
112
+ }
113
+ visitIdentityInsert(statement) {
114
+ return new IdentityInsertStatementTextRenderer().render(statement);
115
+ }
116
+ visitDropRoutine(statement) {
117
+ return new DropRoutineStatementTextRenderer().render(statement);
118
+ }
119
+ visitCreateCreateStoredProcedureStatement(statement) {
120
+ return new CreateCreateStoredProcedureStatementTextRenderer().render(statement);
121
+ }
122
+ visitCreateReadStoredProcedureStatement(statement) {
123
+ return new CreateReadStoredProcedureStatementTextRenderer().render(statement);
124
+ }
125
+ visitCreateUpdateStoredProcedureStatement(statement) {
126
+ return new CreateUpdateStoredProcedureStatementTextRenderer().render(statement);
127
+ }
128
+ visitCreateDeleteStoredProcedureStatement(statement) {
129
+ return new CreateDeleteStoredProcedureStatementTextRenderer().render(statement);
130
+ }
131
+ visitCreateBulkCreateStoredProcedureStatement(statement) {
132
+ return new CreateBulkCreateStoredProcedureStatementTextRenderer().render(statement);
133
+ }
134
+ visitCreateBulkUpdateStoredProcedureStatement(statement) {
135
+ return new CreateBulkUpdateStoredProcedureStatementTextRenderer().render(statement);
136
+ }
137
+ visitCreateBulkDeleteStoredProcedureStatement(statement) {
138
+ return new CreateBulkDeleteStoredProcedureStatementTextRenderer().render(statement);
139
+ }
140
+ }
@@ -0,0 +1,14 @@
1
+ import type { ICondition } from "./ICondition.js";
2
+ import type { IConditionVisitor } from "./IConditionVisitor.js";
3
+ import type { IStatement } from "./IStatement.js";
4
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
5
+ import { ConditionRenderer } from "./ConditionRenderer.js";
6
+ import { ExpressionRenderer } from "./ExpressionRenderer.js";
7
+ import { StatementRenderer } from "./StatementRenderer.js";
8
+ export declare class StatementTextRenderer {
9
+ protected readonly statements: IStatementVisitor;
10
+ protected readonly conditions: IConditionVisitor;
11
+ constructor(statements?: (text: StatementTextRenderer) => StatementRenderer, conditions?: (expressions: ExpressionRenderer) => ConditionRenderer, expressions?: (text: StatementTextRenderer) => ExpressionRenderer);
12
+ render(statement: IStatement): string;
13
+ render(condition: ICondition): string;
14
+ }
@@ -0,0 +1,27 @@
1
+ import { ConditionRenderer } from "./ConditionRenderer.js";
2
+ import { ExpressionRenderer } from "./ExpressionRenderer.js";
3
+ import { StatementRenderer } from "./StatementRenderer.js";
4
+ import { Where } from "./Where.js";
5
+ import { WhereText } from "./WhereText.js";
6
+ export class StatementTextRenderer {
7
+ statements;
8
+ conditions;
9
+ constructor(statements, conditions, expressions) {
10
+ const expressionRenderer = expressions?.(this) ?? new ExpressionRenderer(this);
11
+ this.statements = statements?.(this) ?? new StatementRenderer(this);
12
+ this.conditions = conditions?.(expressionRenderer) ?? new ConditionRenderer(expressionRenderer);
13
+ }
14
+ render(target) {
15
+ if (target.constructor.name === "Where" || target.constructor.name === "WhereText") {
16
+ return target.accept(this.conditions);
17
+ }
18
+ if (target.constructor.name.endsWith("Statement")) {
19
+ return target.accept(this.statements);
20
+ }
21
+ if (target instanceof Where || target instanceof WhereText)
22
+ return target.accept(this.conditions);
23
+ return "where" in target || "fields" in target || "joins" in target || "column" in target
24
+ ? target.accept(this.statements)
25
+ : target.accept(this.conditions);
26
+ }
27
+ }
@@ -0,0 +1,6 @@
1
+ import type { IExpression } from "./IExpression.js";
2
+ import type { SelectStatement } from "./SelectStatement.js";
3
+ export declare class Subquery implements IExpression {
4
+ readonly query: SelectStatement;
5
+ constructor(query: SelectStatement);
6
+ }
@@ -0,0 +1,6 @@
1
+ export class Subquery {
2
+ query;
3
+ constructor(query) {
4
+ this.query = query;
5
+ }
6
+ }
@@ -0,0 +1,7 @@
1
+ import type { ITableConstraint } from "./ITableConstraint.js";
2
+ export declare class UniqueConstraint implements ITableConstraint {
3
+ readonly name: string;
4
+ readonly columns: string[];
5
+ readonly kind: "unique";
6
+ constructor(name: string, columns: string[]);
7
+ }
@@ -0,0 +1,9 @@
1
+ export class UniqueConstraint {
2
+ name;
3
+ columns;
4
+ kind = "unique";
5
+ constructor(name, columns) {
6
+ this.name = name;
7
+ this.columns = columns;
8
+ }
9
+ }
@@ -0,0 +1,14 @@
1
+ import type { Field } from "../builders/Field.js";
2
+ import type { Parameter } from "../Parameter.js";
3
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
4
+ import type { IUpdateStatement } from "./IUpdateStatement.js";
5
+ import type { IWhere } from "./IWhere.js";
6
+ export declare class UpdateStatement implements IUpdateStatement {
7
+ readonly table: string;
8
+ readonly fields: Field[];
9
+ readonly where?: IWhere;
10
+ constructor(table: string, fields: Field[], where?: IWhere);
11
+ accept: (visitor: IStatementVisitor) => string;
12
+ get parameters(): Parameter[];
13
+ static parameterList: (fields: Field[], where?: IWhere) => Parameter[];
14
+ }
@@ -0,0 +1,19 @@
1
+ import { DefaultStatementTextRenderer } from "./DefaultStatementTextRenderer.js";
2
+ import { UpdateStatementTextRenderer } from "./UpdateStatementTextRenderer.js";
3
+ export class UpdateStatement {
4
+ table;
5
+ fields;
6
+ where;
7
+ constructor(table, fields, where) {
8
+ this.table = table;
9
+ this.fields = fields;
10
+ this.where = where;
11
+ }
12
+ accept = (visitor) => visitor.visit(this);
13
+ get parameters() {
14
+ return new UpdateStatementTextRenderer(DefaultStatementTextRenderer.instance)
15
+ .compose(`UPDATE ${this.table} SET ${this.fields.map((item) => `${item.name} = $${item.name}`).join(", ")}`, this.where, this.fields).parameters;
16
+ }
17
+ static parameterList = (fields, where) => new UpdateStatementTextRenderer(DefaultStatementTextRenderer.instance).compose("", where, fields)
18
+ .parameters;
19
+ }
@@ -0,0 +1,14 @@
1
+ import type { Field } from "../builders/Field.js";
2
+ import type { Parameter } from "../Parameter.js";
3
+ import type { IWhere } from "./IWhere.js";
4
+ import type { StatementTextRenderer } from "./StatementTextRenderer.js";
5
+ import type { UpdateStatement } from "./UpdateStatement.js";
6
+ export declare class UpdateStatementTextRenderer {
7
+ private readonly text;
8
+ constructor(text: StatementTextRenderer);
9
+ render(statement: UpdateStatement): string;
10
+ compose(sql: string, where: IWhere | undefined, fields: Field[]): {
11
+ text: string;
12
+ parameters: Parameter[];
13
+ };
14
+ }
@@ -0,0 +1,51 @@
1
+ const rename = (text, name, alias) => {
2
+ const token = `$${name}`;
3
+ const next = `$${alias}`;
4
+ let index = 0;
5
+ let result = "";
6
+ while (text.indexOf(token, index) >= 0) {
7
+ const at = text.indexOf(token, index);
8
+ const end = at + token.length;
9
+ const nextChar = text.charAt(end);
10
+ const boundary = nextChar === "" || !/[A-Za-z0-9_]/.test(nextChar);
11
+ result += text.slice(index, at) + (boundary ? next : token);
12
+ index = end;
13
+ }
14
+ return result + text.slice(index);
15
+ };
16
+ const setClause = (fields) => fields.map((field) => `${field.name} = $${field.name}`).join(", ");
17
+ export class UpdateStatementTextRenderer {
18
+ text;
19
+ constructor(text) {
20
+ this.text = text;
21
+ }
22
+ render(statement) {
23
+ return this.compose(`UPDATE ${statement.table} SET ${setClause(statement.fields)}`, statement.where, statement.fields).text;
24
+ }
25
+ compose(sql, where, fields) {
26
+ if (!where)
27
+ return { text: sql, parameters: fields };
28
+ const rendered = `${sql} WHERE ${this.text.render(where)}`;
29
+ const split = rendered.lastIndexOf(" WHERE ");
30
+ /* v8 ignore next 2 */
31
+ const head = split < 0 ? rendered : rendered.slice(0, split);
32
+ let tail = split < 0 ? "" : rendered.slice(split);
33
+ const parameters = [...fields];
34
+ const values = new Map();
35
+ for (const field of fields)
36
+ values.set(field.name, field.value);
37
+ for (const parameter of where.parameters ?? []) {
38
+ if (parameter.value === undefined)
39
+ continue;
40
+ const current = values.get(parameter.name);
41
+ if (values.has(parameter.name) && current !== parameter.value) {
42
+ const alias = `${parameter.name}__where`;
43
+ tail = rename(tail, parameter.name, alias);
44
+ parameters.push({ name: alias, value: parameter.value });
45
+ }
46
+ else
47
+ parameters.push({ name: parameter.name, value: parameter.value });
48
+ }
49
+ return { text: head + tail, parameters };
50
+ }
51
+ }
@@ -0,0 +1,16 @@
1
+ import type { Parameter } from "../Parameter.js";
2
+ import type { Cell } from "../converters/Cell.js";
3
+ import type { IConditionVisitor } from "./IConditionVisitor.js";
4
+ import type { IExpression } from "./IExpression.js";
5
+ import type { IWhere } from "./IWhere.js";
6
+ import type { Comparison } from "./Cmp.js";
7
+ export declare class Where implements IWhere {
8
+ readonly condition: IExpression;
9
+ constructor(condition: IExpression);
10
+ constructor(column: string, op: Comparison, value: Cell);
11
+ and(column: string, op: Comparison, value: Cell): Where;
12
+ or(column: string, op: Comparison, value: Cell): Where;
13
+ map(column: (name: string) => string, value: (name: string, cell: Cell) => Cell): Where;
14
+ accept: (visitor: IConditionVisitor) => string;
15
+ get parameters(): Parameter[];
16
+ }
@@ -0,0 +1,182 @@
1
+ import { ArrayExpression } from "./ArrayExpression.js";
2
+ import { Identifier } from "./Identifier.js";
3
+ import { Literal } from "./Literal.js";
4
+ import { Operator } from "./Operator.js";
5
+ import { eq } from "./Cmp.js";
6
+ import { SelectStatement } from "./SelectStatement.js";
7
+ import { Subquery } from "./Subquery.js";
8
+ const pair = (expression) => expression instanceof Operator.Equals ||
9
+ expression instanceof Operator.NotEquals ||
10
+ expression instanceof Operator.GreaterThan ||
11
+ expression instanceof Operator.LessThan ||
12
+ expression instanceof Operator.GreaterThanOrEqual ||
13
+ expression instanceof Operator.LessThanOrEqual ||
14
+ expression instanceof Operator.And ||
15
+ expression instanceof Operator.Or ||
16
+ expression instanceof Operator.In ||
17
+ expression instanceof Operator.Like ||
18
+ expression instanceof Operator.NotLike
19
+ ? expression
20
+ : undefined;
21
+ const parameterName = (name) => parts(name)
22
+ .map((part) => part.length >= 2 && part.startsWith('"') && part.endsWith('"')
23
+ ? part.slice(1, -1).replace(/""/g, '"')
24
+ : part)
25
+ .join(".");
26
+ const parts = (name) => {
27
+ const found = [];
28
+ let start = 0;
29
+ let quoted = false;
30
+ for (let i = 0; i < name.length; i++) {
31
+ if (name[i] === '"')
32
+ quoted = !quoted;
33
+ if (name[i] !== "." || quoted)
34
+ continue;
35
+ found.push(name.slice(start, i));
36
+ start = i + 1;
37
+ }
38
+ found.push(name.slice(start));
39
+ return found;
40
+ };
41
+ const side = (expression, other, column, value) => expression instanceof Literal && other instanceof Identifier
42
+ ? new Literal(value(other.name, expression.value))
43
+ : rewrite(expression, column, value);
44
+ const inRight = (left, right, column, value) => left instanceof Identifier && right instanceof ArrayExpression
45
+ ? new ArrayExpression(right.elements.map((element) => element instanceof Literal
46
+ ? new Literal(value(left.name, element.value))
47
+ : rewrite(element, column, value)))
48
+ : rewrite(right, column, value);
49
+ const bound = (subject, edge, column, value) => subject instanceof Identifier && edge instanceof Literal
50
+ ? new Literal(value(subject.name, edge.value))
51
+ : rewrite(edge, column, value);
52
+ const rewriteWhere = (where, column, value) => where instanceof Where ? new Where(rewrite(where.condition, column, value)) : where;
53
+ const rewriteQuery = (query, column, value) => query.table === undefined
54
+ ? query
55
+ : new SelectStatement({
56
+ distinct: query.distinct,
57
+ table: query.table,
58
+ fields: query.fields,
59
+ where: rewriteWhere(query.where, column, value),
60
+ joins: query.joins.map((join) => join.on ? { ...join, on: rewrite(join.on, column, value) } : join),
61
+ groupBy: query.groupBy,
62
+ having: rewriteWhere(query.having, column, value),
63
+ orderBy: query.orderBy,
64
+ limit: query.limit,
65
+ offset: query.offset,
66
+ });
67
+ const rewrite = (expression, column, value) => expression instanceof Where
68
+ ? rewrite(expression.condition, column, value)
69
+ : expression instanceof Identifier
70
+ ? new Identifier(column(expression.name))
71
+ : expression instanceof Literal
72
+ ? expression
73
+ : expression instanceof ArrayExpression
74
+ ? new ArrayExpression(expression.elements.map((element) => rewrite(element, column, value)))
75
+ : expression instanceof Subquery
76
+ ? new Subquery(rewriteQuery(expression.query, column, value))
77
+ : expression instanceof Operator.Not
78
+ ? new Operator.Not(rewrite(expression.argument, column, value))
79
+ : expression instanceof Operator.IsNull
80
+ ? new Operator.IsNull(rewrite(expression.argument, column, value))
81
+ : expression instanceof Operator.IsNotNull
82
+ ? new Operator.IsNotNull(rewrite(expression.argument, column, value))
83
+ : expression instanceof Operator.Exists
84
+ ? new Operator.Exists(rewrite(expression.argument, column, value))
85
+ : expression instanceof Operator.And
86
+ ? new Operator.And(rewrite(expression.left, column, value), rewrite(expression.right, column, value))
87
+ : expression instanceof Operator.Or
88
+ ? new Operator.Or(rewrite(expression.left, column, value), rewrite(expression.right, column, value))
89
+ : expression instanceof Operator.In
90
+ ? new Operator.In(rewrite(expression.left, column, value), inRight(expression.left, expression.right, column, value))
91
+ : expression instanceof Operator.NotIn
92
+ ? new Operator.NotIn(rewrite(expression.left, column, value), inRight(expression.left, expression.right, column, value))
93
+ : expression instanceof Operator.Like
94
+ ? new Operator.Like(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
95
+ : expression instanceof Operator.NotLike
96
+ ? new Operator.NotLike(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
97
+ : expression instanceof Operator.Between
98
+ ? new Operator.Between(rewrite(expression.value, column, value), bound(expression.value, expression.low, column, value), bound(expression.value, expression.high, column, value))
99
+ : expression instanceof Operator.NotBetween
100
+ ? new Operator.NotBetween(rewrite(expression.value, column, value), bound(expression.value, expression.low, column, value), bound(expression.value, expression.high, column, value))
101
+ : expression instanceof Operator.Equals
102
+ ? new Operator.Equals(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
103
+ : expression instanceof Operator.NotEquals
104
+ ? new Operator.NotEquals(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
105
+ : expression instanceof Operator.GreaterThan
106
+ ? new Operator.GreaterThan(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
107
+ : expression instanceof Operator.LessThan
108
+ ? new Operator.LessThan(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
109
+ : expression instanceof Operator.GreaterThanOrEqual
110
+ ? new Operator.GreaterThanOrEqual(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
111
+ : expression instanceof Operator.LessThanOrEqual
112
+ ? new Operator.LessThanOrEqual(side(expression.left, expression.right, column, value), side(expression.right, expression.left, column, value))
113
+ : (() => {
114
+ throw new Error("empty expression");
115
+ })();
116
+ const listed = (name, elements) => elements.map((element, i) => element instanceof Literal
117
+ ? { name: `${parameterName(name)}_${i}`, value: element.value }
118
+ : (() => {
119
+ throw new Error("empty in");
120
+ })());
121
+ const collect = (expression) => {
122
+ if (expression instanceof Where)
123
+ return collect(expression.condition);
124
+ if (expression instanceof Literal || expression instanceof Identifier)
125
+ return [];
126
+ if (expression instanceof Operator.Not || expression instanceof Operator.IsNull || expression instanceof Operator.IsNotNull)
127
+ return collect(expression.argument);
128
+ if (expression instanceof Operator.Exists)
129
+ return collect(expression.argument);
130
+ if (expression instanceof Subquery)
131
+ return [
132
+ ...(expression.query.where ? collect(expression.query.where) : []),
133
+ ...(expression.query.having ? collect(expression.query.having) : []),
134
+ ...expression.query.joins.flatMap((join) => (join.on ? collect(join.on) : [])),
135
+ ];
136
+ if (expression instanceof Operator.In && expression.left instanceof Identifier && expression.right instanceof ArrayExpression)
137
+ return listed(expression.left.name, expression.right.elements);
138
+ if (expression instanceof Operator.NotIn && expression.left instanceof Identifier && expression.right instanceof ArrayExpression)
139
+ return listed(expression.left.name, expression.right.elements);
140
+ if (expression instanceof Operator.In || expression instanceof Operator.NotIn)
141
+ return [...collect(expression.left), ...collect(expression.right)];
142
+ if ((expression instanceof Operator.Between || expression instanceof Operator.NotBetween) &&
143
+ expression.value instanceof Identifier &&
144
+ expression.low instanceof Literal &&
145
+ expression.high instanceof Literal)
146
+ return [
147
+ { name: `${parameterName(expression.value.name)}_0`, value: expression.low.value },
148
+ { name: `${parameterName(expression.value.name)}_1`, value: expression.high.value },
149
+ ];
150
+ if (expression instanceof Operator.Between || expression instanceof Operator.NotBetween)
151
+ return [...collect(expression.value), ...collect(expression.low), ...collect(expression.high)];
152
+ const operands = expression instanceof Operator ? pair(expression) : undefined;
153
+ if (operands && operands.left instanceof Identifier && operands.right instanceof Literal)
154
+ return [{ name: parameterName(operands.left.name), value: operands.right.value }];
155
+ if (operands && operands.left instanceof Literal && operands.right instanceof Literal)
156
+ return [];
157
+ if (operands)
158
+ return [...collect(operands.left), ...collect(operands.right)];
159
+ if (expression instanceof ArrayExpression)
160
+ return expression.elements.flatMap(collect);
161
+ throw new Error("empty expression");
162
+ };
163
+ export class Where {
164
+ condition;
165
+ constructor(columnOrCondition, op = eq, value = null) {
166
+ this.condition =
167
+ typeof columnOrCondition === "string" ? op(columnOrCondition, value) : columnOrCondition;
168
+ }
169
+ and(column, op, value) {
170
+ return new Where(new Operator.And(this.condition, op(column, value)));
171
+ }
172
+ or(column, op, value) {
173
+ return new Where(new Operator.Or(this.condition, op(column, value)));
174
+ }
175
+ map(column, value) {
176
+ return new Where(rewrite(this.condition, column, value));
177
+ }
178
+ accept = (visitor) => visitor.visit(this);
179
+ get parameters() {
180
+ return collect(this.condition);
181
+ }
182
+ }
@@ -0,0 +1,8 @@
1
+ import type { IConditionVisitor } from "./IConditionVisitor.js";
2
+ import type { IWhere } from "./IWhere.js";
3
+ export declare class WhereText implements IWhere {
4
+ private readonly text;
5
+ constructor(text: string);
6
+ get rawText(): string;
7
+ accept: (visitor: IConditionVisitor) => string;
8
+ }
@@ -0,0 +1,10 @@
1
+ export class WhereText {
2
+ text;
3
+ constructor(text) {
4
+ this.text = text;
5
+ }
6
+ get rawText() {
7
+ return this.text;
8
+ }
9
+ accept = (visitor) => visitor.visit(this);
10
+ }