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.
@@ -1,8 +1,12 @@
1
- import { Cause, Console, Context, Data, DateTime, Effect, JSONSchema, Layer, Option, Predicate, Ref, Schedule, Schema } from "effect";
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
- const BunReleaseBase = Data.TaggedClass("BunRelease");
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.fromString(input.version);
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
- const BunReleaseCache = Context.GenericTag("BunReleaseCache");
421
- const BunVersionFetcher = Context.GenericTag("BunVersionFetcher");
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.fromString(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.fromString(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
- const DenoReleaseBase = Data.TaggedClass("DenoRelease");
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.fromString(input.version);
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
- const DenoReleaseCache = Context.GenericTag("DenoReleaseCache");
902
- const DenoVersionFetcher = Context.GenericTag("DenoVersionFetcher");
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
- const NodeReleaseCache = Context.GenericTag("NodeReleaseCache");
5252
- const NodeScheduleFetcher = Context.GenericTag("NodeScheduleFetcher");
5253
- const NodeVersionFetcher = Context.GenericTag("NodeVersionFetcher");
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.fromString(input.version);
5284
- const npm = yield* SemVer.fromString(input.npm);
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
- const NodeScheduleBase = Data.TaggedClass("NodeSchedule");
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
- const VersionNotFoundErrorBase = Data.TaggedError("VersionNotFoundError");
5401
- class VersionNotFoundError extends VersionNotFoundErrorBase {
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.fromString(raw).pipe(Effect.map(Option.some), Effect.catchAll(()=>Effect.succeed(Option.none())));
5460
- const GitHubClient = Context.GenericTag("GitHubClient");
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
- const DenoResolver = Context.GenericTag("DenoResolver");
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
- const OctokitInstance = Context.GenericTag("OctokitInstance");
5576
- const AuthenticationErrorBase = Data.TaggedError("AuthenticationError");
5577
- class AuthenticationError extends AuthenticationErrorBase {
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
- const NetworkErrorBase = Data.TaggedError("NetworkError");
5646
- class NetworkError extends NetworkErrorBase {
5671
+ class NetworkError extends Data.TaggedError("NetworkError") {
5647
5672
  }
5648
- const ParseErrorBase = Data.TaggedError("ParseError");
5649
- class ParseError extends ParseErrorBase {
5673
+ class ParseError extends Data.TaggedError("ParseError") {
5650
5674
  }
5651
- const RateLimitErrorBase = Data.TaggedError("RateLimitError");
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
- const NodeResolver = Context.GenericTag("NodeResolver");
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, AuthenticationErrorBase, AutoBunCacheLive, AutoDenoCacheLive, AutoNodeCacheLive, BunRelease, BunReleaseBase, BunReleaseCache, BunReleaseCacheLive, BunResolver, BunResolverLive, BunVersionFetcher, BunVersionFetcherLive, Cause, Console, Data, DenoRelease, DenoReleaseBase, DenoReleaseCache, DenoReleaseCacheLive, DenoResolver, DenoResolverLive, DenoVersionFetcher, DenoVersionFetcherLive, Effect, GitHubAppAuth, GitHubAutoAuth, GitHubClient, GitHubClientLive, GitHubTokenAuth, GitHubTokenAuthFromToken, JSONSchema, Layer, NetworkError, NetworkErrorBase, NodeRelease, NodeReleaseCache, NodeReleaseCacheLive, NodeResolver, NodeResolverLive, NodeSchedule, NodeScheduleBase, NodeScheduleFetcher, NodeScheduleFetcherLive, NodeVersionFetcher, NodeVersionFetcherLive, OctokitInstance, Option, ParseError, ParseErrorBase, RateLimitError, RateLimitErrorBase, Schema, SemVerParserLive, VersionCacheLive, VersionNotFoundError, VersionNotFoundErrorBase, bunDefaultInputs, createRuntimeCache, denoDefaultInputs, nodeDefaultInputs, nodeDefaultScheduleData };
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 };
@@ -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, Console, Option, Layer, GitHubAppAuth, GitHubAutoAuth, BunResolverLive, BunVersionFetcherLive, DenoResolverLive, Cause, Effect, GitHubClientLive, AutoBunCacheLive, GitHubTokenAuthFromToken, NodeResolverLive, NodeVersionFetcherLive, DenoResolver, NodeResolver } from "../701.js";
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("../235.js").then((mod)=>({
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.2.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);