CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-jest-util

Collection of utility functions for Jest testing framework

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

module-loading.mddocs/

Module Loading Utilities

Cross-platform module loading utilities that handle CommonJS/ES6 interoperability and dynamic imports for Jest's module system. These utilities ensure consistent module loading behavior across different Node.js versions and module formats.

Capabilities

Interop Require Default

Provides CommonJS and ES6 module interoperability, handling the default export pattern used by Babel and TypeScript transpilation.

/**
 * Provides CommonJS/ES6 module interoperability helper
 * @param obj - Module object to check for default export pattern
 * @returns obj.default if ES module format, otherwise {default: obj}
 */
function interopRequireDefault(obj: any): any;

Usage Examples:

import { interopRequireDefault } from "jest-util";

// Handle transpiled ES6 modules loaded via require()
const moduleFromRequire = require("./some-es6-module");
const normalized = interopRequireDefault(moduleFromRequire);

// If moduleFromRequire has a 'default' property (ES6 module)
// Returns: moduleFromRequire.default
// If moduleFromRequire is a plain CommonJS export
// Returns: { default: moduleFromRequire }

// Common Jest use case - loading test modules consistently
const testModule = interopRequireDefault(require("./test-helper"));
const helper = testModule.default; // Always works regardless of module format

Require Or Import Module

Dynamically loads modules using the appropriate method (require() or import()) based on file type and Node.js capabilities, with proper error handling and interop support.

/**
 * Dynamically loads modules using require() or import() based on file type
 * @param filePath - Absolute path to module file
 * @param applyInteropRequireDefault - Whether to apply interop transformation (default: true)
 * @returns Promise resolving to the loaded module
 * @throws Error with helpful message if module loading fails
 */
function requireOrImportModule<T>(
  filePath: string, 
  applyInteropRequireDefault?: boolean
): Promise<T>;

Usage Examples:

import { requireOrImportModule } from "jest-util";

// Load configuration files dynamically
const jestConfig = await requireOrImportModule<any>("./jest.config.js");

// Load test modules with type safety
interface TestSuite {
  describe: string;
  tests: Array<{ name: string; fn: () => void }>;
}
const testSuite = await requireOrImportModule<TestSuite>("./my-test.mjs");

// Skip interop transformation for certain modules
const rawModule = await requireOrImportModule("./raw-module.js", false);

// Handle different file extensions automatically
const tsConfig = await requireOrImportModule("./tsconfig.json"); // Uses require
const esmModule = await requireOrImportModule("./module.mjs"); // Uses import()

Behavior:

  • CommonJS files (.js, .json): Uses require() for synchronous loading
  • ES Module files (.mjs, .js in ESM context): Uses dynamic import()
  • TypeScript files: Handles based on compilation target and Node.js version
  • Error handling: Provides clear error messages distinguishing between file not found, syntax errors, and import failures
  • Interop handling: Automatically applies interopRequireDefault unless explicitly disabled

Error Scenarios:

// File not found
try {
  await requireOrImportModule("./non-existent.js");
} catch (error) {
  // Clear error message about missing file
}

// Syntax error in module
try {
  await requireOrImportModule("./broken-syntax.js");
} catch (error) {
  // Error includes module path and syntax details
}

// ES Module in CommonJS context
try {
  await requireOrImportModule("./esm-only.mjs");
} catch (error) {
  // Falls back to import() with helpful context
}

docs

data-manipulation.md

error-handling.md

file-system.md

garbage-collection.md

global-environment.md

index.md

module-loading.md

string-path.md

terminal.md

type-checking.md

tile.json