Skip to content

Commit 7fa5d40

Browse files
fix: don't use require in es modules
1 parent c132a91 commit 7fa5d40

9 files changed

Lines changed: 43 additions & 24 deletions

File tree

packages/migrations-base/src/DirectoryContext.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export interface IDirectoryContext<TMigration = unknown> {
1111
delete(filename: string): Promise<void>;
1212
loadMigration(
1313
filename: string,
14-
): Result<TMigration, MigrationWithNoValidExport>;
14+
): Promise<Result<TMigration, MigrationWithNoValidExport>>;
1515
}
1616

1717
export default class DirectoryContext<TMigration>
@@ -20,12 +20,12 @@ export default class DirectoryContext<TMigration>
2020
private readonly _directory: string;
2121
private readonly _loadMigration: (
2222
filename: string,
23-
) => Result<TMigration, MigrationWithNoValidExport>;
23+
) => Promise<Result<TMigration, MigrationWithNoValidExport>>;
2424
constructor(
2525
directory: string,
2626
loadMigration: (
2727
filename: string,
28-
) => Result<TMigration, MigrationWithNoValidExport>,
28+
) => Promise<Result<TMigration, MigrationWithNoValidExport>>,
2929
) {
3030
this._directory = directory;
3131
this._loadMigration = loadMigration;
@@ -64,7 +64,7 @@ export default class DirectoryContext<TMigration>
6464

6565
loadMigration(
6666
filename: string,
67-
): Result<TMigration, MigrationWithNoValidExport> {
67+
): Promise<Result<TMigration, MigrationWithNoValidExport>> {
6868
return this._loadMigration(this._resolve(filename));
6969
}
7070
}

packages/migrations-base/src/methods/applyOperations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export default async function applyOperations<TMigration>(
5353
}
5454
switch (op.kind) {
5555
case 'apply':
56-
const migrationLoadResult = engine.directory.loadMigration(
56+
const migrationLoadResult = await engine.directory.loadMigration(
5757
op.value.name,
5858
);
5959

packages/migrations-base/src/types/DatabaseEngine.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default interface DatabaseEngine<TMigration> extends DatabaseEngineBase {
3838

3939
loadMigration(
4040
migrationFileName: string,
41-
): Result<TMigration, MigrationWithNoValidExport>;
41+
): Promise<Result<TMigration, MigrationWithNoValidExport>>;
4242

4343
directory: IDirectoryContext<TMigration>;
4444

packages/mysql/src/__tests__/dates.test.mysql.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import connect, {sql} from '..';
22

3-
const mysql: {
4-
createConnection: (opts: any) => any;
5-
} = require('mysql2/promise');
3+
import * as mysql from 'mysql2/promise';
64

75
jest.setTimeout(30000);
86

@@ -22,7 +20,9 @@ beforeAll(async () => {
2220
});
2321
afterAll(async () => {
2422
await db.dispose();
23+
// @ts-expect-error
2524
(await rawConnection).close();
25+
// @ts-expect-error
2626
(await rawConnection2).close();
2727
});
2828

packages/pg-migrations/src/PostgresDatabaseEngine.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import {extname} from 'path';
2+
import {fileURLToPath} from 'url';
3+
import {readFileSync} from 'fs';
24
import {
35
DatabaseEngine,
46
DatabaseEngineTransaction,
@@ -11,6 +13,10 @@ import {
1113
} from '@databases/migrations-base';
1214
import {ConnectionPool, Queryable, Transaction} from '@databases/pg';
1315

16+
const packageVersion: string = JSON.parse(
17+
readFileSync(fileURLToPath(import.meta.resolve('../package.json')), 'utf8'),
18+
).version;
19+
1420
export interface MigrationsConfig {
1521
migrationsDirectory: string;
1622
/**
@@ -36,9 +42,9 @@ export default class PostgresDatabaseEngine
3642
this.directory = new DirectoryContext(
3743
config.migrationsDirectory,
3844
// load migration:
39-
(
45+
async (
4046
migrationFileName: string,
41-
): Result<Migration, MigrationWithNoValidExport> => {
47+
): Promise<Result<Migration, MigrationWithNoValidExport>> => {
4248
switch (extname(migrationFileName)) {
4349
case '.sql':
4450
return Result.ok(async (db: Transaction) => {
@@ -47,10 +53,16 @@ export default class PostgresDatabaseEngine
4753
case '.js':
4854
case '.mjs':
4955
case '.jsx':
50-
return getExport(require(migrationFileName), migrationFileName);
56+
return getExport(
57+
await import(migrationFileName),
58+
migrationFileName,
59+
);
5160
case '.ts':
5261
case '.tsx':
53-
return getExport(require(migrationFileName), migrationFileName);
62+
return getExport(
63+
await import(migrationFileName),
64+
migrationFileName,
65+
);
5466
default:
5567
throw new Error(
5668
`Unsupported extension "${extname(migrationFileName)}"`,
@@ -63,7 +75,7 @@ export default class PostgresDatabaseEngine
6375
readonly databaseName = 'Postgres';
6476
readonly packageName = '@databases/pg-migrations';
6577
readonly cliName = 'pg-migrations';
66-
readonly packageVersion: string = require('../package.json').version;
78+
readonly packageVersion: string = packageVersion;
6779

6880
async checkDatabaseVersion(): Promise<Result<void, DatabaseVersionError>> {
6981
const [major, minor] = await getPgVersion(this._connection);
@@ -203,9 +215,9 @@ export default class PostgresDatabaseEngine
203215
});
204216
}
205217

206-
loadMigration(
218+
async loadMigration(
207219
migrationFileName: string,
208-
): Result<Migration, MigrationWithNoValidExport> {
220+
): Promise<Result<Migration, MigrationWithNoValidExport>> {
209221
switch (extname(migrationFileName)) {
210222
case '.sql':
211223
return Result.ok(async (db: Transaction) => {
@@ -214,10 +226,10 @@ export default class PostgresDatabaseEngine
214226
case '.js':
215227
case '.mjs':
216228
case '.jsx':
217-
return getExport(require(migrationFileName), migrationFileName);
229+
return getExport(await import(migrationFileName), migrationFileName);
218230
case '.ts':
219231
case '.tsx':
220-
return getExport(require(migrationFileName), migrationFileName);
232+
return getExport(await import(migrationFileName), migrationFileName);
221233
default:
222234
throw new Error(
223235
`Unsupported extension "${extname(migrationFileName)}"`,

packages/pg/src/Driver.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ import TransactionOptions from './types/TransactionOptions';
99
import EventHandlers from './types/EventHandlers';
1010
import QueryStreamOptions from './types/QueryStreamOptions';
1111
import pgFormat from './format';
12-
const {codeFrameColumns} = require('@babel/code-frame');
13-
const Cursor = require('pg-cursor');
12+
import {codeFrameColumns} from '@babel/code-frame';
13+
// @ts-expect-error
14+
import Cursor from 'pg-cursor';
1415

1516
type QueryResult = {rows: any[]};
1617

packages/pg/src/TypeOverrides.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import PgDataTypeID from '@databases/pg-data-type-id';
22
import PgClient from './types/PgClient';
33

4-
const {types} = require('pg');
4+
// @ts-expect-error
5+
import {types} from 'pg';
56

67
export type ParseFnText = (value: string) => any;
78
export type ParseFnBinary = (value: Buffer) => any;

packages/sqlite/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import * as sqlite from 'sqlite3';
22
import {escapeSQLiteIdentifier} from '@databases/escape-identifier';
33
import sql, {SQLQuery, isSqlQuery, FormatConfig} from '@databases/sql';
44
import Mutex from './Mutex';
5-
const Queue = require('then-queue');
5+
// @ts-expect-error
6+
import Queue from 'then-queue';
67

78
export type {SQLQuery};
89
export {sql, isSqlQuery};

scripts/build-package.mjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,13 @@ async function fixup(path) {
138138
throw new Error(
139139
`Unexpectedly found a reference to ${path.node.name} in ${filename}`,
140140
);
141-
} else if (path.node.name === 'require') {
141+
} else if (
142+
path.node.name === 'require' ||
143+
path.node.name === '__dirname' ||
144+
path.node.name === '__filename'
145+
) {
142146
throw new Error(
143-
`Unexpectedly found a reference to require in ${filename}`,
147+
`Unexpectedly found a reference to ${path.node.name} in ${filename}`,
144148
);
145149
}
146150
},

0 commit comments

Comments
 (0)