@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,6 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { IReadonlyEnrichmentStrategy } from "./IReadonlyEnrichmentStrategy.js";
3
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
4
+ export interface IEnriched<T> {
5
+ addEnriched<TRelated extends object>(enrichment: Enrichment, via: IReadonlyRepository<TRelated>, strategy?: IReadonlyEnrichmentStrategy<T & object>): this;
6
+ }
@@ -0,0 +1,8 @@
1
+ export interface IReader<T = unknown> {
2
+ readonly current: T | undefined;
3
+ next(): Promise<boolean>;
4
+ nextResult(): Promise<boolean>;
5
+ read(): AsyncIterable<T>;
6
+ dispose(): Promise<void>;
7
+ [Symbol.asyncDispose](): Promise<void>;
8
+ }
@@ -0,0 +1,7 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
3
+ import type { Row } from "./Row.js";
4
+ export interface IReadonlyEnrichmentStrategy<T extends object> {
5
+ apply<TRelated extends object>(via: IReadonlyRepository<TRelated>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
6
+ applyLinked<TRelated extends object, TLink extends object>(via: IReadonlyRepository<TRelated>, link: IReadonlyRepository<TLink>, enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
7
+ }
@@ -0,0 +1,11 @@
1
+ import type { Parameter } from "./Parameter.js";
2
+ import type { IExecuteStoredProcedureStatement } from "./statements/IExecuteStoredProcedureStatement.js";
3
+ import type { ISelectStatement } from "./statements/ISelectStatement.js";
4
+ import type { IRepository } from "./IRepository.js";
5
+ import type { IWhere } from "./statements/IWhere.js";
6
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
7
+ export type ReadQuery = ISelectStatement | IWhere | IExecuteStoredProcedureStatement;
8
+ export interface IReadonlyRepository<T = unknown> extends IRepository<T> {
9
+ readSingle(query?: ReadQuery, parameters?: Parameter[], options?: ReadonlyRepositoryMappingOptions<T>): Promise<T | undefined>;
10
+ read(query?: ReadQuery, parameters?: Parameter[], options?: ReadonlyRepositoryMappingOptions<T>): AsyncIterable<T>;
11
+ }
@@ -0,0 +1,4 @@
1
+ import type { Constructable } from "./converters/Constructable.js";
2
+ export interface IRepository<T = unknown> {
3
+ readonly type: Constructable<T>;
4
+ }
@@ -0,0 +1,7 @@
1
+ import type { Constructable } from "./converters/Constructable.js";
2
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
3
+ import type { IRepository } from "./IRepository.js";
4
+ export interface IRepositoryFactory {
5
+ register(repository: IRepository): void;
6
+ create<T>(type: Constructable<T>): IReadonlyRepository<T>;
7
+ }
@@ -0,0 +1,4 @@
1
+ import type { IRepositoryTreeNode } from "./IRepositoryTreeNode.js";
2
+ export interface IRepositoryTree {
3
+ readonly parent: IRepositoryTreeNode;
4
+ }
@@ -0,0 +1,7 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ export interface IRepositoryTreeNode {
3
+ readonly value: object;
4
+ readonly propertyName: string;
5
+ readonly parent?: IRepositoryTreeNode;
6
+ readonly enrichment?: Enrichment;
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { IsolationLevel } from "./IsolationLevel.js";
3
+ export interface ITransaction {
4
+ readonly connection: IConnection;
5
+ readonly isolation: IsolationLevel;
6
+ commit(): Promise<void>;
7
+ abort(): Promise<void>;
8
+ }
@@ -0,0 +1,5 @@
1
+ export interface IUnitOfWork {
2
+ begin(): Promise<void>;
3
+ commit(): Promise<void>;
4
+ abort(): Promise<void>;
5
+ }
@@ -0,0 +1,7 @@
1
+ import type { IRepositoryTree } from "./IRepositoryTree.js";
2
+ import type { WriteMode } from "./WriteMode.js";
3
+ export interface IWriteEnrichmentStrategy<T> {
4
+ readonly useTransaction: boolean;
5
+ persist(tree: IRepositoryTree, items: T[], mode: WriteMode): Promise<void>;
6
+ persistBulk?(tree: IRepositoryTree, items: T[], mode: WriteMode): Promise<void>;
7
+ }
@@ -0,0 +1,5 @@
1
+ export type Information = {
2
+ descriptions: readonly string[];
3
+ overrides: readonly string[];
4
+ changeLogs: readonly string[];
5
+ };
@@ -0,0 +1,7 @@
1
+ export declare const IsolationLevel: {
2
+ readonly ReadUncommitted: "readUncommitted";
3
+ readonly ReadCommitted: "readCommitted";
4
+ readonly RepeatableRead: "repeatableRead";
5
+ readonly Serializable: "serializable";
6
+ };
7
+ export type IsolationLevel = (typeof IsolationLevel)[keyof typeof IsolationLevel];
@@ -0,0 +1,4 @@
1
+ import { DefaultWriteEnrichmentStrategy } from "./DefaultWriteEnrichmentStrategy.js";
2
+ export declare class LazyWriteEnrichmentStrategy<T> extends DefaultWriteEnrichmentStrategy<T> {
3
+ protected skipUnloaded: boolean;
4
+ }
@@ -0,0 +1,10 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
3
+ import type { TypeMap } from "./mappers/TypeMap.js";
4
+ import type { Row } from "./Row.js";
5
+ import { DefaultReadonlyEnrichmentStrategy } from "./DefaultReadonlyEnrichmentStrategy.js";
6
+ export declare class NestedToObjectEnrichmentStrategy<T extends object> extends DefaultReadonlyEnrichmentStrategy<T> {
7
+ private readonly nested;
8
+ constructor(typeMap: TypeMap<T>);
9
+ apply<TRelated extends object>(_via: IReadonlyRepository<TRelated>, _enrichment: Enrichment, parents: T[], sources?: (Row | undefined)[]): Promise<void>;
10
+ }
@@ -0,0 +1,7 @@
1
+ import type { Scalar } from "./builders/Scalar.js";
2
+ import type { ParameterDirection } from "./ParameterDirection.js";
3
+ export interface Parameter<T = Scalar> {
4
+ name: string;
5
+ value?: T;
6
+ direction?: ParameterDirection;
7
+ }
@@ -0,0 +1,7 @@
1
+ export declare const ParameterDirection: {
2
+ readonly Input: "input";
3
+ readonly Output: "output";
4
+ readonly InputOutput: "inputOutput";
5
+ readonly ReturnValue: "returnValue";
6
+ };
7
+ export type ParameterDirection = (typeof ParameterDirection)[keyof typeof ParameterDirection];
@@ -0,0 +1,7 @@
1
+ export declare class ProviderCatalog {
2
+ readonly name: string;
3
+ readonly location: string;
4
+ readonly module: string;
5
+ constructor(name: string, location: string, module: string);
6
+ static readonly default: Readonly<Record<string, ProviderCatalog>>;
7
+ }
@@ -0,0 +1,4 @@
1
+ export declare class ProviderNotImplementedError extends Error {
2
+ readonly provider: string;
3
+ constructor(provider: string);
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare class ProviderNotInstalledError extends Error {
2
+ readonly provider: string;
3
+ constructor(provider: string);
4
+ }
@@ -0,0 +1,59 @@
1
+ import type { ICommand } from "./ICommand.js";
2
+ import type { ICommandMiddleware } from "./ICommandMiddleware.js";
3
+ import type { IConnection } from "./IConnection.js";
4
+ import type { Parameter } from "./Parameter.js";
5
+ import type { IReadonlyRepository, ReadQuery } from "./IReadonlyRepository.js";
6
+ import type { Row } from "./Row.js";
7
+ import type { Cell, Cells } from "./converters/Cell.js";
8
+ import type { Constructable } from "./converters/Constructable.js";
9
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
10
+ import type { BuiltRepository } from "./BuiltRepository.js";
11
+ import type { TypeConverter } from "./converters/TypeConverter.js";
12
+ import type { Enrichment } from "./Enrichment.js";
13
+ import type { IEnriched } from "./IEnriched.js";
14
+ import type { IReadonlyEnrichmentStrategy } from "./IReadonlyEnrichmentStrategy.js";
15
+ import { StoredEnrichment } from "./StoredEnrichment.js";
16
+ export declare const untyped: <T>() => Constructable<T>;
17
+ export type Sourced<T> = {
18
+ item: T;
19
+ source?: Row;
20
+ };
21
+ export declare const enrichmentsOf: (host: object) => readonly StoredEnrichment[] | undefined;
22
+ export declare const isBuilt: <T>(value: IConnection | BuiltRepository<T>) => value is BuiltRepository<T>;
23
+ export declare const builtOf: <T>(typeOrConnectionOrBuilt: Constructable<T> | IConnection | BuiltRepository<T>, connectionOrOptions?: IConnection | ReadonlyRepositoryMappingOptions<T>) => BuiltRepository<T> | undefined;
24
+ export declare class ReadonlyRepository<T> implements IReadonlyRepository<T>, IEnriched<T> {
25
+ readonly type: Constructable<T>;
26
+ private connection?;
27
+ protected rowConverter?: TypeConverter<Cells, Cells>;
28
+ protected objectConverter?: TypeConverter<T, Cells>;
29
+ private entityMappers;
30
+ private propertyMappers;
31
+ private statementMappers;
32
+ private readonlyStatements?;
33
+ private readonly middlewares;
34
+ constructor(type: Constructable<T>);
35
+ constructor(type: Constructable<T>, connection: IConnection);
36
+ constructor(connection: IConnection, options: ReadonlyRepositoryMappingOptions<T>);
37
+ constructor(built: BuiltRepository<T>);
38
+ constructor();
39
+ addMiddleware: (middleware: ICommandMiddleware) => this;
40
+ addEnriched<TRelated extends object>(enrichment: Enrichment, via: IReadonlyRepository<TRelated>, strategy?: IReadonlyEnrichmentStrategy<T & object>): this;
41
+ read(query?: ReadQuery, parameters?: Parameter[], options?: ReadonlyRepositoryMappingOptions<T>): AsyncIterable<T>;
42
+ readSingle(query?: ReadQuery, parameters?: Parameter[], options?: ReadonlyRepositoryMappingOptions<T>): Promise<T | undefined>;
43
+ protected get enriched(): boolean;
44
+ protected command: () => ICommand;
45
+ protected column: (property: string) => string;
46
+ protected cell: (property: string, value: Cell, fieldsApplied: boolean, options?: ReadonlyRepositoryMappingOptions<T>) => Cell;
47
+ private entries;
48
+ private mappers;
49
+ private rowConverterOf;
50
+ private objects;
51
+ private readTracked;
52
+ private apply;
53
+ private convertObject;
54
+ private readItems;
55
+ private sourced;
56
+ private fill;
57
+ private columnToPropertyName;
58
+ private readQuery;
59
+ }
@@ -0,0 +1,12 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { BuiltRepository } from "./BuiltRepository.js";
3
+ import type { IMapper } from "./mappers/IMapper.js";
4
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
5
+ import { ReadonlyRepositoryStatements } from "./ReadonlyRepositoryStatements.js";
6
+ export declare class ReadonlyRepositoryBuilder<T = object> {
7
+ protected entityMapper: IMapper<string, string>;
8
+ protected propertyMapper: IMapper<string, string>;
9
+ parts: (connection: IConnection, options: ReadonlyRepositoryMappingOptions<T>) => BuiltRepository<T>;
10
+ protected ids: (_options: ReadonlyRepositoryMappingOptions<T>) => string[];
11
+ protected statements: (table: string, columns: string[]) => ReadonlyRepositoryStatements;
12
+ }
@@ -0,0 +1,14 @@
1
+ import type { Cell, Cells } from "./converters/Cell.js";
2
+ import type { Constructable } from "./converters/Constructable.js";
3
+ import type { TypeConverter } from "./converters/TypeConverter.js";
4
+ import type { IMapper } from "./mappers/IMapper.js";
5
+ export type ReadonlyRepositoryMappingOptions<T = Cells> = {
6
+ entity?: string;
7
+ entityMapper?: IMapper<string, string>;
8
+ propertyMappings?: IMapper<string, string>;
9
+ rowConverter?: TypeConverter<Cells, Cells>;
10
+ objectConverter?: TypeConverter<T, Cells>;
11
+ type?: Constructable<T>;
12
+ rowTypeConverters?: Record<string, TypeConverter<Cell, Cell>>;
13
+ readProperties?: string[];
14
+ };
@@ -0,0 +1,8 @@
1
+ import type { ISelectStatement } from "./statements/ISelectStatement.js";
2
+ import type { IWhere } from "./statements/IWhere.js";
3
+ export declare class ReadonlyRepositoryStatements {
4
+ protected readonly table: string;
5
+ readonly readColumns: readonly string[];
6
+ constructor(table: string, readColumns: readonly string[]);
7
+ select: (where?: IWhere) => ISelectStatement;
8
+ }
@@ -0,0 +1,11 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
4
+ export declare class RepositoryAccess {
5
+ private readonly createRepo;
6
+ private readonly createReadonlyRepo;
7
+ private readonly connection;
8
+ constructor(createRepo: (connection: IConnection) => ICRUDRepository, createReadonlyRepo: (connection: IConnection) => IReadonlyRepository, connection: IConnection);
9
+ create: () => ICRUDRepository;
10
+ createReadonly: () => IReadonlyRepository;
11
+ }
@@ -0,0 +1,23 @@
1
+ import type { Constructable } from "./converters/Constructable.js";
2
+ import type { IConnection } from "./IConnection.js";
3
+ import type { IReadonlyRepository } from "./IReadonlyRepository.js";
4
+ import type { IRepository } from "./IRepository.js";
5
+ import type { IRepositoryFactory } from "./IRepositoryFactory.js";
6
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
7
+ import type { ICRUDRepositoryFactory } from "./ICRUDRepositoryFactory.js";
8
+ import { RepositoryAccess } from "./RepositoryAccess.js";
9
+ export declare class RepositoryFactory implements ICRUDRepositoryFactory {
10
+ #private;
11
+ constructor();
12
+ static bind: (register: (factory: RepositoryFactory) => void) => void;
13
+ static resetBinders: () => void;
14
+ private applyBound;
15
+ register(repository: IRepository): void;
16
+ register(typeName: string, pluralName: string, create: (connection: IConnection) => ICRUDRepository, createReadonly: (connection: IConnection) => IReadonlyRepository): void;
17
+ create<T>(type: Constructable<T>): ICRUDRepository<T>;
18
+ create(name: string, connection: IConnection): ICRUDRepository;
19
+ createReadonly: (name: string, connection: IConnection) => IReadonlyRepository;
20
+ access: (name: string, connection: IConnection) => RepositoryAccess;
21
+ has: (name: string) => boolean;
22
+ readonly asReadonly: IRepositoryFactory;
23
+ }
@@ -0,0 +1,4 @@
1
+ export declare class RepositoryNotRegisteredError extends Error {
2
+ readonly entityTypeName: string;
3
+ constructor(entityTypeName: string);
4
+ }
@@ -0,0 +1,6 @@
1
+ import type { IRepositoryTree } from "./IRepositoryTree.js";
2
+ import type { IRepositoryTreeNode } from "./IRepositoryTreeNode.js";
3
+ export declare class RepositoryTree implements IRepositoryTree {
4
+ readonly parent: IRepositoryTreeNode;
5
+ constructor(parent: IRepositoryTreeNode);
6
+ }
@@ -0,0 +1,9 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { IRepositoryTreeNode } from "./IRepositoryTreeNode.js";
3
+ export declare class RepositoryTreeNode implements IRepositoryTreeNode {
4
+ readonly value: object;
5
+ readonly propertyName: string;
6
+ readonly parent?: IRepositoryTreeNode | undefined;
7
+ readonly enrichment?: Enrichment | undefined;
8
+ constructor(value: object, propertyName: string, parent?: IRepositoryTreeNode | undefined, enrichment?: Enrichment | undefined);
9
+ }
@@ -0,0 +1,7 @@
1
+ import type { Parameter } from "./Parameter.js";
2
+ export declare class Response {
3
+ readonly result: unknown;
4
+ readonly rowsAffected: number;
5
+ readonly parameters?: Parameter[];
6
+ constructor(result: unknown, rowsAffected: number, parameters?: Parameter[]);
7
+ }
package/dist/Row.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import type { Cell } from "./converters/Cell.js";
2
+ export type Row = Record<string, Cell>;
@@ -0,0 +1,11 @@
1
+ import type { CRUDRepository } from "./CRUDRepository.js";
2
+ import type { Response } from "./Response.js";
3
+ import type { IWhere } from "./statements/IWhere.js";
4
+ import type { IBulkWriteStrategy } from "./IBulkWriteStrategy.js";
5
+ export declare class SingleCommandIBulkWriteStrategy<T extends object> implements IBulkWriteStrategy<T> {
6
+ repo: CRUDRepository<T>;
7
+ attach: () => void;
8
+ create: (items: T[]) => Promise<Response>;
9
+ update: (items: T[], byWhere: IWhere | undefined) => Promise<Response>;
10
+ delete: (items: T[], byWhere: IWhere | undefined) => Promise<Response>;
11
+ }
@@ -0,0 +1,16 @@
1
+ import type { Cell } from "./converters/Cell.js";
2
+ import type { IMapper } from "./mappers/IMapper.js";
3
+ import type { IStatement } from "./statements/IStatement.js";
4
+ import type { IWhere } from "./statements/IWhere.js";
5
+ export declare class StatementMappers implements IMapper<string, string> {
6
+ private readonly entityMappers;
7
+ private readonly propertyMappers;
8
+ constructor(entityMappers: IMapper<string, string>, propertyMappers: IMapper<string, string>);
9
+ map: (property: string) => string;
10
+ reverseMap: (key: string) => string;
11
+ column: (property: string) => string;
12
+ property: (key: string) => string;
13
+ apply: (query: IStatement | undefined, cell: (property: string, value: Cell) => Cell) => IStatement | undefined;
14
+ applyWhere: (where: IWhere | undefined, cell: (property: string, value: Cell) => Cell) => IWhere | undefined;
15
+ private mapSelectField;
16
+ }
@@ -0,0 +1,11 @@
1
+ import type { Enrichment } from "./Enrichment.js";
2
+ import type { ICRUDRepository } from "./ICRUDRepository.js";
3
+ import type { Row } from "./Row.js";
4
+ export type ApplyEnrichment<T extends object = object> = (parents: T[], sources?: (Row | undefined)[]) => Promise<void>;
5
+ export declare class StoredEnrichment<T extends object = object> {
6
+ readonly enrichment: Enrichment;
7
+ apply: ApplyEnrichment<T>;
8
+ persist?: ICRUDRepository<object>;
9
+ link?: ICRUDRepository<object>;
10
+ constructor(enrichment: Enrichment, apply: ApplyEnrichment<T>, persist?: ICRUDRepository<object>, link?: ICRUDRepository<object>);
11
+ }
@@ -0,0 +1,27 @@
1
+ import type { Response } from "./Response.js";
2
+ import type { IWhere } from "./statements/IWhere.js";
3
+ import type { CRUDRepository } from "./CRUDRepository.js";
4
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
5
+ import type { ICommand } from "./ICommand.js";
6
+ import type { IBulkWriteStrategy } from "./IBulkWriteStrategy.js";
7
+ export declare class StoredProcedureBulkWriteStrategy<T extends object> implements IBulkWriteStrategy<T> {
8
+ private readonly createName;
9
+ private readonly updateName;
10
+ private readonly deleteName;
11
+ repo: CRUDRepository<T>;
12
+ command: ICommand;
13
+ options: CRUDRepositoryOptions<T>;
14
+ attach: (command: ICommand, options: CRUDRepositoryOptions<T>) => void;
15
+ constructor(createName: string, updateName: string, deleteName: string);
16
+ create: (items: T[]) => Promise<Response>;
17
+ update: (items: T[], _byWhere: IWhere | undefined) => Promise<Response>;
18
+ delete: (items: T[], _byWhere: IWhere | undefined) => Promise<Response>;
19
+ private then;
20
+ private call;
21
+ private ids;
22
+ private rowOf;
23
+ private identity;
24
+ private applyIds;
25
+ private column;
26
+ private reverse;
27
+ }
@@ -0,0 +1,16 @@
1
+ import type { Cells } from "./converters/Cell.js";
2
+ import type { IReader } from "./IReader.js";
3
+ export declare class StreamingReader implements IReader<Cells> {
4
+ private readonly pull;
5
+ private readonly advance;
6
+ private readonly close;
7
+ current: Cells | undefined;
8
+ private closed;
9
+ constructor(pull: () => Promise<Cells | undefined>, advance: () => Promise<boolean>, close?: () => Promise<void>);
10
+ next(): Promise<boolean>;
11
+ read(): AsyncIterable<Cells>;
12
+ nextResult(): Promise<boolean>;
13
+ dispose(): Promise<void>;
14
+ [Symbol.asyncDispose]: () => Promise<void>;
15
+ }
16
+ export declare const statementReader: (statements: readonly string[], load: (sql: string) => AsyncIterable<Cells>) => StreamingReader;
@@ -0,0 +1,12 @@
1
+ import type { IConnection } from "./IConnection.js";
2
+ import type { IUnitOfWork } from "./IUnitOfWork.js";
3
+ export declare class UnitOfWorkTransaction implements IUnitOfWork {
4
+ private readonly connection;
5
+ private begun;
6
+ private transaction;
7
+ constructor(connection: IConnection);
8
+ begin: () => Promise<void>;
9
+ commit: () => Promise<void>;
10
+ abort: () => Promise<void>;
11
+ private release;
12
+ }
@@ -0,0 +1,18 @@
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 UpdateEnrichmentStrategy<T> {
6
+ abstract updateChildren<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
7
+ abstract updateLinked<TChild extends object>(writer: ICRUDRepository<TChild>, enrichment: Enrichment, parent: T): Promise<void>;
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 hasKey: <TItem extends object>(item: TItem, keys: readonly string[]) => boolean;
13
+ protected keyOf: <TItem extends object>(item: TItem, keys: readonly string[]) => string;
14
+ protected namesOf: <TChild extends object>(writer: ICRUDRepository<TChild>, item: TChild) => readonly string[];
15
+ protected linkWhere: (association: NonNullable<Enrichment["association"]>, parentKey: Scalar, relatedKey: Scalar) => Where;
16
+ protected relatedIds: <TParent>(parent: TParent, enrichment: Enrichment) => Scalar[];
17
+ protected requiredKey: <TParent>(parent: TParent, enrichment: Enrichment) => Scalar;
18
+ }
@@ -0,0 +1 @@
1
+ export type WriteMode = "create" | "update" | "delete";
@@ -0,0 +1,5 @@
1
+ import type { Scalar } from "./Scalar.js";
2
+ export interface Field {
3
+ name: string;
4
+ value: Scalar;
5
+ }
@@ -0,0 +1 @@
1
+ export type Scalar = string | number | boolean | bigint | null;
@@ -0,0 +1,2 @@
1
+ export type { Field } from "./Field.js";
2
+ export type { Scalar } from "./Scalar.js";
@@ -0,0 +1 @@
1
+ export declare function collectAsync<T>(items: AsyncIterable<T>): Promise<T[]>;
@@ -0,0 +1,2 @@
1
+ export type Cell = string | number | boolean | bigint | Date | Uint8Array | null;
2
+ export type Cells = Record<string, Cell>;
@@ -0,0 +1,7 @@
1
+ export type Casing = "camelCase" | "capitalCase" | "constantCase" | "dotCase" | "kebabCase" | "noCase" | "pascalCase" | "pascalSnakeCase" | "pathCase" | "sentenceCase" | "snakeCase" | "trainCase";
2
+ export declare class ChangeCasingConverter {
3
+ private readonly casing;
4
+ constructor(casing: Casing);
5
+ convert: (from: string) => string;
6
+ reverseConvert: (to: string) => string;
7
+ }
@@ -0,0 +1 @@
1
+ export type Constructable<T> = new () => T;
@@ -0,0 +1,14 @@
1
+ import type { Cell, Cells } from "./Cell.js";
2
+ import { TypeConverter } from "./TypeConverter.js";
3
+ import type { Constructable } from "./Constructable.js";
4
+ import type { IMapper } from "../mappers/IMapper.js";
5
+ export declare class MetaDataRowTypeConverter<T = Cells> extends TypeConverter<T, Cells> {
6
+ fields: Record<string, TypeConverter<Cell, Cell>>;
7
+ references: Set<string>;
8
+ referenceColumns: IMapper<string, string>;
9
+ shouldCoerceId: boolean;
10
+ constructor(fields?: Record<string, TypeConverter<Cell, Cell>>);
11
+ convert: (row: Cells, type?: Constructable<T>) => T;
12
+ reverseConvert: (row: T) => Cells;
13
+ private converted;
14
+ }
@@ -0,0 +1,4 @@
1
+ export declare class PluralizerConverter {
2
+ convert: (from: string) => string;
3
+ reverseConvert: (to: string) => string;
4
+ }
@@ -0,0 +1,7 @@
1
+ export declare class RegexConverter {
2
+ readonly regex: RegExp;
3
+ readonly replacement: string;
4
+ constructor(pattern: string | RegExp, replacement: string);
5
+ convert: (from: string) => string;
6
+ reverseConvert: (to: string) => string;
7
+ }
@@ -0,0 +1,7 @@
1
+ export declare class ReplaceConverter {
2
+ readonly search: string;
3
+ readonly replacement: string;
4
+ constructor(search: string, replacement: string);
5
+ convert: (from: string) => string;
6
+ reverseConvert: (to: string) => string;
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { Cell, Cells } from "./Cell.js";
2
+ import { TypeConverter } from "./TypeConverter.js";
3
+ export declare class RowTypeConverter extends TypeConverter<Cells, Cells> {
4
+ readonly fields: Record<string, TypeConverter<Cell, Cell>>;
5
+ constructor(fields: Record<string, TypeConverter<Cell, Cell>>);
6
+ static from(converters: Record<string, TypeConverter<Cell, Cell>>, columns: Record<string, string>): RowTypeConverter;
7
+ convert: (from: Cells) => Cells;
8
+ reverseConvert: (to: Cells) => Cells;
9
+ private apply;
10
+ }
@@ -0,0 +1,4 @@
1
+ export declare class ToLowerCaseConverter {
2
+ convert: (from: string) => string;
3
+ reverseConvert: (to: string) => string;
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare class ToUpperCaseConverter {
2
+ convert: (from: string) => string;
3
+ reverseConvert: (to: string) => string;
4
+ }
@@ -0,0 +1,5 @@
1
+ import type { Cells } from "./Cell.js";
2
+ export declare abstract class TypeConverter<To = Cells, From = Cells> {
3
+ abstract convert(from: From): To;
4
+ abstract reverseConvert(to: To): From;
5
+ }
@@ -0,0 +1,7 @@
1
+ import type { Cell } from "./converters/Cell.js";
2
+ import type { Constructable } from "./converters/Constructable.js";
3
+ import type { TypeConverter } from "./converters/TypeConverter.js";
4
+ import type { CRUDRepositoryOptions } from "./CRUDRepositoryOptions.js";
5
+ export { fieldNamesOf } from "./createReadonlyRepositoryMappingOptions.js";
6
+ export declare const defaultId: (fields: string[]) => string[];
7
+ export declare const createCRUDRepositoryOptions: <T>(type: Constructable<T>, rowTypeConverters?: Record<string, TypeConverter<Cell, Cell>>) => CRUDRepositoryOptions<T>;
@@ -0,0 +1,6 @@
1
+ import type { Cell } from "./converters/Cell.js";
2
+ import type { Constructable } from "./converters/Constructable.js";
3
+ import type { TypeConverter } from "./converters/TypeConverter.js";
4
+ import type { ReadonlyRepositoryMappingOptions } from "./ReadonlyRepositoryMappingOptions.js";
5
+ export declare const fieldNamesOf: <T>(type: Constructable<T>) => string[];
6
+ export declare const createReadonlyRepositoryMappingOptions: <T>(type: Constructable<T>, rowTypeConverters?: Record<string, TypeConverter<Cell, Cell>>) => ReadonlyRepositoryMappingOptions<T>;
@@ -0,0 +1,5 @@
1
+ import type { DatasourceOptions } from "./DatasourceOptions.js";
2
+ export declare const DotEnv: {
3
+ parse: (text: string) => DatasourceOptions;
4
+ load: (path?: string) => DatasourceOptions;
5
+ };