@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,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONFIG_CONTENT = DEFAULT_CONFIG_CONTENT;
4
+ function DEFAULT_CONFIG_CONTENT(options) {
5
+ const config = {
6
+ configVersion: '1.0.0',
7
+ projectName: options.projectName ?? 'my-ambiten-app',
8
+ connection: {
9
+ uri: options.connection?.uri ?? 'mongodb://localhost:27017/my-ambiten-app',
10
+ options: {
11
+ dbName: options.connection?.options?.dbName ??
12
+ options.projectName ??
13
+ 'my-ambiten-app',
14
+ },
15
+ },
16
+ ...(options.multiTenant?.enabled
17
+ ? {
18
+ multiTenant: {
19
+ enabled: true,
20
+ headerKey: options.multiTenant.headerKey ?? 'x-tenant-id',
21
+ tenants: options.multiTenant.tenants ?? {},
22
+ initOptions: {
23
+ lazy: options.multiTenant.initOptions?.lazy ?? false,
24
+ retryAttempts: options.multiTenant.initOptions?.retryAttempts ?? 3,
25
+ },
26
+ },
27
+ }
28
+ : {}),
29
+ ...(options.logger?.enabled
30
+ ? {
31
+ logger: {
32
+ enabled: true,
33
+ level: options.logger.level ?? 'info',
34
+ colorize: options.logger.colorize ?? true,
35
+ json: options.logger.json ?? false,
36
+ transportConfigs: [
37
+ {
38
+ "type": "console",
39
+ "options": {}
40
+ },
41
+ {
42
+ "type": "rotating-file",
43
+ "options": {
44
+ "filename": "./logs/ambiten.log",
45
+ "frequency": "hourly",
46
+ "maxSize": 200,
47
+ "compress": false,
48
+ "flushInterval": 1000
49
+ }
50
+ }
51
+ ],
52
+ enableMetrics: typeof options.logger.enableMetrics === 'boolean'
53
+ ? {
54
+ enabled: options.logger.enableMetrics,
55
+ logInterval: 60000,
56
+ }
57
+ : options.logger.enableMetrics ?? {
58
+ enabled: false,
59
+ logInterval: 60000,
60
+ },
61
+ compress: typeof options.logger.compress === 'boolean'
62
+ ? {
63
+ enabled: options.logger.compress,
64
+ }
65
+ : options.logger.compress ?? {
66
+ enabled: false,
67
+ },
68
+ }
69
+ }
70
+ : {}),
71
+ ...(options.graphql?.enabled
72
+ ? {
73
+ graphql: {
74
+ enabled: true,
75
+ subscriptions: options.graphql.subscriptions ?? false,
76
+ playground: options.graphql.playground ?? true,
77
+ schemaOutputPath: options.graphql.schemaOutputPath ?? './src/graphql/schema.gql',
78
+ },
79
+ }
80
+ : {}),
81
+ features: {
82
+ models: options.features?.models ?? './src/models',
83
+ schemas: options.features?.schemas ?? './src/schemas',
84
+ ...(options.graphql?.enabled
85
+ ? {
86
+ typeDefs: options.features?.typeDefs ?? './src/graphql/typeDefs',
87
+ resolvers: options.features?.resolvers ?? './src/graphql/resolvers',
88
+ }
89
+ : {}),
90
+ useRedisCache: options.features?.useRedisCache ?? false,
91
+ redisUri: options.features?.redisUri ?? '',
92
+ },
93
+ advanced: {
94
+ autoInstall: options.advanced?.autoInstall ?? false,
95
+ circuitBreaker: {
96
+ enabled: options.advanced?.circuitBreaker?.enabled ?? true,
97
+ retryAttempts: options.advanced?.circuitBreaker?.retryAttempts ?? 5,
98
+ },
99
+ garbageCollector: {
100
+ enabled: options.advanced?.garbageCollector?.enabled ?? false,
101
+ retentionPeriod: options.advanced?.garbageCollector?.retentionPeriod ?? 30,
102
+ logResults: options.advanced?.garbageCollector?.logResults ?? true,
103
+ },
104
+ gcCron: options.advanced?.gcCron ?? '* * * * *',
105
+ },
106
+ };
107
+ return JSON.stringify(config, null, 2);
108
+ }
@@ -0,0 +1,2 @@
1
+ export declare function generateGCManager(): string;
2
+ //# sourceMappingURL=generateGCManagerFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateGCManagerFile.d.ts","sourceRoot":"","sources":["../../src/templates/generateGCManagerFile.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,IAAI,MAAM,CAmC1C"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateGCManager = generateGCManager;
4
+ function generateGCManager() {
5
+ return `import { AmbitenModel } from '@ambiten/core';
6
+ import { ObjectId } from 'mongodb';
7
+
8
+ export interface GarbageCollectorOptions {
9
+ /**
10
+ * Retention period in days.
11
+ */
12
+ retentionPeriod?: number;
13
+ dateField?: string;
14
+ }
15
+
16
+ export async function runGarbageCollector(
17
+ model: AmbitenModel<any>,
18
+ options: GarbageCollectorOptions = {}
19
+ ): Promise<void> {
20
+ const retentionPeriod = options.retentionPeriod ?? 7;
21
+ const dateField = options.dateField ?? 'deletedAt';
22
+
23
+ const cutoff = new Date(
24
+ Date.now() - retentionPeriod * 24 * 60 * 60 * 1000
25
+ );
26
+
27
+ const expiredDocs = await model.find({
28
+ [dateField]: { $lt: cutoff }
29
+ });
30
+
31
+ for (const doc of expiredDocs) {
32
+ await model.deleteOne({ _id: new ObjectId(doc._id) });
33
+ console.log(\`🗑️ Deleted expired document: \${doc._id}\`);
34
+ }
35
+
36
+ console.log('✅ Garbage collection completed.');
37
+ }
38
+ `;
39
+ }
@@ -0,0 +1,2 @@
1
+ export declare function generateGCRunner(): string;
2
+ //# sourceMappingURL=generateGCRunnerFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateGCRunnerFile.d.ts","sourceRoot":"","sources":["../../src/templates/generateGCRunnerFile.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,IAAI,MAAM,CAqBzC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateGCRunner = generateGCRunner;
4
+ function generateGCRunner() {
5
+ return `/**
6
+ * Garbage collector runner
7
+ *
8
+ * Replace the imports below with your actual bootstrap/model entry points.
9
+ */
10
+
11
+ import { runGarbageCollector } from './gcManager';
12
+ // import { UserModel } from '../models/UserModel';
13
+
14
+ async function main() {
15
+ // Example:
16
+ // await runGarbageCollector(UserModel, { retentionPeriod: 7 });
17
+ console.log('⚠️ Update gcRunner.ts with your model imports before using it.');
18
+ }
19
+
20
+ main().catch((error) => {
21
+ console.error('❌ Garbage collector failed:', error);
22
+ process.exit(1);
23
+ });
24
+ `;
25
+ }
@@ -0,0 +1,3 @@
1
+ import type { AmbitenConfig } from '../types';
2
+ export declare function generateMainTS(options: AmbitenConfig): string;
3
+ //# sourceMappingURL=generateMainEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateMainEntry.d.ts","sourceRoot":"","sources":["../../src/templates/generateMainEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAoB7D"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateMainTS = generateMainTS;
4
+ function generateMainTS(options) {
5
+ return `import { run } from './core/initAmbiten';
6
+
7
+ async function main() {
8
+ const app = await run();
9
+
10
+ if (typeof app?.onConnect === 'function') {
11
+ app.onConnect(() => {
12
+ console.log('✅ Ambiten application initialized successfully.');
13
+ });
14
+ }
15
+
16
+ return app;
17
+ }
18
+
19
+ main().catch((error) => {
20
+ console.error('❌ Failed to start application:', error);
21
+ process.exit(1);
22
+ });
23
+ `;
24
+ }
@@ -0,0 +1,6 @@
1
+ export * from './generateDefaultConfigContent';
2
+ export * from './generateMainEntry';
3
+ export * from './scaffold/structureGenerator';
4
+ export * from './generateGCManagerFile';
5
+ export * from './generateGCRunnerFile';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./generateDefaultConfigContent"), exports);
5
+ tslib_1.__exportStar(require("./generateMainEntry"), exports);
6
+ tslib_1.__exportStar(require("./scaffold/structureGenerator"), exports);
7
+ tslib_1.__exportStar(require("./generateGCManagerFile"), exports);
8
+ tslib_1.__exportStar(require("./generateGCRunnerFile"), exports);
@@ -0,0 +1,4 @@
1
+ import type { AmbitenConfig } from '../../types';
2
+ import { createScaffoldLogger } from '../../utils';
3
+ export declare function generateAppStructure(projectRoot: string, options: AmbitenConfig, logger?: ReturnType<typeof createScaffoldLogger>): Promise<void>;
4
+ //# sourceMappingURL=structureGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structureGenerator.d.ts","sourceRoot":"","sources":["../../../src/templates/scaffold/structureGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAEL,oBAAoB,EAGrB,MAAM,aAAa,CAAC;AAkGrB,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,CAsJf"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateAppStructure = generateAppStructure;
4
+ const tslib_1 = require("tslib");
5
+ const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
6
+ const path_1 = tslib_1.__importDefault(require("path"));
7
+ const utils_1 = require("../../utils");
8
+ const generateMainEntry_1 = require("../generateMainEntry");
9
+ const generateDefaultConfigContent_1 = require("../generateDefaultConfigContent");
10
+ const generateGCManagerFile_1 = require("../generateGCManagerFile");
11
+ const generateGCRunnerFile_1 = require("../generateGCRunnerFile");
12
+ function buildPackageJson(options) {
13
+ const dependencies = {
14
+ '@ambiten/core': '^1.0.0',
15
+ mongodb: '^6.14.2',
16
+ };
17
+ if (options.logger?.enabled) {
18
+ dependencies['@ambiten/logger'] = '^1.0.0';
19
+ }
20
+ if (options.graphql?.enabled) {
21
+ dependencies['graphql'] = '^16.11.0';
22
+ dependencies['@apollo/server'] = '^5.1.0';
23
+ }
24
+ if (options.features?.useRedisCache) {
25
+ dependencies['redis'] = '^4.7.1';
26
+ }
27
+ return {
28
+ name: options.projectName ?? 'my-ambiten-app',
29
+ description: 'A Ambiten-powered application',
30
+ private: true,
31
+ version: '1.0.0',
32
+ type: 'commonjs',
33
+ main: 'dist/main.js',
34
+ scripts: {
35
+ dev: 'ts-node src/main.ts',
36
+ build: 'tsc',
37
+ start: 'node dist/main.js',
38
+ },
39
+ license: 'ISC',
40
+ dependencies,
41
+ devDependencies: {
42
+ typescript: '^5.9.3',
43
+ 'ts-node': '^10.9.2',
44
+ '@types/node': '^22.15.30',
45
+ },
46
+ };
47
+ }
48
+ function buildTsConfig() {
49
+ return {
50
+ compilerOptions: {
51
+ "target": "ES2021",
52
+ "module": "commonjs",
53
+ "moduleResolution": "node",
54
+ "rootDir": './src',
55
+ "outDir": './dist',
56
+ "sourceMap": true,
57
+ "declaration": true,
58
+ "declarationMap": true,
59
+ "esModuleInterop": true,
60
+ "resolveJsonModule": true,
61
+ "strict": true,
62
+ "noImplicitAny": true,
63
+ "noImplicitReturns": true,
64
+ "noUncheckedIndexedAccess": true,
65
+ "exactOptionalPropertyTypes": true,
66
+ "forceConsistentCasingInFileNames": true,
67
+ "skipLibCheck": true,
68
+ types: ['node'],
69
+ lib: ['ES2021']
70
+ },
71
+ include: ['src/**/*'],
72
+ exclude: ['node_modules', 'dist']
73
+ };
74
+ }
75
+ function generateInitAmbitenTS() {
76
+ return `import { AmbitenBootstrapFactory } from '@ambiten/core';
77
+ import type { AmbitenRuntime } from '@ambiten/core';
78
+
79
+ export async function run(): Promise<AmbitenRuntime> {
80
+ return AmbitenBootstrapFactory.create();
81
+ }
82
+ `;
83
+ }
84
+ function generateGraphqlStarterTS() {
85
+ return `/**
86
+ * Optional GraphQL starter file.
87
+ *
88
+ * Use this file if you want to separate GraphQL setup from your bootstrap flow.
89
+ * If your bootstrap already initializes GraphQL, this file can be removed.
90
+ */
91
+
92
+ export {};
93
+ `;
94
+ }
95
+ async function generateAppStructure(projectRoot, options, logger) {
96
+ const srcDir = path_1.default.join(projectRoot, 'src');
97
+ const coreDir = path_1.default.join(srcDir, 'core');
98
+ const utilsDir = path_1.default.join(srcDir, 'utils');
99
+ const typesDir = path_1.default.join(srcDir, 'types');
100
+ const modelsDir = path_1.default.join(srcDir, 'models');
101
+ const graphqlDir = path_1.default.join(srcDir, 'graphql');
102
+ const gcDir = path_1.default.join(srcDir, 'gc');
103
+ await fs_extra_1.default.ensureDir(srcDir);
104
+ logger?.addDir(srcDir);
105
+ await fs_extra_1.default.ensureDir(coreDir);
106
+ logger?.addDir(coreDir);
107
+ await fs_extra_1.default.ensureDir(utilsDir);
108
+ logger?.addDir(utilsDir);
109
+ await fs_extra_1.default.ensureDir(typesDir);
110
+ logger?.addDir(typesDir);
111
+ await fs_extra_1.default.ensureDir(modelsDir);
112
+ logger?.addDir(modelsDir);
113
+ if (options.graphql?.enabled) {
114
+ await fs_extra_1.default.ensureDir(graphqlDir);
115
+ logger?.addDir(graphqlDir);
116
+ }
117
+ if (options.advanced?.garbageCollector?.enabled) {
118
+ await fs_extra_1.default.ensureDir(gcDir);
119
+ logger?.addDir(gcDir);
120
+ }
121
+ const mainPath = path_1.default.join(srcDir, 'main.ts');
122
+ await fs_extra_1.default.writeFile(mainPath, (0, generateMainEntry_1.generateMainTS)(options));
123
+ logger?.addFile(mainPath);
124
+ const initAmbitenPath = path_1.default.join(coreDir, 'initAmbiten.ts');
125
+ await fs_extra_1.default.writeFile(initAmbitenPath, generateInitAmbitenTS());
126
+ logger?.addFile(initAmbitenPath);
127
+ const helperPath = path_1.default.join(utilsDir, 'helper.ts');
128
+ await fs_extra_1.default.writeFile(helperPath, `export function noop(): void {}\n`);
129
+ logger?.addFile(helperPath);
130
+ const configTypesPath = path_1.default.join(typesDir, 'config.ts');
131
+ await fs_extra_1.default.writeFile(configTypesPath, `export {};\n`);
132
+ logger?.addFile(configTypesPath);
133
+ if (options.graphql?.enabled) {
134
+ const schemaPath = path_1.default.join(graphqlDir, 'schema.gql');
135
+ await fs_extra_1.default.writeFile(schemaPath, `type Query {
136
+ hello: String
137
+ }
138
+ `);
139
+ logger?.addFile(schemaPath);
140
+ const resolversPath = path_1.default.join(graphqlDir, 'resolvers.ts');
141
+ await fs_extra_1.default.writeFile(resolversPath, `export const resolvers = {
142
+ Query: {
143
+ hello: () => 'Hello, world!',
144
+ },
145
+ };
146
+ `);
147
+ logger?.addFile(resolversPath);
148
+ await fs_extra_1.default.writeFile(path_1.default.join(graphqlDir, 'graphql.ts'), generateGraphqlStarterTS());
149
+ }
150
+ if (options.advanced?.garbageCollector?.enabled) {
151
+ const gcManagerPath = path_1.default.join(gcDir, 'gcManager.ts');
152
+ await fs_extra_1.default.writeFile(gcManagerPath, (0, generateGCManagerFile_1.generateGCManager)());
153
+ logger?.addFile(gcManagerPath);
154
+ const gcRunnerPath = path_1.default.join(gcDir, 'gcRunner.ts');
155
+ await fs_extra_1.default.writeFile(gcRunnerPath, (0, generateGCRunnerFile_1.generateGCRunner)());
156
+ logger?.addFile(gcRunnerPath);
157
+ }
158
+ const configPath = path_1.default.join(projectRoot, 'ambiten.config.json');
159
+ await fs_extra_1.default.writeFile(configPath, (0, generateDefaultConfigContent_1.DEFAULT_CONFIG_CONTENT)(options));
160
+ logger?.addFile(configPath);
161
+ const packageJsonPath = path_1.default.join(projectRoot, 'package.json');
162
+ await fs_extra_1.default.writeJson(packageJsonPath, buildPackageJson(options), { spaces: 2 });
163
+ logger?.addFile(packageJsonPath);
164
+ const tsconfigPath = path_1.default.join(projectRoot, 'tsconfig.json');
165
+ await fs_extra_1.default.writeJson(tsconfigPath, buildTsConfig(), { spaces: 2 });
166
+ logger?.addFile(tsconfigPath);
167
+ const gitignorePath = path_1.default.join(projectRoot, '.gitignore');
168
+ await fs_extra_1.default.writeFile(gitignorePath, `node_modules
169
+ dist
170
+ lib
171
+ .store
172
+ .env
173
+ `);
174
+ logger?.addFile(gitignorePath);
175
+ if (options.advanced?.autoInstall) {
176
+ const packageManager = (0, utils_1.detectPackageManager)(projectRoot);
177
+ try {
178
+ await (0, utils_1.installPackages)([], projectRoot);
179
+ console.log((0, utils_1.colorize)(`[Installing dependencies]: Installed project dependencies using ${packageManager}.`, 'green'));
180
+ }
181
+ catch (error) {
182
+ console.log((0, utils_1.colorize)('⚠️ Dependency installation failed or was interrupted. Skipping install.', 'yellow'), error);
183
+ }
184
+ }
185
+ else {
186
+ const packageManager = (0, utils_1.detectPackageManager)(projectRoot);
187
+ const installCommand = packageManager === 'npm'
188
+ ? 'npm install'
189
+ : `${packageManager} install`;
190
+ console.log((0, utils_1.colorize)('[Skipping install]: Set advanced.autoInstall=true to install dependencies automatically.', 'blue'));
191
+ console.log((0, utils_1.colorize)(`[Next steps]: cd ${projectRoot} && ${installCommand}`, 'blue'));
192
+ }
193
+ }
@@ -0,0 +1,7 @@
1
+ export type GCConfig = {
2
+ ttlField: string;
3
+ expiresIn: string;
4
+ softDelete?: boolean;
5
+ archiveBeforeDelete?: boolean;
6
+ };
7
+ //# sourceMappingURL=GCConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GCConfig.d.ts","sourceRoot":"","sources":["../../src/types/GCConfig.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,24 @@
1
+ import { ILogger } from "@ambiten/logger";
2
+ import { AmbitenClient, AmbitenModel, AmbitenSchema } from "../lib-core";
3
+ import { AmbitenGraphQL } from "../graphql";
4
+ import { AmbitenGC } from "../gc";
5
+ import { Document } from "./document";
6
+ import { BootstrapClient } from "./bootstrapClient.type";
7
+ import { AmbitenCacheOptions } from "../ambiten-cache";
8
+ export interface AmbitenRuntime<T extends Document = Document> {
9
+ getMongoClient(): AmbitenClient | BootstrapClient;
10
+ onConnect(hook: any): void;
11
+ getModel(): AmbitenModel<T>;
12
+ getSchema(): AmbitenSchema<T>;
13
+ getGraphQL(): AmbitenGraphQL | undefined;
14
+ getGCRunner(): AmbitenGC | undefined;
15
+ getLogger(): ILogger;
16
+ registerMultiTenancy(options: {
17
+ tenants?: Record<string, string>;
18
+ lazy?: boolean;
19
+ }): Promise<void>;
20
+ cache<T>(key: string, fetcher: () => Promise<T>, options?: AmbitenCacheOptions): Promise<T>;
21
+ invalidateCache(tenantId: string, namespace?: string): Promise<void>;
22
+ shutdown(): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=ambiten-runtime-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambiten-runtime-type.d.ts","sourceRoot":"","sources":["../../src/types/ambiten-runtime-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EACN,aAAa,EACb,YAAY,EACZ,aAAa,EAEb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC5D,cAAc,IAAI,aAAa,GAAG,eAAe,CAAA;IAEjD,SAAS,CAAC,IAAI,KAAA,GAAG,IAAI,CAAA;IACrB,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAE5B,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9B,UAAU,IAAI,cAAc,GAAG,SAAS,CAAC;IAEzC,WAAW,IAAI,SAAS,GAAG,SAAS,CAAC;IACrC,SAAS,IAAI,OAAO,CAAC;IAErB,oBAAoB,CAAC,OAAO,EAAE;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB,KAAK,CAAC,CAAC,EACN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd,eAAe,CACd,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,136 @@
1
+ import { ClientSession, Collection, Db, MongoClient } from "mongodb";
2
+ import { AmbitenConfig } from "./ambitenConfig.js";
3
+ import { Document } from "./document.js";
4
+ /**
5
+ * Configuration options for the AmbitenClient.
6
+ */
7
+ export interface AmbitenClientConfig {
8
+ /**
9
+ * The MongoDB connection URI.
10
+ */
11
+ uri: string;
12
+ /**
13
+ * Optional configuration options for the client.
14
+ */
15
+ options?: AmbitenClientOptions;
16
+ /**
17
+ * An optional MongoClient instance.
18
+ */
19
+ tenantResolver?: TenantClientResolver;
20
+ }
21
+ export interface TenantClientResolver {
22
+ getClient(tenantId: string): Promise<MongoClient | null>;
23
+ }
24
+ export interface AmbitenResolvedClientScope {
25
+ tenantId?: string;
26
+ requestId?: string;
27
+ dbName: string;
28
+ collectionName?: string;
29
+ session?: ClientSession;
30
+ }
31
+ /**
32
+ * Options for configuring the AmbitenClient.
33
+ */
34
+ export interface AmbitenClientOptions {
35
+ /**
36
+ * The name of the database to connect to.
37
+ */
38
+ dbName?: string;
39
+ /**
40
+ * The name of the collection to use.
41
+ */
42
+ collectionName?: string;
43
+ /**
44
+ * An optional MongoClient instance.
45
+ */
46
+ client?: MongoClient;
47
+ /**
48
+ * Optional configuration for Ambiten.
49
+ */
50
+ config?: AmbitenConfig;
51
+ }
52
+ /**
53
+ * Represents the AmbitenClient interface for interacting with MongoDB.
54
+ * @template T - The type of the document in the collection.
55
+ */
56
+ export interface AmbitenClientType<T extends Document> {
57
+ /**
58
+ * The MongoDB connection URI.
59
+ */
60
+ uri: string;
61
+ /**
62
+ * Connects to the MongoDB database.
63
+ * @returns {Promise<Db>} A promise that resolves to the connected database instance.
64
+ */
65
+ connect(): Promise<Db>;
66
+ /**
67
+ * Drops the entire database.
68
+ * @returns {Promise<boolean>} A promise that resolves to `true` if the database is dropped successfully.
69
+ */
70
+ dropDatabase(): Promise<boolean>;
71
+ /**
72
+ * Retrieves the current database instance.
73
+ * @returns {Db} The connected database instance.
74
+ */
75
+ getDb(): Db;
76
+ /**
77
+ * Retrieves a collection by name.
78
+ * @param {string} collectionName - The name of the collection.
79
+ * @returns {Promise<Collection<T>>} A promise that resolves to the collection instance.
80
+ */
81
+ collection(collectionName: string): Promise<Collection<T>>;
82
+ /**
83
+ * Retrieves a collection by name.
84
+ * @param {string} name - The name of the collection.
85
+ * @returns {Promise<Collection<T>>} A promise that resolves to the collection instance.
86
+ */
87
+ getCollection(name: string): Promise<Collection<T>>;
88
+ /**
89
+ * Retrieves the database instance for a specific tenant.
90
+ * @param {string} tenantId - The ID of the tenant.
91
+ * @returns {Db} The database instance for the tenant.
92
+ */
93
+ getTenantDB(tenantId: string): Db;
94
+ /**
95
+ * Sets the MongoDB driver.
96
+ * @param {any} mongodbDriver - The MongoDB driver to set.
97
+ */
98
+ setDriver(mongodbDriver: any): void;
99
+ /**
100
+ * Retrieves a collection for a specific tenant.
101
+ * @param {string} tenantId - The ID of the tenant.
102
+ * @param {string} collectionName - The name of the collection.
103
+ * @returns {Promise<Collection<T>>} A promise that resolves to the collection instance.
104
+ */
105
+ getTenantCollection(tenantId: string, collectionName: string): Promise<Collection<T>>;
106
+ /**
107
+ * Retrieves the database instance for a specific tenant and URI.
108
+ * @param {string} tenantId - The ID of the tenant.
109
+ * @param {string} uri - The MongoDB connection URI.
110
+ * @returns {Promise<{db: Db, client: MongoClient}>} A promise that resolves to the database instance and its MongoClient.
111
+ */
112
+ getDatabase(tenantId: string, uri: string): Promise<{
113
+ db: Db;
114
+ client: MongoClient;
115
+ }>;
116
+ /**
117
+ * Switches to a different database by name.
118
+ * @param {string} dbName - The name of the database to switch to.
119
+ * @returns {Promise<{db: Db, client: MongoClient}>} A promise that resolves to the new database instance and its MongoClient.
120
+ */
121
+ useDatabase(dbName: string): Promise<{
122
+ db: Db;
123
+ client: MongoClient;
124
+ }>;
125
+ /**
126
+ * Validates the MongoDB connection URI.
127
+ * @param {string} uri - The MongoDB connection URI.
128
+ */
129
+ validateUri(uri: string): void;
130
+ /**
131
+ * Retrieves the MongoClient instance.
132
+ * @returns {MongoClient} The MongoClient instance.
133
+ */
134
+ getClient(): MongoClient;
135
+ }
136
+ //# sourceMappingURL=ambiten.client.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambiten.client.type.d.ts","sourceRoot":"","sources":["../../src/types/ambiten.client.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAE/B;;OAEG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACpC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACvB;AAGD;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,QAAQ;IACpD;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEvB;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,KAAK,IAAI,EAAE,CAAC;IAEZ;;;;OAIG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC;IAElC;;;OAGG;IACH,SAAS,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC;IAEpC;;;;;OAKG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtF;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,EAAE,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAErF;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,EAAE,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAEtE;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B;;;OAGG;IACH,SAAS,IAAI,WAAW,CAAC;CACzB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ ;