UNPKG

@asgardeo/auth-js

Version:

Asgardeo Auth JS SDK to be used in JavaScript and TypeScript applications.

299 lines (289 loc) 10.3 kB
/** * Copyright (c) 2022, WSO2 LLC. (https://www.wso2.com). All Rights Reserved. * * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ const fs = require("fs"); const path = require("path"); // Base ESLint Config which can be extended to be used in the development environment. const LICENSE_HEADER_PATTERN_OVERRIDE_FILE_NAME = "license-header-override.js"; const LINE_PADDING_RULES = [ 1, // Add a new line after const, let, var declarations. { blankLine: "always", next: "*", prev: [ "const", "let", "var" ] }, { blankLine: "any", next: [ "const", "let", "var" ], prev: [ "const", "let", "var" ] }, // Add a new line after directive declarations like `use strict` etc. { blankLine: "always", next: "*", prev: "directive" }, { blankLine: "any", next: "directive", prev: "directive" }, // Add a new line before return statements. { blankLine: "always", next: "return", prev: "*" }, // Add a new line try blocks. { blankLine: "always", next: "try", prev: "*" }, // Add a new line break statements. { blankLine: "always", next: "break", prev: "*" }, // Add a new line continue statements. { blankLine: "always", next: "continue", prev: "*" }, // Add a new line before exports. { blankLine: "always", next: "export", prev: "*" }, { blankLine: "any", next: "export", prev: "export" }, // Add a new line before for loops. { blankLine: "always", next: "for", prev: "*" }, // Add a new line before classes. { blankLine: "always", next: "class", prev: "*" }, // Add a new line after import statements. { blankLine: "always", next: "*", prev: "import" }, { blankLine: "any", next: "import", prev: "import" } ]; /** * Check if an override license header file is defined , if so, * return that else return the default license header pattern. * * @example * Here's a simple example of overriding the license header pattern.: * ``` * // create a `license-header-override.js` at the same level of `.eslintrc.js` * module.exports = [ * " * New Company.", " * Copyright 2022.", * ]; * ``` * * @returns License Header Pattern. */ const getLicenseHeaderPattern = () => { const LICENSE_HEADER_DEFAULT_PATTERN = [ "*", { pattern: " Copyright \\(c\\) \\d{4}, WSO2 LLC. \\(https://www.wso2.com\\). All Rights Reserved.", template: ` * Copyright (c) ${ new Date().getFullYear() }, WSO2 LLC. (https://www.wso2.com). All Rights Reserved.` }, " *", " * WSO2 LLC. licenses this file to you under the Apache License,", " * Version 2.0 (the \"License\"); you may not use this file except", " * in compliance with the License.", " * You may obtain a copy of the License at", " *", " * http://www.apache.org/licenses/LICENSE-2.0", " *", " * Unless required by applicable law or agreed to in writing,", " * software distributed under the License is distributed on an", " * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY", " * KIND, either express or implied. See the License for the", " * specific language governing permissions and limitations", " * under the License.", " " ]; if (!fs.existsSync(path.resolve(__dirname, LICENSE_HEADER_PATTERN_OVERRIDE_FILE_NAME))) { return LICENSE_HEADER_DEFAULT_PATTERN; } return require(path.resolve(__dirname, LICENSE_HEADER_PATTERN_OVERRIDE_FILE_NAME)); }; module.exports = { env: { browser: true, es6: true, jest: true, node: true }, extends: [ "eslint:recommended", "plugin:import/typescript" ], globals: { // no-undef complains about globalThis @see {@link https://github.com/eslint/eslint/issues/11553} globalThis: false }, overrides: [ { env: { browser: true, es6: true, node: true }, extends: [ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended" ], files: [ "**/*.tsx", "**/*.ts" ], parser: "@typescript-eslint/parser", parserOptions: { ecmaVersion: 9, sourceType: "module" }, rules: { "@typescript-eslint/ban-types": 1, "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/no-empty-function": [ "error", { allow: [ "constructors" ] } ], "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-unused-vars": [ "warn", { argsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", varsIgnorePattern: "^_" } ], "@typescript-eslint/no-use-before-define": [ "warn", { classes: false, functions: false, typedefs: false, variables: false } ], "@typescript-eslint/padding-line-between-statements": [ ...LINE_PADDING_RULES ], "@typescript-eslint/typedef": [ "warn", { "arrayDestructuring": false, "arrowParameter": true, "memberVariableDeclaration": true, "objectDestructuring": false, "parameter": true, "propertyDeclaration": true, "variableDeclaration": true, "variableDeclarationIgnoreFunction": true } ], "eol-last": "error", // In development, error level is set to `warn`. This will be overridden // by the production env linting config. "no-debugger": 1, // `no-undef` is discouraged in Typescript projects. // https://github.com/typescript-eslint/typescript-eslint/issues/2477#issuecomment-686892459 "no-undef": 0, "no-use-before-define": "off", "padding-line-between-statements": "off" } }, { "files": "*.json", "parser": "jsonc-eslint-parser", "rules": { "header/header": "off" } } ], parserOptions: { ecmaVersion: 9, sourceType: "module" }, plugins: [ "import", "eslint-plugin-tsdoc", "header" ], root: true, rules: { "array-bracket-spacing": [ 1, "always" ], "comma-dangle": [ "warn", "never" ], "eol-last": "error", "header/header": [ "warn", "block", getLicenseHeaderPattern() ], "import/order": [ "warn", { alphabetize: { caseInsensitive: true, order: "asc" }, groups: [ "builtin", "external", "index", "sibling", "parent", "internal" ] } ], indent: [ 1, 4, { SwitchCase: 1 } ], "lines-between-class-members": [ 1, "always", { exceptAfterSingleLine: true } ], "max-len": [ "warn", { code: 120 } ], "no-alert": 1, "no-console": "warn", "no-duplicate-imports": "warn", "no-restricted-imports": [ "error", { paths: [ { message: "Please use import foo from 'lodash-es/foo' instead.", name: "lodash" }, { message: "Avoid using chain since it is non tree-shakable. Try out flow instead.", name: "lodash-es/chain" }, { importNames: [ "chain" ], message: "Avoid using chain since it is non tree-shakable. Try out flow instead.", name: "lodash-es" }, { message: "Please use import foo from 'lodash-es/foo' instead.", name: "lodash-es" } ], patterns: [ "@wso2is/**/dist/**", "lodash/**", "lodash/fp/**" ] } ], "no-unreachable": "error", "object-curly-spacing": [ "warn", "always" ], "padding-line-between-statements": [ ...LINE_PADDING_RULES ], quotes: [ "warn", "double" ], semi: 1, "sort-imports": [ "warn", { ignoreCase: false, ignoreDeclarationSort: true, ignoreMemberSort: false } ], "sort-keys": [ "warn", "asc", { caseSensitive: true, minKeys: 2, natural: false } ], "tsdoc/syntax": "warn" } };