Skip to content

Commit c3c00e5

Browse files
committed
fix: guard esm module
1 parent c8b80f2 commit c3c00e5

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

src/index.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import type {
3636
ReturnPluginsFn,
3737
ESMPluginsModule,
3838
} from './types';
39+
import { isESMModule } from './utils';
3940

4041
function updateFile(op: string, src: string, dest: string) {
4142
if (['add', 'change', 'addDir'].includes(op)) {
@@ -255,11 +256,12 @@ class EsbuildServerlessPlugin implements ServerlessPlugin {
255256
return this.buildOptions.plugins;
256257
}
257258

258-
let plugins: Plugins | ReturnPluginsFn | ESMPluginsModule = require(
259-
path.join(this.serviceDirPath, this.buildOptions.plugins)
260-
);
259+
let plugins: Plugins | ReturnPluginsFn | ESMPluginsModule = require(path.join(
260+
this.serviceDirPath,
261+
this.buildOptions.plugins
262+
));
261263

262-
if (plugins.default) {
264+
if (isESMModule(plugins)) {
263265
plugins = plugins.default;
264266
}
265267

src/utils.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { type Cause, Effect, Option } from 'effect';
66
import execa from 'execa';
77
import fs from 'fs-extra';
88
import path from 'path';
9-
import type { IFile, IFiles } from './types';
9+
import type { ESMPluginsModule, IFile, IFiles } from './types';
1010
import FS, { FSyncLayer, makePath, makeTempPathScoped, safeFileExists } from './utils/effect-fs';
1111

1212
export class SpawnError extends Error {
@@ -135,3 +135,7 @@ export const isEmpty = (obj: Record<string, unknown>) => {
135135

136136
return true;
137137
};
138+
139+
export const isESMModule = (obj: unknown): obj is ESMPluginsModule => {
140+
return typeof obj === 'object' && obj !== null && 'default' in obj;
141+
};

0 commit comments

Comments
 (0)