@tstdl/base 0.92.167 → 0.93.0

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 (317) hide show
  1. package/application/application.d.ts +12 -18
  2. package/application/application.js +48 -69
  3. package/application/index.d.ts +1 -5
  4. package/application/index.js +1 -5
  5. package/application/providers.d.ts +10 -0
  6. package/application/providers.js +54 -0
  7. package/audit/audit.model.d.ts +15 -0
  8. package/audit/audit.model.js +73 -0
  9. package/audit/auditor.d.ts +42 -0
  10. package/audit/auditor.js +111 -0
  11. package/audit/index.d.ts +3 -0
  12. package/audit/index.js +3 -0
  13. package/audit/types.d.ts +22 -0
  14. package/audit/types.js +19 -0
  15. package/authentication/client/authentication.service.d.ts +1 -3
  16. package/authentication/client/authentication.service.js +4 -5
  17. package/browser/browser-context-controller.d.ts +2 -4
  18. package/browser/browser-context-controller.js +5 -6
  19. package/browser/browser-controller.d.ts +2 -4
  20. package/browser/browser-controller.js +3 -4
  21. package/browser/browser.service.d.ts +1 -3
  22. package/browser/browser.service.js +1 -2
  23. package/browser/page-controller.d.ts +2 -4
  24. package/browser/page-controller.js +7 -8
  25. package/browser/utils.js +3 -3
  26. package/cancellation/token.d.ts +104 -41
  27. package/cancellation/token.js +125 -54
  28. package/core.d.ts +1 -13
  29. package/core.js +1 -46
  30. package/disposable/disposable.d.ts +0 -8
  31. package/disposable/disposable.js +1 -3
  32. package/disposable/index.d.ts +0 -6
  33. package/disposable/index.js +0 -6
  34. package/disposable/using.d.ts +0 -1
  35. package/disposable/using.js +2 -3
  36. package/distributed-loop/distributed-loop.js +2 -2
  37. package/errors/utils.js +4 -1
  38. package/examples/api/authentication.js +11 -5
  39. package/examples/api/basic-overview.js +17 -12
  40. package/examples/api/custom-authentication.js +13 -7
  41. package/examples/api/streaming.js +15 -12
  42. package/examples/browser/basic.js +6 -3
  43. package/examples/document-management/main.js +6 -3
  44. package/examples/http/client.js +7 -3
  45. package/examples/mail/basic.js +9 -7
  46. package/examples/pdf/basic.js +8 -6
  47. package/examples/template/basic.js +7 -5
  48. package/http/client/http-client-request.d.ts +1 -2
  49. package/http/client/http-client-request.js +1 -2
  50. package/http/server/http-server.d.ts +1 -3
  51. package/http/server/http-server.js +0 -1
  52. package/http/server/node/node-http-server.d.ts +1 -2
  53. package/http/server/node/node-http-server.js +1 -2
  54. package/import.js +1 -1
  55. package/injector/injector.d.ts +1 -1
  56. package/injector/types.d.ts +3 -4
  57. package/lock/lock.d.ts +40 -21
  58. package/lock/lock.js +74 -1
  59. package/lock/postgres/drizzle/0000_busy_tattoo.sql +7 -0
  60. package/lock/postgres/drizzle/meta/0000_snapshot.json +65 -0
  61. package/lock/postgres/drizzle/meta/_journal.json +13 -0
  62. package/lock/postgres/drizzle.config.js +11 -0
  63. package/lock/postgres/index.d.ts +2 -0
  64. package/lock/postgres/index.js +2 -0
  65. package/lock/postgres/lock.d.ts +14 -0
  66. package/lock/postgres/lock.js +127 -0
  67. package/lock/postgres/models/index.d.ts +2 -0
  68. package/lock/postgres/models/index.js +2 -0
  69. package/lock/postgres/models/lock.model.d.ts +7 -0
  70. package/{examples/orm/user.model.js → lock/postgres/models/lock.model.js} +22 -30
  71. package/lock/postgres/models/schemas.d.ts +3 -0
  72. package/lock/postgres/models/schemas.js +4 -0
  73. package/lock/postgres/module.d.ts +6 -0
  74. package/lock/postgres/module.js +26 -0
  75. package/lock/postgres/provider.d.ts +6 -0
  76. package/lock/postgres/provider.js +29 -0
  77. package/lock/provider.d.ts +12 -2
  78. package/lock/provider.js +24 -1
  79. package/lock/web/web-lock.d.ts +4 -3
  80. package/lock/web/web-lock.js +49 -42
  81. package/lock/web/web-lock.provider.d.ts +0 -3
  82. package/lock/web/web-lock.provider.js +5 -22
  83. package/logger/formatter.d.ts +13 -0
  84. package/logger/formatter.js +3 -0
  85. package/logger/formatters/index.d.ts +2 -0
  86. package/logger/formatters/index.js +2 -0
  87. package/logger/formatters/json.d.ts +5 -0
  88. package/logger/formatters/json.js +33 -0
  89. package/logger/formatters/pretty-print.d.ts +5 -0
  90. package/logger/formatters/pretty-print.js +55 -0
  91. package/logger/index.d.ts +5 -2
  92. package/logger/index.js +5 -2
  93. package/logger/level.d.ts +10 -8
  94. package/logger/level.js +9 -9
  95. package/logger/logger.d.ts +21 -30
  96. package/logger/logger.js +98 -26
  97. package/logger/manager.d.ts +20 -0
  98. package/logger/manager.js +86 -0
  99. package/logger/tokens.d.ts +1 -1
  100. package/logger/tokens.js +1 -1
  101. package/logger/transport.d.ts +14 -0
  102. package/logger/transport.js +16 -0
  103. package/logger/transports/console.d.ts +14 -0
  104. package/logger/transports/console.js +36 -0
  105. package/logger/transports/index.d.ts +1 -0
  106. package/logger/transports/index.js +1 -0
  107. package/mail/clients/nodemailer.mail-client.d.ts +0 -1
  108. package/mail/clients/nodemailer.mail-client.js +9 -7
  109. package/message-bus/local/local-message-bus.js +2 -2
  110. package/message-bus/message-bus-base.d.ts +2 -3
  111. package/message-bus/message-bus-base.js +5 -6
  112. package/message-bus/message-bus.d.ts +1 -2
  113. package/message-bus/message-bus.js +1 -2
  114. package/module/index.d.ts +0 -2
  115. package/module/index.js +0 -2
  116. package/module/module.d.ts +17 -18
  117. package/module/module.js +47 -12
  118. package/module/modules/function.module.d.ts +6 -6
  119. package/module/modules/function.module.js +25 -9
  120. package/module/modules/web-server.module.d.ts +2 -10
  121. package/module/modules/web-server.module.js +3 -11
  122. package/openid-connect/index.d.ts +0 -2
  123. package/openid-connect/index.js +0 -2
  124. package/openid-connect/oidc-state.model.d.ts +4 -5
  125. package/openid-connect/oidc-state.model.js +51 -1
  126. package/openid-connect/oidc.service-model.d.ts +1 -1
  127. package/openid-connect/oidc.service.d.ts +2 -6
  128. package/openid-connect/oidc.service.js +24 -37
  129. package/orm/decorators.d.ts +10 -1
  130. package/orm/decorators.js +8 -0
  131. package/orm/server/repository.d.ts +3 -1
  132. package/orm/server/repository.js +32 -3
  133. package/package.json +19 -29
  134. package/pdf/pdf.service.js +9 -9
  135. package/pool/pool.d.ts +1 -3
  136. package/pool/pool.js +3 -4
  137. package/queue/postgres/job.model.d.ts +1 -2
  138. package/queue/postgres/job.model.js +1 -2
  139. package/queue/postgres/module.js +1 -1
  140. package/threading/thread-pool.d.ts +1 -3
  141. package/threading/thread-pool.js +7 -8
  142. package/utils/format-error.d.ts +7 -0
  143. package/utils/format-error.js +59 -17
  144. package/utils/function/memoize.d.ts +22 -7
  145. package/utils/function/memoize.js +82 -23
  146. package/utils/index.d.ts +1 -0
  147. package/utils/index.js +1 -0
  148. package/utils/object/dereference.d.ts +51 -19
  149. package/utils/object/dereference.js +52 -43
  150. package/utils/timing.js +2 -2
  151. package/utils/try-chain.d.ts +22 -0
  152. package/utils/try-chain.js +46 -0
  153. package/database/entity-repository.d.ts +0 -50
  154. package/database/entity-repository.js +0 -3
  155. package/database/entity.d.ts +0 -7
  156. package/database/entity.js +0 -1
  157. package/database/id.d.ts +0 -1
  158. package/database/id.js +0 -9
  159. package/database/index.d.ts +0 -11
  160. package/database/index.js +0 -11
  161. package/database/module.d.ts +0 -8
  162. package/database/module.js +0 -11
  163. package/database/mongo/classes.d.ts +0 -21
  164. package/database/mongo/classes.js +0 -26
  165. package/database/mongo/index.d.ts +0 -15
  166. package/database/mongo/index.js +0 -15
  167. package/database/mongo/model/document.d.ts +0 -29
  168. package/database/mongo/model/document.js +0 -63
  169. package/database/mongo/model/index.d.ts +0 -1
  170. package/database/mongo/model/index.js +0 -1
  171. package/database/mongo/module.d.ts +0 -8
  172. package/database/mongo/module.js +0 -68
  173. package/database/mongo/mongo-base.repository.d.ts +0 -103
  174. package/database/mongo/mongo-base.repository.js +0 -263
  175. package/database/mongo/mongo-bulk.d.ts +0 -35
  176. package/database/mongo/mongo-bulk.js +0 -90
  177. package/database/mongo/mongo-entity-repository.d.ts +0 -98
  178. package/database/mongo/mongo-entity-repository.js +0 -278
  179. package/database/mongo/operations.d.ts +0 -10
  180. package/database/mongo/operations.js +0 -54
  181. package/database/mongo/query-converter.d.ts +0 -6
  182. package/database/mongo/query-converter.js +0 -83
  183. package/database/mongo/simple-entity-repository.d.ts +0 -7
  184. package/database/mongo/simple-entity-repository.js +0 -6
  185. package/database/mongo/types.d.ts +0 -50
  186. package/database/mongo/types.js +0 -3
  187. package/database/query.d.ts +0 -121
  188. package/database/query.js +0 -7
  189. package/database/utils.d.ts +0 -2
  190. package/database/utils.js +0 -3
  191. package/disposable/async-disposer.d.ts +0 -35
  192. package/disposable/async-disposer.js +0 -125
  193. package/examples/orm/drizzle.config.js +0 -6
  194. package/examples/orm/schemas.d.ts +0 -3
  195. package/examples/orm/schemas.js +0 -4
  196. package/examples/orm/test.d.ts +0 -1
  197. package/examples/orm/test.js +0 -11
  198. package/examples/orm/user.model.d.ts +0 -13
  199. package/key-value-store/mongo/index.d.ts +0 -6
  200. package/key-value-store/mongo/index.js +0 -6
  201. package/key-value-store/mongo/module.d.ts +0 -8
  202. package/key-value-store/mongo/module.js +0 -18
  203. package/key-value-store/mongo/mongo-key-value-store.provider.d.ts +0 -8
  204. package/key-value-store/mongo/mongo-key-value-store.provider.js +0 -26
  205. package/key-value-store/mongo/mongo-key-value.model.d.ts +0 -7
  206. package/key-value-store/mongo/mongo-key-value.model.js +0 -1
  207. package/key-value-store/mongo/mongo-key-value.repository.d.ts +0 -10
  208. package/key-value-store/mongo/mongo-key-value.repository.js +0 -31
  209. package/key-value-store/mongo/mongo-key-value.store.d.ts +0 -15
  210. package/key-value-store/mongo/mongo-key-value.store.js +0 -82
  211. package/key-value-store/mongo/tokens.d.ts +0 -3
  212. package/key-value-store/mongo/tokens.js +0 -2
  213. package/lock/mongo/index.d.ts +0 -5
  214. package/lock/mongo/index.js +0 -5
  215. package/lock/mongo/lock.d.ts +0 -14
  216. package/lock/mongo/lock.js +0 -125
  217. package/lock/mongo/model.d.ts +0 -6
  218. package/lock/mongo/model.js +0 -1
  219. package/lock/mongo/module.d.ts +0 -12
  220. package/lock/mongo/module.js +0 -20
  221. package/lock/mongo/mongo-lock-repository.d.ts +0 -14
  222. package/lock/mongo/mongo-lock-repository.js +0 -67
  223. package/lock/mongo/provider.d.ts +0 -8
  224. package/lock/mongo/provider.js +0 -36
  225. package/logger/console/index.d.ts +0 -1
  226. package/logger/console/index.js +0 -1
  227. package/logger/console/logger.d.ts +0 -11
  228. package/logger/console/logger.js +0 -64
  229. package/logger/noop/index.d.ts +0 -1
  230. package/logger/noop/index.js +0 -1
  231. package/logger/noop/logger.d.ts +0 -9
  232. package/logger/noop/logger.js +0 -21
  233. package/migration/index.d.ts +0 -9
  234. package/migration/index.js +0 -9
  235. package/migration/migration-state-repository.d.ts +0 -4
  236. package/migration/migration-state-repository.js +0 -3
  237. package/migration/migration-state.d.ts +0 -6
  238. package/migration/migration-state.js +0 -1
  239. package/migration/migrator.d.ts +0 -23
  240. package/migration/migrator.js +0 -76
  241. package/migration/mongo/index.d.ts +0 -2
  242. package/migration/mongo/index.js +0 -2
  243. package/migration/mongo/migration-state-repository.d.ts +0 -11
  244. package/migration/mongo/migration-state-repository.js +0 -32
  245. package/migration/mongo/module.d.ts +0 -12
  246. package/migration/mongo/module.js +0 -17
  247. package/module/module-base.d.ts +0 -18
  248. package/module/module-base.js +0 -40
  249. package/module/module-metric-reporter.d.ts +0 -29
  250. package/module/module-metric-reporter.js +0 -62
  251. package/openid-connect/mongo-oidc-state.repository.d.ts +0 -21
  252. package/openid-connect/mongo-oidc-state.repository.js +0 -52
  253. package/openid-connect/oidc-state.repository.d.ts +0 -4
  254. package/openid-connect/oidc-state.repository.js +0 -3
  255. package/process-shutdown.d.ts +0 -9
  256. package/process-shutdown.js +0 -65
  257. package/queue/mongo/index.d.ts +0 -4
  258. package/queue/mongo/index.js +0 -4
  259. package/queue/mongo/job.d.ts +0 -12
  260. package/queue/mongo/job.js +0 -1
  261. package/queue/mongo/mongo-job.repository.d.ts +0 -13
  262. package/queue/mongo/mongo-job.repository.js +0 -54
  263. package/queue/mongo/queue.d.ts +0 -38
  264. package/queue/mongo/queue.js +0 -266
  265. package/queue/mongo/queue.provider.d.ts +0 -18
  266. package/queue/mongo/queue.provider.js +0 -38
  267. package/search-index/elastic/config.d.ts +0 -8
  268. package/search-index/elastic/config.js +0 -26
  269. package/search-index/elastic/index.d.ts +0 -8
  270. package/search-index/elastic/index.js +0 -8
  271. package/search-index/elastic/keyword-rewriter.d.ts +0 -8
  272. package/search-index/elastic/keyword-rewriter.js +0 -18
  273. package/search-index/elastic/model/elastic-query.d.ts +0 -16
  274. package/search-index/elastic/model/elastic-query.js +0 -1
  275. package/search-index/elastic/model/index-mapping.d.ts +0 -26
  276. package/search-index/elastic/model/index-mapping.js +0 -4
  277. package/search-index/elastic/model/index.d.ts +0 -3
  278. package/search-index/elastic/model/index.js +0 -3
  279. package/search-index/elastic/model/sort.d.ts +0 -8
  280. package/search-index/elastic/model/sort.js +0 -1
  281. package/search-index/elastic/module.d.ts +0 -10
  282. package/search-index/elastic/module.js +0 -49
  283. package/search-index/elastic/query-builder/boolean-query-builder.d.ts +0 -11
  284. package/search-index/elastic/query-builder/boolean-query-builder.js +0 -52
  285. package/search-index/elastic/query-builder/index.d.ts +0 -1
  286. package/search-index/elastic/query-builder/index.js +0 -1
  287. package/search-index/elastic/query-converter.d.ts +0 -9
  288. package/search-index/elastic/query-converter.js +0 -183
  289. package/search-index/elastic/search-index.d.ts +0 -30
  290. package/search-index/elastic/search-index.js +0 -144
  291. package/search-index/elastic/sort-converter.d.ts +0 -4
  292. package/search-index/elastic/sort-converter.js +0 -14
  293. package/search-index/elastic/types.d.ts +0 -5
  294. package/search-index/elastic/types.js +0 -1
  295. package/search-index/error.d.ts +0 -10
  296. package/search-index/error.js +0 -14
  297. package/search-index/index.d.ts +0 -3
  298. package/search-index/index.js +0 -3
  299. package/search-index/memory/index.d.ts +0 -1
  300. package/search-index/memory/index.js +0 -1
  301. package/search-index/memory/memory-search-index.d.ts +0 -19
  302. package/search-index/memory/memory-search-index.js +0 -144
  303. package/search-index/search-index.d.ts +0 -46
  304. package/search-index/search-index.js +0 -31
  305. package/search-index/search-result.d.ts +0 -12
  306. package/search-index/search-result.js +0 -1
  307. package/theme/adapters/css-adapter.d.ts +0 -5
  308. package/theme/adapters/css-adapter.js +0 -29
  309. package/theme/adapters/index.d.ts +0 -2
  310. package/theme/adapters/index.js +0 -2
  311. package/theme/adapters/tailwind-adapter.d.ts +0 -18
  312. package/theme/adapters/tailwind-adapter.js +0 -32
  313. package/theme/index.d.ts +0 -1
  314. package/theme/index.js +0 -1
  315. package/theme/theme-service.d.ts +0 -43
  316. package/theme/theme-service.js +0 -128
  317. /package/{examples/orm → lock/postgres}/drizzle.config.d.ts +0 -0
@@ -1,90 +0,0 @@
1
- import { mongoDocumentFromMaybeNewEntity, toEntity, toMongoDocument } from './model/document.js';
2
- import { deleteManyOperation, deleteOneOperation, insertOneOperation, replaceOneOperation, updateManyOperation, updateOneOperation } from './operations.js';
3
- export class MongoBulk {
4
- collection;
5
- operations;
6
- executed;
7
- constructor(collection) {
8
- this.collection = collection;
9
- this.operations = [];
10
- this.executed = false;
11
- }
12
- /**
13
- * execute operations
14
- * @param ordered whether operations must be executed in order (slower) (default: false)
15
- */
16
- async execute(ordered = false) {
17
- if (this.executed) {
18
- throw new Error('already executed');
19
- }
20
- this.executed = true;
21
- if (this.operations.length == 0) {
22
- throw new Error('no operations specified');
23
- }
24
- const result = await this.collection.bulkWrite(this.operations, { ordered });
25
- return {
26
- insertedCount: result.insertedCount,
27
- matchedCount: result.matchedCount,
28
- modifiedCount: result.modifiedCount,
29
- deletedCount: result.deletedCount,
30
- upsertedCount: result.upsertedCount,
31
- raw: result
32
- };
33
- }
34
- insert(entity) {
35
- const document = mongoDocumentFromMaybeNewEntity(entity);
36
- const operation = insertOneOperation(document);
37
- this.operations.push(operation);
38
- return toEntity(document);
39
- }
40
- insertMany(entities) {
41
- const documents = entities.map(mongoDocumentFromMaybeNewEntity);
42
- const operations = documents.map(insertOneOperation);
43
- this.operations.push(...operations);
44
- return documents.map(toEntity);
45
- }
46
- update(filter, update, options) {
47
- const operation = updateOneOperation(filter, update, options);
48
- this.operations.push(operation);
49
- return this;
50
- }
51
- updateMany(filter, update, options) {
52
- const operation = updateManyOperation(filter, update, options);
53
- this.operations.push(operation);
54
- return this;
55
- }
56
- replace(entity, options) {
57
- return this.replaceByFilter({ _id: entity.id }, entity, options);
58
- }
59
- replaceMany(entities, options) {
60
- const documents = entities.map(toMongoDocument);
61
- const operations = documents.map((document) => replaceOneOperation({ _id: document._id }, document, options));
62
- this.operations.push(...operations);
63
- return this;
64
- }
65
- replaceByFilter(filter, entity, options) {
66
- const document = toMongoDocument(entity);
67
- const operation = replaceOneOperation(filter, document, options);
68
- this.operations.push(operation);
69
- return this;
70
- }
71
- delete(entity) {
72
- const filter = { _id: entity.id };
73
- return this.deleteByFilter(filter);
74
- }
75
- deleteMany(entities) {
76
- const ids = entities.map((entity) => entity.id);
77
- const filter = { _id: { $in: ids } };
78
- return this.deleteManyByFilter(filter);
79
- }
80
- deleteByFilter(filter) {
81
- const operation = deleteOneOperation(filter);
82
- this.operations.push(operation);
83
- return this;
84
- }
85
- deleteManyByFilter(filter) {
86
- const operation = deleteManyOperation(filter);
87
- this.operations.push(operation);
88
- return this;
89
- }
90
- }
@@ -1,98 +0,0 @@
1
- import type { Entity, EntityPatch, MaybeNewEntity, Query, QueryOptions, UpdateOptions } from '../../database/index.js';
2
- import { EntityRepository } from '../../database/index.js';
3
- import type { AfterResolve } from '../../injector/index.js';
4
- import { afterResolve } from '../../injector/index.js';
5
- import type { Logger } from '../../logger/index.js';
6
- import type { Collection } from './classes.js';
7
- import { MongoBaseRepository } from './mongo-base.repository.js';
8
- import type { Filter, TypedIndexDescription, UpdateFilter } from './types.js';
9
- export type MongoEntityRepositoryOptions<T extends Entity<any>> = {
10
- logger: Logger;
11
- indexes?: TypedIndexDescription<T>[];
12
- };
13
- export type MappingItemTransformer<T extends Entity<any> = any, TKey extends keyof T = any> = (value: T[TKey]) => any;
14
- export type MappingItem<T extends Entity<any>, TDb extends Entity<any>, TKey extends keyof T = keyof T, TDbKey extends keyof TDb = keyof TDb> = {
15
- key: TDbKey;
16
- transform: MappingItemTransformer<T, TKey>;
17
- };
18
- export declare function mapTo<T extends Entity<any>, TDb extends Entity<any>, TKey extends keyof T, TDbKey extends keyof TDb>(key: TDbKey, transform: (value: T[TKey]) => TDb[TDbKey]): MappingItem<T, TDb, TKey, TDbKey>;
19
- export type TransformerMapping<T extends Entity<any>, TDb extends Entity<any>> = {
20
- [P in keyof T]?: MappingItem<T, TDb, P>;
21
- };
22
- export type TransformerMappingMap<T extends Entity<any> = any, TDb extends Entity<any> = any> = Map<keyof T, MappingItem<T, TDb>>;
23
- export type EntityTransformer<T extends Entity<any>, TDb extends Entity<any>> = {
24
- /**
25
- * function to transform the base entity to the mongo entity
26
- */
27
- transform: (item: MaybeNewEntity<T>) => MaybeNewEntity<TDb>;
28
- /**
29
- * function to transform the mongo entity to the base entity
30
- */
31
- untransform: (item: TDb) => T;
32
- /**
33
- * maps a single property, required if an existing property changes its name or value. Not required for additional properties.
34
- */
35
- mapping?: TransformerMapping<T, TDb>;
36
- };
37
- export type InsertIfNotExistsByQueryItem<T extends Entity<any>> = {
38
- query: Query<T>;
39
- entity: MaybeNewEntity<T>;
40
- };
41
- export declare const noopTransformerFunction: <T>(item: T) => T;
42
- export declare const noopTransformer: EntityTransformer<any, any>;
43
- export declare function getNoopTransformer<T extends Entity<any> = any>(): EntityTransformer<T, T>;
44
- export declare class MongoEntityRepository<T extends Entity<any>, TDb extends Entity<any> = T> extends EntityRepository<T> implements AfterResolve {
45
- readonly collection: Collection<TDb>;
46
- readonly transformer: EntityTransformer<T, TDb>;
47
- readonly logger: Logger;
48
- readonly indexes?: TypedIndexDescription<TDb>[];
49
- readonly baseRepository: MongoBaseRepository<TDb>;
50
- readonly transformerMappingMap: TransformerMappingMap<T, TDb>;
51
- constructor(collection: Collection<TDb>, transformer: EntityTransformer<T, TDb>, { logger, indexes }: MongoEntityRepositoryOptions<TDb>);
52
- [afterResolve](): Promise<void>;
53
- initialize(): Promise<void>;
54
- load<U extends T = T>(id: string): Promise<U>;
55
- tryLoad<U extends T = T>(id: string): Promise<U | undefined>;
56
- loadMany<U extends T = T>(ids: string[], options?: QueryOptions<U>): Promise<U[]>;
57
- loadManyCursor<U extends T = T>(ids: string[], options?: QueryOptions<U>): AsyncIterableIterator<U>;
58
- loadByFilter<U extends T = T>(filter: Query<U>, options?: QueryOptions<U>): Promise<U>;
59
- tryLoadByFilter<U extends T = T>(filter: Query<U>, options?: QueryOptions<U>): Promise<U | undefined>;
60
- loadManyByFilter<U extends T = T>(filter: Query<U>, options?: QueryOptions<U>): Promise<U[]>;
61
- loadManyByFilterCursor<U extends T = T>(filter: Query<U>, options?: QueryOptions<U>): AsyncIterableIterator<U>;
62
- loadAll<U extends T = T>(options?: QueryOptions<U>): Promise<U[]>;
63
- loadAllCursor<U extends T = T>(options?: QueryOptions<U>): AsyncIterableIterator<U>;
64
- loadAndDelete<U extends T = T>(id: string): Promise<U>;
65
- tryLoadAndDelete<U extends T = T>(id: string): Promise<U | undefined>;
66
- loadByFilterAndDelete<U extends T = T>(filter: Query<U>, options?: QueryOptions<U>): Promise<U>;
67
- tryLoadByFilterAndDelete<U extends T = T>(filter: Query<U>, options?: QueryOptions<U>): Promise<U | undefined>;
68
- loadAndPatch<U extends T = T>(id: string, patch: EntityPatch<U>, includePatch: boolean): Promise<U>;
69
- tryLoadAndPatch<U extends T = T>(id: string, patch: EntityPatch<U>, includePatch: boolean): Promise<U | undefined>;
70
- loadByFilterAndPatch<U extends T = T>(filter: Query<U>, patch: EntityPatch<U>, includePatch: boolean, options?: QueryOptions<U>): Promise<U>;
71
- tryLoadByFilterAndPatch<U extends T = T>(filter: Query<U>, patch: EntityPatch<U>, includePatch: boolean, options?: QueryOptions<U>): Promise<U | undefined>;
72
- has(id: string): Promise<boolean>;
73
- hasByFilter<U extends T>(filter: Query<U>): Promise<boolean>;
74
- hasMany(ids: string[]): Promise<string[]>;
75
- hasAll(ids: string[]): Promise<boolean>;
76
- count(allowEstimation?: boolean): Promise<number>;
77
- countByFilter<U extends T>(filter: Query<U>, _allowEstimation?: boolean): Promise<number>;
78
- patch<U extends T = T>(entity: U, patch: EntityPatch<U>): Promise<boolean>;
79
- patchMany<U extends T = T>(entities: U[], patch: EntityPatch<U>): Promise<number>;
80
- patchByFilter<U extends T = T>(filter: Query<U>, patch: EntityPatch<U>): Promise<boolean>;
81
- patchManyByFilter<U extends T = T>(filter: Query<U>, patch: EntityPatch<U>): Promise<number>;
82
- insert<U extends T>(entity: MaybeNewEntity<U>): Promise<U>;
83
- insertMany<U extends T>(entities: MaybeNewEntity<U>[]): Promise<U[]>;
84
- insertIfNotExists<U extends T>(entity: MaybeNewEntity<U>): Promise<U | undefined>;
85
- insertManyIfNotExists<U extends T>(entities: MaybeNewEntity<U>[]): Promise<U[]>;
86
- insertIfNotExistsByFilter<U extends T>(query: Query<U>, entity: MaybeNewEntity<U>): Promise<U | undefined>;
87
- insertManyIfNotExistsByFilter<U extends T>(items: InsertIfNotExistsByQueryItem<U>[]): Promise<U[]>;
88
- update<U extends T>(entity: U, options?: UpdateOptions): Promise<boolean>;
89
- updateMany<U extends T>(entities: U[], options?: UpdateOptions): Promise<number>;
90
- delete<U extends T>(entity: U): Promise<boolean>;
91
- deleteMany<U extends T>(entities: U[]): Promise<number>;
92
- deleteById(id: string): Promise<boolean>;
93
- deleteManyById(ids: string[]): Promise<number>;
94
- deleteByFilter<U extends T = T>(filter: Query<U>): Promise<boolean>;
95
- deleteManyByFilter<U extends T = T>(filter: Query<U>): Promise<number>;
96
- transformFilter<U extends T = T>(filter: Query<U>): Filter<TDb>;
97
- transformPatch<U extends T = T>(patch: EntityPatch<U>): UpdateFilter<TDb>;
98
- }
@@ -1,278 +0,0 @@
1
- import { EntityRepository } from '../../database/index.js';
2
- import { afterResolve } from '../../injector/index.js';
3
- import { equals } from '../../utils/equals.js';
4
- import { filterUndefinedObjectProperties, objectEntries, objectKeys } from '../../utils/object/object.js';
5
- import { _throw } from '../../utils/throw.js';
6
- import { isDefined, isUndefined } from '../../utils/type-guards.js';
7
- import { MongoBaseRepository } from './mongo-base.repository.js';
8
- import { convertQuery, convertSort } from './query-converter.js';
9
- export function mapTo(key, transform) {
10
- return { key, transform };
11
- }
12
- export const noopTransformerFunction = (item) => item;
13
- export const noopTransformer = {
14
- transform: noopTransformerFunction,
15
- untransform: noopTransformerFunction
16
- };
17
- export function getNoopTransformer() {
18
- return noopTransformer;
19
- }
20
- export class MongoEntityRepository extends EntityRepository {
21
- collection;
22
- transformer;
23
- logger;
24
- indexes;
25
- baseRepository;
26
- transformerMappingMap;
27
- constructor(collection, transformer, { logger, indexes }) {
28
- super();
29
- this.collection = collection;
30
- this.transformer = transformer;
31
- this.logger = logger.prefix(`${collection.collectionName}: `);
32
- this.indexes = indexes?.map(normalizeIndex);
33
- this.baseRepository = new MongoBaseRepository(collection);
34
- this.transformerMappingMap = new Map(objectEntries(transformer.mapping ?? {}));
35
- }
36
- async [afterResolve]() {
37
- await this.initialize();
38
- }
39
- async initialize() {
40
- const indexes = this.indexes?.map((index) => ({ index, normalizedIndex: normalizeIndex(index) }));
41
- if (isUndefined(indexes)) {
42
- return;
43
- }
44
- const existingRawIndexes = await this.collection.indexes();
45
- const existingIndexes = existingRawIndexes.map(normalizeIndex).filter((index) => index.name != '_id_');
46
- const unwantedIndexes = existingIndexes.filter((existingIndex) => !indexes.some(({ normalizedIndex }) => equals(existingIndex, normalizedIndex, { deep: true, sortArray: false })));
47
- const requiredIndexes = indexes.filter(({ normalizedIndex: wantedNormalizedIndex }) => !existingIndexes.some((index) => equals(wantedNormalizedIndex, index, { deep: true, sortArray: false })));
48
- for (const unwantedIndex of unwantedIndexes) {
49
- this.logger.warn(`dropping index ${unwantedIndex.name}`);
50
- await this.collection.dropIndex(unwantedIndex.name);
51
- }
52
- if (requiredIndexes.length > 0) {
53
- const indexexToCreate = requiredIndexes.map(({ index }) => index);
54
- const indexNames = indexexToCreate.map((index) => index.name ?? _throw(new Error('index name missing')));
55
- this.logger.warn(`creating indexes ${indexNames.join(', ')}`);
56
- await this.baseRepository.createIndexes(indexexToCreate);
57
- }
58
- }
59
- async load(id) {
60
- return this.loadByFilter({ id });
61
- }
62
- async tryLoad(id) {
63
- return this.tryLoadByFilter({ id });
64
- }
65
- async loadMany(ids, options) {
66
- return this.loadManyByFilter({ id: { $in: ids } }, options);
67
- }
68
- // eslint-disable-next-line @typescript-eslint/require-await
69
- async *loadManyCursor(ids, options) {
70
- yield* this.loadManyByFilterCursor({ id: { $in: ids } }, options);
71
- }
72
- async loadByFilter(filter, options) {
73
- const transformedFilter = this.transformFilter(filter);
74
- const entity = await this.baseRepository.loadByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
75
- return this.transformer.untransform(entity);
76
- }
77
- async tryLoadByFilter(filter, options) {
78
- const transformedFilter = this.transformFilter(filter);
79
- const entity = await this.baseRepository.tryLoadByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
80
- return entity == undefined ? undefined : this.transformer.untransform(entity);
81
- }
82
- async loadManyByFilter(filter, options) {
83
- const transformedFilter = this.transformFilter(filter);
84
- const entities = await this.baseRepository.loadManyByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
85
- return entities.map(this.transformer.untransform);
86
- }
87
- async *loadManyByFilterCursor(filter, options) {
88
- const transformedFilter = this.transformFilter(filter);
89
- for await (const entity of this.baseRepository.loadManyByFilterWithCursor(transformedFilter, convertOptions(options, this.transformerMappingMap))) {
90
- yield this.transformer.untransform(entity);
91
- }
92
- }
93
- async loadAll(options) {
94
- const entities = await this.baseRepository.loadManyByFilter({}, convertOptions(options, this.transformerMappingMap));
95
- return entities.map((entity) => this.transformer.untransform(entity));
96
- }
97
- async *loadAllCursor(options) {
98
- for await (const entity of this.baseRepository.loadManyByFilterWithCursor({}, convertOptions(options, this.transformerMappingMap))) {
99
- yield this.transformer.untransform(entity);
100
- }
101
- }
102
- async loadAndDelete(id) {
103
- return this.loadByFilterAndDelete({ id });
104
- }
105
- async tryLoadAndDelete(id) {
106
- return this.tryLoadByFilterAndDelete({ id });
107
- }
108
- async loadByFilterAndDelete(filter, options) {
109
- const transformedFilter = this.transformFilter(filter);
110
- const entity = await this.baseRepository.loadByFilterAndDelete(transformedFilter, convertOptions(options, this.transformerMappingMap));
111
- return this.transformer.untransform(entity);
112
- }
113
- async tryLoadByFilterAndDelete(filter, options) {
114
- const transformedFilter = this.transformFilter(filter);
115
- const entity = await this.baseRepository.tryLoadByFilterAndDelete(transformedFilter, convertOptions(options, this.transformerMappingMap));
116
- return entity == undefined ? undefined : this.transformer.untransform(entity);
117
- }
118
- async loadAndPatch(id, patch, includePatch) {
119
- return this.loadByFilterAndPatch({ id }, patch, includePatch);
120
- }
121
- async tryLoadAndPatch(id, patch, includePatch) {
122
- return this.tryLoadByFilterAndPatch({ id }, patch, includePatch);
123
- }
124
- async loadByFilterAndPatch(filter, patch, includePatch, options) {
125
- const transformedFilter = this.transformFilter(filter);
126
- const update = this.transformPatch(patch);
127
- const loadOptions = convertOptions(options, this.transformerMappingMap) ?? {};
128
- const entity = await this.baseRepository.loadByFilterAndUpdate(transformedFilter, update, { ...loadOptions, returnDocument: includePatch ? 'after' : 'before' });
129
- return this.transformer.untransform(entity);
130
- }
131
- async tryLoadByFilterAndPatch(filter, patch, includePatch, options) {
132
- const transformedFilter = this.transformFilter(filter);
133
- const update = this.transformPatch(patch);
134
- const loadOptions = convertOptions(options, this.transformerMappingMap) ?? {};
135
- const entity = await this.baseRepository.tryLoadByFilterAndUpdate(transformedFilter, update, { ...loadOptions, returnDocument: includePatch ? 'after' : 'before' });
136
- return entity == undefined ? undefined : this.transformer.untransform(entity);
137
- }
138
- async has(id) {
139
- return this.hasByFilter({ id });
140
- }
141
- async hasByFilter(filter) {
142
- const transformedFilter = this.transformFilter(filter);
143
- return this.baseRepository.hasByFilter(transformedFilter);
144
- }
145
- async hasMany(ids) {
146
- const transformedFilter = this.transformFilter({ id: { $in: ids } });
147
- return this.baseRepository.getIdsByFilter(transformedFilter);
148
- }
149
- async hasAll(ids) {
150
- const transformedFilter = this.transformFilter({ id: { $in: ids } });
151
- const count = await this.baseRepository.countByFilter(transformedFilter);
152
- return count == ids.length;
153
- }
154
- async count(allowEstimation = false) {
155
- if (allowEstimation) {
156
- return this.baseRepository.countByFilterEstimated();
157
- }
158
- return this.baseRepository.countByFilter({});
159
- }
160
- async countByFilter(filter, _allowEstimation = false) {
161
- const transformedFilter = this.transformFilter(filter);
162
- return this.baseRepository.countByFilter(transformedFilter);
163
- }
164
- async patch(entity, patch) {
165
- return this.patchByFilter({ _id: entity.id }, patch);
166
- }
167
- async patchMany(entities, patch) {
168
- const ids = entities.map((entity) => entity.id);
169
- return this.patchManyByFilter({ _id: { $in: ids } }, patch);
170
- }
171
- async patchByFilter(filter, patch) {
172
- const transformedFilter = this.transformFilter(filter);
173
- const transformedPatch = this.transformPatch(patch);
174
- const { matchedCount } = await this.baseRepository.update(transformedFilter, transformedPatch);
175
- return matchedCount > 0;
176
- }
177
- async patchManyByFilter(filter, patch) {
178
- const transformedFilter = this.transformFilter(filter);
179
- const transformedPatch = this.transformPatch(patch);
180
- const { matchedCount } = await this.baseRepository.updateMany(transformedFilter, transformedPatch);
181
- return matchedCount;
182
- }
183
- async insert(entity) {
184
- const transformed = this.transformer.transform(entity);
185
- const insertedEntity = await this.baseRepository.insert(transformed);
186
- return this.transformer.untransform(insertedEntity);
187
- }
188
- async insertMany(entities) {
189
- const transformed = entities.map((entity) => this.transformer.transform(entity));
190
- const insertedEntities = await this.baseRepository.insertMany(transformed);
191
- return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
192
- }
193
- async insertIfNotExists(entity) {
194
- const transformed = this.transformer.transform(entity);
195
- const insertedEntity = await this.baseRepository.insertIfNotExists(transformed);
196
- return isUndefined(insertedEntity) ? undefined : this.transformer.untransform(insertedEntity);
197
- }
198
- async insertManyIfNotExists(entities) {
199
- const transformed = entities.map((entity) => this.transformer.transform(entity));
200
- const insertedEntities = await this.baseRepository.insertManyIfNotExists(transformed);
201
- return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
202
- }
203
- async insertIfNotExistsByFilter(query, entity) {
204
- const transformedFilter = this.transformFilter(query);
205
- const transformed = this.transformer.transform(entity);
206
- const document = await this.baseRepository.insertIfNotExistsByFilter(transformedFilter, transformed);
207
- return isUndefined(document) ? undefined : this.transformer.untransform(document);
208
- }
209
- async insertManyIfNotExistsByFilter(items) {
210
- const transformedItems = items.map((item) => ({
211
- filter: this.transformFilter(item.query),
212
- entity: this.transformer.transform(item.entity)
213
- }));
214
- const insertedEntities = await this.baseRepository.insertManyIfNotExistsByFilter(transformedItems);
215
- return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
216
- }
217
- async update(entity, options) {
218
- const transformed = this.transformer.transform(entity);
219
- return this.baseRepository.replace(transformed, options);
220
- }
221
- async updateMany(entities, options) {
222
- const transformed = entities.map((entity) => this.transformer.transform(entity));
223
- return this.baseRepository.replaceMany(transformed, options);
224
- }
225
- async delete(entity) {
226
- return this.deleteById(entity.id);
227
- }
228
- async deleteMany(entities) {
229
- const ids = entities.map((entity) => entity.id);
230
- return this.deleteManyByFilter({ id: { $in: ids } });
231
- }
232
- async deleteById(id) {
233
- return this.deleteByFilter({ id });
234
- }
235
- async deleteManyById(ids) {
236
- return this.deleteManyByFilter({ id: { $in: ids } });
237
- }
238
- async deleteByFilter(filter) {
239
- const transformedFilter = this.transformFilter(filter);
240
- return this.baseRepository.deleteByFilter(transformedFilter);
241
- }
242
- async deleteManyByFilter(filter) {
243
- const transformedFilter = this.transformFilter(filter);
244
- return this.baseRepository.deleteManyByFilter(transformedFilter);
245
- }
246
- transformFilter(filter) {
247
- return convertQuery(filter, this.transformerMappingMap);
248
- }
249
- transformPatch(patch) {
250
- const transformedPatch = {};
251
- for (const [property, value] of objectEntries(patch)) {
252
- const mapping = this.transformerMappingMap.get(property);
253
- if (isDefined(mapping)) {
254
- transformedPatch[mapping.key] = mapping.transform(value);
255
- }
256
- else {
257
- transformedPatch[property] = value;
258
- }
259
- }
260
- return { $set: { ...transformedPatch } };
261
- }
262
- }
263
- function normalizeIndex(index) {
264
- const { name: providedName, unique, v, background, ns, ...indexRest } = index; // eslint-disable-line @typescript-eslint/no-unused-vars
265
- const name = providedName ?? objectKeys(index.key).join('_');
266
- return filterUndefinedObjectProperties({ name, unique: (unique == true) ? true : undefined, ...indexRest });
267
- }
268
- function convertOptions(options, mappingMap) {
269
- if (options == undefined) {
270
- return undefined;
271
- }
272
- const loadOptions = {
273
- skip: options.skip,
274
- limit: options.limit,
275
- sort: options.sort?.map((item) => convertSort(item, mappingMap))
276
- };
277
- return loadOptions;
278
- }
@@ -1,10 +0,0 @@
1
- import type { Entity, UpdateOptions } from '../../database/index.js';
2
- import type { MongoDocument } from './model/document.js';
3
- import type { ReplaceOptions } from './mongo-base.repository.js';
4
- import type { DeleteManyOperation, DeleteOneOperation, Filter, InsertOneOperation, ReplaceOneOperation, UpdateFilter, UpdateManyOperation, UpdateOneOperation } from './types.js';
5
- export declare function insertOneOperation<T extends Entity>(document: MongoDocument<T>): InsertOneOperation<T>;
6
- export declare function replaceOneOperation<T extends Entity>(filter: Filter<T>, replacement: MongoDocument<T>, options?: ReplaceOptions): ReplaceOneOperation<T>;
7
- export declare function updateOneOperation<T extends Entity>(filter: Filter<T>, update: UpdateFilter<T>, options?: UpdateOptions): UpdateOneOperation<T>;
8
- export declare function updateManyOperation<T extends Entity>(filter: Filter<T>, update: UpdateFilter<T>, options?: UpdateOptions): UpdateManyOperation<T>;
9
- export declare function deleteOneOperation<T extends Entity>(filter: Filter<T>): DeleteOneOperation<T>;
10
- export declare function deleteManyOperation<T extends Entity>(filter: Filter<T>): DeleteManyOperation<T>;
@@ -1,54 +0,0 @@
1
- export function insertOneOperation(document) {
2
- const operation = {
3
- insertOne: {
4
- document: document
5
- }
6
- };
7
- return operation;
8
- }
9
- export function replaceOneOperation(filter, replacement, options = {}) {
10
- const operation = {
11
- replaceOne: {
12
- filter,
13
- replacement,
14
- upsert: options.upsert
15
- }
16
- };
17
- return operation;
18
- }
19
- export function updateOneOperation(filter, update, options = {}) {
20
- const operation = {
21
- updateOne: {
22
- filter,
23
- update,
24
- upsert: options.upsert
25
- }
26
- };
27
- return operation;
28
- }
29
- export function updateManyOperation(filter, update, options = {}) {
30
- const operation = {
31
- updateMany: {
32
- filter,
33
- update,
34
- upsert: options.upsert
35
- }
36
- };
37
- return operation;
38
- }
39
- export function deleteOneOperation(filter) {
40
- const operation = {
41
- deleteOne: {
42
- filter
43
- }
44
- };
45
- return operation;
46
- }
47
- export function deleteManyOperation(filter) {
48
- const operation = {
49
- deleteMany: {
50
- filter
51
- }
52
- };
53
- return operation;
54
- }
@@ -1,6 +0,0 @@
1
- import type { Entity } from '../../database/index.js';
2
- import type { Query, Sort } from '../../database/query.js';
3
- import type { MappingItemTransformer, TransformerMappingMap } from './mongo-entity-repository.js';
4
- import type { Filter, SortArrayItem } from './types.js';
5
- export declare function convertQuery<T extends Entity, TDb extends Entity>(query: Query<T>, mappingMap?: TransformerMappingMap<T, TDb>, transform?: MappingItemTransformer): Filter<TDb>;
6
- export declare function convertSort<T extends Entity, TDb extends Entity>(sort: Sort<T>, mappingMap: TransformerMappingMap<T, TDb>): SortArrayItem<TDb>;
@@ -1,83 +0,0 @@
1
- import { allQueryTypes } from '../../database/index.js';
2
- import { objectEntries } from '../../utils/object/object.js';
3
- import { assertDefinedPass, isDefined, isObject, isPrimitive, isRegExp, isString } from '../../utils/type-guards.js';
4
- const operatorsSet = new Set(allQueryTypes);
5
- export function convertQuery(query, mappingMap = new Map(), transform) {
6
- let filterQuery = {};
7
- const entries = objectEntries(query);
8
- for (const [property, value] of entries) {
9
- const mapping = mappingMap.get(property);
10
- switch (property) {
11
- case '$and':
12
- filterQuery.$and = value.map((innerQuery) => convertQuery(innerQuery, mappingMap, transform));
13
- break;
14
- case '$or':
15
- filterQuery.$or = value.map((innerQuery) => convertQuery(innerQuery, mappingMap, transform));
16
- break;
17
- case '$nor':
18
- filterQuery.$nor = value.map((innerQuery) => convertQuery(innerQuery, mappingMap, transform));
19
- break;
20
- default:
21
- if (operatorsSet.has(property)) {
22
- const operatorQuery = convertOperator(property, value, mapping?.transform ?? transform, mappingMap);
23
- filterQuery = { ...filterQuery, ...operatorQuery };
24
- }
25
- else {
26
- const mappedPropertyName = getPropertyName(mapping?.key ?? property);
27
- filterQuery[mappedPropertyName] = convertInnerQuery(value, mapping?.transform ?? transform, mappingMap);
28
- }
29
- }
30
- }
31
- return filterQuery;
32
- }
33
- function getPropertyName(property) {
34
- return (property == 'id') ? '_id' : property;
35
- }
36
- function convertInnerQuery(query, transform, mapping) {
37
- if (isPrimitive(query)) {
38
- return transform?.(query) ?? query;
39
- }
40
- const queryEntries = objectEntries(query);
41
- if (queryEntries.length > 1) {
42
- const operators = queryEntries.map((entry) => entry[0]);
43
- throw new Error(`only one operator allowed but got ${JSON.stringify(operators)}`);
44
- }
45
- const [operator, value] = assertDefinedPass(queryEntries[0], 'missing query body');
46
- return convertOperator(operator, value, transform, mapping);
47
- }
48
- // eslint-disable-next-line complexity
49
- function convertOperator(operator, value, transform, mapping) {
50
- switch (operator) {
51
- case '$eq':
52
- case '$not':
53
- case '$exists':
54
- case '$gt':
55
- case '$gte':
56
- case '$lt':
57
- case '$lte':
58
- return { [operator]: convertInnerQuery(value, transform) };
59
- case '$neq':
60
- return { $ne: convertInnerQuery(value, transform) };
61
- case '$in':
62
- return { $in: isDefined(transform) ? value.map(transform) : value };
63
- case '$nin':
64
- return { $nin: isDefined(transform) ? value.map(transform) : value };
65
- case '$all':
66
- return { $all: isDefined(transform) ? value.map(transform) : value };
67
- case '$item':
68
- return { $elemMatch: isObject(value) ? convertQuery(value, mapping, transform) : transform?.(value) ?? value };
69
- case '$regex':
70
- if (isString(value) || isRegExp(value)) {
71
- return { $regex: value };
72
- }
73
- return {
74
- $regex: value.pattern,
75
- $options: value.flags
76
- };
77
- default: throw new Error(`unsupported inner-operator ${operator}`);
78
- }
79
- }
80
- export function convertSort(sort, mappingMap) {
81
- const field = mappingMap.get(sort.field)?.key ?? sort.field;
82
- return [field, sort.order == 'desc' ? -1 : 1];
83
- }
@@ -1,7 +0,0 @@
1
- import type { Entity } from '../../database/index.js';
2
- import type { Logger } from '../../logger/index.js';
3
- import type { Collection } from './classes.js';
4
- import { MongoEntityRepository } from './mongo-entity-repository.js';
5
- export declare class SimpleMongoEntityRepository<T extends Entity> extends MongoEntityRepository<T> {
6
- constructor(collection: Collection<T>, logger: Logger);
7
- }
@@ -1,6 +0,0 @@
1
- import { MongoEntityRepository, noopTransformer } from './mongo-entity-repository.js';
2
- export class SimpleMongoEntityRepository extends MongoEntityRepository {
3
- constructor(collection, logger) {
4
- super(collection, noopTransformer, { logger });
5
- }
6
- }