beddel 0.2.1 → 0.2.3
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/CHANGELOG.md +20 -0
- package/README.md +132 -21
- package/dist/agents/chat/chat.handler.d.ts +12 -0
- package/dist/agents/chat/chat.handler.d.ts.map +1 -0
- package/dist/agents/chat/chat.handler.js +143 -0
- package/dist/agents/chat/chat.handler.js.map +1 -0
- package/dist/agents/chat/chat.schema.d.ts +38 -0
- package/dist/agents/chat/chat.schema.d.ts.map +1 -0
- package/dist/agents/chat/chat.schema.js +31 -0
- package/dist/agents/chat/chat.schema.js.map +1 -0
- package/dist/agents/chat/chat.types.d.ts +42 -0
- package/dist/agents/chat/chat.types.d.ts.map +1 -0
- package/dist/agents/chat/chat.types.js +6 -0
- package/dist/agents/chat/chat.types.js.map +1 -0
- package/dist/agents/chat/chat.yaml +150 -0
- package/dist/agents/chat/index.d.ts +16 -0
- package/dist/agents/chat/index.d.ts.map +1 -0
- package/dist/agents/chat/index.js +21 -0
- package/dist/agents/chat/index.js.map +1 -0
- package/dist/agents/chromadb/chromadb.handler.d.ts +12 -0
- package/dist/agents/chromadb/chromadb.handler.d.ts.map +1 -0
- package/dist/agents/chromadb/chromadb.handler.js +139 -0
- package/dist/agents/chromadb/chromadb.handler.js.map +1 -0
- package/dist/agents/chromadb/chromadb.schema.d.ts +36 -0
- package/dist/agents/chromadb/chromadb.schema.d.ts.map +1 -0
- package/dist/agents/chromadb/chromadb.schema.js +33 -0
- package/dist/agents/chromadb/chromadb.schema.js.map +1 -0
- package/dist/agents/chromadb/chromadb.types.d.ts +49 -0
- package/dist/agents/chromadb/chromadb.types.d.ts.map +1 -0
- package/dist/agents/chromadb/chromadb.types.js +6 -0
- package/dist/agents/chromadb/chromadb.types.js.map +1 -0
- package/dist/agents/chromadb/chromadb.yaml +128 -0
- package/dist/agents/chromadb/index.d.ts +15 -0
- package/dist/agents/chromadb/index.d.ts.map +1 -0
- package/dist/agents/chromadb/index.js +20 -0
- package/dist/agents/chromadb/index.js.map +1 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.handler.d.ts +8 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.handler.d.ts.map +1 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.handler.js +58 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.handler.js.map +1 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.schema.d.ts +22 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.schema.d.ts.map +1 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.schema.js +20 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.schema.js.map +1 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.types.d.ts +32 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.types.d.ts.map +1 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.types.js +6 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.types.js.map +1 -0
- package/dist/agents/gemini-vectorize/gemini-vectorize.yaml +84 -0
- package/dist/agents/gemini-vectorize/index.d.ts +15 -0
- package/dist/agents/gemini-vectorize/index.d.ts.map +1 -0
- package/dist/agents/gemini-vectorize/index.js +20 -0
- package/dist/agents/gemini-vectorize/index.js.map +1 -0
- package/dist/agents/gitmcp/gitmcp.handler.d.ts +12 -0
- package/dist/agents/gitmcp/gitmcp.handler.d.ts.map +1 -0
- package/dist/agents/gitmcp/gitmcp.handler.js +95 -0
- package/dist/agents/gitmcp/gitmcp.handler.js.map +1 -0
- package/dist/agents/gitmcp/gitmcp.schema.d.ts +17 -0
- package/dist/agents/gitmcp/gitmcp.schema.d.ts.map +1 -0
- package/dist/agents/gitmcp/gitmcp.schema.js +18 -0
- package/dist/agents/gitmcp/gitmcp.schema.js.map +1 -0
- package/dist/agents/gitmcp/gitmcp.types.d.ts +31 -0
- package/dist/agents/gitmcp/gitmcp.types.d.ts.map +1 -0
- package/dist/agents/gitmcp/gitmcp.types.js +6 -0
- package/dist/agents/gitmcp/gitmcp.types.js.map +1 -0
- package/dist/agents/gitmcp/gitmcp.yaml +71 -0
- package/dist/agents/gitmcp/index.d.ts +16 -0
- package/dist/agents/gitmcp/index.d.ts.map +1 -0
- package/dist/agents/gitmcp/index.js +21 -0
- package/dist/agents/gitmcp/index.js.map +1 -0
- package/dist/agents/image/image.handler.d.ts +8 -0
- package/dist/agents/image/image.handler.d.ts.map +1 -0
- package/dist/agents/image/image.handler.js +66 -0
- package/dist/agents/image/image.handler.js.map +1 -0
- package/dist/agents/image/image.schema.d.ts +29 -0
- package/dist/agents/image/image.schema.d.ts.map +1 -0
- package/dist/agents/image/image.schema.js +26 -0
- package/dist/agents/image/image.schema.js.map +1 -0
- package/dist/agents/image/image.types.d.ts +42 -0
- package/dist/agents/image/image.types.d.ts.map +1 -0
- package/dist/agents/image/image.types.js +6 -0
- package/dist/agents/image/image.types.js.map +1 -0
- package/{src/agents/image-agent.yaml → dist/agents/image/image.yaml} +21 -21
- package/dist/agents/image/index.d.ts +14 -0
- package/dist/agents/image/index.d.ts.map +1 -0
- package/dist/agents/image/index.js +19 -0
- package/dist/agents/image/index.js.map +1 -0
- package/dist/agents/index.d.ts +95 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +76 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/joker/index.d.ts +14 -0
- package/dist/agents/joker/index.d.ts.map +1 -0
- package/dist/agents/joker/index.js +19 -0
- package/dist/agents/joker/index.js.map +1 -0
- package/dist/agents/joker/joker.handler.d.ts +8 -0
- package/dist/agents/joker/joker.handler.d.ts.map +1 -0
- package/dist/agents/joker/joker.handler.js +48 -0
- package/dist/agents/joker/joker.handler.js.map +1 -0
- package/dist/agents/joker/joker.schema.d.ts +12 -0
- package/dist/agents/joker/joker.schema.d.ts.map +1 -0
- package/dist/agents/joker/joker.schema.js +13 -0
- package/dist/agents/joker/joker.schema.js.map +1 -0
- package/dist/agents/joker/joker.types.d.ts +35 -0
- package/dist/agents/joker/joker.types.d.ts.map +1 -0
- package/dist/agents/joker/joker.types.js +6 -0
- package/dist/agents/joker/joker.types.js.map +1 -0
- package/{src/agents/joker-agent.yaml → dist/agents/joker/joker.yaml} +4 -4
- package/dist/agents/mcp-tool/index.d.ts +14 -0
- package/dist/agents/mcp-tool/index.d.ts.map +1 -0
- package/dist/agents/mcp-tool/index.js +19 -0
- package/dist/agents/mcp-tool/index.js.map +1 -0
- package/dist/agents/mcp-tool/mcp-tool.handler.d.ts +12 -0
- package/dist/agents/mcp-tool/mcp-tool.handler.d.ts.map +1 -0
- package/dist/agents/mcp-tool/mcp-tool.handler.js +116 -0
- package/dist/agents/mcp-tool/mcp-tool.handler.js.map +1 -0
- package/dist/agents/mcp-tool/mcp-tool.schema.d.ts +19 -0
- package/dist/agents/mcp-tool/mcp-tool.schema.d.ts.map +1 -0
- package/dist/agents/mcp-tool/mcp-tool.schema.js +20 -0
- package/dist/agents/mcp-tool/mcp-tool.schema.js.map +1 -0
- package/dist/agents/mcp-tool/mcp-tool.types.d.ts +31 -0
- package/dist/agents/mcp-tool/mcp-tool.types.d.ts.map +1 -0
- package/dist/agents/mcp-tool/mcp-tool.types.js +6 -0
- package/dist/agents/mcp-tool/mcp-tool.types.js.map +1 -0
- package/dist/agents/mcp-tool/mcp-tool.yaml +71 -0
- package/dist/agents/rag/index.d.ts +15 -0
- package/dist/agents/rag/index.d.ts.map +1 -0
- package/dist/agents/rag/index.js +20 -0
- package/dist/agents/rag/index.js.map +1 -0
- package/dist/agents/rag/rag.handler.d.ts +8 -0
- package/dist/agents/rag/rag.handler.d.ts.map +1 -0
- package/dist/agents/rag/rag.handler.js +101 -0
- package/dist/agents/rag/rag.handler.js.map +1 -0
- package/dist/agents/rag/rag.schema.d.ts +27 -0
- package/dist/agents/rag/rag.schema.d.ts.map +1 -0
- package/dist/agents/rag/rag.schema.js +24 -0
- package/dist/agents/rag/rag.schema.js.map +1 -0
- package/dist/agents/rag/rag.types.d.ts +47 -0
- package/dist/agents/rag/rag.types.d.ts.map +1 -0
- package/dist/agents/rag/rag.types.js +6 -0
- package/dist/agents/rag/rag.types.js.map +1 -0
- package/dist/agents/rag/rag.yaml +89 -0
- package/dist/agents/{agentRegistry.d.ts → registry/agentRegistry.d.ts} +25 -1
- package/dist/agents/registry/agentRegistry.d.ts.map +1 -0
- package/dist/agents/{agentRegistry.js → registry/agentRegistry.js} +154 -4
- package/dist/agents/registry/agentRegistry.js.map +1 -0
- package/dist/agents/registry/index.d.ts +6 -0
- package/dist/agents/registry/index.d.ts.map +1 -0
- package/dist/agents/registry/index.js +10 -0
- package/dist/agents/registry/index.js.map +1 -0
- package/dist/agents/translator/index.d.ts +14 -0
- package/dist/agents/translator/index.d.ts.map +1 -0
- package/dist/agents/translator/index.js +19 -0
- package/dist/agents/translator/index.js.map +1 -0
- package/dist/agents/translator/translator.handler.d.ts +8 -0
- package/dist/agents/translator/translator.handler.d.ts.map +1 -0
- package/dist/agents/translator/translator.handler.js +83 -0
- package/dist/agents/translator/translator.handler.js.map +1 -0
- package/dist/agents/translator/translator.schema.d.ts +27 -0
- package/dist/agents/translator/translator.schema.d.ts.map +1 -0
- package/dist/agents/translator/translator.schema.js +28 -0
- package/dist/agents/translator/translator.schema.js.map +1 -0
- package/dist/agents/translator/translator.types.d.ts +40 -0
- package/dist/agents/translator/translator.types.d.ts.map +1 -0
- package/dist/agents/translator/translator.types.js +6 -0
- package/dist/agents/translator/translator.types.js.map +1 -0
- package/{src/agents/translator-agent.yaml → dist/agents/translator/translator.yaml} +27 -27
- package/dist/client/index.d.ts +89 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +93 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +17 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +7 -0
- package/dist/client/types.js.map +1 -0
- package/dist/firebase/tenantManager.d.ts +34 -2
- package/dist/firebase/tenantManager.d.ts.map +1 -1
- package/dist/firebase/tenantManager.js +67 -1
- package/dist/firebase/tenantManager.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -7
- package/dist/index.js.map +1 -1
- package/dist/runtime/declarativeAgentRuntime.d.ts +14 -49
- package/dist/runtime/declarativeAgentRuntime.d.ts.map +1 -1
- package/dist/runtime/declarativeAgentRuntime.js +248 -355
- package/dist/runtime/declarativeAgentRuntime.js.map +1 -1
- package/dist/runtime/index.d.ts +12 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +33 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/workflowExecutor.d.ts +30 -0
- package/dist/runtime/workflowExecutor.d.ts.map +1 -0
- package/dist/runtime/workflowExecutor.js +70 -0
- package/dist/runtime/workflowExecutor.js.map +1 -0
- package/dist/server/api/graphql.d.ts +1 -1
- package/dist/server/api/graphql.d.ts.map +1 -1
- package/dist/server/api/graphql.js +104 -62
- package/dist/server/api/graphql.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/shared/index.d.ts +7 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +23 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/types/agent.types.d.ts +50 -0
- package/dist/shared/types/agent.types.d.ts.map +1 -0
- package/dist/shared/types/agent.types.js +7 -0
- package/dist/shared/types/agent.types.js.map +1 -0
- package/dist/shared/types/execution.types.d.ts +42 -0
- package/dist/shared/types/execution.types.d.ts.map +1 -0
- package/dist/shared/types/execution.types.js +7 -0
- package/dist/shared/types/execution.types.js.map +1 -0
- package/dist/shared/types/index.d.ts +7 -0
- package/dist/shared/types/index.d.ts.map +1 -0
- package/dist/shared/types/index.js +23 -0
- package/dist/shared/types/index.js.map +1 -0
- package/dist/shared/types/schema.types.d.ts +52 -0
- package/dist/shared/types/schema.types.d.ts.map +1 -0
- package/dist/shared/types/schema.types.js +7 -0
- package/dist/shared/types/schema.types.js.map +1 -0
- package/dist/shared/utils/index.d.ts +5 -0
- package/dist/shared/utils/index.d.ts.map +1 -0
- package/dist/shared/utils/index.js +21 -0
- package/dist/shared/utils/index.js.map +1 -0
- package/dist/shared/utils/validation.d.ts +42 -0
- package/dist/shared/utils/validation.d.ts.map +1 -0
- package/dist/shared/utils/validation.js +93 -0
- package/dist/shared/utils/validation.js.map +1 -0
- package/dist/tenant/TenantManager.d.ts +152 -0
- package/dist/tenant/TenantManager.d.ts.map +1 -0
- package/dist/tenant/TenantManager.js +392 -0
- package/dist/tenant/TenantManager.js.map +1 -0
- package/dist/tenant/index.d.ts +47 -0
- package/dist/tenant/index.d.ts.map +1 -0
- package/dist/tenant/index.js +74 -0
- package/dist/tenant/index.js.map +1 -0
- package/dist/tenant/interfaces.d.ts +170 -0
- package/dist/tenant/interfaces.d.ts.map +1 -0
- package/dist/tenant/interfaces.js +67 -0
- package/dist/tenant/interfaces.js.map +1 -0
- package/dist/tenant/providerFactory.d.ts +43 -0
- package/dist/tenant/providerFactory.d.ts.map +1 -0
- package/dist/tenant/providerFactory.js +70 -0
- package/dist/tenant/providerFactory.js.map +1 -0
- package/dist/tenant/providerRegistry.d.ts +47 -0
- package/dist/tenant/providerRegistry.d.ts.map +1 -0
- package/dist/tenant/providerRegistry.js +79 -0
- package/dist/tenant/providerRegistry.js.map +1 -0
- package/dist/tenant/providers/FirebaseTenantProvider.d.ts +41 -0
- package/dist/tenant/providers/FirebaseTenantProvider.d.ts.map +1 -0
- package/dist/tenant/providers/FirebaseTenantProvider.js +290 -0
- package/dist/tenant/providers/FirebaseTenantProvider.js.map +1 -0
- package/dist/tenant/providers/InMemoryTenantProvider.d.ts +18 -0
- package/dist/tenant/providers/InMemoryTenantProvider.d.ts.map +1 -0
- package/dist/tenant/providers/InMemoryTenantProvider.js +137 -0
- package/dist/tenant/providers/InMemoryTenantProvider.js.map +1 -0
- package/package.json +48 -12
- package/src/agents/chat/chat.handler.ts +209 -0
- package/src/agents/chat/chat.schema.ts +33 -0
- package/src/agents/chat/chat.types.ts +46 -0
- package/src/agents/chat/chat.yaml +150 -0
- package/src/agents/chat/index.ts +21 -0
- package/src/agents/chromadb/chromadb.handler.ts +130 -0
- package/src/agents/chromadb/chromadb.schema.ts +35 -0
- package/src/agents/chromadb/chromadb.types.ts +52 -0
- package/src/agents/chromadb/chromadb.yaml +128 -0
- package/src/agents/chromadb/index.ts +20 -0
- package/src/agents/gemini-vectorize/gemini-vectorize.handler.ts +72 -0
- package/src/agents/gemini-vectorize/gemini-vectorize.schema.ts +22 -0
- package/src/agents/gemini-vectorize/gemini-vectorize.types.ts +34 -0
- package/src/agents/gemini-vectorize/gemini-vectorize.yaml +84 -0
- package/src/agents/gemini-vectorize/index.ts +20 -0
- package/src/agents/gitmcp/gitmcp.handler.ts +122 -0
- package/src/agents/gitmcp/gitmcp.schema.ts +20 -0
- package/src/agents/gitmcp/gitmcp.types.ts +33 -0
- package/src/agents/gitmcp/gitmcp.yaml +71 -0
- package/src/agents/gitmcp/index.ts +21 -0
- package/src/agents/image/image.handler.ts +82 -0
- package/src/agents/image/image.schema.ts +28 -0
- package/src/agents/image/image.types.ts +45 -0
- package/src/agents/image/image.yaml +86 -0
- package/src/agents/image/index.ts +19 -0
- package/src/agents/index.ts +59 -0
- package/src/agents/joker/index.ts +19 -0
- package/src/agents/joker/joker.handler.ts +60 -0
- package/src/agents/joker/joker.schema.ts +15 -0
- package/src/agents/joker/joker.types.ts +37 -0
- package/src/agents/joker/joker.yaml +47 -0
- package/src/agents/mcp-tool/index.ts +19 -0
- package/src/agents/mcp-tool/mcp-tool.handler.ts +112 -0
- package/src/agents/mcp-tool/mcp-tool.schema.ts +22 -0
- package/src/agents/mcp-tool/mcp-tool.types.ts +33 -0
- package/src/agents/mcp-tool/mcp-tool.yaml +71 -0
- package/src/agents/rag/index.ts +20 -0
- package/src/agents/rag/rag.handler.ts +119 -0
- package/src/agents/rag/rag.schema.ts +26 -0
- package/src/agents/rag/rag.types.ts +51 -0
- package/src/agents/rag/rag.yaml +89 -0
- package/src/agents/{agentRegistry.ts → registry/agentRegistry.ts} +161 -5
- package/src/agents/registry/index.ts +6 -0
- package/src/agents/translator/index.ts +19 -0
- package/src/agents/translator/translator.handler.ts +99 -0
- package/src/agents/translator/translator.schema.ts +30 -0
- package/src/agents/translator/translator.types.ts +42 -0
- package/src/agents/translator/translator.yaml +80 -0
- package/src/client/index.ts +53 -0
- package/src/client/types.ts +38 -0
- package/src/index.ts +48 -5
- package/src/runtime/declarativeAgentRuntime.ts +367 -489
- package/src/runtime/index.ts +31 -0
- package/src/runtime/workflowExecutor.ts +94 -0
- package/src/server/api/graphql.ts +109 -74
- package/src/server/index.ts +2 -2
- package/src/shared/index.ts +7 -0
- package/src/shared/types/agent.types.ts +80 -0
- package/src/shared/types/execution.types.ts +45 -0
- package/src/shared/types/index.ts +7 -0
- package/src/shared/types/schema.types.ts +55 -0
- package/src/shared/utils/index.ts +5 -0
- package/src/shared/utils/validation.ts +100 -0
- package/src/tenant/TenantManager.ts +488 -0
- package/src/tenant/index.ts +101 -0
- package/src/tenant/interfaces.ts +231 -0
- package/src/tenant/providerFactory.ts +75 -0
- package/src/tenant/providerRegistry.ts +86 -0
- package/src/tenant/providers/InMemoryTenantProvider.ts +168 -0
- package/dist/agents/agentRegistry.d.ts.map +0 -1
- package/dist/agents/agentRegistry.js.map +0 -1
- package/src/firebase/tenantManager.ts +0 -443
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agnostic Tenant Manager
|
|
4
|
+
* Provider-independent tenant management with compliance integration
|
|
5
|
+
*
|
|
6
|
+
* This manager orchestrates tenant operations using abstract interfaces,
|
|
7
|
+
* allowing swappable backends (Firebase, Supabase, PostgreSQL, etc.)
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.TenantManager = void 0;
|
|
11
|
+
const config_1 = require("../config");
|
|
12
|
+
const auditTrail_1 = require("../audit/auditTrail");
|
|
13
|
+
const gdprEngine_1 = require("../compliance/gdprEngine");
|
|
14
|
+
const lgpdEngine_1 = require("../compliance/lgpdEngine");
|
|
15
|
+
const interfaces_1 = require("./interfaces");
|
|
16
|
+
const providerFactory_1 = require("./providerFactory");
|
|
17
|
+
/**
|
|
18
|
+
* Agnostic Tenant Manager
|
|
19
|
+
*
|
|
20
|
+
* Singleton manager that orchestrates tenant operations using abstract
|
|
21
|
+
* provider interfaces. Maintains integration with AuditTrail and
|
|
22
|
+
* LGPD/GDPR compliance engines independent of the underlying provider.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const manager = TenantManager.getInstance();
|
|
27
|
+
*
|
|
28
|
+
* // Initialize with in-memory provider for testing
|
|
29
|
+
* const result = await manager.initializeTenant({
|
|
30
|
+
* tenantId: 'tenant-123',
|
|
31
|
+
* securityProfile: 'tenant-isolated',
|
|
32
|
+
* dataRetentionDays: 365,
|
|
33
|
+
* lgpdEnabled: true,
|
|
34
|
+
* gdprEnabled: true,
|
|
35
|
+
* provider: 'memory',
|
|
36
|
+
* providerConfig: {}
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
class TenantManager {
|
|
41
|
+
constructor() {
|
|
42
|
+
this.provider = null;
|
|
43
|
+
this.auditTrail = new auditTrail_1.AuditTrail();
|
|
44
|
+
this.gdprCompliance = new gdprEngine_1.GDPRCompliance(this.auditTrail);
|
|
45
|
+
this.lgpdCompliance = new lgpdEngine_1.LGPDCompliance(this.auditTrail);
|
|
46
|
+
this.tenantConfigs = new Map();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the singleton instance of TenantManager
|
|
50
|
+
*/
|
|
51
|
+
static getInstance() {
|
|
52
|
+
if (!this.instance) {
|
|
53
|
+
this.instance = new TenantManager();
|
|
54
|
+
}
|
|
55
|
+
return this.instance;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Reset the singleton instance (useful for testing)
|
|
59
|
+
*/
|
|
60
|
+
static resetInstance() {
|
|
61
|
+
this.instance = undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Set the provider to use for tenant operations
|
|
65
|
+
* This allows runtime provider switching
|
|
66
|
+
*/
|
|
67
|
+
setProvider(provider) {
|
|
68
|
+
this.provider = provider;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the current provider
|
|
72
|
+
* @throws ValidationError if no provider is set
|
|
73
|
+
*/
|
|
74
|
+
getProvider() {
|
|
75
|
+
if (!this.provider) {
|
|
76
|
+
throw new interfaces_1.ValidationError('No provider configured. Call setProvider() or initializeTenant() first.');
|
|
77
|
+
}
|
|
78
|
+
return this.provider;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Initialize tenant with complete isolation and compliance verification
|
|
82
|
+
*
|
|
83
|
+
* @param config - Tenant configuration including provider settings
|
|
84
|
+
* @returns TenantIsolationResult with security and compliance metrics
|
|
85
|
+
* @throws ValidationError if configuration is invalid
|
|
86
|
+
* @throws TenantAlreadyExistsError if tenant already exists
|
|
87
|
+
*/
|
|
88
|
+
async initializeTenant(config) {
|
|
89
|
+
const startTime = Date.now();
|
|
90
|
+
try {
|
|
91
|
+
// Validate tenant configuration
|
|
92
|
+
this.validateTenantConfig(config);
|
|
93
|
+
// Create or reuse provider based on config
|
|
94
|
+
if (!this.provider || this.provider.type !== config.provider) {
|
|
95
|
+
this.provider = (0, providerFactory_1.createProvider)(config.provider);
|
|
96
|
+
}
|
|
97
|
+
// Check if tenant already exists
|
|
98
|
+
const existingTenants = this.provider.list();
|
|
99
|
+
if (existingTenants.includes(config.tenantId)) {
|
|
100
|
+
throw new interfaces_1.TenantAlreadyExistsError(config.tenantId);
|
|
101
|
+
}
|
|
102
|
+
// Initialize tenant via provider
|
|
103
|
+
await this.provider.initialize(config);
|
|
104
|
+
// Store tenant config for later reference
|
|
105
|
+
this.tenantConfigs.set(config.tenantId, config);
|
|
106
|
+
// Generate audit trail
|
|
107
|
+
const operationId = `init-${config.tenantId}-${Date.now()}`;
|
|
108
|
+
const auditHash = await this.auditTrail.logOperation({
|
|
109
|
+
operationId,
|
|
110
|
+
tenantId: config.tenantId,
|
|
111
|
+
operation: 'tenant_init',
|
|
112
|
+
data: this.sanitizeForAudit(config),
|
|
113
|
+
timestamp: new Date(),
|
|
114
|
+
});
|
|
115
|
+
// Verify compliance
|
|
116
|
+
const complianceStatus = await this.verifyCompliance(config);
|
|
117
|
+
const executionTime = Date.now() - startTime;
|
|
118
|
+
// Calculate security score
|
|
119
|
+
const securityScore = this.calculateSecurityScore(config);
|
|
120
|
+
return {
|
|
121
|
+
success: true,
|
|
122
|
+
tenantId: config.tenantId,
|
|
123
|
+
securityScore,
|
|
124
|
+
auditHash,
|
|
125
|
+
executionTime,
|
|
126
|
+
complianceStatus,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
const executionTime = Date.now() - startTime;
|
|
131
|
+
await this.auditTrail.logOperation({
|
|
132
|
+
operationId: `error-${config.tenantId}-${Date.now()}`,
|
|
133
|
+
tenantId: config.tenantId,
|
|
134
|
+
operation: 'tenant_init_error',
|
|
135
|
+
data: {
|
|
136
|
+
error: error instanceof Error ? error.message : String(error),
|
|
137
|
+
config: this.sanitizeForAudit(config),
|
|
138
|
+
},
|
|
139
|
+
timestamp: new Date(),
|
|
140
|
+
success: false,
|
|
141
|
+
});
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get isolated tenant app
|
|
147
|
+
*
|
|
148
|
+
* @param tenantId - The tenant identifier
|
|
149
|
+
* @returns The tenant app instance
|
|
150
|
+
* @throws NotFoundError if tenant does not exist
|
|
151
|
+
* @throws ValidationError if no provider is configured
|
|
152
|
+
*/
|
|
153
|
+
getTenantApp(tenantId) {
|
|
154
|
+
const provider = this.getProvider();
|
|
155
|
+
return provider.get(tenantId);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Execute operation in tenant context with audit trail
|
|
159
|
+
*
|
|
160
|
+
* @param tenantId - The tenant identifier
|
|
161
|
+
* @param operation - Operation name for audit logging
|
|
162
|
+
* @param data - Operation data for audit logging
|
|
163
|
+
* @param callback - The operation to execute
|
|
164
|
+
* @returns The result of the callback
|
|
165
|
+
*/
|
|
166
|
+
async executeInTenant(tenantId, operation, data, callback) {
|
|
167
|
+
const startTime = Date.now();
|
|
168
|
+
try {
|
|
169
|
+
// Verify tenant exists
|
|
170
|
+
this.getTenantApp(tenantId);
|
|
171
|
+
// Generate audit trail
|
|
172
|
+
const operationId = `${operation}-${tenantId}-${Date.now()}`;
|
|
173
|
+
await this.auditTrail.logOperation({
|
|
174
|
+
operationId,
|
|
175
|
+
tenantId,
|
|
176
|
+
operation,
|
|
177
|
+
data: this.sanitizeForAudit(data),
|
|
178
|
+
timestamp: new Date(),
|
|
179
|
+
});
|
|
180
|
+
// Execute operation
|
|
181
|
+
const result = await callback();
|
|
182
|
+
// Record successful operation
|
|
183
|
+
const executionTime = Date.now() - startTime;
|
|
184
|
+
await this.auditTrail.logOperation({
|
|
185
|
+
operationId: `${operationId}-complete`,
|
|
186
|
+
tenantId,
|
|
187
|
+
operation: `${operation}_complete`,
|
|
188
|
+
data: { result: this.sanitizeForAudit(result), executionTime },
|
|
189
|
+
timestamp: new Date(),
|
|
190
|
+
success: true,
|
|
191
|
+
});
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const executionTime = Date.now() - startTime;
|
|
196
|
+
await this.auditTrail.logOperation({
|
|
197
|
+
operationId: `${operation}-${tenantId}-${Date.now()}-error`,
|
|
198
|
+
tenantId,
|
|
199
|
+
operation: `${operation}_error`,
|
|
200
|
+
data: {
|
|
201
|
+
error: error instanceof Error ? error.message : String(error),
|
|
202
|
+
executionTime,
|
|
203
|
+
},
|
|
204
|
+
timestamp: new Date(),
|
|
205
|
+
success: false,
|
|
206
|
+
});
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Safely remove tenant and release all resources
|
|
212
|
+
*
|
|
213
|
+
* @param tenantId - The tenant identifier
|
|
214
|
+
* @throws NotFoundError if tenant does not exist
|
|
215
|
+
*/
|
|
216
|
+
async removeTenant(tenantId) {
|
|
217
|
+
const provider = this.getProvider();
|
|
218
|
+
// Log removal
|
|
219
|
+
await this.auditTrail.logOperation({
|
|
220
|
+
operationId: `remove-${tenantId}-${Date.now()}`,
|
|
221
|
+
tenantId,
|
|
222
|
+
operation: 'tenant_removal',
|
|
223
|
+
data: { reason: 'admin_removal' },
|
|
224
|
+
timestamp: new Date(),
|
|
225
|
+
});
|
|
226
|
+
// Remove via provider
|
|
227
|
+
await provider.remove(tenantId);
|
|
228
|
+
// Clean up stored config
|
|
229
|
+
this.tenantConfigs.delete(tenantId);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get all active tenant IDs
|
|
233
|
+
*/
|
|
234
|
+
getActiveTenants() {
|
|
235
|
+
if (!this.provider) {
|
|
236
|
+
return [];
|
|
237
|
+
}
|
|
238
|
+
return this.provider.list();
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Get statistics for all tenants
|
|
242
|
+
*/
|
|
243
|
+
async getTenantStats() {
|
|
244
|
+
const stats = new Map();
|
|
245
|
+
const tenants = this.getActiveTenants();
|
|
246
|
+
for (const tenantId of tenants) {
|
|
247
|
+
const config = this.tenantConfigs.get(tenantId);
|
|
248
|
+
const securityScore = config ? this.calculateSecurityScore(config) : 9.5;
|
|
249
|
+
const mockStats = {
|
|
250
|
+
success: true,
|
|
251
|
+
tenantId,
|
|
252
|
+
securityScore,
|
|
253
|
+
auditHash: 'SHA256-' + Math.random().toString(36),
|
|
254
|
+
executionTime: 95,
|
|
255
|
+
complianceStatus: {
|
|
256
|
+
lgpd: config?.lgpdEnabled ?? true,
|
|
257
|
+
gdpr: config?.gdprEnabled ?? true,
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
stats.set(tenantId, mockStats);
|
|
261
|
+
}
|
|
262
|
+
return stats;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Get the stored configuration for a tenant
|
|
266
|
+
*/
|
|
267
|
+
getTenantConfig(tenantId) {
|
|
268
|
+
return this.tenantConfigs.get(tenantId);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Verify LGPD/GDPR compliance for tenant configuration
|
|
272
|
+
*/
|
|
273
|
+
async verifyCompliance(config) {
|
|
274
|
+
let lgpd = false;
|
|
275
|
+
let gdpr = false;
|
|
276
|
+
if (config.lgpdEnabled) {
|
|
277
|
+
lgpd = await this.lgpdCompliance.verifyCompliance({
|
|
278
|
+
tenantId: config.tenantId,
|
|
279
|
+
dataConsent: true,
|
|
280
|
+
dataAnonymization: true,
|
|
281
|
+
dataRetentionDays: config.dataRetentionDays,
|
|
282
|
+
brazilianDataResidency: true,
|
|
283
|
+
rightToDelete: true,
|
|
284
|
+
dataOwnerRights: true,
|
|
285
|
+
automaticDeletion: true,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
if (config.gdprEnabled) {
|
|
289
|
+
gdpr = await this.gdprCompliance.verifyCompliance({
|
|
290
|
+
tenantId: config.tenantId,
|
|
291
|
+
dataAnonymization: true,
|
|
292
|
+
consentManagement: true,
|
|
293
|
+
rightToBeForgotten: true,
|
|
294
|
+
dataPortability: true,
|
|
295
|
+
dataRetentionDays: config.dataRetentionDays,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
return { lgpd, gdpr };
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Calculate security score based on configuration
|
|
302
|
+
*/
|
|
303
|
+
calculateSecurityScore(config) {
|
|
304
|
+
let score = 5.0; // Base score
|
|
305
|
+
// Multi-tenant isolation
|
|
306
|
+
const tenants = this.getActiveTenants();
|
|
307
|
+
if (tenants.includes(config.tenantId)) {
|
|
308
|
+
score += 1.0;
|
|
309
|
+
}
|
|
310
|
+
// Security profile
|
|
311
|
+
switch (config.securityProfile) {
|
|
312
|
+
case 'ultra-secure':
|
|
313
|
+
score += 2.0;
|
|
314
|
+
break;
|
|
315
|
+
case 'tenant-isolated':
|
|
316
|
+
score += 1.5;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
// Compliance features
|
|
320
|
+
if (config.lgpdEnabled) {
|
|
321
|
+
score += 0.5;
|
|
322
|
+
}
|
|
323
|
+
if (config.gdprEnabled) {
|
|
324
|
+
score += 0.5;
|
|
325
|
+
}
|
|
326
|
+
// Audit trail
|
|
327
|
+
if (config_1.runtimeConfig.auditEnabled) {
|
|
328
|
+
score += 1.0;
|
|
329
|
+
}
|
|
330
|
+
// Memory limit enforcement (1MB for multi-tenant)
|
|
331
|
+
const memoryLimit = config_1.runtimeConfig.memoryLimit;
|
|
332
|
+
if (memoryLimit <= 1) {
|
|
333
|
+
score += 0.5;
|
|
334
|
+
}
|
|
335
|
+
return Math.min(score, 10.0); // Maximum 10.0
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Validate tenant configuration
|
|
339
|
+
* @throws ValidationError if configuration is invalid
|
|
340
|
+
*/
|
|
341
|
+
validateTenantConfig(config) {
|
|
342
|
+
if (!config.tenantId || config.tenantId.length < 3) {
|
|
343
|
+
throw new interfaces_1.ValidationError('Invalid tenant ID - must be at least 3 characters');
|
|
344
|
+
}
|
|
345
|
+
if (!config.provider) {
|
|
346
|
+
throw new interfaces_1.ValidationError('Provider type is required');
|
|
347
|
+
}
|
|
348
|
+
if (!config.securityProfile) {
|
|
349
|
+
config.securityProfile = 'tenant-isolated';
|
|
350
|
+
}
|
|
351
|
+
if (!config.dataRetentionDays) {
|
|
352
|
+
config.dataRetentionDays = 365; // 1 year default for LGPD
|
|
353
|
+
}
|
|
354
|
+
if (config.dataRetentionDays < 90) {
|
|
355
|
+
throw new interfaces_1.ValidationError('Data retention minimum 90 days for LGPD compliance');
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Sanitize data for audit trail (remove sensitive information)
|
|
360
|
+
*/
|
|
361
|
+
sanitizeForAudit(data) {
|
|
362
|
+
return JSON.parse(JSON.stringify(data, (key, value) => {
|
|
363
|
+
// Remove sensitive information
|
|
364
|
+
if (key.includes('password') ||
|
|
365
|
+
key.includes('secret') ||
|
|
366
|
+
key.includes('key')) {
|
|
367
|
+
return '[REDACTED]';
|
|
368
|
+
}
|
|
369
|
+
return value;
|
|
370
|
+
}));
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Get the audit trail instance (for testing/debugging)
|
|
374
|
+
*/
|
|
375
|
+
getAuditTrail() {
|
|
376
|
+
return this.auditTrail;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Get the LGPD compliance engine (for testing/debugging)
|
|
380
|
+
*/
|
|
381
|
+
getLGPDCompliance() {
|
|
382
|
+
return this.lgpdCompliance;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Get the GDPR compliance engine (for testing/debugging)
|
|
386
|
+
*/
|
|
387
|
+
getGDPRCompliance() {
|
|
388
|
+
return this.gdprCompliance;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
exports.TenantManager = TenantManager;
|
|
392
|
+
//# sourceMappingURL=TenantManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TenantManager.js","sourceRoot":"","sources":["../../src/tenant/TenantManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agnostic Multi-Tenant Module
|
|
3
|
+
* Provider-independent tenant management for Beddel
|
|
4
|
+
*
|
|
5
|
+
* This module provides a complete abstraction layer for multi-tenant operations,
|
|
6
|
+
* allowing swappable backends (Firebase, Supabase, PostgreSQL, etc.) without
|
|
7
|
+
* modifying business logic.
|
|
8
|
+
*
|
|
9
|
+
* External providers (Firebase, Supabase, etc.) should be registered by the
|
|
10
|
+
* consuming application using ProviderRegistry before use.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import {
|
|
15
|
+
* TenantManager,
|
|
16
|
+
* createProvider,
|
|
17
|
+
* ProviderRegistry,
|
|
18
|
+
* InMemoryTenantProvider,
|
|
19
|
+
* } from 'beddel/tenant';
|
|
20
|
+
*
|
|
21
|
+
* // Register external provider (in your application)
|
|
22
|
+
* import { FirebaseTenantProvider } from './providers/FirebaseTenantProvider';
|
|
23
|
+
* ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
|
|
24
|
+
*
|
|
25
|
+
* // Use in-memory provider for testing (built-in)
|
|
26
|
+
* const manager = TenantManager.getInstance();
|
|
27
|
+
* const result = await manager.initializeTenant({
|
|
28
|
+
* tenantId: 'tenant-123',
|
|
29
|
+
* securityProfile: 'tenant-isolated',
|
|
30
|
+
* dataRetentionDays: 365,
|
|
31
|
+
* lgpdEnabled: true,
|
|
32
|
+
* gdprEnabled: true,
|
|
33
|
+
* provider: 'memory',
|
|
34
|
+
* providerConfig: {}
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @module tenant
|
|
39
|
+
*/
|
|
40
|
+
export { TenantManager } from './TenantManager';
|
|
41
|
+
export type { TenantIsolationResult } from './TenantManager';
|
|
42
|
+
export type { ProviderType, BuiltInProviderType, TenantConfig, FirebaseProviderConfig, MemoryProviderConfig, ITenantProvider, ITenantApp, ITenantDatabase, ITenantCollection, ITenantDocument, } from './interfaces';
|
|
43
|
+
export { TenantError, ValidationError, NotFoundError, NotSupportedError, TenantAlreadyExistsError, } from './interfaces';
|
|
44
|
+
export { ProviderRegistry } from './providerRegistry';
|
|
45
|
+
export { createProvider, isValidProviderType, isBuiltInProviderType, getSupportedProviders, getBuiltInProviders, } from './providerFactory';
|
|
46
|
+
export { InMemoryTenantProvider } from './providers/InMemoryTenantProvider';
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tenant/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAM7D,YAAY,EAEV,YAAY,EACZ,mBAAmB,EAGnB,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EAGpB,eAAe,EACf,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAMtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agnostic Multi-Tenant Module
|
|
4
|
+
* Provider-independent tenant management for Beddel
|
|
5
|
+
*
|
|
6
|
+
* This module provides a complete abstraction layer for multi-tenant operations,
|
|
7
|
+
* allowing swappable backends (Firebase, Supabase, PostgreSQL, etc.) without
|
|
8
|
+
* modifying business logic.
|
|
9
|
+
*
|
|
10
|
+
* External providers (Firebase, Supabase, etc.) should be registered by the
|
|
11
|
+
* consuming application using ProviderRegistry before use.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import {
|
|
16
|
+
* TenantManager,
|
|
17
|
+
* createProvider,
|
|
18
|
+
* ProviderRegistry,
|
|
19
|
+
* InMemoryTenantProvider,
|
|
20
|
+
* } from 'beddel/tenant';
|
|
21
|
+
*
|
|
22
|
+
* // Register external provider (in your application)
|
|
23
|
+
* import { FirebaseTenantProvider } from './providers/FirebaseTenantProvider';
|
|
24
|
+
* ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
|
|
25
|
+
*
|
|
26
|
+
* // Use in-memory provider for testing (built-in)
|
|
27
|
+
* const manager = TenantManager.getInstance();
|
|
28
|
+
* const result = await manager.initializeTenant({
|
|
29
|
+
* tenantId: 'tenant-123',
|
|
30
|
+
* securityProfile: 'tenant-isolated',
|
|
31
|
+
* dataRetentionDays: 365,
|
|
32
|
+
* lgpdEnabled: true,
|
|
33
|
+
* gdprEnabled: true,
|
|
34
|
+
* provider: 'memory',
|
|
35
|
+
* providerConfig: {}
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @module tenant
|
|
40
|
+
*/
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.InMemoryTenantProvider = exports.getBuiltInProviders = exports.getSupportedProviders = exports.isBuiltInProviderType = exports.isValidProviderType = exports.createProvider = exports.ProviderRegistry = exports.TenantAlreadyExistsError = exports.NotSupportedError = exports.NotFoundError = exports.ValidationError = exports.TenantError = exports.TenantManager = void 0;
|
|
43
|
+
// =============================================================================
|
|
44
|
+
// Core Manager
|
|
45
|
+
// =============================================================================
|
|
46
|
+
var TenantManager_1 = require("./TenantManager");
|
|
47
|
+
Object.defineProperty(exports, "TenantManager", { enumerable: true, get: function () { return TenantManager_1.TenantManager; } });
|
|
48
|
+
// Error types (classes, not just types)
|
|
49
|
+
var interfaces_1 = require("./interfaces");
|
|
50
|
+
Object.defineProperty(exports, "TenantError", { enumerable: true, get: function () { return interfaces_1.TenantError; } });
|
|
51
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return interfaces_1.ValidationError; } });
|
|
52
|
+
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return interfaces_1.NotFoundError; } });
|
|
53
|
+
Object.defineProperty(exports, "NotSupportedError", { enumerable: true, get: function () { return interfaces_1.NotSupportedError; } });
|
|
54
|
+
Object.defineProperty(exports, "TenantAlreadyExistsError", { enumerable: true, get: function () { return interfaces_1.TenantAlreadyExistsError; } });
|
|
55
|
+
// =============================================================================
|
|
56
|
+
// Provider Registry
|
|
57
|
+
// =============================================================================
|
|
58
|
+
var providerRegistry_1 = require("./providerRegistry");
|
|
59
|
+
Object.defineProperty(exports, "ProviderRegistry", { enumerable: true, get: function () { return providerRegistry_1.ProviderRegistry; } });
|
|
60
|
+
// =============================================================================
|
|
61
|
+
// Provider Factory
|
|
62
|
+
// =============================================================================
|
|
63
|
+
var providerFactory_1 = require("./providerFactory");
|
|
64
|
+
Object.defineProperty(exports, "createProvider", { enumerable: true, get: function () { return providerFactory_1.createProvider; } });
|
|
65
|
+
Object.defineProperty(exports, "isValidProviderType", { enumerable: true, get: function () { return providerFactory_1.isValidProviderType; } });
|
|
66
|
+
Object.defineProperty(exports, "isBuiltInProviderType", { enumerable: true, get: function () { return providerFactory_1.isBuiltInProviderType; } });
|
|
67
|
+
Object.defineProperty(exports, "getSupportedProviders", { enumerable: true, get: function () { return providerFactory_1.getSupportedProviders; } });
|
|
68
|
+
Object.defineProperty(exports, "getBuiltInProviders", { enumerable: true, get: function () { return providerFactory_1.getBuiltInProviders; } });
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// Built-in Provider Implementations
|
|
71
|
+
// =============================================================================
|
|
72
|
+
var InMemoryTenantProvider_1 = require("./providers/InMemoryTenantProvider");
|
|
73
|
+
Object.defineProperty(exports, "InMemoryTenantProvider", { enumerable: true, get: function () { return InMemoryTenantProvider_1.InMemoryTenantProvider; } });
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tenant/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;;;AAEH,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAyBtB,wCAAwC;AACxC,2CAMsB;AALpB,yGAAA,WAAW,OAAA;AACX,6GAAA,eAAe,OAAA;AACf,2GAAA,aAAa,OAAA;AACb,+GAAA,iBAAiB,OAAA;AACjB,sHAAA,wBAAwB,OAAA;AAG1B,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,qDAM2B;AALzB,iHAAA,cAAc,OAAA;AACd,sHAAA,mBAAmB,OAAA;AACnB,wHAAA,qBAAqB,OAAA;AACrB,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AAGrB,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAEhF,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA"}
|