@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,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Varity SDK - Storage Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Base interface that ALL storage backends must implement to ensure
|
|
5
|
+
* consistent behavior across Filecoin, S3, GCS, and multi-tier storage.
|
|
6
|
+
*
|
|
7
|
+
* This interface provides a unified API for storage operations regardless
|
|
8
|
+
* of the underlying backend, enabling seamless migration and multi-backend support.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import type { StorageBackend, UploadOptions, StorageResult, StorageItem, ListOptions, StorageMetadata } from '@varity-labs/types';
|
|
13
|
+
/**
|
|
14
|
+
* Base storage adapter interface
|
|
15
|
+
*
|
|
16
|
+
* All storage backends (Filecoin/IPFS, S3-compatible, GCS-compatible, Multi-tier)
|
|
17
|
+
* MUST implement this interface to ensure consistent behavior across the SDK.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* class FilecoinStorageAdapter implements IStorageAdapter {
|
|
22
|
+
* async upload(data: Buffer | string, options: UploadOptions): Promise<StorageResult> {
|
|
23
|
+
* // Implementation for Filecoin/IPFS
|
|
24
|
+
* }
|
|
25
|
+
* // ... other methods
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export interface IStorageAdapter {
|
|
30
|
+
/**
|
|
31
|
+
* Upload data to storage backend
|
|
32
|
+
*
|
|
33
|
+
* @param data - Data to upload (Buffer for binary, string for text, Blob for files)
|
|
34
|
+
* @param options - Upload configuration including layer, tier, metadata, encryption
|
|
35
|
+
* @returns Storage result with identifier (CID, S3 key, etc.) and metadata
|
|
36
|
+
*
|
|
37
|
+
* @throws {Error} If upload fails due to network, authentication, or size limits
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const result = await adapter.upload(Buffer.from('Hello World'), {
|
|
42
|
+
* layer: StorageLayer.CUSTOMER_DATA,
|
|
43
|
+
* tier: StorageTier.HOT,
|
|
44
|
+
* encrypt: true,
|
|
45
|
+
* metadata: { contentType: 'text/plain' }
|
|
46
|
+
* })
|
|
47
|
+
* console.log('Uploaded:', result.identifier)
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
upload(data: Buffer | string | Blob, options: UploadOptions): Promise<StorageResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Download data from storage backend
|
|
53
|
+
*
|
|
54
|
+
* @param identifier - Storage identifier (CID for Filecoin, key for S3/GCS)
|
|
55
|
+
* @returns Downloaded data as Buffer
|
|
56
|
+
*
|
|
57
|
+
* @throws {Error} If object not found or download fails
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const data = await adapter.download('QmXYZ...')
|
|
62
|
+
* const text = data.toString('utf-8')
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
download(identifier: string): Promise<Buffer>;
|
|
66
|
+
/**
|
|
67
|
+
* Delete data from storage backend
|
|
68
|
+
*
|
|
69
|
+
* @param identifier - Storage identifier to delete
|
|
70
|
+
*
|
|
71
|
+
* @throws {Error} If deletion fails or object not found
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* await adapter.delete('QmXYZ...')
|
|
76
|
+
* console.log('Deleted successfully')
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
delete(identifier: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Check if object exists in storage
|
|
82
|
+
*
|
|
83
|
+
* @param identifier - Storage identifier to check
|
|
84
|
+
* @returns True if object exists, false otherwise
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* if (await adapter.exists('QmXYZ...')) {
|
|
89
|
+
* console.log('Object exists')
|
|
90
|
+
* }
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
exists(identifier: string): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* List stored objects matching criteria
|
|
96
|
+
*
|
|
97
|
+
* Supports pagination, prefix filtering, and metadata inclusion.
|
|
98
|
+
*
|
|
99
|
+
* @param options - List filtering and pagination options
|
|
100
|
+
* @returns Array of storage items with metadata
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const items = await adapter.list({
|
|
105
|
+
* prefix: 'customer-123/',
|
|
106
|
+
* maxResults: 100,
|
|
107
|
+
* tier: StorageTier.HOT
|
|
108
|
+
* })
|
|
109
|
+
* console.log(`Found ${items.length} objects`)
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
list(options?: ListOptions): Promise<StorageItem[]>;
|
|
113
|
+
/**
|
|
114
|
+
* Get object metadata without downloading content
|
|
115
|
+
*
|
|
116
|
+
* Useful for checking size, modified time, and custom metadata
|
|
117
|
+
* without incurring bandwidth costs.
|
|
118
|
+
*
|
|
119
|
+
* @param identifier - Storage identifier
|
|
120
|
+
* @returns Object metadata including size, timestamps, tier
|
|
121
|
+
*
|
|
122
|
+
* @throws {Error} If object not found
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const metadata = await adapter.getMetadata('QmXYZ...')
|
|
127
|
+
* console.log(`Size: ${metadata.size} bytes`)
|
|
128
|
+
* console.log(`Tier: ${metadata.tier}`)
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
getMetadata(identifier: string): Promise<StorageMetadata>;
|
|
132
|
+
/**
|
|
133
|
+
* Get the storage backend type
|
|
134
|
+
*
|
|
135
|
+
* @returns Storage backend enum value
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* const backend = adapter.getBackendType()
|
|
140
|
+
* if (backend === StorageBackend.FILECOIN_IPFS) {
|
|
141
|
+
* console.log('Using Filecoin/IPFS')
|
|
142
|
+
* }
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
getBackendType(): StorageBackend;
|
|
146
|
+
/**
|
|
147
|
+
* Copy object from one location to another (optional)
|
|
148
|
+
*
|
|
149
|
+
* Not all backends support efficient server-side copy.
|
|
150
|
+
* If not implemented, will throw UnsupportedOperationError.
|
|
151
|
+
*
|
|
152
|
+
* @param source - Source identifier
|
|
153
|
+
* @param destination - Destination identifier
|
|
154
|
+
*
|
|
155
|
+
* @throws {UnsupportedOperationError} If backend doesn't support copy
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* try {
|
|
160
|
+
* await adapter.copy('source-key', 'destination-key')
|
|
161
|
+
* } catch (err) {
|
|
162
|
+
* if (err.name === 'UnsupportedOperationError') {
|
|
163
|
+
* // Fallback to download + upload
|
|
164
|
+
* }
|
|
165
|
+
* }
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
copy?(source: string, destination: string): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Move object from one location to another (optional)
|
|
171
|
+
*
|
|
172
|
+
* Not all backends support efficient server-side move.
|
|
173
|
+
* If not implemented, will throw UnsupportedOperationError.
|
|
174
|
+
*
|
|
175
|
+
* @param source - Source identifier
|
|
176
|
+
* @param destination - Destination identifier
|
|
177
|
+
*
|
|
178
|
+
* @throws {UnsupportedOperationError} If backend doesn't support move
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* await adapter.move('old-key', 'new-key')
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
move?(source: string, destination: string): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* Get object access URL (optional)
|
|
188
|
+
*
|
|
189
|
+
* Returns a publicly accessible URL for the object.
|
|
190
|
+
* For backends that support presigned URLs, this generates one.
|
|
191
|
+
*
|
|
192
|
+
* @param identifier - Storage identifier
|
|
193
|
+
* @param expiresIn - Expiration time in seconds (for presigned URLs)
|
|
194
|
+
* @returns Gateway URL or presigned URL
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```typescript
|
|
198
|
+
* const url = await adapter.getAccessUrl('QmXYZ...', 3600)
|
|
199
|
+
* console.log('Download URL:', url)
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
getAccessUrl?(identifier: string, expiresIn?: number): Promise<string>;
|
|
203
|
+
/**
|
|
204
|
+
* Update object metadata (optional)
|
|
205
|
+
*
|
|
206
|
+
* Not all backends support metadata updates without re-uploading.
|
|
207
|
+
*
|
|
208
|
+
* @param identifier - Storage identifier
|
|
209
|
+
* @param metadata - New metadata to apply
|
|
210
|
+
*
|
|
211
|
+
* @throws {UnsupportedOperationError} If backend doesn't support metadata updates
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* await adapter.updateMetadata('QmXYZ...', {
|
|
216
|
+
* contentType: 'application/json',
|
|
217
|
+
* customKey: 'customValue'
|
|
218
|
+
* })
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
updateMetadata?(identifier: string, metadata: Record<string, any>): Promise<void>;
|
|
222
|
+
/**
|
|
223
|
+
* Get storage backend health status (optional)
|
|
224
|
+
*
|
|
225
|
+
* @returns Health check result with availability and latency
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* const health = await adapter.healthCheck()
|
|
230
|
+
* console.log(`Backend ${health.healthy ? 'healthy' : 'unhealthy'}`)
|
|
231
|
+
* console.log(`Latency: ${health.latencyMs}ms`)
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
healthCheck?(): Promise<{
|
|
235
|
+
healthy: boolean;
|
|
236
|
+
latencyMs: number;
|
|
237
|
+
error?: string;
|
|
238
|
+
}>;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Error thrown when an operation is not supported by the backend
|
|
242
|
+
*/
|
|
243
|
+
export declare class UnsupportedOperationError extends Error {
|
|
244
|
+
constructor(operation: string, backend: StorageBackend);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Base abstract class implementing common adapter functionality
|
|
248
|
+
*
|
|
249
|
+
* Adapters can extend this class to inherit common behavior
|
|
250
|
+
* and only implement backend-specific methods.
|
|
251
|
+
*/
|
|
252
|
+
export declare abstract class BaseStorageAdapter implements IStorageAdapter {
|
|
253
|
+
protected backend: StorageBackend;
|
|
254
|
+
constructor(backend: StorageBackend);
|
|
255
|
+
abstract upload(data: Buffer | string | Blob, options: UploadOptions): Promise<StorageResult>;
|
|
256
|
+
abstract download(identifier: string): Promise<Buffer>;
|
|
257
|
+
abstract delete(identifier: string): Promise<void>;
|
|
258
|
+
abstract exists(identifier: string): Promise<boolean>;
|
|
259
|
+
abstract list(options?: ListOptions): Promise<StorageItem[]>;
|
|
260
|
+
abstract getMetadata(identifier: string): Promise<StorageMetadata>;
|
|
261
|
+
getBackendType(): StorageBackend;
|
|
262
|
+
/**
|
|
263
|
+
* Default copy implementation (download + upload)
|
|
264
|
+
*/
|
|
265
|
+
copy(source: string, destination: string): Promise<void>;
|
|
266
|
+
/**
|
|
267
|
+
* Default move implementation (copy + delete)
|
|
268
|
+
*/
|
|
269
|
+
move(source: string, destination: string): Promise<void>;
|
|
270
|
+
/**
|
|
271
|
+
* Default getAccessUrl implementation
|
|
272
|
+
*/
|
|
273
|
+
getAccessUrl(identifier: string, expiresIn?: number): Promise<string>;
|
|
274
|
+
/**
|
|
275
|
+
* Default updateMetadata implementation
|
|
276
|
+
*/
|
|
277
|
+
updateMetadata(identifier: string, metadata: Record<string, any>): Promise<void>;
|
|
278
|
+
/**
|
|
279
|
+
* Default healthCheck implementation
|
|
280
|
+
*/
|
|
281
|
+
healthCheck(): Promise<{
|
|
282
|
+
healthy: boolean;
|
|
283
|
+
latencyMs: number;
|
|
284
|
+
error?: string;
|
|
285
|
+
}>;
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=IStorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IStorageAdapter.d.ts","sourceRoot":"","sources":["../../../../src/modules/storage/adapters/IStorageAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Varity SDK - Storage Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Base interface that ALL storage backends must implement to ensure
|
|
5
|
+
* consistent behavior across Filecoin, S3, GCS, and multi-tier storage.
|
|
6
|
+
*
|
|
7
|
+
* This interface provides a unified API for storage operations regardless
|
|
8
|
+
* of the underlying backend, enabling seamless migration and multi-backend support.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when an operation is not supported by the backend
|
|
14
|
+
*/
|
|
15
|
+
export class UnsupportedOperationError extends Error {
|
|
16
|
+
constructor(operation, backend) {
|
|
17
|
+
super(`Operation '${operation}' is not supported by backend '${backend}'`);
|
|
18
|
+
this.name = 'UnsupportedOperationError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Base abstract class implementing common adapter functionality
|
|
23
|
+
*
|
|
24
|
+
* Adapters can extend this class to inherit common behavior
|
|
25
|
+
* and only implement backend-specific methods.
|
|
26
|
+
*/
|
|
27
|
+
export class BaseStorageAdapter {
|
|
28
|
+
constructor(backend) {
|
|
29
|
+
this.backend = backend;
|
|
30
|
+
}
|
|
31
|
+
getBackendType() {
|
|
32
|
+
return this.backend;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Default copy implementation (download + upload)
|
|
36
|
+
*/
|
|
37
|
+
async copy(source, destination) {
|
|
38
|
+
throw new UnsupportedOperationError('copy', this.backend);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Default move implementation (copy + delete)
|
|
42
|
+
*/
|
|
43
|
+
async move(source, destination) {
|
|
44
|
+
throw new UnsupportedOperationError('move', this.backend);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Default getAccessUrl implementation
|
|
48
|
+
*/
|
|
49
|
+
async getAccessUrl(identifier, expiresIn) {
|
|
50
|
+
throw new UnsupportedOperationError('getAccessUrl', this.backend);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Default updateMetadata implementation
|
|
54
|
+
*/
|
|
55
|
+
async updateMetadata(identifier, metadata) {
|
|
56
|
+
throw new UnsupportedOperationError('updateMetadata', this.backend);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Default healthCheck implementation
|
|
60
|
+
*/
|
|
61
|
+
async healthCheck() {
|
|
62
|
+
const start = Date.now();
|
|
63
|
+
try {
|
|
64
|
+
// Try to list a single item to check connectivity
|
|
65
|
+
await this.list({ maxResults: 1 });
|
|
66
|
+
return {
|
|
67
|
+
healthy: true,
|
|
68
|
+
latencyMs: Date.now() - start
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
healthy: false,
|
|
74
|
+
latencyMs: Date.now() - start,
|
|
75
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// All exports already declared above (IStorageAdapter interface on line 40,
|
|
81
|
+
// UnsupportedOperationError and BaseStorageAdapter classes on lines 266 and 279)
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Varity SDK - Multi-Tier Storage Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements intelligent hot/cold storage tiering with automatic promotion/demotion
|
|
5
|
+
* based on access patterns. Optimizes costs while maintaining performance.
|
|
6
|
+
*/
|
|
7
|
+
import type { VaritySDK } from '../../../core/VaritySDK';
|
|
8
|
+
import { StorageTier, type UploadOptions, type StorageResult, type StorageItem, type ListOptions, type StorageMetadata, type MultiTierStorageConfig } from '@varity-labs/types';
|
|
9
|
+
import { BaseStorageAdapter } from './IStorageAdapter';
|
|
10
|
+
/**
|
|
11
|
+
* Multi-tier storage adapter with automatic cost optimization
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Hot/Cold tier management
|
|
15
|
+
* - Automatic tier transitions based on access patterns
|
|
16
|
+
* - Access tracking and analytics
|
|
17
|
+
* - Cost optimization through intelligent tiering
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const config: MultiTierStorageConfig = {
|
|
22
|
+
* hotTier: { backend: StorageBackend.FILECOIN_IPFS, replication: 3 },
|
|
23
|
+
* coldTier: { backend: StorageBackend.FILECOIN_IPFS, replication: 2 },
|
|
24
|
+
* autoTiering: {
|
|
25
|
+
* enabled: true,
|
|
26
|
+
* policy: TieringPolicy.ACCESS_BASED,
|
|
27
|
+
* checkInterval: 24
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
* const adapter = new MultiTierAdapter(sdk, config)
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class MultiTierAdapter extends BaseStorageAdapter {
|
|
34
|
+
private sdk;
|
|
35
|
+
private hotTierAdapter;
|
|
36
|
+
private coldTierAdapter;
|
|
37
|
+
private config;
|
|
38
|
+
private tieringMetadata;
|
|
39
|
+
private autoTieringInterval;
|
|
40
|
+
constructor(sdk: VaritySDK, config: MultiTierStorageConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Upload to appropriate tier based on options or auto-tiering rules
|
|
43
|
+
*
|
|
44
|
+
* @param data - Data to upload
|
|
45
|
+
* @param options - Upload options
|
|
46
|
+
* @returns Storage result with tier information
|
|
47
|
+
*/
|
|
48
|
+
upload(data: Buffer | string | Blob, options: UploadOptions): Promise<StorageResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Download from appropriate tier, update access metadata
|
|
51
|
+
*
|
|
52
|
+
* @param identifier - Storage identifier
|
|
53
|
+
* @returns Downloaded data
|
|
54
|
+
*/
|
|
55
|
+
download(identifier: string): Promise<Buffer>;
|
|
56
|
+
/**
|
|
57
|
+
* Delete from all tiers
|
|
58
|
+
*
|
|
59
|
+
* @param identifier - Storage identifier
|
|
60
|
+
*/
|
|
61
|
+
delete(identifier: string): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Check if object exists in any tier
|
|
64
|
+
*
|
|
65
|
+
* @param identifier - Storage identifier
|
|
66
|
+
* @returns True if exists
|
|
67
|
+
*/
|
|
68
|
+
exists(identifier: string): Promise<boolean>;
|
|
69
|
+
/**
|
|
70
|
+
* List objects across all tiers
|
|
71
|
+
*
|
|
72
|
+
* @param options - List options
|
|
73
|
+
* @returns Array of storage items
|
|
74
|
+
*/
|
|
75
|
+
list(options?: ListOptions): Promise<StorageItem[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Get metadata for an object
|
|
78
|
+
*
|
|
79
|
+
* @param identifier - Storage identifier
|
|
80
|
+
* @returns Storage metadata
|
|
81
|
+
*/
|
|
82
|
+
getMetadata(identifier: string): Promise<StorageMetadata>;
|
|
83
|
+
/**
|
|
84
|
+
* Promote object to a hotter tier
|
|
85
|
+
*
|
|
86
|
+
* @param identifier - Storage identifier
|
|
87
|
+
* @param targetTier - Target tier
|
|
88
|
+
*/
|
|
89
|
+
promoteTier(identifier: string, targetTier: StorageTier): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Demote object to a colder tier (for cost optimization)
|
|
92
|
+
*
|
|
93
|
+
* @param identifier - Storage identifier
|
|
94
|
+
* @param targetTier - Target tier
|
|
95
|
+
*/
|
|
96
|
+
demoteTier(identifier: string, targetTier: StorageTier): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Get access URL for an object
|
|
99
|
+
*
|
|
100
|
+
* @param identifier - Storage identifier
|
|
101
|
+
* @param expiresIn - Expiration time in seconds
|
|
102
|
+
* @returns Gateway URL
|
|
103
|
+
*/
|
|
104
|
+
getAccessUrl(identifier: string, expiresIn?: number): Promise<string>;
|
|
105
|
+
/**
|
|
106
|
+
* Health check for multi-tier backend
|
|
107
|
+
*
|
|
108
|
+
* @returns Combined health status
|
|
109
|
+
*/
|
|
110
|
+
healthCheck(): Promise<{
|
|
111
|
+
healthy: boolean;
|
|
112
|
+
latencyMs: number;
|
|
113
|
+
error?: string;
|
|
114
|
+
}>;
|
|
115
|
+
/**
|
|
116
|
+
* Determine initial tier based on data size and options
|
|
117
|
+
*
|
|
118
|
+
* @param data - Data to upload
|
|
119
|
+
* @param options - Upload options
|
|
120
|
+
* @returns Recommended tier
|
|
121
|
+
*/
|
|
122
|
+
private determineInitialTier;
|
|
123
|
+
/**
|
|
124
|
+
* Get adapter for a specific tier
|
|
125
|
+
*
|
|
126
|
+
* @param tier - Storage tier
|
|
127
|
+
* @returns Adapter instance
|
|
128
|
+
*/
|
|
129
|
+
private getAdapterForTier;
|
|
130
|
+
/**
|
|
131
|
+
* Check if object should be promoted to hot tier
|
|
132
|
+
*
|
|
133
|
+
* @param metadata - Tiering metadata
|
|
134
|
+
* @returns True if should promote
|
|
135
|
+
*/
|
|
136
|
+
private shouldPromote;
|
|
137
|
+
/**
|
|
138
|
+
* Check if object should be demoted to cold tier
|
|
139
|
+
*
|
|
140
|
+
* @param metadata - Tiering metadata
|
|
141
|
+
* @returns True if should demote
|
|
142
|
+
*/
|
|
143
|
+
private shouldDemote;
|
|
144
|
+
/**
|
|
145
|
+
* Schedule promotion for an object
|
|
146
|
+
*
|
|
147
|
+
* @param identifier - Storage identifier
|
|
148
|
+
* @param targetTier - Target tier
|
|
149
|
+
*/
|
|
150
|
+
private schedulePromotion;
|
|
151
|
+
/**
|
|
152
|
+
* Start auto-tiering background process
|
|
153
|
+
*/
|
|
154
|
+
private startAutoTiering;
|
|
155
|
+
/**
|
|
156
|
+
* Stop auto-tiering background process
|
|
157
|
+
*/
|
|
158
|
+
private stopAutoTiering;
|
|
159
|
+
/**
|
|
160
|
+
* Run auto-tiering checks for all objects
|
|
161
|
+
*/
|
|
162
|
+
private runAutoTiering;
|
|
163
|
+
/**
|
|
164
|
+
* Persist metadata to storage
|
|
165
|
+
*
|
|
166
|
+
* @param identifier - Storage identifier
|
|
167
|
+
*/
|
|
168
|
+
private persistMetadata;
|
|
169
|
+
/**
|
|
170
|
+
* Load metadata from storage
|
|
171
|
+
*
|
|
172
|
+
* @param identifier - Storage identifier
|
|
173
|
+
* @returns Tiering metadata or null
|
|
174
|
+
*/
|
|
175
|
+
private loadMetadata;
|
|
176
|
+
/**
|
|
177
|
+
* Delete metadata from storage
|
|
178
|
+
*
|
|
179
|
+
* @param identifier - Storage identifier
|
|
180
|
+
*/
|
|
181
|
+
private deleteMetadata;
|
|
182
|
+
/**
|
|
183
|
+
* Clean up resources
|
|
184
|
+
*/
|
|
185
|
+
destroy(): void;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=MultiTierAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiTierAdapter.d.ts","sourceRoot":"","sources":["../../../../src/modules/storage/adapters/MultiTierAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAGL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAetD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,mBAAmB,CAA8B;gBAE7C,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB;IAc1D;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IA4B1F;;;;;OAKG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BnD;;;;OAIG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C;;;;;OAKG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD;;;;;OAKG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBzD;;;;;OAKG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAe/D;;;;;OAKG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7E;;;;;OAKG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3E;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2BrF;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;YACW,iBAAiB;IAY/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;YACW,cAAc;IAc5B;;;;OAIG;YACW,eAAe;IAiB7B;;;;;OAKG;YACW,YAAY;IAwB1B;;;;OAIG;YACW,cAAc;IAS5B;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|