Skip to content

Commit

Permalink
Project import generated by Copybara.
Browse files Browse the repository at this point in the history
GitOrigin-RevId: aae783b8f88dac561fe63864b5c3d09a609f2919
  • Loading branch information
Copybara authored and yang committed Oct 17, 2023
1 parent dbe6519 commit 19b5596
Show file tree
Hide file tree
Showing 224 changed files with 21,914 additions and 4,635 deletions.
321 changes: 311 additions & 10 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,61 @@
/** ESLint config for packages NOT using frameworks like React. */
const TYPES = `AnyType|Arena|ArenaChild|ArenaFrame|ArenaFrameCell|ArenaFrameGrid|ArenaFrameRow|Arg|ArgType|BindingStruct|BoolType|Choice|ClassNamePropType|CodeComponentHelper|CodeComponentMeta|CodeLibrary|CollectionExpr|ColorPropType|ColumnsConfig|ColumnsSetting|Component|ComponentArena|ComponentDataQuery|ComponentInstance|ComponentSwapSplitContent|ComponentTemplateInfo|ComponentVariantGroup|ComponentVariantSplitContent|CompositeExpr|CustomCode|CustomFunction|DataSourceOpExpr|DataSourceTemplate|DefaultStylesClassNamePropType|DefaultStylesPropType|EventHandler|Expr|ExprText|FigmaComponentMapping|FunctionArg|FunctionExpr|FunctionType|GenericEventHandler|GlobalVariantGroup|GlobalVariantGroupParam|GlobalVariantSplitContent|HostLessPackageInfo|HrefType|ImageAsset|ImageAssetRef|Img|Interaction|LabeledSelector|MapExpr|Marker|Mixin|NameArg|NamedState|NodeMarker|Num|ObjectPath|PageArena|PageHref|PageMeta|Param|PlumeInfo|PlumeInstance|PrimitiveType|ProjectDependency|PropParam|QueryData|QueryInvalidationExpr|QueryRef|RandomSplitSlice|RawText|RenderExpr|RenderFuncType|RenderableType|Rep|RichText|Rule|RuleSet|Scalar|SegmentSplitSlice|SelectorRuleSet|Site|SlotParam|Split|SplitContent|SplitSlice|State|StateChangeHandlerParam|StateParam|StrongFunctionArg|StyleExpr|StyleMarker|StyleNode|StylePropType|StyleScopeClassNamePropType|StyleToken|StyleTokenRef|TargetType|TemplatedString|Text|Theme|ThemeLayoutSettings|ThemeStyle|TplComponent|TplNode|TplRef|TplSlot|TplTag|Var|VarRef|Variant|VariantGroup|VariantGroupState|VariantSetting|VariantedRuleSet|VariantedValue|VariantsRef|VirtualRenderExpr`;

module.exports = {
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended",
],
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
root: true,
rules: {
"@typescript-eslint/no-empty-interface": "off",
"@typescript-eslint/ban-ts-comment": "off",
// Maybe not needed, from public-packages
// "@typescript-eslint/no-empty-interface": "off",
// "@typescript-eslint/ban-ts-comment": "off",
"prefer-const": "warn",
"no-restricted-properties": [
"error",
{
object: "L",
property: "remove",
message:
"Please use common.removeWhere() instead; L.remove() does not work well with mobx arrays",
},
{
object: "L",
property: "pull",
message:
"Please use common.remove() instead; L.pull() does not work well with mobx arrays",
},
{
object: "req",
property: "login",
message: "Please use doLogin() instead",
},
{
object: "req",
property: "logIn",
message: "Please use doLogin() instead",
},
{
object: "req",
property: "logout",
message: "Please use doLogout() instead",
},
{
object: "req",
property: "logOut",
message: "Please use doLogout() instead",
},
{
object: "window",
property: "prompt",
message:
"Please use reactPrompt() instead; window.prompt() does not work well with app hosting",
},
],
"no-restricted-globals": [
"error",
{
name: "prompt",
message:
"Please use reactPrompt() instead; window.prompt() does not work well with app hosting",
},
],
"no-restricted-imports": [
"error",
{
Expand All @@ -20,6 +64,263 @@ module.exports = {
message:
"Please import from @plasmicapp/host/registerComponent instead",
},
{
name: "antd",
importNames: ["Modal"],
message:
"Please use drop-in replacement src/wab/client/components/widgets/Modal.tsx instead",
},
{
name: "react-use",
importNames: ["useAsync", "useAsyncFn"],
message: "Please use useAsyncStrict()/useAsyncFnStrict() instead",
},
{
name: "react-use/lib/useAsync",
message: "Please use useAsyncStrict()/useAsyncFnStrict() instead",
},
{
name: "react-use/lib/useAsyncFn",
message: "Please use useAsyncStrict()/useAsyncFnStrict() instead",
},
],
"no-restricted-syntax": [
"error",
{
selector: "CallExpression[callee.name='ensure'][arguments.length!=2]",
message: "`ensure` must always be invoked with a message.",
},
{
selector: "CallExpression[callee.name='assert'][arguments.length!=2]",
message: "`assert` must always be invoked with a message.",
},
{
selector: `CallExpression[callee.name='ensureInstance'][arguments.length=2] > Identifier[name=/\\b(${TYPES})\\b/]`,
message:
"ensureInstance cannot be called on model types. Use ensureKnownXXX instead.",
},
{
selector: `BinaryExpression[operator='instanceof'] > Identifier[name=/\\b(${TYPES})\\b/]`,
message:
"instanceof cannot be used with model types. Use isKnownXXX instead.",
},
],
"react/forbid-elements": [
"error",
{
forbid: [
{
element: "Link",
message:
"Please use <PublicLink> instead to make sure it works with app hosting",
},
],
},
],
"no-shadow": "error",
"no-debugger": "off",
"no-redeclare": "off",
"no-dupe-class-members": "off",
"no-unused-vars": "off",
"no-console": "off",
"no-var": "error",
"no-constant-condition": ["error", { checkLoops: false }],
"no-empty": ["error", { allowEmptyCatch: true }],
},
env: {
es6: true,
node: true,
browser: true,
jasmine: true,
jest: true,
},
parser: "@typescript-eslint/parser",
overrides: [
{
files: [
"platform/wab/src/**/*.ts",
"platform/wab/src/**/*.tsx",
"platform/wab/src/wab/main.tsx",
],
rules: {
"@typescript-eslint/switch-exhaustiveness-check": "error",
"no-shadow": "off",
"no-extra-boolean-cast": "off",
"@typescript-eslint/no-shadow": "error",
"@typescript-eslint/no-floating-promises": ["error", {}],
"@typescript-eslint/no-misused-promises": [
"error",
{
checksVoidReturn: {
attributes: false,
},
},
],
"@typescript-eslint/no-unused-vars": [
"warn",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
"no-inner-declarations": "off",
"@typescript-eslint/ban-types": "warn",
"@typescript-eslint/no-empty-function": "warn",
"import/no-extraneous-dependencies": [
"error",
{
devDependencies: [
"platform/wab/src/wab/client/**/*.ts",
"platform/wab/src/wab/client/**/*.tsx",
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*-spec.ts",
],
},
],
"path/no-relative-imports": [
"error",
{
maxDepth: 0,
},
],
},

overrides: [
{
files: [
"platform/wab/src/wab/server/**/*.ts",
"platform/wab/src/wab/server/**/*.tsx",
],
excludedFiles: [
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*-spec.ts",
"**/*.test.ts",
"**/test/**/*",
],
rules: {
"@typescript-eslint/no-restricted-imports": [
"error",
{
patterns: [
{
group: ["**/client/*"],
message:
"Files in `server/` cannot import from `client/`. Please move this file inside `client/` or use `import type`",
allowTypeImports: true,
},
{
name: "mobx",
message:
"Files in `server/` can only import mobx from `shared/import-mobx` or use `import type`",
},
],
},
],
},
},
{
files: ["wab/src/wab/client/**/*.ts", "wab/src/wab/client/**/*.tsx"],
excludedFiles: [
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*-spec.ts",
"**/*.test.ts",
"**/test/**/*",
],
rules: {
"@typescript-eslint/no-restricted-imports": [
"error",
{
patterns: [
{
group: ["**/server/*"],
message:
"Files in `client/` cannot import from `server/`. Please move this file inside `server/` or use `import type`",
allowTypeImports: true,
},
],
},
],
},
},
{
files: ["platform/wab/src/**/*.ts", "platform/wab/src/**/*.tsx"],
excludedFiles: [
"platform/wab/src/wab/server/**/*",
"platform/wab/src/wab/client/**/*",
"platform/wab/src/wab/main.tsx",
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*-spec.ts",
"**/*.test.ts",
"**/test/**/*",
],
rules: {
"@typescript-eslint/no-restricted-imports": [
"error",
{
patterns: [
{
// This override takes precedence over the previous ones, so we need to re-add some rules
group: ["**/client/*"],
message:
"Only client files can import from `client/`. Please move this file inside `client/` or use `import type`",
allowTypeImports: true,
},
{
group: ["**/server/*"],
message:
"Only server files can import from `server/`. Please move this file inside `server/` or use `import type`",
allowTypeImports: true,
},
{
group: ["mobx"],
message:
"Server files (not in `client/` folder) can only import mobx from `shared/import-mobx` or use `import type`",
allowTypeImports: true,
},
],
},
],
},
},
],

parserOptions: {
ecmaVersion: 2017,
sourceType: "module",
ecmaFeatures: {
jsx: true,
},
project: ["./platform/wab/tsconfig.json"],
},
},
],
plugins: ["@typescript-eslint", "react", "jest", "import", "path"],
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/typescript",
],
settings: {
"import/resolver": {
typescript: true,
node: true,
},
react: {
version: "detect",
},
},
globals: {
globalThis: false, // means it is not writeable
analytics: false,
SocketIOClient: false,
JSX: false,
JQuery: false,
Cypress: false,
cy: false,
},
};
35 changes: 0 additions & 35 deletions .github/workflows/cla.yaml

This file was deleted.

Loading

0 comments on commit 19b5596

Please sign in to comment.