@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,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildInteractiveConfig = buildInteractiveConfig;
4
+ const tslib_1 = require("tslib");
5
+ const prompts_1 = tslib_1.__importDefault(require("prompts"));
6
+ function normalizeProjectName(name) {
7
+ return name.trim().replace(/\s+/g, '-').toLowerCase();
8
+ }
9
+ function wasProvided(value) {
10
+ return typeof value !== 'undefined';
11
+ }
12
+ function printScaffoldSummary(config) {
13
+ const lines = [
14
+ '',
15
+ 'Scaffold summary:',
16
+ ` Project: ${config.projectName}`,
17
+ ` MongoDB URI: ${config.connection?.uri ?? '(none)'}`,
18
+ ` GraphQL: ${config.graphql?.enabled ? 'enabled' : 'disabled'}`,
19
+ ` Multi-tenancy: ${config.multiTenant?.enabled ? 'enabled' : 'disabled'}`,
20
+ ` Logger: ${config.logger?.enabled ? 'enabled' : 'disabled'}`,
21
+ ` Redis Cache: ${config.features?.useRedisCache ? 'enabled' : 'disabled'}`,
22
+ ` Garbage Collector: ${config.advanced?.garbageCollector?.enabled ? 'enabled' : 'disabled'}`,
23
+ ` Auto-install: ${config.advanced?.autoInstall ? 'enabled' : 'disabled'}`,
24
+ '',
25
+ ];
26
+ console.log(lines.join('\n'));
27
+ }
28
+ async function buildInteractiveConfig(projectNameArg, options) {
29
+ const response = await (0, prompts_1.default)([
30
+ {
31
+ type: projectNameArg ? null : 'text',
32
+ name: 'projectName',
33
+ message: 'Project name',
34
+ initial: 'Ambiten-app',
35
+ validate: (value) => value.trim().length > 0 ? true : 'Project name is required',
36
+ },
37
+ {
38
+ type: wasProvided(options.uri) ? null : 'text',
39
+ name: 'uri',
40
+ message: 'MongoDB URI',
41
+ initial: (_prev, values) => {
42
+ const rawName = projectNameArg || values.projectName || 'Ambiten-app';
43
+ const projectName = normalizeProjectName(rawName);
44
+ return `mongodb://localhost:27017/${projectName}`;
45
+ },
46
+ validate: (value) => value.trim().length > 0 ? true : 'MongoDB URI is required',
47
+ },
48
+ {
49
+ type: wasProvided(options.withGraphql) ? null : 'toggle',
50
+ name: 'withGraphql',
51
+ message: 'Include GraphQL starter support?',
52
+ initial: false,
53
+ active: 'yes',
54
+ inactive: 'no',
55
+ },
56
+ {
57
+ type: wasProvided(options.multiTenant) ? null : 'toggle',
58
+ name: 'multiTenant',
59
+ message: 'Enable multi-tenancy?',
60
+ initial: false,
61
+ active: 'yes',
62
+ inactive: 'no',
63
+ },
64
+ {
65
+ type: wasProvided(options.logger) ? null : 'toggle',
66
+ name: 'logger',
67
+ message: 'Enable logger configuration?',
68
+ initial: true,
69
+ active: 'yes',
70
+ inactive: 'no',
71
+ },
72
+ {
73
+ type: wasProvided(options.withRedis) ? null : 'toggle',
74
+ name: 'withRedis',
75
+ message: 'Enable Redis cache defaults?',
76
+ initial: false,
77
+ active: 'yes',
78
+ inactive: 'no',
79
+ },
80
+ {
81
+ type: wasProvided(options.withGarbageCollector) ? null : 'toggle',
82
+ name: 'withGarbageCollector',
83
+ message: 'Enable garbage collector starter files?',
84
+ initial: false,
85
+ active: 'yes',
86
+ inactive: 'no',
87
+ },
88
+ {
89
+ type: wasProvided(options.install) ? null : 'toggle',
90
+ name: 'install',
91
+ message: 'Install dependencies after scaffold?',
92
+ initial: false,
93
+ active: 'yes',
94
+ inactive: 'no',
95
+ },
96
+ ], {
97
+ onCancel: () => {
98
+ throw new Error('CLI initialization cancelled by user.');
99
+ },
100
+ });
101
+ const projectName = normalizeProjectName(projectNameArg || response.projectName || 'Ambiten-app');
102
+ const uri = options.uri ||
103
+ response.uri ||
104
+ `mongodb://localhost:27017/${projectName}`;
105
+ const useGraphql = wasProvided(options.withGraphql)
106
+ ? Boolean(options.withGraphql)
107
+ : Boolean(response.withGraphql);
108
+ const useMultiTenant = wasProvided(options.multiTenant)
109
+ ? Boolean(options.multiTenant)
110
+ : Boolean(response.multiTenant);
111
+ const useLogger = wasProvided(options.logger)
112
+ ? Boolean(options.logger)
113
+ : Boolean(response.logger);
114
+ const useRedis = wasProvided(options.withRedis)
115
+ ? Boolean(options.withRedis)
116
+ : Boolean(response.withRedis);
117
+ const useGarbageCollector = wasProvided(options.withGarbageCollector)
118
+ ? Boolean(options.withGarbageCollector)
119
+ : Boolean(response.withGarbageCollector);
120
+ const autoInstall = wasProvided(options.install)
121
+ ? Boolean(options.install)
122
+ : Boolean(response.install);
123
+ const config = {
124
+ projectName,
125
+ connection: {
126
+ uri,
127
+ options: {
128
+ dbName: projectName,
129
+ },
130
+ },
131
+ features: {
132
+ useRedisCache: useRedis,
133
+ redisUri: useRedis ? 'redis://localhost:6379' : '',
134
+ },
135
+ advanced: {
136
+ autoInstall,
137
+ garbageCollector: {
138
+ enabled: useGarbageCollector,
139
+ },
140
+ },
141
+ };
142
+ if (useGraphql) {
143
+ config.graphql = {
144
+ enabled: true,
145
+ subscriptions: false,
146
+ playground: true,
147
+ schemaOutputPath: './src/graphql/schema.gql',
148
+ };
149
+ }
150
+ if (useLogger) {
151
+ config.logger = {
152
+ enabled: true,
153
+ level: 'info',
154
+ colorize: true,
155
+ json: false,
156
+ transports: [
157
+ {
158
+ type: 'console',
159
+ options: {},
160
+ },
161
+ ],
162
+ };
163
+ }
164
+ if (useMultiTenant) {
165
+ config.multiTenant = {
166
+ enabled: true,
167
+ headerKey: 'x-tenant-id',
168
+ tenants: {
169
+ tenant1: `mongodb://localhost:27017/${projectName}_tenant1`,
170
+ },
171
+ initOptions: {
172
+ lazy: true,
173
+ },
174
+ };
175
+ }
176
+ if (options.rbac) {
177
+ config.features = {
178
+ ...config.features,
179
+ };
180
+ }
181
+ printScaffoldSummary(config);
182
+ const confirmResponse = await (0, prompts_1.default)({
183
+ type: 'toggle',
184
+ name: 'proceed',
185
+ message: 'Proceed with project generation?',
186
+ initial: true,
187
+ active: 'yes',
188
+ inactive: 'no',
189
+ }, {
190
+ onCancel: () => {
191
+ throw new Error('Project generation cancelled by user.');
192
+ },
193
+ });
194
+ if (!confirmResponse.proceed) {
195
+ throw new Error('Project generation cancelled by user.');
196
+ }
197
+ return config;
198
+ }
@@ -0,0 +1,5 @@
1
+ export * from './ambiten-core-cli';
2
+ export * from './buildInteractiveConfig';
3
+ export * from './prompt';
4
+ export * from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./ambiten-core-cli"), exports);
5
+ tslib_1.__exportStar(require("./buildInteractiveConfig"), exports);
6
+ tslib_1.__exportStar(require("./prompt"), exports);
7
+ tslib_1.__exportStar(require("./types"), exports);
@@ -0,0 +1,10 @@
1
+ export interface ConfirmPromptOptions {
2
+ defaultValue?: boolean;
3
+ }
4
+ export interface InputPromptOptions {
5
+ defaultValue?: string;
6
+ }
7
+ export declare function askInput(question: string, options?: InputPromptOptions): Promise<string>;
8
+ export declare function askConfirm(question: string, options?: ConfirmPromptOptions): Promise<boolean>;
9
+ export declare function normalizeProjectName(name: string): string;
10
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AASD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.askInput = askInput;
4
+ exports.askConfirm = askConfirm;
5
+ exports.normalizeProjectName = normalizeProjectName;
6
+ const tslib_1 = require("tslib");
7
+ const node_readline_1 = tslib_1.__importDefault(require("node:readline"));
8
+ function createInterface() {
9
+ return node_readline_1.default.createInterface({
10
+ input: process.stdin,
11
+ output: process.stdout,
12
+ });
13
+ }
14
+ async function askInput(question, options = {}) {
15
+ const rl = createInterface();
16
+ const suffix = options.defaultValue
17
+ ? ` (${options.defaultValue})`
18
+ : '';
19
+ return new Promise((resolve) => {
20
+ rl.question(`${question}${suffix}: `, (answer) => {
21
+ rl.close();
22
+ const resolved = answer.trim() || options.defaultValue || '';
23
+ resolve(resolved);
24
+ });
25
+ });
26
+ }
27
+ async function askConfirm(question, options = {}) {
28
+ const rl = createInterface();
29
+ const defaultLabel = typeof options.defaultValue === 'boolean'
30
+ ? options.defaultValue
31
+ ? 'Y/n'
32
+ : 'y/N'
33
+ : 'y/N';
34
+ return new Promise((resolve) => {
35
+ rl.question(`${question} (${defaultLabel}): `, (answer) => {
36
+ rl.close();
37
+ const value = answer.trim().toLowerCase();
38
+ if (!value && typeof options.defaultValue === 'boolean') {
39
+ resolve(options.defaultValue);
40
+ return;
41
+ }
42
+ resolve(value === 'y' || value === 'yes');
43
+ });
44
+ });
45
+ }
46
+ function normalizeProjectName(name) {
47
+ return name.trim().replace(/\s+/g, '-').toLowerCase();
48
+ }
@@ -0,0 +1,11 @@
1
+ export interface BootstrapCliOptions {
2
+ withGraphql?: boolean;
3
+ withRedis?: boolean;
4
+ logger?: boolean;
5
+ multiTenant?: boolean;
6
+ uri?: string;
7
+ rbac?: boolean;
8
+ withGarbageCollector?: boolean;
9
+ install?: boolean;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,278 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Ambiten Configuration Schema",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "properties": {
7
+ "projectName": {
8
+ "type": "string",
9
+ "description": "The name of the project."
10
+ },
11
+ "connection": {
12
+ "type": "object",
13
+ "description": "MongoDB connection configuration used when no external provider is supplied at runtime.",
14
+ "properties": {
15
+ "uri": {
16
+ "type": "string",
17
+ "description": "MongoDB connection URI."
18
+ },
19
+ "options": {
20
+ "type": "object",
21
+ "description": "Additional MongoDB client options."
22
+ }
23
+ },
24
+ "required": [
25
+ "uri"
26
+ ],
27
+ "additionalProperties": true
28
+ },
29
+ "multiTenant": {
30
+ "type": "object",
31
+ "description": "Multi-tenant runtime configuration.",
32
+ "properties": {
33
+ "enabled": {
34
+ "type": "boolean",
35
+ "default": false
36
+ },
37
+ "headerKey": {
38
+ "type": "string",
39
+ "default": "x-tenant-id",
40
+ "description": "Header used to resolve the tenant ID."
41
+ },
42
+ "tenants": {
43
+ "type": "object",
44
+ "description": "Mapping of tenant IDs to MongoDB URIs.",
45
+ "additionalProperties": {
46
+ "type": "string"
47
+ }
48
+ },
49
+ "initOptions": {
50
+ "type": "object",
51
+ "description": "Initialization options for multi-tenancy.",
52
+ "properties": {
53
+ "lazy": {
54
+ "type": "boolean",
55
+ "default": false
56
+ },
57
+ "retryAttempts": {
58
+ "type": "integer",
59
+ "default": 3
60
+ },
61
+ "config": {
62
+ "type": "object"
63
+ }
64
+ },
65
+ "additionalProperties": true
66
+ }
67
+ },
68
+ "additionalProperties": false
69
+ },
70
+ "logger": {
71
+ "type": "object",
72
+ "description": "Logger configuration.",
73
+ "properties": {
74
+ "level": {
75
+ "type": "string",
76
+ "enum": [
77
+ "debug",
78
+ "info",
79
+ "warn",
80
+ "error",
81
+ "fatal",
82
+ "trace"
83
+ ]
84
+ },
85
+ "colorize": {
86
+ "type": "boolean"
87
+ },
88
+ "json": {
89
+ "type": "boolean"
90
+ },
91
+ "transportConfigs": {
92
+ "type": "array",
93
+ "items": {
94
+ "type": "object",
95
+ "properties": {
96
+ "type": {
97
+ "type": "string",
98
+ "enum": [
99
+ "console",
100
+ "file",
101
+ "rotating-file"
102
+ ]
103
+ },
104
+ "options": {
105
+ "type": "object"
106
+ }
107
+ },
108
+ "additionalProperties": false
109
+ }
110
+ },
111
+ "formatOptions": {
112
+ "type": "object"
113
+ },
114
+ "excludedSources": {
115
+ "type": "array",
116
+ "items": {
117
+ "type": "string"
118
+ }
119
+ },
120
+ "circuitBreaker": {
121
+ "type": "object",
122
+ "properties": {
123
+ "enabled": {
124
+ "type": "boolean",
125
+ "default": true
126
+ },
127
+ "retryAttempts": {
128
+ "type": "integer",
129
+ "default": 5
130
+ }
131
+ },
132
+ "additionalProperties": false
133
+ },
134
+ "enableMetrics": {
135
+ "type": "object",
136
+ "properties": {
137
+ "enabled": {
138
+ "type": "boolean",
139
+ "default": false
140
+ },
141
+ "logInterval": {
142
+ "type": "integer",
143
+ "minimum": 1000,
144
+ "default": 60000
145
+ }
146
+ },
147
+ "additionalProperties": false,
148
+ "default": {
149
+ "enabled": false,
150
+ "logInterval": 60000
151
+ }
152
+ },
153
+ "compress": {
154
+ "type": "object",
155
+ "properties": {
156
+ "enabled": {
157
+ "type": "boolean",
158
+ "default": false
159
+ }
160
+ },
161
+ "additionalProperties": false,
162
+ "default": {
163
+ "enabled": false
164
+ }
165
+ }
166
+ },
167
+ "additionalProperties": true
168
+ },
169
+ "graphql": {
170
+ "type": "object",
171
+ "description": "Optional GraphQL auto-generation/bootstrap feature. Useful for playgrounds, prototyping, and generated GraphQL flows.",
172
+ "properties": {
173
+ "enabled": {
174
+ "type": "boolean",
175
+ "default": false
176
+ },
177
+ "subscriptions": {
178
+ "type": "boolean",
179
+ "default": false
180
+ },
181
+ "playground": {
182
+ "type": "boolean",
183
+ "default": true
184
+ },
185
+ "schemaOutputPath": {
186
+ "type": "string",
187
+ "default": "./src/graphql/schema.gql"
188
+ }
189
+ },
190
+ "additionalProperties": false
191
+ },
192
+ "features": {
193
+ "type": "object",
194
+ "description": "Optional feature paths and integrations.",
195
+ "properties": {
196
+ "models": {
197
+ "type": "string",
198
+ "default": "./src/models"
199
+ },
200
+ "schemas": {
201
+ "type": "string",
202
+ "default": "./src/schemas"
203
+ },
204
+ "typeDefs": {
205
+ "type": "string",
206
+ "default": "./src/graphql/typeDefs"
207
+ },
208
+ "resolvers": {
209
+ "type": "string",
210
+ "default": "./src/graphql/resolvers"
211
+ },
212
+ "useRedisCache": {
213
+ "type": "boolean",
214
+ "default": false
215
+ },
216
+ "redisUri": {
217
+ "type": "string",
218
+ "default": ""
219
+ }
220
+ },
221
+ "additionalProperties": false
222
+ },
223
+ "advanced": {
224
+ "type": "object",
225
+ "description": "Advanced runtime configuration.",
226
+ "properties": {
227
+ "autoInstall": {
228
+ "type": "boolean",
229
+ "default": false
230
+ },
231
+ "circuitBreaker": {
232
+ "type": "object",
233
+ "properties": {
234
+ "enabled": {
235
+ "type": "boolean",
236
+ "default": true
237
+ },
238
+ "retryAttempts": {
239
+ "type": "integer",
240
+ "default": 5
241
+ }
242
+ },
243
+ "additionalProperties": false
244
+ },
245
+ "garbageCollector": {
246
+ "type": "object",
247
+ "description": "Garbage collector configuration.",
248
+ "properties": {
249
+ "enabled": {
250
+ "type": "boolean",
251
+ "default": false
252
+ },
253
+ "retentionPeriod": {
254
+ "type": "integer",
255
+ "minimum": 1,
256
+ "default": 30
257
+ },
258
+ "logResults": {
259
+ "type": "boolean",
260
+ "default": true
261
+ }
262
+ },
263
+ "additionalProperties": false
264
+ },
265
+ "gcCron": {
266
+ "type": "string",
267
+ "default": "0 * * * *"
268
+ }
269
+ },
270
+ "additionalProperties": false
271
+ },
272
+ "configVersion": {
273
+ "type": "string",
274
+ "default": "1.0.0",
275
+ "description": "Version of the Ambiten config format."
276
+ }
277
+ }
278
+ }
@@ -0,0 +1,2 @@
1
+ export * from './loadAmbitenConfig';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./loadAmbitenConfig"), exports);
@@ -0,0 +1,3 @@
1
+ import type { AmbitenConfig } from '../types';
2
+ export declare function loadAmbitenConfig(configPath?: string): Promise<AmbitenConfig>;
3
+ //# sourceMappingURL=loadAmbitenConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadAmbitenConfig.d.ts","sourceRoot":"","sources":["../../src/config/loadAmbitenConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA0F9C,wBAAsB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmEnF"}