fix(workflows): replace invalid semantic-version action with fallback script

This commit is contained in:
CI
2025-11-29 01:34:52 +00:00
parent ebd8a8e92b
commit ce8a51e6c7
180 changed files with 9019 additions and 1036 deletions

View File

@@ -0,0 +1,65 @@
import { describe, it, expect } from 'vitest'
import compareHosts from '../compareHosts'
import type { ProxyHost } from '../../api/proxyHosts'
const hostA: ProxyHost = {
uuid: 'a',
name: 'Alpha',
domain_names: 'alpha.com',
forward_host: '127.0.0.1',
forward_port: 80,
forward_scheme: 'http',
enabled: true,
ssl_forced: false,
websocket_support: false,
certificate: null,
http2_support: false,
hsts_enabled: false,
hsts_subdomains: false,
block_exploits: false,
application: 'none',
locations: [],
created_at: '2025-01-01',
updated_at: '2025-01-01',
}
const hostB: ProxyHost = {
uuid: 'b',
name: 'Beta',
domain_names: 'beta.com',
forward_host: '127.0.0.2',
forward_port: 8080,
forward_scheme: 'http',
enabled: true,
ssl_forced: false,
websocket_support: false,
certificate: null,
http2_support: false,
hsts_enabled: false,
hsts_subdomains: false,
block_exploits: false,
application: 'none',
locations: [],
created_at: '2025-01-01',
updated_at: '2025-01-01',
}
describe('compareHosts', () => {
it('returns 0 for unknown sort column (default case)', () => {
const res = compareHosts(hostA, hostB, 'unknown' as any, 'asc')
expect(res).toBe(0)
})
it('sorts by name', () => {
expect(compareHosts(hostA, hostB, 'name', 'asc')).toBeLessThan(0)
expect(compareHosts(hostB, hostA, 'name', 'asc')).toBeGreaterThan(0)
})
it('sorts by domain', () => {
expect(compareHosts(hostA, hostB, 'domain', 'asc')).toBeLessThan(0)
})
it('sorts by forward', () => {
expect(compareHosts(hostA, hostB, 'forward', 'asc')).toBeLessThan(0)
})
})

View File

@@ -0,0 +1,32 @@
import type { ProxyHost } from '../api/proxyHosts'
type SortColumn = 'name' | 'domain' | 'forward'
type SortDirection = 'asc' | 'desc'
export function compareHosts(a: ProxyHost, b: ProxyHost, sortColumn: SortColumn, sortDirection: SortDirection) {
let aVal: string
let bVal: string
switch (sortColumn) {
case 'name':
aVal = (a.name || a.domain_names.split(',')[0] || '').toLowerCase()
bVal = (b.name || b.domain_names.split(',')[0] || '').toLowerCase()
break
case 'domain':
aVal = (a.domain_names.split(',')[0] || '').toLowerCase()
bVal = (b.domain_names.split(',')[0] || '').toLowerCase()
break
case 'forward':
aVal = `${a.forward_host}:${a.forward_port}`.toLowerCase()
bVal = `${b.forward_host}:${b.forward_port}`.toLowerCase()
break
default:
return 0
}
if (aVal < bVal) return sortDirection === 'asc' ? -1 : 1
if (aVal > bVal) return sortDirection === 'asc' ? 1 : -1
return 0
}
export default compareHosts