Skip to content

Commit 9f196b2

Browse files
committed
adapting calver versioning
1 parent 8dd931d commit 9f196b2

File tree

8 files changed

+51
-24
lines changed

8 files changed

+51
-24
lines changed

src/browser/components/ManualLink.tsx

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,31 @@ const isPageOld = (
6060
chapter: string,
6161
page: string,
6262
neo4jVersion: string | null
63-
) =>
64-
chapter === 'cypher-manual' &&
65-
oldPages[page] &&
66-
neo4jVersion &&
67-
semver.satisfies(neo4jVersion, '<4.0.0-alpha.1')
63+
) => {
64+
if (chapter !== 'cypher-manual' || !oldPages[page] || !neo4jVersion)
65+
return false
66+
const cleanedVersion = semver.clean(neo4jVersion, true)
67+
return (
68+
cleanedVersion &&
69+
semver.valid(cleanedVersion) &&
70+
semver.satisfies(cleanedVersion, '<4.0.0-alpha.1')
71+
)
72+
}
6873

6974
const isPageNew = (
7075
chapter: string,
7176
page: string,
7277
neo4jVersion: string | null
73-
) =>
74-
chapter === 'cypher-manual' &&
75-
newPages[page] &&
76-
((neo4jVersion && semver.satisfies(neo4jVersion, '>=4.3')) ||
77-
neo4jVersion === null) // if no version is available, we treat it like the newest version.
78+
) => {
79+
if (chapter !== 'cypher-manual' || !newPages[page]) return false
80+
const cleanedVersion = semver.clean(neo4jVersion || '', true)
81+
return (
82+
(cleanedVersion &&
83+
semver.valid(cleanedVersion) &&
84+
semver.satisfies(cleanedVersion, '>=4.3')) ||
85+
neo4jVersion === null
86+
)
87+
}
7888

7989
export type ManualLinkProps = {
8090
chapter: string
@@ -103,7 +113,7 @@ export function ManualLink({
103113
let version = formatDocVersion(neo4jVersion)
104114
if (
105115
minVersion &&
106-
(!neo4jVersion || semver.cmp(neo4jVersion, '<', minVersion))
116+
(!neo4jVersion || semver.compareLoose(neo4jVersion, minVersion) === -1)
107117
) {
108118
version = formatDocVersion(minVersion)
109119
}

src/browser/components/VersionConditionalDoc.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@ export function VersionConditionalDoc({
3636
neo4jVersion,
3737
includeCurrent = false
3838
}: VersionConditionalDocProps): JSX.Element {
39+
const cleanedVersion = semver.clean(neo4jVersion || '', true)
3940
if (
4041
(includeCurrent && neo4jVersion === null) ||
41-
(neo4jVersion !== null &&
42-
semver.valid(neo4jVersion) &&
43-
semver.satisfies(neo4jVersion, versionCondition))
42+
(cleanedVersion &&
43+
semver.valid(cleanedVersion) &&
44+
semver.satisfies(cleanedVersion, versionCondition))
4445
) {
4546
return <>{children}</>
4647
} else {

src/browser/modules/Sidebar/docsUtils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ export const formatDocVersion = (v: string | null = ''): string => {
2424
// All non-strings return
2525
return 'current'
2626
}
27-
if (semver.prerelease(v)) {
27+
if (semver.compareLoose(v, '6.0.0') === 1) {
28+
return 'current'
29+
} else if (semver.prerelease(v)) {
2830
return `${semver.major(v)}.${semver.minor(v)}-preview`
2931
}
3032
return `${semver.major(v)}.${semver.minor(v)}` || 'current'

src/browser/modules/Sidebar/static-scripts.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,16 @@ import { getRawVersion } from 'shared/modules/dbMeta/dbMetaDuck'
2929
import * as editor from 'shared/modules/editor/editorDuck'
3030

3131
const mapFavoritesStateToProps = (state: any) => {
32-
const version = semver.coerce(getRawVersion(state) || '0') ?? '0'
32+
const version =
33+
semver.coerce(semver.clean(getRawVersion(state) || '', true) ?? '0') ?? '0'
3334
const folders = getFolders(state).filter(folder => folder.isStatic)
3435
const scripts = favorites
3536
.getFavorites(state)
3637
.filter(
3738
fav =>
3839
fav.isStatic &&
3940
fav.versionRange &&
41+
version &&
4042
semver.satisfies(version, fav.versionRange)
4143
)
4244

src/browser/modules/Stream/SchemaFrame.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,14 @@ export class SchemaFrame extends Component<any, SchemaFrameState> {
192192
}
193193
}
194194

195-
fetchData(neo4jVersion: SemVer) {
195+
fetchData(neo4jVersion: SemVer | null) {
196196
if (this.props.bus) {
197197
// Indexes
198198
this.props.bus.self(
199199
CYPHER_REQUEST,
200200
{
201201
query:
202+
neo4jVersion &&
202203
semver.valid(neo4jVersion) &&
203204
semver.satisfies(neo4jVersion, '<4.2.*')
204205
? 'CALL db.indexes()'
@@ -212,6 +213,7 @@ export class SchemaFrame extends Component<any, SchemaFrameState> {
212213
CYPHER_REQUEST,
213214
{
214215
query:
216+
neo4jVersion &&
215217
semver.valid(neo4jVersion) &&
216218
semver.satisfies(neo4jVersion, '<4.2.*')
217219
? 'CALL db.constraints()'
@@ -244,8 +246,11 @@ export class SchemaFrame extends Component<any, SchemaFrameState> {
244246
render(): JSX.Element {
245247
const { neo4jVersion } = this.props
246248
const { indexes, constraints } = this.state
249+
const cleanedVersion = semver.clean(neo4jVersion || '', true)
247250
const schemaCommand =
248-
semver.valid(neo4jVersion) && semver.satisfies(neo4jVersion, '<=3.4.*')
251+
cleanedVersion &&
252+
semver.valid(cleanedVersion) &&
253+
semver.satisfies(cleanedVersion, '<=3.4.*')
249254
? 'CALL db.schema()'
250255
: 'CALL db.schema.visualization'
251256

src/shared/modules/dbMeta/dbMetaDuck.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*/
2020
import { uniq } from 'lodash-es'
2121
import { QueryResult } from 'neo4j-driver'
22-
import { SemVer, coerce, gte } from 'semver'
22+
import { SemVer, clean, coerce, gte } from 'semver'
2323
import { isConfigValFalsy } from 'services/bolt/boltHelpers'
2424
import { GlobalState } from 'shared/globalState'
2525
import { APP_START } from 'shared/modules/app/appDuck'
@@ -271,7 +271,7 @@ export function getUniqueDatbases(state: GlobalState): Database[] {
271271
export const getRawVersion = (state: GlobalState): string | null =>
272272
(state[NAME] || {}).server ? (state[NAME] || {}).server.version : null
273273
export const getSemanticVersion = (state: GlobalState): SemVer | null =>
274-
coerce(getRawVersion(state))
274+
coerce(clean(getRawVersion(state) || '', true))
275275

276276
export const supportsMultiDb = (state: GlobalState): boolean => {
277277
const version = getSemanticVersion(state)

src/shared/modules/dbMeta/utils.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export function extractServerInfo(res: QueryResult): ServerInfo {
5252
}
5353

5454
// Some aura servers self report versions that need coercing (eg. 3.5 or 4.3-aura)
55-
if (!semver.valid(serverInfo.version)) {
55+
if (!semver.valid(semver.clean(serverInfo.version || '', true))) {
5656
serverInfo.version = guessSemverVersion(serverInfo.version)
5757
}
5858

@@ -113,5 +113,10 @@ export const extractTrialStatusOld = (res: QueryResult): TrialStatus => {
113113

114114
export const versionHasEditorHistorySetting = (version: string | null) => {
115115
if (!version) return false
116-
return semver.gte(version, VERSION_FOR_EDITOR_HISTORY_SETTING)
116+
const cleanedVersion = semver.clean(version, true)
117+
return (
118+
cleanedVersion &&
119+
semver.valid(cleanedVersion) &&
120+
semver.gte(cleanedVersion, VERSION_FOR_EDITOR_HISTORY_SETTING)
121+
)
117122
}

src/shared/modules/features/featureDuck.utils.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ export const guessSemverVersion = (versionString: string | null) => {
2323
if (!versionString) {
2424
return null
2525
}
26-
if (semver.valid(versionString)) {
27-
return versionString
26+
const cleanedVersion =
27+
typeof versionString === 'string' ? semver.clean(versionString, true) : null
28+
if (semver.valid(cleanedVersion)) {
29+
return cleanedVersion
2830
}
2931

3032
const coerceVersion = semver.coerce(versionString)

0 commit comments

Comments
 (0)