@blokjs/runner 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Blok.d.ts +19 -0
- package/dist/Blok.js +184 -0
- package/dist/Blok.js.map +1 -0
- package/dist/BlokResponse.d.ts +16 -0
- package/dist/BlokResponse.js +28 -0
- package/dist/BlokResponse.js.map +1 -0
- package/dist/Configuration.d.ts +37 -0
- package/dist/Configuration.js +248 -0
- package/dist/Configuration.js.map +1 -0
- package/dist/ConfigurationResolver.d.ts +7 -0
- package/dist/ConfigurationResolver.js +15 -0
- package/dist/ConfigurationResolver.js.map +1 -0
- package/dist/DefaultLogger.d.ts +65 -0
- package/dist/DefaultLogger.js +101 -0
- package/dist/DefaultLogger.js.map +1 -0
- package/dist/LocalStorage.d.ts +7 -0
- package/dist/LocalStorage.js +56 -0
- package/dist/LocalStorage.js.map +1 -0
- package/dist/MemoryUsage.d.ts +22 -0
- package/dist/MemoryUsage.js +83 -0
- package/dist/MemoryUsage.js.map +1 -0
- package/dist/NodeMap.d.ts +7 -0
- package/dist/NodeMap.js +13 -0
- package/dist/NodeMap.js.map +1 -0
- package/dist/ResolverBase.d.ts +8 -0
- package/dist/ResolverBase.js +18 -0
- package/dist/ResolverBase.js.map +1 -0
- package/dist/Runner.d.ts +25 -0
- package/dist/Runner.js +32 -0
- package/dist/Runner.js.map +1 -0
- package/dist/RunnerNode.d.ts +9 -0
- package/dist/RunnerNode.js +8 -0
- package/dist/RunnerNode.js.map +1 -0
- package/dist/RunnerNodeBase.d.ts +4 -0
- package/dist/RunnerNodeBase.js +3 -0
- package/dist/RunnerNodeBase.js.map +1 -0
- package/dist/RunnerSteps.d.ts +14 -0
- package/dist/RunnerSteps.js +110 -0
- package/dist/RunnerSteps.js.map +1 -0
- package/dist/RuntimeAdapterNode.d.ts +19 -0
- package/dist/RuntimeAdapterNode.js +87 -0
- package/dist/RuntimeAdapterNode.js.map +1 -0
- package/dist/RuntimeRegistry.d.ts +61 -0
- package/dist/RuntimeRegistry.js +87 -0
- package/dist/RuntimeRegistry.js.map +1 -0
- package/dist/TriggerBase.d.ts +119 -0
- package/dist/TriggerBase.js +413 -0
- package/dist/TriggerBase.js.map +1 -0
- package/dist/adapters/BunRuntimeAdapter.d.ts +38 -0
- package/dist/adapters/BunRuntimeAdapter.js +169 -0
- package/dist/adapters/BunRuntimeAdapter.js.map +1 -0
- package/dist/adapters/DockerRuntimeAdapter.d.ts +85 -0
- package/dist/adapters/DockerRuntimeAdapter.js +298 -0
- package/dist/adapters/DockerRuntimeAdapter.js.map +1 -0
- package/dist/adapters/HttpRuntimeAdapter.d.ts +58 -0
- package/dist/adapters/HttpRuntimeAdapter.js +152 -0
- package/dist/adapters/HttpRuntimeAdapter.js.map +1 -0
- package/dist/adapters/NodeJsRuntimeAdapter.d.ts +23 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js +67 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js.map +1 -0
- package/dist/adapters/RuntimeAdapter.d.ts +42 -0
- package/dist/adapters/RuntimeAdapter.js +2 -0
- package/dist/adapters/RuntimeAdapter.js.map +1 -0
- package/dist/adapters/WasmRuntimeAdapter.d.ts +69 -0
- package/dist/adapters/WasmRuntimeAdapter.js +279 -0
- package/dist/adapters/WasmRuntimeAdapter.js.map +1 -0
- package/dist/cache/NodeResultCache.d.ts +286 -0
- package/dist/cache/NodeResultCache.js +499 -0
- package/dist/cache/NodeResultCache.js.map +1 -0
- package/dist/cache/index.d.ts +1 -0
- package/dist/cache/index.js +2 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cost/CostEstimator.d.ts +57 -0
- package/dist/cost/CostEstimator.js +171 -0
- package/dist/cost/CostEstimator.js.map +1 -0
- package/dist/cost/index.d.ts +4 -0
- package/dist/cost/index.js +3 -0
- package/dist/cost/index.js.map +1 -0
- package/dist/cost/pricing.d.ts +24 -0
- package/dist/cost/pricing.js +169 -0
- package/dist/cost/pricing.js.map +1 -0
- package/dist/defineNode.d.ts +155 -0
- package/dist/defineNode.js +191 -0
- package/dist/defineNode.js.map +1 -0
- package/dist/graphql/GraphQLSchemaGenerator.d.ts +129 -0
- package/dist/graphql/GraphQLSchemaGenerator.js +425 -0
- package/dist/graphql/GraphQLSchemaGenerator.js.map +1 -0
- package/dist/hmr/FileWatcher.d.ts +62 -0
- package/dist/hmr/FileWatcher.js +185 -0
- package/dist/hmr/FileWatcher.js.map +1 -0
- package/dist/hmr/HmrDevConsole.d.ts +13 -0
- package/dist/hmr/HmrDevConsole.js +46 -0
- package/dist/hmr/HmrDevConsole.js.map +1 -0
- package/dist/hmr/HotReloadManager.d.ts +84 -0
- package/dist/hmr/HotReloadManager.js +195 -0
- package/dist/hmr/HotReloadManager.js.map +1 -0
- package/dist/hmr/index.d.ts +39 -0
- package/dist/hmr/index.js +38 -0
- package/dist/hmr/index.js.map +1 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/APMIntegration.d.ts +141 -0
- package/dist/integrations/APMIntegration.js +212 -0
- package/dist/integrations/APMIntegration.js.map +1 -0
- package/dist/integrations/AzureMonitorIntegration.d.ts +118 -0
- package/dist/integrations/AzureMonitorIntegration.js +254 -0
- package/dist/integrations/AzureMonitorIntegration.js.map +1 -0
- package/dist/integrations/CloudWatchIntegration.d.ts +135 -0
- package/dist/integrations/CloudWatchIntegration.js +293 -0
- package/dist/integrations/CloudWatchIntegration.js.map +1 -0
- package/dist/integrations/SentryIntegration.d.ts +153 -0
- package/dist/integrations/SentryIntegration.js +200 -0
- package/dist/integrations/SentryIntegration.js.map +1 -0
- package/dist/integrations/index.d.ts +19 -0
- package/dist/integrations/index.js +16 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/marketplace/RuntimeAutoScaler.d.ts +148 -0
- package/dist/marketplace/RuntimeAutoScaler.js +366 -0
- package/dist/marketplace/RuntimeAutoScaler.js.map +1 -0
- package/dist/marketplace/RuntimeCatalog.d.ts +174 -0
- package/dist/marketplace/RuntimeCatalog.js +339 -0
- package/dist/marketplace/RuntimeCatalog.js.map +1 -0
- package/dist/marketplace/RuntimeDiscovery.d.ts +86 -0
- package/dist/marketplace/RuntimeDiscovery.js +219 -0
- package/dist/marketplace/RuntimeDiscovery.js.map +1 -0
- package/dist/marketplace/RuntimeHealthMonitor.d.ts +100 -0
- package/dist/marketplace/RuntimeHealthMonitor.js +241 -0
- package/dist/marketplace/RuntimeHealthMonitor.js.map +1 -0
- package/dist/marketplace/RuntimeMetricsDashboard.d.ts +113 -0
- package/dist/marketplace/RuntimeMetricsDashboard.js +293 -0
- package/dist/marketplace/RuntimeMetricsDashboard.js.map +1 -0
- package/dist/monitoring/CircuitBreaker.d.ts +107 -0
- package/dist/monitoring/CircuitBreaker.js +238 -0
- package/dist/monitoring/CircuitBreaker.js.map +1 -0
- package/dist/monitoring/DistributedTracer.d.ts +125 -0
- package/dist/monitoring/DistributedTracer.js +230 -0
- package/dist/monitoring/DistributedTracer.js.map +1 -0
- package/dist/monitoring/HealthCheck.d.ts +54 -0
- package/dist/monitoring/HealthCheck.js +102 -0
- package/dist/monitoring/HealthCheck.js.map +1 -0
- package/dist/monitoring/PerformanceProfiler.d.ts +63 -0
- package/dist/monitoring/PerformanceProfiler.js +229 -0
- package/dist/monitoring/PerformanceProfiler.js.map +1 -0
- package/dist/monitoring/PrometheusBootstrap.d.ts +30 -0
- package/dist/monitoring/PrometheusBootstrap.js +71 -0
- package/dist/monitoring/PrometheusBootstrap.js.map +1 -0
- package/dist/monitoring/PrometheusMetricsBridge.d.ts +60 -0
- package/dist/monitoring/PrometheusMetricsBridge.js +216 -0
- package/dist/monitoring/PrometheusMetricsBridge.js.map +1 -0
- package/dist/monitoring/RateLimiter.d.ts +58 -0
- package/dist/monitoring/RateLimiter.js +128 -0
- package/dist/monitoring/RateLimiter.js.map +1 -0
- package/dist/monitoring/StructuredLogger.d.ts +131 -0
- package/dist/monitoring/StructuredLogger.js +207 -0
- package/dist/monitoring/StructuredLogger.js.map +1 -0
- package/dist/monitoring/TracingBootstrap.d.ts +69 -0
- package/dist/monitoring/TracingBootstrap.js +129 -0
- package/dist/monitoring/TracingBootstrap.js.map +1 -0
- package/dist/monitoring/TriggerMetricsCollector.d.ts +94 -0
- package/dist/monitoring/TriggerMetricsCollector.js +174 -0
- package/dist/monitoring/TriggerMetricsCollector.js.map +1 -0
- package/dist/monitoring/index.d.ts +9 -0
- package/dist/monitoring/index.js +10 -0
- package/dist/monitoring/index.js.map +1 -0
- package/dist/openapi/OpenAPIGenerator.d.ts +192 -0
- package/dist/openapi/OpenAPIGenerator.js +373 -0
- package/dist/openapi/OpenAPIGenerator.js.map +1 -0
- package/dist/openapi/index.d.ts +20 -0
- package/dist/openapi/index.js +20 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/security/ABAC.d.ts +224 -0
- package/dist/security/ABAC.js +380 -0
- package/dist/security/ABAC.js.map +1 -0
- package/dist/security/AuditLogger.d.ts +242 -0
- package/dist/security/AuditLogger.js +317 -0
- package/dist/security/AuditLogger.js.map +1 -0
- package/dist/security/AuthMiddleware.d.ts +163 -0
- package/dist/security/AuthMiddleware.js +274 -0
- package/dist/security/AuthMiddleware.js.map +1 -0
- package/dist/security/EncryptionAtRest.d.ts +206 -0
- package/dist/security/EncryptionAtRest.js +236 -0
- package/dist/security/EncryptionAtRest.js.map +1 -0
- package/dist/security/OAuthProvider.d.ts +334 -0
- package/dist/security/OAuthProvider.js +719 -0
- package/dist/security/OAuthProvider.js.map +1 -0
- package/dist/security/PIIDetector.d.ts +233 -0
- package/dist/security/PIIDetector.js +354 -0
- package/dist/security/PIIDetector.js.map +1 -0
- package/dist/security/RBAC.d.ts +143 -0
- package/dist/security/RBAC.js +285 -0
- package/dist/security/RBAC.js.map +1 -0
- package/dist/security/SecretManager.d.ts +652 -0
- package/dist/security/SecretManager.js +1146 -0
- package/dist/security/SecretManager.js.map +1 -0
- package/dist/security/TLSConfig.d.ts +305 -0
- package/dist/security/TLSConfig.js +550 -0
- package/dist/security/TLSConfig.js.map +1 -0
- package/dist/security/index.d.ts +79 -0
- package/dist/security/index.js +80 -0
- package/dist/security/index.js.map +1 -0
- package/dist/testing/TestHarness.d.ts +189 -0
- package/dist/testing/TestHarness.js +272 -0
- package/dist/testing/TestHarness.js.map +1 -0
- package/dist/testing/TestLogger.d.ts +103 -0
- package/dist/testing/TestLogger.js +153 -0
- package/dist/testing/TestLogger.js.map +1 -0
- package/dist/testing/WorkflowTestRunner.d.ts +172 -0
- package/dist/testing/WorkflowTestRunner.js +355 -0
- package/dist/testing/WorkflowTestRunner.js.map +1 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.js +22 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tracing/InMemoryRunStore.d.ts +44 -0
- package/dist/tracing/InMemoryRunStore.js +341 -0
- package/dist/tracing/InMemoryRunStore.js.map +1 -0
- package/dist/tracing/PostgresRunStore.d.ts +82 -0
- package/dist/tracing/PostgresRunStore.js +640 -0
- package/dist/tracing/PostgresRunStore.js.map +1 -0
- package/dist/tracing/RunStore.d.ts +38 -0
- package/dist/tracing/RunStore.js +2 -0
- package/dist/tracing/RunStore.js.map +1 -0
- package/dist/tracing/RunTracker.d.ts +75 -0
- package/dist/tracing/RunTracker.js +374 -0
- package/dist/tracing/RunTracker.js.map +1 -0
- package/dist/tracing/SqliteRunStore.d.ts +53 -0
- package/dist/tracing/SqliteRunStore.js +703 -0
- package/dist/tracing/SqliteRunStore.js.map +1 -0
- package/dist/tracing/TraceRouter.d.ts +47 -0
- package/dist/tracing/TraceRouter.js +904 -0
- package/dist/tracing/TraceRouter.js.map +1 -0
- package/dist/tracing/TracingLogger.d.ts +21 -0
- package/dist/tracing/TracingLogger.js +62 -0
- package/dist/tracing/TracingLogger.js.map +1 -0
- package/dist/tracing/createStore.d.ts +30 -0
- package/dist/tracing/createStore.js +75 -0
- package/dist/tracing/createStore.js.map +1 -0
- package/dist/tracing/index.d.ts +13 -0
- package/dist/tracing/index.js +9 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/sanitize.d.ts +7 -0
- package/dist/tracing/sanitize.js +95 -0
- package/dist/tracing/sanitize.js.map +1 -0
- package/dist/tracing/types.d.ts +178 -0
- package/dist/tracing/types.js +3 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/types/Average.d.ts +11 -0
- package/dist/types/Average.js +2 -0
- package/dist/types/Average.js.map +1 -0
- package/dist/types/Condition.d.ts +8 -0
- package/dist/types/Condition.js +2 -0
- package/dist/types/Condition.js.map +1 -0
- package/dist/types/Conditions.d.ts +5 -0
- package/dist/types/Conditions.js +2 -0
- package/dist/types/Conditions.js.map +1 -0
- package/dist/types/Config.d.ts +12 -0
- package/dist/types/Config.js +2 -0
- package/dist/types/Config.js.map +1 -0
- package/dist/types/Flow.d.ts +5 -0
- package/dist/types/Flow.js +2 -0
- package/dist/types/Flow.js.map +1 -0
- package/dist/types/GlobalOptions.d.ts +11 -0
- package/dist/types/GlobalOptions.js +2 -0
- package/dist/types/GlobalOptions.js.map +1 -0
- package/dist/types/Inputs.d.ts +5 -0
- package/dist/types/Inputs.js +2 -0
- package/dist/types/Inputs.js.map +1 -0
- package/dist/types/JsonLikeObject.d.ts +3 -0
- package/dist/types/JsonLikeObject.js +2 -0
- package/dist/types/JsonLikeObject.js.map +1 -0
- package/dist/types/Mapper.d.ts +5 -0
- package/dist/types/Mapper.js +2 -0
- package/dist/types/Mapper.js.map +1 -0
- package/dist/types/Node.d.ts +10 -0
- package/dist/types/Node.js +2 -0
- package/dist/types/Node.js.map +1 -0
- package/dist/types/ParamsDictionary.d.ts +3 -0
- package/dist/types/ParamsDictionary.js +2 -0
- package/dist/types/ParamsDictionary.js.map +1 -0
- package/dist/types/Properties.d.ts +5 -0
- package/dist/types/Properties.js +2 -0
- package/dist/types/Properties.js.map +1 -0
- package/dist/types/Targets.d.ts +5 -0
- package/dist/types/Targets.js +2 -0
- package/dist/types/Targets.js.map +1 -0
- package/dist/types/Trigger.d.ts +5 -0
- package/dist/types/Trigger.js +2 -0
- package/dist/types/Trigger.js.map +1 -0
- package/dist/types/TriggerHttp.d.ts +7 -0
- package/dist/types/TriggerHttp.js +2 -0
- package/dist/types/TriggerHttp.js.map +1 -0
- package/dist/types/TriggerResponse.d.ts +6 -0
- package/dist/types/TriggerResponse.js +2 -0
- package/dist/types/TriggerResponse.js.map +1 -0
- package/dist/types/Triggers.d.ts +5 -0
- package/dist/types/Triggers.js +2 -0
- package/dist/types/Triggers.js.map +1 -0
- package/dist/types/TryCatch.d.ts +6 -0
- package/dist/types/TryCatch.js +2 -0
- package/dist/types/TryCatch.js.map +1 -0
- package/dist/visualization/NodeDependencyGraph.d.ts +76 -0
- package/dist/visualization/NodeDependencyGraph.js +418 -0
- package/dist/visualization/NodeDependencyGraph.js.map +1 -0
- package/dist/visualization/WorkflowVisualizer.d.ts +144 -0
- package/dist/visualization/WorkflowVisualizer.js +446 -0
- package/dist/visualization/WorkflowVisualizer.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuntimeCatalog - Central Registry for Runtime Packages
|
|
3
|
+
*
|
|
4
|
+
* Manages runtime package metadata, search, versioning, and statistics
|
|
5
|
+
* for the Blok marketplace. Supports publishing, discovery, and filtering
|
|
6
|
+
* of runtime packages across all supported language runtimes.
|
|
7
|
+
*/
|
|
8
|
+
import type { RuntimeKind } from "../adapters/RuntimeAdapter";
|
|
9
|
+
export interface RuntimeNodeInfo {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
inputs: Record<string, string>;
|
|
13
|
+
outputs: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
export interface RuntimePackageManifest {
|
|
16
|
+
name: string;
|
|
17
|
+
version: string;
|
|
18
|
+
runtime: RuntimeKind;
|
|
19
|
+
description: string;
|
|
20
|
+
author: string;
|
|
21
|
+
license: string;
|
|
22
|
+
repository?: string;
|
|
23
|
+
tags: string[];
|
|
24
|
+
protocols: ("http" | "grpc" | "both")[];
|
|
25
|
+
dockerImage?: string;
|
|
26
|
+
minBlokVersion?: string;
|
|
27
|
+
nodeCount: number;
|
|
28
|
+
nodes: RuntimeNodeInfo[];
|
|
29
|
+
createdAt: number;
|
|
30
|
+
updatedAt: number;
|
|
31
|
+
downloads: number;
|
|
32
|
+
rating: number;
|
|
33
|
+
verified: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface CatalogSearchOptions {
|
|
36
|
+
query?: string;
|
|
37
|
+
runtime?: RuntimeKind;
|
|
38
|
+
tags?: string[];
|
|
39
|
+
verified?: boolean;
|
|
40
|
+
sortBy?: "name" | "downloads" | "rating" | "updated";
|
|
41
|
+
sortOrder?: "asc" | "desc";
|
|
42
|
+
limit?: number;
|
|
43
|
+
offset?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface CatalogSearchResult {
|
|
46
|
+
packages: RuntimePackageManifest[];
|
|
47
|
+
total: number;
|
|
48
|
+
page: number;
|
|
49
|
+
pageSize: number;
|
|
50
|
+
}
|
|
51
|
+
export interface CatalogStats {
|
|
52
|
+
totalPackages: number;
|
|
53
|
+
totalVersions: number;
|
|
54
|
+
packagesByRuntime: Record<string, number>;
|
|
55
|
+
totalDownloads: number;
|
|
56
|
+
verifiedCount: number;
|
|
57
|
+
averageRating: number;
|
|
58
|
+
}
|
|
59
|
+
export declare class RuntimeCatalog {
|
|
60
|
+
private packages;
|
|
61
|
+
constructor();
|
|
62
|
+
/**
|
|
63
|
+
* Publish a runtime package to the catalog.
|
|
64
|
+
*
|
|
65
|
+
* @param manifest - The package manifest to publish
|
|
66
|
+
* @throws Error if required fields are missing or invalid
|
|
67
|
+
*/
|
|
68
|
+
publish(manifest: RuntimePackageManifest): void;
|
|
69
|
+
/**
|
|
70
|
+
* Remove a specific version of a package from the catalog.
|
|
71
|
+
*
|
|
72
|
+
* @param name - The package name
|
|
73
|
+
* @param version - The version to remove
|
|
74
|
+
* @returns true if the version was removed, false if not found
|
|
75
|
+
*/
|
|
76
|
+
unpublish(name: string, version: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Get a package manifest by name and optional version.
|
|
79
|
+
* Returns the latest version if no version is specified.
|
|
80
|
+
*
|
|
81
|
+
* @param name - The package name
|
|
82
|
+
* @param version - Optional specific version
|
|
83
|
+
* @returns The manifest if found, undefined otherwise
|
|
84
|
+
*/
|
|
85
|
+
get(name: string, version?: string): RuntimePackageManifest | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Get all available versions of a package, sorted by semver descending.
|
|
88
|
+
*
|
|
89
|
+
* @param name - The package name
|
|
90
|
+
* @returns Array of version strings sorted by semver (newest first)
|
|
91
|
+
*/
|
|
92
|
+
getVersions(name: string): string[];
|
|
93
|
+
/**
|
|
94
|
+
* Get the latest version of a package by semver ordering.
|
|
95
|
+
*
|
|
96
|
+
* @param name - The package name
|
|
97
|
+
* @returns The latest version string, or undefined if package not found
|
|
98
|
+
*/
|
|
99
|
+
getLatestVersion(name: string): string | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Search the catalog with filtering, sorting, and pagination.
|
|
102
|
+
*
|
|
103
|
+
* @param options - Search and filter options
|
|
104
|
+
* @returns Paginated search results
|
|
105
|
+
*/
|
|
106
|
+
search(options: CatalogSearchOptions): CatalogSearchResult;
|
|
107
|
+
/**
|
|
108
|
+
* List all latest-version packages for a specific runtime.
|
|
109
|
+
*
|
|
110
|
+
* @param runtime - The runtime kind to filter by
|
|
111
|
+
* @returns Array of matching package manifests
|
|
112
|
+
*/
|
|
113
|
+
listByRuntime(runtime: RuntimeKind): RuntimePackageManifest[];
|
|
114
|
+
/**
|
|
115
|
+
* Get the most popular packages sorted by download count.
|
|
116
|
+
*
|
|
117
|
+
* @param limit - Maximum number of results (default 10)
|
|
118
|
+
* @returns Array of package manifests sorted by downloads descending
|
|
119
|
+
*/
|
|
120
|
+
getPopular(limit?: number): RuntimePackageManifest[];
|
|
121
|
+
/**
|
|
122
|
+
* Get all verified packages.
|
|
123
|
+
*
|
|
124
|
+
* @returns Array of verified package manifests
|
|
125
|
+
*/
|
|
126
|
+
getVerified(): RuntimePackageManifest[];
|
|
127
|
+
/**
|
|
128
|
+
* Increment the download counter for a specific package version.
|
|
129
|
+
*
|
|
130
|
+
* @param name - The package name
|
|
131
|
+
* @param version - The package version
|
|
132
|
+
*/
|
|
133
|
+
incrementDownloads(name: string, version: string): void;
|
|
134
|
+
/**
|
|
135
|
+
* Set the rating for a specific package version.
|
|
136
|
+
*
|
|
137
|
+
* @param name - The package name
|
|
138
|
+
* @param version - The package version
|
|
139
|
+
* @param rating - The rating value (0-5)
|
|
140
|
+
* @throws Error if rating is out of range
|
|
141
|
+
*/
|
|
142
|
+
setRating(name: string, version: string, rating: number): void;
|
|
143
|
+
/**
|
|
144
|
+
* Get overall catalog statistics.
|
|
145
|
+
*
|
|
146
|
+
* @returns Aggregated catalog statistics
|
|
147
|
+
*/
|
|
148
|
+
getStats(): CatalogStats;
|
|
149
|
+
/**
|
|
150
|
+
* Serialize the catalog to a JSON string for persistence.
|
|
151
|
+
*
|
|
152
|
+
* @returns JSON string representation of the catalog
|
|
153
|
+
*/
|
|
154
|
+
toJSON(): string;
|
|
155
|
+
/**
|
|
156
|
+
* Deserialize a catalog from a JSON string.
|
|
157
|
+
*
|
|
158
|
+
* @param json - The JSON string to parse
|
|
159
|
+
* @returns A new RuntimeCatalog instance populated with the data
|
|
160
|
+
*/
|
|
161
|
+
static fromJSON(json: string): RuntimeCatalog;
|
|
162
|
+
/**
|
|
163
|
+
* Get the latest version manifest for every package in the catalog.
|
|
164
|
+
*/
|
|
165
|
+
private getAllLatestPackages;
|
|
166
|
+
/**
|
|
167
|
+
* Validate that a manifest has all required fields.
|
|
168
|
+
*/
|
|
169
|
+
private validateManifest;
|
|
170
|
+
/**
|
|
171
|
+
* Compare two semver strings. Returns negative if a < b, 0 if equal, positive if a > b.
|
|
172
|
+
*/
|
|
173
|
+
private compareSemver;
|
|
174
|
+
}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuntimeCatalog - Central Registry for Runtime Packages
|
|
3
|
+
*
|
|
4
|
+
* Manages runtime package metadata, search, versioning, and statistics
|
|
5
|
+
* for the Blok marketplace. Supports publishing, discovery, and filtering
|
|
6
|
+
* of runtime packages across all supported language runtimes.
|
|
7
|
+
*/
|
|
8
|
+
export class RuntimeCatalog {
|
|
9
|
+
packages;
|
|
10
|
+
constructor() {
|
|
11
|
+
this.packages = new Map();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Publish a runtime package to the catalog.
|
|
15
|
+
*
|
|
16
|
+
* @param manifest - The package manifest to publish
|
|
17
|
+
* @throws Error if required fields are missing or invalid
|
|
18
|
+
*/
|
|
19
|
+
publish(manifest) {
|
|
20
|
+
this.validateManifest(manifest);
|
|
21
|
+
let versions = this.packages.get(manifest.name);
|
|
22
|
+
if (!versions) {
|
|
23
|
+
versions = new Map();
|
|
24
|
+
this.packages.set(manifest.name, versions);
|
|
25
|
+
}
|
|
26
|
+
versions.set(manifest.version, { ...manifest });
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Remove a specific version of a package from the catalog.
|
|
30
|
+
*
|
|
31
|
+
* @param name - The package name
|
|
32
|
+
* @param version - The version to remove
|
|
33
|
+
* @returns true if the version was removed, false if not found
|
|
34
|
+
*/
|
|
35
|
+
unpublish(name, version) {
|
|
36
|
+
const versions = this.packages.get(name);
|
|
37
|
+
if (!versions)
|
|
38
|
+
return false;
|
|
39
|
+
const deleted = versions.delete(version);
|
|
40
|
+
if (versions.size === 0) {
|
|
41
|
+
this.packages.delete(name);
|
|
42
|
+
}
|
|
43
|
+
return deleted;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get a package manifest by name and optional version.
|
|
47
|
+
* Returns the latest version if no version is specified.
|
|
48
|
+
*
|
|
49
|
+
* @param name - The package name
|
|
50
|
+
* @param version - Optional specific version
|
|
51
|
+
* @returns The manifest if found, undefined otherwise
|
|
52
|
+
*/
|
|
53
|
+
get(name, version) {
|
|
54
|
+
const versions = this.packages.get(name);
|
|
55
|
+
if (!versions)
|
|
56
|
+
return undefined;
|
|
57
|
+
if (version) {
|
|
58
|
+
return versions.get(version);
|
|
59
|
+
}
|
|
60
|
+
const latest = this.getLatestVersion(name);
|
|
61
|
+
if (!latest)
|
|
62
|
+
return undefined;
|
|
63
|
+
return versions.get(latest);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get all available versions of a package, sorted by semver descending.
|
|
67
|
+
*
|
|
68
|
+
* @param name - The package name
|
|
69
|
+
* @returns Array of version strings sorted by semver (newest first)
|
|
70
|
+
*/
|
|
71
|
+
getVersions(name) {
|
|
72
|
+
const versions = this.packages.get(name);
|
|
73
|
+
if (!versions)
|
|
74
|
+
return [];
|
|
75
|
+
return Array.from(versions.keys()).sort((a, b) => this.compareSemver(b, a));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the latest version of a package by semver ordering.
|
|
79
|
+
*
|
|
80
|
+
* @param name - The package name
|
|
81
|
+
* @returns The latest version string, or undefined if package not found
|
|
82
|
+
*/
|
|
83
|
+
getLatestVersion(name) {
|
|
84
|
+
const sorted = this.getVersions(name);
|
|
85
|
+
return sorted.length > 0 ? sorted[0] : undefined;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Search the catalog with filtering, sorting, and pagination.
|
|
89
|
+
*
|
|
90
|
+
* @param options - Search and filter options
|
|
91
|
+
* @returns Paginated search results
|
|
92
|
+
*/
|
|
93
|
+
search(options) {
|
|
94
|
+
const { query, runtime, tags, verified, sortBy = "name", sortOrder = "asc", limit = 20, offset = 0 } = options;
|
|
95
|
+
let results = this.getAllLatestPackages();
|
|
96
|
+
// Filter by query (searches name, description, tags, author)
|
|
97
|
+
if (query) {
|
|
98
|
+
const lowerQuery = query.toLowerCase();
|
|
99
|
+
results = results.filter((pkg) => pkg.name.toLowerCase().includes(lowerQuery) ||
|
|
100
|
+
pkg.description.toLowerCase().includes(lowerQuery) ||
|
|
101
|
+
pkg.author.toLowerCase().includes(lowerQuery) ||
|
|
102
|
+
pkg.tags.some((tag) => tag.toLowerCase().includes(lowerQuery)));
|
|
103
|
+
}
|
|
104
|
+
// Filter by runtime
|
|
105
|
+
if (runtime) {
|
|
106
|
+
results = results.filter((pkg) => pkg.runtime === runtime);
|
|
107
|
+
}
|
|
108
|
+
// Filter by tags (package must have all specified tags)
|
|
109
|
+
if (tags && tags.length > 0) {
|
|
110
|
+
results = results.filter((pkg) => tags.every((tag) => pkg.tags.some((pkgTag) => pkgTag.toLowerCase() === tag.toLowerCase())));
|
|
111
|
+
}
|
|
112
|
+
// Filter by verified status
|
|
113
|
+
if (verified !== undefined) {
|
|
114
|
+
results = results.filter((pkg) => pkg.verified === verified);
|
|
115
|
+
}
|
|
116
|
+
// Sort results
|
|
117
|
+
results.sort((a, b) => {
|
|
118
|
+
let comparison = 0;
|
|
119
|
+
switch (sortBy) {
|
|
120
|
+
case "name":
|
|
121
|
+
comparison = a.name.localeCompare(b.name);
|
|
122
|
+
break;
|
|
123
|
+
case "downloads":
|
|
124
|
+
comparison = a.downloads - b.downloads;
|
|
125
|
+
break;
|
|
126
|
+
case "rating":
|
|
127
|
+
comparison = a.rating - b.rating;
|
|
128
|
+
break;
|
|
129
|
+
case "updated":
|
|
130
|
+
comparison = a.updatedAt - b.updatedAt;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
return sortOrder === "desc" ? -comparison : comparison;
|
|
134
|
+
});
|
|
135
|
+
const total = results.length;
|
|
136
|
+
const pageSize = limit;
|
|
137
|
+
const page = Math.floor(offset / limit) + 1;
|
|
138
|
+
const paged = results.slice(offset, offset + limit);
|
|
139
|
+
return {
|
|
140
|
+
packages: paged,
|
|
141
|
+
total,
|
|
142
|
+
page,
|
|
143
|
+
pageSize,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* List all latest-version packages for a specific runtime.
|
|
148
|
+
*
|
|
149
|
+
* @param runtime - The runtime kind to filter by
|
|
150
|
+
* @returns Array of matching package manifests
|
|
151
|
+
*/
|
|
152
|
+
listByRuntime(runtime) {
|
|
153
|
+
return this.getAllLatestPackages().filter((pkg) => pkg.runtime === runtime);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get the most popular packages sorted by download count.
|
|
157
|
+
*
|
|
158
|
+
* @param limit - Maximum number of results (default 10)
|
|
159
|
+
* @returns Array of package manifests sorted by downloads descending
|
|
160
|
+
*/
|
|
161
|
+
getPopular(limit = 10) {
|
|
162
|
+
return this.getAllLatestPackages()
|
|
163
|
+
.sort((a, b) => b.downloads - a.downloads)
|
|
164
|
+
.slice(0, limit);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get all verified packages.
|
|
168
|
+
*
|
|
169
|
+
* @returns Array of verified package manifests
|
|
170
|
+
*/
|
|
171
|
+
getVerified() {
|
|
172
|
+
return this.getAllLatestPackages().filter((pkg) => pkg.verified);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Increment the download counter for a specific package version.
|
|
176
|
+
*
|
|
177
|
+
* @param name - The package name
|
|
178
|
+
* @param version - The package version
|
|
179
|
+
*/
|
|
180
|
+
incrementDownloads(name, version) {
|
|
181
|
+
const versions = this.packages.get(name);
|
|
182
|
+
if (!versions)
|
|
183
|
+
return;
|
|
184
|
+
const manifest = versions.get(version);
|
|
185
|
+
if (manifest) {
|
|
186
|
+
manifest.downloads++;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Set the rating for a specific package version.
|
|
191
|
+
*
|
|
192
|
+
* @param name - The package name
|
|
193
|
+
* @param version - The package version
|
|
194
|
+
* @param rating - The rating value (0-5)
|
|
195
|
+
* @throws Error if rating is out of range
|
|
196
|
+
*/
|
|
197
|
+
setRating(name, version, rating) {
|
|
198
|
+
if (rating < 0 || rating > 5) {
|
|
199
|
+
throw new Error(`Rating must be between 0 and 5, got ${rating}`);
|
|
200
|
+
}
|
|
201
|
+
const versions = this.packages.get(name);
|
|
202
|
+
if (!versions)
|
|
203
|
+
return;
|
|
204
|
+
const manifest = versions.get(version);
|
|
205
|
+
if (manifest) {
|
|
206
|
+
manifest.rating = rating;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get overall catalog statistics.
|
|
211
|
+
*
|
|
212
|
+
* @returns Aggregated catalog statistics
|
|
213
|
+
*/
|
|
214
|
+
getStats() {
|
|
215
|
+
const allPackages = this.getAllLatestPackages();
|
|
216
|
+
const packagesByRuntime = {};
|
|
217
|
+
let totalDownloads = 0;
|
|
218
|
+
let verifiedCount = 0;
|
|
219
|
+
let ratingSum = 0;
|
|
220
|
+
let ratedCount = 0;
|
|
221
|
+
let totalVersions = 0;
|
|
222
|
+
for (const [, versions] of this.packages) {
|
|
223
|
+
totalVersions += versions.size;
|
|
224
|
+
}
|
|
225
|
+
for (const pkg of allPackages) {
|
|
226
|
+
const count = packagesByRuntime[pkg.runtime] || 0;
|
|
227
|
+
packagesByRuntime[pkg.runtime] = count + 1;
|
|
228
|
+
totalDownloads += pkg.downloads;
|
|
229
|
+
if (pkg.verified) {
|
|
230
|
+
verifiedCount++;
|
|
231
|
+
}
|
|
232
|
+
if (pkg.rating > 0) {
|
|
233
|
+
ratingSum += pkg.rating;
|
|
234
|
+
ratedCount++;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
totalPackages: allPackages.length,
|
|
239
|
+
totalVersions,
|
|
240
|
+
packagesByRuntime,
|
|
241
|
+
totalDownloads,
|
|
242
|
+
verifiedCount,
|
|
243
|
+
averageRating: ratedCount > 0 ? ratingSum / ratedCount : 0,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Serialize the catalog to a JSON string for persistence.
|
|
248
|
+
*
|
|
249
|
+
* @returns JSON string representation of the catalog
|
|
250
|
+
*/
|
|
251
|
+
toJSON() {
|
|
252
|
+
const data = {};
|
|
253
|
+
for (const [name, versions] of this.packages) {
|
|
254
|
+
data[name] = {};
|
|
255
|
+
for (const [version, manifest] of versions) {
|
|
256
|
+
data[name][version] = manifest;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return JSON.stringify(data);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Deserialize a catalog from a JSON string.
|
|
263
|
+
*
|
|
264
|
+
* @param json - The JSON string to parse
|
|
265
|
+
* @returns A new RuntimeCatalog instance populated with the data
|
|
266
|
+
*/
|
|
267
|
+
static fromJSON(json) {
|
|
268
|
+
const catalog = new RuntimeCatalog();
|
|
269
|
+
const data = JSON.parse(json);
|
|
270
|
+
for (const name of Object.keys(data)) {
|
|
271
|
+
const versionsMap = new Map();
|
|
272
|
+
for (const version of Object.keys(data[name])) {
|
|
273
|
+
versionsMap.set(version, data[name][version]);
|
|
274
|
+
}
|
|
275
|
+
catalog.packages.set(name, versionsMap);
|
|
276
|
+
}
|
|
277
|
+
return catalog;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get the latest version manifest for every package in the catalog.
|
|
281
|
+
*/
|
|
282
|
+
getAllLatestPackages() {
|
|
283
|
+
const result = [];
|
|
284
|
+
for (const [name] of this.packages) {
|
|
285
|
+
const latest = this.get(name);
|
|
286
|
+
if (latest) {
|
|
287
|
+
result.push(latest);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Validate that a manifest has all required fields.
|
|
294
|
+
*/
|
|
295
|
+
validateManifest(manifest) {
|
|
296
|
+
if (!manifest.name || typeof manifest.name !== "string") {
|
|
297
|
+
throw new Error("Package manifest must have a valid 'name'");
|
|
298
|
+
}
|
|
299
|
+
if (!manifest.version || typeof manifest.version !== "string") {
|
|
300
|
+
throw new Error("Package manifest must have a valid 'version'");
|
|
301
|
+
}
|
|
302
|
+
if (!manifest.runtime) {
|
|
303
|
+
throw new Error("Package manifest must have a valid 'runtime'");
|
|
304
|
+
}
|
|
305
|
+
if (!manifest.description || typeof manifest.description !== "string") {
|
|
306
|
+
throw new Error("Package manifest must have a valid 'description'");
|
|
307
|
+
}
|
|
308
|
+
if (!manifest.author || typeof manifest.author !== "string") {
|
|
309
|
+
throw new Error("Package manifest must have a valid 'author'");
|
|
310
|
+
}
|
|
311
|
+
if (!manifest.license || typeof manifest.license !== "string") {
|
|
312
|
+
throw new Error("Package manifest must have a valid 'license'");
|
|
313
|
+
}
|
|
314
|
+
if (!Array.isArray(manifest.tags)) {
|
|
315
|
+
throw new Error("Package manifest must have a 'tags' array");
|
|
316
|
+
}
|
|
317
|
+
if (!Array.isArray(manifest.protocols) || manifest.protocols.length === 0) {
|
|
318
|
+
throw new Error("Package manifest must have at least one 'protocol'");
|
|
319
|
+
}
|
|
320
|
+
if (!Array.isArray(manifest.nodes)) {
|
|
321
|
+
throw new Error("Package manifest must have a 'nodes' array");
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Compare two semver strings. Returns negative if a < b, 0 if equal, positive if a > b.
|
|
326
|
+
*/
|
|
327
|
+
compareSemver(a, b) {
|
|
328
|
+
const partsA = a.split(".").map(Number);
|
|
329
|
+
const partsB = b.split(".").map(Number);
|
|
330
|
+
for (let i = 0; i < 3; i++) {
|
|
331
|
+
const numA = partsA[i] || 0;
|
|
332
|
+
const numB = partsB[i] || 0;
|
|
333
|
+
if (numA !== numB)
|
|
334
|
+
return numA - numB;
|
|
335
|
+
}
|
|
336
|
+
return 0;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=RuntimeCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeCatalog.js","sourceRoot":"","sources":["../../src/marketplace/RuntimeCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuntimeDiscovery - Package Discovery and Resolution Service
|
|
3
|
+
*
|
|
4
|
+
* Helps find, resolve, and recommend runtime packages from the catalog.
|
|
5
|
+
* Provides compatibility checking, semver range resolution, and
|
|
6
|
+
* intelligent package recommendations for the Blok marketplace.
|
|
7
|
+
*/
|
|
8
|
+
import type { RuntimeRegistry } from "../RuntimeRegistry";
|
|
9
|
+
import type { RuntimeKind } from "../adapters/RuntimeAdapter";
|
|
10
|
+
import type { RuntimePackageManifest } from "./RuntimeCatalog";
|
|
11
|
+
import type { RuntimeCatalog } from "./RuntimeCatalog";
|
|
12
|
+
export interface CompatibilityInfo {
|
|
13
|
+
compatible: boolean;
|
|
14
|
+
blokVersionMatch: boolean;
|
|
15
|
+
runtimeAvailable: boolean;
|
|
16
|
+
protocolSupported: boolean;
|
|
17
|
+
warnings: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface DiscoveryResult {
|
|
20
|
+
package: RuntimePackageManifest;
|
|
21
|
+
compatibility: CompatibilityInfo;
|
|
22
|
+
alternatives: RuntimePackageManifest[];
|
|
23
|
+
}
|
|
24
|
+
export interface ResolveOptions {
|
|
25
|
+
name: string;
|
|
26
|
+
version?: string;
|
|
27
|
+
runtime?: RuntimeKind;
|
|
28
|
+
preferVerified?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare class RuntimeDiscovery {
|
|
31
|
+
private catalog;
|
|
32
|
+
private registry;
|
|
33
|
+
constructor(catalog: RuntimeCatalog, registry: RuntimeRegistry);
|
|
34
|
+
/**
|
|
35
|
+
* Discover all packages available for a specific runtime.
|
|
36
|
+
*
|
|
37
|
+
* @param runtime - The runtime kind to discover packages for
|
|
38
|
+
* @returns Array of matching package manifests
|
|
39
|
+
*/
|
|
40
|
+
discover(runtime: RuntimeKind): RuntimePackageManifest[];
|
|
41
|
+
/**
|
|
42
|
+
* Resolve a package by name with full compatibility checking.
|
|
43
|
+
*
|
|
44
|
+
* @param options - Resolution options including name, version, runtime preference
|
|
45
|
+
* @returns Discovery result with compatibility info and alternatives, or undefined
|
|
46
|
+
*/
|
|
47
|
+
resolve(options: ResolveOptions): DiscoveryResult | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Find alternative packages similar to a given package.
|
|
50
|
+
* Searches by shared tags and runtime kind.
|
|
51
|
+
*
|
|
52
|
+
* @param name - The package name to find alternatives for
|
|
53
|
+
* @param runtime - Optional runtime kind to filter alternatives
|
|
54
|
+
* @returns Array of alternative package manifests
|
|
55
|
+
*/
|
|
56
|
+
findAlternatives(name: string, runtime?: RuntimeKind): RuntimePackageManifest[];
|
|
57
|
+
/**
|
|
58
|
+
* Check if a package is compatible with the current environment.
|
|
59
|
+
*
|
|
60
|
+
* @param manifest - The package manifest to check
|
|
61
|
+
* @returns Compatibility information with warnings
|
|
62
|
+
*/
|
|
63
|
+
checkCompatibility(manifest: RuntimePackageManifest): CompatibilityInfo;
|
|
64
|
+
/**
|
|
65
|
+
* Recommend packages for a runtime, optionally filtered by tags.
|
|
66
|
+
* Results are sorted by a composite score of rating and downloads.
|
|
67
|
+
*
|
|
68
|
+
* @param runtime - The runtime kind to recommend packages for
|
|
69
|
+
* @param tags - Optional tags to filter recommendations
|
|
70
|
+
* @returns Array of recommended package manifests
|
|
71
|
+
*/
|
|
72
|
+
recommend(runtime: RuntimeKind, tags?: string[]): RuntimePackageManifest[];
|
|
73
|
+
/**
|
|
74
|
+
* Resolve a semver range to a specific version available in the catalog.
|
|
75
|
+
* Supports exact versions, ^ (caret), and ~ (tilde) ranges.
|
|
76
|
+
*
|
|
77
|
+
* @param name - The package name
|
|
78
|
+
* @param range - The semver range string (e.g., "^1.2.0", "~2.0.0", "1.5.3")
|
|
79
|
+
* @returns The resolved version string, or undefined if no match found
|
|
80
|
+
*/
|
|
81
|
+
resolveVersion(name: string, range: string): string | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Check if version (major, minor, patch) is >= base version.
|
|
84
|
+
*/
|
|
85
|
+
private semverGte;
|
|
86
|
+
}
|