runtime-resolver 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{701.js → 711.js} +73 -49
- package/bin/runtime-resolver.js +4 -5
- package/index.d.ts +267 -563
- package/index.js +8 -9
- package/{235.js → json-schema.js} +8 -2
- package/package.json +10 -8
- package/rslib-runtime.js +37 -0
- package/tsdoc-metadata.json +1 -1
package/{701.js → 711.js}
RENAMED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context, Data, DateTime, Effect, Layer, Option, Predicate, Ref, Schedule, Schema } from "effect";
|
|
2
2
|
import { Range, SemVer, SemVerParserLive, VersionCache, VersionCacheLive } from "semver-effect";
|
|
3
3
|
import { Octokit } from "octokit";
|
|
4
4
|
import { createAppAuth } from "@octokit/auth-app";
|
|
5
5
|
const bunDefaultInputs = [
|
|
6
|
+
{
|
|
7
|
+
version: "1.3.11",
|
|
8
|
+
date: "2026-03-18T04:31:40Z"
|
|
9
|
+
},
|
|
6
10
|
{
|
|
7
11
|
version: "1.3.10",
|
|
8
12
|
date: "2026-02-26T07:08:20Z"
|
|
@@ -398,17 +402,12 @@ const bunDefaultInputs = [
|
|
|
398
402
|
{
|
|
399
403
|
version: "1.0.19",
|
|
400
404
|
date: "2023-12-22T08:35:06Z"
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
version: "1.0.18",
|
|
404
|
-
date: "2023-12-14T08:05:14Z"
|
|
405
405
|
}
|
|
406
406
|
];
|
|
407
|
-
|
|
408
|
-
class BunRelease extends BunReleaseBase {
|
|
407
|
+
class BunRelease extends Data.TaggedClass("BunRelease") {
|
|
409
408
|
static fromInput(input) {
|
|
410
409
|
return Effect.gen(function*() {
|
|
411
|
-
const version = yield* SemVer.
|
|
410
|
+
const version = yield* SemVer.parse(input.version);
|
|
412
411
|
const date = input.date ? DateTime.unsafeMake(input.date) : DateTime.unsafeMake(new Date());
|
|
413
412
|
return new BunRelease({
|
|
414
413
|
version,
|
|
@@ -417,8 +416,10 @@ class BunRelease extends BunReleaseBase {
|
|
|
417
416
|
});
|
|
418
417
|
}
|
|
419
418
|
}
|
|
420
|
-
|
|
421
|
-
|
|
419
|
+
class BunReleaseCache extends Context.Tag("runtime-resolver/BunReleaseCache")() {
|
|
420
|
+
}
|
|
421
|
+
class BunVersionFetcher extends Context.Tag("runtime-resolver/BunVersionFetcher")() {
|
|
422
|
+
}
|
|
422
423
|
const createRuntimeCache = ()=>Effect.gen(function*() {
|
|
423
424
|
const innerCache = yield* VersionCache;
|
|
424
425
|
const lookupMap = new Map();
|
|
@@ -434,7 +435,7 @@ const createRuntimeCache = ()=>Effect.gen(function*() {
|
|
|
434
435
|
yield* innerCache.load(versions);
|
|
435
436
|
}),
|
|
436
437
|
resolve: (range)=>Effect.gen(function*() {
|
|
437
|
-
const parsed = yield* Range.
|
|
438
|
+
const parsed = yield* Range.parse(range);
|
|
438
439
|
const resolved = yield* innerCache.resolve(parsed);
|
|
439
440
|
const release = lookupMap.get(resolved.toString());
|
|
440
441
|
if (!release) return yield* Effect.die(new Error(`Cache inconsistency: ${resolved.toString()} not in lookup map`));
|
|
@@ -445,7 +446,7 @@ const createRuntimeCache = ()=>Effect.gen(function*() {
|
|
|
445
446
|
return versions.map((v)=>lookupMap.get(v.toString())).filter((r)=>void 0 !== r);
|
|
446
447
|
}),
|
|
447
448
|
filter: (range)=>Effect.gen(function*() {
|
|
448
|
-
const parsed = yield* Range.
|
|
449
|
+
const parsed = yield* Range.parse(range);
|
|
449
450
|
const filtered = yield* innerCache.filter(parsed).pipe(Effect.catchTag("EmptyCacheError", ()=>Effect.succeed([])));
|
|
450
451
|
return filtered.map((v)=>lookupMap.get(v.toString())).filter((r)=>void 0 !== r);
|
|
451
452
|
}),
|
|
@@ -484,6 +485,14 @@ const SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
|
484
485
|
const BaseCacheLayer = BunReleaseCacheLive.pipe(Layer.provide(SemVerLayer));
|
|
485
486
|
const AutoBunCacheLive = BaseCacheLayer.pipe(Layer.tap((ctx)=>setup.pipe(Effect.provide(ctx))));
|
|
486
487
|
const denoDefaultInputs = [
|
|
488
|
+
{
|
|
489
|
+
version: "2.7.7",
|
|
490
|
+
date: "2026-03-19T13:52:21Z"
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
version: "2.7.6",
|
|
494
|
+
date: "2026-03-18T12:09:26Z"
|
|
495
|
+
},
|
|
487
496
|
{
|
|
488
497
|
version: "2.7.5",
|
|
489
498
|
date: "2026-03-11T12:40:10Z"
|
|
@@ -875,21 +884,12 @@ const denoDefaultInputs = [
|
|
|
875
884
|
{
|
|
876
885
|
version: "1.43.1",
|
|
877
886
|
date: "2024-05-01T21:45:40Z"
|
|
878
|
-
},
|
|
879
|
-
{
|
|
880
|
-
version: "1.43.0",
|
|
881
|
-
date: "2024-05-01T08:19:33Z"
|
|
882
|
-
},
|
|
883
|
-
{
|
|
884
|
-
version: "1.42.4",
|
|
885
|
-
date: "2024-04-16T01:46:33Z"
|
|
886
887
|
}
|
|
887
888
|
];
|
|
888
|
-
|
|
889
|
-
class DenoRelease extends DenoReleaseBase {
|
|
889
|
+
class DenoRelease extends Data.TaggedClass("DenoRelease") {
|
|
890
890
|
static fromInput(input) {
|
|
891
891
|
return Effect.gen(function*() {
|
|
892
|
-
const version = yield* SemVer.
|
|
892
|
+
const version = yield* SemVer.parse(input.version);
|
|
893
893
|
const date = input.date ? DateTime.unsafeMake(input.date) : DateTime.unsafeMake(new Date());
|
|
894
894
|
return new DenoRelease({
|
|
895
895
|
version,
|
|
@@ -898,8 +898,10 @@ class DenoRelease extends DenoReleaseBase {
|
|
|
898
898
|
});
|
|
899
899
|
}
|
|
900
900
|
}
|
|
901
|
-
|
|
902
|
-
|
|
901
|
+
class DenoReleaseCache extends Context.Tag("runtime-resolver/DenoReleaseCache")() {
|
|
902
|
+
}
|
|
903
|
+
class DenoVersionFetcher extends Context.Tag("runtime-resolver/DenoVersionFetcher")() {
|
|
904
|
+
}
|
|
903
905
|
const DenoReleaseCacheLive = Layer.effect(DenoReleaseCache, createRuntimeCache());
|
|
904
906
|
const AutoDenoCacheLive_setup = Effect.gen(function*() {
|
|
905
907
|
const cache = yield* DenoReleaseCache;
|
|
@@ -919,6 +921,11 @@ const AutoDenoCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVer
|
|
|
919
921
|
const AutoDenoCacheLive_BaseCacheLayer = DenoReleaseCacheLive.pipe(Layer.provide(AutoDenoCacheLive_SemVerLayer));
|
|
920
922
|
const AutoDenoCacheLive = AutoDenoCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>AutoDenoCacheLive_setup.pipe(Effect.provide(ctx))));
|
|
921
923
|
const nodeDefaultInputs = [
|
|
924
|
+
{
|
|
925
|
+
version: "25.8.2",
|
|
926
|
+
npm: "11.11.1",
|
|
927
|
+
date: "2026-03-24"
|
|
928
|
+
},
|
|
922
929
|
{
|
|
923
930
|
version: "25.8.1",
|
|
924
931
|
npm: "11.11.0",
|
|
@@ -979,6 +986,11 @@ const nodeDefaultInputs = [
|
|
|
979
986
|
npm: "11.6.2",
|
|
980
987
|
date: "2025-10-15"
|
|
981
988
|
},
|
|
989
|
+
{
|
|
990
|
+
version: "24.14.1",
|
|
991
|
+
npm: "11.11.0",
|
|
992
|
+
date: "2026-03-24"
|
|
993
|
+
},
|
|
982
994
|
{
|
|
983
995
|
version: "24.14.0",
|
|
984
996
|
npm: "11.9.0",
|
|
@@ -1149,6 +1161,11 @@ const nodeDefaultInputs = [
|
|
|
1149
1161
|
npm: "10.9.0",
|
|
1150
1162
|
date: "2024-10-16"
|
|
1151
1163
|
},
|
|
1164
|
+
{
|
|
1165
|
+
version: "22.22.2",
|
|
1166
|
+
npm: "10.9.7",
|
|
1167
|
+
date: "2026-03-24"
|
|
1168
|
+
},
|
|
1152
1169
|
{
|
|
1153
1170
|
version: "22.22.1",
|
|
1154
1171
|
npm: "10.9.4",
|
|
@@ -1364,6 +1381,11 @@ const nodeDefaultInputs = [
|
|
|
1364
1381
|
npm: "10.2.0",
|
|
1365
1382
|
date: "2023-10-17"
|
|
1366
1383
|
},
|
|
1384
|
+
{
|
|
1385
|
+
version: "20.20.2",
|
|
1386
|
+
npm: "10.8.2",
|
|
1387
|
+
date: "2026-03-24"
|
|
1388
|
+
},
|
|
1367
1389
|
{
|
|
1368
1390
|
version: "20.20.1",
|
|
1369
1391
|
npm: "10.8.2",
|
|
@@ -5248,9 +5270,12 @@ const nodeDefaultScheduleData = {
|
|
|
5248
5270
|
codename: ""
|
|
5249
5271
|
}
|
|
5250
5272
|
};
|
|
5251
|
-
|
|
5252
|
-
|
|
5253
|
-
|
|
5273
|
+
class NodeReleaseCache extends Context.Tag("runtime-resolver/NodeReleaseCache")() {
|
|
5274
|
+
}
|
|
5275
|
+
class NodeScheduleFetcher extends Context.Tag("runtime-resolver/NodeScheduleFetcher")() {
|
|
5276
|
+
}
|
|
5277
|
+
class NodeVersionFetcher extends Context.Tag("runtime-resolver/NodeVersionFetcher")() {
|
|
5278
|
+
}
|
|
5254
5279
|
Schema.Struct({
|
|
5255
5280
|
version: Schema.String,
|
|
5256
5281
|
npm: Schema.String,
|
|
@@ -5280,15 +5305,14 @@ class NodeRelease {
|
|
|
5280
5305
|
}
|
|
5281
5306
|
static fromInput(input, scheduleRef) {
|
|
5282
5307
|
return Effect.gen(function*() {
|
|
5283
|
-
const version = yield* SemVer.
|
|
5284
|
-
const npm = yield* SemVer.
|
|
5308
|
+
const version = yield* SemVer.parse(input.version);
|
|
5309
|
+
const npm = yield* SemVer.parse(input.npm);
|
|
5285
5310
|
const date = DateTime.unsafeMake(input.date);
|
|
5286
5311
|
return new NodeRelease(version, npm, date, scheduleRef);
|
|
5287
5312
|
});
|
|
5288
5313
|
}
|
|
5289
5314
|
}
|
|
5290
|
-
|
|
5291
|
-
class NodeSchedule extends NodeScheduleBase {
|
|
5315
|
+
class NodeSchedule extends Data.TaggedClass("NodeSchedule") {
|
|
5292
5316
|
static fromData(data) {
|
|
5293
5317
|
const entries = [];
|
|
5294
5318
|
for (const [key, value] of Object.entries(data)){
|
|
@@ -5397,10 +5421,10 @@ const AutoNodeCacheLive_setup = Effect.gen(function*() {
|
|
|
5397
5421
|
const AutoNodeCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
5398
5422
|
const AutoNodeCacheLive_BaseCacheLayer = NodeReleaseCacheLive.pipe(Layer.provide(AutoNodeCacheLive_SemVerLayer));
|
|
5399
5423
|
const AutoNodeCacheLive = AutoNodeCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>AutoNodeCacheLive_setup.pipe(Effect.provide(ctx))));
|
|
5400
|
-
|
|
5401
|
-
|
|
5424
|
+
class VersionNotFoundError extends Data.TaggedError("VersionNotFoundError") {
|
|
5425
|
+
}
|
|
5426
|
+
class BunResolver extends Context.Tag("runtime-resolver/BunResolver")() {
|
|
5402
5427
|
}
|
|
5403
|
-
const BunResolver = Context.GenericTag("BunResolver");
|
|
5404
5428
|
const BunResolverLive = Layer.effect(BunResolver, Effect.gen(function*() {
|
|
5405
5429
|
const cache = yield* BunReleaseCache;
|
|
5406
5430
|
return {
|
|
@@ -5456,8 +5480,9 @@ const retryOnRateLimit = (effect)=>effect.pipe(Effect.retry({
|
|
|
5456
5480
|
schedule: Schedule.exponential("1 second").pipe(Schedule.compose(Schedule.recurs(3))),
|
|
5457
5481
|
while: Predicate.isTagged("RateLimitError")
|
|
5458
5482
|
}));
|
|
5459
|
-
const tryParseSemVer = (raw)=>SemVer.
|
|
5460
|
-
|
|
5483
|
+
const tryParseSemVer = (raw)=>SemVer.parse(raw).pipe(Effect.map(Option.some), Effect.catchAll(()=>Effect.succeed(Option.none())));
|
|
5484
|
+
class GitHubClient extends Context.Tag("runtime-resolver/GitHubClient")() {
|
|
5485
|
+
}
|
|
5461
5486
|
const normalizeBunTag = (tagName)=>{
|
|
5462
5487
|
const version = tagName.startsWith("bun-") ? tagName.slice(4) : tagName;
|
|
5463
5488
|
const stripped = version.startsWith("v") || version.startsWith("V") ? version.slice(1) : version;
|
|
@@ -5490,7 +5515,8 @@ const BunVersionFetcherLive = Layer.effect(BunVersionFetcher, Effect.gen(functio
|
|
|
5490
5515
|
})
|
|
5491
5516
|
};
|
|
5492
5517
|
}));
|
|
5493
|
-
|
|
5518
|
+
class DenoResolver extends Context.Tag("runtime-resolver/DenoResolver")() {
|
|
5519
|
+
}
|
|
5494
5520
|
const DenoResolverLive = Layer.effect(DenoResolver, Effect.gen(function*() {
|
|
5495
5521
|
const cache = yield* DenoReleaseCache;
|
|
5496
5522
|
return {
|
|
@@ -5572,9 +5598,9 @@ const DenoVersionFetcherLive = Layer.effect(DenoVersionFetcher, Effect.gen(funct
|
|
|
5572
5598
|
})
|
|
5573
5599
|
};
|
|
5574
5600
|
}));
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
class AuthenticationError extends
|
|
5601
|
+
class OctokitInstance extends Context.Tag("runtime-resolver/OctokitInstance")() {
|
|
5602
|
+
}
|
|
5603
|
+
class AuthenticationError extends Data.TaggedError("AuthenticationError") {
|
|
5578
5604
|
}
|
|
5579
5605
|
const resolveInstallationId = async (auth, installationId)=>{
|
|
5580
5606
|
if (installationId) return installationId;
|
|
@@ -5642,14 +5668,11 @@ const GitHubAutoAuth = Layer.effect(OctokitInstance, Effect.gen(function*() {
|
|
|
5642
5668
|
});
|
|
5643
5669
|
return new Octokit();
|
|
5644
5670
|
}));
|
|
5645
|
-
|
|
5646
|
-
class NetworkError extends NetworkErrorBase {
|
|
5671
|
+
class NetworkError extends Data.TaggedError("NetworkError") {
|
|
5647
5672
|
}
|
|
5648
|
-
|
|
5649
|
-
class ParseError extends ParseErrorBase {
|
|
5673
|
+
class ParseError extends Data.TaggedError("ParseError") {
|
|
5650
5674
|
}
|
|
5651
|
-
|
|
5652
|
-
class RateLimitError extends RateLimitErrorBase {
|
|
5675
|
+
class RateLimitError extends Data.TaggedError("RateLimitError") {
|
|
5653
5676
|
}
|
|
5654
5677
|
const GitHubTagCommit = Schema.Struct({
|
|
5655
5678
|
sha: Schema.String,
|
|
@@ -5772,7 +5795,8 @@ const GitHubClientLive = Layer.effect(GitHubClient, Effect.gen(function*() {
|
|
|
5772
5795
|
})
|
|
5773
5796
|
};
|
|
5774
5797
|
}));
|
|
5775
|
-
|
|
5798
|
+
class NodeResolver extends Context.Tag("runtime-resolver/NodeResolver")() {
|
|
5799
|
+
}
|
|
5776
5800
|
const NodeResolverLive = Layer.effect(NodeResolver, Effect.gen(function*() {
|
|
5777
5801
|
const cache = yield* NodeReleaseCache;
|
|
5778
5802
|
return {
|
|
@@ -5925,4 +5949,4 @@ const GitHubTokenAuth = Layer.effect(OctokitInstance, Effect.gen(function*() {
|
|
|
5925
5949
|
const GitHubTokenAuthFromToken = (token)=>Layer.succeed(OctokitInstance, new Octokit({
|
|
5926
5950
|
auth: token
|
|
5927
5951
|
}));
|
|
5928
|
-
export { AuthenticationError,
|
|
5952
|
+
export { AuthenticationError, AutoBunCacheLive, AutoDenoCacheLive, AutoNodeCacheLive, BunRelease, BunReleaseCache, BunReleaseCacheLive, BunResolver, BunResolverLive, BunVersionFetcher, BunVersionFetcherLive, DenoRelease, DenoReleaseCache, DenoReleaseCacheLive, DenoResolver, DenoResolverLive, DenoVersionFetcher, DenoVersionFetcherLive, GitHubAppAuth, GitHubAutoAuth, GitHubClient, GitHubClientLive, GitHubTokenAuth, GitHubTokenAuthFromToken, NetworkError, NodeRelease, NodeReleaseCache, NodeReleaseCacheLive, NodeResolver, NodeResolverLive, NodeSchedule, NodeScheduleFetcher, NodeScheduleFetcherLive, NodeVersionFetcher, NodeVersionFetcherLive, OctokitInstance, ParseError, RateLimitError, VersionNotFoundError, bunDefaultInputs, createRuntimeCache, denoDefaultInputs, nodeDefaultInputs, nodeDefaultScheduleData };
|
package/bin/runtime-resolver.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command, Options } from "@effect/cli";
|
|
3
3
|
import { NodeContext, NodeRuntime } from "@effect/platform-node";
|
|
4
|
+
import { Cause, Console, Effect, Layer, Option } from "effect";
|
|
4
5
|
import { readFileSync } from "node:fs";
|
|
5
|
-
import { NodeScheduleFetcherLive, AutoDenoCacheLive, DenoVersionFetcherLive, AutoNodeCacheLive, BunResolver,
|
|
6
|
+
import { NodeScheduleFetcherLive, AutoDenoCacheLive, DenoVersionFetcherLive, AutoNodeCacheLive, BunResolver, NodeResolver, NodeVersionFetcherLive, NodeResolverLive, GitHubAutoAuth, BunResolverLive, BunVersionFetcherLive, GitHubClientLive, DenoResolverLive, GitHubTokenAuthFromToken, GitHubAppAuth, AutoBunCacheLive, DenoResolver } from "../711.js";
|
|
6
7
|
const GitHubLayer = GitHubClientLive.pipe(Layer.provide(GitHubAutoAuth));
|
|
7
8
|
const makeNodeLayer = (authOverride)=>{
|
|
8
9
|
const ghLayer = authOverride ? GitHubClientLive.pipe(Layer.provide(authOverride)) : GitHubLayer;
|
|
@@ -163,9 +164,7 @@ const resolveHandler = (args)=>Effect.gen(function*() {
|
|
|
163
164
|
];
|
|
164
165
|
const hasResolveFlags = resolveFlags.some((f)=>Option.isSome(f));
|
|
165
166
|
if (hasResolveFlags) return void (yield* Console.error("Error: --schema cannot be combined with resolve flags (--node, --bun, --deno, etc.)"));
|
|
166
|
-
const { cliJsonSchema } = yield* Effect.promise(()=>import("../
|
|
167
|
-
cliJsonSchema: mod.cliJsonSchema
|
|
168
|
-
})));
|
|
167
|
+
const { cliJsonSchema } = yield* Effect.promise(()=>import("../json-schema.js").then((m)=>m.json_schema_namespaceObject));
|
|
169
168
|
yield* Console.log(JSON.stringify(cliJsonSchema, null, 2));
|
|
170
169
|
return;
|
|
171
170
|
}
|
|
@@ -260,7 +259,7 @@ const rootCommand = Command.make("runtime-resolver", {
|
|
|
260
259
|
}, resolveHandler);
|
|
261
260
|
const cli = Command.run(rootCommand, {
|
|
262
261
|
name: "runtime-resolver",
|
|
263
|
-
version: "0.
|
|
262
|
+
version: "0.3.1"
|
|
264
263
|
});
|
|
265
264
|
const main = Effect.suspend(()=>cli(process.argv)).pipe(Effect.provide(NodeContext.layer), Effect.catchAllCause((cause)=>{
|
|
266
265
|
const defects = Cause.defects(cause);
|