chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import { readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs'
|
||||
import { resolve } from 'node:path'
|
||||
|
||||
const distDir = resolve(import.meta.dirname, '../../src/opensquilla/gateway/static/dist')
|
||||
const textFilePattern = /\.(css|html|js|map)$/
|
||||
|
||||
function normalizeNewlines(value) {
|
||||
return value.replace(/\r\n/g, '\n').replace(/\r/g, '')
|
||||
}
|
||||
|
||||
function normalizeSourceMap(content) {
|
||||
try {
|
||||
const parsed = JSON.parse(normalizeNewlines(content))
|
||||
return JSON.stringify(replaceWindowsNewlines(parsed))
|
||||
} catch {
|
||||
return normalizeNewlines(content)
|
||||
}
|
||||
}
|
||||
|
||||
function replaceWindowsNewlines(value) {
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(replaceWindowsNewlines)
|
||||
}
|
||||
if (value && typeof value === 'object') {
|
||||
return Object.fromEntries(
|
||||
Object.entries(value).map(([key, entry]) => [key, replaceWindowsNewlines(entry)]),
|
||||
)
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
return normalizeNewlines(value)
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
function normalizeFile(path) {
|
||||
const before = readFileSync(path, 'utf8')
|
||||
let after = path.endsWith('.map') ? normalizeSourceMap(before) : normalizeNewlines(before)
|
||||
|
||||
if (path.endsWith('.css')) {
|
||||
after = after.replace(/\n+$/g, '')
|
||||
}
|
||||
|
||||
if (after !== before) {
|
||||
writeFileSync(path, after, 'utf8')
|
||||
}
|
||||
}
|
||||
|
||||
function walk(dir) {
|
||||
for (const entry of readdirSync(dir)) {
|
||||
const path = resolve(dir, entry)
|
||||
const stat = statSync(path)
|
||||
if (stat.isDirectory()) {
|
||||
walk(path)
|
||||
continue
|
||||
}
|
||||
if (textFilePattern.test(entry)) {
|
||||
normalizeFile(path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
walk(distDir)
|
||||
Reference in New Issue
Block a user