runtime-resolver 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{701.js → 711.js} +45 -41
- package/bin/runtime-resolver.js +4 -5
- package/index.d.ts +321 -552
- 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
|
}),
|
|
@@ -885,11 +886,10 @@ const denoDefaultInputs = [
|
|
|
885
886
|
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;
|
|
@@ -5248,9 +5250,12 @@ const nodeDefaultScheduleData = {
|
|
|
5248
5250
|
codename: ""
|
|
5249
5251
|
}
|
|
5250
5252
|
};
|
|
5251
|
-
|
|
5252
|
-
|
|
5253
|
-
|
|
5253
|
+
class NodeReleaseCache extends Context.Tag("runtime-resolver/NodeReleaseCache")() {
|
|
5254
|
+
}
|
|
5255
|
+
class NodeScheduleFetcher extends Context.Tag("runtime-resolver/NodeScheduleFetcher")() {
|
|
5256
|
+
}
|
|
5257
|
+
class NodeVersionFetcher extends Context.Tag("runtime-resolver/NodeVersionFetcher")() {
|
|
5258
|
+
}
|
|
5254
5259
|
Schema.Struct({
|
|
5255
5260
|
version: Schema.String,
|
|
5256
5261
|
npm: Schema.String,
|
|
@@ -5280,15 +5285,14 @@ class NodeRelease {
|
|
|
5280
5285
|
}
|
|
5281
5286
|
static fromInput(input, scheduleRef) {
|
|
5282
5287
|
return Effect.gen(function*() {
|
|
5283
|
-
const version = yield* SemVer.
|
|
5284
|
-
const npm = yield* SemVer.
|
|
5288
|
+
const version = yield* SemVer.parse(input.version);
|
|
5289
|
+
const npm = yield* SemVer.parse(input.npm);
|
|
5285
5290
|
const date = DateTime.unsafeMake(input.date);
|
|
5286
5291
|
return new NodeRelease(version, npm, date, scheduleRef);
|
|
5287
5292
|
});
|
|
5288
5293
|
}
|
|
5289
5294
|
}
|
|
5290
|
-
|
|
5291
|
-
class NodeSchedule extends NodeScheduleBase {
|
|
5295
|
+
class NodeSchedule extends Data.TaggedClass("NodeSchedule") {
|
|
5292
5296
|
static fromData(data) {
|
|
5293
5297
|
const entries = [];
|
|
5294
5298
|
for (const [key, value] of Object.entries(data)){
|
|
@@ -5397,10 +5401,10 @@ const AutoNodeCacheLive_setup = Effect.gen(function*() {
|
|
|
5397
5401
|
const AutoNodeCacheLive_SemVerLayer = VersionCacheLive.pipe(Layer.provide(SemVerParserLive));
|
|
5398
5402
|
const AutoNodeCacheLive_BaseCacheLayer = NodeReleaseCacheLive.pipe(Layer.provide(AutoNodeCacheLive_SemVerLayer));
|
|
5399
5403
|
const AutoNodeCacheLive = AutoNodeCacheLive_BaseCacheLayer.pipe(Layer.tap((ctx)=>AutoNodeCacheLive_setup.pipe(Effect.provide(ctx))));
|
|
5400
|
-
|
|
5401
|
-
|
|
5404
|
+
class VersionNotFoundError extends Data.TaggedError("VersionNotFoundError") {
|
|
5405
|
+
}
|
|
5406
|
+
class BunResolver extends Context.Tag("runtime-resolver/BunResolver")() {
|
|
5402
5407
|
}
|
|
5403
|
-
const BunResolver = Context.GenericTag("BunResolver");
|
|
5404
5408
|
const BunResolverLive = Layer.effect(BunResolver, Effect.gen(function*() {
|
|
5405
5409
|
const cache = yield* BunReleaseCache;
|
|
5406
5410
|
return {
|
|
@@ -5456,8 +5460,9 @@ const retryOnRateLimit = (effect)=>effect.pipe(Effect.retry({
|
|
|
5456
5460
|
schedule: Schedule.exponential("1 second").pipe(Schedule.compose(Schedule.recurs(3))),
|
|
5457
5461
|
while: Predicate.isTagged("RateLimitError")
|
|
5458
5462
|
}));
|
|
5459
|
-
const tryParseSemVer = (raw)=>SemVer.
|
|
5460
|
-
|
|
5463
|
+
const tryParseSemVer = (raw)=>SemVer.parse(raw).pipe(Effect.map(Option.some), Effect.catchAll(()=>Effect.succeed(Option.none())));
|
|
5464
|
+
class GitHubClient extends Context.Tag("runtime-resolver/GitHubClient")() {
|
|
5465
|
+
}
|
|
5461
5466
|
const normalizeBunTag = (tagName)=>{
|
|
5462
5467
|
const version = tagName.startsWith("bun-") ? tagName.slice(4) : tagName;
|
|
5463
5468
|
const stripped = version.startsWith("v") || version.startsWith("V") ? version.slice(1) : version;
|
|
@@ -5490,7 +5495,8 @@ const BunVersionFetcherLive = Layer.effect(BunVersionFetcher, Effect.gen(functio
|
|
|
5490
5495
|
})
|
|
5491
5496
|
};
|
|
5492
5497
|
}));
|
|
5493
|
-
|
|
5498
|
+
class DenoResolver extends Context.Tag("runtime-resolver/DenoResolver")() {
|
|
5499
|
+
}
|
|
5494
5500
|
const DenoResolverLive = Layer.effect(DenoResolver, Effect.gen(function*() {
|
|
5495
5501
|
const cache = yield* DenoReleaseCache;
|
|
5496
5502
|
return {
|
|
@@ -5572,9 +5578,9 @@ const DenoVersionFetcherLive = Layer.effect(DenoVersionFetcher, Effect.gen(funct
|
|
|
5572
5578
|
})
|
|
5573
5579
|
};
|
|
5574
5580
|
}));
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
class AuthenticationError extends
|
|
5581
|
+
class OctokitInstance extends Context.Tag("runtime-resolver/OctokitInstance")() {
|
|
5582
|
+
}
|
|
5583
|
+
class AuthenticationError extends Data.TaggedError("AuthenticationError") {
|
|
5578
5584
|
}
|
|
5579
5585
|
const resolveInstallationId = async (auth, installationId)=>{
|
|
5580
5586
|
if (installationId) return installationId;
|
|
@@ -5642,14 +5648,11 @@ const GitHubAutoAuth = Layer.effect(OctokitInstance, Effect.gen(function*() {
|
|
|
5642
5648
|
});
|
|
5643
5649
|
return new Octokit();
|
|
5644
5650
|
}));
|
|
5645
|
-
|
|
5646
|
-
class NetworkError extends NetworkErrorBase {
|
|
5651
|
+
class NetworkError extends Data.TaggedError("NetworkError") {
|
|
5647
5652
|
}
|
|
5648
|
-
|
|
5649
|
-
class ParseError extends ParseErrorBase {
|
|
5653
|
+
class ParseError extends Data.TaggedError("ParseError") {
|
|
5650
5654
|
}
|
|
5651
|
-
|
|
5652
|
-
class RateLimitError extends RateLimitErrorBase {
|
|
5655
|
+
class RateLimitError extends Data.TaggedError("RateLimitError") {
|
|
5653
5656
|
}
|
|
5654
5657
|
const GitHubTagCommit = Schema.Struct({
|
|
5655
5658
|
sha: Schema.String,
|
|
@@ -5772,7 +5775,8 @@ const GitHubClientLive = Layer.effect(GitHubClient, Effect.gen(function*() {
|
|
|
5772
5775
|
})
|
|
5773
5776
|
};
|
|
5774
5777
|
}));
|
|
5775
|
-
|
|
5778
|
+
class NodeResolver extends Context.Tag("runtime-resolver/NodeResolver")() {
|
|
5779
|
+
}
|
|
5776
5780
|
const NodeResolverLive = Layer.effect(NodeResolver, Effect.gen(function*() {
|
|
5777
5781
|
const cache = yield* NodeReleaseCache;
|
|
5778
5782
|
return {
|
|
@@ -5925,4 +5929,4 @@ const GitHubTokenAuth = Layer.effect(OctokitInstance, Effect.gen(function*() {
|
|
|
5925
5929
|
const GitHubTokenAuthFromToken = (token)=>Layer.succeed(OctokitInstance, new Octokit({
|
|
5926
5930
|
auth: token
|
|
5927
5931
|
}));
|
|
5928
|
-
export { AuthenticationError,
|
|
5932
|
+
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.0"
|
|
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);
|