mirror of
https://github.com/hanzoai/team.git
synced 2026-09-30 01:57:35 +00:00
webapp/platform publishes six packages and the channels app carries a seventh in-tree, and every one of them went out under @mattermost — types, client, components, shared, eslint-plugin, compass-icons and mattermost-redux — while the plugin that consumes them already asks for @hanzoteam/types and @hanzoteam/client by name. It could not build: it was asking a registry for a package nobody publishes. They are @hanzoteam/* now, and mattermost-redux is @hanzoteam/redux, moved to src/packages/@hanzoteam/redux so the directory matches the alias that always pointed there. @mattermost/calls-common and @mattermost/desktop-api stay. Those are published by someone else and resolved from npm; renaming a package we merely consume would name a thing that does not exist. The jest moduleNameMapper entries needed doing by hand — they spell the scope inside a regex, so a sweep over the plain name walks straight past them, and a missed one fails at require time rather than at build.
89 lines
2.9 KiB
JavaScript
89 lines
2.9 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {defineConfig, globalIgnores} from 'eslint/config';
|
|
import formatjsPlugin from 'eslint-plugin-formatjs';
|
|
import noOnlyTestsPlugin from 'eslint-plugin-no-only-tests';
|
|
|
|
import eslintPlugin from '@hanzoteam/eslint-plugin';
|
|
|
|
export default defineConfig([
|
|
...eslintPlugin.configs.react,
|
|
globalIgnores(['./dist']),
|
|
{
|
|
plugins: {
|
|
formatjs: formatjsPlugin,
|
|
},
|
|
rules: {
|
|
'react/prop-types': [
|
|
2,
|
|
{
|
|
ignore: [
|
|
'location',
|
|
'history',
|
|
'component',
|
|
],
|
|
},
|
|
],
|
|
'react/no-unknown-property': [
|
|
2,
|
|
{
|
|
ignore: [
|
|
'mask-type',
|
|
],
|
|
},
|
|
],
|
|
'react/style-prop-object': [2, {
|
|
allow: ['Timestamp'],
|
|
}],
|
|
'formatjs/enforce-default-message': 2,
|
|
'formatjs/enforce-id': 2,
|
|
'formatjs/enforce-placeholders': 2,
|
|
'formatjs/no-invalid-icu': 2,
|
|
'formatjs/no-multiple-plurals': 1,
|
|
'formatjs/no-multiple-whitespaces': 2,
|
|
'formatjs/no-literal-string-in-jsx': 1,
|
|
'formatjs/prefer-formatted-message': 1,
|
|
'formatjs/no-useless-message': 1,
|
|
'formatjs/prefer-pound-in-plural': 0,
|
|
'react/jsx-fragments': ['error', 'syntax'],
|
|
},
|
|
},
|
|
{
|
|
files: ['**/*.test.js', '**/*.test.jsx', '**/*.test.ts', '**/*.test.tsx'],
|
|
plugins: {
|
|
'no-only-tests': noOnlyTestsPlugin,
|
|
},
|
|
rules: {
|
|
'no-only-tests/no-only-tests': ['error', {focus: ['only', 'skip']}],
|
|
},
|
|
},
|
|
{
|
|
ignores: ['src/packages/@hanzoteam/redux/**'],
|
|
rules: {
|
|
'@typescript-eslint/no-restricted-imports': [
|
|
'error',
|
|
{
|
|
paths: [{
|
|
name: '@hanzoteam/redux/types/actions',
|
|
importNames: ['DispatchFunc', 'GetStateFunc', 'ActionFunc', 'ActionFuncAsync', 'ThunkActionFunc'],
|
|
message: 'Use the web app version of it from types/store',
|
|
}],
|
|
patterns: [{
|
|
group: ['@hanzoteam/client/src/*', '@hanzoteam/components/src/*', '@hanzoteam/types/src/*'],
|
|
message: "Don't include the src folder when importing from packages in webapp/platform",
|
|
}],
|
|
},
|
|
],
|
|
},
|
|
},
|
|
{
|
|
settings: {
|
|
'import/resolver': 'webpack',
|
|
formatjs: {
|
|
additionalFunctionNames: ['localizeMessage', 'defineMessage'],
|
|
},
|
|
},
|
|
},
|
|
]);
|