UNPKG

@sentzunhat/zacatl

Version:

A modular, high-performance TypeScript microservice framework for Node.js, featuring layered architecture, dependency injection, and robust validation for building scalable APIs and distributed systems.

107 lines (103 loc) 2.75 kB
/** * ESLint Import Ordering Configuration for Zacatl * * Enforces consistent import organization: * 1. Built-in Node.js modules * 2. External dependencies * 3. Internal workspace imports * 4. Parent/sibling/index imports * * Usage: * import { importsConfig } from "@sentzunhat/zacatl/eslint"; * // or * import importsConfig from "@sentzunhat/zacatl/eslint/imports"; * * export default [ * importsConfig, * // ... additional configs * ]; */ import importPlugin from 'eslint-plugin-import'; const importsConfig = { ...importPlugin.flatConfigs.recommended, settings: { // TypeScript resolver — understands tsconfig paths and package.json exports 'import/resolver': { typescript: { alwaysTryTypes: true, project: './tsconfig.json', }, node: true, }, // Teach the import resolver about Node 24 built-in modules that use the // `node:` scheme and aren't yet listed in older resolver versions. 'import/core-modules': [ 'node:sqlite', 'node:async_hooks', 'node:fs', 'node:fs/promises', 'node:path', 'node:url', 'node:os', 'node:child_process', 'node:util', 'node:crypto', 'node:stream', 'node:http', 'node:https', 'node:events', 'node:buffer', 'node:assert', 'node:timers', 'node:process', 'node:module', 'node:perf_hooks', ], }, rules: { 'import/order': [ 'error', { groups: [ 'builtin', // Node.js built-in modules 'external', // npm packages 'internal', // Aliased imports ['parent', 'sibling', 'index'], // Relative imports ], pathGroups: [ { pattern: 'src/**', group: 'internal', }, ], pathGroupsExcludedImportTypes: ['builtin', 'external'], 'newlines-between': 'always', alphabetize: { order: 'asc', caseInsensitive: true, }, }, ], // Disable rules that may conflict with TypeScript 'import/no-unresolved': 'error', 'import/named': 'off', 'import/namespace': 'off', 'import/default': 'off', 'import/no-named-as-default-member': 'off', // Discourage importing the library root; prefer explicit subpath imports 'no-restricted-imports': [ 'warn', { paths: [ { name: '@zacatl', message: "Import explicit subpaths instead (e.g. '@zacatl/third-party/mongoose' or '@zacatl/service') to avoid pulling runtime implementations unintentionally.", }, ], }, ], }, }; export default importsConfig; export { importsConfig };