@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,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Varity SDK - Credential Proxy Client
|
|
3
|
+
*
|
|
4
|
+
* Client-side integration with Varity Credential Proxy service.
|
|
5
|
+
* Fetches credentials from server-side proxy instead of bundling them in client code.
|
|
6
|
+
*
|
|
7
|
+
* **Security Model**:
|
|
8
|
+
* - Real credentials stored server-side ONLY
|
|
9
|
+
* - Client receives session-based tokens
|
|
10
|
+
* - No credentials in client bundles
|
|
11
|
+
* - Automatic session management
|
|
12
|
+
*
|
|
13
|
+
* @example Usage in SDK
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { ProxyCredentialClient } from '@varity-labs/sdk';
|
|
16
|
+
*
|
|
17
|
+
* const client = new ProxyCredentialClient();
|
|
18
|
+
* const credentials = await client.getCredentials();
|
|
19
|
+
*
|
|
20
|
+
* // Use credentials with Privy/thirdweb
|
|
21
|
+
* const privyAppId = credentials.privy.appId;
|
|
22
|
+
* const thirdwebClientId = credentials.thirdweb.clientId;
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Credential Proxy Client
|
|
27
|
+
*
|
|
28
|
+
* Fetches Privy and thirdweb credentials from server-side proxy.
|
|
29
|
+
* Handles session management, caching, and automatic refresh.
|
|
30
|
+
*/
|
|
31
|
+
export class ProxyCredentialClient {
|
|
32
|
+
constructor(config = {}) {
|
|
33
|
+
// Session management
|
|
34
|
+
this.sessionToken = null;
|
|
35
|
+
this.sessionExpiresAt = null;
|
|
36
|
+
// Cached credentials
|
|
37
|
+
this.cachedCredentials = null;
|
|
38
|
+
// Use production URL by default, fallback to localhost for local testing
|
|
39
|
+
this.proxyUrl = config.proxyUrl ||
|
|
40
|
+
process.env.VARITY_CREDENTIAL_PROXY_URL ||
|
|
41
|
+
'https://api.varity.so/credentials';
|
|
42
|
+
this.appDomain = config.appDomain || this.detectAppDomain();
|
|
43
|
+
this.appId = config.appId;
|
|
44
|
+
this.debug = config.debug || false;
|
|
45
|
+
this.log('ProxyCredentialClient initialized', {
|
|
46
|
+
proxyUrl: this.proxyUrl,
|
|
47
|
+
appDomain: this.appDomain,
|
|
48
|
+
appId: this.appId,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get credentials from proxy
|
|
53
|
+
*
|
|
54
|
+
* Automatically handles session creation and refresh.
|
|
55
|
+
*
|
|
56
|
+
* @returns Credential configuration
|
|
57
|
+
*/
|
|
58
|
+
async getCredentials() {
|
|
59
|
+
// Return cached credentials if still valid
|
|
60
|
+
if (this.cachedCredentials && this.isSessionValid()) {
|
|
61
|
+
this.log('Using cached credentials');
|
|
62
|
+
return this.cachedCredentials;
|
|
63
|
+
}
|
|
64
|
+
// Create or refresh session
|
|
65
|
+
if (!this.isSessionValid()) {
|
|
66
|
+
await this.createSession();
|
|
67
|
+
}
|
|
68
|
+
// Fetch credentials in parallel
|
|
69
|
+
const [privyConfig, thirdwebConfig] = await Promise.all([
|
|
70
|
+
this.getPrivyConfig(),
|
|
71
|
+
this.getThirdwebConfig(),
|
|
72
|
+
]);
|
|
73
|
+
// Cache credentials
|
|
74
|
+
this.cachedCredentials = {
|
|
75
|
+
privy: {
|
|
76
|
+
appId: privyConfig.app_id,
|
|
77
|
+
},
|
|
78
|
+
thirdweb: {
|
|
79
|
+
clientId: thirdwebConfig.client_id,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
this.log('Credentials fetched successfully', this.cachedCredentials);
|
|
83
|
+
return this.cachedCredentials;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Create a new session with the credential proxy
|
|
87
|
+
*/
|
|
88
|
+
async createSession() {
|
|
89
|
+
this.log('Creating new session');
|
|
90
|
+
try {
|
|
91
|
+
const response = await fetch(`${this.proxyUrl}/auth/session`, {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
headers: {
|
|
94
|
+
'Content-Type': 'application/json',
|
|
95
|
+
},
|
|
96
|
+
body: JSON.stringify({
|
|
97
|
+
app_domain: this.appDomain,
|
|
98
|
+
app_id: this.appId,
|
|
99
|
+
}),
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
const error = await response.text();
|
|
103
|
+
throw new Error(`Failed to create session: ${response.status} ${error}`);
|
|
104
|
+
}
|
|
105
|
+
const data = await response.json();
|
|
106
|
+
this.sessionToken = data.session_token;
|
|
107
|
+
this.sessionExpiresAt = new Date(data.expires_at);
|
|
108
|
+
this.log('Session created', {
|
|
109
|
+
token: this.sessionToken?.substring(0, 8) + '...',
|
|
110
|
+
expiresAt: this.sessionExpiresAt,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
throw new Error(`Failed to create session with credential proxy: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get Privy configuration from proxy
|
|
119
|
+
*/
|
|
120
|
+
async getPrivyConfig() {
|
|
121
|
+
if (!this.sessionToken) {
|
|
122
|
+
throw new Error('No session token available');
|
|
123
|
+
}
|
|
124
|
+
this.log('Fetching Privy config');
|
|
125
|
+
try {
|
|
126
|
+
const response = await fetch(`${this.proxyUrl}/auth/privy/config?session_token=${this.sessionToken}`);
|
|
127
|
+
if (!response.ok) {
|
|
128
|
+
const error = await response.text();
|
|
129
|
+
throw new Error(`Failed to fetch Privy config: ${response.status} ${error}`);
|
|
130
|
+
}
|
|
131
|
+
const data = await response.json();
|
|
132
|
+
this.log('Privy config fetched', { appId: data.app_id.substring(0, 8) + '...' });
|
|
133
|
+
return data;
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
throw new Error(`Failed to fetch Privy config: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get thirdweb configuration from proxy
|
|
141
|
+
*/
|
|
142
|
+
async getThirdwebConfig() {
|
|
143
|
+
if (!this.sessionToken) {
|
|
144
|
+
throw new Error('No session token available');
|
|
145
|
+
}
|
|
146
|
+
this.log('Fetching thirdweb config');
|
|
147
|
+
try {
|
|
148
|
+
const response = await fetch(`${this.proxyUrl}/auth/thirdweb/config?session_token=${this.sessionToken}`);
|
|
149
|
+
if (!response.ok) {
|
|
150
|
+
const error = await response.text();
|
|
151
|
+
throw new Error(`Failed to fetch thirdweb config: ${response.status} ${error}`);
|
|
152
|
+
}
|
|
153
|
+
const data = await response.json();
|
|
154
|
+
this.log('thirdweb config fetched', { clientId: data.client_id.substring(0, 8) + '...' });
|
|
155
|
+
return data;
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
throw new Error(`Failed to fetch thirdweb config: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Check if current session is still valid
|
|
163
|
+
*/
|
|
164
|
+
isSessionValid() {
|
|
165
|
+
if (!this.sessionToken || !this.sessionExpiresAt) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
// Add 5 minute buffer before expiry
|
|
169
|
+
const bufferMs = 5 * 60 * 1000;
|
|
170
|
+
const now = new Date();
|
|
171
|
+
const expiryWithBuffer = new Date(this.sessionExpiresAt.getTime() - bufferMs);
|
|
172
|
+
return now < expiryWithBuffer;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Detect app domain from browser environment
|
|
176
|
+
*/
|
|
177
|
+
detectAppDomain() {
|
|
178
|
+
// Check if running in browser
|
|
179
|
+
if (typeof window !== 'undefined' && window.location) {
|
|
180
|
+
return window.location.hostname + (window.location.port ? `:${window.location.port}` : '');
|
|
181
|
+
}
|
|
182
|
+
// Fallback for SSR/Node.js
|
|
183
|
+
return 'localhost:3000';
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Clear cached credentials and session
|
|
187
|
+
*/
|
|
188
|
+
clearCache() {
|
|
189
|
+
this.log('Clearing cache');
|
|
190
|
+
this.sessionToken = null;
|
|
191
|
+
this.sessionExpiresAt = null;
|
|
192
|
+
this.cachedCredentials = null;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Debug logging
|
|
196
|
+
*/
|
|
197
|
+
log(message, data) {
|
|
198
|
+
if (this.debug) {
|
|
199
|
+
console.log(`[ProxyCredentialClient] ${message}`, data || '');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Global singleton instance for convenience
|
|
205
|
+
*/
|
|
206
|
+
let globalProxyClient = null;
|
|
207
|
+
/**
|
|
208
|
+
* Get or create global ProxyCredentialClient instance
|
|
209
|
+
*
|
|
210
|
+
* @param config - Optional configuration (only used on first call)
|
|
211
|
+
* @returns Global ProxyCredentialClient instance
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* import { getProxyCredentials } from '@varity-labs/sdk';
|
|
216
|
+
*
|
|
217
|
+
* const credentials = await getProxyCredentials();
|
|
218
|
+
* // Use credentials.privy.appId and credentials.thirdweb.clientId
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
export async function getProxyCredentials(config) {
|
|
222
|
+
if (!globalProxyClient) {
|
|
223
|
+
globalProxyClient = new ProxyCredentialClient(config);
|
|
224
|
+
}
|
|
225
|
+
return globalProxyClient.getCredentials();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Check if credential proxy is available
|
|
229
|
+
*
|
|
230
|
+
* Tests connectivity to the credential proxy service.
|
|
231
|
+
*
|
|
232
|
+
* @param proxyUrl - Optional proxy URL (defaults to production URL)
|
|
233
|
+
* @returns true if proxy is available, false otherwise
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* import { isProxyAvailable } from '@varity-labs/sdk';
|
|
238
|
+
*
|
|
239
|
+
* if (await isProxyAvailable()) {
|
|
240
|
+
* // Use proxy credentials
|
|
241
|
+
* } else {
|
|
242
|
+
* // Fallback to manual credentials
|
|
243
|
+
* }
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
export async function isProxyAvailable(proxyUrl = process.env.VARITY_CREDENTIAL_PROXY_URL || 'https://api.varity.so/credentials') {
|
|
247
|
+
try {
|
|
248
|
+
const response = await fetch(`${proxyUrl}/health`, {
|
|
249
|
+
method: 'GET',
|
|
250
|
+
signal: AbortSignal.timeout(5000), // 5 second timeout
|
|
251
|
+
});
|
|
252
|
+
return response.ok;
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
// Silently fail - this is expected if proxy not deployed yet
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Resolve credentials with automatic proxy fallback
|
|
261
|
+
*
|
|
262
|
+
* Attempts to use credential proxy first, falls back to manual credentials if proxy unavailable.
|
|
263
|
+
*
|
|
264
|
+
* @param manualAppId - Manual Privy app ID (fallback)
|
|
265
|
+
* @param manualClientId - Manual thirdweb client ID (fallback)
|
|
266
|
+
* @param config - Proxy client configuration
|
|
267
|
+
* @returns Resolved credentials
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```typescript
|
|
271
|
+
* import { resolveCredentialsWithProxy } from '@varity-labs/sdk';
|
|
272
|
+
*
|
|
273
|
+
* const credentials = await resolveCredentialsWithProxy(
|
|
274
|
+
* process.env.PRIVY_APP_ID,
|
|
275
|
+
* process.env.THIRDWEB_CLIENT_ID
|
|
276
|
+
* );
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
export async function resolveCredentialsWithProxy(manualAppId, manualClientId, config) {
|
|
280
|
+
// Try proxy first
|
|
281
|
+
try {
|
|
282
|
+
const proxyUrl = config?.proxyUrl ||
|
|
283
|
+
process.env.VARITY_CREDENTIAL_PROXY_URL ||
|
|
284
|
+
'https://api.varity.so/credentials';
|
|
285
|
+
const available = await isProxyAvailable(proxyUrl);
|
|
286
|
+
if (available) {
|
|
287
|
+
// Show clean informative message (only in development)
|
|
288
|
+
if (process.env.NODE_ENV === 'development') {
|
|
289
|
+
console.log('✓ Using Varity authentication (no setup required)');
|
|
290
|
+
}
|
|
291
|
+
return await getProxyCredentials(config);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
// Silently fall back to manual credentials
|
|
296
|
+
if (config?.debug) {
|
|
297
|
+
console.warn('Credential proxy unavailable, using fallback credentials:', error);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// Fallback to manual credentials
|
|
301
|
+
if (manualAppId && manualClientId) {
|
|
302
|
+
if (config?.debug) {
|
|
303
|
+
console.log('✓ Using manual credentials');
|
|
304
|
+
}
|
|
305
|
+
return {
|
|
306
|
+
privy: { appId: manualAppId },
|
|
307
|
+
thirdweb: { clientId: manualClientId },
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
// Check environment variables as fallback
|
|
311
|
+
const envAppId = process.env.VARITY_PRIVY_APP_ID;
|
|
312
|
+
const envClientId = process.env.VARITY_THIRDWEB_CLIENT_ID;
|
|
313
|
+
if (envAppId && envClientId) {
|
|
314
|
+
if (config?.debug) {
|
|
315
|
+
console.log('✓ Using credentials from environment variables');
|
|
316
|
+
}
|
|
317
|
+
return {
|
|
318
|
+
privy: { appId: envAppId },
|
|
319
|
+
thirdweb: { clientId: envClientId },
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
// No credentials available - throw helpful error
|
|
323
|
+
throw new Error(`Varity credentials not available.
|
|
324
|
+
|
|
325
|
+
The Varity Credential Proxy could not be reached and no manual credentials were provided.
|
|
326
|
+
|
|
327
|
+
To fix this, either:
|
|
328
|
+
|
|
329
|
+
1. Deploy your app via Varity (recommended):
|
|
330
|
+
$ varitykit app deploy --hosting akash
|
|
331
|
+
→ Credentials will be provided automatically
|
|
332
|
+
|
|
333
|
+
2. Set environment variables:
|
|
334
|
+
VARITY_PRIVY_APP_ID=your-privy-app-id
|
|
335
|
+
VARITY_THIRDWEB_CLIENT_ID=your-thirdweb-client-id
|
|
336
|
+
|
|
337
|
+
3. Pass credentials directly:
|
|
338
|
+
<PrivyStack appId="..." thirdwebClientId="...">
|
|
339
|
+
|
|
340
|
+
Get your own credentials at:
|
|
341
|
+
- Privy: https://dashboard.privy.io
|
|
342
|
+
- thirdweb: https://thirdweb.com/dashboard
|
|
343
|
+
|
|
344
|
+
Documentation: https://docs.varity.so/credentials`);
|
|
345
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Varity SDK - Shared Development Credentials
|
|
3
|
+
*
|
|
4
|
+
* Provides shared development credentials for seamless developer experience.
|
|
5
|
+
* Developers can use Varity packages without manually setting up Privy and thirdweb credentials.
|
|
6
|
+
*
|
|
7
|
+
* **IMPORTANT**: These credentials are for DEVELOPMENT/TESTING ONLY.
|
|
8
|
+
* For production deployments, you MUST use your own credentials.
|
|
9
|
+
*
|
|
10
|
+
* @example Zero-config development
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
13
|
+
*
|
|
14
|
+
* // Works immediately - uses shared dev credentials
|
|
15
|
+
* <PrivyStack>
|
|
16
|
+
* <YourApp />
|
|
17
|
+
* </PrivyStack>
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example Production with custom credentials
|
|
21
|
+
* ```tsx
|
|
22
|
+
* import { PrivyStack } from '@varity-labs/ui-kit';
|
|
23
|
+
*
|
|
24
|
+
* <PrivyStack
|
|
25
|
+
* appId={process.env.PRIVY_APP_ID}
|
|
26
|
+
* thirdwebClientId={process.env.THIRDWEB_CLIENT_ID}
|
|
27
|
+
* >
|
|
28
|
+
* <YourApp />
|
|
29
|
+
* </PrivyStack>
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Shared development credentials configuration
|
|
34
|
+
*
|
|
35
|
+
* These credentials are managed by Varity and shared across all development environments.
|
|
36
|
+
* They enable developers to start building immediately without manual credential setup.
|
|
37
|
+
*
|
|
38
|
+
* **Security Notes**:
|
|
39
|
+
* - Rate limiting is applied to prevent abuse
|
|
40
|
+
* - Only works with Varity L3 Testnet (Chain ID 33529)
|
|
41
|
+
* - Not suitable for production use
|
|
42
|
+
* - May be rotated periodically
|
|
43
|
+
*
|
|
44
|
+
* **When to Upgrade**:
|
|
45
|
+
* - Moving to production
|
|
46
|
+
* - Need custom branding in auth flows
|
|
47
|
+
* - Require higher rate limits
|
|
48
|
+
* - Building on non-Varity chains
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* VARITY_DEV_CREDENTIALS - Loaded from Credential Proxy or Environment Variables
|
|
52
|
+
*
|
|
53
|
+
* SECURITY: Credentials are NO LONGER hardcoded in this file.
|
|
54
|
+
* They are fetched from:
|
|
55
|
+
* 1. Varity Credential Proxy (api.varity.so/credentials) - Recommended
|
|
56
|
+
* 2. Environment variables (VARITY_PRIVY_APP_ID, VARITY_THIRDWEB_CLIENT_ID)
|
|
57
|
+
*
|
|
58
|
+
* The credential proxy ensures credentials are never exposed in client bundles.
|
|
59
|
+
*/
|
|
60
|
+
export declare const VARITY_DEV_CREDENTIALS: {
|
|
61
|
+
/**
|
|
62
|
+
* Privy configuration
|
|
63
|
+
*
|
|
64
|
+
* Privy provides authentication (email, social, wallet).
|
|
65
|
+
* Get your own credentials at: https://dashboard.privy.io
|
|
66
|
+
*/
|
|
67
|
+
readonly privy: {
|
|
68
|
+
/**
|
|
69
|
+
* Privy App ID - loaded from environment variable
|
|
70
|
+
*
|
|
71
|
+
* Set VARITY_PRIVY_APP_ID in your environment
|
|
72
|
+
* Or use the Varity Credential Proxy for automatic credentials
|
|
73
|
+
*/
|
|
74
|
+
readonly appId: string;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* thirdweb configuration
|
|
78
|
+
*
|
|
79
|
+
* thirdweb provides blockchain infrastructure (chain abstraction, contracts, storage).
|
|
80
|
+
* Get your own credentials at: https://thirdweb.com/dashboard
|
|
81
|
+
*/
|
|
82
|
+
readonly thirdweb: {
|
|
83
|
+
/**
|
|
84
|
+
* thirdweb Client ID - loaded from environment variable
|
|
85
|
+
*
|
|
86
|
+
* Set VARITY_THIRDWEB_CLIENT_ID in your environment
|
|
87
|
+
* Or use the Varity Credential Proxy for automatic credentials
|
|
88
|
+
*/
|
|
89
|
+
readonly clientId: string;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Rate limiting information (informational only)
|
|
93
|
+
*/
|
|
94
|
+
readonly rateLimits: {
|
|
95
|
+
readonly privy: {
|
|
96
|
+
readonly monthlyActiveUsers: 1000;
|
|
97
|
+
readonly note: "Shared via Varity Credential Proxy";
|
|
98
|
+
};
|
|
99
|
+
readonly thirdweb: {
|
|
100
|
+
readonly requestsPerSecond: 100;
|
|
101
|
+
readonly note: "Shared via Varity Credential Proxy";
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Type definition for credential configuration
|
|
107
|
+
*/
|
|
108
|
+
export interface CredentialConfig {
|
|
109
|
+
privy: {
|
|
110
|
+
appId: string;
|
|
111
|
+
};
|
|
112
|
+
thirdweb: {
|
|
113
|
+
clientId: string;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check if using shared development credentials
|
|
118
|
+
*
|
|
119
|
+
* @param appId - Privy app ID to check
|
|
120
|
+
* @param clientId - thirdweb client ID to check
|
|
121
|
+
* @returns true if using shared development credentials
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* if (isUsingDevCredentials(appId, clientId)) {
|
|
126
|
+
* console.warn('Using shared dev credentials - upgrade for production');
|
|
127
|
+
* }
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare function isUsingDevCredentials(appId?: string, clientId?: string): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Check if credentials are suitable for production use
|
|
133
|
+
*
|
|
134
|
+
* @param appId - Privy app ID to check
|
|
135
|
+
* @param clientId - thirdweb client ID to check
|
|
136
|
+
* @returns true if credentials are production-ready
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* if (!isProductionCredentials(appId, clientId)) {
|
|
141
|
+
* throw new Error('Production requires custom credentials');
|
|
142
|
+
* }
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export declare function isProductionCredentials(appId?: string, clientId?: string): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Get warning message for development credential usage
|
|
148
|
+
*
|
|
149
|
+
* @param environment - Current environment (development, staging, production)
|
|
150
|
+
* @returns Warning message or null (deprecated - always returns null)
|
|
151
|
+
*
|
|
152
|
+
* @deprecated This function is deprecated. Varity now uses credential proxy
|
|
153
|
+
* and provides a seamless experience without warnings.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const warning = getCredentialWarning('production');
|
|
158
|
+
* // Always returns null now
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
export declare function getCredentialWarning(environment: 'development' | 'staging' | 'production'): string | null;
|
|
162
|
+
/**
|
|
163
|
+
* Log development credential usage warning
|
|
164
|
+
*
|
|
165
|
+
* @param appId - Privy app ID being used
|
|
166
|
+
* @param clientId - thirdweb client ID being used
|
|
167
|
+
* @param usingProxy - Whether credentials are from proxy (suppresses warnings)
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* logCredentialUsage(appId, clientId);
|
|
172
|
+
* // Logs friendly message if using shared dev credentials
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export declare function logCredentialUsage(appId?: string, clientId?: string, usingProxy?: boolean): void;
|
|
176
|
+
/**
|
|
177
|
+
* Resolve credentials with fallback to dev credentials
|
|
178
|
+
*
|
|
179
|
+
* @param appId - Custom Privy app ID (optional)
|
|
180
|
+
* @param clientId - Custom thirdweb client ID (optional)
|
|
181
|
+
* @param usingProxy - Whether credentials are from proxy (suppresses warnings)
|
|
182
|
+
* @returns Resolved credential configuration
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* const creds = resolveCredentials(customAppId, customClientId);
|
|
187
|
+
* // Falls back to VARITY_DEV_CREDENTIALS if custom credentials not provided
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
export declare function resolveCredentials(appId?: string, clientId?: string, usingProxy?: boolean): CredentialConfig;
|
|
191
|
+
/**
|
|
192
|
+
* Validate credentials are configured correctly
|
|
193
|
+
*
|
|
194
|
+
* @param appId - Privy app ID to validate
|
|
195
|
+
* @param clientId - thirdweb client ID to validate
|
|
196
|
+
* @throws Error if credentials are invalid
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* try {
|
|
201
|
+
* validateCredentials(appId, clientId);
|
|
202
|
+
* } catch (error) {
|
|
203
|
+
* console.error('Invalid credentials:', error.message);
|
|
204
|
+
* }
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
export declare function validateCredentials(appId: string, clientId: string): void;
|
|
208
|
+
/**
|
|
209
|
+
* Get upgrade instructions for production
|
|
210
|
+
*
|
|
211
|
+
* @returns Markdown-formatted upgrade instructions
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* console.log(getUpgradeInstructions());
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
export declare function getUpgradeInstructions(): string;
|
|
219
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;IACjC;;;;;OAKG;;QAED;;;;;WAKG;;;IAIL;;;;;OAKG;;QAED;;;;;WAKG;;;IAIL;;OAEG;;;;;;;;;;;CAWK,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAKT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAET;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GACpD,MAAM,GAAG,IAAI,CAIf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,GAAE,OAAe,GAC1B,IAAI,CAiBN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,GAAE,OAAe,GAC1B,gBAAgB,CAuClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,IAAI,CAmBN;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuE/C"}
|