Skip to content

Commit e9f7899

Browse files
authored
fix: include esbuild config in adapter type definition (#1954)
1 parent b9e6338 commit e9f7899

9 files changed

Lines changed: 57 additions & 26 deletions

File tree

.changeset/tasty-cars-love.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@sveltejs/adapter-cloudflare-workers': patch
3+
'@sveltejs/adapter-netlify': patch
4+
'@sveltejs/adapter-node': patch
5+
'@sveltejs/adapter-vercel': patch
6+
---
7+
8+
fix: include esbuild config in adapter type definition
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
declare function plugin(): import('@sveltejs/kit').Adapter;
1+
type BuildOptions = import('esbuild').BuildOptions;
2+
declare function plugin(options?: {
3+
esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
4+
}): import('@sveltejs/kit').Adapter;
25

36
export = plugin;

packages/adapter-cloudflare-workers/index.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import { fileURLToPath } from 'url';
1111
/**
1212
* @param {{
1313
* esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
14-
* }} options
14+
* }} [options]
1515
**/
16-
export default function (options = { esbuild: (opts) => opts }) {
16+
export default function (options) {
1717
/** @type {import('@sveltejs/kit').Adapter} */
1818
const adapter = {
1919
name: '@sveltejs/adapter-cloudflare-workers',
@@ -38,13 +38,17 @@ export default function (options = { esbuild: (opts) => opts }) {
3838
utils.log.minor('Generating worker...');
3939
utils.copy(`${files}/entry.js`, '.svelte-kit/cloudflare-workers/entry.js');
4040

41-
const buildOptions = await options.esbuild({
41+
/** @type {BuildOptions} */
42+
const defaultOptions = {
4243
entryPoints: ['.svelte-kit/cloudflare-workers/entry.js'],
4344
outfile: `${entrypoint}/index.js`,
4445
bundle: true,
4546
target: 'es2020',
46-
platform: 'browser' // TODO would be great if we could generate ESM and use type = "javascript"
47-
});
47+
platform: 'browser'
48+
};
49+
50+
const buildOptions =
51+
options && options.esbuild ? await options.esbuild(defaultOptions) : defaultOptions;
4852

4953
await esbuild.build(buildOptions);
5054

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
declare function plugin(): import('@sveltejs/kit').Adapter;
1+
type BuildOptions = import('esbuild').BuildOptions;
2+
declare function plugin(options?: {
3+
esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
4+
}): import('@sveltejs/kit').Adapter;
25

36
export = plugin;

packages/adapter-netlify/index.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import toml from '@iarna/toml';
1111
/**
1212
* @param {{
1313
* esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
14-
* }} options
14+
* }} [options]
1515
**/
16-
export default function (options = { esbuild: (opts) => opts }) {
16+
export default function (options) {
1717
/** @type {import('@sveltejs/kit').Adapter} */
1818
const adapter = {
1919
name: '@sveltejs/adapter-netlify',
@@ -29,13 +29,17 @@ export default function (options = { esbuild: (opts) => opts }) {
2929
utils.log.minor('Generating serverless function...');
3030
utils.copy(join(files, 'entry.js'), '.svelte-kit/netlify/entry.js');
3131

32-
const buildOptions = await options.esbuild({
32+
/** @type {BuildOptions} */
33+
const defaultOptions = {
3334
entryPoints: ['.svelte-kit/netlify/entry.js'],
3435
outfile: join(functions, 'render/index.js'),
3536
bundle: true,
3637
inject: [join(files, 'shims.js')],
3738
platform: 'node'
38-
});
39+
};
40+
41+
const buildOptions =
42+
options && options.esbuild ? await options.esbuild(defaultOptions) : defaultOptions;
3943

4044
await esbuild.build(buildOptions);
4145

packages/adapter-node/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
type BuildOptions = import('esbuild').BuildOptions;
12
declare function plugin(options?: {
23
out?: string;
34
precompress?: boolean;
45
env?: {
56
host?: string;
67
port?: string;
78
};
9+
esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
810
}): import('@sveltejs/kit').Adapter;
911

1012
export = plugin;

packages/adapter-node/index.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,12 @@ const pipe = promisify(pipeline);
3131
* esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
3232
* }} options
3333
*/
34-
export default function (
35-
{
36-
out = 'build',
37-
precompress,
38-
env: { host: host_env = 'HOST', port: port_env = 'PORT' } = {},
39-
esbuild: esbuildConfig
40-
} = { esbuild: (opts) => opts }
41-
) {
34+
export default function ({
35+
out = 'build',
36+
precompress,
37+
env: { host: host_env = 'HOST', port: port_env = 'PORT' } = {},
38+
esbuild: esbuildConfig
39+
} = {}) {
4240
/** @type {import('@sveltejs/kit').Adapter} */
4341
const adapter = {
4442
name: '@sveltejs/adapter-node',
@@ -63,7 +61,8 @@ export default function (
6361
host_env
6462
)}] || '0.0.0.0';\nexport const port = process.env[${JSON.stringify(port_env)}] || 3000;`
6563
);
66-
const buildOptions = await esbuildConfig({
64+
/** @type {BuildOptions} */
65+
const defaultOptions = {
6766
entryPoints: ['.svelte-kit/node/index.js'],
6867
outfile: join(out, 'index.js'),
6968
bundle: true,
@@ -75,7 +74,8 @@ export default function (
7574
define: {
7675
esbuild_app_dir: '"' + config.kit.appDir + '"'
7776
}
78-
});
77+
};
78+
const buildOptions = esbuildConfig ? await esbuildConfig(defaultOptions) : defaultOptions;
7979
await esbuild.build(buildOptions);
8080

8181
utils.log.minor('Prerendering static pages');

packages/adapter-vercel/index.d.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
declare function plugin(): import('@sveltejs/kit').Adapter;
1+
type BuildOptions = import('esbuild').BuildOptions;
2+
declare function plugin(options?: {
3+
esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
4+
}): import('@sveltejs/kit').Adapter;
25

36
export = plugin;

packages/adapter-vercel/index.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import esbuild from 'esbuild';
1010
/**
1111
* @param {{
1212
* esbuild?: (defaultOptions: BuildOptions) => Promise<BuildOptions> | BuildOptions;
13-
* }} options
13+
* }} [options]
1414
**/
15-
export default function (options = { esbuild: (opts) => opts }) {
15+
export default function (options) {
1616
/** @type {import('@sveltejs/kit').Adapter} */
1717
const adapter = {
1818
name: '@sveltejs/adapter-vercel',
@@ -36,13 +36,17 @@ export default function (options = { esbuild: (opts) => opts }) {
3636
utils.log.minor('Generating serverless function...');
3737
utils.copy(join(files, 'entry.js'), '.svelte-kit/vercel/entry.js');
3838

39-
const buildOptions = await options.esbuild({
39+
/** @type {BuildOptions} */
40+
const defaultOptions = {
4041
entryPoints: ['.svelte-kit/vercel/entry.js'],
4142
outfile: join(dirs.lambda, 'index.js'),
4243
bundle: true,
4344
inject: [join(files, 'shims.js')],
4445
platform: 'node'
45-
});
46+
};
47+
48+
const buildOptions =
49+
options && options.esbuild ? await options.esbuild(defaultOptions) : defaultOptions;
4650

4751
await esbuild.build(buildOptions);
4852

0 commit comments

Comments
 (0)