Skip to content

Commit b2013c6

Browse files
committed
refactor: export defaultResizeLoaderOptionsGenerator
1 parent c5199d7 commit b2013c6

File tree

2 files changed

+39
-29
lines changed

2 files changed

+39
-29
lines changed

src/helpers/getRequireStringWithModifiedResizeLoaderOptions.ts

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ export default function getRequireStringWithModifiedResizeLoaderOptions(
2222
);
2323

2424
if (resizeLoader === undefined)
25-
throw new Error(`Can't find ${resizeLoaderName} in the list of loaders`);
25+
throw new Error(
26+
`Can't find ${resizeLoaderName} in the list of loaders after webpack-image-srcset-loader`
27+
);
2628

2729
const resizeLoaderOptions =
2830
typeof resizeLoader.options === "string"
@@ -31,36 +33,18 @@ export default function getRequireStringWithModifiedResizeLoaderOptions(
3133
const resizeLoaderRequest = resizeLoader.request;
3234
const resizeLoaderPath = resizeLoader.path;
3335

34-
if (resizeLoaderOptionsGenerator)
35-
return remainingRequest.replace(
36-
resizeLoaderRequest,
37-
resizeLoaderPath +
38-
"?" +
39-
escapeJsonStringForLoader(
40-
JSON.stringify(
41-
resizeLoaderOptionsGenerator(
42-
options.width,
43-
options.scale,
44-
resizeLoaderOptions
45-
)
46-
)
47-
)
48-
);
49-
5036
return remainingRequest.replace(
5137
resizeLoaderRequest,
5238
resizeLoaderPath +
5339
"?" +
5440
escapeJsonStringForLoader(
55-
JSON.stringify({
56-
scaleUp: true,
57-
...resizeLoaderOptions,
58-
...options,
59-
fileLoaderOptions: {
60-
...resizeLoaderOptions?.fileLoaderOptions,
61-
esModule: false, // because we're using require in pitch
62-
},
63-
})
41+
JSON.stringify(
42+
resizeLoaderOptionsGenerator(
43+
options.width,
44+
options.scale,
45+
resizeLoaderOptions
46+
)
47+
)
6448
)
6549
);
6650
}

src/index.ts

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,16 @@ export interface Options {
2424
}
2525

2626
export type FullOptions = Options &
27-
Required<Pick<Options, "sizes" | "scaleUp" | "resizeLoader" | "esModule">>;
27+
Required<
28+
Pick<
29+
Options,
30+
| "sizes"
31+
| "scaleUp"
32+
| "resizeLoader"
33+
| "resizeLoaderOptionsGenerator"
34+
| "esModule"
35+
>
36+
>;
2837

2938
export const raw = true;
3039

@@ -38,6 +47,7 @@ export function pitch(
3847
sizes: undefined,
3948
scaleUp: false,
4049
resizeLoader: "webpack-image-resize-loader",
50+
resizeLoaderOptionsGenerator: defaultResizeLoaderOptionsGenerator,
4151
esModule: true,
4252
};
4353
const options: FullOptions = {
@@ -68,15 +78,31 @@ export function pitch(
6878
} \`${srcSetString}\`;`
6979
);
7080
})
71-
.catch((e) => {
72-
throw e;
81+
.catch((error) => {
82+
callback(error, undefined);
7383
});
7484
}
7585

7686
export default function (this: loader.LoaderContext, source: Buffer): Buffer {
7787
return source;
7888
}
7989

90+
export function defaultResizeLoaderOptionsGenerator(
91+
width: number | undefined,
92+
scale: number | undefined,
93+
existingOptions: Record<string, any> | undefined
94+
): Record<string, any> {
95+
return {
96+
...existingOptions,
97+
width,
98+
scale,
99+
fileLoaderOptions: {
100+
...existingOptions?.fileLoaderOptions,
101+
esModule: false, // because we're using require in pitch
102+
},
103+
};
104+
}
105+
80106
// return require('-!some-loader?{...}!resize-loader?{...}!file.png')
81107
async function generateSrcSetString(
82108
remainingRequest: string,

0 commit comments

Comments
 (0)