diff --git a/packages/constant/src/api.ts b/packages/constant/src/api.ts index 76e451a6..a4889037 100644 --- a/packages/constant/src/api.ts +++ b/packages/constant/src/api.ts @@ -5,4 +5,5 @@ export { DEFAULT_UI5_VERSION_BASE, OPEN_FRAMEWORK, UI5_FRAMEWORK_CDN_BASE_URL, + UI5_VERSION_S4_PLACEHOLDER } from "./constant"; diff --git a/packages/constant/src/constant.ts b/packages/constant/src/constant.ts index 0bb3ced4..30e5c333 100644 --- a/packages/constant/src/constant.ts +++ b/packages/constant/src/constant.ts @@ -12,3 +12,5 @@ export const UI5_FRAMEWORK_CDN_BASE_URL = { OpenUI5: "https://sdk.openui5.org/", SAPUI5: "https://ui5.sap.com/", }; + +export const UI5_VERSION_S4_PLACEHOLDER = "${sap.ui5.dist.version}"; \ No newline at end of file diff --git a/packages/context/src/api.ts b/packages/context/src/api.ts index 7514b0f1..b60c011a 100644 --- a/packages/context/src/api.ts +++ b/packages/context/src/api.ts @@ -6,7 +6,8 @@ import { } from "./manifest"; import { finAdpdManifestPath } from "./adp-manifest"; import { getServices } from "./services"; -import { Context, UI5_VERSION_S4_PLACEHOLDER } from "./types"; +import { Context } from "./types"; +import { UI5_VERSION_S4_PLACEHOLDER } from "@ui5-language-assistant/constant"; import { getSemanticModel } from "./ui5-model"; import { getYamlDetails } from "./ui5-yaml"; import { getViewFiles } from "./utils/view-files"; diff --git a/packages/context/src/types.ts b/packages/context/src/types.ts index 7baaa512..56722486 100644 --- a/packages/context/src/types.ts +++ b/packages/context/src/types.ts @@ -11,8 +11,6 @@ import { import type { XMLDocument } from "@xml-tools/ast"; import { Location } from "vscode-languageserver"; -export const UI5_VERSION_S4_PLACEHOLDER = "${sap.ui5.dist.version}"; - export const UI5_PROJECT_TYPE = "UI5"; export const CAP_PROJECT_TYPE = "CAP"; export enum DirName { diff --git a/packages/context/src/ui5-model.ts b/packages/context/src/ui5-model.ts index cafe8ce6..e9fc9093 100644 --- a/packages/context/src/ui5-model.ts +++ b/packages/context/src/ui5-model.ts @@ -16,7 +16,8 @@ import { Json, TypeNameFix, } from "@ui5-language-assistant/semantic-model"; -import { Fetcher, UI5_VERSION_S4_PLACEHOLDER } from "./types"; +import { Fetcher } from "./types"; +import { UI5_VERSION_S4_PLACEHOLDER } from "@ui5-language-assistant/constant"; import { fetch, getLocalUrl, @@ -466,7 +467,7 @@ export async function negotiateVersionWithFetcher( const isOffline = await isOfflineMode(version); if (isOffline) { return { - version: version as string, + version: version === UI5_VERSION_S4_PLACEHOLDER ? 'latest': version as string, isFallback, isIncorrectVersion, }; diff --git a/packages/context/test/unit/api.test.ts b/packages/context/test/unit/api.test.ts index 9009351c..6bebbc65 100644 --- a/packages/context/test/unit/api.test.ts +++ b/packages/context/test/unit/api.test.ts @@ -7,7 +7,8 @@ import * as viewFiles from "../../src/utils/view-files"; import * as controlIds from "../../src/utils/control-ids"; import { UI5SemanticModel } from "@ui5-language-assistant/semantic-model-types"; import { getContext, isContext } from "../../src/api"; -import { UI5_VERSION_S4_PLACEHOLDER, type Context } from "../../src/types"; +import { type Context } from "../../src/types"; +import { UI5_VERSION_S4_PLACEHOLDER } from "@ui5-language-assistant/constant"; import * as projectAccess from "@sap-ux/project-access"; import { OPEN_FRAMEWORK } from "@ui5-language-assistant/constant"; diff --git a/packages/context/test/unit/ui5-model.test.ts b/packages/context/test/unit/ui5-model.test.ts index 131aa6b4..a001f9ef 100644 --- a/packages/context/test/unit/ui5-model.test.ts +++ b/packages/context/test/unit/ui5-model.test.ts @@ -30,6 +30,7 @@ import { DEFAULT_UI5_VERSION, OPEN_FRAMEWORK, DEFAULT_UI5_FRAMEWORK, + UI5_VERSION_S4_PLACEHOLDER } from "@ui5-language-assistant/constant"; import { expectExists } from "@ui5-language-assistant/test-utils"; import { @@ -45,7 +46,6 @@ import * as logicUtils from "@ui5-language-assistant/logic-utils"; import semverMinSatisfying from "semver/ranges/min-satisfying"; import { Response } from "node-fetch"; import { UI5Framework } from "@ui5-language-assistant/semantic-model-types"; -import { UI5_VERSION_S4_PLACEHOLDER } from "../../src/types"; const GET_MODEL_TIMEOUT = 30000; const NO_CACHE_FOLDER = undefined; const { getVersionsMap } = logicUtils; diff --git a/packages/logic-utils/src/utils/fetch-helper.ts b/packages/logic-utils/src/utils/fetch-helper.ts index 77aca650..6ad6c08d 100644 --- a/packages/logic-utils/src/utils/fetch-helper.ts +++ b/packages/logic-utils/src/utils/fetch-helper.ts @@ -1,6 +1,7 @@ import { getConfigurationSettings } from "@ui5-language-assistant/settings"; import { Response } from "node-fetch"; import { fetch } from "./fetch"; +import { UI5_VERSION_S4_PLACEHOLDER } from "@ui5-language-assistant/constant"; export const getLocalUrl = ( version?: string, @@ -11,6 +12,9 @@ export const getLocalUrl = ( let localUrl = webServer.endsWith("/") ? webServer : `${webServer}/`; if (version) { + if (version === UI5_VERSION_S4_PLACEHOLDER) { + version = "latest"; + } localUrl += `${version}/`; } return localUrl;