From ab954f2c973baa51e26a934bf50630c1edd857fb Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Thu, 27 Nov 2025 08:31:53 +0100 Subject: [PATCH] For v11, only support the last version 11.1.4 and the last Core version 1.6.1 --- src/ExistingJsProject.res | 18 ++++++------- src/ModuleSystem.res | 5 ---- src/NewProject.res | 9 +++---- src/RescriptVersions.res | 57 +++++++++------------------------------ src/RescriptVersions.resi | 2 -- 5 files changed, 25 insertions(+), 66 deletions(-) delete mode 100644 src/ModuleSystem.res diff --git a/src/ExistingJsProject.res b/src/ExistingJsProject.res index 5bb70e4..5c4bf0e 100644 --- a/src/ExistingJsProject.res +++ b/src/ExistingJsProject.res @@ -47,17 +47,17 @@ let updateRescriptJson = async (~projectName, ~sourceDir, ~moduleSystem, ~suffix } ) -let getModuleSystemOptions = (~versions) => [ +let getModuleSystemOptions = () => [ { - P.value: "commonjs", - label: "CommonJS", - hint: "Use require syntax and .res.js extension", - }, - { - value: RescriptVersions.esmModuleSystemName(versions), + P.value: "esmodule", label: "ES Modules", hint: "Use import syntax and .res.mjs extension", }, + { + value: "commonjs", + label: "CommonJS", + hint: "Use require syntax and .res.js extension", + }, ] let addToExistingProject = async (~projectName) => { @@ -72,10 +72,10 @@ let addToExistingProject = async (~projectName) => { let moduleSystem = await P.select({ message: "What module system will you use?", - options: getModuleSystemOptions(~versions), + options: getModuleSystemOptions(), })->P.resultOrRaise - let suffix = moduleSystem->ModuleSystem.getSuffix + let suffix = moduleSystem === "esmodule" ? ".res.mjs" : ".res.js" let shouldCheckJsFilesIntoGit = await P.confirm({ message: `Do you want to check generated ${suffix} files into git?`, diff --git a/src/ModuleSystem.res b/src/ModuleSystem.res deleted file mode 100644 index 92be20b..0000000 --- a/src/ModuleSystem.res +++ /dev/null @@ -1,5 +0,0 @@ -let getSuffix = moduleSystem => - switch moduleSystem { - | "esmodule" | "es6" | "es6-global" => ".res.mjs" - | _ => ".res.js" - } diff --git a/src/NewProject.res b/src/NewProject.res index 7e4f4ce..553b279 100644 --- a/src/NewProject.res +++ b/src/NewProject.res @@ -37,18 +37,15 @@ let updatePackageJson = async (~projectName, ~versions) => } ) -let updateRescriptJson = async (~projectName, ~versions) => +let updateRescriptJson = async (~projectName, ~versions: RescriptVersions.versions) => await JsonUtils.updateJsonFile("rescript.json", json => switch json { | Object(config) => config->Dict.set("name", String(projectName)) switch config->Dict.get("package-specs") { | Some(Object(packageSpecs)) | Some(Array([Object(packageSpecs)])) => - let moduleSystemName = versions->RescriptVersions.esmModuleSystemName - packageSpecs->Dict.set("module", String(moduleSystemName)) - - let suffix = moduleSystemName->ModuleSystem.getSuffix - config->Dict.set("suffix", String(suffix)) + packageSpecs->Dict.set("module", String("esmodule")) + config->Dict.set("suffix", String(".res.mjs")) | _ => () } diff --git a/src/RescriptVersions.res b/src/RescriptVersions.res index 3cb77db..0f40e59 100644 --- a/src/RescriptVersions.res +++ b/src/RescriptVersions.res @@ -2,22 +2,13 @@ open Node module P = ClackPrompts -let rescriptVersionRange = `11.x.x || 12.x.x` -let rescriptCoreVersionRange = ">=1.0.0" +let rescriptVersionRange = `11.1.4 || 12.x.x` +let finalRescriptCoreVersion = "1.6.1" let includesRewatchVersionRange = ">=12.0.0-alpha.15" let includesStdlibVersionRange = ">=12.0.0-beta.1" type versions = {rescriptVersion: string, rescriptCoreVersion: option} -let getCompatibleRescriptCoreVersions = (~rescriptVersion, ~rescriptCoreVersions) => - if CompareVersions.compareVersions(rescriptVersion, "11.1.0")->Ordering.isLess { - rescriptCoreVersions->Array.filter(coreVersion => - CompareVersions.compareVersions(coreVersion, "1.3.0")->Ordering.isLess - ) - } else { - rescriptCoreVersions - } - let spinnerMessage = "Loading available versions..." let promptVersions = async () => { @@ -25,14 +16,14 @@ let promptVersions = async () => { s->P.Spinner.start(spinnerMessage) - let (rescriptVersionsResult, rescriptCoreVersionsResult) = await Promise.all2(( - NpmRegistry.getPackageVersions("rescript", rescriptVersionRange), - NpmRegistry.getPackageVersions("@rescript/core", rescriptCoreVersionRange), - )) + let rescriptVersionsResult = await NpmRegistry.getPackageVersions( + "rescript", + rescriptVersionRange, + ) - switch (rescriptVersionsResult, rescriptCoreVersionsResult) { - | (Ok(_), Ok(_)) => s->P.Spinner.stop("Versions loaded.") - | _ => s->P.Spinner.stop(spinnerMessage) + switch rescriptVersionsResult { + | Ok(_) => s->P.Spinner.stop("Versions loaded.") + | Error(_) => s->P.Spinner.stop(spinnerMessage) } let rescriptVersion = switch rescriptVersionsResult { @@ -40,8 +31,9 @@ let promptVersions = async () => { | Ok(rescriptVersions) => let options = rescriptVersions->Array.map(v => {P.value: v}) - let initialValue = - options->Array.find(o => o.value->String.startsWith("12."))->Option.map(o => o.value) + let initialValue = None + // Reactivate for v13 alpha -> first non-alpha/beta/rc version should be the default + // options->Array.find(o => o.value->String.startsWith("12."))->Option.map(o => o.value) let selectOptions = {ClackPrompts.message: "ReScript version?", options, ?initialValue} @@ -49,28 +41,8 @@ let promptVersions = async () => { | Error(error) => error->NpmRegistry.getFetchErrorMessage->JsError.throwWithMessage } - let rescriptCoreVersions = switch rescriptCoreVersionsResult { - | Ok(versions) => versions - | Error(error) => error->NpmRegistry.getFetchErrorMessage->JsError.throwWithMessage - } - - let rescriptCoreVersions = getCompatibleRescriptCoreVersions( - ~rescriptVersion, - ~rescriptCoreVersions, - ) - let includesStdlib = CompareVersions.satisfies(rescriptVersion, includesStdlibVersionRange) - - let rescriptCoreVersion = switch rescriptCoreVersions { - | _ if includesStdlib => None - | [version] => Some(version) - | _ => - let version = await P.select({ - message: "ReScript Core version?", - options: rescriptCoreVersions->Array.map(v => {P.value: v}), - })->P.resultOrRaise - Some(version) - } + let rescriptCoreVersion = includesStdlib ? None : Some(finalRescriptCoreVersion) {rescriptVersion, rescriptCoreVersion} } @@ -124,8 +96,5 @@ let installVersions = async ({rescriptVersion, rescriptCoreVersion}) => { } } -let esmModuleSystemName = ({rescriptVersion}) => - CompareVersions.compareVersions(rescriptVersion, "11.1.0-rc.8") > 0. ? "esmodule" : "es6" - let usesRewatch = ({rescriptVersion}) => CompareVersions.satisfies(rescriptVersion, includesRewatchVersionRange) diff --git a/src/RescriptVersions.resi b/src/RescriptVersions.resi index da0ac40..8f2c8d4 100644 --- a/src/RescriptVersions.resi +++ b/src/RescriptVersions.resi @@ -4,6 +4,4 @@ let promptVersions: unit => promise let installVersions: versions => promise -let esmModuleSystemName: versions => string - let usesRewatch: versions => bool