fix: externalize lzma for import build
Local Build and Deploy / deploy (push) Successful in 49s

This commit is contained in:
Simo committed 2026-07-12 19:15:08 +02:00
1 parent eb759f54bf
commit c0ffc74f9b
52 files changed
+1 -52

No files matched your search

+1 -1
View File
@@ -30,7 +30,7 @@ const securityHeaders = [
const nextConfig: NextConfig = {
turbopack: { root: import.meta.dirname },
serverExternalPackages: ["@prisma/adapter-mariadb", "mariadb", "@prisma/client"],
serverExternalPackages: ["@prisma/adapter-mariadb", "mariadb", "@prisma/client", "lzma"],
// Compress responses with gzip
compress: true,
-1
View File
@@ -77,4 +77,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
return apiOk()
})
@@ -69,4 +69,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
@@ -50,4 +50,3 @@ export const GET = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (request
},
})
})
-1
View File
@@ -92,4 +92,3 @@ export const DELETE = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (requ
return apiOk({ id })
})
@@ -43,4 +43,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
@@ -26,4 +26,3 @@ export const DELETE = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (requ
})
return apiOk({ lib, deletedFile })
})
@@ -47,4 +47,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
@@ -18,4 +18,3 @@ export const GET = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (request
})
return apiOk({ items, meta })
})
@@ -47,4 +47,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
@@ -28,4 +28,3 @@ export const DELETE = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (requ
})
return apiOk({ idOrLib, removed, deletedFile })
})
@@ -228,4 +228,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
@@ -195,4 +195,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
@@ -163,4 +163,3 @@ export const PUT = withAdmin(
return apiOk({ dimensions: dims })
},
)
@@ -43,4 +43,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
@@ -16,4 +16,3 @@ export const GET = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (request
},
})
})
-1
View File
@@ -24,4 +24,3 @@ export const DELETE = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (requ
})
return apiOk({ lib, deletedFile })
})
@@ -9,4 +9,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async () => {
const summary = await auditImportedAssets()
return apiOk(summary as unknown as Record<string, unknown>)
})
-1
View File
@@ -125,4 +125,3 @@ export const POST = withAdmin({ permission: PERMS.ASSETS_IMPORT }, async (reques
},
})
})
-1
View File
@@ -49,4 +49,3 @@ export function handleApiError(error: unknown): Response {
)
return apiError('Internal server error', 500)
}
-1
View File
@@ -1,2 +1 @@
export * from './catalog-categories/index'
-1
View File
@@ -650,4 +650,3 @@ export const SUPREME_CATEGORIES: SupremeCategory[] = [
layout: 'default_3x3',
},
]
-1
View File
@@ -61,4 +61,3 @@ export function matchEra(revision: number): ReleaseEra {
}
return RELEASE_ERAS[RELEASE_ERAS.length - 1]
}
-1
View File
@@ -94,4 +94,3 @@ export function extractPrefix(itemName: string): string | null {
const match = normalized.match(/^([a-z]{2,})/)
return match ? match[1] : null
}
-1
View File
@@ -61,4 +61,3 @@ export function extractFurniIconPng(nitro: Buffer): Buffer | null {
return null
}
}
-1
View File
@@ -149,4 +149,3 @@ describe('clone-import', () => {
expect(r.error).toMatch(/items_base insert failed/)
})
})
-1
View File
@@ -323,4 +323,3 @@ export async function getClonableClassnames(source: CloneSource): Promise<string
}
return all.filter((e) => !have.has(e.classname)).map((e) => e.classname)
}
@@ -63,4 +63,3 @@ describe('importClothingSet', () => {
expect(r.ok).toBe(false)
})
})
-1
View File
@@ -202,4 +202,3 @@ export async function getClothingSetStats(): Promise<ClothingSetStats> {
return { total, present, missing: total - present }
}
-1
View File
@@ -53,4 +53,3 @@ describe('effect-import.importSingleEffect', () => {
expect(mergeEffect).not.toHaveBeenCalled()
})
})
-1
View File
@@ -135,4 +135,3 @@ export async function getEffectStats(): Promise<{
const imported = official.filter((e) => localLibs.has(e.lib)).length
return { official: official.length, imported, missing: official.length - imported }
}
-1
View File
@@ -65,4 +65,3 @@ describe('figure-import', () => {
expect(r.error).toContain('conversion')
})
})
-1
View File
@@ -126,4 +126,3 @@ export async function getFigureStats(): Promise<{
).length
return { total: libs.length, imported, missing: libs.length - imported }
}
-1
View File
@@ -44,4 +44,3 @@ describe('buildItemsBaseEnrichmentUpdate', () => {
expect(update.values).toEqual([2, 3, 1.5, '1', '0', '1', '1', 'default', 123])
})
})
-1
View File
@@ -157,4 +157,3 @@ export async function batchLookupByClassnames(
return result
}
@@ -44,4 +44,3 @@ describe('png-decode', () => {
expect(() => decodePng(Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]))).toThrow('not a PNG')
})
})
-1
View File
@@ -133,4 +133,3 @@ export function cropRgba(
}
return out
}
@@ -19,4 +19,3 @@ describe('resolveGamedataFile', () => {
expect(resolveGamedataFile(absolutePath, 'FigureMap.json')).toBe(absolutePath)
})
})
@@ -26,4 +26,3 @@ export function resolveGamedataFile(url: string, fallbackName: string): string {
if (existsSync(/*turbopackIgnore: true*/ gamedata)) return gamedata
return configured
}
@@ -18,4 +18,3 @@ describe('import/core/download validators', () => {
expect(validatePngBytes(Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]))).toBe(false)
})
})
-1
View File
@@ -65,4 +65,3 @@ export async function downloadFile(
}
return { ok: false, size: 0 }
}
@@ -41,4 +41,3 @@ describe('import/core/gamedata-json', () => {
expect(d.effects).toHaveLength(4) // 1 seed + 3 appended, none lost
})
})
@@ -61,4 +61,3 @@ export async function writeGamedataJsonAtomic(filePath: string, data: unknown):
await fs.writeFile(/*turbopackIgnore: true*/ tmp, JSON.stringify(data, null, 2), 'utf-8')
await fs.rename(/*turbopackIgnore: true*/ tmp, filePath)
}
@@ -29,4 +29,3 @@ describe('import/core/gordon', () => {
await expect(resolveGordonBuildUrl()).rejects.toThrow()
})
})
-1
View File
@@ -20,4 +20,3 @@ export async function resolveGordonBuildUrl(): Promise<string> {
gordonCache = { url: normalized, ts: now }
return normalized
}
@@ -26,4 +26,3 @@ describe('import/core/sse-batch', () => {
expect(events.at(-1)).toMatchObject({ type: 'batch_complete', succeeded: 2, failed: 1 })
})
})
@@ -103,4 +103,3 @@ export function runSseBatch<T>(opts: RunSseBatchOptions<T>): Response {
},
})
}
-1
View File
@@ -72,4 +72,3 @@ export async function scanAllNitroFiles(): Promise<Set<string>> {
return new Set()
}
}
-1
View File
@@ -352,4 +352,3 @@ export function getPetIconPng(lib: string): Buffer | null {
return null
}
}
-1
View File
@@ -46,4 +46,3 @@ describe('pet-import.importSinglePet', () => {
expect(r.error).toContain('conversion')
})
})
-1
View File
@@ -100,4 +100,3 @@ export function getPetStats(): { total: number; imported: number; missing: numbe
).length
return { total: CANONICAL_PETS.length, imported, missing: CANONICAL_PETS.length - imported }
}
-1
View File
@@ -16,4 +16,3 @@ export interface ImportEffectResult {
warnings: string[]
error?: string
}