@deterministic-code/datasources 0.0.0-stage → 0.1.1

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 (508) hide show
  1. package/dist/ArrayReader.d.ts +12 -0
  2. package/dist/BatchCommandIBulkWriteStrategy.d.ts +33 -0
  3. package/dist/BuiltRepository.d.ts +16 -0
  4. package/dist/BulkCRUDRepository.d.ts +17 -0
  5. package/dist/BulkCommand.d.ts +5 -0
  6. package/dist/BulkWriteEnrichment.d.ts +4 -0
  7. package/dist/CRUDRepository.d.ts +40 -0
  8. package/dist/CRUDRepositoryBuilder.d.ts +19 -0
  9. package/dist/CRUDRepositoryOptions.d.ts +7 -0
  10. package/dist/CRUDRepositoryStatements.d.ts +17 -0
  11. package/dist/CascadeDeleteEnrichmentStrategy.d.ts +7 -0
  12. package/dist/CascadeDeleteUpdateEnrichmentStrategy.d.ts +8 -0
  13. package/dist/CommandMiddlewareHost.d.ts +22 -0
  14. package/dist/ConsoleCommandMiddleware.d.ts +14 -0
  15. package/dist/CreateEnrichmentStrategy.d.ts +14 -0
  16. package/dist/Datasource.d.ts +30 -0
  17. package/dist/DatasourceError.d.ts +3 -0
  18. package/dist/DatasourceFactory.d.ts +12 -0
  19. package/dist/DatasourceOptions.d.ts +1 -0
  20. package/dist/DatasourceUrl.d.ts +12 -0
  21. package/dist/DatasourceUrlParser.d.ts +4 -0
  22. package/dist/DefaultCreateEnrichmentStrategy.d.ts +7 -0
  23. package/dist/DefaultReadonlyEnrichmentStrategy.d.ts +19 -0
  24. package/dist/DefaultUpdateEnrichmentStrategy.d.ts +7 -0
  25. package/dist/DefaultWriteEnrichmentStrategy.d.ts +21 -0
  26. package/dist/DeleteEnrichmentStrategy.d.ts +11 -0
  27. package/dist/DriverLoader.d.ts +5 -0
  28. package/dist/Enrichment.d.ts +13 -0
  29. package/dist/EnrichmentPropertyType.d.ts +7 -0
  30. package/dist/ExpectConsoleMiddleware.d.ts +15 -0
  31. package/dist/FirstResultReader.d.ts +19 -0
  32. package/dist/HashsetOptimizedReadonlyEnrichmentStrategy.d.ts +9 -0
  33. package/dist/IBulkWriteStrategy.d.ts +12 -0
  34. package/dist/ICRUDRepository.d.ts +12 -0
  35. package/dist/ICRUDRepositoryFactory.d.ts +7 -0
  36. package/dist/ICommand.d.ts +20 -0
  37. package/dist/ICommandMiddleware.d.ts +12 -0
  38. package/dist/IConnection.d.ts +12 -0
  39. package/dist/IDatasource.d.ts +18 -0
  40. package/dist/IDatasourceFactory.d.ts +5 -0
  41. package/dist/IDriver.d.ts +19 -0
  42. package/dist/IEnriched.d.ts +6 -0
  43. package/dist/IReader.d.ts +8 -0
  44. package/dist/IReadonlyEnrichmentStrategy.d.ts +7 -0
  45. package/dist/IReadonlyRepository.d.ts +11 -0
  46. package/dist/IRepository.d.ts +4 -0
  47. package/dist/IRepositoryFactory.d.ts +7 -0
  48. package/dist/IRepositoryTree.d.ts +4 -0
  49. package/dist/IRepositoryTreeNode.d.ts +7 -0
  50. package/dist/ITransaction.d.ts +8 -0
  51. package/dist/IUnitOfWork.d.ts +5 -0
  52. package/dist/IWriteEnrichmentStrategy.d.ts +7 -0
  53. package/dist/Information.d.ts +5 -0
  54. package/dist/IsolationLevel.d.ts +7 -0
  55. package/dist/LazyWriteEnrichmentStrategy.d.ts +4 -0
  56. package/dist/NestedToObjectEnrichmentStrategy.d.ts +10 -0
  57. package/dist/Parameter.d.ts +7 -0
  58. package/dist/ParameterDirection.d.ts +7 -0
  59. package/dist/ProviderCatalog.d.ts +7 -0
  60. package/dist/ProviderNotImplementedError.d.ts +4 -0
  61. package/dist/ProviderNotInstalledError.d.ts +4 -0
  62. package/dist/ReadonlyRepository.d.ts +59 -0
  63. package/dist/ReadonlyRepositoryBuilder.d.ts +12 -0
  64. package/dist/ReadonlyRepositoryMappingOptions.d.ts +14 -0
  65. package/dist/ReadonlyRepositoryStatements.d.ts +8 -0
  66. package/dist/RepositoryAccess.d.ts +11 -0
  67. package/dist/RepositoryFactory.d.ts +23 -0
  68. package/dist/RepositoryNotRegisteredError.d.ts +4 -0
  69. package/dist/RepositoryTree.d.ts +6 -0
  70. package/dist/RepositoryTreeNode.d.ts +9 -0
  71. package/dist/Response.d.ts +7 -0
  72. package/dist/Row.d.ts +2 -0
  73. package/dist/SingleCommandIBulkWriteStrategy.d.ts +11 -0
  74. package/dist/StatementMappers.d.ts +16 -0
  75. package/dist/StoredEnrichment.d.ts +11 -0
  76. package/dist/StoredProcedureBulkWriteStrategy.d.ts +27 -0
  77. package/dist/StreamingReader.d.ts +16 -0
  78. package/dist/UnitOfWorkTransaction.d.ts +12 -0
  79. package/dist/UpdateEnrichmentStrategy.d.ts +18 -0
  80. package/dist/WriteMode.d.ts +1 -0
  81. package/dist/builders/Field.d.ts +5 -0
  82. package/dist/builders/Scalar.d.ts +1 -0
  83. package/dist/builders/index.d.ts +2 -0
  84. package/dist/collectAsync.d.ts +1 -0
  85. package/dist/converters/Cell.d.ts +2 -0
  86. package/dist/converters/ChangeCasingConverter.d.ts +7 -0
  87. package/dist/converters/Constructable.d.ts +1 -0
  88. package/dist/converters/MetaDataRowTypeConverter.d.ts +14 -0
  89. package/dist/converters/PluralizerConverter.d.ts +4 -0
  90. package/dist/converters/RegexConverter.d.ts +7 -0
  91. package/dist/converters/ReplaceConverter.d.ts +7 -0
  92. package/dist/converters/RowTypeConverter.d.ts +10 -0
  93. package/dist/converters/ToLowerCaseConverter.d.ts +4 -0
  94. package/dist/converters/ToUpperCaseConverter.d.ts +4 -0
  95. package/dist/converters/TypeConverter.d.ts +5 -0
  96. package/dist/createCRUDRepositoryOptions.d.ts +7 -0
  97. package/dist/createReadonlyRepositoryMappingOptions.d.ts +6 -0
  98. package/dist/dotEnv.d.ts +5 -0
  99. package/dist/index.d.ts +119 -0
  100. package/dist/mappers/ChangeCasingMapper.d.ts +9 -0
  101. package/dist/mappers/DictionaryMapper.d.ts +8 -0
  102. package/dist/mappers/FlatToNestedMapper.d.ts +20 -0
  103. package/dist/mappers/IFlatToNestedMapper.d.ts +6 -0
  104. package/dist/mappers/IMapper.d.ts +4 -0
  105. package/dist/mappers/IdentityMapper.d.ts +5 -0
  106. package/dist/mappers/PluralizerMapper.d.ts +6 -0
  107. package/dist/mappers/RowTypeMapper.d.ts +6 -0
  108. package/dist/mappers/TransformConverterMapper.d.ts +5 -0
  109. package/dist/mappers/TransformMapper.d.ts +6 -0
  110. package/dist/mappers/TypeMap.d.ts +8 -0
  111. package/dist/mappers/TypeMapGroup.d.ts +5 -0
  112. package/dist/mocks/index.d.ts +9 -0
  113. package/dist/mocks/mock-command.d.ts +28 -0
  114. package/dist/mocks/mock-connection.d.ts +22 -0
  115. package/dist/mocks/mock-datasource.d.ts +24 -0
  116. package/dist/mocks/mock-driver.d.ts +15 -0
  117. package/dist/mocks/mock-reader.d.ts +14 -0
  118. package/dist/mocks/mock-repository.d.ts +42 -0
  119. package/dist/mocks/mock-select-statement.d.ts +10 -0
  120. package/dist/mocks/mock-transaction.d.ts +16 -0
  121. package/dist/mocks/mock-where.d.ts +8 -0
  122. package/dist/parametersToRecord.d.ts +2 -0
  123. package/dist/readerToAsyncIterable.d.ts +2 -0
  124. package/dist/splitStatements.d.ts +1 -0
  125. package/dist/statementParameters.d.ts +1 -0
  126. package/dist/statementUsesParameter.d.ts +1 -0
  127. package/dist/statements/Aggregate.d.ts +6 -0
  128. package/dist/statements/ArrayExpression.d.ts +5 -0
  129. package/dist/statements/BulkDeleteStatement.d.ts +11 -0
  130. package/dist/statements/BulkDeleteStatementTextRenderer.d.ts +4 -0
  131. package/dist/statements/BulkInsertStatement.d.ts +12 -0
  132. package/dist/statements/BulkInsertStatementTextRenderer.d.ts +4 -0
  133. package/dist/statements/BulkUpdateStatement.d.ts +16 -0
  134. package/dist/statements/BulkUpdateStatementTextRenderer.d.ts +8 -0
  135. package/dist/statements/CheckConstraint.d.ts +7 -0
  136. package/dist/statements/Cmp.d.ts +9 -0
  137. package/dist/statements/Column.d.ts +9 -0
  138. package/dist/statements/ColumnDefault.d.ts +5 -0
  139. package/dist/statements/Condition.d.ts +3 -0
  140. package/dist/statements/ConditionRenderer.d.ts +12 -0
  141. package/dist/statements/CreateIndexStatement.d.ts +10 -0
  142. package/dist/statements/CreateIndexStatementTextRenderer.d.ts +5 -0
  143. package/dist/statements/CreateTableStatement.d.ts +11 -0
  144. package/dist/statements/CreateTableStatementTextRenderer.d.ts +18 -0
  145. package/dist/statements/DefaultStatementTextRenderer.d.ts +5 -0
  146. package/dist/statements/DeleteStatement.d.ts +9 -0
  147. package/dist/statements/DeleteStatementTextRenderer.d.ts +7 -0
  148. package/dist/statements/ExecuteStoredProcedureStatement.d.ts +9 -0
  149. package/dist/statements/ExecuteStoredProcedureStatementTextRenderer.d.ts +4 -0
  150. package/dist/statements/ExpressionEvaluator.d.ts +5 -0
  151. package/dist/statements/ExpressionRenderer.d.ts +8 -0
  152. package/dist/statements/ForeignKey.d.ts +19 -0
  153. package/dist/statements/IBulkDeleteStatement.d.ts +3 -0
  154. package/dist/statements/IBulkInsertStatement.d.ts +3 -0
  155. package/dist/statements/IBulkUpdateStatement.d.ts +3 -0
  156. package/dist/statements/ICondition.d.ts +4 -0
  157. package/dist/statements/IConditionVisitor.d.ts +6 -0
  158. package/dist/statements/ICreateIndexStatement.d.ts +3 -0
  159. package/dist/statements/ICreateTableStatement.d.ts +3 -0
  160. package/dist/statements/IDeleteStatement.d.ts +5 -0
  161. package/dist/statements/IExecuteStoredProcedureStatement.d.ts +3 -0
  162. package/dist/statements/IExpression.d.ts +2 -0
  163. package/dist/statements/IInsertStatement.d.ts +3 -0
  164. package/dist/statements/IReturnStatement.d.ts +3 -0
  165. package/dist/statements/ISelectStatement.d.ts +5 -0
  166. package/dist/statements/IStatement.d.ts +4 -0
  167. package/dist/statements/IStatementVisitor.d.ts +26 -0
  168. package/dist/statements/ITableConstraint.d.ts +5 -0
  169. package/dist/statements/IUpdateStatement.d.ts +5 -0
  170. package/dist/statements/IWhere.d.ts +6 -0
  171. package/dist/statements/Identifier.d.ts +5 -0
  172. package/dist/statements/InsertStatement.d.ts +9 -0
  173. package/dist/statements/InsertStatementTextRenderer.d.ts +4 -0
  174. package/dist/statements/Join.d.ts +14 -0
  175. package/dist/statements/Literal.d.ts +6 -0
  176. package/dist/statements/Native.d.ts +5 -0
  177. package/dist/statements/NotNull.d.ts +4 -0
  178. package/dist/statements/Operator.d.ts +107 -0
  179. package/dist/statements/OrderBy.d.ts +10 -0
  180. package/dist/statements/PrimaryKey.d.ts +7 -0
  181. package/dist/statements/ReturnStatement.d.ts +9 -0
  182. package/dist/statements/ReturnStatementTextRenderer.d.ts +4 -0
  183. package/dist/statements/SelectInsertedIdStatement.d.ts +8 -0
  184. package/dist/statements/SelectInsertedIdStatementTextRenderer.d.ts +4 -0
  185. package/dist/statements/SelectStatement.d.ts +20 -0
  186. package/dist/statements/SelectStatementOptions.d.ts +15 -0
  187. package/dist/statements/SelectStatementTextRenderer.d.ts +19 -0
  188. package/dist/statements/StatementEvaluator.d.ts +4 -0
  189. package/dist/statements/StatementParser.d.ts +4 -0
  190. package/dist/statements/StatementRenderer.d.ts +42 -0
  191. package/dist/statements/StatementTextRenderer.d.ts +14 -0
  192. package/dist/statements/Subquery.d.ts +6 -0
  193. package/dist/statements/UniqueConstraint.d.ts +7 -0
  194. package/dist/statements/UpdateStatement.d.ts +14 -0
  195. package/dist/statements/UpdateStatementTextRenderer.d.ts +14 -0
  196. package/dist/statements/Where.d.ts +16 -0
  197. package/dist/statements/WhereText.d.ts +8 -0
  198. package/dist/statements/index.d.ts +75 -0
  199. package/dist/stubs/StubCommand.d.ts +15 -0
  200. package/dist/stubs/StubConnection.d.ts +13 -0
  201. package/dist/stubs/StubDatasource.d.ts +20 -0
  202. package/dist/stubs/StubReader.d.ts +11 -0
  203. package/dist/stubs/StubRepository.d.ts +22 -0
  204. package/dist/stubs/StubTransaction.d.ts +10 -0
  205. package/dist/stubs/createStubDatasource.d.ts +2 -0
  206. package/dist/stubs/index.d.ts +7 -0
  207. package/dist/stubs/notImplemented.d.ts +1 -0
  208. package/package.json +24 -4
  209. package/src/ArrayReader.test.ts +23 -0
  210. package/src/ArrayReader.ts +32 -0
  211. package/src/BatchCommandIBulkWriteStrategy.ts +228 -0
  212. package/src/BuiltRepository.ts +17 -0
  213. package/src/BulkCRUDRepository.test.ts +183 -0
  214. package/src/BulkCRUDRepository.ts +84 -0
  215. package/src/BulkCommand.ts +6 -0
  216. package/src/BulkWriteEnrichment.ts +19 -0
  217. package/src/BulkWriteStrategy.test.ts +293 -0
  218. package/src/CRUDRepository.test.ts +420 -0
  219. package/src/CRUDRepository.ts +264 -0
  220. package/src/CRUDRepositoryBuilder.ts +53 -0
  221. package/src/CRUDRepositoryOptions.test.ts +76 -0
  222. package/src/CRUDRepositoryOptions.ts +8 -0
  223. package/src/CRUDRepositoryStatements.ts +43 -0
  224. package/src/CascadeDeleteEnrichmentStrategy.ts +51 -0
  225. package/src/CascadeDeleteUpdateEnrichmentStrategy.ts +28 -0
  226. package/src/Command.test.ts +105 -0
  227. package/src/CommandMiddlewareHost.test.ts +98 -0
  228. package/src/CommandMiddlewareHost.ts +113 -0
  229. package/src/Connection.test.ts +34 -0
  230. package/src/ConsoleCommandMiddleware.test.ts +149 -0
  231. package/src/ConsoleCommandMiddleware.ts +64 -0
  232. package/src/CreateEnrichmentStrategy.ts +82 -0
  233. package/src/Datasource.test.ts +63 -0
  234. package/src/Datasource.ts +152 -0
  235. package/src/DatasourceError.test.ts +10 -0
  236. package/src/DatasourceError.ts +6 -0
  237. package/src/DatasourceFactory.test.ts +159 -0
  238. package/src/DatasourceFactory.ts +86 -0
  239. package/src/DatasourceOptions.ts +1 -0
  240. package/src/DatasourceUrl.ts +37 -0
  241. package/src/DatasourceUrlParser.test.ts +173 -0
  242. package/src/DatasourceUrlParser.ts +188 -0
  243. package/src/DefaultCreateEnrichmentStrategy.ts +21 -0
  244. package/src/DefaultReadonlyEnrichmentStrategy.ts +164 -0
  245. package/src/DefaultUpdateEnrichmentStrategy.ts +40 -0
  246. package/src/DefaultWriteEnrichmentStrategy.ts +151 -0
  247. package/src/DeleteEnrichmentStrategy.ts +56 -0
  248. package/src/DriverLoader.ts +97 -0
  249. package/src/Enrichment.ts +15 -0
  250. package/src/EnrichmentPropertyType.ts +9 -0
  251. package/src/ExpectConsoleMiddleware.test.ts +79 -0
  252. package/src/ExpectConsoleMiddleware.ts +47 -0
  253. package/src/FirstResultReader.test.ts +43 -0
  254. package/src/FirstResultReader.ts +49 -0
  255. package/src/HashsetOptimizedReadonlyEnrichmentStrategy.ts +80 -0
  256. package/src/IBulkWriteStrategy.ts +13 -0
  257. package/src/ICRUDRepository.ts +13 -0
  258. package/src/ICRUDRepositoryFactory.ts +8 -0
  259. package/src/ICommand.ts +45 -0
  260. package/src/ICommandMiddleware.ts +20 -0
  261. package/src/IConnection.ts +13 -0
  262. package/src/IDatasource.ts +27 -0
  263. package/src/IDatasourceFactory.ts +6 -0
  264. package/src/IDriver.ts +24 -0
  265. package/src/IEnriched.ts +11 -0
  266. package/src/IReader.ts +8 -0
  267. package/src/IReadonlyEnrichmentStrategy.ts +19 -0
  268. package/src/IReadonlyRepository.ts +21 -0
  269. package/src/IRepository.ts +5 -0
  270. package/src/IRepositoryFactory.ts +8 -0
  271. package/src/IRepositoryTree.ts +5 -0
  272. package/src/IRepositoryTreeNode.ts +8 -0
  273. package/src/ITransaction.ts +9 -0
  274. package/src/IUnitOfWork.ts +5 -0
  275. package/src/IWriteEnrichmentStrategy.ts +8 -0
  276. package/src/Information.ts +5 -0
  277. package/src/IsolationLevel.test.ts +13 -0
  278. package/src/IsolationLevel.ts +8 -0
  279. package/src/LazyWriteEnrichmentStrategy.ts +5 -0
  280. package/src/NestedToObjectEnrichmentStrategy.ts +33 -0
  281. package/src/Parameter.ts +8 -0
  282. package/src/ParameterDirection.ts +9 -0
  283. package/src/ProviderCatalog.test.ts +110 -0
  284. package/src/ProviderCatalog.ts +21 -0
  285. package/src/ProviderNotImplementedError.test.ts +11 -0
  286. package/src/ProviderNotImplementedError.ts +9 -0
  287. package/src/ProviderNotInstalledError.test.ts +11 -0
  288. package/src/ProviderNotInstalledError.ts +9 -0
  289. package/src/ReadonlyRepository.test.ts +406 -0
  290. package/src/ReadonlyRepository.ts +276 -0
  291. package/src/ReadonlyRepositoryBuilder.ts +53 -0
  292. package/src/ReadonlyRepositoryMappingOptions.ts +15 -0
  293. package/src/ReadonlyRepositoryStatements.ts +13 -0
  294. package/src/RepositoryAccess.ts +14 -0
  295. package/src/RepositoryFactory.test.ts +94 -0
  296. package/src/RepositoryFactory.ts +115 -0
  297. package/src/RepositoryNotRegisteredError.ts +9 -0
  298. package/src/RepositoryTree.ts +6 -0
  299. package/src/RepositoryTreeNode.ts +11 -0
  300. package/src/Response.ts +15 -0
  301. package/src/Row.ts +3 -0
  302. package/src/SingleCommandIBulkWriteStrategy.ts +35 -0
  303. package/src/StatementMappers.test.ts +221 -0
  304. package/src/StatementMappers.ts +110 -0
  305. package/src/StoredEnrichment.ts +25 -0
  306. package/src/StoredProcedureBulkWriteStrategy.ts +164 -0
  307. package/src/StreamingReader.test.ts +126 -0
  308. package/src/StreamingReader.ts +64 -0
  309. package/src/Transaction.test.ts +37 -0
  310. package/src/UnitOfWorkTransaction.test.ts +43 -0
  311. package/src/UnitOfWorkTransaction.ts +50 -0
  312. package/src/UpdateEnrichmentStrategy.ts +97 -0
  313. package/src/UserViewCRUDRepository.test.ts +323 -0
  314. package/src/WriteMode.ts +1 -0
  315. package/src/builders/Field.ts +6 -0
  316. package/src/builders/Scalar.ts +1 -0
  317. package/src/builders/builders.test.ts +404 -0
  318. package/src/builders/index.ts +2 -0
  319. package/src/collectAsync.ts +7 -0
  320. package/src/converters/Cell.ts +10 -0
  321. package/src/converters/ChangeCasingConverter.test.ts +34 -0
  322. package/src/converters/ChangeCasingConverter.ts +59 -0
  323. package/src/converters/Constructable.ts +1 -0
  324. package/src/converters/MetaDataRowTypeConverter.ts +80 -0
  325. package/src/converters/PluralizerConverter.test.ts +43 -0
  326. package/src/converters/PluralizerConverter.ts +67 -0
  327. package/src/converters/RegexConverter.test.ts +11 -0
  328. package/src/converters/RegexConverter.ts +14 -0
  329. package/src/converters/ReplaceConverter.test.ts +9 -0
  330. package/src/converters/ReplaceConverter.ts +6 -0
  331. package/src/converters/RowTypeConverter.test.ts +79 -0
  332. package/src/converters/RowTypeConverter.ts +33 -0
  333. package/src/converters/ToLowerCaseConverter.test.ts +9 -0
  334. package/src/converters/ToLowerCaseConverter.ts +4 -0
  335. package/src/converters/ToUpperCaseConverter.test.ts +9 -0
  336. package/src/converters/ToUpperCaseConverter.ts +4 -0
  337. package/src/converters/TypeConverter.ts +6 -0
  338. package/src/createCRUDRepositoryOptions.ts +21 -0
  339. package/src/createReadonlyRepositoryMappingOptions.ts +26 -0
  340. package/src/dotEnv.test.ts +21 -0
  341. package/src/dotEnv.ts +16 -0
  342. package/src/edgeCases.test.ts +485 -0
  343. package/src/index.ts +222 -0
  344. package/src/mappers/ChangeCasingMapper.test.ts +32 -0
  345. package/src/mappers/ChangeCasingMapper.ts +15 -0
  346. package/src/mappers/DictionaryMapper.test.ts +69 -0
  347. package/src/mappers/DictionaryMapper.ts +16 -0
  348. package/src/mappers/FlatToNestedMapper.test.ts +269 -0
  349. package/src/mappers/FlatToNestedMapper.ts +127 -0
  350. package/src/mappers/IFlatToNestedMapper.ts +7 -0
  351. package/src/mappers/IMapper.ts +4 -0
  352. package/src/mappers/IdentityMapper.test.ts +12 -0
  353. package/src/mappers/IdentityMapper.ts +6 -0
  354. package/src/mappers/PluralizerMapper.test.ts +40 -0
  355. package/src/mappers/PluralizerMapper.ts +9 -0
  356. package/src/mappers/RowTypeMapper.test.ts +12 -0
  357. package/src/mappers/RowTypeMapper.ts +13 -0
  358. package/src/mappers/TransformConverterMapper.test.ts +181 -0
  359. package/src/mappers/TransformConverterMapper.ts +11 -0
  360. package/src/mappers/TransformMapper.ts +8 -0
  361. package/src/mappers/TypeMap.ts +10 -0
  362. package/src/mappers/TypeMapGroup.ts +6 -0
  363. package/src/mappers/transformMapper.test.ts +66 -0
  364. package/src/mocks/MockCommand.test.ts +75 -0
  365. package/src/mocks/MockConnection.test.ts +34 -0
  366. package/src/mocks/MockDatasource.test.ts +40 -0
  367. package/src/mocks/MockReader.test.ts +17 -0
  368. package/src/mocks/MockRepository.test.ts +32 -0
  369. package/src/mocks/MockSelectStatement.test.ts +11 -0
  370. package/src/mocks/MockTransaction.test.ts +17 -0
  371. package/src/mocks/MockWhere.test.ts +11 -0
  372. package/src/mocks/index.ts +9 -0
  373. package/src/mocks/mock-command.ts +66 -0
  374. package/src/mocks/mock-connection.ts +57 -0
  375. package/src/mocks/mock-datasource.ts +65 -0
  376. package/src/mocks/mock-driver.ts +27 -0
  377. package/src/mocks/mock-reader.ts +38 -0
  378. package/src/mocks/mock-repository.ts +91 -0
  379. package/src/mocks/mock-select-statement.ts +17 -0
  380. package/src/mocks/mock-transaction.ts +31 -0
  381. package/src/mocks/mock-where.ts +13 -0
  382. package/src/parametersToRecord.test.ts +19 -0
  383. package/src/parametersToRecord.ts +11 -0
  384. package/src/public-surface.test.ts +23 -0
  385. package/src/readWithWhereClauseAndCustomFlatToNestedObjectMappingOptions.test.ts +126 -0
  386. package/src/readerToAsyncIterable.test.ts +39 -0
  387. package/src/readerToAsyncIterable.ts +11 -0
  388. package/src/repository.test.ts +410 -0
  389. package/src/repository.type.test.ts +29 -0
  390. package/src/splitStatements.ts +99 -0
  391. package/src/statementParameters.ts +22 -0
  392. package/src/statementUsesParameter.ts +4 -0
  393. package/src/statements/Aggregate.ts +9 -0
  394. package/src/statements/ArrayExpression.ts +5 -0
  395. package/src/statements/BulkDeleteStatement.ts +18 -0
  396. package/src/statements/BulkDeleteStatementTextRenderer.ts +16 -0
  397. package/src/statements/BulkInsertStatement.ts +37 -0
  398. package/src/statements/BulkInsertStatementTextRenderer.ts +10 -0
  399. package/src/statements/BulkUpdateStatement.ts +24 -0
  400. package/src/statements/BulkUpdateStatementTextRenderer.ts +29 -0
  401. package/src/statements/CheckConstraint.ts +9 -0
  402. package/src/statements/Cmp.ts +12 -0
  403. package/src/statements/Column.ts +10 -0
  404. package/src/statements/ColumnDefault.ts +6 -0
  405. package/src/statements/Condition.ts +3 -0
  406. package/src/statements/ConditionRenderer.ts +17 -0
  407. package/src/statements/CreateIndexStatement.ts +18 -0
  408. package/src/statements/CreateIndexStatementTextRenderer.ts +11 -0
  409. package/src/statements/CreateTableStatement.ts +18 -0
  410. package/src/statements/CreateTableStatementTextRenderer.ts +92 -0
  411. package/src/statements/DefaultStatementTextRenderer.ts +9 -0
  412. package/src/statements/DeleteStatement.ts +15 -0
  413. package/src/statements/DeleteStatementTextRenderer.ts +12 -0
  414. package/src/statements/ExecuteStoredProcedureStatement.ts +15 -0
  415. package/src/statements/ExecuteStoredProcedureStatementTextRenderer.ts +15 -0
  416. package/src/statements/ExpressionEvaluator.ts +166 -0
  417. package/src/statements/ExpressionRenderer.ts +161 -0
  418. package/src/statements/ForeignKey.ts +23 -0
  419. package/src/statements/IBulkDeleteStatement.ts +3 -0
  420. package/src/statements/IBulkInsertStatement.ts +3 -0
  421. package/src/statements/IBulkUpdateStatement.ts +3 -0
  422. package/src/statements/ICondition.ts +5 -0
  423. package/src/statements/IConditionVisitor.ts +7 -0
  424. package/src/statements/ICreateIndexStatement.ts +3 -0
  425. package/src/statements/ICreateTableStatement.ts +3 -0
  426. package/src/statements/IDeleteStatement.ts +6 -0
  427. package/src/statements/IExecuteStoredProcedureStatement.ts +3 -0
  428. package/src/statements/IExpression.ts +1 -0
  429. package/src/statements/IInsertStatement.ts +3 -0
  430. package/src/statements/IReturnStatement.ts +3 -0
  431. package/src/statements/ISelectStatement.ts +6 -0
  432. package/src/statements/IStatement.ts +5 -0
  433. package/src/statements/IStatementVisitor.ts +27 -0
  434. package/src/statements/ITableConstraint.ts +6 -0
  435. package/src/statements/IUpdateStatement.ts +6 -0
  436. package/src/statements/IWhere.ts +7 -0
  437. package/src/statements/Identifier.ts +5 -0
  438. package/src/statements/InsertStatement.ts +15 -0
  439. package/src/statements/InsertStatementTextRenderer.ts +7 -0
  440. package/src/statements/Join.ts +26 -0
  441. package/src/statements/Literal.ts +6 -0
  442. package/src/statements/Native.ts +5 -0
  443. package/src/statements/NotNull.ts +3 -0
  444. package/src/statements/Operator.ts +234 -0
  445. package/src/statements/OrderBy.ts +19 -0
  446. package/src/statements/PrimaryKey.ts +9 -0
  447. package/src/statements/ReturnStatement.ts +15 -0
  448. package/src/statements/ReturnStatementTextRenderer.ts +15 -0
  449. package/src/statements/SelectInsertedIdStatement.test.ts +11 -0
  450. package/src/statements/SelectInsertedIdStatement.ts +11 -0
  451. package/src/statements/SelectInsertedIdStatementTextRenderer.ts +7 -0
  452. package/src/statements/SelectStatement.ts +34 -0
  453. package/src/statements/SelectStatementOptions.ts +16 -0
  454. package/src/statements/SelectStatementTextRenderer.ts +71 -0
  455. package/src/statements/StatementCompile.test.ts +231 -0
  456. package/src/statements/StatementEvaluator.ts +5 -0
  457. package/src/statements/StatementParser.test.ts +304 -0
  458. package/src/statements/StatementParser.ts +461 -0
  459. package/src/statements/StatementRenderer.ts +120 -0
  460. package/src/statements/StatementTextRenderer.ts +60 -0
  461. package/src/statements/Subquery.ts +6 -0
  462. package/src/statements/UniqueConstraint.ts +9 -0
  463. package/src/statements/UpdateStatement.ts +34 -0
  464. package/src/statements/UpdateStatementTextRenderer.ts +63 -0
  465. package/src/statements/Where.ts +250 -0
  466. package/src/statements/WhereText.ts +10 -0
  467. package/src/statements/index.ts +75 -0
  468. package/src/stubs/StubCommand.ts +30 -0
  469. package/src/stubs/StubConnection.ts +21 -0
  470. package/src/stubs/StubDatasource.test.ts +99 -0
  471. package/src/stubs/StubDatasource.ts +60 -0
  472. package/src/stubs/StubReader.ts +25 -0
  473. package/src/stubs/StubRepository.ts +42 -0
  474. package/src/stubs/StubTransaction.ts +17 -0
  475. package/src/stubs/createStubDatasource.ts +4 -0
  476. package/src/stubs/index.ts +7 -0
  477. package/src/stubs/notImplemented.ts +5 -0
  478. package/src/tests/contact/Address.ts +14 -0
  479. package/src/tests/contact/AddressType.ts +6 -0
  480. package/src/tests/contact/Base.ts +7 -0
  481. package/src/tests/contact/Contact.ts +12 -0
  482. package/src/tests/contact/ContactBase.ts +8 -0
  483. package/src/tests/contact/ContactChangeLog.ts +8 -0
  484. package/src/tests/contact/ContactGroup.ts +6 -0
  485. package/src/tests/contact/ContactGroupBase.ts +6 -0
  486. package/src/tests/contact/ContactGroupMember.ts +6 -0
  487. package/src/tests/contact/ContactSource.ts +6 -0
  488. package/src/tests/contact/ContactType.ts +6 -0
  489. package/src/tests/contact/ContactsService.test.ts +118 -0
  490. package/src/tests/contact/ContactsService.ts +32 -0
  491. package/src/tests/contact/ImportContactRequest.ts +4 -0
  492. package/src/tests/contact/ImportContactResult.ts +5 -0
  493. package/src/tests/contact/LegacyContact.ts +7 -0
  494. package/src/tests/contact/LegacyMigrationResult.ts +5 -0
  495. package/src/tests/contact/Phone.ts +9 -0
  496. package/src/tests/contact/PhoneType.ts +6 -0
  497. package/src/tests/contact/asContactsView.ts +63 -0
  498. package/src/tests/contact/contactColumns.ts +40 -0
  499. package/src/tests/contact/contactLookupIds.ts +32 -0
  500. package/src/tests/contact/contactLookups.ts +6 -0
  501. package/src/tests/contact/contactsParity.ts +63 -0
  502. package/src/tests/contact/contactsServiceOf.ts +38 -0
  503. package/src/tests/contact/contactsView.ts +31 -0
  504. package/src/tests/contact/expectContactsView.ts +23 -0
  505. package/src/tests/contact/extraContact.ts +61 -0
  506. package/src/tests/contact/logMapped.ts +5 -0
  507. package/src/tests/contact/seedContacts.ts +31 -0
  508. package/README.md +0 -3
@@ -0,0 +1,12 @@
1
+ import type { IReader } from "./IReader.js";
2
+ export declare class ArrayReader<T = unknown> implements IReader<T> {
3
+ private readonly rows;
4
+ private index;
5
+ current: T | undefined;
6
+ constructor(rows: readonly T[]);
7
+ next(): Promise<boolean>;
8
+ read(): AsyncIterable<T>;
9
+ nextResult(): Promise<boolean>;
10
+ dispose(): Promise<void>;
11
+ [Symbol.asyncDispose]: () => Promise<void>;
12
+ }
@@ -0,0 +1,33 @@
1
+ import type { CRUDRepository } from "./CRUDRepository.js";
2
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
3
+ import type { Response } from "./Response.js";
4
+ import type { IWhere } from "./statements/IWhere.js";
5
+ import type { IBulkWriteStrategy } from "./IBulkWriteStrategy.js";
6
+ import { type ICommand } from "./ICommand.js";
7
+ export declare class BatchCommandIBulkWriteStrategy<T extends object> implements IBulkWriteStrategy<T> {
8
+ repo: CRUDRepository<T>;
9
+ command: ICommand;
10
+ options: CRUDRepositoryOptions<T>;
11
+ private cached?;
12
+ attach: (command: ICommand, options: CRUDRepositoryOptions<T>) => void;
13
+ create: (items: T[]) => Promise<Response>;
14
+ update: (items: T[], byWhere: IWhere | undefined) => Promise<Response>;
15
+ delete: (items: T[], byWhere: IWhere | undefined) => Promise<Response>;
16
+ private then;
17
+ private writeCreates;
18
+ private writeUpdates;
19
+ private writeDeletes;
20
+ private chunked;
21
+ private sendEach;
22
+ private mappedInsert;
23
+ private mappedUpdate;
24
+ private mappedDelete;
25
+ private updateCommand;
26
+ private deleteCommand;
27
+ private statements;
28
+ private get ids();
29
+ private reverse;
30
+ private fields;
31
+ private cell;
32
+ private idsWhere;
33
+ }
@@ -0,0 +1,16 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { Cells } from "./converters/Cell.js";
3
+ import type { Constructable } from "./converters/Constructable.js";
4
+ import type { TypeConverter } from "./converters/TypeConverter.js";
5
+ import type { IMapper } from "./mappers/IMapper.js";
6
+ import type { ReadonlyRepositoryStatements } from "./ReadonlyRepositoryStatements.js";
7
+ export type BuiltRepository<T = Cells> = {
8
+ connection: IConnection;
9
+ rowConverter?: TypeConverter<Cells, Cells>;
10
+ objectConverter: TypeConverter<T, Cells>;
11
+ propertyMappings: IMapper<string, string>;
12
+ entityMapper: IMapper<string, string>;
13
+ statements: ReadonlyRepositoryStatements;
14
+ ids: string[];
15
+ type: Constructable<T>;
16
+ };
@@ -0,0 +1,17 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { Constructable } from "./converters/Constructable.js";
3
+ import type { Cells } from "./converters/Cell.js";
4
+ import { CRUDRepository } from "./CRUDRepository.js";
5
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
6
+ import type { Response } from "./Response.js";
7
+ import type { IWhere } from "./statements/IWhere.js";
8
+ import type { IBulkWriteStrategy } from "./IBulkWriteStrategy.js";
9
+ export declare class BulkCRUDRepository<T extends object = Cells> extends CRUDRepository<T> {
10
+ private readonly strategy;
11
+ private readonly transactional;
12
+ constructor(type: Constructable<T>, connection: IConnection, bulk?: IBulkWriteStrategy<T>);
13
+ constructor(connection: IConnection, options: CRUDRepositoryOptions<T>, bulk?: IBulkWriteStrategy<T>);
14
+ createBulk: (items: T[]) => Promise<T[]>;
15
+ updateBulk: (items: T[], byWhere?: IWhere) => Promise<Response>;
16
+ deleteBulk: (items: T[], byWhere?: IWhere) => Promise<Response>;
17
+ }
@@ -0,0 +1,5 @@
1
+ import type { Parameter } from "./Parameter.js";
2
+ export interface BulkCommand {
3
+ text: string;
4
+ parameters: Parameter[];
5
+ }
@@ -0,0 +1,4 @@
1
+ import type { CRUDRepository } from "./CRUDRepository.js";
2
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
3
+ import type { WriteMode } from "./WriteMode.js";
4
+ export declare const afterBulkWrite: <T extends object>(repo: CRUDRepository<T>, options: CRUDRepositoryOptions<T>, items: T[], mode: WriteMode) => Promise<void>;
@@ -0,0 +1,40 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import type { Response } from "./Response.js";
4
+ import type { IWhere } from "./statements/IWhere.js";
5
+ import type { Scalar } from "./builders/Scalar.js";
6
+ import type { Cells } from "./converters/Cell.js";
7
+ import type { Constructable } from "./converters/Constructable.js";
8
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
9
+ import { ReadonlyRepository } from "./ReadonlyRepository.js";
10
+ import type { Enrichment } from "./Enrichment.js";
11
+ import type { IReadonlyEnrichmentStrategy } from "./IReadonlyEnrichmentStrategy.js";
12
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
13
+ export declare class CRUDRepository<T = Cells> extends ReadonlyRepository<T> implements ICRUDRepository<T> {
14
+ readonly ids: readonly string[];
15
+ private readonly crudStatements;
16
+ private readonly tree;
17
+ private readonly write;
18
+ private get useTransaction();
19
+ constructor(type: Constructable<T>, connection: IConnection);
20
+ constructor(connection: IConnection, options: CRUDRepositoryOptions<T>);
21
+ addEnriched<TRelated extends object>(enrichment: Enrichment, via: IReadonlyRepository<TRelated>, strategy?: IReadonlyEnrichmentStrategy<T & object>): this;
22
+ addLinked<TRelated extends object, TLink extends object>(enrichment: Enrichment, via: IReadonlyRepository<TRelated>, link: ICRUDRepository<TLink>, strategy?: IReadonlyEnrichmentStrategy<T & object>): this;
23
+ create: (item: T) => Promise<T>;
24
+ update: (item: T, byWhere?: IWhere) => Promise<Response>;
25
+ delete: (item: T, byWhere?: IWhere) => Promise<Response>;
26
+ private inTransaction;
27
+ private createCore;
28
+ private updateCore;
29
+ private deleteCore;
30
+ readSingleById: (id: Scalar | Cells) => Promise<T | undefined>;
31
+ private insert;
32
+ private copyInsertedId;
33
+ private idValue;
34
+ private save;
35
+ private remove;
36
+ private byId;
37
+ private reverseConvert;
38
+ private idWhere;
39
+ protected enrichmentInto: (name: string) => boolean;
40
+ }
@@ -0,0 +1,19 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
3
+ import { CRUDRepository } from "./CRUDRepository.js";
4
+ import { CRUDRepositoryStatements } from "./CRUDRepositoryStatements.js";
5
+ import type { BuiltRepository } from "./BuiltRepository.js";
6
+ import type { Constructable } from "./converters/Constructable.js";
7
+ import { ReadonlyRepositoryBuilder } from "./ReadonlyRepositoryBuilder.js";
8
+ import { ReadonlyRepositoryStatements } from "./ReadonlyRepositoryStatements.js";
9
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
10
+ export declare const repositoryParts: <T>(typeOrConnection: Constructable<T> | IConnection, connectionOrOptions?: IConnection | CRUDRepositoryOptions<T>) => {
11
+ built: BuiltRepository<T>;
12
+ statements: CRUDRepositoryStatements;
13
+ };
14
+ export declare class CRUDRepositoryBuilder<T = object> extends ReadonlyRepositoryBuilder<T> {
15
+ crudStatements?: CRUDRepositoryStatements;
16
+ protected ids: (options: ReadonlyRepositoryMappingOptions<T>) => string[];
17
+ protected statements: (table: string, columns: string[]) => ReadonlyRepositoryStatements;
18
+ build: (connection: IConnection, options: CRUDRepositoryOptions<T>) => CRUDRepository<T>;
19
+ }
@@ -0,0 +1,7 @@
1
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
2
+ import type { Cells } from "./converters/Cell.js";
3
+ import type { IWriteEnrichmentStrategy } from "./IWriteEnrichmentStrategy.js";
4
+ export type CRUDRepositoryOptions<T = Cells> = ReadonlyRepositoryMappingOptions<T> & {
5
+ ids?: string[];
6
+ write?: IWriteEnrichmentStrategy<T>;
7
+ };
@@ -0,0 +1,17 @@
1
+ import type { Cell } from "./converters/Cell.js";
2
+ import type { Field } from "./builders/Field.js";
3
+ import type { IMapper } from "./mappers/IMapper.js";
4
+ import { DeleteStatement } from "./statements/DeleteStatement.js";
5
+ import { InsertStatement } from "./statements/InsertStatement.js";
6
+ import { SelectInsertedIdStatement } from "./statements/SelectInsertedIdStatement.js";
7
+ import { UpdateStatement } from "./statements/UpdateStatement.js";
8
+ import type { IWhere } from "./statements/IWhere.js";
9
+ import { ReadonlyRepositoryStatements } from "./ReadonlyRepositoryStatements.js";
10
+ export declare class CRUDRepositoryStatements extends ReadonlyRepositoryStatements {
11
+ private readonly mappings;
12
+ constructor(table: string, columns: readonly string[], entityMappers?: IMapper<string, string>, propertyMappers?: IMapper<string, string>);
13
+ insert: (fields: Field[]) => InsertStatement;
14
+ update: (fields: Field[], where?: IWhere, cell?: (name: string, value: Cell) => Cell) => UpdateStatement;
15
+ delete: (where?: IWhere, cell?: (name: string, value: Cell) => Cell) => DeleteStatement;
16
+ selectInsertedId: (column: string) => SelectInsertedIdStatement;
17
+ }
@@ -0,0 +1,7 @@
1
+ import { DeleteEnrichmentStrategy } from "./DeleteEnrichmentStrategy.js";
2
+ import type { Enrichment } from "./Enrichment.js";
3
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
4
+ export declare class CascadeDeleteEnrichmentStrategy<T> extends DeleteEnrichmentStrategy<T> {
5
+ deleteChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T, deleteNested: (rows: TChild[]) => Promise<void>): Promise<void>;
6
+ deleteLinked<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import { UpdateEnrichmentStrategy } from "./UpdateEnrichmentStrategy.js";
4
+ export declare class CascadeDeleteUpdateEnrichmentStrategy<T> extends UpdateEnrichmentStrategy<T> {
5
+ private readonly create;
6
+ updateChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
7
+ updateLinked<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
8
+ }
@@ -0,0 +1,22 @@
1
+ import type { ICommandMiddleware } from "./ICommandMiddleware.js";
2
+ import type { IReader } from "./IReader.js";
3
+ import type { Parameter } from "./Parameter.js";
4
+ import type { Response } from "./Response.js";
5
+ import type { Row } from "./Row.js";
6
+ import type { Cells } from "./converters/Cell.js";
7
+ import type { IStatement } from "./statements/IStatement.js";
8
+ import { Native } from "./statements/Native.js";
9
+ export declare class CommandMiddlewareHost {
10
+ private readonly middlewares;
11
+ addMiddleware(middleware: ICommandMiddleware): this;
12
+ execute(text: string, parameters?: Parameter[]): Promise<Response>;
13
+ executeReader(text: string, parameters?: Parameter[]): Promise<IReader<Cells>>;
14
+ executeStatement(statement: IStatement, parameters?: Parameter[]): Promise<Response>;
15
+ executeReaderStatement(statement: IStatement, parameters?: Parameter[]): Promise<IReader<Cells>>;
16
+ executeNative(_text: Native, _parameters?: Parameter[]): Promise<Response>;
17
+ executeReaderNative(_text: Native, _parameters?: Parameter[]): Promise<IReader<Cells>>;
18
+ run<T>(text: string, params: Parameter[] | undefined, fn: (text: string, params?: Parameter[]) => Promise<{
19
+ value: T;
20
+ rows: readonly Row[];
21
+ }>): Promise<T>;
22
+ }
@@ -0,0 +1,14 @@
1
+ import type { ICommandMiddleware } from "./ICommandMiddleware.js";
2
+ import type { Parameter } from "./Parameter.js";
3
+ import type { Row } from "./Row.js";
4
+ export declare const formatElapsed: (elapsedMs: number) => string;
5
+ export declare class ConsoleCommandMiddleware implements ICommandMiddleware {
6
+ private readonly write;
7
+ private readonly now;
8
+ private readonly options;
9
+ constructor(write?: (line: string) => void, now?: () => Date, options?: Record<string, string>);
10
+ beforeCommand: (text: string, params?: ReadonlyArray<Parameter>) => void;
11
+ afterCommand: (text: string, _params: ReadonlyArray<Parameter> | undefined, results: ReadonlyArray<Row>, elapsedMs: number) => void;
12
+ private verbose;
13
+ private line;
14
+ }
@@ -0,0 +1,14 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import type { Scalar } from "./builders/Scalar.js";
4
+ export declare abstract class CreateEnrichmentStrategy<T> {
5
+ abstract createChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
6
+ abstract createLinked<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
7
+ collectChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): TChild[];
8
+ protected getCell: <TItem>(item: TItem, name: string) => Scalar | object | undefined;
9
+ protected presentCell: (value: Scalar | object | undefined) => value is Scalar;
10
+ protected payloadOf: <TChild extends object, TParent>(parent: TParent, into: string, enrichment?: Enrichment) => TChild[];
11
+ protected stampCell: <TItem extends object>(related: TItem, by: string, key: Scalar | object | undefined) => void;
12
+ protected relatedIds: <TParent>(parent: TParent, enrichment: Enrichment) => Scalar[];
13
+ protected requiredKey: <TParent>(parent: TParent, enrichment: Enrichment) => Scalar;
14
+ }
@@ -0,0 +1,30 @@
1
+ import type { Constructable } from "./converters/Constructable.js";
2
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
3
+ import type { ICommand } from "./ICommand.js";
4
+ import type { IConnection } from "./IConnection.js";
5
+ import type { IDatasource } from "./IDatasource.js";
6
+ import type { IDriver } from "./IDriver.js";
7
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
8
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
9
+ import type { DatasourceOptions } from "./DatasourceOptions.js";
10
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
11
+ import { RepositoryFactory } from "./RepositoryFactory.js";
12
+ export declare class Datasource implements IDatasource {
13
+ readonly provider: string;
14
+ private readonly driver;
15
+ private readonly options?;
16
+ private connection?;
17
+ readonly repositories: RepositoryFactory;
18
+ constructor(provider: string, driver: IDriver, options?: DatasourceOptions | undefined);
19
+ private defaultConnection;
20
+ createConnection: () => Promise<IConnection>;
21
+ createCommand: (connection?: IConnection) => Promise<ICommand>;
22
+ private applyCrud;
23
+ private applyReadonly;
24
+ createRepository<T>(type: Constructable<T>, connection?: IConnection, options?: CRUDRepositoryOptions<T>): ICRUDRepository<T>;
25
+ createRepository(typeName: string, connection?: IConnection): ICRUDRepository;
26
+ createReadonlyRepository<T>(type: Constructable<T>, connection?: IConnection, options?: ReadonlyRepositoryMappingOptions<T>): IReadonlyRepository<T>;
27
+ createReadonlyRepository(typeName: string, connection?: IConnection): IReadonlyRepository;
28
+ static create: (options?: DatasourceOptions) => Datasource;
29
+ static get default(): Datasource;
30
+ }
@@ -0,0 +1,3 @@
1
+ export declare class DatasourceError extends Error {
2
+ constructor(message: string);
3
+ }
@@ -0,0 +1,12 @@
1
+ import type { IDatasource } from "./IDatasource.js";
2
+ import type { IDatasourceFactory } from "./IDatasourceFactory.js";
3
+ import type { IDriver } from "./IDriver.js";
4
+ import type { DatasourceOptions } from "./DatasourceOptions.js";
5
+ export declare class DatasourceFactory implements IDatasourceFactory {
6
+ static defaults: (options: DatasourceOptions) => void;
7
+ static register: (provider: string, driver: IDriver) => void;
8
+ static create: (options?: DatasourceOptions) => IDatasource;
9
+ create: (options?: DatasourceOptions) => IDatasource;
10
+ static reset: () => void;
11
+ static registered: () => string[];
12
+ }
@@ -0,0 +1 @@
1
+ export type DatasourceOptions = Record<string, string>;
@@ -0,0 +1,12 @@
1
+ export declare class DatasourceUrl {
2
+ readonly provider: string;
3
+ readonly username: string | undefined;
4
+ readonly password: string | undefined;
5
+ readonly host: string | undefined;
6
+ readonly port: number | undefined;
7
+ readonly path: string;
8
+ readonly schema: string | undefined;
9
+ readonly options: Readonly<Record<string, string>>;
10
+ constructor(provider: string, username: string | undefined, password: string | undefined, host: string | undefined, port: number | undefined, path: string, schema: string | undefined, options: Readonly<Record<string, string>>);
11
+ get datasource(): string | undefined;
12
+ }
@@ -0,0 +1,4 @@
1
+ import { DatasourceUrl } from "./DatasourceUrl.js";
2
+ export declare class DatasourceUrlParser {
3
+ static parse(url: string | undefined): DatasourceUrl | undefined;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { CreateEnrichmentStrategy } from "./CreateEnrichmentStrategy.js";
2
+ import type { Enrichment } from "./Enrichment.js";
3
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
4
+ export declare class DefaultCreateEnrichmentStrategy<T> extends CreateEnrichmentStrategy<T> {
5
+ createChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
6
+ createLinked<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
7
+ }
@@ -0,0 +1,19 @@
1
+ import type { Scalar } from "./builders/Scalar.js";
2
+ import type { Enrichment } from "./Enrichment.js";
3
+ import type { IReadonlyEnrichmentStrategy } from "./IReadonlyEnrichmentStrategy.js";
4
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
5
+ import type { Row } from "./Row.js";
6
+ type Props = Record<string, Scalar | object>;
7
+ export declare class DefaultReadonlyEnrichmentStrategy<T extends object> implements IReadonlyEnrichmentStrategy<T> {
8
+ apply<TRelated extends object>(via: IReadonlyRepository<TRelated>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
9
+ applyLinked<TRelated extends object, TLink extends object>(via: IReadonlyRepository<TRelated>, link: IReadonlyRepository<TLink>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
10
+ protected applyObject<TRelated extends object>(via: IReadonlyRepository<TRelated>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
11
+ protected applyList<TRelated extends object>(via: IReadonlyRepository<TRelated>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
12
+ protected applyDictionary<TRelated extends object>(via: IReadonlyRepository<TRelated>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
13
+ protected sourceKey(parent: T, name: string, sources: (Row | undefined)[] | undefined, index: number): Scalar | object | undefined;
14
+ protected props: <TItem>(item: TItem) => Props;
15
+ protected keyOf: (key: Scalar | object) => string;
16
+ protected lookupKey: (value: Scalar | object | undefined) => Scalar | object | undefined;
17
+ protected scalar: (value: Scalar | object) => Scalar;
18
+ }
19
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import { UpdateEnrichmentStrategy } from "./UpdateEnrichmentStrategy.js";
4
+ export declare class DefaultUpdateEnrichmentStrategy<T> extends UpdateEnrichmentStrategy<T> {
5
+ updateChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
6
+ updateLinked<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
7
+ }
@@ -0,0 +1,21 @@
1
+ import type { CreateEnrichmentStrategy } from "./CreateEnrichmentStrategy.js";
2
+ import type { IRepositoryTree } from "./IRepositoryTree.js";
3
+ import type { IWriteEnrichmentStrategy } from "./IWriteEnrichmentStrategy.js";
4
+ import type { DeleteEnrichmentStrategy } from "./DeleteEnrichmentStrategy.js";
5
+ import type { UpdateEnrichmentStrategy } from "./UpdateEnrichmentStrategy.js";
6
+ import type { WriteMode } from "./WriteMode.js";
7
+ export declare class DefaultWriteEnrichmentStrategy<T> implements IWriteEnrichmentStrategy<T> {
8
+ protected skipUnloaded: boolean;
9
+ readonly useTransaction: boolean;
10
+ private readonly createStrategy;
11
+ private readonly deleteStrategy;
12
+ private readonly updateStrategy;
13
+ constructor(deleteStrategy?: DeleteEnrichmentStrategy<T>, updateStrategy?: UpdateEnrichmentStrategy<T>, createStrategy?: CreateEnrichmentStrategy<T>, useTransaction?: boolean);
14
+ persist: (tree: IRepositoryTree, items: T[], mode: WriteMode) => Promise<void>;
15
+ persistBulk: (tree: IRepositoryTree, items: T[], mode: WriteMode) => Promise<void>;
16
+ private walk;
17
+ private walkBulk;
18
+ private persistEntryBulk;
19
+ private persistEntry;
20
+ private skip;
21
+ }
@@ -0,0 +1,11 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import type { Scalar } from "./builders/Scalar.js";
4
+ import { Where } from "./statements/index.js";
5
+ export declare abstract class DeleteEnrichmentStrategy<T> {
6
+ abstract deleteChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T, deleteNested: (rows: TChild[]) => Promise<void>): Promise<void>;
7
+ abstract deleteLinked<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
8
+ static load: <TParent, TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: TParent) => Promise<TChild[]>;
9
+ static childrenWhere: <TParent, TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: TParent) => Where | undefined;
10
+ static loadLinks: <TChild extends object>(writer: ICRUDRepository<TChild>, column: string, key: Scalar) => Promise<TChild[]>;
11
+ }
@@ -0,0 +1,5 @@
1
+ import type { IDriver } from "./IDriver.js";
2
+ import type { ProviderCatalog } from "./ProviderCatalog.js";
3
+ export declare class DriverLoader {
4
+ static load: (catalog: ProviderCatalog) => IDriver;
5
+ }
@@ -0,0 +1,13 @@
1
+ import type { EnrichmentPropertyType } from "./EnrichmentPropertyType.js";
2
+ export type Association = {
3
+ parent: string;
4
+ related: string;
5
+ };
6
+ export type Enrichment = {
7
+ destinationProperty: string;
8
+ sourceProperty: string;
9
+ relatedKey: string;
10
+ relatedProperty?: string;
11
+ type?: EnrichmentPropertyType;
12
+ association?: Association;
13
+ };
@@ -0,0 +1,7 @@
1
+ export declare const EnrichmentPropertyType: {
2
+ readonly Object: "object";
3
+ readonly List: "list";
4
+ readonly Dictionary: "dictionary";
5
+ readonly Custom: "custom";
6
+ };
7
+ export type EnrichmentPropertyType = (typeof EnrichmentPropertyType)[keyof typeof EnrichmentPropertyType];
@@ -0,0 +1,15 @@
1
+ import type { ICommandMiddleware } from "./ICommandMiddleware.js";
2
+ import type { Parameter } from "./Parameter.js";
3
+ import type { Row } from "./Row.js";
4
+ export declare const consoleSignature: (line: string) => string;
5
+ export declare class ExpectConsoleMiddleware implements ICommandMiddleware {
6
+ private readonly expected;
7
+ private readonly normalize;
8
+ private readonly inner;
9
+ private index;
10
+ constructor(expected: readonly string[], now: () => Date, normalize?: (line: string) => string);
11
+ beforeCommand: (text: string, params?: ReadonlyArray<Parameter>) => void;
12
+ afterCommand: (text: string, params: ReadonlyArray<Parameter> | undefined, results: ReadonlyArray<Row>, elapsedMs: number, error?: Error) => void;
13
+ complete: () => void;
14
+ private check;
15
+ }
@@ -0,0 +1,19 @@
1
+ import type { Cells } from "./converters/Cell.js";
2
+ import type { IReader } from "./IReader.js";
3
+ export declare class FirstResultReader implements IReader<Cells> {
4
+ private readonly first;
5
+ private readonly live;
6
+ current: Cells | undefined;
7
+ private index;
8
+ private firstSet;
9
+ private constructor();
10
+ static capture(live: IReader<Cells>): Promise<{
11
+ value: IReader<Cells>;
12
+ rows: Cells[];
13
+ }>;
14
+ next(): Promise<boolean>;
15
+ nextResult(): Promise<boolean>;
16
+ read(): AsyncIterable<Cells>;
17
+ dispose: () => Promise<void>;
18
+ [Symbol.asyncDispose]: () => Promise<void>;
19
+ }
@@ -0,0 +1,9 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
3
+ import type { Row } from "./Row.js";
4
+ import { DefaultReadonlyEnrichmentStrategy } from "./DefaultReadonlyEnrichmentStrategy.js";
5
+ export declare class HashsetOptimizedReadonlyEnrichmentStrategy<T extends object> extends DefaultReadonlyEnrichmentStrategy<T> {
6
+ protected applyObject<TRelated extends object>(via: IReadonlyRepository<TRelated>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
7
+ protected applyList<TRelated extends object>(via: IReadonlyRepository<TRelated>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
8
+ private keysOf;
9
+ }
@@ -0,0 +1,12 @@
1
+ import type { CRUDRepository } from "./CRUDRepository.js";
2
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
3
+ import type { ICommand } from "./ICommand.js";
4
+ import type { Response } from "./Response.js";
5
+ import type { IWhere } from "./statements/IWhere.js";
6
+ export interface IBulkWriteStrategy<T extends object> {
7
+ repo: CRUDRepository<T>;
8
+ attach(command: ICommand, options: CRUDRepositoryOptions<T>): void;
9
+ create(items: T[]): Promise<Response>;
10
+ update(items: T[], byWhere: IWhere | undefined): Promise<Response>;
11
+ delete(items: T[], byWhere: IWhere | undefined): Promise<Response>;
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { Scalar } from "./builders/Scalar.js";
2
+ import type { Cells } from "./converters/Cell.js";
3
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
4
+ import type { IWhere } from "./statements/IWhere.js";
5
+ import type { Response } from "./Response.js";
6
+ export interface ICRUDRepository<T = unknown> extends IReadonlyRepository<T> {
7
+ readonly ids: readonly string[];
8
+ create(item: T): Promise<T>;
9
+ update(item: T, byWhere?: IWhere): Promise<Response>;
10
+ delete(item: T, byWhere?: IWhere): Promise<Response>;
11
+ readSingleById(id: Scalar | Cells): Promise<T | undefined>;
12
+ }
@@ -0,0 +1,7 @@
1
+ import type { Constructable } from "./converters/Constructable.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import type { IRepository } from "./IRepository.js";
4
+ export interface ICRUDRepositoryFactory {
5
+ register(repository: IRepository): void;
6
+ create<T>(type: Constructable<T>): ICRUDRepository<T>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import type { IStatement } from "./statements/IStatement.js";
2
+ import { Native } from "./statements/Native.js";
3
+ import type { ICommandMiddleware } from "./ICommandMiddleware.js";
4
+ import type { IConnection } from "./IConnection.js";
5
+ import type { Cells } from "./converters/Cell.js";
6
+ import type { IReader } from "./IReader.js";
7
+ import type { Response } from "./Response.js";
8
+ import type { Parameter } from "./Parameter.js";
9
+ export interface ICommand {
10
+ readonly connection: IConnection;
11
+ addMiddleware(middleware: ICommandMiddleware): this;
12
+ executeReader(text: string, parameters?: Parameter[]): Promise<IReader<Cells>>;
13
+ execute(text: string, parameters?: Parameter[]): Promise<Response>;
14
+ executeNative(text: Native, parameters?: Parameter[]): Promise<Response>;
15
+ executeReaderNative(text: Native, parameters?: Parameter[]): Promise<IReader<Cells>>;
16
+ executeStatement?(statement: IStatement, parameters?: Parameter[]): Promise<Response>;
17
+ executeReaderStatement?(statement: IStatement, parameters?: Parameter[]): Promise<IReader<Cells>>;
18
+ }
19
+ export declare const execute: (command: ICommand, statement: IStatement, parameters?: Parameter[]) => Promise<Response>;
20
+ export declare const executeReader: (command: ICommand, statement: IStatement, parameters?: Parameter[]) => Promise<IReader<Cells>>;
@@ -0,0 +1,12 @@
1
+ import type { Parameter } from "./Parameter.js";
2
+ import type { Row } from "./Row.js";
3
+ export interface ICommandMiddleware {
4
+ beforeCommand(text: string, params?: ReadonlyArray<Parameter>): void | {
5
+ text: string;
6
+ params?: ReadonlyArray<Parameter>;
7
+ } | Promise<void | {
8
+ text: string;
9
+ params?: ReadonlyArray<Parameter>;
10
+ }>;
11
+ afterCommand(text: string, params: ReadonlyArray<Parameter> | undefined, results: ReadonlyArray<Row>, elapsedMs: number, error?: Error): void | Promise<void>;
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { ICommand } from "./ICommand.js";
2
+ import type { ITransaction } from "./ITransaction.js";
3
+ import type { IsolationLevel } from "./IsolationLevel.js";
4
+ export interface IConnection {
5
+ readonly provider: string;
6
+ readonly isOpen: boolean;
7
+ createCommand(): ICommand;
8
+ open(): Promise<void>;
9
+ close(): Promise<void>;
10
+ startTransaction(isolation?: IsolationLevel): Promise<ITransaction>;
11
+ [Symbol.asyncDispose](): Promise<void>;
12
+ }
@@ -0,0 +1,18 @@
1
+ import type { Constructable } from "./converters/Constructable.js";
2
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
3
+ import type { ICommand } from "./ICommand.js";
4
+ import type { IConnection } from "./IConnection.js";
5
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
6
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
7
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
8
+ import type { RepositoryFactory } from "./RepositoryFactory.js";
9
+ export interface IDatasource {
10
+ readonly provider: string;
11
+ readonly repositories: RepositoryFactory;
12
+ createConnection(): Promise<IConnection>;
13
+ createCommand(connection?: IConnection): Promise<ICommand>;
14
+ createRepository<T>(type: Constructable<T>, connection?: IConnection, options?: CRUDRepositoryOptions<T>): ICRUDRepository<T>;
15
+ createRepository(typeName: string, connection?: IConnection): ICRUDRepository;
16
+ createReadonlyRepository<T>(type: Constructable<T>, connection?: IConnection, options?: ReadonlyRepositoryMappingOptions<T>): IReadonlyRepository<T>;
17
+ createReadonlyRepository(typeName: string, connection?: IConnection): IReadonlyRepository;
18
+ }
@@ -0,0 +1,5 @@
1
+ import type { DatasourceOptions } from "./DatasourceOptions.js";
2
+ import type { IDatasource } from "./IDatasource.js";
3
+ export interface IDatasourceFactory {
4
+ create(options?: DatasourceOptions): IDatasource;
5
+ }
@@ -0,0 +1,19 @@
1
+ import type { ICommand } from "./ICommand.js";
2
+ import type { IConnection } from "./IConnection.js";
3
+ import type { ITransaction } from "./ITransaction.js";
4
+ import type { IsolationLevel } from "./IsolationLevel.js";
5
+ import type { DatasourceOptions } from "./DatasourceOptions.js";
6
+ import type { Cell } from "./converters/Cell.js";
7
+ import type { TypeConverter } from "./converters/TypeConverter.js";
8
+ import type { Information } from "./Information.js";
9
+ import type { StatementTextRenderer } from "./statements/StatementTextRenderer.js";
10
+ export declare const columnType: (name: string) => string;
11
+ export interface IDriver {
12
+ connection(options?: DatasourceOptions): IConnection;
13
+ command(connection: IConnection): ICommand;
14
+ transaction(connection: IConnection, isolation?: IsolationLevel): ITransaction;
15
+ rowTypeConverters: Record<string, TypeConverter<Cell, Cell>>;
16
+ columnType(name: string): string;
17
+ statementRenderer?: StatementTextRenderer | null;
18
+ information?: Information | null;
19
+ }