runtime-resolver 0.3.11 → 0.3.13
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/bin/runtime-resolver.d.ts +1 -0
- package/bin/runtime-resolver.js +30 -261
- package/bin/runtime-resolver.js.map +1 -0
- package/cli/commands/resolve.js +240 -0
- package/cli/commands/resolve.js.map +1 -0
- package/cli/schemas/json-schema.js +13 -0
- package/cli/schemas/json-schema.js.map +1 -0
- package/cli/schemas/response.js +87 -0
- package/cli/schemas/response.js.map +1 -0
- package/data/bun-defaults.js +851 -0
- package/data/bun-defaults.js.map +1 -0
- package/data/deno-defaults.js +1523 -0
- package/data/deno-defaults.js.map +1 -0
- package/data/node-defaults.js +4401 -0
- package/data/node-defaults.js.map +1 -0
- package/errors/AuthenticationError.js +36 -0
- package/errors/AuthenticationError.js.map +1 -0
- package/errors/CacheError.js +33 -0
- package/errors/CacheError.js.map +1 -0
- package/errors/FreshnessError.js +39 -0
- package/errors/FreshnessError.js.map +1 -0
- package/errors/InvalidInputError.js +34 -0
- package/errors/InvalidInputError.js.map +1 -0
- package/errors/NetworkError.js +35 -0
- package/errors/NetworkError.js.map +1 -0
- package/errors/ParseError.js +34 -0
- package/errors/ParseError.js.map +1 -0
- package/errors/RateLimitError.js +40 -0
- package/errors/RateLimitError.js.map +1 -0
- package/errors/VersionNotFoundError.js +38 -0
- package/errors/VersionNotFoundError.js.map +1 -0
- package/index.d.ts +2577 -2608
- package/index.d.ts.map +1 -0
- package/index.js +159 -132
- package/index.js.map +1 -0
- package/layers/AutoBunCacheLive.js +48 -0
- package/layers/AutoBunCacheLive.js.map +1 -0
- package/layers/AutoDenoCacheLive.js +48 -0
- package/layers/AutoDenoCacheLive.js.map +1 -0
- package/layers/AutoNodeCacheLive.js +59 -0
- package/layers/AutoNodeCacheLive.js.map +1 -0
- package/layers/BunReleaseCacheLive.js +26 -0
- package/layers/BunReleaseCacheLive.js.map +1 -0
- package/layers/BunResolverLive.js +86 -0
- package/layers/BunResolverLive.js.map +1 -0
- package/layers/BunVersionFetcherLive.js +56 -0
- package/layers/BunVersionFetcherLive.js.map +1 -0
- package/layers/DenoReleaseCacheLive.js +26 -0
- package/layers/DenoReleaseCacheLive.js.map +1 -0
- package/layers/DenoResolverLive.js +85 -0
- package/layers/DenoResolverLive.js.map +1 -0
- package/layers/DenoVersionFetcherLive.js +52 -0
- package/layers/DenoVersionFetcherLive.js.map +1 -0
- package/layers/FreshBunCacheLive.js +61 -0
- package/layers/FreshBunCacheLive.js.map +1 -0
- package/layers/FreshDenoCacheLive.js +61 -0
- package/layers/FreshDenoCacheLive.js.map +1 -0
- package/layers/FreshNodeCacheLive.js +56 -0
- package/layers/FreshNodeCacheLive.js.map +1 -0
- package/layers/GitHubAppAuth.js +59 -0
- package/layers/GitHubAppAuth.js.map +1 -0
- package/layers/GitHubAutoAuth.js +71 -0
- package/layers/GitHubAutoAuth.js.map +1 -0
- package/layers/GitHubClientLive.js +131 -0
- package/layers/GitHubClientLive.js.map +1 -0
- package/layers/GitHubTokenAuth.js +51 -0
- package/layers/GitHubTokenAuth.js.map +1 -0
- package/layers/NodeReleaseCacheLive.js +78 -0
- package/layers/NodeReleaseCacheLive.js.map +1 -0
- package/layers/NodeResolverLive.js +108 -0
- package/layers/NodeResolverLive.js.map +1 -0
- package/layers/NodeScheduleFetcherLive.js +38 -0
- package/layers/NodeScheduleFetcherLive.js.map +1 -0
- package/layers/NodeVersionFetcherLive.js +56 -0
- package/layers/NodeVersionFetcherLive.js.map +1 -0
- package/layers/OfflineBunCacheLive.js +41 -0
- package/layers/OfflineBunCacheLive.js.map +1 -0
- package/layers/OfflineDenoCacheLive.js +41 -0
- package/layers/OfflineDenoCacheLive.js.map +1 -0
- package/layers/OfflineNodeCacheLive.js +40 -0
- package/layers/OfflineNodeCacheLive.js.map +1 -0
- package/layers/RuntimeCacheLive.js +79 -0
- package/layers/RuntimeCacheLive.js.map +1 -0
- package/lib/retry.js +28 -0
- package/lib/retry.js.map +1 -0
- package/lib/semver.js +22 -0
- package/lib/semver.js.map +1 -0
- package/package.json +57 -68
- package/schemas/bun-release.js +62 -0
- package/schemas/bun-release.js.map +1 -0
- package/schemas/deno-release.js +62 -0
- package/schemas/deno-release.js.map +1 -0
- package/schemas/github.js +75 -0
- package/schemas/github.js.map +1 -0
- package/schemas/node-release.js +131 -0
- package/schemas/node-release.js.map +1 -0
- package/schemas/node-schedule.js +111 -0
- package/schemas/node-schedule.js.map +1 -0
- package/schemas/node.js +69 -0
- package/schemas/node.js.map +1 -0
- package/services/BunReleaseCache.js +34 -0
- package/services/BunReleaseCache.js.map +1 -0
- package/services/BunResolver.js +37 -0
- package/services/BunResolver.js.map +1 -0
- package/services/BunVersionFetcher.js +42 -0
- package/services/BunVersionFetcher.js.map +1 -0
- package/services/DenoReleaseCache.js +34 -0
- package/services/DenoReleaseCache.js.map +1 -0
- package/services/DenoResolver.js +37 -0
- package/services/DenoResolver.js.map +1 -0
- package/services/DenoVersionFetcher.js +42 -0
- package/services/DenoVersionFetcher.js.map +1 -0
- package/services/GitHubClient.js +41 -0
- package/services/GitHubClient.js.map +1 -0
- package/services/NodeReleaseCache.js +42 -0
- package/services/NodeReleaseCache.js.map +1 -0
- package/services/NodeResolver.js +45 -0
- package/services/NodeResolver.js.map +1 -0
- package/services/NodeScheduleFetcher.js +39 -0
- package/services/NodeScheduleFetcher.js.map +1 -0
- package/services/NodeVersionFetcher.js +40 -0
- package/services/NodeVersionFetcher.js.map +1 -0
- package/services/OctokitInstance.js +45 -0
- package/services/OctokitInstance.js.map +1 -0
- package/tsdoc-metadata.json +11 -11
- package/612.js +0 -23
- package/711.js +0 -7543
- package/json-schema.js +0 -95
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/schemas/common.ts","../../../src/errors/VersionNotFoundError.ts","../../../src/services/BunResolver.ts","../../../src/services/DenoResolver.ts","../../../src/services/NodeResolver.ts","../../../src/errors/AuthenticationError.ts","../../../src/errors/CacheError.ts","../../../src/errors/FreshnessError.ts","../../../src/errors/InvalidInputError.ts","../../../src/errors/NetworkError.ts","../../../src/errors/ParseError.ts","../../../src/errors/RateLimitError.ts","../../../src/schemas/runtime-release.ts","../../../src/schemas/bun-release.ts","../../../src/services/RuntimeCache.ts","../../../src/services/BunReleaseCache.ts","../../../src/services/BunVersionFetcher.ts","../../../src/layers/AutoBunCacheLive.ts","../../../src/schemas/deno-release.ts","../../../src/services/DenoReleaseCache.ts","../../../src/services/DenoVersionFetcher.ts","../../../src/layers/AutoDenoCacheLive.ts","../../../src/schemas/node-schedule.ts","../../../src/schemas/node-release.ts","../../../src/services/NodeReleaseCache.ts","../../../src/services/NodeScheduleFetcher.ts","../../../src/services/NodeVersionFetcher.ts","../../../src/layers/AutoNodeCacheLive.ts","../../../src/layers/BunReleaseCacheLive.ts","../../../src/layers/BunResolverLive.ts","../../../src/schemas/github.ts","../../../src/services/GitHubClient.ts","../../../src/layers/BunVersionFetcherLive.ts","../../../src/layers/DenoReleaseCacheLive.ts","../../../src/layers/DenoResolverLive.ts","../../../src/layers/DenoVersionFetcherLive.ts","../../../src/layers/FreshBunCacheLive.ts","../../../src/layers/FreshDenoCacheLive.ts","../../../src/layers/FreshNodeCacheLive.ts","../../../src/services/OctokitInstance.ts","../../../src/layers/GitHubAppAuth.ts","../../../src/layers/GitHubAutoAuth.ts","../../../src/layers/GitHubClientLive.ts","../../../src/layers/GitHubTokenAuth.ts","../../../src/layers/NodeReleaseCacheLive.ts","../../../src/layers/NodeResolverLive.ts","../../../src/layers/NodeScheduleFetcherLive.ts","../../../src/layers/NodeVersionFetcherLive.ts","../../../src/layers/OfflineBunCacheLive.ts","../../../src/layers/OfflineDenoCacheLive.ts","../../../src/layers/OfflineNodeCacheLive.ts","../../../src/layers/RuntimeCacheLive.ts","../../../src/index.ts"],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -1,121 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
concurrency: "unbounded"
|
|
62
|
-
}).pipe(Effect.orElseSucceed(()=>[]));
|
|
63
|
-
yield* cache.load(releases);
|
|
64
|
-
});
|
|
65
|
-
const FreshDenoCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
66
|
-
const FreshDenoCacheLive_BaseCacheLayer = DenoReleaseCacheLive.pipe(Layer.provide(FreshDenoCacheLive_SemVerLayer));
|
|
67
|
-
const FreshDenoCacheLive = FreshDenoCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>FreshDenoCacheLive_freshSetup.pipe(Effect.provide(ctx))));
|
|
68
|
-
const FreshNodeCacheLive_freshSetup = Effect.gen(function*() {
|
|
69
|
-
const cache = yield* NodeReleaseCache;
|
|
70
|
-
const versionFetcher = yield* NodeVersionFetcher;
|
|
71
|
-
const scheduleFetcher = yield* NodeScheduleFetcher;
|
|
72
|
-
const [fetchResult, scheduleData] = yield* Effect.all([
|
|
73
|
-
versionFetcher.fetch(),
|
|
74
|
-
scheduleFetcher.fetch()
|
|
75
|
-
]).pipe(Effect.catchTags({
|
|
76
|
-
NetworkError: (err)=>Effect.fail(new FreshnessError({
|
|
77
|
-
strategy: "api",
|
|
78
|
-
message: `Fresh data required but network unavailable: ${err.message}`
|
|
79
|
-
})),
|
|
80
|
-
ParseError: (err)=>Effect.fail(new FreshnessError({
|
|
81
|
-
strategy: "api",
|
|
82
|
-
message: `Fresh data required but response could not be parsed: ${err.message}`
|
|
83
|
-
}))
|
|
84
|
-
}));
|
|
85
|
-
yield* cache.updateSchedule(scheduleData);
|
|
86
|
-
yield* cache.loadFromInputs(fetchResult.inputs);
|
|
87
|
-
});
|
|
88
|
-
const FreshNodeCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
89
|
-
const FreshNodeCacheLive_BaseCacheLayer = NodeReleaseCacheLive.pipe(Layer.provide(FreshNodeCacheLive_SemVerLayer));
|
|
90
|
-
const FreshNodeCacheLive = FreshNodeCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>FreshNodeCacheLive_freshSetup.pipe(Effect.provide(ctx))));
|
|
91
|
-
const offlineSetup = Effect.gen(function*() {
|
|
92
|
-
const cache = yield* BunReleaseCache;
|
|
93
|
-
const releases = yield* Effect.all(bunDefaultInputs.map((input)=>BunRelease.fromInput(input)), {
|
|
94
|
-
concurrency: "unbounded"
|
|
95
|
-
}).pipe(Effect.orElseSucceed(()=>[]));
|
|
96
|
-
yield* cache.load(releases);
|
|
97
|
-
});
|
|
98
|
-
const OfflineBunCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
99
|
-
const OfflineBunCacheLive_BaseCacheLayer = BunReleaseCacheLive.pipe(Layer.provide(OfflineBunCacheLive_SemVerLayer));
|
|
100
|
-
const OfflineBunCacheLive = OfflineBunCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>offlineSetup.pipe(Effect.provide(ctx))));
|
|
101
|
-
const OfflineDenoCacheLive_offlineSetup = Effect.gen(function*() {
|
|
102
|
-
const cache = yield* DenoReleaseCache;
|
|
103
|
-
const releases = yield* Effect.all(denoDefaultInputs.map((input)=>DenoRelease.fromInput(input)), {
|
|
104
|
-
concurrency: "unbounded"
|
|
105
|
-
}).pipe(Effect.orElseSucceed(()=>[]));
|
|
106
|
-
yield* cache.load(releases);
|
|
107
|
-
});
|
|
108
|
-
const OfflineDenoCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
109
|
-
const OfflineDenoCacheLive_BaseCacheLayer = DenoReleaseCacheLive.pipe(Layer.provide(OfflineDenoCacheLive_SemVerLayer));
|
|
110
|
-
const OfflineDenoCacheLive = OfflineDenoCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>OfflineDenoCacheLive_offlineSetup.pipe(Effect.provide(ctx))));
|
|
111
|
-
const OfflineNodeCacheLive_offlineSetup = Effect.gen(function*() {
|
|
112
|
-
const cache = yield* NodeReleaseCache;
|
|
113
|
-
yield* cache.updateSchedule(nodeDefaultScheduleData);
|
|
114
|
-
yield* cache.loadFromInputs(nodeDefaultInputs);
|
|
115
|
-
});
|
|
116
|
-
const OfflineNodeCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
117
|
-
const OfflineNodeCacheLive_BaseCacheLayer = NodeReleaseCacheLive.pipe(Layer.provide(OfflineNodeCacheLive_SemVerLayer));
|
|
118
|
-
const OfflineNodeCacheLive = OfflineNodeCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>OfflineNodeCacheLive_offlineSetup.pipe(Effect.provide(ctx))));
|
|
1
|
+
import { BunRelease } from "./schemas/bun-release.js";
|
|
2
|
+
import { BunReleaseCache } from "./services/BunReleaseCache.js";
|
|
3
|
+
import { BunVersionFetcher } from "./services/BunVersionFetcher.js";
|
|
4
|
+
import { createRuntimeCache } from "./layers/RuntimeCacheLive.js";
|
|
5
|
+
import { BunReleaseCacheLive } from "./layers/BunReleaseCacheLive.js";
|
|
6
|
+
import { AutoBunCacheLive } from "./layers/AutoBunCacheLive.js";
|
|
7
|
+
import { DenoRelease } from "./schemas/deno-release.js";
|
|
8
|
+
import { DenoReleaseCache } from "./services/DenoReleaseCache.js";
|
|
9
|
+
import { DenoVersionFetcher } from "./services/DenoVersionFetcher.js";
|
|
10
|
+
import { DenoReleaseCacheLive } from "./layers/DenoReleaseCacheLive.js";
|
|
11
|
+
import { AutoDenoCacheLive } from "./layers/AutoDenoCacheLive.js";
|
|
12
|
+
import { NodeReleaseCache } from "./services/NodeReleaseCache.js";
|
|
13
|
+
import { NodeScheduleFetcher } from "./services/NodeScheduleFetcher.js";
|
|
14
|
+
import { NodeVersionFetcher } from "./services/NodeVersionFetcher.js";
|
|
15
|
+
import { NodeRelease } from "./schemas/node-release.js";
|
|
16
|
+
import { NodeSchedule } from "./schemas/node-schedule.js";
|
|
17
|
+
import { NodeReleaseCacheLive } from "./layers/NodeReleaseCacheLive.js";
|
|
18
|
+
import { AutoNodeCacheLive } from "./layers/AutoNodeCacheLive.js";
|
|
19
|
+
import { VersionNotFoundError } from "./errors/VersionNotFoundError.js";
|
|
20
|
+
import { BunResolver } from "./services/BunResolver.js";
|
|
21
|
+
import { BunResolverLive } from "./layers/BunResolverLive.js";
|
|
22
|
+
import { GitHubClient } from "./services/GitHubClient.js";
|
|
23
|
+
import { BunVersionFetcherLive } from "./layers/BunVersionFetcherLive.js";
|
|
24
|
+
import { DenoResolver } from "./services/DenoResolver.js";
|
|
25
|
+
import { DenoResolverLive } from "./layers/DenoResolverLive.js";
|
|
26
|
+
import { DenoVersionFetcherLive } from "./layers/DenoVersionFetcherLive.js";
|
|
27
|
+
import { OctokitInstance } from "./services/OctokitInstance.js";
|
|
28
|
+
import { AuthenticationError } from "./errors/AuthenticationError.js";
|
|
29
|
+
import { GitHubAppAuth } from "./layers/GitHubAppAuth.js";
|
|
30
|
+
import { GitHubAutoAuth } from "./layers/GitHubAutoAuth.js";
|
|
31
|
+
import { NetworkError } from "./errors/NetworkError.js";
|
|
32
|
+
import { ParseError } from "./errors/ParseError.js";
|
|
33
|
+
import { RateLimitError } from "./errors/RateLimitError.js";
|
|
34
|
+
import { GitHubClientLive } from "./layers/GitHubClientLive.js";
|
|
35
|
+
import { NodeResolver } from "./services/NodeResolver.js";
|
|
36
|
+
import { NodeResolverLive } from "./layers/NodeResolverLive.js";
|
|
37
|
+
import { NodeScheduleFetcherLive } from "./layers/NodeScheduleFetcherLive.js";
|
|
38
|
+
import { NodeVersionFetcherLive } from "./layers/NodeVersionFetcherLive.js";
|
|
39
|
+
import { CacheError } from "./errors/CacheError.js";
|
|
40
|
+
import { FreshnessError } from "./errors/FreshnessError.js";
|
|
41
|
+
import { InvalidInputError } from "./errors/InvalidInputError.js";
|
|
42
|
+
import { FreshBunCacheLive } from "./layers/FreshBunCacheLive.js";
|
|
43
|
+
import { FreshDenoCacheLive } from "./layers/FreshDenoCacheLive.js";
|
|
44
|
+
import { FreshNodeCacheLive } from "./layers/FreshNodeCacheLive.js";
|
|
45
|
+
import { GitHubTokenAuth, GitHubTokenAuthFromToken } from "./layers/GitHubTokenAuth.js";
|
|
46
|
+
import { OfflineBunCacheLive } from "./layers/OfflineBunCacheLive.js";
|
|
47
|
+
import { OfflineDenoCacheLive } from "./layers/OfflineDenoCacheLive.js";
|
|
48
|
+
import { OfflineNodeCacheLive } from "./layers/OfflineNodeCacheLive.js";
|
|
49
|
+
import { Effect, Layer } from "effect";
|
|
50
|
+
|
|
51
|
+
//#region src/index.ts
|
|
52
|
+
/**
|
|
53
|
+
* runtime-resolver
|
|
54
|
+
*
|
|
55
|
+
* Resolve semver-compatible versions of Node.js, Bun, and Deno runtimes.
|
|
56
|
+
* Promise-based API with offline fallback via build-time cache.
|
|
57
|
+
* Also exports Effect services, layers, and errors for advanced composition.
|
|
58
|
+
*
|
|
59
|
+
* @packageDocumentation
|
|
60
|
+
*/
|
|
119
61
|
const GitHubLayer = GitHubClientLive.pipe(Layer.provide(GitHubAutoAuth));
|
|
120
62
|
const NodeFetchersLayer = Layer.merge(NodeVersionFetcherLive.pipe(Layer.provide(GitHubLayer)), NodeScheduleFetcherLive.pipe(Layer.provide(GitHubLayer)));
|
|
121
63
|
const NodeCacheLayer = AutoNodeCacheLive.pipe(Layer.provide(NodeFetchersLayer));
|
|
@@ -124,17 +66,102 @@ const BunCacheLayer = AutoBunCacheLive.pipe(Layer.provide(BunVersionFetcherLive.
|
|
|
124
66
|
const BunLayer = BunResolverLive.pipe(Layer.provide(BunCacheLayer));
|
|
125
67
|
const DenoCacheLayer = AutoDenoCacheLive.pipe(Layer.provide(DenoVersionFetcherLive.pipe(Layer.provide(GitHubLayer))));
|
|
126
68
|
const DenoLayer = DenoResolverLive.pipe(Layer.provide(DenoCacheLayer));
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Resolve Node.js versions matching the given options.
|
|
71
|
+
*
|
|
72
|
+
* Fetches release data from the Node.js GitHub repository and the official
|
|
73
|
+
* release schedule API, then filters and ranks versions according to
|
|
74
|
+
* `options`. Authentication is read from `GITHUB_PERSONAL_ACCESS_TOKEN` or
|
|
75
|
+
* `GITHUB_TOKEN` environment variables. Falls back to a build-time offline
|
|
76
|
+
* cache when the network is unavailable.
|
|
77
|
+
*
|
|
78
|
+
* @param options - Filtering and ranking options. See {@link NodeResolverOptions}.
|
|
79
|
+
* @returns A promise that resolves to a {@link ResolvedVersions} object
|
|
80
|
+
* containing the matched version list, the highest matching version as
|
|
81
|
+
* `latest`, and optional `lts` / `default` strings.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* import type { ResolvedVersions } from "runtime-resolver";
|
|
86
|
+
* import { resolveNode } from "runtime-resolver";
|
|
87
|
+
*
|
|
88
|
+
* const result: ResolvedVersions = await resolveNode({
|
|
89
|
+
* semverRange: ">=20.0.0",
|
|
90
|
+
* phases: ["active-lts"],
|
|
91
|
+
* });
|
|
92
|
+
* console.log(result.latest); // e.g. "22.11.0"
|
|
93
|
+
* console.log(result.versions); // all matching versions
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* @see {@link NodeResolver} for the Effect-based API
|
|
97
|
+
* @see {@link NodeResolverOptions} for available options
|
|
98
|
+
*
|
|
99
|
+
* @public
|
|
100
|
+
*/
|
|
101
|
+
const resolveNode = (options) => Effect.runPromise(Effect.gen(function* () {
|
|
102
|
+
return yield* (yield* NodeResolver).resolve(options);
|
|
103
|
+
}).pipe(Effect.provide(NodeLayer)));
|
|
104
|
+
/**
|
|
105
|
+
* Resolve Bun versions matching the given options.
|
|
106
|
+
*
|
|
107
|
+
* Fetches release data from the Bun GitHub repository, then filters and ranks
|
|
108
|
+
* versions according to `options`. Authentication is read from
|
|
109
|
+
* `GITHUB_PERSONAL_ACCESS_TOKEN` or `GITHUB_TOKEN` environment variables.
|
|
110
|
+
* Falls back to a build-time offline cache when the network is unavailable.
|
|
111
|
+
*
|
|
112
|
+
* @param options - Filtering and ranking options. See {@link BunResolverOptions}.
|
|
113
|
+
* @returns A promise that resolves to a {@link ResolvedVersions} object
|
|
114
|
+
* containing the matched version list and the highest matching version as
|
|
115
|
+
* `latest`.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* import type { ResolvedVersions } from "runtime-resolver";
|
|
120
|
+
* import { resolveBun } from "runtime-resolver";
|
|
121
|
+
*
|
|
122
|
+
* const result: ResolvedVersions = await resolveBun({ semverRange: "^1.0.0" });
|
|
123
|
+
* console.log(result.latest);
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @see {@link BunResolver} for the Effect-based API
|
|
127
|
+
* @see {@link BunResolverOptions} for available options
|
|
128
|
+
*
|
|
129
|
+
* @public
|
|
130
|
+
*/
|
|
131
|
+
const resolveBun = (options) => Effect.runPromise(Effect.gen(function* () {
|
|
132
|
+
return yield* (yield* BunResolver).resolve(options);
|
|
133
|
+
}).pipe(Effect.provide(BunLayer)));
|
|
134
|
+
/**
|
|
135
|
+
* Resolve Deno versions matching the given options.
|
|
136
|
+
*
|
|
137
|
+
* Fetches release data from the Deno GitHub repository, then filters and ranks
|
|
138
|
+
* versions according to `options`. Authentication is read from
|
|
139
|
+
* `GITHUB_PERSONAL_ACCESS_TOKEN` or `GITHUB_TOKEN` environment variables.
|
|
140
|
+
* Falls back to a build-time offline cache when the network is unavailable.
|
|
141
|
+
*
|
|
142
|
+
* @param options - Filtering and ranking options. See {@link DenoResolverOptions}.
|
|
143
|
+
* @returns A promise that resolves to a {@link ResolvedVersions} object
|
|
144
|
+
* containing the matched version list and the highest matching version as
|
|
145
|
+
* `latest`.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* import type { ResolvedVersions } from "runtime-resolver";
|
|
150
|
+
* import { resolveDeno } from "runtime-resolver";
|
|
151
|
+
*
|
|
152
|
+
* const result: ResolvedVersions = await resolveDeno({ semverRange: "^2.0.0" });
|
|
153
|
+
* console.log(result.latest);
|
|
154
|
+
* ```
|
|
155
|
+
*
|
|
156
|
+
* @see {@link DenoResolver} for the Effect-based API
|
|
157
|
+
* @see {@link DenoResolverOptions} for available options
|
|
158
|
+
*
|
|
159
|
+
* @public
|
|
160
|
+
*/
|
|
161
|
+
const resolveDeno = (options) => Effect.runPromise(Effect.gen(function* () {
|
|
162
|
+
return yield* (yield* DenoResolver).resolve(options);
|
|
163
|
+
}).pipe(Effect.provide(DenoLayer)));
|
|
164
|
+
|
|
165
|
+
//#endregion
|
|
166
|
+
export { AuthenticationError, AutoBunCacheLive, AutoDenoCacheLive, AutoNodeCacheLive, BunRelease, BunReleaseCache, BunReleaseCacheLive, BunResolver, BunResolverLive, BunVersionFetcher, BunVersionFetcherLive, CacheError, DenoRelease, DenoReleaseCache, DenoReleaseCacheLive, DenoResolver, DenoResolverLive, DenoVersionFetcher, DenoVersionFetcherLive, FreshBunCacheLive, FreshDenoCacheLive, FreshNodeCacheLive, FreshnessError, GitHubAppAuth, GitHubAutoAuth, GitHubClient, GitHubClientLive, GitHubTokenAuth, GitHubTokenAuthFromToken, InvalidInputError, NetworkError, NodeRelease, NodeReleaseCache, NodeReleaseCacheLive, NodeResolver, NodeResolverLive, NodeSchedule, NodeScheduleFetcher, NodeScheduleFetcherLive, NodeVersionFetcher, NodeVersionFetcherLive, OctokitInstance, OfflineBunCacheLive, OfflineDenoCacheLive, OfflineNodeCacheLive, ParseError, RateLimitError, VersionNotFoundError, createRuntimeCache, resolveBun, resolveDeno, resolveNode };
|
|
167
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/index.ts"],"sourcesContent":["/**\n * runtime-resolver\n *\n * Resolve semver-compatible versions of Node.js, Bun, and Deno runtimes.\n * Promise-based API with offline fallback via build-time cache.\n * Also exports Effect services, layers, and errors for advanced composition.\n *\n * @packageDocumentation\n */\nimport { Effect, Layer } from \"effect\";\nimport { AutoBunCacheLive } from \"./layers/AutoBunCacheLive.js\";\nimport { AutoDenoCacheLive } from \"./layers/AutoDenoCacheLive.js\";\nimport { AutoNodeCacheLive } from \"./layers/AutoNodeCacheLive.js\";\nimport { BunResolverLive } from \"./layers/BunResolverLive.js\";\nimport { BunVersionFetcherLive } from \"./layers/BunVersionFetcherLive.js\";\nimport { DenoResolverLive } from \"./layers/DenoResolverLive.js\";\nimport { DenoVersionFetcherLive } from \"./layers/DenoVersionFetcherLive.js\";\nimport { GitHubAutoAuth } from \"./layers/GitHubAutoAuth.js\";\nimport { GitHubClientLive } from \"./layers/GitHubClientLive.js\";\nimport { NodeResolverLive } from \"./layers/NodeResolverLive.js\";\nimport { NodeScheduleFetcherLive } from \"./layers/NodeScheduleFetcherLive.js\";\nimport { NodeVersionFetcherLive } from \"./layers/NodeVersionFetcherLive.js\";\nimport type { ResolvedVersions } from \"./schemas/common.js\";\nimport type { BunResolverOptions } from \"./services/BunResolver.js\";\nimport { BunResolver } from \"./services/BunResolver.js\";\nimport type { DenoResolverOptions } from \"./services/DenoResolver.js\";\nimport { DenoResolver } from \"./services/DenoResolver.js\";\nimport type { NodeResolverOptions } from \"./services/NodeResolver.js\";\nimport { NodeResolver } from \"./services/NodeResolver.js\";\n\nconst GitHubLayer = GitHubClientLive.pipe(Layer.provide(GitHubAutoAuth));\nconst NodeFetchersLayer = Layer.merge(\n\tNodeVersionFetcherLive.pipe(Layer.provide(GitHubLayer)),\n\tNodeScheduleFetcherLive.pipe(Layer.provide(GitHubLayer)),\n);\nconst NodeCacheLayer = AutoNodeCacheLive.pipe(Layer.provide(NodeFetchersLayer));\nconst NodeLayer = NodeResolverLive.pipe(Layer.provide(NodeCacheLayer));\n\nconst BunCacheLayer = AutoBunCacheLive.pipe(Layer.provide(BunVersionFetcherLive.pipe(Layer.provide(GitHubLayer))));\nconst BunLayer = BunResolverLive.pipe(Layer.provide(BunCacheLayer));\n\nconst DenoCacheLayer = AutoDenoCacheLive.pipe(Layer.provide(DenoVersionFetcherLive.pipe(Layer.provide(GitHubLayer))));\nconst DenoLayer = DenoResolverLive.pipe(Layer.provide(DenoCacheLayer));\n\n// ── Errors ──────────────────────────────────────────────────────────────────\n// Tagged error classes thrown by the Promise API and surfaced through Effect\n// channels.\nexport { AuthenticationError } from \"./errors/AuthenticationError.js\";\nexport { CacheError } from \"./errors/CacheError.js\";\nexport { FreshnessError } from \"./errors/FreshnessError.js\";\nexport { InvalidInputError } from \"./errors/InvalidInputError.js\";\nexport { NetworkError } from \"./errors/NetworkError.js\";\nexport { ParseError } from \"./errors/ParseError.js\";\nexport { RateLimitError } from \"./errors/RateLimitError.js\";\nexport { VersionNotFoundError } from \"./errors/VersionNotFoundError.js\";\n\n// ── Layers ──────────────────────────────────────────────────────────────────\n// Effect `Layer` implementations that wire up every runtime resolver's full\n// dependency graph. Use these when composing custom Effect pipelines instead\n// of relying on the Promise API.\nexport { AutoBunCacheLive } from \"./layers/AutoBunCacheLive.js\";\nexport { AutoDenoCacheLive } from \"./layers/AutoDenoCacheLive.js\";\nexport { AutoNodeCacheLive } from \"./layers/AutoNodeCacheLive.js\";\nexport { BunReleaseCacheLive } from \"./layers/BunReleaseCacheLive.js\";\nexport { BunResolverLive } from \"./layers/BunResolverLive.js\";\nexport { BunVersionFetcherLive } from \"./layers/BunVersionFetcherLive.js\";\nexport { DenoReleaseCacheLive } from \"./layers/DenoReleaseCacheLive.js\";\nexport { DenoResolverLive } from \"./layers/DenoResolverLive.js\";\nexport { DenoVersionFetcherLive } from \"./layers/DenoVersionFetcherLive.js\";\nexport { FreshBunCacheLive } from \"./layers/FreshBunCacheLive.js\";\nexport { FreshDenoCacheLive } from \"./layers/FreshDenoCacheLive.js\";\nexport { FreshNodeCacheLive } from \"./layers/FreshNodeCacheLive.js\";\nexport type { GitHubAppAuthConfig } from \"./layers/GitHubAppAuth.js\";\nexport { GitHubAppAuth } from \"./layers/GitHubAppAuth.js\";\nexport { GitHubAutoAuth } from \"./layers/GitHubAutoAuth.js\";\nexport { GitHubClientLive } from \"./layers/GitHubClientLive.js\";\nexport { GitHubTokenAuth, GitHubTokenAuthFromToken } from \"./layers/GitHubTokenAuth.js\";\nexport { NodeReleaseCacheLive } from \"./layers/NodeReleaseCacheLive.js\";\nexport { NodeResolverLive } from \"./layers/NodeResolverLive.js\";\nexport { NodeScheduleFetcherLive } from \"./layers/NodeScheduleFetcherLive.js\";\nexport { NodeVersionFetcherLive } from \"./layers/NodeVersionFetcherLive.js\";\nexport { OfflineBunCacheLive } from \"./layers/OfflineBunCacheLive.js\";\nexport { OfflineDenoCacheLive } from \"./layers/OfflineDenoCacheLive.js\";\nexport { OfflineNodeCacheLive } from \"./layers/OfflineNodeCacheLive.js\";\nexport { createRuntimeCache } from \"./layers/RuntimeCacheLive.js\";\n// ── Schemas ──────────────────────────────────────────────────────────────────\n// Effect `Schema` codecs for runtime release data.\nexport { BunRelease } from \"./schemas/bun-release.js\";\n// ── Types ───────────────────────────────────────────────────────────────────\n// TypeScript type aliases and branded primitives shared across all runtimes.\nexport type { Increments, NodePhase, ResolvedVersions, Runtime, Source } from \"./schemas/common.js\";\nexport { DenoRelease } from \"./schemas/deno-release.js\";\nexport type { GitHubRelease, GitHubTag } from \"./schemas/github.js\";\nexport type { NodeReleaseInput } from \"./schemas/node-release.js\";\nexport { NodeRelease } from \"./schemas/node-release.js\";\nexport type { NodeScheduleData, NodeScheduleEntry } from \"./schemas/node-schedule.js\";\nexport { NodeSchedule } from \"./schemas/node-schedule.js\";\nexport type { RuntimeRelease, RuntimeReleaseInput } from \"./schemas/runtime-release.js\";\n// ── Services ────────────────────────────────────────────────────────────────\n// Effect `Context.Tag` service interfaces and their option/error types.\n// Inject these into your own Effect programs for fine-grained control over\n// caching, fetching, and resolution behaviour.\nexport { BunReleaseCache } from \"./services/BunReleaseCache.js\";\nexport type { BunResolverError, BunResolverOptions } from \"./services/BunResolver.js\";\nexport { BunResolver } from \"./services/BunResolver.js\";\nexport { BunVersionFetcher } from \"./services/BunVersionFetcher.js\";\nexport { DenoReleaseCache } from \"./services/DenoReleaseCache.js\";\nexport type { DenoResolverError, DenoResolverOptions } from \"./services/DenoResolver.js\";\nexport { DenoResolver } from \"./services/DenoResolver.js\";\nexport { DenoVersionFetcher } from \"./services/DenoVersionFetcher.js\";\nexport type { ListOptions } from \"./services/GitHubClient.js\";\nexport { GitHubClient } from \"./services/GitHubClient.js\";\nexport { NodeReleaseCache } from \"./services/NodeReleaseCache.js\";\nexport type { NodeResolverError, NodeResolverOptions } from \"./services/NodeResolver.js\";\nexport { NodeResolver } from \"./services/NodeResolver.js\";\nexport { NodeScheduleFetcher } from \"./services/NodeScheduleFetcher.js\";\nexport { NodeVersionFetcher } from \"./services/NodeVersionFetcher.js\";\nexport { OctokitInstance } from \"./services/OctokitInstance.js\";\nexport type { RuntimeCache } from \"./services/RuntimeCache.js\";\n\n// ── Promise API ─────────────────────────────────────────────────────────────\n\n/**\n * Resolve Node.js versions matching the given options.\n *\n * Fetches release data from the Node.js GitHub repository and the official\n * release schedule API, then filters and ranks versions according to\n * `options`. Authentication is read from `GITHUB_PERSONAL_ACCESS_TOKEN` or\n * `GITHUB_TOKEN` environment variables. Falls back to a build-time offline\n * cache when the network is unavailable.\n *\n * @param options - Filtering and ranking options. See {@link NodeResolverOptions}.\n * @returns A promise that resolves to a {@link ResolvedVersions} object\n * containing the matched version list, the highest matching version as\n * `latest`, and optional `lts` / `default` strings.\n *\n * @example\n * ```ts\n * import type { ResolvedVersions } from \"runtime-resolver\";\n * import { resolveNode } from \"runtime-resolver\";\n *\n * const result: ResolvedVersions = await resolveNode({\n * \tsemverRange: \">=20.0.0\",\n * \tphases: [\"active-lts\"],\n * });\n * console.log(result.latest); // e.g. \"22.11.0\"\n * console.log(result.versions); // all matching versions\n * ```\n *\n * @see {@link NodeResolver} for the Effect-based API\n * @see {@link NodeResolverOptions} for available options\n *\n * @public\n */\nexport const resolveNode = (options?: NodeResolverOptions): Promise<ResolvedVersions> =>\n\tEffect.runPromise(\n\t\tEffect.gen(function* () {\n\t\t\tconst resolver = yield* NodeResolver;\n\t\t\treturn yield* resolver.resolve(options);\n\t\t}).pipe(Effect.provide(NodeLayer)),\n\t);\n\n/**\n * Resolve Bun versions matching the given options.\n *\n * Fetches release data from the Bun GitHub repository, then filters and ranks\n * versions according to `options`. Authentication is read from\n * `GITHUB_PERSONAL_ACCESS_TOKEN` or `GITHUB_TOKEN` environment variables.\n * Falls back to a build-time offline cache when the network is unavailable.\n *\n * @param options - Filtering and ranking options. See {@link BunResolverOptions}.\n * @returns A promise that resolves to a {@link ResolvedVersions} object\n * containing the matched version list and the highest matching version as\n * `latest`.\n *\n * @example\n * ```ts\n * import type { ResolvedVersions } from \"runtime-resolver\";\n * import { resolveBun } from \"runtime-resolver\";\n *\n * const result: ResolvedVersions = await resolveBun({ semverRange: \"^1.0.0\" });\n * console.log(result.latest);\n * ```\n *\n * @see {@link BunResolver} for the Effect-based API\n * @see {@link BunResolverOptions} for available options\n *\n * @public\n */\nexport const resolveBun = (options?: BunResolverOptions): Promise<ResolvedVersions> =>\n\tEffect.runPromise(\n\t\tEffect.gen(function* () {\n\t\t\tconst resolver = yield* BunResolver;\n\t\t\treturn yield* resolver.resolve(options);\n\t\t}).pipe(Effect.provide(BunLayer)),\n\t);\n\n/**\n * Resolve Deno versions matching the given options.\n *\n * Fetches release data from the Deno GitHub repository, then filters and ranks\n * versions according to `options`. Authentication is read from\n * `GITHUB_PERSONAL_ACCESS_TOKEN` or `GITHUB_TOKEN` environment variables.\n * Falls back to a build-time offline cache when the network is unavailable.\n *\n * @param options - Filtering and ranking options. See {@link DenoResolverOptions}.\n * @returns A promise that resolves to a {@link ResolvedVersions} object\n * containing the matched version list and the highest matching version as\n * `latest`.\n *\n * @example\n * ```ts\n * import type { ResolvedVersions } from \"runtime-resolver\";\n * import { resolveDeno } from \"runtime-resolver\";\n *\n * const result: ResolvedVersions = await resolveDeno({ semverRange: \"^2.0.0\" });\n * console.log(result.latest);\n * ```\n *\n * @see {@link DenoResolver} for the Effect-based API\n * @see {@link DenoResolverOptions} for available options\n *\n * @public\n */\nexport const resolveDeno = (options?: DenoResolverOptions): Promise<ResolvedVersions> =>\n\tEffect.runPromise(\n\t\tEffect.gen(function* () {\n\t\t\tconst resolver = yield* DenoResolver;\n\t\t\treturn yield* resolver.resolve(options);\n\t\t}).pipe(Effect.provide(DenoLayer)),\n\t);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,cAAc,iBAAiB,KAAK,MAAM,QAAQ,cAAc,CAAC;AACvE,MAAM,oBAAoB,MAAM,MAC/B,uBAAuB,KAAK,MAAM,QAAQ,WAAW,CAAC,GACtD,wBAAwB,KAAK,MAAM,QAAQ,WAAW,CAAC,CACxD;AACA,MAAM,iBAAiB,kBAAkB,KAAK,MAAM,QAAQ,iBAAiB,CAAC;AAC9E,MAAM,YAAY,iBAAiB,KAAK,MAAM,QAAQ,cAAc,CAAC;AAErE,MAAM,gBAAgB,iBAAiB,KAAK,MAAM,QAAQ,sBAAsB,KAAK,MAAM,QAAQ,WAAW,CAAC,CAAC,CAAC;AACjH,MAAM,WAAW,gBAAgB,KAAK,MAAM,QAAQ,aAAa,CAAC;AAElE,MAAM,iBAAiB,kBAAkB,KAAK,MAAM,QAAQ,uBAAuB,KAAK,MAAM,QAAQ,WAAW,CAAC,CAAC,CAAC;AACpH,MAAM,YAAY,iBAAiB,KAAK,MAAM,QAAQ,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgHrE,MAAa,eAAe,YAC3B,OAAO,WACN,OAAO,IAAI,aAAa;CAEvB,OAAO,QAAO,OADU,aACF,CAAC,QAAQ,OAAO;AACvC,CAAC,CAAC,CAAC,KAAK,OAAO,QAAQ,SAAS,CAAC,CAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BD,MAAa,cAAc,YAC1B,OAAO,WACN,OAAO,IAAI,aAAa;CAEvB,OAAO,QAAO,OADU,YACF,CAAC,QAAQ,OAAO;AACvC,CAAC,CAAC,CAAC,KAAK,OAAO,QAAQ,QAAQ,CAAC,CACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BD,MAAa,eAAe,YAC3B,OAAO,WACN,OAAO,IAAI,aAAa;CAEvB,OAAO,QAAO,OADU,aACF,CAAC,QAAQ,OAAO;AACvC,CAAC,CAAC,CAAC,KAAK,OAAO,QAAQ,SAAS,CAAC,CAClC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { bunDefaultInputs } from "../data/bun-defaults.js";
|
|
2
|
+
import { BunRelease } from "../schemas/bun-release.js";
|
|
3
|
+
import { BunReleaseCache } from "../services/BunReleaseCache.js";
|
|
4
|
+
import { BunVersionFetcher } from "../services/BunVersionFetcher.js";
|
|
5
|
+
import { BunReleaseCacheLive } from "./BunReleaseCacheLive.js";
|
|
6
|
+
import { Effect, Layer } from "effect";
|
|
7
|
+
import { SemVerParserLive, VersionCacheLive } from "semver-effect";
|
|
8
|
+
|
|
9
|
+
//#region src/layers/AutoBunCacheLive.ts
|
|
10
|
+
const setup = Effect.gen(function* () {
|
|
11
|
+
const cache = yield* BunReleaseCache;
|
|
12
|
+
const inputs = yield* (yield* BunVersionFetcher).fetch().pipe(Effect.map((result) => result.inputs), Effect.catchTags({
|
|
13
|
+
AuthenticationError: () => Effect.succeed(bunDefaultInputs),
|
|
14
|
+
NetworkError: () => Effect.succeed(bunDefaultInputs),
|
|
15
|
+
ParseError: () => Effect.succeed(bunDefaultInputs),
|
|
16
|
+
RateLimitError: () => Effect.succeed(bunDefaultInputs)
|
|
17
|
+
}));
|
|
18
|
+
const releases = yield* Effect.all(inputs.map((input) => BunRelease.fromInput(input)), { concurrency: "unbounded" }).pipe(Effect.orElseSucceed(() => []));
|
|
19
|
+
yield* cache.load(releases);
|
|
20
|
+
});
|
|
21
|
+
const SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
22
|
+
const BaseCacheLayer = BunReleaseCacheLive.pipe(Layer.provide(SemVerLayer));
|
|
23
|
+
/**
|
|
24
|
+
* Provides the {@link BunReleaseCache} service using the "Auto" cache strategy.
|
|
25
|
+
*
|
|
26
|
+
* Attempts to fetch live release data from the GitHub API via
|
|
27
|
+
* {@link BunVersionFetcher}. If the fetch fails for any reason — authentication
|
|
28
|
+
* errors, network errors, parse errors, or rate-limit errors — it silently falls
|
|
29
|
+
* back to the bundled default release data so the layer always succeeds.
|
|
30
|
+
*
|
|
31
|
+
* Use this strategy when you want the freshest data when available but can
|
|
32
|
+
* tolerate slightly stale bundled data in degraded environments.
|
|
33
|
+
*
|
|
34
|
+
* The three Bun cache strategy layers are:
|
|
35
|
+
* - `AutoBunCacheLive` — tries API first, falls back to bundled defaults on any error
|
|
36
|
+
* - {@link FreshBunCacheLive} — requires live API data, fails with `FreshnessError` if unavailable
|
|
37
|
+
* - {@link OfflineBunCacheLive} — uses only bundled defaults, no network I/O
|
|
38
|
+
*
|
|
39
|
+
* @see {@link BunReleaseCache}
|
|
40
|
+
* @see {@link FreshBunCacheLive}
|
|
41
|
+
* @see {@link OfflineBunCacheLive}
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
const AutoBunCacheLive = BaseCacheLayer.pipe(Layer.tap((ctx) => setup.pipe(Effect.provide(ctx))));
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
export { AutoBunCacheLive };
|
|
48
|
+
//# sourceMappingURL=AutoBunCacheLive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoBunCacheLive.js","names":["SemVerVersionCacheLive"],"sources":["../../../../src/layers/AutoBunCacheLive.ts"],"sourcesContent":["import { Effect, Layer } from \"effect\";\nimport { SemVerParserLive, VersionCacheLive as SemVerVersionCacheLive } from \"semver-effect\";\nimport { bunDefaultInputs } from \"../data/bun-defaults.js\";\nimport { BunRelease } from \"../schemas/bun-release.js\";\nimport { BunReleaseCache } from \"../services/BunReleaseCache.js\";\nimport { BunVersionFetcher } from \"../services/BunVersionFetcher.js\";\nimport { BunReleaseCacheLive } from \"./BunReleaseCacheLive.js\";\n\nconst setup = Effect.gen(function* () {\n\tconst cache = yield* BunReleaseCache;\n\tconst fetcher = yield* BunVersionFetcher;\n\n\tconst inputs = yield* fetcher.fetch().pipe(\n\t\tEffect.map((result) => result.inputs),\n\t\tEffect.catchTags({\n\t\t\tAuthenticationError: () => Effect.succeed(bunDefaultInputs),\n\t\t\tNetworkError: () => Effect.succeed(bunDefaultInputs),\n\t\t\tParseError: () => Effect.succeed(bunDefaultInputs),\n\t\t\tRateLimitError: () => Effect.succeed(bunDefaultInputs),\n\t\t}),\n\t);\n\n\tconst releases = yield* Effect.all(\n\t\tinputs.map((input) => BunRelease.fromInput(input)),\n\t\t{ concurrency: \"unbounded\" },\n\t).pipe(Effect.orElseSucceed(() => [] as BunRelease[]));\n\tyield* cache.load(releases);\n});\n\nconst SemVerLayer = SemVerVersionCacheLive.pipe(Layer.provide(SemVerParserLive));\nconst BaseCacheLayer = BunReleaseCacheLive.pipe(Layer.provide(SemVerLayer));\n\n/**\n * Provides the {@link BunReleaseCache} service using the \"Auto\" cache strategy.\n *\n * Attempts to fetch live release data from the GitHub API via\n * {@link BunVersionFetcher}. If the fetch fails for any reason — authentication\n * errors, network errors, parse errors, or rate-limit errors — it silently falls\n * back to the bundled default release data so the layer always succeeds.\n *\n * Use this strategy when you want the freshest data when available but can\n * tolerate slightly stale bundled data in degraded environments.\n *\n * The three Bun cache strategy layers are:\n * - `AutoBunCacheLive` — tries API first, falls back to bundled defaults on any error\n * - {@link FreshBunCacheLive} — requires live API data, fails with `FreshnessError` if unavailable\n * - {@link OfflineBunCacheLive} — uses only bundled defaults, no network I/O\n *\n * @see {@link BunReleaseCache}\n * @see {@link FreshBunCacheLive}\n * @see {@link OfflineBunCacheLive}\n * @public\n */\nexport const AutoBunCacheLive: Layer.Layer<BunReleaseCache, never, BunVersionFetcher> = BaseCacheLayer.pipe(\n\tLayer.tap((ctx) => setup.pipe(Effect.provide(ctx))),\n);\n"],"mappings":";;;;;;;;;AAQA,MAAM,QAAQ,OAAO,IAAI,aAAa;CACrC,MAAM,QAAQ,OAAO;CAGrB,MAAM,SAAS,QAAO,OAFC,kBAEM,CAAC,MAAM,CAAC,CAAC,KACrC,OAAO,KAAK,WAAW,OAAO,MAAM,GACpC,OAAO,UAAU;EAChB,2BAA2B,OAAO,QAAQ,gBAAgB;EAC1D,oBAAoB,OAAO,QAAQ,gBAAgB;EACnD,kBAAkB,OAAO,QAAQ,gBAAgB;EACjD,sBAAsB,OAAO,QAAQ,gBAAgB;CACtD,CAAC,CACF;CAEA,MAAM,WAAW,OAAO,OAAO,IAC9B,OAAO,KAAK,UAAU,WAAW,UAAU,KAAK,CAAC,GACjD,EAAE,aAAa,YAAY,CAC5B,CAAC,CAAC,KAAK,OAAO,oBAAoB,CAAC,CAAiB,CAAC;CACrD,OAAO,MAAM,KAAK,QAAQ;AAC3B,CAAC;AAED,MAAM,cAAcA,iBAAuB,KAAK,MAAM,QAAQ,gBAAgB,CAAC;AAC/E,MAAM,iBAAiB,oBAAoB,KAAK,MAAM,QAAQ,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;AAuB1E,MAAa,mBAA2E,eAAe,KACtG,MAAM,KAAK,QAAQ,MAAM,KAAK,OAAO,QAAQ,GAAG,CAAC,CAAC,CACnD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { denoDefaultInputs } from "../data/deno-defaults.js";
|
|
2
|
+
import { DenoRelease } from "../schemas/deno-release.js";
|
|
3
|
+
import { DenoReleaseCache } from "../services/DenoReleaseCache.js";
|
|
4
|
+
import { DenoVersionFetcher } from "../services/DenoVersionFetcher.js";
|
|
5
|
+
import { DenoReleaseCacheLive } from "./DenoReleaseCacheLive.js";
|
|
6
|
+
import { Effect, Layer } from "effect";
|
|
7
|
+
import { SemVerParserLive, VersionCacheLive } from "semver-effect";
|
|
8
|
+
|
|
9
|
+
//#region src/layers/AutoDenoCacheLive.ts
|
|
10
|
+
const setup = Effect.gen(function* () {
|
|
11
|
+
const cache = yield* DenoReleaseCache;
|
|
12
|
+
const inputs = yield* (yield* DenoVersionFetcher).fetch().pipe(Effect.map((result) => result.inputs), Effect.catchTags({
|
|
13
|
+
AuthenticationError: () => Effect.succeed(denoDefaultInputs),
|
|
14
|
+
NetworkError: () => Effect.succeed(denoDefaultInputs),
|
|
15
|
+
ParseError: () => Effect.succeed(denoDefaultInputs),
|
|
16
|
+
RateLimitError: () => Effect.succeed(denoDefaultInputs)
|
|
17
|
+
}));
|
|
18
|
+
const releases = yield* Effect.all(inputs.map((input) => DenoRelease.fromInput(input)), { concurrency: "unbounded" }).pipe(Effect.orElseSucceed(() => []));
|
|
19
|
+
yield* cache.load(releases);
|
|
20
|
+
});
|
|
21
|
+
const SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
22
|
+
const BaseCacheLayer = DenoReleaseCacheLive.pipe(Layer.provide(SemVerLayer));
|
|
23
|
+
/**
|
|
24
|
+
* Provides the {@link DenoReleaseCache} service using the "Auto" cache strategy.
|
|
25
|
+
*
|
|
26
|
+
* Attempts to fetch live release data from the GitHub API via
|
|
27
|
+
* {@link DenoVersionFetcher}. If the fetch fails for any reason — authentication
|
|
28
|
+
* errors, network errors, parse errors, or rate-limit errors — it silently falls
|
|
29
|
+
* back to the bundled default release data so the layer always succeeds.
|
|
30
|
+
*
|
|
31
|
+
* Use this strategy when you want the freshest data when available but can
|
|
32
|
+
* tolerate slightly stale bundled data in degraded environments.
|
|
33
|
+
*
|
|
34
|
+
* The three Deno cache strategy layers are:
|
|
35
|
+
* - `AutoDenoCacheLive` — tries API first, falls back to bundled defaults on any error
|
|
36
|
+
* - {@link FreshDenoCacheLive} — requires live API data, fails with `FreshnessError` if unavailable
|
|
37
|
+
* - {@link OfflineDenoCacheLive} — uses only bundled defaults, no network I/O
|
|
38
|
+
*
|
|
39
|
+
* @see {@link DenoReleaseCache}
|
|
40
|
+
* @see {@link FreshDenoCacheLive}
|
|
41
|
+
* @see {@link OfflineDenoCacheLive}
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
const AutoDenoCacheLive = BaseCacheLayer.pipe(Layer.tap((ctx) => setup.pipe(Effect.provide(ctx))));
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
export { AutoDenoCacheLive };
|
|
48
|
+
//# sourceMappingURL=AutoDenoCacheLive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoDenoCacheLive.js","names":["SemVerVersionCacheLive"],"sources":["../../../../src/layers/AutoDenoCacheLive.ts"],"sourcesContent":["import { Effect, Layer } from \"effect\";\nimport { SemVerParserLive, VersionCacheLive as SemVerVersionCacheLive } from \"semver-effect\";\nimport { denoDefaultInputs } from \"../data/deno-defaults.js\";\nimport { DenoRelease } from \"../schemas/deno-release.js\";\nimport { DenoReleaseCache } from \"../services/DenoReleaseCache.js\";\nimport { DenoVersionFetcher } from \"../services/DenoVersionFetcher.js\";\nimport { DenoReleaseCacheLive } from \"./DenoReleaseCacheLive.js\";\n\nconst setup = Effect.gen(function* () {\n\tconst cache = yield* DenoReleaseCache;\n\tconst fetcher = yield* DenoVersionFetcher;\n\n\tconst inputs = yield* fetcher.fetch().pipe(\n\t\tEffect.map((result) => result.inputs),\n\t\tEffect.catchTags({\n\t\t\tAuthenticationError: () => Effect.succeed(denoDefaultInputs),\n\t\t\tNetworkError: () => Effect.succeed(denoDefaultInputs),\n\t\t\tParseError: () => Effect.succeed(denoDefaultInputs),\n\t\t\tRateLimitError: () => Effect.succeed(denoDefaultInputs),\n\t\t}),\n\t);\n\n\tconst releases = yield* Effect.all(\n\t\tinputs.map((input) => DenoRelease.fromInput(input)),\n\t\t{ concurrency: \"unbounded\" },\n\t).pipe(Effect.orElseSucceed(() => [] as DenoRelease[]));\n\tyield* cache.load(releases);\n});\n\nconst SemVerLayer = SemVerVersionCacheLive.pipe(Layer.provide(SemVerParserLive));\nconst BaseCacheLayer = DenoReleaseCacheLive.pipe(Layer.provide(SemVerLayer));\n\n/**\n * Provides the {@link DenoReleaseCache} service using the \"Auto\" cache strategy.\n *\n * Attempts to fetch live release data from the GitHub API via\n * {@link DenoVersionFetcher}. If the fetch fails for any reason — authentication\n * errors, network errors, parse errors, or rate-limit errors — it silently falls\n * back to the bundled default release data so the layer always succeeds.\n *\n * Use this strategy when you want the freshest data when available but can\n * tolerate slightly stale bundled data in degraded environments.\n *\n * The three Deno cache strategy layers are:\n * - `AutoDenoCacheLive` — tries API first, falls back to bundled defaults on any error\n * - {@link FreshDenoCacheLive} — requires live API data, fails with `FreshnessError` if unavailable\n * - {@link OfflineDenoCacheLive} — uses only bundled defaults, no network I/O\n *\n * @see {@link DenoReleaseCache}\n * @see {@link FreshDenoCacheLive}\n * @see {@link OfflineDenoCacheLive}\n * @public\n */\nexport const AutoDenoCacheLive: Layer.Layer<DenoReleaseCache, never, DenoVersionFetcher> = BaseCacheLayer.pipe(\n\tLayer.tap((ctx) => setup.pipe(Effect.provide(ctx))),\n);\n"],"mappings":";;;;;;;;;AAQA,MAAM,QAAQ,OAAO,IAAI,aAAa;CACrC,MAAM,QAAQ,OAAO;CAGrB,MAAM,SAAS,QAAO,OAFC,mBAEM,CAAC,MAAM,CAAC,CAAC,KACrC,OAAO,KAAK,WAAW,OAAO,MAAM,GACpC,OAAO,UAAU;EAChB,2BAA2B,OAAO,QAAQ,iBAAiB;EAC3D,oBAAoB,OAAO,QAAQ,iBAAiB;EACpD,kBAAkB,OAAO,QAAQ,iBAAiB;EAClD,sBAAsB,OAAO,QAAQ,iBAAiB;CACvD,CAAC,CACF;CAEA,MAAM,WAAW,OAAO,OAAO,IAC9B,OAAO,KAAK,UAAU,YAAY,UAAU,KAAK,CAAC,GAClD,EAAE,aAAa,YAAY,CAC5B,CAAC,CAAC,KAAK,OAAO,oBAAoB,CAAC,CAAkB,CAAC;CACtD,OAAO,MAAM,KAAK,QAAQ;AAC3B,CAAC;AAED,MAAM,cAAcA,iBAAuB,KAAK,MAAM,QAAQ,gBAAgB,CAAC;AAC/E,MAAM,iBAAiB,qBAAqB,KAAK,MAAM,QAAQ,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;AAuB3E,MAAa,oBAA8E,eAAe,KACzG,MAAM,KAAK,QAAQ,MAAM,KAAK,OAAO,QAAQ,GAAG,CAAC,CAAC,CACnD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { nodeDefaultInputs, nodeDefaultScheduleData } from "../data/node-defaults.js";
|
|
2
|
+
import { NodeReleaseCache } from "../services/NodeReleaseCache.js";
|
|
3
|
+
import { NodeScheduleFetcher } from "../services/NodeScheduleFetcher.js";
|
|
4
|
+
import { NodeVersionFetcher } from "../services/NodeVersionFetcher.js";
|
|
5
|
+
import { NodeReleaseCacheLive } from "./NodeReleaseCacheLive.js";
|
|
6
|
+
import { Effect, Layer } from "effect";
|
|
7
|
+
import { SemVerParserLive, VersionCacheLive } from "semver-effect";
|
|
8
|
+
|
|
9
|
+
//#region src/layers/AutoNodeCacheLive.ts
|
|
10
|
+
const setup = Effect.gen(function* () {
|
|
11
|
+
const cache = yield* NodeReleaseCache;
|
|
12
|
+
const versionFetcher = yield* NodeVersionFetcher;
|
|
13
|
+
const scheduleFetcher = yield* NodeScheduleFetcher;
|
|
14
|
+
const nodeDefaults = {
|
|
15
|
+
inputs: nodeDefaultInputs,
|
|
16
|
+
scheduleData: nodeDefaultScheduleData
|
|
17
|
+
};
|
|
18
|
+
const { inputs, scheduleData } = yield* Effect.gen(function* () {
|
|
19
|
+
const [fetchResult, schedule] = yield* Effect.all([versionFetcher.fetch(), scheduleFetcher.fetch()]);
|
|
20
|
+
return {
|
|
21
|
+
inputs: fetchResult.inputs,
|
|
22
|
+
scheduleData: schedule
|
|
23
|
+
};
|
|
24
|
+
}).pipe(Effect.catchTags({
|
|
25
|
+
NetworkError: () => Effect.succeed(nodeDefaults),
|
|
26
|
+
ParseError: () => Effect.succeed(nodeDefaults)
|
|
27
|
+
}));
|
|
28
|
+
yield* cache.updateSchedule(scheduleData);
|
|
29
|
+
yield* cache.loadFromInputs(inputs);
|
|
30
|
+
});
|
|
31
|
+
const SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
32
|
+
const BaseCacheLayer = NodeReleaseCacheLive.pipe(Layer.provide(SemVerLayer));
|
|
33
|
+
/**
|
|
34
|
+
* Provides the {@link NodeReleaseCache} service using the "Auto" cache strategy.
|
|
35
|
+
*
|
|
36
|
+
* Attempts to fetch live release data from `nodejs.org/dist/index.json` via
|
|
37
|
+
* {@link NodeVersionFetcher} and the release schedule from the `nodejs/Release`
|
|
38
|
+
* repository via {@link NodeScheduleFetcher}. If either fetch fails — due to
|
|
39
|
+
* network errors or parse errors — the layer silently falls back to bundled
|
|
40
|
+
* default data (both version list and schedule) so it always succeeds.
|
|
41
|
+
*
|
|
42
|
+
* Node.js requires both a version fetcher and a schedule fetcher because LTS and
|
|
43
|
+
* maintenance phase information is tracked separately from the version index.
|
|
44
|
+
*
|
|
45
|
+
* The three Node cache strategy layers are:
|
|
46
|
+
* - `AutoNodeCacheLive` — tries API first, falls back to bundled defaults on any error
|
|
47
|
+
* - {@link FreshNodeCacheLive} — requires live API data, fails with `FreshnessError` if unavailable
|
|
48
|
+
* - {@link OfflineNodeCacheLive} — uses only bundled defaults, no network I/O
|
|
49
|
+
*
|
|
50
|
+
* @see {@link NodeReleaseCache}
|
|
51
|
+
* @see {@link FreshNodeCacheLive}
|
|
52
|
+
* @see {@link OfflineNodeCacheLive}
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
const AutoNodeCacheLive = BaseCacheLayer.pipe(Layer.tap((ctx) => setup.pipe(Effect.provide(ctx))));
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
export { AutoNodeCacheLive };
|
|
59
|
+
//# sourceMappingURL=AutoNodeCacheLive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoNodeCacheLive.js","names":["SemVerVersionCacheLive"],"sources":["../../../../src/layers/AutoNodeCacheLive.ts"],"sourcesContent":["import { Effect, Layer } from \"effect\";\nimport { SemVerParserLive, VersionCacheLive as SemVerVersionCacheLive } from \"semver-effect\";\nimport { nodeDefaultInputs, nodeDefaultScheduleData } from \"../data/node-defaults.js\";\nimport { NodeReleaseCache } from \"../services/NodeReleaseCache.js\";\nimport { NodeScheduleFetcher } from \"../services/NodeScheduleFetcher.js\";\nimport { NodeVersionFetcher } from \"../services/NodeVersionFetcher.js\";\nimport { NodeReleaseCacheLive } from \"./NodeReleaseCacheLive.js\";\n\nconst setup = Effect.gen(function* () {\n\tconst cache = yield* NodeReleaseCache;\n\tconst versionFetcher = yield* NodeVersionFetcher;\n\tconst scheduleFetcher = yield* NodeScheduleFetcher;\n\n\tconst nodeDefaults = { inputs: nodeDefaultInputs, scheduleData: nodeDefaultScheduleData };\n\tconst { inputs, scheduleData } = yield* Effect.gen(function* () {\n\t\tconst [fetchResult, schedule] = yield* Effect.all([versionFetcher.fetch(), scheduleFetcher.fetch()]);\n\t\treturn { inputs: fetchResult.inputs, scheduleData: schedule };\n\t}).pipe(\n\t\tEffect.catchTags({\n\t\t\tNetworkError: () => Effect.succeed(nodeDefaults),\n\t\t\tParseError: () => Effect.succeed(nodeDefaults),\n\t\t}),\n\t);\n\n\tyield* cache.updateSchedule(scheduleData);\n\tyield* cache.loadFromInputs(inputs);\n});\n\nconst SemVerLayer = SemVerVersionCacheLive.pipe(Layer.provide(SemVerParserLive));\nconst BaseCacheLayer = NodeReleaseCacheLive.pipe(Layer.provide(SemVerLayer));\n\n/**\n * Provides the {@link NodeReleaseCache} service using the \"Auto\" cache strategy.\n *\n * Attempts to fetch live release data from `nodejs.org/dist/index.json` via\n * {@link NodeVersionFetcher} and the release schedule from the `nodejs/Release`\n * repository via {@link NodeScheduleFetcher}. If either fetch fails — due to\n * network errors or parse errors — the layer silently falls back to bundled\n * default data (both version list and schedule) so it always succeeds.\n *\n * Node.js requires both a version fetcher and a schedule fetcher because LTS and\n * maintenance phase information is tracked separately from the version index.\n *\n * The three Node cache strategy layers are:\n * - `AutoNodeCacheLive` — tries API first, falls back to bundled defaults on any error\n * - {@link FreshNodeCacheLive} — requires live API data, fails with `FreshnessError` if unavailable\n * - {@link OfflineNodeCacheLive} — uses only bundled defaults, no network I/O\n *\n * @see {@link NodeReleaseCache}\n * @see {@link FreshNodeCacheLive}\n * @see {@link OfflineNodeCacheLive}\n * @public\n */\nexport const AutoNodeCacheLive: Layer.Layer<NodeReleaseCache, never, NodeVersionFetcher | NodeScheduleFetcher> =\n\tBaseCacheLayer.pipe(Layer.tap((ctx) => setup.pipe(Effect.provide(ctx))));\n"],"mappings":";;;;;;;;;AAQA,MAAM,QAAQ,OAAO,IAAI,aAAa;CACrC,MAAM,QAAQ,OAAO;CACrB,MAAM,iBAAiB,OAAO;CAC9B,MAAM,kBAAkB,OAAO;CAE/B,MAAM,eAAe;EAAE,QAAQ;EAAmB,cAAc;CAAwB;CACxF,MAAM,EAAE,QAAQ,iBAAiB,OAAO,OAAO,IAAI,aAAa;EAC/D,MAAM,CAAC,aAAa,YAAY,OAAO,OAAO,IAAI,CAAC,eAAe,MAAM,GAAG,gBAAgB,MAAM,CAAC,CAAC;EACnG,OAAO;GAAE,QAAQ,YAAY;GAAQ,cAAc;EAAS;CAC7D,CAAC,CAAC,CAAC,KACF,OAAO,UAAU;EAChB,oBAAoB,OAAO,QAAQ,YAAY;EAC/C,kBAAkB,OAAO,QAAQ,YAAY;CAC9C,CAAC,CACF;CAEA,OAAO,MAAM,eAAe,YAAY;CACxC,OAAO,MAAM,eAAe,MAAM;AACnC,CAAC;AAED,MAAM,cAAcA,iBAAuB,KAAK,MAAM,QAAQ,gBAAgB,CAAC;AAC/E,MAAM,iBAAiB,qBAAqB,KAAK,MAAM,QAAQ,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAwB3E,MAAa,oBACZ,eAAe,KAAK,MAAM,KAAK,QAAQ,MAAM,KAAK,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BunReleaseCache } from "../services/BunReleaseCache.js";
|
|
2
|
+
import { createRuntimeCache } from "./RuntimeCacheLive.js";
|
|
3
|
+
import { Layer } from "effect";
|
|
4
|
+
|
|
5
|
+
//#region src/layers/BunReleaseCacheLive.ts
|
|
6
|
+
/**
|
|
7
|
+
* Low-level layer that constructs the {@link BunReleaseCache} service backed by
|
|
8
|
+
* a `SemVerVersionCache` instance from `semver-effect`.
|
|
9
|
+
*
|
|
10
|
+
* This layer wires up the cache storage but does not populate it with any
|
|
11
|
+
* release data. Callers are responsible for loading releases after construction.
|
|
12
|
+
* In normal usage you should prefer the higher-level cache strategy layers
|
|
13
|
+
* instead of using this layer directly:
|
|
14
|
+
* - {@link AutoBunCacheLive} — API with fallback to bundled defaults
|
|
15
|
+
* - {@link FreshBunCacheLive} — API only, fails if unavailable
|
|
16
|
+
* - {@link OfflineBunCacheLive} — bundled defaults only
|
|
17
|
+
*
|
|
18
|
+
* @see {@link BunReleaseCache}
|
|
19
|
+
* @see {@link createRuntimeCache}
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
const BunReleaseCacheLive = Layer.effect(BunReleaseCache, createRuntimeCache());
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
export { BunReleaseCacheLive };
|
|
26
|
+
//# sourceMappingURL=BunReleaseCacheLive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BunReleaseCacheLive.js","names":[],"sources":["../../../../src/layers/BunReleaseCacheLive.ts"],"sourcesContent":["import { Layer } from \"effect\";\nimport type { VersionCache as SemVerVersionCache } from \"semver-effect\";\nimport type { BunRelease } from \"../schemas/bun-release.js\";\nimport { BunReleaseCache } from \"../services/BunReleaseCache.js\";\nimport { createRuntimeCache } from \"./RuntimeCacheLive.js\";\n\n/**\n * Low-level layer that constructs the {@link BunReleaseCache} service backed by\n * a `SemVerVersionCache` instance from `semver-effect`.\n *\n * This layer wires up the cache storage but does not populate it with any\n * release data. Callers are responsible for loading releases after construction.\n * In normal usage you should prefer the higher-level cache strategy layers\n * instead of using this layer directly:\n * - {@link AutoBunCacheLive} — API with fallback to bundled defaults\n * - {@link FreshBunCacheLive} — API only, fails if unavailable\n * - {@link OfflineBunCacheLive} — bundled defaults only\n *\n * @see {@link BunReleaseCache}\n * @see {@link createRuntimeCache}\n * @internal\n */\nexport const BunReleaseCacheLive: Layer.Layer<BunReleaseCache, never, SemVerVersionCache> = Layer.effect(\n\tBunReleaseCache,\n\tcreateRuntimeCache<BunRelease>(),\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,sBAA+E,MAAM,OACjG,iBACA,mBAA+B,CAChC"}
|