/*
 * Copyright (C) 2014 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

{
    "extends": "eslint:recommended",
    "env": {
        "browser": true,
        "worker": true,
        "es6": true,
    },
    "parserOptions": {
        "ecmaVersion": 2018,
    },
    "globals": {
        // Agents
        "AuditAgent": true,
        "ApplicationCacheAgent": true,
        "CSSAgent": true,
        "CPUProfilerAgent": true,
        "CanvasAgent": true,
        "ConsoleAgent": true,
        "DOMAgent": true,
        "DOMDebuggerAgent": true,
        "DOMStorageAgent": true,
        "DatabaseAgent": true,
        "DebuggerAgent": true,
        "HeapAgent": true,
        "IndexedDBAgent": true,
        "InspectorAgent": true,
        "LayerTreeAgent": true,
        "MemoryAgent": true,
        "NetworkAgent": true,
        "PageAgent": true,
        "RecordingAgent": true,
        "RuntimeAgent": true,
        "ScriptProfilerAgent": true,
        "ServiceWorkerAgent": true,
        "TargetAgent": true,
        "TimelineAgent": true,
        "WorkerAgent": true,

        // Namespace
        "WI": true,

        // WebInspector
        "AsyncTestSuite": true,
        "Debouncer": true,
        "Formatter": true,
        "FormatterContentBuilder": true,
        "FrontendTestHarness": true,
        "InspectorBackend": true,
        "InspectorBackendClass": true,
        "InspectorFrontendAPI": true,
        "InspectorFrontendHost": true,
        "InspectorProtocol": true,
        "InspectorTest": true,
        "LinkedList": true,
        "ListMultimap": true,
        "Multimap": true,
        "ProtocolTest": true,
        "ProtocolTestHarness": true,
        "SyncTestSuite": true,
        "TestHarness": true,
        "TestSuite": true,
        "Throttler": true,

        // Externals
        "CodeMirror": true,
        "THREE": true,
        "esprima": true,

        // Formatters
        "CSSFormatter": true,
        "ESTreeWalker": true,
        "EsprimaFormatter": true,
        "FormatterWorker": true,

        // Heap Snapshot
        "HeapSnapshot": true,
        "HeapSnapshotDiff": true,
        "HeapSnapshotWorker": true,

        // DOM
        "CSSPrimitiveValue": true,
        "Exception": true,
        "WebKitPoint": true,
        "SQLError": true,

        // Utilities
        "appendWebInspectorConsoleEvaluationSourceURL": true,
        "appendWebInspectorSourceURL": true,
        "blobAsText": true,
        "clamp": true,
        "doubleQuotedString": true,
        "ellipsis": true,
        "emDash": true,
        "enDash": true,
        "figureDash": true,
        "handlePromiseException": true,
        "insertionIndexForObjectInListSortedByFunction": true,
        "insertObjectIntoSortedArray": true,
        "isEmptyObject": true,
        "isEnterKey": true,
        "isFunctionStringNativeCode": true,
        "isTextLikelyMinified": true,
        "isWebInspectorConsoleEvaluationScript": true,
        "isWebInspectorInternalScript": true,
        "isWebKitInternalScript": true,
        "multiplicationSign": true,
        "parseMIMEType": true,
        "resolveDotsInPath": true,
        "simpleGlobStringToRegExp": true,
        "textToBlob": true,
        "timestamp": true,
        "zeroWidthSpace": true,

        // DOM Utilities
        "createSVGElement": true,

        // URL Utilities
        "absoluteURL": true,
        "decodeBase64ToBlob": true,
        "parseDataURL": true,
        "parseLocationQueryParameters": true,
        "parseQueryString": true,
        "parseSecurityOrigin": true,
        "parseURL": true,
        "relativePath": true,
        "removeURLFragment": true,

        // Formatter Utilities
        "isECMAScriptLineTerminator": true,
        "isECMAScriptWhitespace": true,

        // Debug
        "handleInternalException": true,

        // CodeMirror
        "createCodeMirrorColorTextMarkers": true,
        "createCodeMirrorCubicBezierTextMarkers": true,
        "createCodeMirrorGradientTextMarkers": true,
        "createCodeMirrorSpringTextMarkers": true,
    },
    "rules": {
        "array-bracket-spacing": [2, "never"],
        "block-spacing": [2, "always"],
        "comma-dangle": [2, "only-multiline"],
        "comma-spacing": [2, {"before": false, "after": true}],
        "comma-style": [2, "last"],
        "consistent-return": 2,
        "curly": 0,
        "dot-notation": 0,
        "eol-last": 2,
        "eqeqeq": 2,
        "func-call-spacing": [2, "never"],
        "key-spacing": [2, {"beforeColon": false, "afterColon": true}],
        "keyword-spacing": [2, {"before": true, "after": true}],
        "new-cap": 0,
        "new-parens": 0,
        "no-console": 0,
        "no-constant-condition": 0,
        "no-extra-bind": 2,
        "no-extra-parens": [2, "all", {"nestedBinaryExpressions": false}],
        "no-extra-semi": 2,
        "no-global-assign": 2,
        "no-inner-declarations": 0,
        "no-multi-spaces": 2,
        "no-new": 0,
        "no-proto": 0,
        "no-redeclare": 0,
        "no-return-assign": 2,
        "no-self-compare": 2,
        "no-shadow": 0,
        "no-trailing-spaces": 2,
        "no-undef": 2,
        "no-underscore-dangle": 0,
        "no-unused-expressions": 2,
        "no-unused-vars": [2, {"vars": "all", "args": "none"}],
        "no-use-before-define": 0,
        "object-curly-spacing": [2, "never"],
        "quotes": [2, "double"],
        "semi": 2,
        "semi-spacing": [2, {"before": false, "after": true}],
        "space-infix-ops": 2,
        "spaced-comment": [2, "always"],
        "strict": 0,
        "valid-typeof": 2,
    }
}
