Skip to content

Commit

Permalink
feat!: enable esm and cjs module exports
Browse files Browse the repository at this point in the history
  • Loading branch information
weyoss committed Feb 18, 2024
1 parent e98dc77 commit 2d28c41
Show file tree
Hide file tree
Showing 116 changed files with 932 additions and 636 deletions.
38 changes: 19 additions & 19 deletions index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,22 @@
* in the root directory of this source tree.
*/

export * from './types';
export * from './src/errors';
export * from './src/logger/errors';
export * from './src/timer/errors';
export * from './src/locker/errors';
export * from './src/redis-client/errors';
export * from './src/worker/errors';
export { Locker } from './src/locker/locker';
export { PowerSwitch } from './src/power-switch/power-switch';
export { RedisClient } from './src/redis-client/redis-client';
export { Timer } from './src/timer/timer';
export { Runnable } from './src/runnable/runnable';
export { WorkerCallable } from './src/worker/worker-callable';
export { WorkerRunnable } from './src/worker/worker-runnable';
export { WorkerResourceGroup } from './src/worker/worker-resource-group';
export { logger } from './src/logger/logger';
export { async } from './src/async/async';
export { redis } from './src/redis-client';
export * from './src/event';
export * from './types/index.js';
export * from './src/errors/index.js';
export * from './src/logger/errors/index.js';
export * from './src/timer/errors/index.js';
export * from './src/locker/errors/index.js';
export * from './src/redis-client/errors/index.js';
export * from './src/worker/errors/index.js';
export { Locker } from './src/locker/locker.js';
export { PowerSwitch } from './src/power-switch/power-switch.js';
export { RedisClient } from './src/redis-client/redis-client.js';
export { Timer } from './src/timer/timer.js';
export { Runnable } from './src/runnable/runnable.js';
export { WorkerCallable } from './src/worker/worker-callable.js';
export { WorkerRunnable } from './src/worker/worker-runnable.js';
export { WorkerResourceGroup } from './src/worker/worker-resource-group.js';
export { logger } from './src/logger/logger.js';
export { async } from './src/async/async.js';
export { redis } from './src/redis-client/index.js';
export * from './src/event/index.js';
17 changes: 17 additions & 0 deletions jest.config.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c)
* Weyoss <weyoss@protonmail.com>
* https://github.com/weyoss
*
* This source code is licensed under the MIT license found in the LICENSE file
* in the root directory of this source tree.
*/

const { resolve } = require('path');

module.exports = {
rootDir: resolve('./'),
testMatch: ['<rootDir>/dist/cjs/tests/**/*.test.js'],
setupFilesAfterEnv: ['<rootDir>/dist/cjs/tests/jest.setup.js'],
coverageDirectory: '<rootDir>/coverage',
};
9 changes: 4 additions & 5 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@
* in the root directory of this source tree.
*/

/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
const { resolve } = require('path');
import { resolve } from 'path';

module.exports = {
export default {
rootDir: resolve('./'),
testMatch: ['<rootDir>/dist/tests/**/*.test.js'],
setupFilesAfterEnv: ['<rootDir>/dist/tests/jest.setup.js'],
testMatch: ['<rootDir>/dist/esm/tests/**/*.test.js'],
setupFilesAfterEnv: ['<rootDir>/dist/esm/tests/jest.setup.js'],
coverageDirectory: '<rootDir>/coverage',
};
9 changes: 5 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 23 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,24 @@
"bugs": {
"url": "https://github.com/weyoss/redis-smq-common/issues"
},
"type": "commonjs",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"type": "module",
"main": "./dist/cjs/index.js",
"module": "./dist/esm/index.js",
"types": "./dist/types/index.d.ts",
"exports": {
".": {
"import": "./dist/esm/index.js",
"require": "./dist/cjs/index.js",
"types": "./dist/types/index.d.ts"
}
},
"typesVersions": {
"*": {
".": [
"./dist/types/index.d.ts"
]
}
},
"dependencies": {
"@redis/client": "1.1.0",
"@types/bunyan": "1.8.7",
Expand All @@ -44,6 +59,7 @@
"uuid": "8.3.2"
},
"devDependencies": {
"@jest/globals": "^29.7.0",
"@types/bluebird": "3.5.36",
"@types/debug": "4.1.7",
"@types/jest": "29.5.8",
Expand All @@ -60,12 +76,13 @@
"lint-staged": "11.1.2",
"prettier": "3.0.3",
"type-coverage": "2.27.0",
"typescript": "4.9.4"
"typescript": "4.9.5"
},
"scripts": {
"test": "NODE_OPTIONS=--experimental-vm-modules scripts/test.sh --config jest.config.js",
"test:cjs": "scripts/test.sh --config jest.config.cjs",
"build": "scripts/build.sh",
"test": "scripts/test.sh",
"release": "scripts/release/release.sh",
"release": "./scripts/release/release.sh",
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
"lint": "eslint \"{src,tests,types}/**/*.ts\"",
"type-coverage": "type-coverage --strict --at-least 100 --ignore-files \"dist/**/*\"",
Expand Down
19 changes: 17 additions & 2 deletions scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@ npm run type-coverage
npm run lint
npm run format
rm -rf dist

# esm
tsc -p ./tsconfig.json
cp -r src/redis-client/lua dist/src/redis-client/
cp -r src/locker/redis-client dist/src/locker/
cp -r src/redis-client/lua dist/esm/src/redis-client/
cp -r src/locker/redis-client dist/esm/src/locker/

# cjs
tsc -p ./tsconfig.cjs.json
cat >dist/cjs/package.json <<!EOF
{
"type": "commonjs"
}
!EOF
cp -r src/redis-client/lua dist/cjs/src/redis-client/
cp -r src/locker/redis-client dist/cjs/src/locker/

# types
tsc -p ./tsconfig.types.json
4 changes: 3 additions & 1 deletion scripts/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,7 @@ set -x
set -e

export NODE_ENV=test
npm run build
DIRNAME=$(dirname "$0")

. "${DIRNAME}"/build.sh
jest --runInBand --verbose --collectCoverage "$@"
2 changes: 1 addition & 1 deletion src/async/async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* in the root directory of this source tree.
*/

import { ICallback, TFunction } from '../../types';
import { ICallback, TFunction } from '../../types/index.js';

const eachOf = <T>(
collection: T[],
Expand Down
33 changes: 33 additions & 0 deletions src/env/environment.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (c)
* Weyoss <weyoss@protonmail.com>
* https://github.com/weyoss
*
* This source code is licensed under the MIT license found in the LICENSE file
* in the root directory of this source tree.
*/

import { PanicError } from '../errors/panic.error.js';
import { dirname } from 'path';

function isStackTraces(stack: unknown): stack is NodeJS.CallSite[] {
return !!(stack && Array.isArray(stack));
}

export function getDirname(): string {
const prepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (
err: Error,
stackTraces: NodeJS.CallSite[],
): NodeJS.CallSite[] => {
return stackTraces;
};
const err = new Error();
const stack: unknown = err.stack;
Error.prepareStackTrace = prepareStackTrace;
if (isStackTraces(stack)) {
const filename = stack[1].getFileName();
if (filename) return dirname(filename);
}
throw new PanicError(`Could not get current dir`);
}
2 changes: 1 addition & 1 deletion src/errors/callback-invalid-reply.error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* in the root directory of this source tree.
*/

import { PanicError } from './panic.error';
import { PanicError } from './panic.error.js';

export class CallbackInvalidReplyError extends PanicError {
constructor() {
Expand Down
8 changes: 4 additions & 4 deletions src/errors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* in the root directory of this source tree.
*/

export { CallbackEmptyReplyError } from './callback-empty-reply.error';
export { CallbackInvalidReplyError } from './callback-invalid-reply.error';
export { PanicError } from './panic.error';
export { RedisSMQError } from './redis-smq.error';
export { CallbackEmptyReplyError } from './callback-empty-reply.error.js';
export { CallbackInvalidReplyError } from './callback-invalid-reply.error.js';
export { PanicError } from './panic.error.js';
export { RedisSMQError } from './redis-smq.error.js';
2 changes: 1 addition & 1 deletion src/errors/panic.error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
* in the root directory of this source tree.
*/

import { RedisSMQError } from './redis-smq.error';
import { RedisSMQError } from './redis-smq.error.js';

export class PanicError extends RedisSMQError {}
2 changes: 1 addition & 1 deletion src/event/errors/event-bus-connection.error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
* in the root directory of this source tree.
*/

import { EventBusError } from './event-bus.error';
import { EventBusError } from './event-bus.error.js';

export class EventBusConnectionError extends EventBusError {}
2 changes: 1 addition & 1 deletion src/event/errors/event-bus.error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
* in the root directory of this source tree.
*/

import { RedisSMQError } from '../../errors';
import { RedisSMQError } from '../../errors/index.js';

export class EventBusError extends RedisSMQError {}
4 changes: 2 additions & 2 deletions src/event/errors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
* in the root directory of this source tree.
*/

export { EventBusError } from './event-bus.error';
export { EventBusConnectionError } from './event-bus-connection.error';
export { EventBusError } from './event-bus.error.js';
export { EventBusConnectionError } from './event-bus-connection.error.js';
12 changes: 6 additions & 6 deletions src/event/event-bus-redis/event-bus-redis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@
* in the root directory of this source tree.
*/

import { RedisClient } from '../../redis-client/redis-client';
import {
ICallback,
IEventBus,
IRedisConfig,
TEventEmitterEvent,
} from '../../../types';
import { async } from '../../async/async';
import { EventBusConnectionError } from '../errors';
import { redis } from '../../redis-client';
import { EventEmitter } from '../event-emitter';
} from '../../../types/index.js';
import { async } from '../../async/async.js';
import { redis } from '../../redis-client/index.js';
import { RedisClient } from '../../redis-client/redis-client.js';
import { EventBusConnectionError } from '../errors/index.js';
import { EventEmitter } from '../event-emitter.js';

export class EventBusRedis<Events extends TEventEmitterEvent>
extends EventEmitter<Events>
Expand Down
10 changes: 7 additions & 3 deletions src/event/event-bus/event-bus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,13 @@
* in the root directory of this source tree.
*/

import { EventEmitter } from '../event-emitter';
import { ICallback, IEventBus, TEventEmitterEvent } from '../../../types';
import { EventBusConnectionError } from '../errors';
import {
ICallback,
IEventBus,
TEventEmitterEvent,
} from '../../../types/index.js';
import { EventBusConnectionError } from '../errors/index.js';
import { EventEmitter } from '../event-emitter.js';

export class EventBus<Events extends TEventEmitterEvent>
extends EventEmitter<Events>
Expand Down
2 changes: 1 addition & 1 deletion src/event/event-emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
*/

import { EventEmitter as NodeEventEmitter } from 'events';
import { IEventEmitter, TEventEmitterEvent } from '../../types';
import { IEventEmitter, TEventEmitterEvent } from '../../types/index.js';

// A typed EventEmitter around Node's EventEmitter with a limited set of methods
export class EventEmitter<Events extends TEventEmitterEvent>
Expand Down
6 changes: 3 additions & 3 deletions src/event/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
* in the root directory of this source tree.
*/

export * from './event-emitter';
export * from './event-bus-redis/event-bus-redis';
export * from './event-bus/event-bus';
export * from './event-emitter.js';
export * from './event-bus-redis/event-bus-redis.js';
export * from './event-bus/event-bus.js';
12 changes: 6 additions & 6 deletions src/locker/errors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
* in the root directory of this source tree.
*/

export { LockError } from './lock.error';
export { LockAbortError } from './lock-abort.error';
export { LockAcquireError } from './lock-acquire.error';
export { LockExtendError } from './lock-extend.error';
export { LockMethodNotAllowedError } from './lock-method-not-allowed.error';
export { LockNotAcquiredError } from './lock-not-acquired.error';
export { LockError } from './lock.error.js';
export { LockAbortError } from './lock-abort.error.js';
export { LockAcquireError } from './lock-acquire.error.js';
export { LockExtendError } from './lock-extend.error.js';
export { LockMethodNotAllowedError } from './lock-method-not-allowed.error.js';
export { LockNotAcquiredError } from './lock-not-acquired.error.js';
2 changes: 1 addition & 1 deletion src/locker/errors/lock-abort.error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* in the root directory of this source tree.
*/

import { LockError } from './lock.error';
import { LockError } from './lock.error.js';

export class LockAbortError extends LockError {
constructor(message = `releaseLock() may have been called. Abandoning.`) {
Expand Down
2 changes: 1 addition & 1 deletion src/locker/errors/lock-acquire.error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* in the root directory of this source tree.
*/

import { LockError } from './lock.error';
import { LockError } from './lock.error.js';

export class LockAcquireError extends LockError {
constructor(message = `Could not acquire a lock`) {
Expand Down
2 changes: 1 addition & 1 deletion src/locker/errors/lock-extend.error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* in the root directory of this source tree.
*/

import { LockError } from './lock.error';
import { LockError } from './lock.error.js';

export class LockExtendError extends LockError {
constructor(message = `Acquired lock could not be extended`) {
Expand Down
Loading

0 comments on commit 2d28c41

Please sign in to comment.