@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.
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/bin/bootstrap.js +26 -0
- package/dist/ambiten-cache/ambitenCache.d.ts +64 -0
- package/dist/ambiten-cache/ambitenCache.d.ts.map +1 -0
- package/dist/ambiten-cache/ambitenCache.js +127 -0
- package/dist/ambiten-cache/index.d.ts +2 -0
- package/dist/ambiten-cache/index.d.ts.map +1 -0
- package/dist/ambiten-cache/index.js +4 -0
- package/dist/browser.d.ts +32 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +37 -0
- package/dist/cli/ambiten-core-cli.d.ts +4 -0
- package/dist/cli/ambiten-core-cli.d.ts.map +1 -0
- package/dist/cli/ambiten-core-cli.js +41 -0
- package/dist/cli/buildInteractiveConfig.d.ts +4 -0
- package/dist/cli/buildInteractiveConfig.d.ts.map +1 -0
- package/dist/cli/buildInteractiveConfig.js +198 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/prompt.d.ts +10 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +48 -0
- package/dist/cli/types.d.ts +11 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/config/ambiten.config.schema.json +278 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/loadAmbitenConfig.d.ts +3 -0
- package/dist/config/loadAmbitenConfig.d.ts.map +1 -0
- package/dist/config/loadAmbitenConfig.js +131 -0
- package/dist/context/ambitenContext.d.ts +35 -0
- package/dist/context/ambitenContext.d.ts.map +1 -0
- package/dist/context/ambitenContext.js +147 -0
- package/dist/context/helpers/runManualTransaction.d.ts +3 -0
- package/dist/context/helpers/runManualTransaction.d.ts.map +1 -0
- package/dist/context/helpers/runManualTransaction.js +22 -0
- package/dist/context/helpers/transactionSession.d.ts +9 -0
- package/dist/context/helpers/transactionSession.d.ts.map +1 -0
- package/dist/context/helpers/transactionSession.js +8 -0
- package/dist/context/index.d.ts +4 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +6 -0
- package/dist/debug/debugLog.d.ts +2 -0
- package/dist/debug/debugLog.d.ts.map +1 -0
- package/dist/debug/debugLog.js +23 -0
- package/dist/debug/index.d.ts +2 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +4 -0
- package/dist/gc/ambitenGC.d.ts +49 -0
- package/dist/gc/ambitenGC.d.ts.map +1 -0
- package/dist/gc/ambitenGC.js +138 -0
- package/dist/gc/gcCron.browser.d.ts +2 -0
- package/dist/gc/gcCron.browser.d.ts.map +1 -0
- package/dist/gc/gcCron.browser.js +9 -0
- package/dist/gc/gcCron.node.d.ts +19 -0
- package/dist/gc/gcCron.node.d.ts.map +1 -0
- package/dist/gc/gcCron.node.js +47 -0
- package/dist/gc/gcManager.d.ts +37 -0
- package/dist/gc/gcManager.d.ts.map +1 -0
- package/dist/gc/gcManager.js +62 -0
- package/dist/gc/index.d.ts +5 -0
- package/dist/gc/index.d.ts.map +1 -0
- package/dist/gc/index.js +7 -0
- package/dist/graphql/ambitenGraphQL.d.ts +24 -0
- package/dist/graphql/ambitenGraphQL.d.ts.map +1 -0
- package/dist/graphql/ambitenGraphQL.js +215 -0
- package/dist/graphql/index.d.ts +2 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +4 -0
- package/dist/index-browser.js +25 -0
- package/dist/index-browser.js.map +1 -0
- package/dist/index-cli.js +26 -0
- package/dist/index-cli.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/init-cli/generate.project.d.ts +9 -0
- package/dist/init-cli/generate.project.d.ts.map +1 -0
- package/dist/init-cli/generate.project.js +38 -0
- package/dist/instrumentation/index.d.ts +3 -0
- package/dist/instrumentation/index.d.ts.map +1 -0
- package/dist/instrumentation/index.js +5 -0
- package/dist/instrumentation/measureQuery.browser.d.ts +3 -0
- package/dist/instrumentation/measureQuery.browser.d.ts.map +1 -0
- package/dist/instrumentation/measureQuery.browser.js +6 -0
- package/dist/instrumentation/measureQueryWithErrors.d.ts +11 -0
- package/dist/instrumentation/measureQueryWithErrors.d.ts.map +1 -0
- package/dist/instrumentation/measureQueryWithErrors.js +90 -0
- package/dist/lib-core/ambitenClient.d.ts +115 -0
- package/dist/lib-core/ambitenClient.d.ts.map +1 -0
- package/dist/lib-core/ambitenClient.js +537 -0
- package/dist/lib-core/ambitenModelFactory.d.ts +979 -0
- package/dist/lib-core/ambitenModelFactory.d.ts.map +1 -0
- package/dist/lib-core/ambitenModelFactory.js +3984 -0
- package/dist/lib-core/ambitenSchema.d.ts +126 -0
- package/dist/lib-core/ambitenSchema.d.ts.map +1 -0
- package/dist/lib-core/ambitenSchema.js +247 -0
- package/dist/lib-core/bootstrap/ambitenBootstrap.d.ts +38 -0
- package/dist/lib-core/bootstrap/ambitenBootstrap.d.ts.map +1 -0
- package/dist/lib-core/bootstrap/ambitenBootstrap.js +381 -0
- package/dist/lib-core/bootstrap/index.d.ts +2 -0
- package/dist/lib-core/bootstrap/index.d.ts.map +1 -0
- package/dist/lib-core/bootstrap/index.js +4 -0
- package/dist/lib-core/index.d.ts +5 -0
- package/dist/lib-core/index.d.ts.map +1 -0
- package/dist/lib-core/index.js +7 -0
- package/dist/middleware/authorization/auth.d.ts +22 -0
- package/dist/middleware/authorization/auth.d.ts.map +1 -0
- package/dist/middleware/authorization/auth.js +37 -0
- package/dist/middleware/index.d.ts +4 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +6 -0
- package/dist/middleware/rbac/rbacMiddleware.d.ts +103 -0
- package/dist/middleware/rbac/rbacMiddleware.d.ts.map +1 -0
- package/dist/middleware/rbac/rbacMiddleware.js +246 -0
- package/dist/middleware/rbac/rbacTypes.d.ts +4 -0
- package/dist/middleware/rbac/rbacTypes.d.ts.map +1 -0
- package/dist/middleware/rbac/rbacTypes.js +8 -0
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +5 -0
- package/dist/plugins/softDelete/applySoftDelete.d.ts +5 -0
- package/dist/plugins/softDelete/applySoftDelete.d.ts.map +1 -0
- package/dist/plugins/softDelete/applySoftDelete.js +139 -0
- package/dist/plugins/softDelete/types.d.ts +14 -0
- package/dist/plugins/softDelete/types.d.ts.map +1 -0
- package/dist/plugins/softDelete/types.js +2 -0
- package/dist/redis-manager/index.d.ts +2 -0
- package/dist/redis-manager/index.d.ts.map +1 -0
- package/dist/redis-manager/index.js +4 -0
- package/dist/redis-manager/redisClient.d.ts +32 -0
- package/dist/redis-manager/redisClient.d.ts.map +1 -0
- package/dist/redis-manager/redisClient.js +146 -0
- package/dist/tanancy/MultiTenantManager.d.ts +98 -0
- package/dist/tanancy/MultiTenantManager.d.ts.map +1 -0
- package/dist/tanancy/MultiTenantManager.js +190 -0
- package/dist/tanancy/TenantContext.d.ts +31 -0
- package/dist/tanancy/TenantContext.d.ts.map +1 -0
- package/dist/tanancy/TenantContext.js +59 -0
- package/dist/tanancy/TenantModelResolver.d.ts +10 -0
- package/dist/tanancy/TenantModelResolver.d.ts.map +1 -0
- package/dist/tanancy/TenantModelResolver.js +114 -0
- package/dist/tanancy/index.d.ts +5 -0
- package/dist/tanancy/index.d.ts.map +1 -0
- package/dist/tanancy/index.js +7 -0
- package/dist/tanancy/init/initMultiTenancy.d.ts +29 -0
- package/dist/tanancy/init/initMultiTenancy.d.ts.map +1 -0
- package/dist/tanancy/init/initMultiTenancy.js +62 -0
- package/dist/templates/generateDefaultConfigContent.d.ts +10 -0
- package/dist/templates/generateDefaultConfigContent.d.ts.map +1 -0
- package/dist/templates/generateDefaultConfigContent.js +108 -0
- package/dist/templates/generateGCManagerFile.d.ts +2 -0
- package/dist/templates/generateGCManagerFile.d.ts.map +1 -0
- package/dist/templates/generateGCManagerFile.js +39 -0
- package/dist/templates/generateGCRunnerFile.d.ts +2 -0
- package/dist/templates/generateGCRunnerFile.d.ts.map +1 -0
- package/dist/templates/generateGCRunnerFile.js +25 -0
- package/dist/templates/generateMainEntry.d.ts +3 -0
- package/dist/templates/generateMainEntry.d.ts.map +1 -0
- package/dist/templates/generateMainEntry.js +24 -0
- package/dist/templates/index.d.ts +6 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +8 -0
- package/dist/templates/scaffold/structureGenerator.d.ts +4 -0
- package/dist/templates/scaffold/structureGenerator.d.ts.map +1 -0
- package/dist/templates/scaffold/structureGenerator.js +193 -0
- package/dist/types/GCConfig.d.ts +7 -0
- package/dist/types/GCConfig.d.ts.map +1 -0
- package/dist/types/GCConfig.js +2 -0
- package/dist/types/ambiten-runtime-type.d.ts +24 -0
- package/dist/types/ambiten-runtime-type.d.ts.map +1 -0
- package/dist/types/ambiten-runtime-type.js +2 -0
- package/dist/types/ambiten.client.type.d.ts +136 -0
- package/dist/types/ambiten.client.type.d.ts.map +1 -0
- package/dist/types/ambiten.client.type.js +3 -0
- package/dist/types/ambiten.model.type.d.ts +135 -0
- package/dist/types/ambiten.model.type.d.ts.map +1 -0
- package/dist/types/ambiten.model.type.js +4 -0
- package/dist/types/ambitenConfig.d.ts +103 -0
- package/dist/types/ambitenConfig.d.ts.map +1 -0
- package/dist/types/ambitenConfig.js +3 -0
- package/dist/types/bootstrapClient.type.d.ts +11 -0
- package/dist/types/bootstrapClient.type.d.ts.map +1 -0
- package/dist/types/bootstrapClient.type.js +2 -0
- package/dist/types/db.provider.d.ts +66 -0
- package/dist/types/db.provider.d.ts.map +1 -0
- package/dist/types/db.provider.js +2 -0
- package/dist/types/document.d.ts +7 -0
- package/dist/types/document.d.ts.map +1 -0
- package/dist/types/document.js +2 -0
- package/dist/types/event.type.d.ts +6 -0
- package/dist/types/event.type.d.ts.map +1 -0
- package/dist/types/event.type.js +27 -0
- package/dist/types/graphql.type.d.ts +22 -0
- package/dist/types/graphql.type.d.ts.map +1 -0
- package/dist/types/graphql.type.js +2 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +17 -0
- package/dist/types/logger.types.d.ts +15 -0
- package/dist/types/logger.types.d.ts.map +1 -0
- package/dist/types/logger.types.js +3 -0
- package/dist/types/middleware/types.d.ts +28 -0
- package/dist/types/middleware/types.d.ts.map +1 -0
- package/dist/types/middleware/types.js +2 -0
- package/dist/types/result.utils.types.d.ts +7 -0
- package/dist/types/result.utils.types.d.ts.map +1 -0
- package/dist/types/result.utils.types.js +2 -0
- package/dist/types/schema.type.d.ts +23 -0
- package/dist/types/schema.type.d.ts.map +1 -0
- package/dist/types/schema.type.js +10 -0
- package/dist/types/user.type.d.ts +11 -0
- package/dist/types/user.type.d.ts.map +1 -0
- package/dist/types/user.type.js +2 -0
- package/dist/utils/AuthUtils.d.ts +15 -0
- package/dist/utils/AuthUtils.d.ts.map +1 -0
- package/dist/utils/AuthUtils.js +26 -0
- package/dist/utils/ModelRegistry.d.ts +15 -0
- package/dist/utils/ModelRegistry.d.ts.map +1 -0
- package/dist/utils/ModelRegistry.js +35 -0
- package/dist/utils/banner.d.ts +2 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +20 -0
- package/dist/utils/builders/createModel.d.ts +37 -0
- package/dist/utils/builders/createModel.d.ts.map +1 -0
- package/dist/utils/builders/createModel.js +38 -0
- package/dist/utils/builders/getTenantDb.d.ts +12 -0
- package/dist/utils/builders/getTenantDb.d.ts.map +1 -0
- package/dist/utils/builders/getTenantDb.js +25 -0
- package/dist/utils/builders/index.d.ts +4 -0
- package/dist/utils/builders/index.d.ts.map +1 -0
- package/dist/utils/builders/index.js +6 -0
- package/dist/utils/builders/schema.d.ts +22 -0
- package/dist/utils/builders/schema.d.ts.map +1 -0
- package/dist/utils/builders/schema.js +26 -0
- package/dist/utils/cacheWithRedis.d.ts +27 -0
- package/dist/utils/cacheWithRedis.d.ts.map +1 -0
- package/dist/utils/cacheWithRedis.js +22 -0
- package/dist/utils/castId.d.ts +5 -0
- package/dist/utils/castId.d.ts.map +1 -0
- package/dist/utils/castId.js +52 -0
- package/dist/utils/color-palatte.d.ts +4 -0
- package/dist/utils/color-palatte.d.ts.map +1 -0
- package/dist/utils/color-palatte.js +24 -0
- package/dist/utils/configureAmbitenContext.d.ts +13 -0
- package/dist/utils/configureAmbitenContext.d.ts.map +1 -0
- package/dist/utils/configureAmbitenContext.js +35 -0
- package/dist/utils/detect-package-manager.d.ts +5 -0
- package/dist/utils/detect-package-manager.d.ts.map +1 -0
- package/dist/utils/detect-package-manager.js +59 -0
- package/dist/utils/ensureModelNameSafe.d.ts +12 -0
- package/dist/utils/ensureModelNameSafe.d.ts.map +1 -0
- package/dist/utils/ensureModelNameSafe.js +28 -0
- package/dist/utils/ensureRedis.d.ts +7 -0
- package/dist/utils/ensureRedis.d.ts.map +1 -0
- package/dist/utils/ensureRedis.js +40 -0
- package/dist/utils/error/ambitenError-handler.d.ts +24 -0
- package/dist/utils/error/ambitenError-handler.d.ts.map +1 -0
- package/dist/utils/error/ambitenError-handler.js +39 -0
- package/dist/utils/error/errorTypes.d.ts +27 -0
- package/dist/utils/error/errorTypes.d.ts.map +1 -0
- package/dist/utils/error/errorTypes.js +30 -0
- package/dist/utils/error/index.d.ts +3 -0
- package/dist/utils/error/index.d.ts.map +1 -0
- package/dist/utils/error/index.js +5 -0
- package/dist/utils/eventOptions.d.ts +38 -0
- package/dist/utils/eventOptions.d.ts.map +1 -0
- package/dist/utils/eventOptions.js +130 -0
- package/dist/utils/events.d.ts +5 -0
- package/dist/utils/events.d.ts.map +1 -0
- package/dist/utils/events.js +7 -0
- package/dist/utils/index.d.ts +23 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +25 -0
- package/dist/utils/invalidateTenantCache.d.ts +18 -0
- package/dist/utils/invalidateTenantCache.d.ts.map +1 -0
- package/dist/utils/invalidateTenantCache.js +27 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +27 -0
- package/dist/utils/modelLoader.d.ts +3 -0
- package/dist/utils/modelLoader.d.ts.map +1 -0
- package/dist/utils/modelLoader.js +41 -0
- package/dist/utils/resolveAmbitenOption.d.ts +2 -0
- package/dist/utils/resolveAmbitenOption.d.ts.map +1 -0
- package/dist/utils/resolveAmbitenOption.js +10 -0
- package/dist/utils/resolveRuntimeConfig.d.ts +22 -0
- package/dist/utils/resolveRuntimeConfig.d.ts.map +1 -0
- package/dist/utils/resolveRuntimeConfig.js +33 -0
- package/dist/utils/scaffoldLoger.d.ts +11 -0
- package/dist/utils/scaffoldLoger.d.ts.map +1 -0
- package/dist/utils/scaffoldLoger.js +68 -0
- package/dist/utils/symbols.d.ts +4 -0
- package/dist/utils/symbols.d.ts.map +1 -0
- package/dist/utils/symbols.js +6 -0
- package/dist/utils/time.d.ts +5 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +39 -0
- 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 @@
|
|
|
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,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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
|
|
@@ -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"}
|