@varity-labs/sdk 2.0.0-alpha.1
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 +31 -0
- package/README.md +253 -0
- package/dist/analytics/index.d.ts +7 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +6 -0
- package/dist/analytics/tracker.d.ts +128 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +203 -0
- package/dist/blockchain/BlockchainService.d.ts +100 -0
- package/dist/blockchain/BlockchainService.d.ts.map +1 -0
- package/dist/blockchain/BlockchainService.js +188 -0
- package/dist/blockchain/NFTLicensingService.d.ts +69 -0
- package/dist/blockchain/NFTLicensingService.d.ts.map +1 -0
- package/dist/blockchain/NFTLicensingService.js +136 -0
- package/dist/blockchain/RevenueSplitService.d.ts +71 -0
- package/dist/blockchain/RevenueSplitService.d.ts.map +1 -0
- package/dist/blockchain/RevenueSplitService.js +111 -0
- package/dist/blockchain/index.d.ts +48 -0
- package/dist/blockchain/index.d.ts.map +1 -0
- package/dist/blockchain/index.js +46 -0
- package/dist/blockchain/types.d.ts +63 -0
- package/dist/blockchain/types.d.ts.map +1 -0
- package/dist/blockchain/types.js +6 -0
- package/dist/chains/arbitrum.d.ts +89 -0
- package/dist/chains/arbitrum.d.ts.map +1 -0
- package/dist/chains/arbitrum.js +134 -0
- package/dist/chains/base.d.ts +84 -0
- package/dist/chains/base.d.ts.map +1 -0
- package/dist/chains/base.js +131 -0
- package/dist/chains/index.d.ts +36 -0
- package/dist/chains/index.d.ts.map +1 -0
- package/dist/chains/index.js +32 -0
- package/dist/chains/registry.d.ts +113 -0
- package/dist/chains/registry.d.ts.map +1 -0
- package/dist/chains/registry.js +201 -0
- package/dist/chains/varityL3.d.ts +81 -0
- package/dist/chains/varityL3.d.ts.map +1 -0
- package/dist/chains/varityL3.js +125 -0
- package/dist/cli/commands/clone.d.ts +8 -0
- package/dist/cli/commands/clone.d.ts.map +1 -0
- package/dist/cli/commands/clone.js +391 -0
- package/dist/cli/commands/dev.d.ts +8 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +40 -0
- package/dist/cli/commands/generate.d.ts +8 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +303 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +317 -0
- package/dist/cli/commands/validate.d.ts +8 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +69 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +33 -0
- package/dist/cli/utils/logger.d.ts +17 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +35 -0
- package/dist/cli/utils/prompts.d.ts +21 -0
- package/dist/cli/utils/prompts.d.ts.map +1 -0
- package/dist/cli/utils/prompts.js +103 -0
- package/dist/contracts/abis/iso/AccessControlRegistry.json +1468 -0
- package/dist/contracts/abis/iso/DataProofRegistry.json +797 -0
- package/dist/contracts/abis/iso/MerchantRegistry.json +1237 -0
- package/dist/contracts/abis/iso/RepPerformance.json +1351 -0
- package/dist/contracts/abis/iso/ResidualCalculator.json +1118 -0
- package/dist/contracts/abis/iso/TransactionVault.json +1588 -0
- package/dist/contracts/abis/iso/VarityWalletFactory.json +475 -0
- package/dist/contracts/addresses.d.ts +88 -0
- package/dist/contracts/addresses.d.ts.map +1 -0
- package/dist/contracts/addresses.js +94 -0
- package/dist/contracts/index.d.ts +7 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +6 -0
- package/dist/core/VaritySDK.d.ts +177 -0
- package/dist/core/VaritySDK.d.ts.map +1 -0
- package/dist/core/VaritySDK.js +325 -0
- package/dist/core/config.d.ts +120 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +187 -0
- package/dist/core/credentials-proxy.d.ts +157 -0
- package/dist/core/credentials-proxy.d.ts.map +1 -0
- package/dist/core/credentials-proxy.js +345 -0
- package/dist/core/credentials.d.ts +219 -0
- package/dist/core/credentials.d.ts.map +1 -0
- package/dist/core/credentials.js +345 -0
- package/dist/core/template-loader.d.ts +15 -0
- package/dist/core/template-loader.d.ts.map +1 -0
- package/dist/core/template-loader.js +380 -0
- package/dist/core/template.d.ts +321 -0
- package/dist/core/template.d.ts.map +1 -0
- package/dist/core/template.js +189 -0
- package/dist/core/types.d.ts +572 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +52 -0
- package/dist/dev/dev-server.d.ts +16 -0
- package/dist/dev/dev-server.d.ts.map +1 -0
- package/dist/dev/dev-server.js +119 -0
- package/dist/generators/contracts/generator.d.ts +21 -0
- package/dist/generators/contracts/generator.d.ts.map +1 -0
- package/dist/generators/contracts/generator.js +252 -0
- package/dist/generators/tests/generator.d.ts +20 -0
- package/dist/generators/tests/generator.d.ts.map +1 -0
- package/dist/generators/tests/generator.js +375 -0
- package/dist/generators/types/generator.d.ts +19 -0
- package/dist/generators/types/generator.d.ts.map +1 -0
- package/dist/generators/types/generator.js +165 -0
- package/dist/generators/ui/component-generator.d.ts +20 -0
- package/dist/generators/ui/component-generator.d.ts.map +1 -0
- package/dist/generators/ui/component-generator.js +749 -0
- package/dist/generators/ui/dashboard-generator.d.ts +20 -0
- package/dist/generators/ui/dashboard-generator.d.ts.map +1 -0
- package/dist/generators/ui/dashboard-generator.js +349 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/modules/analytics/AnalyticsModule.d.ts +349 -0
- package/dist/modules/analytics/AnalyticsModule.d.ts.map +1 -0
- package/dist/modules/analytics/AnalyticsModule.js +274 -0
- package/dist/modules/analytics/index.d.ts +3 -0
- package/dist/modules/analytics/index.d.ts.map +1 -0
- package/dist/modules/analytics/index.js +1 -0
- package/dist/modules/auth/AccessKeyModule.d.ts +189 -0
- package/dist/modules/auth/AccessKeyModule.d.ts.map +1 -0
- package/dist/modules/auth/AccessKeyModule.js +322 -0
- package/dist/modules/auth/AuthModule.d.ts +133 -0
- package/dist/modules/auth/AuthModule.d.ts.map +1 -0
- package/dist/modules/auth/AuthModule.js +214 -0
- package/dist/modules/auth/index.d.ts +8 -0
- package/dist/modules/auth/index.d.ts.map +1 -0
- package/dist/modules/auth/index.js +6 -0
- package/dist/modules/cache/CacheModule.d.ts +279 -0
- package/dist/modules/cache/CacheModule.d.ts.map +1 -0
- package/dist/modules/cache/CacheModule.js +493 -0
- package/dist/modules/cache/index.d.ts +3 -0
- package/dist/modules/cache/index.d.ts.map +1 -0
- package/dist/modules/cache/index.js +1 -0
- package/dist/modules/compute/ComputeModule.d.ts +226 -0
- package/dist/modules/compute/ComputeModule.d.ts.map +1 -0
- package/dist/modules/compute/ComputeModule.js +379 -0
- package/dist/modules/compute/index.d.ts +6 -0
- package/dist/modules/compute/index.d.ts.map +1 -0
- package/dist/modules/compute/index.js +4 -0
- package/dist/modules/contracts/ContractsModule.d.ts +164 -0
- package/dist/modules/contracts/ContractsModule.d.ts.map +1 -0
- package/dist/modules/contracts/ContractsModule.js +242 -0
- package/dist/modules/contracts/index.d.ts +6 -0
- package/dist/modules/contracts/index.d.ts.map +1 -0
- package/dist/modules/contracts/index.js +4 -0
- package/dist/modules/export/ExportModule.d.ts +346 -0
- package/dist/modules/export/ExportModule.d.ts.map +1 -0
- package/dist/modules/export/ExportModule.js +432 -0
- package/dist/modules/export/index.d.ts +3 -0
- package/dist/modules/export/index.d.ts.map +1 -0
- package/dist/modules/export/index.js +1 -0
- package/dist/modules/forecasting/ForecastingModule.d.ts +579 -0
- package/dist/modules/forecasting/ForecastingModule.d.ts.map +1 -0
- package/dist/modules/forecasting/ForecastingModule.js +310 -0
- package/dist/modules/forecasting/index.d.ts +3 -0
- package/dist/modules/forecasting/index.d.ts.map +1 -0
- package/dist/modules/forecasting/index.js +1 -0
- package/dist/modules/monitoring/MonitoringModule.d.ts +359 -0
- package/dist/modules/monitoring/MonitoringModule.d.ts.map +1 -0
- package/dist/modules/monitoring/MonitoringModule.js +483 -0
- package/dist/modules/monitoring/index.d.ts +3 -0
- package/dist/modules/monitoring/index.d.ts.map +1 -0
- package/dist/modules/monitoring/index.js +1 -0
- package/dist/modules/notifications/NotificationsModule.d.ts +336 -0
- package/dist/modules/notifications/NotificationsModule.d.ts.map +1 -0
- package/dist/modules/notifications/NotificationsModule.js +418 -0
- package/dist/modules/notifications/index.d.ts +3 -0
- package/dist/modules/notifications/index.d.ts.map +1 -0
- package/dist/modules/notifications/index.js +1 -0
- package/dist/modules/oracle/OracleModule.d.ts +110 -0
- package/dist/modules/oracle/OracleModule.d.ts.map +1 -0
- package/dist/modules/oracle/OracleModule.js +151 -0
- package/dist/modules/oracle/index.d.ts +6 -0
- package/dist/modules/oracle/index.d.ts.map +1 -0
- package/dist/modules/oracle/index.js +4 -0
- package/dist/modules/storage/S3Module.d.ts +377 -0
- package/dist/modules/storage/S3Module.d.ts.map +1 -0
- package/dist/modules/storage/S3Module.js +680 -0
- package/dist/modules/storage/StorageModule.d.ts +157 -0
- package/dist/modules/storage/StorageModule.d.ts.map +1 -0
- package/dist/modules/storage/StorageModule.js +302 -0
- package/dist/modules/storage/adapters/AdapterFactory.d.ts +100 -0
- package/dist/modules/storage/adapters/AdapterFactory.d.ts.map +1 -0
- package/dist/modules/storage/adapters/AdapterFactory.js +209 -0
- package/dist/modules/storage/adapters/FilecoinAdapter.d.ts +94 -0
- package/dist/modules/storage/adapters/FilecoinAdapter.d.ts.map +1 -0
- package/dist/modules/storage/adapters/FilecoinAdapter.js +263 -0
- package/dist/modules/storage/adapters/IStorageAdapter.d.ts +287 -0
- package/dist/modules/storage/adapters/IStorageAdapter.d.ts.map +1 -0
- package/dist/modules/storage/adapters/IStorageAdapter.js +81 -0
- package/dist/modules/storage/adapters/MultiTierAdapter.d.ts +187 -0
- package/dist/modules/storage/adapters/MultiTierAdapter.d.ts.map +1 -0
- package/dist/modules/storage/adapters/MultiTierAdapter.js +430 -0
- package/dist/modules/storage/adapters/index.d.ts +12 -0
- package/dist/modules/storage/adapters/index.d.ts.map +1 -0
- package/dist/modules/storage/adapters/index.js +12 -0
- package/dist/modules/storage/index.d.ts +16 -0
- package/dist/modules/storage/index.d.ts.map +1 -0
- package/dist/modules/storage/index.js +15 -0
- package/dist/modules/storage/tiering/AccessAnalyzer.d.ts +227 -0
- package/dist/modules/storage/tiering/AccessAnalyzer.d.ts.map +1 -0
- package/dist/modules/storage/tiering/AccessAnalyzer.js +367 -0
- package/dist/modules/storage/tiering/CostOptimizer.d.ts +248 -0
- package/dist/modules/storage/tiering/CostOptimizer.d.ts.map +1 -0
- package/dist/modules/storage/tiering/CostOptimizer.js +356 -0
- package/dist/modules/storage/tiering/MetadataStore.d.ts +287 -0
- package/dist/modules/storage/tiering/MetadataStore.d.ts.map +1 -0
- package/dist/modules/storage/tiering/MetadataStore.js +535 -0
- package/dist/modules/storage/tiering/TieringEngine.d.ts +237 -0
- package/dist/modules/storage/tiering/TieringEngine.d.ts.map +1 -0
- package/dist/modules/storage/tiering/TieringEngine.js +419 -0
- package/dist/modules/storage/tiering/example.d.ts +8 -0
- package/dist/modules/storage/tiering/example.d.ts.map +1 -0
- package/dist/modules/storage/tiering/example.js +250 -0
- package/dist/modules/storage/tiering/index.d.ts +17 -0
- package/dist/modules/storage/tiering/index.d.ts.map +1 -0
- package/dist/modules/storage/tiering/index.js +13 -0
- package/dist/modules/webhooks/WebhooksModule.d.ts +476 -0
- package/dist/modules/webhooks/WebhooksModule.d.ts.map +1 -0
- package/dist/modules/webhooks/WebhooksModule.js +359 -0
- package/dist/modules/webhooks/index.d.ts +3 -0
- package/dist/modules/webhooks/index.d.ts.map +1 -0
- package/dist/modules/webhooks/index.js +1 -0
- package/dist/modules/zk/ZKModule.d.ts +153 -0
- package/dist/modules/zk/ZKModule.d.ts.map +1 -0
- package/dist/modules/zk/ZKModule.js +262 -0
- package/dist/modules/zk/index.d.ts +7 -0
- package/dist/modules/zk/index.d.ts.map +1 -0
- package/dist/modules/zk/index.js +4 -0
- package/dist/thirdweb/BridgeClient.d.ts +228 -0
- package/dist/thirdweb/BridgeClient.d.ts.map +1 -0
- package/dist/thirdweb/BridgeClient.js +160 -0
- package/dist/thirdweb/EngineClient.d.ts +396 -0
- package/dist/thirdweb/EngineClient.d.ts.map +1 -0
- package/dist/thirdweb/EngineClient.js +386 -0
- package/dist/thirdweb/GatewayClient.d.ts +190 -0
- package/dist/thirdweb/GatewayClient.d.ts.map +1 -0
- package/dist/thirdweb/GatewayClient.js +257 -0
- package/dist/thirdweb/NebulaClient.d.ts +292 -0
- package/dist/thirdweb/NebulaClient.d.ts.map +1 -0
- package/dist/thirdweb/NebulaClient.js +180 -0
- package/dist/thirdweb/StorageClient.d.ts +445 -0
- package/dist/thirdweb/StorageClient.d.ts.map +1 -0
- package/dist/thirdweb/StorageClient.js +405 -0
- package/dist/thirdweb/ThirdwebWrapper.d.ts +236 -0
- package/dist/thirdweb/ThirdwebWrapper.d.ts.map +1 -0
- package/dist/thirdweb/ThirdwebWrapper.js +332 -0
- package/dist/thirdweb/index.d.ts +21 -0
- package/dist/thirdweb/index.d.ts.map +1 -0
- package/dist/thirdweb/index.js +28 -0
- package/dist/thirdweb/varity-chain.d.ts +48 -0
- package/dist/thirdweb/varity-chain.d.ts.map +1 -0
- package/dist/thirdweb/varity-chain.js +64 -0
- package/dist/thirdweb/x402Client.d.ts +319 -0
- package/dist/thirdweb/x402Client.d.ts.map +1 -0
- package/dist/thirdweb/x402Client.js +223 -0
- package/dist/tracking/gasTracker.d.ts +158 -0
- package/dist/tracking/gasTracker.d.ts.map +1 -0
- package/dist/tracking/gasTracker.js +227 -0
- package/dist/tracking/index.d.ts +10 -0
- package/dist/tracking/index.d.ts.map +1 -0
- package/dist/tracking/index.js +8 -0
- package/dist/tracking/types.d.ts +327 -0
- package/dist/tracking/types.d.ts.map +1 -0
- package/dist/tracking/types.js +8 -0
- package/dist/ui/components/ChartWidget.d.ts +36 -0
- package/dist/ui/components/ChartWidget.d.ts.map +1 -0
- package/dist/ui/components/ChartWidget.js +82 -0
- package/dist/ui/components/DashboardLayout.d.ts +41 -0
- package/dist/ui/components/DashboardLayout.d.ts.map +1 -0
- package/dist/ui/components/DashboardLayout.js +102 -0
- package/dist/ui/components/DataTable.d.ts +49 -0
- package/dist/ui/components/DataTable.d.ts.map +1 -0
- package/dist/ui/components/DataTable.js +96 -0
- package/dist/ui/components/EntityForm.d.ts +60 -0
- package/dist/ui/components/EntityForm.d.ts.map +1 -0
- package/dist/ui/components/EntityForm.js +182 -0
- package/dist/ui/components/KPICard.d.ts +29 -0
- package/dist/ui/components/KPICard.d.ts.map +1 -0
- package/dist/ui/components/KPICard.js +61 -0
- package/dist/ui/components/Modal.d.ts +34 -0
- package/dist/ui/components/Modal.d.ts.map +1 -0
- package/dist/ui/components/Modal.js +30 -0
- package/dist/ui/components/index.d.ts +18 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +11 -0
- package/dist/validation/template-validator.d.ts +25 -0
- package/dist/validation/template-validator.d.ts.map +1 -0
- package/dist/validation/template-validator.js +305 -0
- package/package.json +102 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Varity SDK - Auth Module
|
|
3
|
+
*
|
|
4
|
+
* Universal authentication, permissions, and access control.
|
|
5
|
+
* Works across all templates (ISO, Healthcare, Retail, etc.)
|
|
6
|
+
*/
|
|
7
|
+
import { ethers } from 'ethers';
|
|
8
|
+
import AccessControlRegistryABI from '../../contracts/abis/iso/AccessControlRegistry.json';
|
|
9
|
+
/**
|
|
10
|
+
* AuthModule - Universal authentication and access control
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Login with wallet
|
|
15
|
+
* const token = await sdk.auth.login({ address: '0x...' })
|
|
16
|
+
*
|
|
17
|
+
* // Check permissions
|
|
18
|
+
* const canAccess = await sdk.auth.checkPermission('0x...', 'merchants')
|
|
19
|
+
*
|
|
20
|
+
* // Assign role
|
|
21
|
+
* await sdk.auth.assignRole('0x...', Role.MANAGER)
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class AuthModule {
|
|
25
|
+
constructor(sdk) {
|
|
26
|
+
this.accessControlContract = null;
|
|
27
|
+
this.sdk = sdk;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Initialize Access Control contract
|
|
31
|
+
*/
|
|
32
|
+
async getAccessControlContract() {
|
|
33
|
+
if (!this.accessControlContract) {
|
|
34
|
+
const address = this.sdk.getContractAddress('AccessControlRegistry');
|
|
35
|
+
const provider = this.sdk.getProvider();
|
|
36
|
+
this.accessControlContract = new ethers.Contract(address, AccessControlRegistryABI.abi, provider);
|
|
37
|
+
}
|
|
38
|
+
return this.accessControlContract;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Login with wallet signature
|
|
42
|
+
*
|
|
43
|
+
* @param credentials - Login credentials
|
|
44
|
+
* @returns Authentication token
|
|
45
|
+
*/
|
|
46
|
+
async login(credentials) {
|
|
47
|
+
const signer = this.sdk.getSigner();
|
|
48
|
+
const address = await signer.getAddress();
|
|
49
|
+
// Generate signature message
|
|
50
|
+
const message = credentials.message || `Login to Varity at ${Date.now()}`;
|
|
51
|
+
const signature = credentials.signature || await signer.signMessage(message);
|
|
52
|
+
// Call backend API for token
|
|
53
|
+
const apiEndpoint = this.sdk.getAPIEndpoint();
|
|
54
|
+
const response = await fetch(`${apiEndpoint}/api/v1/auth/login`, {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
headers: { 'Content-Type': 'application/json' },
|
|
57
|
+
body: JSON.stringify({ address, signature, message })
|
|
58
|
+
});
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
throw new Error(`Login failed: ${response.statusText}`);
|
|
61
|
+
}
|
|
62
|
+
return await response.json();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Logout current user
|
|
66
|
+
*/
|
|
67
|
+
async logout() {
|
|
68
|
+
// Clear any cached tokens/sessions
|
|
69
|
+
// Implementation depends on storage strategy
|
|
70
|
+
console.log('Logged out');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get current authenticated user
|
|
74
|
+
*
|
|
75
|
+
* @returns Current user info
|
|
76
|
+
*/
|
|
77
|
+
async getCurrentUser() {
|
|
78
|
+
const address = await this.sdk.getAddress();
|
|
79
|
+
const roles = await this.getUserRoles(address);
|
|
80
|
+
const profile = await this.getUserProfile(address);
|
|
81
|
+
return { address, roles, profile };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if user has permission to access a resource
|
|
85
|
+
*
|
|
86
|
+
* @param user - User address
|
|
87
|
+
* @param resource - Resource identifier
|
|
88
|
+
* @returns True if user has access
|
|
89
|
+
*/
|
|
90
|
+
async checkPermission(user, resource) {
|
|
91
|
+
const contract = await this.getAccessControlContract();
|
|
92
|
+
// Check if user has any required roles for the resource
|
|
93
|
+
// This is a simplified check - real implementation would be more sophisticated
|
|
94
|
+
const roles = await this.getUserRoles(user);
|
|
95
|
+
// Resource-based access control logic
|
|
96
|
+
// Could be extended with more granular permissions
|
|
97
|
+
return roles.length > 0;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Assign role to user
|
|
101
|
+
*
|
|
102
|
+
* @param user - User address
|
|
103
|
+
* @param role - Role to assign
|
|
104
|
+
* @param metadata - Optional metadata
|
|
105
|
+
*/
|
|
106
|
+
async assignRole(user, role, metadata) {
|
|
107
|
+
const contract = await this.getAccessControlContract();
|
|
108
|
+
const signer = this.sdk.getSigner();
|
|
109
|
+
const contractWithSigner = contract.connect(signer);
|
|
110
|
+
const assignRoleFunc = contractWithSigner.getFunction('assignRole');
|
|
111
|
+
const tx = await assignRoleFunc(user, role, metadata || '');
|
|
112
|
+
await tx.wait();
|
|
113
|
+
console.log(`✅ Role ${role} assigned to ${user}`);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Revoke role from user
|
|
117
|
+
*
|
|
118
|
+
* @param user - User address
|
|
119
|
+
* @param role - Role to revoke
|
|
120
|
+
*/
|
|
121
|
+
async revokeRole(user, role) {
|
|
122
|
+
const contract = await this.getAccessControlContract();
|
|
123
|
+
const signer = this.sdk.getSigner();
|
|
124
|
+
const contractWithSigner = contract.connect(signer);
|
|
125
|
+
const revokeRoleFunc = contractWithSigner.getFunction('revokeRole');
|
|
126
|
+
const tx = await revokeRoleFunc(user, role);
|
|
127
|
+
await tx.wait();
|
|
128
|
+
console.log(`✅ Role ${role} revoked from ${user}`);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get all roles for a user
|
|
132
|
+
*
|
|
133
|
+
* @param user - User address
|
|
134
|
+
* @returns Array of roles
|
|
135
|
+
*/
|
|
136
|
+
async getUserRoles(user) {
|
|
137
|
+
const contract = await this.getAccessControlContract();
|
|
138
|
+
const profile = await contract.getUserProfile(user);
|
|
139
|
+
// Return primary role (could be extended to return all roles)
|
|
140
|
+
return profile.primaryRole ? [profile.primaryRole] : [];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get user profile
|
|
144
|
+
*
|
|
145
|
+
* @param user - User address
|
|
146
|
+
* @returns User profile
|
|
147
|
+
*/
|
|
148
|
+
async getUserProfile(user) {
|
|
149
|
+
const contract = await this.getAccessControlContract();
|
|
150
|
+
const profile = await contract.getUserProfile(user);
|
|
151
|
+
return {
|
|
152
|
+
userAddress: profile.userAddress,
|
|
153
|
+
primaryRole: profile.primaryRole,
|
|
154
|
+
metadata: profile.metadata,
|
|
155
|
+
createdAt: Number(profile.createdAt),
|
|
156
|
+
lastUpdated: Number(profile.lastUpdated),
|
|
157
|
+
isActive: profile.isActive
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Set Lit Protocol access condition for a role
|
|
162
|
+
*
|
|
163
|
+
* @param role - Role
|
|
164
|
+
* @param condition - Lit Protocol condition JSON
|
|
165
|
+
* @param encryptedKey - Encrypted symmetric key
|
|
166
|
+
*/
|
|
167
|
+
async setAccessCondition(role, condition, encryptedKey) {
|
|
168
|
+
const contract = await this.getAccessControlContract();
|
|
169
|
+
const signer = this.sdk.getSigner();
|
|
170
|
+
const contractWithSigner = contract.connect(signer);
|
|
171
|
+
const setAccessConditionFunc = contractWithSigner.getFunction('setAccessCondition');
|
|
172
|
+
const tx = await setAccessConditionFunc(role, condition, ethers.toUtf8Bytes(encryptedKey));
|
|
173
|
+
await tx.wait();
|
|
174
|
+
console.log(`✅ Access condition set for role ${role}`);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get Lit Protocol access condition for a role
|
|
178
|
+
*
|
|
179
|
+
* @param role - Role
|
|
180
|
+
* @returns Access condition
|
|
181
|
+
*/
|
|
182
|
+
async getAccessCondition(role) {
|
|
183
|
+
const contract = await this.getAccessControlContract();
|
|
184
|
+
const condition = await contract.getAccessCondition(role);
|
|
185
|
+
return {
|
|
186
|
+
condition: condition.condition,
|
|
187
|
+
encryptedKey: ethers.toUtf8String(condition.encryptedKey),
|
|
188
|
+
isActive: condition.isActive,
|
|
189
|
+
lastUpdated: Number(condition.lastUpdated)
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Check if user has a specific role
|
|
194
|
+
*
|
|
195
|
+
* @param user - User address
|
|
196
|
+
* @param role - Role to check
|
|
197
|
+
* @returns True if user has the role
|
|
198
|
+
*/
|
|
199
|
+
async hasRole(user, role) {
|
|
200
|
+
const roles = await this.getUserRoles(user);
|
|
201
|
+
return roles.includes(role);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if user has any of the specified roles
|
|
205
|
+
*
|
|
206
|
+
* @param user - User address
|
|
207
|
+
* @param roles - Roles to check
|
|
208
|
+
* @returns True if user has any of the roles
|
|
209
|
+
*/
|
|
210
|
+
async hasAnyRole(user, roles) {
|
|
211
|
+
const userRoles = await this.getUserRoles(user);
|
|
212
|
+
return roles.some(role => userRoles.includes(role));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Module - Exports
|
|
3
|
+
*/
|
|
4
|
+
export { AuthModule } from './AuthModule';
|
|
5
|
+
export type { LoginCredentials, AuthToken, User } from './AuthModule';
|
|
6
|
+
export { AccessKeyModule } from './AccessKeyModule';
|
|
7
|
+
export type { CreateAccessKeyOptions, UpdateAccessKeyOptions, VaritySDK, VaritySDKConfig } from './AccessKeyModule';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,SAAS,EACT,eAAe,EAChB,MAAM,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import type { VaritySDK } from '../../core/VaritySDK';
|
|
2
|
+
/**
|
|
3
|
+
* Cache Module
|
|
4
|
+
*
|
|
5
|
+
* Universal caching layer for performance optimization across all templates.
|
|
6
|
+
* Provides Redis-like caching with TTL, invalidation, and query optimization.
|
|
7
|
+
* Works identically for ISO, Healthcare, Finance, Retail, etc.
|
|
8
|
+
*/
|
|
9
|
+
export interface CacheOptions {
|
|
10
|
+
ttl?: number;
|
|
11
|
+
namespace?: string;
|
|
12
|
+
tags?: string[];
|
|
13
|
+
compress?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface CacheEntry<T = any> {
|
|
16
|
+
key: string;
|
|
17
|
+
value: T;
|
|
18
|
+
ttl?: number;
|
|
19
|
+
createdAt: string;
|
|
20
|
+
expiresAt?: string;
|
|
21
|
+
namespace?: string;
|
|
22
|
+
tags?: string[];
|
|
23
|
+
size?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CacheStats {
|
|
26
|
+
hits: number;
|
|
27
|
+
misses: number;
|
|
28
|
+
hitRate: number;
|
|
29
|
+
totalKeys: number;
|
|
30
|
+
totalSize: number;
|
|
31
|
+
evictions: number;
|
|
32
|
+
namespaces: Record<string, number>;
|
|
33
|
+
}
|
|
34
|
+
export interface CacheBatchOperation {
|
|
35
|
+
key: string;
|
|
36
|
+
value?: any;
|
|
37
|
+
operation: 'get' | 'set' | 'delete';
|
|
38
|
+
options?: CacheOptions;
|
|
39
|
+
}
|
|
40
|
+
export interface CacheBatchResult {
|
|
41
|
+
key: string;
|
|
42
|
+
success: boolean;
|
|
43
|
+
value?: any;
|
|
44
|
+
error?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface CachePattern {
|
|
47
|
+
pattern: string;
|
|
48
|
+
count?: number;
|
|
49
|
+
keys?: string[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* CacheModule - Universal caching and performance optimization
|
|
53
|
+
*
|
|
54
|
+
* Provides high-performance caching with TTL, namespacing, and invalidation
|
|
55
|
+
* patterns. Works across all templates to optimize query performance.
|
|
56
|
+
*/
|
|
57
|
+
export declare class CacheModule {
|
|
58
|
+
private sdk;
|
|
59
|
+
constructor(sdk: VaritySDK);
|
|
60
|
+
/**
|
|
61
|
+
* Get value from cache
|
|
62
|
+
*
|
|
63
|
+
* Universal method - retrieves cached value by key.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const kpis = await sdk.cache.get('dashboard:kpis:current_month')
|
|
68
|
+
* if (!kpis) {
|
|
69
|
+
* // Cache miss - fetch from source
|
|
70
|
+
* kpis = await sdk.analytics.getKPIs({ period: 'current_month' })
|
|
71
|
+
* await sdk.cache.set('dashboard:kpis:current_month', kpis, { ttl: 300 })
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
get<T = any>(key: string, namespace?: string): Promise<T | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Set value in cache with optional TTL
|
|
78
|
+
*
|
|
79
|
+
* Universal method - stores value in cache with expiration.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* await sdk.cache.set('user:123:profile', userProfile, { ttl: 3600, tags: ['user'] })
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
set(key: string, value: any, options?: CacheOptions): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Delete value from cache
|
|
89
|
+
*
|
|
90
|
+
* Universal method - removes cached value by key.
|
|
91
|
+
*/
|
|
92
|
+
delete(key: string, namespace?: string): Promise<boolean>;
|
|
93
|
+
/**
|
|
94
|
+
* Check if key exists in cache
|
|
95
|
+
*
|
|
96
|
+
* Universal method - checks cache key existence without retrieving value.
|
|
97
|
+
*/
|
|
98
|
+
has(key: string, namespace?: string): Promise<boolean>;
|
|
99
|
+
/**
|
|
100
|
+
* Remember pattern - get from cache or execute function and cache result
|
|
101
|
+
*
|
|
102
|
+
* Universal method - simplifies cache-aside pattern.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const kpis = await sdk.cache.remember(
|
|
107
|
+
* 'dashboard:kpis',
|
|
108
|
+
* async () => await sdk.analytics.getKPIs(),
|
|
109
|
+
* { ttl: 300 }
|
|
110
|
+
* )
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
remember<T>(key: string, fn: () => Promise<T>, options?: CacheOptions): Promise<T>;
|
|
114
|
+
/**
|
|
115
|
+
* Invalidate cache by pattern
|
|
116
|
+
*
|
|
117
|
+
* Universal method - removes all keys matching pattern.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* // Invalidate all user-related cache
|
|
122
|
+
* await sdk.cache.invalidate('user:*')
|
|
123
|
+
*
|
|
124
|
+
* // Invalidate specific namespace
|
|
125
|
+
* await sdk.cache.invalidate('*', 'analytics')
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
invalidate(pattern: string, namespace?: string): Promise<number>;
|
|
129
|
+
/**
|
|
130
|
+
* Invalidate cache by tags
|
|
131
|
+
*
|
|
132
|
+
* Universal method - removes all keys with specific tags.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* // Set cache with tags
|
|
137
|
+
* await sdk.cache.set('merchant:123', data, { tags: ['merchant', 'iso'] })
|
|
138
|
+
*
|
|
139
|
+
* // Invalidate all entries with 'merchant' tag
|
|
140
|
+
* await sdk.cache.invalidateByTags(['merchant'])
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
invalidateByTags(tags: string[]): Promise<number>;
|
|
144
|
+
/**
|
|
145
|
+
* Clear entire cache or namespace
|
|
146
|
+
*
|
|
147
|
+
* Universal method - removes all cached entries.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* // Clear entire cache
|
|
152
|
+
* await sdk.cache.clear()
|
|
153
|
+
*
|
|
154
|
+
* // Clear specific namespace
|
|
155
|
+
* await sdk.cache.clear('analytics')
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
clear(namespace?: string): Promise<number>;
|
|
159
|
+
/**
|
|
160
|
+
* Get cache statistics
|
|
161
|
+
*
|
|
162
|
+
* Universal method - retrieves cache performance metrics.
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* const stats = await sdk.cache.getStats()
|
|
167
|
+
* console.log(`Cache hit rate: ${stats.hitRate}%`)
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
getStats(namespace?: string): Promise<CacheStats>;
|
|
171
|
+
/**
|
|
172
|
+
* Batch operations on cache
|
|
173
|
+
*
|
|
174
|
+
* Universal method - performs multiple cache operations efficiently.
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* const results = await sdk.cache.batch([
|
|
179
|
+
* { key: 'user:123', operation: 'get' },
|
|
180
|
+
* { key: 'user:456', operation: 'get' },
|
|
181
|
+
* { key: 'session:abc', operation: 'delete' }
|
|
182
|
+
* ])
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
batch(operations: CacheBatchOperation[]): Promise<CacheBatchResult[]>;
|
|
186
|
+
/**
|
|
187
|
+
* Get multiple values from cache
|
|
188
|
+
*
|
|
189
|
+
* Universal method - retrieves multiple cached values efficiently.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```typescript
|
|
193
|
+
* const values = await sdk.cache.getMany(['user:123', 'user:456', 'user:789'])
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
getMany<T = any>(keys: string[], namespace?: string): Promise<Map<string, T>>;
|
|
197
|
+
/**
|
|
198
|
+
* Set multiple values in cache
|
|
199
|
+
*
|
|
200
|
+
* Universal method - stores multiple values efficiently.
|
|
201
|
+
*/
|
|
202
|
+
setMany(entries: Array<{
|
|
203
|
+
key: string;
|
|
204
|
+
value: any;
|
|
205
|
+
options?: CacheOptions;
|
|
206
|
+
}>): Promise<void>;
|
|
207
|
+
/**
|
|
208
|
+
* Delete multiple keys from cache
|
|
209
|
+
*
|
|
210
|
+
* Universal method - removes multiple cached values efficiently.
|
|
211
|
+
*/
|
|
212
|
+
deleteMany(keys: string[], namespace?: string): Promise<number>;
|
|
213
|
+
/**
|
|
214
|
+
* List keys matching pattern
|
|
215
|
+
*
|
|
216
|
+
* Universal method - finds all keys matching a pattern.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* const keys = await sdk.cache.keys('user:*')
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
keys(pattern: string, namespace?: string): Promise<string[]>;
|
|
224
|
+
/**
|
|
225
|
+
* Get TTL (time to live) for a key
|
|
226
|
+
*
|
|
227
|
+
* Universal method - returns remaining TTL in seconds.
|
|
228
|
+
*/
|
|
229
|
+
ttl(key: string, namespace?: string): Promise<number | null>;
|
|
230
|
+
/**
|
|
231
|
+
* Extend TTL for a key
|
|
232
|
+
*
|
|
233
|
+
* Universal method - extends expiration time for cached value.
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* // Extend TTL by 1 hour
|
|
238
|
+
* await sdk.cache.extend('session:abc', 3600)
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
extend(key: string, additionalTTL: number, namespace?: string): Promise<boolean>;
|
|
242
|
+
/**
|
|
243
|
+
* Increment numeric value in cache
|
|
244
|
+
*
|
|
245
|
+
* Universal method - atomically increments cached number.
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```typescript
|
|
249
|
+
* // Increment page view counter
|
|
250
|
+
* const views = await sdk.cache.increment('page:views:home', 1)
|
|
251
|
+
* ```
|
|
252
|
+
*/
|
|
253
|
+
increment(key: string, amount?: number, namespace?: string): Promise<number>;
|
|
254
|
+
/**
|
|
255
|
+
* Decrement numeric value in cache
|
|
256
|
+
*
|
|
257
|
+
* Universal method - atomically decrements cached number.
|
|
258
|
+
*/
|
|
259
|
+
decrement(key: string, amount?: number, namespace?: string): Promise<number>;
|
|
260
|
+
/**
|
|
261
|
+
* Warm cache with data
|
|
262
|
+
*
|
|
263
|
+
* Universal method - preloads cache with frequently accessed data.
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* await sdk.cache.warm([
|
|
268
|
+
* { key: 'dashboard:kpis', fn: () => sdk.analytics.getKPIs(), ttl: 300 },
|
|
269
|
+
* { key: 'dashboard:trends', fn: () => sdk.analytics.getTrends(...), ttl: 300 }
|
|
270
|
+
* ])
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
273
|
+
warm(entries: Array<{
|
|
274
|
+
key: string;
|
|
275
|
+
fn: () => Promise<any>;
|
|
276
|
+
options?: CacheOptions;
|
|
277
|
+
}>): Promise<void>;
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=CacheModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheModule.d.ts","sourceRoot":"","sources":["../../../src/modules/cache/CacheModule.ts"],"names":[],"mappings":"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"}
|