From a7754a33133ffcb3cbb1b46b94f58b38d203a31c Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 17 Mar 2026 10:25:24 +0100 Subject: [PATCH] [ts][pixi-v7][pixi-v8] Fix asset loaders not throwing when http response is not ok. See #3042. --- spine-ts/spine-pixi-v7/src/assets/atlasLoader.ts | 6 +++--- .../spine-pixi-v7/src/assets/skeletonLoader.ts | 15 ++++++++------- spine-ts/spine-pixi-v8/src/assets/atlasLoader.ts | 5 +++-- .../spine-pixi-v8/src/assets/skeletonLoader.ts | 5 +++-- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/spine-ts/spine-pixi-v7/src/assets/atlasLoader.ts b/spine-ts/spine-pixi-v7/src/assets/atlasLoader.ts index 7ff61ba14..b87674ee2 100644 --- a/spine-ts/spine-pixi-v7/src/assets/atlasLoader.ts +++ b/spine-ts/spine-pixi-v7/src/assets/atlasLoader.ts @@ -69,9 +69,10 @@ const spineTextureAtlasLoader: AssetExtension { const response = await settings.ADAPTER.fetch(url); - const txt = await response.text(); + if (!response.ok) + throw new Error(`[${loaderName}] Failed to fetch ${url}: ${response.status} ${response.statusText}`); - return txt; + return await response.text(); }, testParse (asset: unknown, options: ResolvedAsset): Promise { @@ -107,7 +108,6 @@ const spineTextureAtlasLoader: AssetExtension { + async load (url: string): Promise { const response = await settings.ADAPTER.fetch(url); - const buffer = new Uint8Array(await response.arrayBuffer()); + if (!response.ok) + throw new Error(`[${loaderName}] Failed to fetch ${url}: ${response.status} ${response.statusText}`); - return buffer; + return new Uint8Array(await response.arrayBuffer()); }, - testParse(asset: unknown, options: ResolvedAsset): Promise { + testParse (asset: unknown, options: ResolvedAsset): Promise { const isJsonSpineModel = checkExtension(options.src!, ".json") && isJson(asset); const isBinarySpineModel = checkExtension(options.src!, ".skel") && isBuffer(asset); const isExplicitLoadParserSet = options.loadParser === loaderName; diff --git a/spine-ts/spine-pixi-v8/src/assets/atlasLoader.ts b/spine-ts/spine-pixi-v8/src/assets/atlasLoader.ts index 148e8d281..552454150 100644 --- a/spine-ts/spine-pixi-v8/src/assets/atlasLoader.ts +++ b/spine-ts/spine-pixi-v8/src/assets/atlasLoader.ts @@ -83,9 +83,10 @@ const spineTextureAtlasLoader: AssetExtension { const response = await DOMAdapter.get().fetch(url); - const txt = await response.text(); + if (!response.ok) + throw new Error(`[${loaderName}] Failed to fetch ${url}: ${response.status} ${response.statusText}`); - return txt; + return await response.text(); }, testParse (asset: unknown, options: ResolvedAsset): Promise { diff --git a/spine-ts/spine-pixi-v8/src/assets/skeletonLoader.ts b/spine-ts/spine-pixi-v8/src/assets/skeletonLoader.ts index b6a74cc44..c99ad4d84 100644 --- a/spine-ts/spine-pixi-v8/src/assets/skeletonLoader.ts +++ b/spine-ts/spine-pixi-v8/src/assets/skeletonLoader.ts @@ -69,9 +69,10 @@ const spineLoaderExtension: AssetExtension { const response = await DOMAdapter.get().fetch(url); - const buffer = new Uint8Array(await response.arrayBuffer()); + if (!response.ok) + throw new Error(`[${loaderName}] Failed to fetch ${url}: ${response.status} ${response.statusText}`); - return buffer; + return new Uint8Array(await response.arrayBuffer()); }, testParse (asset: unknown, options: ResolvedAsset): Promise { const isJsonSpineModel = checkExtension(options.src!, '.json') && isJson(asset);