@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,15 @@
|
|
|
1
|
+
import jwt from "jsonwebtoken";
|
|
2
|
+
import 'dotenv/config';
|
|
3
|
+
export declare class AuthService {
|
|
4
|
+
static generateToken(user: {
|
|
5
|
+
_id: string;
|
|
6
|
+
role: string;
|
|
7
|
+
tenantId: string;
|
|
8
|
+
}): string;
|
|
9
|
+
static generateRefreshToken(user: {
|
|
10
|
+
_id: string;
|
|
11
|
+
role: string;
|
|
12
|
+
}): string;
|
|
13
|
+
static verifyToken(token: string): string | jwt.JwtPayload;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=AuthUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthUtils.d.ts","sourceRoot":"","sources":["../../src/utils/AuthUtils.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,eAAe,CAAA;AAQtB,qBAAa,WAAW;IACvB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAM1E,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAS/D,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM;CAGhC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const jsonwebtoken_1 = tslib_1.__importDefault(require("jsonwebtoken"));
|
|
6
|
+
require("dotenv/config");
|
|
7
|
+
const SECRET = process.env.JWT_SECRET;
|
|
8
|
+
const REFRESH_SECRET = process.env.REFRESH_SECRET;
|
|
9
|
+
const REFRESH_EXPIRATION = process.env.REFRESH_EXPIRATION || '7d';
|
|
10
|
+
const JWT_EXPIRATION = process.env.JWT_EXPIRATION || '1d';
|
|
11
|
+
class AuthService {
|
|
12
|
+
static generateToken(user) {
|
|
13
|
+
return jsonwebtoken_1.default.sign(user, SECRET, {
|
|
14
|
+
expiresIn: JWT_EXPIRATION
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
static generateRefreshToken(user) {
|
|
18
|
+
return jsonwebtoken_1.default.sign(user, REFRESH_SECRET, {
|
|
19
|
+
expiresIn: REFRESH_EXPIRATION
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
static verifyToken(token) {
|
|
23
|
+
return jsonwebtoken_1.default.verify(token, SECRET);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.AuthService = AuthService;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AmbitenModel } from '../lib-core';
|
|
2
|
+
import type { Document } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* AmbitenModelRegistry manages registered Ambiten model instances.
|
|
5
|
+
*/
|
|
6
|
+
export declare const AmbitenModelRegistry: {
|
|
7
|
+
registerModel(model: AmbitenModel<any>): void;
|
|
8
|
+
getRegisteredModel<T extends Document = Document>(model: AmbitenModel<T>): AmbitenModel<T> | null;
|
|
9
|
+
isModelRegistered(model: AmbitenModel<any>): boolean;
|
|
10
|
+
unregisterModel(model: AmbitenModel<any>): void;
|
|
11
|
+
getAllModels(): AmbitenModel<any>[];
|
|
12
|
+
clear(): void;
|
|
13
|
+
};
|
|
14
|
+
export declare function clearModelRegistryForTests(): void;
|
|
15
|
+
//# sourceMappingURL=ModelRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/utils/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC;;GAEG;AACH,eAAO,MAAM,oBAAoB;yBACV,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;uBAI1B,CAAC,SAAS,QAAQ,oBAC5B,YAAY,CAAC,CAAC,CAAC,GACrB,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;6BAIA,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO;2BAI7B,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;oBAI/B,YAAY,CAAC,GAAG,CAAC,EAAE;aAI1B,IAAI;CAGd,CAAC;AAIF,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AmbitenModelRegistry = void 0;
|
|
4
|
+
exports.clearModelRegistryForTests = clearModelRegistryForTests;
|
|
5
|
+
const modelRegistry = new Set();
|
|
6
|
+
/**
|
|
7
|
+
* AmbitenModelRegistry manages registered Ambiten model instances.
|
|
8
|
+
*/
|
|
9
|
+
exports.AmbitenModelRegistry = {
|
|
10
|
+
registerModel(model) {
|
|
11
|
+
modelRegistry.add(model);
|
|
12
|
+
},
|
|
13
|
+
getRegisteredModel(model) {
|
|
14
|
+
return modelRegistry.has(model) ? model : null;
|
|
15
|
+
},
|
|
16
|
+
isModelRegistered(model) {
|
|
17
|
+
return modelRegistry.has(model);
|
|
18
|
+
},
|
|
19
|
+
unregisterModel(model) {
|
|
20
|
+
modelRegistry.delete(model);
|
|
21
|
+
},
|
|
22
|
+
getAllModels() {
|
|
23
|
+
return [...modelRegistry];
|
|
24
|
+
},
|
|
25
|
+
clear() {
|
|
26
|
+
modelRegistry.clear();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const registeredModels = [];
|
|
30
|
+
function clearModelRegistryForTests() {
|
|
31
|
+
for (const model of registeredModels) {
|
|
32
|
+
exports.AmbitenModelRegistry.unregisterModel(model);
|
|
33
|
+
}
|
|
34
|
+
registeredModels.length = 0;
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,SAgBzB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.showBanner = showBanner;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const figlet_1 = tslib_1.__importDefault(require("figlet"));
|
|
6
|
+
const color_palatte_1 = require("./color-palatte");
|
|
7
|
+
function showBanner() {
|
|
8
|
+
try {
|
|
9
|
+
const banner = figlet_1.default.textSync('Ambiten CLI', {
|
|
10
|
+
font: 'Standard',
|
|
11
|
+
horizontalLayout: 'default',
|
|
12
|
+
verticalLayout: 'default',
|
|
13
|
+
});
|
|
14
|
+
console.log((0, color_palatte_1.colorize)(banner, 'blue'));
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
console.warn((0, color_palatte_1.colorize)('Figlet font not found or failed to load. Displaying fallback banner.', 'yellow'), error);
|
|
18
|
+
console.log((0, color_palatte_1.colorize)('=== Ambiten Core CLI ===', 'blue'));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AmbitenModel } from "../../lib-core";
|
|
2
|
+
import { AmbitenModelOptions, Document } from "../../types";
|
|
3
|
+
/**
|
|
4
|
+
* Parameters for creating a new model.
|
|
5
|
+
* @template T - The type of the document in the collection.
|
|
6
|
+
*/
|
|
7
|
+
type CreateModelParams<T extends Document = any> = AmbitenModelOptions<T>;
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new model for a MongoDB collection.
|
|
10
|
+
* In Multi-Tenancy mode, the model will be created for the specified tenant.
|
|
11
|
+
* If no tenant ID is provided, the model will be created for the default tenant.
|
|
12
|
+
* Note: Once a the applyMultiTenancy() middleware is applied to a connection to register tenant/s, the tenantId will be automatically set for all models created after that.
|
|
13
|
+
* This allows you to create models for different tenants without having to specify the tenantId each time. Then a tenantId or db instance or client instance is required to create a model.
|
|
14
|
+
* @template T - The type of the document in the collection.
|
|
15
|
+
* @param {CreateModelParams<T>} params - The parameters for creating the model.
|
|
16
|
+
* @returns {AmbitenModel<T>} The created model.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const userSchema = createSchema({
|
|
20
|
+
* name: { type: String, required: true },
|
|
21
|
+
* age: { type: Number, required: true },
|
|
22
|
+
* email: { type: String, required: true },
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* const userModel = Model({
|
|
26
|
+
* name: 'users',
|
|
27
|
+
* schema: userSchema,
|
|
28
|
+
* provider: (client/db - whichever you naming is)/new MyCustomDbProvider(), // Your custom database provider instance
|
|
29
|
+
* ctx: {
|
|
30
|
+
* tenantId: 'tenant-a', // Optional: specify tenant ID if using multi-tenancy
|
|
31
|
+
* dbName: 'myDatabase', // Optional: specify database name if needed
|
|
32
|
+
* } read docs for more details on what context options you can provide
|
|
33
|
+
* });
|
|
34
|
+
*/
|
|
35
|
+
export declare const Model: <T extends Document = any>(options: CreateModelParams<T>) => AmbitenModel<T>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=createModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createModel.d.ts","sourceRoot":"","sources":["../../../src/utils/builders/createModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5D;;;GAGG;AACH,KAAK,iBAAiB,CAAC,CAAC,SAAS,QAAQ,GAAG,GAAG,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,QAAQ,GAAG,GAAG,EAC5C,SAAS,iBAAiB,CAAC,CAAC,CAAC,KAC5B,YAAY,CAAC,CAAC,CAKhB,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Model = void 0;
|
|
4
|
+
const lib_core_1 = require("../../lib-core");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a new model for a MongoDB collection.
|
|
7
|
+
* In Multi-Tenancy mode, the model will be created for the specified tenant.
|
|
8
|
+
* If no tenant ID is provided, the model will be created for the default tenant.
|
|
9
|
+
* Note: Once a the applyMultiTenancy() middleware is applied to a connection to register tenant/s, the tenantId will be automatically set for all models created after that.
|
|
10
|
+
* This allows you to create models for different tenants without having to specify the tenantId each time. Then a tenantId or db instance or client instance is required to create a model.
|
|
11
|
+
* @template T - The type of the document in the collection.
|
|
12
|
+
* @param {CreateModelParams<T>} params - The parameters for creating the model.
|
|
13
|
+
* @returns {AmbitenModel<T>} The created model.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const userSchema = createSchema({
|
|
17
|
+
* name: { type: String, required: true },
|
|
18
|
+
* age: { type: Number, required: true },
|
|
19
|
+
* email: { type: String, required: true },
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const userModel = Model({
|
|
23
|
+
* name: 'users',
|
|
24
|
+
* schema: userSchema,
|
|
25
|
+
* provider: (client/db - whichever you naming is)/new MyCustomDbProvider(), // Your custom database provider instance
|
|
26
|
+
* ctx: {
|
|
27
|
+
* tenantId: 'tenant-a', // Optional: specify tenant ID if using multi-tenancy
|
|
28
|
+
* dbName: 'myDatabase', // Optional: specify database name if needed
|
|
29
|
+
* } read docs for more details on what context options you can provide
|
|
30
|
+
* });
|
|
31
|
+
*/
|
|
32
|
+
const Model = (options) => {
|
|
33
|
+
return new lib_core_1.AmbitenModel({
|
|
34
|
+
...options,
|
|
35
|
+
provider: options.provider ?? lib_core_1.AmbitenClient.init()
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
exports.Model = Model;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Db } from 'mongodb';
|
|
2
|
+
/**
|
|
3
|
+
* Retrieves the database instance for a specific tenant.
|
|
4
|
+
* If the database is already cached, it returns the cached instance.
|
|
5
|
+
* Otherwise, it initializes a new database connection for the tenant, caches it, and returns it.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} tenantId - The ID of the tenant whose database is to be retrieved.
|
|
8
|
+
* @returns {Promise<Db>} A promise that resolves to the MongoDB database instance for the tenant.
|
|
9
|
+
* @throws {Error} If the database for the specified tenant is not found.
|
|
10
|
+
*/
|
|
11
|
+
export declare const getTenantDB: (tenantId: string) => Promise<Db>;
|
|
12
|
+
//# sourceMappingURL=getTenantDb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTenantDb.d.ts","sourceRoot":"","sources":["../../../src/utils/builders/getTenantDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAK7B;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,EAAE,CAS9D,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTenantDB = void 0;
|
|
4
|
+
const lib_core_1 = require("../../lib-core");
|
|
5
|
+
const dbCache = new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Retrieves the database instance for a specific tenant.
|
|
8
|
+
* If the database is already cached, it returns the cached instance.
|
|
9
|
+
* Otherwise, it initializes a new database connection for the tenant, caches it, and returns it.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} tenantId - The ID of the tenant whose database is to be retrieved.
|
|
12
|
+
* @returns {Promise<Db>} A promise that resolves to the MongoDB database instance for the tenant.
|
|
13
|
+
* @throws {Error} If the database for the specified tenant is not found.
|
|
14
|
+
*/
|
|
15
|
+
const getTenantDB = async (tenantId) => {
|
|
16
|
+
if (dbCache.has(tenantId)) {
|
|
17
|
+
return dbCache.get(tenantId);
|
|
18
|
+
}
|
|
19
|
+
const db = lib_core_1.AmbitenClient.init().withDatabase(tenantId);
|
|
20
|
+
if (!db)
|
|
21
|
+
throw new Error(`Database not found for tenant: ${tenantId}`);
|
|
22
|
+
dbCache.set(tenantId, await db.db());
|
|
23
|
+
return await db.db();
|
|
24
|
+
};
|
|
25
|
+
exports.getTenantDB = getTenantDB;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./createModel"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./schema"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./getTenantDb"), exports);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AmbitenSchema } from "../../lib-core";
|
|
2
|
+
import { Document, SchemaDefinition } from "../../types";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a new AmbitenSchema instance with the provided schema definition.
|
|
5
|
+
* @param {SchemaDefinition<T> | Record<keyof T, any>} schema - The schema definition for the document.
|
|
6
|
+
* @returns {AmbitenSchema<T>} The created AmbitenSchema instance.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of the document.
|
|
9
|
+
* @example
|
|
10
|
+
* const userSchema = createSchema({
|
|
11
|
+
* name: { type: String, required: true },
|
|
12
|
+
* age: { type: Number, required: true },
|
|
13
|
+
* email: { type: String, required: true },
|
|
14
|
+
* });
|
|
15
|
+
* const userModel = new AmbitenModel(userSchema, 'users', db);
|
|
16
|
+
*
|
|
17
|
+
* const user = await userModel.create({ name: 'John Doe', age: 30, email: 'example.com' });
|
|
18
|
+
* console.log(user); // { _id: '...', name: 'John Doe', age: 30, email: 'example.com' }
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export declare const createSchema: <T extends Document>(schema: SchemaDefinition<T> | Record<keyof T, any>) => AmbitenSchema<T>;
|
|
22
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/builders/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAC9C,QAAQ,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAChD,aAAa,CAAC,CAAC,CAEjB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSchema = void 0;
|
|
4
|
+
const lib_core_1 = require("../../lib-core");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a new AmbitenSchema instance with the provided schema definition.
|
|
7
|
+
* @param {SchemaDefinition<T> | Record<keyof T, any>} schema - The schema definition for the document.
|
|
8
|
+
* @returns {AmbitenSchema<T>} The created AmbitenSchema instance.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of the document.
|
|
11
|
+
* @example
|
|
12
|
+
* const userSchema = createSchema({
|
|
13
|
+
* name: { type: String, required: true },
|
|
14
|
+
* age: { type: Number, required: true },
|
|
15
|
+
* email: { type: String, required: true },
|
|
16
|
+
* });
|
|
17
|
+
* const userModel = new AmbitenModel(userSchema, 'users', db);
|
|
18
|
+
*
|
|
19
|
+
* const user = await userModel.create({ name: 'John Doe', age: 30, email: 'example.com' });
|
|
20
|
+
* console.log(user); // { _id: '...', name: 'John Doe', age: 30, email: 'example.com' }
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
const createSchema = (schema) => {
|
|
24
|
+
return new lib_core_1.AmbitenSchema(schema);
|
|
25
|
+
};
|
|
26
|
+
exports.createSchema = createSchema;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { redis } from '../redis-manager';
|
|
2
|
+
/**
|
|
3
|
+
* Options for caching behavior.
|
|
4
|
+
*/
|
|
5
|
+
interface AmbitenCacheOptions {
|
|
6
|
+
ttlSeconds?: number;
|
|
7
|
+
prefix?: string;
|
|
8
|
+
tenantId?: string;
|
|
9
|
+
namespace?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Caches a value in Redis with optional tenant and namespace scoping.
|
|
13
|
+
* If the value is not found in cache, it runs the provided fetcher function
|
|
14
|
+
* to get the value, caches it, and then returns it.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} key - The cache key to use.
|
|
17
|
+
* @param {() => Promise<T>} fetcher - A function that fetches the value if not cached.
|
|
18
|
+
* @param {AmbitenCacheOptions} options - Options for caching behavior.
|
|
19
|
+
* @returns {Promise<T>} - The cached or fetched value.
|
|
20
|
+
* @example
|
|
21
|
+
* const value = await cacheWithRedis(redisClient, 'myKey', async () => {
|
|
22
|
+
* // Fetch from database or external API
|
|
23
|
+
* return await fetchDataFromSource();
|
|
24
|
+
*/
|
|
25
|
+
export declare function cacheWithRedis<T>(client: typeof redis, key: string, fetcher: () => Promise<T>, options?: AmbitenCacheOptions): Promise<T>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=cacheWithRedis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheWithRedis.d.ts","sourceRoot":"","sources":["../../src/utils/cacheWithRedis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,MAAM,EAAE,OAAO,KAAK,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,CAAC,CAAC,CAGZ"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cacheWithRedis = cacheWithRedis;
|
|
4
|
+
const ambiten_cache_1 = require("../ambiten-cache");
|
|
5
|
+
/**
|
|
6
|
+
* Caches a value in Redis with optional tenant and namespace scoping.
|
|
7
|
+
* If the value is not found in cache, it runs the provided fetcher function
|
|
8
|
+
* to get the value, caches it, and then returns it.
|
|
9
|
+
*
|
|
10
|
+
* @param {string} key - The cache key to use.
|
|
11
|
+
* @param {() => Promise<T>} fetcher - A function that fetches the value if not cached.
|
|
12
|
+
* @param {AmbitenCacheOptions} options - Options for caching behavior.
|
|
13
|
+
* @returns {Promise<T>} - The cached or fetched value.
|
|
14
|
+
* @example
|
|
15
|
+
* const value = await cacheWithRedis(redisClient, 'myKey', async () => {
|
|
16
|
+
* // Fetch from database or external API
|
|
17
|
+
* return await fetchDataFromSource();
|
|
18
|
+
*/
|
|
19
|
+
async function cacheWithRedis(client, key, fetcher, options = {}) {
|
|
20
|
+
const cache = new ambiten_cache_1.AmbitenCache(client);
|
|
21
|
+
return await cache.wrap(key, fetcher, options);
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"castId.d.ts","sourceRoot":"","sources":["../../src/utils/castId.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAkBlC,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,KAAG,OAE5C,CAAA;AAQD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,IAAI,QAAQ,CAMvD;AAGD,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAenD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidObjectId = void 0;
|
|
4
|
+
exports.isObjectId = isObjectId;
|
|
5
|
+
exports.castId = castId;
|
|
6
|
+
const symbols_1 = require("./symbols");
|
|
7
|
+
const mongodb_1 = require("mongodb");
|
|
8
|
+
Object.defineProperty(mongodb_1.ObjectId.prototype, "_id", {
|
|
9
|
+
configurable: true,
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return this.toHexString();
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
if (!Object.prototype.hasOwnProperty.call(mongodb_1.ObjectId.prototype, 'valueOf')) {
|
|
16
|
+
mongodb_1.ObjectId.prototype.valueOf = function objectIdValueOf() {
|
|
17
|
+
return this.toString();
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const isValidObjectId = (id) => {
|
|
21
|
+
return /^[0-9a-fA-F]{24}$/.test(id);
|
|
22
|
+
};
|
|
23
|
+
exports.isValidObjectId = isValidObjectId;
|
|
24
|
+
mongodb_1.ObjectId.prototype.toJSON = function objectIdToJSON() {
|
|
25
|
+
return this.toHexString();
|
|
26
|
+
};
|
|
27
|
+
mongodb_1.ObjectId.prototype[symbols_1.objectIdSymbol] = true;
|
|
28
|
+
function isObjectId(id) {
|
|
29
|
+
if (id == null)
|
|
30
|
+
return false;
|
|
31
|
+
if (typeof id !== "object")
|
|
32
|
+
return false;
|
|
33
|
+
if (id.constructor !== mongodb_1.ObjectId)
|
|
34
|
+
return false;
|
|
35
|
+
if (id[symbols_1.objectIdSymbol] !== true)
|
|
36
|
+
return false;
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
// Casts a string to an ObjectId
|
|
40
|
+
function castId(inputId) {
|
|
41
|
+
if (typeof inputId === "string") {
|
|
42
|
+
const _id = inputId;
|
|
43
|
+
if (!(0, exports.isValidObjectId)(_id)) {
|
|
44
|
+
throw new Error("Invalid ObjectId format in castId");
|
|
45
|
+
}
|
|
46
|
+
if (!isObjectId(inputId)) {
|
|
47
|
+
throw new Error("Invalid ObjectId in castId");
|
|
48
|
+
}
|
|
49
|
+
return mongodb_1.ObjectId.createFromHexString(_id);
|
|
50
|
+
}
|
|
51
|
+
return inputId;
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-palatte.d.ts","sourceRoot":"","sources":["../../src/utils/color-palatte.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAGzE,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,UAAU,QAAQ,WAmBxD,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.colorize = void 0;
|
|
4
|
+
;
|
|
5
|
+
const colorize = (text, platform) => {
|
|
6
|
+
switch (platform) {
|
|
7
|
+
case 'red':
|
|
8
|
+
return `\x1b[31m${text}\x1b[0m`; // Red color
|
|
9
|
+
case 'green':
|
|
10
|
+
return `\x1b[32m${text}\x1b[0m`; // Green color
|
|
11
|
+
case 'magenta':
|
|
12
|
+
return `\x1b[35m${text}\x1b[0m`; // Magenta color
|
|
13
|
+
case 'cyan':
|
|
14
|
+
return `\x1b[36m${text}\x1b[0m`; // Cyan color
|
|
15
|
+
case 'yellow':
|
|
16
|
+
return `\x1b[33m${text}\x1b[0m`; // Yellow color
|
|
17
|
+
case 'blue':
|
|
18
|
+
return `\x1b[34m${text}\x1b[0m`; // Blue color
|
|
19
|
+
default:
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
return `\x1b[36m${text}\x1b[0m`;
|
|
23
|
+
};
|
|
24
|
+
exports.colorize = colorize;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BootstrapClient } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Configures the Ambiten runtime context with a transaction client resolver.
|
|
4
|
+
*
|
|
5
|
+
* The resolver is used by {@link AmbitenContext.withTransaction} to obtain the
|
|
6
|
+
* correct MongoDB client for the current runtime scope. Tenant-specific clients
|
|
7
|
+
* are resolved first when a tenant identifier is available; otherwise the
|
|
8
|
+
* configured provider client factory is used.
|
|
9
|
+
*
|
|
10
|
+
* @param provider - Bootstrap client/provider used to resolve MongoDB clients.
|
|
11
|
+
*/
|
|
12
|
+
export declare function configureAmbitenContext(provider: BootstrapClient): void;
|
|
13
|
+
//# sourceMappingURL=configureAmbitenContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureAmbitenContext.d.ts","sourceRoot":"","sources":["../../src/utils/configureAmbitenContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAsBvE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureAmbitenContext = configureAmbitenContext;
|
|
4
|
+
const context_1 = require("../context");
|
|
5
|
+
const tanancy_1 = require("../tanancy");
|
|
6
|
+
/**
|
|
7
|
+
* Configures the Ambiten runtime context with a transaction client resolver.
|
|
8
|
+
*
|
|
9
|
+
* The resolver is used by {@link AmbitenContext.withTransaction} to obtain the
|
|
10
|
+
* correct MongoDB client for the current runtime scope. Tenant-specific clients
|
|
11
|
+
* are resolved first when a tenant identifier is available; otherwise the
|
|
12
|
+
* configured provider client factory is used.
|
|
13
|
+
*
|
|
14
|
+
* @param provider - Bootstrap client/provider used to resolve MongoDB clients.
|
|
15
|
+
*/
|
|
16
|
+
function configureAmbitenContext(provider) {
|
|
17
|
+
context_1.AmbitenContext.configureTransactionResolver({
|
|
18
|
+
resolveClient: async (tenantId, dbName) => {
|
|
19
|
+
if (tenantId) {
|
|
20
|
+
const tenantClient = await tanancy_1.MultiTenantManager.getClient(tenantId);
|
|
21
|
+
if (tenantClient) {
|
|
22
|
+
return tenantClient;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (typeof provider.client === 'function') {
|
|
26
|
+
const ctx = {
|
|
27
|
+
tenantId,
|
|
28
|
+
dbName
|
|
29
|
+
};
|
|
30
|
+
return provider.client(ctx);
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type PackageManager = 'pnpm' | 'npm' | 'yarn';
|
|
2
|
+
export declare function detectPackageManager(cwd?: string): PackageManager;
|
|
3
|
+
export declare function getInstallCommand(manager: PackageManager, packages: string[]): string[];
|
|
4
|
+
export declare function installPackages(packages?: string[], cwd?: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=detect-package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/detect-package-manager.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAErD,wBAAgB,oBAAoB,CAAC,GAAG,SAAgB,GAAG,cAAc,CAYxE;AAED,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAAE,GAChB,MAAM,EAAE,CAUV;AAED,wBAAsB,eAAe,CACnC,QAAQ,GAAE,MAAM,EAAO,EACvB,GAAG,SAAgB,GAClB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectPackageManager = detectPackageManager;
|
|
4
|
+
exports.getInstallCommand = getInstallCommand;
|
|
5
|
+
exports.installPackages = installPackages;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
8
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
function detectPackageManager(cwd = process.cwd()) {
|
|
11
|
+
if (fs_1.default.existsSync(path_1.default.join(cwd, 'pnpm-lock.yaml')))
|
|
12
|
+
return 'pnpm';
|
|
13
|
+
if (fs_1.default.existsSync(path_1.default.join(cwd, 'yarn.lock')))
|
|
14
|
+
return 'yarn';
|
|
15
|
+
if (fs_1.default.existsSync(path_1.default.join(cwd, 'package-lock.json')))
|
|
16
|
+
return 'npm';
|
|
17
|
+
const userAgent = process.env.npm_config_user_agent ?? '';
|
|
18
|
+
if (userAgent.includes('pnpm'))
|
|
19
|
+
return 'pnpm';
|
|
20
|
+
if (userAgent.includes('yarn'))
|
|
21
|
+
return 'yarn';
|
|
22
|
+
if (userAgent.includes('npm'))
|
|
23
|
+
return 'npm';
|
|
24
|
+
return 'npm';
|
|
25
|
+
}
|
|
26
|
+
function getInstallCommand(manager, packages) {
|
|
27
|
+
switch (manager) {
|
|
28
|
+
case 'pnpm':
|
|
29
|
+
return ['pnpm', ['add', ...packages].join(' ')];
|
|
30
|
+
case 'yarn':
|
|
31
|
+
return ['yarn', ['add', ...packages].join(' ')];
|
|
32
|
+
case 'npm':
|
|
33
|
+
default:
|
|
34
|
+
return ['npm', ['install', ...packages].join(' ')];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function installPackages(packages = [], cwd = process.cwd()) {
|
|
38
|
+
const manager = detectPackageManager(cwd);
|
|
39
|
+
const args = packages.length === 0
|
|
40
|
+
? ['install']
|
|
41
|
+
: manager === 'npm'
|
|
42
|
+
? ['install', ...packages]
|
|
43
|
+
: ['add', ...packages];
|
|
44
|
+
await new Promise((resolve, reject) => {
|
|
45
|
+
const child = (0, child_process_1.spawn)(manager, args, {
|
|
46
|
+
cwd,
|
|
47
|
+
stdio: 'inherit',
|
|
48
|
+
shell: process.platform === 'win32',
|
|
49
|
+
});
|
|
50
|
+
child.on('error', reject);
|
|
51
|
+
child.on('close', (code) => {
|
|
52
|
+
if (code === 0) {
|
|
53
|
+
resolve();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
reject(new Error(`${manager} ${args.join(' ')} failed with exit code ${code}`));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensures that the provided model name is a valid, non-empty string.
|
|
3
|
+
* Throws an error if the model name is invalid.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} collectionName - The collection name to validate.
|
|
6
|
+
* @returns {string} - The validated model name.
|
|
7
|
+
* @throws {Error} - If the model name is invalid.
|
|
8
|
+
* @example
|
|
9
|
+
* const safeModelName = ensureModelNameSafe('MyModel123');
|
|
10
|
+
*/
|
|
11
|
+
export declare function ensureModelNameSafe(collectionName: string): string;
|
|
12
|
+
//# sourceMappingURL=ensureModelNameSafe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureModelNameSafe.d.ts","sourceRoot":"","sources":["../../src/utils/ensureModelNameSafe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAiBlE"}
|