# Copyright 2009 The Closure Compiler Authors.
#
# Licensed 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.

# Configuration options for the Parser.
#
# Allows us to update the allowed JSDoc annotations independently of the
# Compiler binary, so we can add new JSDoc annotations to old binaries.

# The version of the compiler that we're currently building.
# Should be formatted as:
# Version# (Revision XXX)
compiler.version = ${compiler.version}

# The datestamp of the compiler that we're currently building.
compiler.date = ${compiler.date}

# A comma-delimited list.
# Some of these are not used by JSCompiler, but appear in third-party JS code.
# http://usejsdoc.org/
# It's not strictly necessary for the natively-supported annotations to be
# listed here, but it's nice to have them all in one place.
jsdoc.annotations =\
    addon,\
    alias,\
    animations,\
    appliesMixin,\
    augments,\
    author,\
    base,\
    borrows,\
    bug,\
    channel, \
    class,\
    classdesc,\
    closurePrimitive,\
    codepen,\
    config,\
    consistentIdGenerator,\
    constructor,\
    constructs,\
    copyright,\
    default,\
    delegate,\
    demo,\
    deprecated,\
    desc,\
    description,\
    dict,\
    docsNotRequired,\
    docs-private,\
    element,\
    enhance,\
    enhanceable,\
    enum,\
    event,\
    eventOf,\
    eventType,\
    example,\
    exception,\
    exec,\
    export,\
    exportDoc,\
    exportInterface,\
    expose,\
    externs,\
    field,\
    file,\
    fires,\
    function,\
    global,\
    hassoydelcall,\
    hassoydeltemplate,\
    hideconstructor, \
    id,\
    idGenerator,\
    ignore,\
    inner,\
    instance,\
    kind,\
    lends,\
    link,\
    meaning,\
    member,\
    memberOf,\
    memberof,\
    method,\
    methodOf,\
    mixes,\
    mixin,\
    modName,\
    moddedBy,\
    model,\
    modifies,\
    mods,\
    module,\
    multiElement,\
    name,\
    namespace,\
    ngInject,\
    ngdoc,\
    noalias,\
    nocompile,\
    package,\
    param,\
    parent,\
    pintomodule,\
    preserveTry,\
    priority,\
    private,\
    property,\
    propertyOf,\
    protected,\
    provideGoog,\
    pseudoElement,\
    public,\
    readonly,\
    requirecss,\
    requires,\
    requireExtern,\
    restrict,\
    returns,\
    scope,\
    see,\
    since,\
    stableIdGenerator,\
    static,\
    struct,\
    summary,\
    supported,\
    this,\
    throws,\
    todo,\
    transaction,\
    tutorial,\
    type,\
    typedef,\
    typeSummary,\
    url,\
    usage,\
    version,\
    virtual,\
    visibility,\
    wizSupportsSymbolicLookup,\
    wizaction,\
    wizmodule

# Comma-delimited list of valid suppressions.
# This should be a subset of the list of DiagnosticGroups.
jsdoc.suppressions =\
    accessControls,\
    ambiguousFunctionDecl,\
    checkDebuggerStatement,\
    checkEventfulObjectDisposal,\
    checkPrototypalTypes,\
    checkRegExp,\
    checkTypes,\
    checkVars,\
    closureDepMethodUsageChecks,\
    const,\
    constantProperty,\
    deprecated,\
    duplicate,\
    es5Strict,\
    externsValidation,\
    extraProvide,\
    extraRequire,\
    fileoverviewTags,\
    globalThis,\
    googModuleExportNotAStatement,\
    invalidCasts,\
    legacyGoogScopeRequire,\
    lateProvide,\
    lintChecks,\
    messageConventions,\
    misplacedTypeAnnotation,\
    missingOverride, \
    missingPolyfill, \
    missingProperties,\
    missingProvide,\
    missingRequire,\
    missingReturn,\
    missingSourcesWarnings,\
    moduleLoad,\
    newCheckTypes,\
    newCheckTypesAllChecks,\
    nonStandardJsDocs,\
    polymer,\
    reportUnknownTypes,\
    strictCheckTypes,\
    strictMissingProperties,\
    strictModuleDepCheck,\
    strictPrimitiveOperators,\
    suspiciousCode,\
    transitionalSuspiciousCodeWarnings,\
    undefinedNames,\
    undefinedVars,\
    underscore,\
    unknownDefines,\
    unusedLocalVariables,\
    unusedPrivateMembers,\
    uselessCode,\
    visibility,\
    with

# A comma-delimited list of valid closure primitive ids.
# This correspond to the ClosurePrimitive enum once normalized (see ClosurePrimitive.fromStringId)
jsdoc.primitives =\
   asserts.fail,\
   asserts.matchesReturn,\
   asserts.truthy,\

# A comma-delimited list of reserved words that we should not rename variables
# to. Used when an extension is released that steps on globals.
# This prevents the compiler from renaming variables to these names, but not
# from allowing externs for these names.
#
# i,j - common loop variables often overwritten by browser extensions
# s – commonly defined by browser extensions when injecting scripts.
# $j,$ - common jquery aliases often overwritten by browser extensions
# o - overwritten by Norton Identity Protection's Chrome extension.
# ga,_gaq - global variable names used by Google Analytics.
# sun - May cause issues in older browsers with remnants of Java support.
# XR - extern added by the webXR platform API.
# TODO(tbreisacher): Remove 'ga' and '_gaq' if/when we enable
# --isolation_mode=IIFE by default.
compiler.reserved.vars = i,j,s,$,$j,o,ga,_gaq,sun,XR
