@ambiten/core 1.0.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 (304) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +247 -0
  3. package/bin/bootstrap.js +26 -0
  4. package/dist/ambiten-cache/ambitenCache.d.ts +64 -0
  5. package/dist/ambiten-cache/ambitenCache.d.ts.map +1 -0
  6. package/dist/ambiten-cache/ambitenCache.js +127 -0
  7. package/dist/ambiten-cache/index.d.ts +2 -0
  8. package/dist/ambiten-cache/index.d.ts.map +1 -0
  9. package/dist/ambiten-cache/index.js +4 -0
  10. package/dist/browser.d.ts +32 -0
  11. package/dist/browser.d.ts.map +1 -0
  12. package/dist/browser.js +37 -0
  13. package/dist/cli/ambiten-core-cli.d.ts +4 -0
  14. package/dist/cli/ambiten-core-cli.d.ts.map +1 -0
  15. package/dist/cli/ambiten-core-cli.js +41 -0
  16. package/dist/cli/buildInteractiveConfig.d.ts +4 -0
  17. package/dist/cli/buildInteractiveConfig.d.ts.map +1 -0
  18. package/dist/cli/buildInteractiveConfig.js +198 -0
  19. package/dist/cli/index.d.ts +5 -0
  20. package/dist/cli/index.d.ts.map +1 -0
  21. package/dist/cli/index.js +7 -0
  22. package/dist/cli/prompt.d.ts +10 -0
  23. package/dist/cli/prompt.d.ts.map +1 -0
  24. package/dist/cli/prompt.js +48 -0
  25. package/dist/cli/types.d.ts +11 -0
  26. package/dist/cli/types.d.ts.map +1 -0
  27. package/dist/cli/types.js +2 -0
  28. package/dist/config/ambiten.config.schema.json +278 -0
  29. package/dist/config/index.d.ts +2 -0
  30. package/dist/config/index.d.ts.map +1 -0
  31. package/dist/config/index.js +4 -0
  32. package/dist/config/loadAmbitenConfig.d.ts +3 -0
  33. package/dist/config/loadAmbitenConfig.d.ts.map +1 -0
  34. package/dist/config/loadAmbitenConfig.js +131 -0
  35. package/dist/context/ambitenContext.d.ts +35 -0
  36. package/dist/context/ambitenContext.d.ts.map +1 -0
  37. package/dist/context/ambitenContext.js +147 -0
  38. package/dist/context/helpers/runManualTransaction.d.ts +3 -0
  39. package/dist/context/helpers/runManualTransaction.d.ts.map +1 -0
  40. package/dist/context/helpers/runManualTransaction.js +22 -0
  41. package/dist/context/helpers/transactionSession.d.ts +9 -0
  42. package/dist/context/helpers/transactionSession.d.ts.map +1 -0
  43. package/dist/context/helpers/transactionSession.js +8 -0
  44. package/dist/context/index.d.ts +4 -0
  45. package/dist/context/index.d.ts.map +1 -0
  46. package/dist/context/index.js +6 -0
  47. package/dist/debug/debugLog.d.ts +2 -0
  48. package/dist/debug/debugLog.d.ts.map +1 -0
  49. package/dist/debug/debugLog.js +23 -0
  50. package/dist/debug/index.d.ts +2 -0
  51. package/dist/debug/index.d.ts.map +1 -0
  52. package/dist/debug/index.js +4 -0
  53. package/dist/gc/ambitenGC.d.ts +49 -0
  54. package/dist/gc/ambitenGC.d.ts.map +1 -0
  55. package/dist/gc/ambitenGC.js +138 -0
  56. package/dist/gc/gcCron.browser.d.ts +2 -0
  57. package/dist/gc/gcCron.browser.d.ts.map +1 -0
  58. package/dist/gc/gcCron.browser.js +9 -0
  59. package/dist/gc/gcCron.node.d.ts +19 -0
  60. package/dist/gc/gcCron.node.d.ts.map +1 -0
  61. package/dist/gc/gcCron.node.js +47 -0
  62. package/dist/gc/gcManager.d.ts +37 -0
  63. package/dist/gc/gcManager.d.ts.map +1 -0
  64. package/dist/gc/gcManager.js +62 -0
  65. package/dist/gc/index.d.ts +5 -0
  66. package/dist/gc/index.d.ts.map +1 -0
  67. package/dist/gc/index.js +7 -0
  68. package/dist/graphql/ambitenGraphQL.d.ts +24 -0
  69. package/dist/graphql/ambitenGraphQL.d.ts.map +1 -0
  70. package/dist/graphql/ambitenGraphQL.js +215 -0
  71. package/dist/graphql/index.d.ts +2 -0
  72. package/dist/graphql/index.d.ts.map +1 -0
  73. package/dist/graphql/index.js +4 -0
  74. package/dist/index-browser.js +25 -0
  75. package/dist/index-browser.js.map +1 -0
  76. package/dist/index-cli.js +26 -0
  77. package/dist/index-cli.js.map +1 -0
  78. package/dist/index.d.ts +30 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +25 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/init-cli/generate.project.d.ts +9 -0
  83. package/dist/init-cli/generate.project.d.ts.map +1 -0
  84. package/dist/init-cli/generate.project.js +38 -0
  85. package/dist/instrumentation/index.d.ts +3 -0
  86. package/dist/instrumentation/index.d.ts.map +1 -0
  87. package/dist/instrumentation/index.js +5 -0
  88. package/dist/instrumentation/measureQuery.browser.d.ts +3 -0
  89. package/dist/instrumentation/measureQuery.browser.d.ts.map +1 -0
  90. package/dist/instrumentation/measureQuery.browser.js +6 -0
  91. package/dist/instrumentation/measureQueryWithErrors.d.ts +11 -0
  92. package/dist/instrumentation/measureQueryWithErrors.d.ts.map +1 -0
  93. package/dist/instrumentation/measureQueryWithErrors.js +90 -0
  94. package/dist/lib-core/ambitenClient.d.ts +115 -0
  95. package/dist/lib-core/ambitenClient.d.ts.map +1 -0
  96. package/dist/lib-core/ambitenClient.js +537 -0
  97. package/dist/lib-core/ambitenModelFactory.d.ts +979 -0
  98. package/dist/lib-core/ambitenModelFactory.d.ts.map +1 -0
  99. package/dist/lib-core/ambitenModelFactory.js +3984 -0
  100. package/dist/lib-core/ambitenSchema.d.ts +126 -0
  101. package/dist/lib-core/ambitenSchema.d.ts.map +1 -0
  102. package/dist/lib-core/ambitenSchema.js +247 -0
  103. package/dist/lib-core/bootstrap/ambitenBootstrap.d.ts +38 -0
  104. package/dist/lib-core/bootstrap/ambitenBootstrap.d.ts.map +1 -0
  105. package/dist/lib-core/bootstrap/ambitenBootstrap.js +381 -0
  106. package/dist/lib-core/bootstrap/index.d.ts +2 -0
  107. package/dist/lib-core/bootstrap/index.d.ts.map +1 -0
  108. package/dist/lib-core/bootstrap/index.js +4 -0
  109. package/dist/lib-core/index.d.ts +5 -0
  110. package/dist/lib-core/index.d.ts.map +1 -0
  111. package/dist/lib-core/index.js +7 -0
  112. package/dist/middleware/authorization/auth.d.ts +22 -0
  113. package/dist/middleware/authorization/auth.d.ts.map +1 -0
  114. package/dist/middleware/authorization/auth.js +37 -0
  115. package/dist/middleware/index.d.ts +4 -0
  116. package/dist/middleware/index.d.ts.map +1 -0
  117. package/dist/middleware/index.js +6 -0
  118. package/dist/middleware/rbac/rbacMiddleware.d.ts +103 -0
  119. package/dist/middleware/rbac/rbacMiddleware.d.ts.map +1 -0
  120. package/dist/middleware/rbac/rbacMiddleware.js +246 -0
  121. package/dist/middleware/rbac/rbacTypes.d.ts +4 -0
  122. package/dist/middleware/rbac/rbacTypes.d.ts.map +1 -0
  123. package/dist/middleware/rbac/rbacTypes.js +8 -0
  124. package/dist/plugins/index.d.ts +3 -0
  125. package/dist/plugins/index.d.ts.map +1 -0
  126. package/dist/plugins/index.js +5 -0
  127. package/dist/plugins/softDelete/applySoftDelete.d.ts +5 -0
  128. package/dist/plugins/softDelete/applySoftDelete.d.ts.map +1 -0
  129. package/dist/plugins/softDelete/applySoftDelete.js +139 -0
  130. package/dist/plugins/softDelete/types.d.ts +14 -0
  131. package/dist/plugins/softDelete/types.d.ts.map +1 -0
  132. package/dist/plugins/softDelete/types.js +2 -0
  133. package/dist/redis-manager/index.d.ts +2 -0
  134. package/dist/redis-manager/index.d.ts.map +1 -0
  135. package/dist/redis-manager/index.js +4 -0
  136. package/dist/redis-manager/redisClient.d.ts +32 -0
  137. package/dist/redis-manager/redisClient.d.ts.map +1 -0
  138. package/dist/redis-manager/redisClient.js +146 -0
  139. package/dist/tanancy/MultiTenantManager.d.ts +98 -0
  140. package/dist/tanancy/MultiTenantManager.d.ts.map +1 -0
  141. package/dist/tanancy/MultiTenantManager.js +190 -0
  142. package/dist/tanancy/TenantContext.d.ts +31 -0
  143. package/dist/tanancy/TenantContext.d.ts.map +1 -0
  144. package/dist/tanancy/TenantContext.js +59 -0
  145. package/dist/tanancy/TenantModelResolver.d.ts +10 -0
  146. package/dist/tanancy/TenantModelResolver.d.ts.map +1 -0
  147. package/dist/tanancy/TenantModelResolver.js +114 -0
  148. package/dist/tanancy/index.d.ts +5 -0
  149. package/dist/tanancy/index.d.ts.map +1 -0
  150. package/dist/tanancy/index.js +7 -0
  151. package/dist/tanancy/init/initMultiTenancy.d.ts +29 -0
  152. package/dist/tanancy/init/initMultiTenancy.d.ts.map +1 -0
  153. package/dist/tanancy/init/initMultiTenancy.js +62 -0
  154. package/dist/templates/generateDefaultConfigContent.d.ts +10 -0
  155. package/dist/templates/generateDefaultConfigContent.d.ts.map +1 -0
  156. package/dist/templates/generateDefaultConfigContent.js +108 -0
  157. package/dist/templates/generateGCManagerFile.d.ts +2 -0
  158. package/dist/templates/generateGCManagerFile.d.ts.map +1 -0
  159. package/dist/templates/generateGCManagerFile.js +39 -0
  160. package/dist/templates/generateGCRunnerFile.d.ts +2 -0
  161. package/dist/templates/generateGCRunnerFile.d.ts.map +1 -0
  162. package/dist/templates/generateGCRunnerFile.js +25 -0
  163. package/dist/templates/generateMainEntry.d.ts +3 -0
  164. package/dist/templates/generateMainEntry.d.ts.map +1 -0
  165. package/dist/templates/generateMainEntry.js +24 -0
  166. package/dist/templates/index.d.ts +6 -0
  167. package/dist/templates/index.d.ts.map +1 -0
  168. package/dist/templates/index.js +8 -0
  169. package/dist/templates/scaffold/structureGenerator.d.ts +4 -0
  170. package/dist/templates/scaffold/structureGenerator.d.ts.map +1 -0
  171. package/dist/templates/scaffold/structureGenerator.js +193 -0
  172. package/dist/types/GCConfig.d.ts +7 -0
  173. package/dist/types/GCConfig.d.ts.map +1 -0
  174. package/dist/types/GCConfig.js +2 -0
  175. package/dist/types/ambiten-runtime-type.d.ts +24 -0
  176. package/dist/types/ambiten-runtime-type.d.ts.map +1 -0
  177. package/dist/types/ambiten-runtime-type.js +2 -0
  178. package/dist/types/ambiten.client.type.d.ts +136 -0
  179. package/dist/types/ambiten.client.type.d.ts.map +1 -0
  180. package/dist/types/ambiten.client.type.js +3 -0
  181. package/dist/types/ambiten.model.type.d.ts +135 -0
  182. package/dist/types/ambiten.model.type.d.ts.map +1 -0
  183. package/dist/types/ambiten.model.type.js +4 -0
  184. package/dist/types/ambitenConfig.d.ts +103 -0
  185. package/dist/types/ambitenConfig.d.ts.map +1 -0
  186. package/dist/types/ambitenConfig.js +3 -0
  187. package/dist/types/bootstrapClient.type.d.ts +11 -0
  188. package/dist/types/bootstrapClient.type.d.ts.map +1 -0
  189. package/dist/types/bootstrapClient.type.js +2 -0
  190. package/dist/types/db.provider.d.ts +66 -0
  191. package/dist/types/db.provider.d.ts.map +1 -0
  192. package/dist/types/db.provider.js +2 -0
  193. package/dist/types/document.d.ts +7 -0
  194. package/dist/types/document.d.ts.map +1 -0
  195. package/dist/types/document.js +2 -0
  196. package/dist/types/event.type.d.ts +6 -0
  197. package/dist/types/event.type.d.ts.map +1 -0
  198. package/dist/types/event.type.js +27 -0
  199. package/dist/types/graphql.type.d.ts +22 -0
  200. package/dist/types/graphql.type.d.ts.map +1 -0
  201. package/dist/types/graphql.type.js +2 -0
  202. package/dist/types/index.d.ts +15 -0
  203. package/dist/types/index.d.ts.map +1 -0
  204. package/dist/types/index.js +17 -0
  205. package/dist/types/logger.types.d.ts +15 -0
  206. package/dist/types/logger.types.d.ts.map +1 -0
  207. package/dist/types/logger.types.js +3 -0
  208. package/dist/types/middleware/types.d.ts +28 -0
  209. package/dist/types/middleware/types.d.ts.map +1 -0
  210. package/dist/types/middleware/types.js +2 -0
  211. package/dist/types/result.utils.types.d.ts +7 -0
  212. package/dist/types/result.utils.types.d.ts.map +1 -0
  213. package/dist/types/result.utils.types.js +2 -0
  214. package/dist/types/schema.type.d.ts +23 -0
  215. package/dist/types/schema.type.d.ts.map +1 -0
  216. package/dist/types/schema.type.js +10 -0
  217. package/dist/types/user.type.d.ts +11 -0
  218. package/dist/types/user.type.d.ts.map +1 -0
  219. package/dist/types/user.type.js +2 -0
  220. package/dist/utils/AuthUtils.d.ts +15 -0
  221. package/dist/utils/AuthUtils.d.ts.map +1 -0
  222. package/dist/utils/AuthUtils.js +26 -0
  223. package/dist/utils/ModelRegistry.d.ts +15 -0
  224. package/dist/utils/ModelRegistry.d.ts.map +1 -0
  225. package/dist/utils/ModelRegistry.js +35 -0
  226. package/dist/utils/banner.d.ts +2 -0
  227. package/dist/utils/banner.d.ts.map +1 -0
  228. package/dist/utils/banner.js +20 -0
  229. package/dist/utils/builders/createModel.d.ts +37 -0
  230. package/dist/utils/builders/createModel.d.ts.map +1 -0
  231. package/dist/utils/builders/createModel.js +38 -0
  232. package/dist/utils/builders/getTenantDb.d.ts +12 -0
  233. package/dist/utils/builders/getTenantDb.d.ts.map +1 -0
  234. package/dist/utils/builders/getTenantDb.js +25 -0
  235. package/dist/utils/builders/index.d.ts +4 -0
  236. package/dist/utils/builders/index.d.ts.map +1 -0
  237. package/dist/utils/builders/index.js +6 -0
  238. package/dist/utils/builders/schema.d.ts +22 -0
  239. package/dist/utils/builders/schema.d.ts.map +1 -0
  240. package/dist/utils/builders/schema.js +26 -0
  241. package/dist/utils/cacheWithRedis.d.ts +27 -0
  242. package/dist/utils/cacheWithRedis.d.ts.map +1 -0
  243. package/dist/utils/cacheWithRedis.js +22 -0
  244. package/dist/utils/castId.d.ts +5 -0
  245. package/dist/utils/castId.d.ts.map +1 -0
  246. package/dist/utils/castId.js +52 -0
  247. package/dist/utils/color-palatte.d.ts +4 -0
  248. package/dist/utils/color-palatte.d.ts.map +1 -0
  249. package/dist/utils/color-palatte.js +24 -0
  250. package/dist/utils/configureAmbitenContext.d.ts +13 -0
  251. package/dist/utils/configureAmbitenContext.d.ts.map +1 -0
  252. package/dist/utils/configureAmbitenContext.js +35 -0
  253. package/dist/utils/detect-package-manager.d.ts +5 -0
  254. package/dist/utils/detect-package-manager.d.ts.map +1 -0
  255. package/dist/utils/detect-package-manager.js +59 -0
  256. package/dist/utils/ensureModelNameSafe.d.ts +12 -0
  257. package/dist/utils/ensureModelNameSafe.d.ts.map +1 -0
  258. package/dist/utils/ensureModelNameSafe.js +28 -0
  259. package/dist/utils/ensureRedis.d.ts +7 -0
  260. package/dist/utils/ensureRedis.d.ts.map +1 -0
  261. package/dist/utils/ensureRedis.js +40 -0
  262. package/dist/utils/error/ambitenError-handler.d.ts +24 -0
  263. package/dist/utils/error/ambitenError-handler.d.ts.map +1 -0
  264. package/dist/utils/error/ambitenError-handler.js +39 -0
  265. package/dist/utils/error/errorTypes.d.ts +27 -0
  266. package/dist/utils/error/errorTypes.d.ts.map +1 -0
  267. package/dist/utils/error/errorTypes.js +30 -0
  268. package/dist/utils/error/index.d.ts +3 -0
  269. package/dist/utils/error/index.d.ts.map +1 -0
  270. package/dist/utils/error/index.js +5 -0
  271. package/dist/utils/eventOptions.d.ts +38 -0
  272. package/dist/utils/eventOptions.d.ts.map +1 -0
  273. package/dist/utils/eventOptions.js +130 -0
  274. package/dist/utils/events.d.ts +5 -0
  275. package/dist/utils/events.d.ts.map +1 -0
  276. package/dist/utils/events.js +7 -0
  277. package/dist/utils/index.d.ts +23 -0
  278. package/dist/utils/index.d.ts.map +1 -0
  279. package/dist/utils/index.js +25 -0
  280. package/dist/utils/invalidateTenantCache.d.ts +18 -0
  281. package/dist/utils/invalidateTenantCache.d.ts.map +1 -0
  282. package/dist/utils/invalidateTenantCache.js +27 -0
  283. package/dist/utils/logger.d.ts +3 -0
  284. package/dist/utils/logger.d.ts.map +1 -0
  285. package/dist/utils/logger.js +27 -0
  286. package/dist/utils/modelLoader.d.ts +3 -0
  287. package/dist/utils/modelLoader.d.ts.map +1 -0
  288. package/dist/utils/modelLoader.js +41 -0
  289. package/dist/utils/resolveAmbitenOption.d.ts +2 -0
  290. package/dist/utils/resolveAmbitenOption.d.ts.map +1 -0
  291. package/dist/utils/resolveAmbitenOption.js +10 -0
  292. package/dist/utils/resolveRuntimeConfig.d.ts +22 -0
  293. package/dist/utils/resolveRuntimeConfig.d.ts.map +1 -0
  294. package/dist/utils/resolveRuntimeConfig.js +33 -0
  295. package/dist/utils/scaffoldLoger.d.ts +11 -0
  296. package/dist/utils/scaffoldLoger.d.ts.map +1 -0
  297. package/dist/utils/scaffoldLoger.js +68 -0
  298. package/dist/utils/symbols.d.ts +4 -0
  299. package/dist/utils/symbols.d.ts.map +1 -0
  300. package/dist/utils/symbols.js +6 -0
  301. package/dist/utils/time.d.ts +5 -0
  302. package/dist/utils/time.d.ts.map +1 -0
  303. package/dist/utils/time.js +39 -0
  304. package/package.json +180 -0
@@ -0,0 +1,135 @@
1
+ import { AnyBulkWriteOperation, ClientSession, Collection, Filter, UpdateFilter } from "mongodb";
2
+ import { AmbitenClient, AmbitenSchema } from "../lib-core";
3
+ import { Document } from "./document";
4
+ import { DbProvider, ModelContext } from "./db.provider";
5
+ import { AmbitenMiddlewareOperation } from "./middleware/types";
6
+ /**
7
+ * Options for configuring an Ambiten model.
8
+ * @template T - The type of the document in the model.
9
+ */
10
+ export interface AmbitenModelOptions<T extends Document = any> {
11
+ collectionName: string;
12
+ schema?: AmbitenSchema<T>;
13
+ Ambiten?: AmbitenClient;
14
+ provider?: DbProvider;
15
+ ctx?: ModelContext;
16
+ collection?: Collection<T>;
17
+ gcConfig?: {
18
+ ttl: number;
19
+ indexName?: string;
20
+ createdAtField?: string;
21
+ updatedAtField?: string;
22
+ enableGC?: boolean;
23
+ field?: string;
24
+ };
25
+ }
26
+ /**
27
+ * Represents a relationship between collections in MongoDB.
28
+ * @template T - The type of the document in the collection.
29
+ */
30
+ export interface Relationship<T = any> {
31
+ /**
32
+ * The name of the referenced collection.
33
+ */
34
+ ref: string;
35
+ /**
36
+ * The field in the current document that holds the reference.
37
+ */
38
+ localField: keyof T;
39
+ }
40
+ export interface QueryCacheOptions {
41
+ enabled?: boolean;
42
+ ttl?: number;
43
+ tenantId: string;
44
+ tags?: string[];
45
+ namespace?: string;
46
+ }
47
+ export interface QueryOptions {
48
+ cache?: boolean | QueryCacheOptions;
49
+ session?: ClientSession;
50
+ projection?: Record<string, 0 | 1>;
51
+ sort?: Record<string, 1 | -1>;
52
+ limit?: number;
53
+ skip?: number;
54
+ }
55
+ export interface AmbitenHookPayload<T extends Document = Document> {
56
+ operation: AmbitenMiddlewareOperation;
57
+ collectionName: string;
58
+ tenantId?: string;
59
+ dbName?: string;
60
+ session?: ClientSession;
61
+ filter?: Filter<T>;
62
+ update?: UpdateFilter<T>;
63
+ doc?: Partial<T>;
64
+ docs?: Partial<T>[];
65
+ pipeline?: object[];
66
+ bulkUpdates?: {
67
+ filter: Partial<T>;
68
+ update: UpdateFilter<T>;
69
+ }[];
70
+ bulkOperations?: AnyBulkWriteOperation<T>[];
71
+ result?: unknown;
72
+ meta?: AmbitenOperationMeta;
73
+ }
74
+ export interface AmbitenOperationMeta {
75
+ /**
76
+ * Indicates the operation is executing inside a transaction boundary.
77
+ */
78
+ transactional?: boolean;
79
+ /**
80
+ * Indicates the operation is security-sensitive or explicitly access-controlled.
81
+ */
82
+ secure?: boolean;
83
+ /**
84
+ * Indicates the operation is part of a restore flow.
85
+ */
86
+ restore?: boolean;
87
+ /**
88
+ * Indicates the operation is performing a soft delete rather than a hard delete.
89
+ */
90
+ softDelete?: boolean;
91
+ /**
92
+ * Indicates the operation is part of garbage collection.
93
+ */
94
+ gc?: boolean;
95
+ /**
96
+ * Indicates the operation is a bulk write or bulk-style mutation.
97
+ */
98
+ bulkWrite?: boolean;
99
+ /**
100
+ * Indicates the operation is creating or handling a stream.
101
+ */
102
+ streaming?: boolean;
103
+ /**
104
+ * Indicates the operation result came from cache.
105
+ */
106
+ cacheHit?: boolean;
107
+ /**
108
+ * User identifier associated with the operation, when available.
109
+ */
110
+ userId?: string;
111
+ /**
112
+ * User role associated with the operation, when available.
113
+ */
114
+ userRole?: string;
115
+ /**
116
+ * Optional tenant policy or compliance classification.
117
+ * Reserved for future Sovereign Shield integration.
118
+ */
119
+ policy?: string;
120
+ /**
121
+ * Optional region or sovereignty zone identifier.
122
+ * Reserved for future geofencing and data-governance features.
123
+ */
124
+ region?: string;
125
+ /**
126
+ * Optional evidence or trace classification tag.
127
+ * Reserved for future evidence collection and audit systems.
128
+ */
129
+ trace?: string;
130
+ /**
131
+ * Free-form extension point for future enterprise features.
132
+ */
133
+ extra?: Record<string, unknown>;
134
+ }
135
+ //# sourceMappingURL=ambiten.model.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambiten.model.type.d.ts","sourceRoot":"","sources":["../../src/types/ambiten.model.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
4
+ ;
@@ -0,0 +1,103 @@
1
+ import { LoggerConfig } from '@ambiten/logger';
2
+ import { InitMultiTenancyOptions } from '../tanancy';
3
+ import { AmbitenModelOptions } from './ambiten.model.type';
4
+ import { SchemaDefinition } from './schema.type';
5
+ import { Document } from './document';
6
+ import { BootstrapClient } from './bootstrapClient.type';
7
+ export interface AmbitenLoggerSettings extends LoggerConfig {
8
+ enabled?: boolean;
9
+ logger?: LoggerConfig['logger'];
10
+ logLevel?: LoggerConfig['level'];
11
+ useColor?: boolean;
12
+ colorize?: LoggerConfig['colorize'];
13
+ transportConfigs: LoggerConfig['transportConfigs'];
14
+ transports?: LoggerConfig['transports'];
15
+ json?: boolean;
16
+ formatOptions?: LoggerConfig['formatOptions'];
17
+ excludedSources?: LoggerConfig['excludedSources'];
18
+ hooks?: LoggerConfig['hooks'];
19
+ enrichMetadata?: LoggerConfig['enrichMetadata'];
20
+ enableMetrics?: LoggerConfig['enableMetrics'];
21
+ shouldLog?: LoggerConfig['shouldLog'];
22
+ circuitBreaker?: LoggerConfig['circuitBreaker'];
23
+ compress?: LoggerConfig['compress'];
24
+ }
25
+ export interface AmbitenConfig {
26
+ projectName?: string;
27
+ /**
28
+ * Optional externally provided bootstrap client/provider.
29
+ * If provided, bootstrap uses this instead of creating one from connection config.
30
+ */
31
+ provider?: BootstrapClient;
32
+ mongoClient?: BootstrapClient;
33
+ /**
34
+ * Connection settings used when no provider/mongoClient is supplied.
35
+ */
36
+ connection?: {
37
+ uri: string;
38
+ options?: Record<string, any>;
39
+ };
40
+ /**
41
+ * Optional default model/schema bootstrap config.
42
+ * These are runtime-facing defaults, not request resolver functions.
43
+ */
44
+ model?: AmbitenModelOptions;
45
+ schema?: SchemaDefinition<Document>;
46
+ /**
47
+ * Multi-tenant runtime configuration.
48
+ */
49
+ multiTenant?: {
50
+ enabled?: boolean;
51
+ headerKey?: string;
52
+ tenants?: Record<string, string>;
53
+ initOptions?: InitMultiTenancyOptions;
54
+ };
55
+ /**
56
+ * Logger configuration.
57
+ */
58
+ logger?: AmbitenLoggerSettings;
59
+ /**
60
+ * Optional GraphQL auto-generation/bootstrap feature.
61
+ * Primarily useful for playgrounds, prototyping, and generated GraphQL flows.
62
+ */
63
+ graphql?: {
64
+ enabled?: boolean;
65
+ subscriptions?: boolean;
66
+ playground?: boolean;
67
+ schemaOutputPath?: string;
68
+ };
69
+ /**
70
+ * Optional feature paths and integrations.
71
+ * These are especially useful for generated project structures and bootstrap discovery.
72
+ */
73
+ features?: {
74
+ models?: string;
75
+ schemas?: string;
76
+ typeDefs?: string;
77
+ resolvers?: Record<string, any> | Record<string, any>[];
78
+ useRedisCache?: boolean;
79
+ redisUri?: string;
80
+ };
81
+ /**
82
+ * Advanced runtime configuration.
83
+ */
84
+ advanced?: {
85
+ autoInstall?: boolean;
86
+ circuitBreaker?: {
87
+ enabled?: boolean;
88
+ retryAttempts?: number;
89
+ };
90
+ garbageCollector?: {
91
+ enabled?: boolean;
92
+ retentionPeriod?: number | string;
93
+ logResults?: boolean;
94
+ };
95
+ gcCron?: string;
96
+ };
97
+ /**
98
+ * Optional config metadata/versioning.
99
+ * Useful for generated config files and forward compatibility.
100
+ */
101
+ configVersion?: string;
102
+ }
103
+ //# sourceMappingURL=ambitenConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambitenConfig.d.ts","sourceRoot":"","sources":["../../src/types/ambitenConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
@@ -0,0 +1,11 @@
1
+ import type { Collection, MongoClient, ClientSession } from 'mongodb';
2
+ import { Document } from './document';
3
+ import { DbProvider, ModelContext } from './db.provider';
4
+ export interface BootstrapClient extends DbProvider {
5
+ connect(): Promise<this>;
6
+ close(): Promise<void>;
7
+ client(ctx?: ModelContext): Promise<MongoClient>;
8
+ startSession(ctx?: ModelContext): Promise<ClientSession>;
9
+ collection<T extends Document = Document>(collectionName: string, ctx?: ModelContext): Promise<Collection<T>>;
10
+ }
11
+ //# sourceMappingURL=bootstrapClient.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapClient.type.d.ts","sourceRoot":"","sources":["../../src/types/bootstrapClient.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzD,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,YAAY,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACzD,UAAU,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EACtC,cAAc,EAAE,MAAM,EACtB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,66 @@
1
+ import { ClientSession, Db, MongoClient } from "mongodb";
2
+ import { AmbitenConfig } from "./ambitenConfig";
3
+ import { AmbitenOperationMeta } from "./ambiten.model.type";
4
+ export type ModelContext = {
5
+ tenantId?: string;
6
+ dbName?: string;
7
+ db?: Db;
8
+ collectionName?: string;
9
+ config?: AmbitenConfig;
10
+ session?: ClientSession;
11
+ withDeleted?: boolean;
12
+ onlyDeleted?: boolean;
13
+ hardDelete?: boolean;
14
+ };
15
+ export interface DbProvider {
16
+ db(ctx?: ModelContext): Promise<Db>;
17
+ client?(ctx?: ModelContext): Promise<MongoClient>;
18
+ startSession?(ctx?: ModelContext): Promise<ClientSession>;
19
+ }
20
+ export interface AmbitenLoggerLike {
21
+ info?: (message: string, meta?: Record<string, any>) => void;
22
+ warn?: (message: string, meta?: Record<string, any>) => void;
23
+ error?: (message: string, meta?: Record<string, any>) => void;
24
+ debug?: (message: string, meta?: Record<string, any>) => void;
25
+ }
26
+ export interface AmbitenContextState {
27
+ tenantId?: string;
28
+ requestId?: string;
29
+ dbName?: string;
30
+ collectionName?: string;
31
+ session?: ClientSession;
32
+ loggerMeta?: Record<string, any>;
33
+ logger?: AmbitenLoggerLike;
34
+ debug?: boolean;
35
+ meta?: AmbitenOperationMeta;
36
+ observer?: AmbitenQueryObserver;
37
+ budget?: AmbitenQuotaBudgetInput;
38
+ }
39
+ export interface AmbitenQueryObserver {
40
+ onQuery?: (payload: Record<string, any>) => void | Promise<void>;
41
+ onQueryError?: (payload: Record<string, any>) => void | Promise<void>;
42
+ }
43
+ export interface AmbitenQuotaBudgetInput {
44
+ maxQueries?: number;
45
+ queriesExecuted?: number;
46
+ totalTimeMs?: number;
47
+ }
48
+ export interface AmbitenQuotaBudget {
49
+ maxQueries: number;
50
+ queriesExecuted: number;
51
+ totalTimeMs: number;
52
+ }
53
+ export interface AmbitenCacheStats {
54
+ totalKeys: number;
55
+ tenantKeys?: number;
56
+ memoryUsageMb: number;
57
+ memoryUsageBytes: number;
58
+ hitRate: number;
59
+ missRate: number;
60
+ totalHits: number;
61
+ totalMisses: number;
62
+ totalRequests: number;
63
+ tenantId: string | null;
64
+ timestamp: string;
65
+ }
66
+ //# sourceMappingURL=db.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.provider.d.ts","sourceRoot":"","sources":["../../src/types/db.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Represents a generic document in MongoDB.
3
+ */
4
+ export type Document = {
5
+ [key: string]: any;
6
+ };
7
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/types/document.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Represents the types of events supported by Ambiten.
3
+ */
4
+ export type EventType = 'pre-save' | 'post-save' | 'pre-update' | 'post-update' | 'pre-delete' | 'post-delete' | 'aggregate' | 'disconnect' | 'connect' | 'dropDatabase' | 'createIndex' | 'dropIndex' | 'create' | 'find' | 'findOne' | 'insertOne' | 'insertMany' | 'updateOne' | 'updateMany' | 'deleteOne' | 'deleteMany' | 'pre-bulkWrite' | 'post-bulkWrite' | 'pre-insertMany' | 'post-insertMany' | 'pre-updateMany' | 'post-updateMany' | 'pre-deleteMany' | 'post-deleteMany' | 'transaction';
5
+ export declare const eventTypes: EventType[];
6
+ //# sourceMappingURL=event.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.type.d.ts","sourceRoot":"","sources":["../../src/types/event.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAClB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,aAAa,GACb,WAAW,GACX,YAAY,GACZ,SAAS,GACT,cAAc,GACd,aAAa,GACb,WAAW,GACX,QAAQ,GACR,MAAM,GACN,SAAS,GACT,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,CAAA;AAEhB,eAAO,MAAM,UAAU,EAAE,SAAS,EAuBjC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventTypes = void 0;
4
+ exports.eventTypes = [
5
+ 'pre-save',
6
+ 'post-save',
7
+ 'pre-update',
8
+ 'post-update',
9
+ 'pre-delete',
10
+ 'post-delete',
11
+ 'aggregate',
12
+ 'disconnect',
13
+ 'connect',
14
+ 'dropDatabase',
15
+ 'createIndex',
16
+ 'dropIndex',
17
+ 'create',
18
+ 'find',
19
+ 'findOne',
20
+ 'insertOne',
21
+ 'insertMany',
22
+ 'updateOne',
23
+ 'updateMany',
24
+ 'deleteOne',
25
+ 'deleteMany',
26
+ 'transaction'
27
+ ];
@@ -0,0 +1,22 @@
1
+ import { BootstrapClient } from './bootstrapClient.type';
2
+ export type ResolverObject = Record<string, any>;
3
+ export interface AmbitenGraphQLOptions {
4
+ useRedis?: boolean;
5
+ customTypeDefs?: string[];
6
+ customResolvers?: ResolverObject[];
7
+ provider: BootstrapClient;
8
+ }
9
+ export interface AmbitenGraphQLUser {
10
+ id?: string;
11
+ role?: string;
12
+ }
13
+ export interface AmbitenGraphQLContext {
14
+ tenantId?: string;
15
+ requestId?: string;
16
+ dbName?: string;
17
+ collectionName?: string;
18
+ session?: import('mongodb').ClientSession;
19
+ user?: AmbitenGraphQLUser;
20
+ provider: BootstrapClient;
21
+ }
22
+ //# sourceMappingURL=graphql.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.type.d.ts","sourceRoot":"","sources":["../../src/types/graphql.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,SAAS,EAAE,aAAa,CAAC;IAC1C,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ export * from './ambitenConfig';
2
+ export * from './schema.type';
3
+ export * from './ambiten.model.type';
4
+ export * from './user.type';
5
+ export * from './ambiten.client.type';
6
+ export * from './document';
7
+ export * from './event.type';
8
+ export * from './graphql.type';
9
+ export * from './GCConfig';
10
+ export * from './logger.types';
11
+ export * from './db.provider';
12
+ export * from './result.utils.types';
13
+ export * from './bootstrapClient.type';
14
+ export * from './middleware/types';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./ambitenConfig"), exports);
5
+ tslib_1.__exportStar(require("./schema.type"), exports);
6
+ tslib_1.__exportStar(require("./ambiten.model.type"), exports);
7
+ tslib_1.__exportStar(require("./user.type"), exports);
8
+ tslib_1.__exportStar(require("./ambiten.client.type"), exports);
9
+ tslib_1.__exportStar(require("./document"), exports);
10
+ tslib_1.__exportStar(require("./event.type"), exports);
11
+ tslib_1.__exportStar(require("./graphql.type"), exports);
12
+ tslib_1.__exportStar(require("./GCConfig"), exports);
13
+ tslib_1.__exportStar(require("./logger.types"), exports);
14
+ tslib_1.__exportStar(require("./db.provider"), exports);
15
+ tslib_1.__exportStar(require("./result.utils.types"), exports);
16
+ tslib_1.__exportStar(require("./bootstrapClient.type"), exports);
17
+ tslib_1.__exportStar(require("./middleware/types"), exports);
@@ -0,0 +1,15 @@
1
+ export interface NoOpLogger {
2
+ info: (message: string) => void;
3
+ warn: (message: string) => void;
4
+ error: (message: string) => void;
5
+ fatal: (message: string) => void;
6
+ debug: (message: string) => void;
7
+ }
8
+ export interface ILogger {
9
+ info(message: string): void;
10
+ warn(message: string): void;
11
+ error(message: string): void;
12
+ fatal(message: string): void;
13
+ debug(message: string): void;
14
+ }
15
+ //# sourceMappingURL=logger.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.types.d.ts","sourceRoot":"","sources":["../../src/types/logger.types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;
@@ -0,0 +1,28 @@
1
+ import type { ClientSession, Filter, UpdateFilter, Document, AnyBulkWriteOperation } from 'mongodb';
2
+ import { AmbitenOperationMeta } from '../ambiten.model.type';
3
+ export type AmbitenMiddlewareOperation = 'find' | 'findOne' | 'create' | 'updateOne' | 'updateMany' | 'deleteOne' | 'deleteMany' | 'bulkInsert' | 'bulkWrite' | 'bulkUpdate' | 'aggregate' | 'findOneAndUpdate' | 'findOneAndDelete' | 'findOneAndReplace' | 'findOneAndUpsert' | 'restoreOne' | 'restoreMany' | 'runGC';
4
+ export interface AmbitenMiddlewareContext<T extends Document = Document> {
5
+ operation: AmbitenMiddlewareOperation;
6
+ modelName?: string;
7
+ collectionName: string;
8
+ tenantId?: string;
9
+ dbName?: string;
10
+ session?: ClientSession;
11
+ filter?: Filter<T>;
12
+ update?: UpdateFilter<T>;
13
+ doc?: Partial<T>;
14
+ docs?: Partial<T>[];
15
+ pipeline?: object[];
16
+ bulkUpdates?: {
17
+ filter: Partial<T>;
18
+ update: UpdateFilter<T>;
19
+ }[];
20
+ bulkOperations?: AnyBulkWriteOperation<T>[];
21
+ withDeleted?: boolean;
22
+ onlyDeleted?: boolean;
23
+ hardDelete?: boolean;
24
+ result?: unknown;
25
+ meta?: AmbitenOperationMeta;
26
+ }
27
+ export type AmbitenMiddlewareHandler<T extends Document = Document> = (ctx: AmbitenMiddlewareContext<T>) => Promise<void> | void;
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/middleware/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,0BAA0B,GAClC,MAAM,GACN,SAAS,GACT,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,YAAY,GACZ,aAAa,GACb,OAAO,CAAC;AAEZ,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACrE,SAAS,EAAE,0BAA0B,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;KAAE,EAAE,CAAC;IAChE,cAAc,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAChE,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import type { Document, EnhancedOmit, WithId } from "mongodb";
2
+ export type MongoDoc<T extends Document> = WithId<T>;
3
+ export type ModelResult<T extends Document> = EnhancedOmit<WithId<T>, "_id"> & {
4
+ _id: string;
5
+ };
6
+ export type ModelResultArray<T extends Document> = ModelResult<T>[];
7
+ //# sourceMappingURL=result.utils.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.utils.types.d.ts","sourceRoot":"","sources":["../../src/types/result.utils.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAY,MAAM,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAErD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,QAAQ,IACxC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ import { ObjectId } from "mongodb";
2
+ /**
3
+ * Represents the schema definition for a document.
4
+ * @template T - The type of the document.
5
+ */
6
+ export type SchemaDefinition<T> = {
7
+ [key: string]: Record<keyof T, any>;
8
+ };
9
+ /**
10
+ * MongoDB schema types.
11
+ */
12
+ export declare const SchemaType: {
13
+ readonly Types: {
14
+ readonly ObjectId: typeof ObjectId;
15
+ };
16
+ };
17
+ /**
18
+ * Represents a hook function for middleware.
19
+ * @param {any} data - The data passed to the hook.
20
+ * @returns {Promise<void>} A promise that resolves when the hook is executed.
21
+ */
22
+ export type HookFunction = (data: any) => Promise<void>;
23
+ //# sourceMappingURL=schema.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.type.d.ts","sourceRoot":"","sources":["../../src/types/schema.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;CACpC,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;CAEb,CAAC;AAKX;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaType = void 0;
4
+ const mongodb_1 = require("mongodb");
5
+ /**
6
+ * MongoDB schema types.
7
+ */
8
+ exports.SchemaType = {
9
+ Types: { ObjectId: mongodb_1.ObjectId },
10
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Represents a user with a specific role.
3
+ */
4
+ export type User = {
5
+ /**
6
+ * The role of the user.
7
+ */
8
+ id: string;
9
+ role: 'admin' | 'user';
10
+ };
11
+ //# sourceMappingURL=user.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.type.d.ts","sourceRoot":"","sources":["../../src/types/user.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG;IAClB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });