mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-11 09:51:30 +00:00
* feat: add helper to ensure string conversion for non-string values in Postman to Bruno conversion - Introduced `ensureString` function to convert numeric and non-string values to strings, defaulting null/undefined to an empty string. - Updated request handling in `importPostmanV2CollectionItem` to utilize `ensureString` for headers, parameters, and body fields. - Added tests to verify correct conversion of numeric values to strings in headers, query parameters, and body fields. * test: add test for numeric value conversion in Postman to Bruno transformation - Implemented a new test case to verify that numeric values in example request and response fields are correctly converted to strings during the Postman to Bruno conversion process. - The test checks various components including request headers, query parameters, path parameters, and body fields to ensure proper string conversion. * test: add multipart form value test for numeric conversion in Postman to Bruno transformation - Added a new test case to verify that numeric values in multipart form data are correctly converted to strings during the Postman to Bruno conversion process. - The test checks the conversion of numeric values in the request body to ensure proper handling in the transformation. * feat: enhance header parsing in Postman to Bruno conversion - Added `parseStringHeader` and `normalizeHeaders` functions to handle various header formats, including string headers and concatenated strings. - Updated the request and response handling in `importPostmanV2CollectionItem` to utilize the new header normalization logic. - Introduced tests to verify correct parsing of string headers, including cases with no values and concatenated headers. * refactor: enhance ensureString function for flexible fallback values - Updated the `ensureString` function to accept a fallback parameter, allowing for customizable default values instead of a fixed empty string for null/undefined inputs. - Modified the usage of `ensureString` in the `processAuth` function to utilize the new fallback feature for various authentication fields, improving the handling of optional values. * refactor: update ensureString function to handle empty values - Modified the `ensureString` function to return the fallback for null, undefined, or empty string values, enhancing its flexibility in handling various input scenarios. * chore: update ESLint configuration and enhance Postman to Bruno conversion tests - Added 'no-case-declarations' rule to ESLint configuration to enforce stricter coding standards. - Modified the `processAuth` function to ensure proper block scoping for OAuth2 case handling. - Improved header parsing logic to check for string type in content-type header. - Added new tests to verify conversion of numeric authentication values to strings in both array-backed and object-backed formats during Postman to Bruno transformation. * chore: update ESLint configuration to enforce stricter rules - Added 'no-case-declarations' rule to ESLint configuration to enhance code quality. - Adjusted existing rules for consistency and clarity in the configuration. --------- Co-authored-by: Bijin A B <bijin@usebruno.com>
292 lines
7.1 KiB
JavaScript
292 lines
7.1 KiB
JavaScript
// eslint.config.js
|
|
const { defineConfig } = require('eslint/config');
|
|
const globals = require('globals');
|
|
const { fixupPluginRules } = require('@eslint/compat');
|
|
const eslintPluginDiff = require('eslint-plugin-diff');
|
|
|
|
let stylistic;
|
|
|
|
const runESMImports = async () => {
|
|
stylistic = await import('@stylistic/eslint-plugin').then((d) => d.default);
|
|
};
|
|
|
|
module.exports = runESMImports().then(() => defineConfig([
|
|
// Global ignores - must be a standalone object with ONLY ignores
|
|
{
|
|
ignores: [
|
|
'**/node_modules/**/*',
|
|
'**/dist/**/*',
|
|
'**/*.bru',
|
|
'packages/bruno-js/src/sandbox/bundle-browser-rollup.js',
|
|
'packages/bruno-app/public/static/**/*',
|
|
'packages/bruno-app/.next/**/*',
|
|
'packages/bruno-electron/web/**/*'
|
|
]
|
|
},
|
|
{
|
|
plugins: {
|
|
'diff': fixupPluginRules(eslintPluginDiff),
|
|
'@stylistic': stylistic
|
|
},
|
|
languageOptions: {
|
|
parser: require('@typescript-eslint/parser'),
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module'
|
|
}
|
|
},
|
|
files: [
|
|
'./eslint.config.js',
|
|
'tests/**/*.{ts,js}',
|
|
'playwright/**/*.{js,ts}',
|
|
'packages/bruno-app/**/*.{js,jsx,ts}',
|
|
'packages/bruno-app/src/test-utils/mocks/codemirror.js',
|
|
'packages/bruno-cli/**/*.js',
|
|
'packages/bruno-common/**/*.ts',
|
|
'packages/bruno-converters/**/*.js',
|
|
'packages/bruno-electron/**/*.js',
|
|
'packages/bruno-filestore/**/*.ts',
|
|
'packages/bruno-schema-types/**/*.ts',
|
|
'packages/bruno-js/**/*.js',
|
|
'packages/bruno-lang/**/*.js',
|
|
'packages/bruno-requests/**/*.ts',
|
|
'packages/bruno-requests/**/*.js',
|
|
'packages/bruno-tests/**/*.{js,ts}'
|
|
],
|
|
rules: {
|
|
...stylistic.configs.customize({
|
|
indent: 2,
|
|
quotes: 'single',
|
|
semi: true,
|
|
jsx: true
|
|
}).rules,
|
|
'@stylistic/comma-dangle': ['error', 'never'],
|
|
'@stylistic/brace-style': ['error', '1tbs', { allowSingleLine: true }],
|
|
'@stylistic/arrow-parens': ['error', 'always'],
|
|
'@stylistic/curly-newline': ['error', {
|
|
multiline: true,
|
|
minElements: 2,
|
|
consistent: true
|
|
}],
|
|
'@stylistic/function-paren-newline': ['off'],
|
|
'@stylistic/array-bracket-spacing': ['error', 'never'],
|
|
'@stylistic/arrow-spacing': ['error', { before: true, after: true }],
|
|
'@stylistic/function-call-spacing': ['error', 'never'],
|
|
'@stylistic/multiline-ternary': ['off'],
|
|
'@stylistic/padding-line-between-statements': ['off'],
|
|
'@stylistic/semi-style': ['error', 'last'],
|
|
'@stylistic/max-len': ['off'],
|
|
'@stylistic/jsx-one-expression-per-line': ['off'],
|
|
'@stylistic/max-statements-per-line': ['off'],
|
|
'@stylistic/no-mixed-operators': ['off']
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-app/**/*.{js,jsx,ts}'],
|
|
ignores: ['**/*.config.js', '**/public/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.browser,
|
|
...globals.jest,
|
|
global: false,
|
|
require: false,
|
|
Buffer: false,
|
|
process: false,
|
|
ipcRenderer: false
|
|
},
|
|
parserOptions: {
|
|
ecmaFeatures: {
|
|
jsx: true
|
|
}
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
// It prevents lint errors when using CommonJS exports (module.exports) in Jest mocks.
|
|
files: ['packages/bruno-app/src/test-utils/mocks/codemirror.js'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
// Storybook config files use CommonJS with __dirname and module.exports
|
|
files: ['packages/bruno-app/storybook/**/*.js'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-cli/**/*.js'],
|
|
ignores: ['**/*.config.js'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
},
|
|
parserOptions: {
|
|
ecmaVersion: 'latest'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-common/**/*.ts'],
|
|
ignores: ['**/*.config.js', '**/dist/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
},
|
|
parser: require('@typescript-eslint/parser'),
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module',
|
|
project: './packages/bruno-common/tsconfig.json'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-converters/**/*.js'],
|
|
ignores: ['**/*.config.js', '**/dist/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
},
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error',
|
|
'no-case-declarations': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-electron/**/*.js'],
|
|
ignores: ['**/*.config.js', '**/web/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-filestore/**/*.ts'],
|
|
ignores: ['**/*.config.js', '**/dist/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
},
|
|
parser: require('@typescript-eslint/parser'),
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module',
|
|
project: './packages/bruno-filestore/tsconfig.json'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-js/**/*.js'],
|
|
ignores: ['**/*.config.js', '**/dist/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest,
|
|
window: false,
|
|
self: false,
|
|
HTMLElement: false,
|
|
typeDetectGlobalObject: false
|
|
},
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-lang/**/*.js'],
|
|
ignores: ['**/*.config.js', '**/dist/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
},
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-requests/**/*.ts'],
|
|
ignores: ['**/*.config.js', '**/dist/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
},
|
|
parser: require('@typescript-eslint/parser'),
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module',
|
|
project: './packages/bruno-requests/tsconfig.json'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
},
|
|
{
|
|
files: ['packages/bruno-requests/**/*.js'],
|
|
ignores: ['**/*.config.js', '**/dist/**/*'],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
...globals.jest
|
|
},
|
|
parserOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error'
|
|
}
|
|
}
|
|
]));
|