Skip to content

Commit

Permalink
refactor: 🎨 move to esm
Browse files Browse the repository at this point in the history
change code structure and examples to an esmodules

BREAKING CHANGE: min node version -> 16, only works on es modules
  • Loading branch information
doralteres committed Dec 16, 2023
1 parent 93f0161 commit 76d826b
Show file tree
Hide file tree
Showing 19 changed files with 65 additions and 55 deletions.
15 changes: 9 additions & 6 deletions example/db/models/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import {existsSync, readdirSync} from 'fs';
import {basename, join} from 'path';
import {Sequelize} from 'sequelize';
import {URL} from 'url';

const __filename = new URL('', import.meta.url).pathname;
const __dirname = new URL('.', import.meta.url).pathname;
const associationsFile = 'associations';

const importDefaultFunction = (path: string) => {
const imported = require(path);
const importDefaultFunction = async (path: string) => {
const imported = await import(path);
let init = imported;
if (typeof imported !== 'function') {
init = imported.default;
Expand All @@ -24,9 +27,7 @@ const initModels = async (sequelize: Sequelize) => {
model !== basename(__filename) &&
modelNoExtention !== associationsFile
) {
const init = await importDefaultFunction(
join(__dirname, modelNoExtention)
);
const init = await importDefaultFunction(join(__dirname, model));
console.log('Init model', modelNoExtention);
await init(sequelize);
}
Expand All @@ -35,7 +36,9 @@ const initModels = async (sequelize: Sequelize) => {
existsSync(join(__dirname, associationsFile + '.js')) ||
existsSync(join(__dirname, associationsFile + '.ts'))
) {
const {default: init} = require(join(__dirname, associationsFile));
const {default: init} = await import(
join(__dirname, associationsFile + '.js')
);
if (!init) {
console.error(associationsFile, 'does not have a default export');
return Promise.reject(
Expand Down
2 changes: 1 addition & 1 deletion example/db/models/tasks.model.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Sequelize, DataTypes} from 'sequelize';
import {modelName as users} from './users.model';
import {modelName as users} from './users.model.js';

export const modelName = 'tasks';

Expand Down
2 changes: 1 addition & 1 deletion example/db/models/users.model.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Sequelize, DataTypes} from 'sequelize';
import {modelName as tasks} from './tasks.model';
import {modelName as tasks} from './tasks.model.js';

export const modelName = 'users';

Expand Down
6 changes: 3 additions & 3 deletions example/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import express from 'express';

import initDB from './db/models';
import initDB from './db/models/index.js';
import bodyParser from 'body-parser';
import {modelName as users} from './db/models/users.model.js';
import {modelName as tasks} from './db/models/tasks.model.js';
import sequelizeCrud from 'express-sequelize-autocrud';
import {modelName as users} from './db/models/users.model';
import {modelName as tasks} from './db/models/tasks.model';

const app = express();

Expand Down
1 change: 1 addition & 0 deletions example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"description": "Example project for sequelize-mig-generator",
"main": "index.js",
"license": "MIT",
"type": "module",
"dependencies": {
"body-parser": "^1.20.2",
"express": "^4.18.2",
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "express-sequelize-autocrud",
"version": "0.0.14",
"main": "dist/src/index.js",
"type": "module",
"files": [
"dist"
],
Expand Down Expand Up @@ -51,7 +52,7 @@
}
},
"engines": {
"node": ">=8.5.0"
"node": ">=16.0.0"
},
"keywords": [
"express",
Expand Down
2 changes: 1 addition & 1 deletion src/config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {LoggerOptions, customFields} from './types';
import {LoggerOptions, customFields} from './types.js';

export const GET_LIST_DEFAULT_FILTERABLE_FIELDS: customFields = [];
export const GET_LIST_DEFAULT_SORTABLE_FIELDS: customFields = [];
Expand Down
10 changes: 5 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {Sequelize} from 'sequelize';
import {Router} from 'express';
import {getPath} from './utils';
import buildModelRoutes from './routes';
import {sequelizeCrudConfig, sequelizeCrudOptions} from './types';
import {defaultLogger} from './config';
import {getPath} from './utils.js';
import buildModelRoutes from './routes/index.js';
import {sequelizeCrudConfig, sequelizeCrudOptions} from './types.js';
import {defaultLogger} from './config.js';

const sequelizeCrud = (
sequelize: Sequelize,
Expand All @@ -24,4 +24,4 @@ const sequelizeCrud = (
};

export default sequelizeCrud;
export * from './types';
export * from './types.js';
6 changes: 3 additions & 3 deletions src/middleware/body.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {NextFunction, Request, Response} from 'express';
import {customFields} from '../types';
import {isIncludeExcludeMatchCriteria} from './config';
import {crudError} from '../utils';
import {isIncludeExcludeMatchCriteria} from './config.js';
import {crudError} from '../utils.js';
import type {customFields} from '../types.js';

export const checkBodyFields = (bodyFields: customFields) => {
return async (req: Request, res: Response, next: NextFunction) => {
Expand Down
4 changes: 2 additions & 2 deletions src/middleware/config.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import {NextFunction, Request, Response} from 'express';
import {
import type {
customFields,
expressCrudProps,
expressFunc,
sequelizePropOrFunc,
} from '../types';
} from '../types.js';

export const getFieldValue = async <T = any>(
field: sequelizePropOrFunc<T>,
Expand Down
8 changes: 4 additions & 4 deletions src/middleware/query.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import {FindAndCountOptions} from 'sequelize';
import {customFields} from '../types';
import {NextFunction, Request, Response} from 'express';
import {isIncludeExcludeMatchCriteria} from './config';
import {crudError} from '../utils';
import {isIncludeExcludeMatchCriteria} from './config.js';
import {crudError} from '../utils.js';
import {
GET_LIST_DEFAULT_FILTERABLE_FIELDS,
GET_LIST_DEFAULT_SORTABLE_FIELDS,
} from '../config';
} from '../config.js';
import type {customFields} from '../types.js';

export const buildOptionsFromQueryParams = (
q: Record<string, any>,
Expand Down
10 changes: 5 additions & 5 deletions src/routes/create.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import {Router} from 'express';
import {LoggerOptions, createOptions, pureModelType} from '../types';
import {
buildOptionsFromConfig,
runCustomMiddleware,
} from '../middleware/config';
import {checkBodyFields} from '../middleware/body';
import {getSequelizeErrorMessage} from '../utils';
} from '../middleware/config.js';
import {checkBodyFields} from '../middleware/body.js';
import {getSequelizeErrorMessage} from '../utils.js';
import {Sequelize} from 'sequelize';
import {DEFAULT_CREATABLE_FIELDS} from '../config';
import {DEFAULT_CREATABLE_FIELDS} from '../config.js';
import type {LoggerOptions, createOptions, pureModelType} from '../types.js';

const createRoute = (
sequelize: Sequelize,
Expand Down
6 changes: 3 additions & 3 deletions src/routes/delete.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import {Router} from 'express';
import {LoggerOptions, deleteOptions, pureModelType} from '../types';
import {
buildOptionsFromConfig,
runCustomMiddleware,
} from '../middleware/config';
import {getSequelizeErrorMessage} from '../utils';
} from '../middleware/config.js';
import {getSequelizeErrorMessage} from '../utils.js';
import {Sequelize} from 'sequelize';
import type {LoggerOptions, deleteOptions, pureModelType} from '../types.js';

const deleteRoute = (
sequelize: Sequelize,
Expand Down
9 changes: 5 additions & 4 deletions src/routes/getList.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import {Router} from 'express';
import {LoggerOptions, getListOptions, pureModelType} from '../types';
import {
buildOptionsFromConfig,
runCustomMiddleware,
} from '../middleware/config';
} from '../middleware/config.js';
import {
buildOptionsFromQueryParams,
checkFilterableFields,
checkSortableFields,
setContentRange,
} from '../middleware/query';
import {getSequelizeErrorMessage} from '../utils';
} from '../middleware/query.js';
import {getSequelizeErrorMessage} from '../utils.js';

import type {LoggerOptions, getListOptions, pureModelType} from '../types.js';

const getListRoute = (
model: pureModelType,
Expand Down
6 changes: 3 additions & 3 deletions src/routes/getOne.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import {Router} from 'express';
import {LoggerOptions, getOneOptions, pureModelType} from '../types';
import {
buildOptionsFromConfig,
runCustomMiddleware,
} from '../middleware/config';
import {getSequelizeErrorMessage} from '../utils';
} from '../middleware/config.js';
import {getSequelizeErrorMessage} from '../utils.js';
import type {LoggerOptions, getOneOptions, pureModelType} from '../types.js';

const getOneRoute = (
model: pureModelType,
Expand Down
15 changes: 8 additions & 7 deletions src/routes/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import {Router} from 'express';
import {LoggerOptions, sequelizeCrudConfigModel} from '../types';
import {getModel} from '../utils';
import {getModel} from '../utils.js';
import {Sequelize} from 'sequelize';

import getListRoute from './getList';
import getOneRoute from './getOne';
import createRoute from './create';
import updateRoute from './update';
import deleteRoute from './delete';
import getListRoute from './getList.js';
import getOneRoute from './getOne.js';
import createRoute from './create.js';
import updateRoute from './update.js';
import deleteRoute from './delete.js';

import type {LoggerOptions, sequelizeCrudConfigModel} from '../types.js';

const buildModelRoutes = (
path: string,
Expand Down
10 changes: 5 additions & 5 deletions src/routes/update.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import {Router} from 'express';
import {updateOptions, pureModelType, LoggerOptions} from '../types';
import {
buildOptionsFromConfig,
runCustomMiddleware,
} from '../middleware/config';
import {checkBodyFields} from '../middleware/body';
import {getSequelizeErrorMessage} from '../utils';
} from '../middleware/config.js';
import {checkBodyFields} from '../middleware/body.js';
import {getSequelizeErrorMessage} from '../utils.js';
import {Sequelize} from 'sequelize';
import {DEFAULT_UPDATABLE_FIELDS} from '../config';
import {DEFAULT_UPDATABLE_FIELDS} from '../config.js';
import type {updateOptions, pureModelType, LoggerOptions} from '../types.js';

const updateRoute = (
sequelize: Sequelize,
Expand Down
2 changes: 1 addition & 1 deletion src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Sequelize} from 'sequelize';
import {modelType} from './types';
import type {modelType} from './types.js';

export const getModel = (sequelize: Sequelize, model: modelType) =>
typeof model === 'string' ? sequelize.model(model) : model;
Expand Down
3 changes: 3 additions & 0 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
{
"extends": "./node_modules/gts/tsconfig-google.json",
"compilerOptions": {
"lib": ["es2021"],
"module": "node16",
"target": "es2021",
"rootDir": ".",
"outDir": "dist"
},
Expand Down

0 comments on commit 76d826b

Please sign in to comment.