/**
 * @license
 * Copyright (C) 2020 The Android Open Source Project
 *
 * 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.
 */

// Ugly import path due to the following bugs:
// https://github.com/bazelbuild/rules_nodejs/issues/1522
// https://github.com/bazelbuild/rules_nodejs/issues/1380
import {PackageInfo, LicenseType, LicenseInfo} from "../../../tools/node_tools/node_modules_licenses/package-license-info";
import * as path from "path";

class LicenseTypes {
  public static Mit: LicenseType = {
    name: "MIT",
    allowed: true
  };
  public static Apache2_0: LicenseType = {
    name: "Apache 2.0",
    allowed: true
  };

  public static Bsd3: LicenseType = {
    name: "BSD-3-Clause",
    allowed: true
  };

  public static BsdZeroClause: LicenseType = {
    name: "BSD-Zero-Clause",
    allowed: true
  };
}

/** List of licenses texts. Add the licenses here if there is no text file with license
 * in package. For details - see comments for {@link LicenseInfo} and {@link PackageInfo} */
class SharedLicenses {
  public static Lit: LicenseInfo = {
    name: "Lit",
    type: LicenseTypes.Bsd3,
    sharedLicenseFile: "lit.txt",
  };

  public static Polymer2014: LicenseInfo = {
    name: "Polymer-2014",
    type: LicenseTypes.Bsd3,
    sharedLicenseFile: "polymer-2014.txt",
  };

  public static Polymer2015: LicenseInfo = {
    name: "Polymer-2015",
    type: LicenseTypes.Bsd3,
    sharedLicenseFile: "polymer-2015.txt",
  };

  public static Polymer2016: LicenseInfo = {
    name: "Polymer-2016",
    type: LicenseTypes.Bsd3,
    sharedLicenseFile: "polymer-2016.txt",
  };

  public static Polymer2017: LicenseInfo = {
    name: "Polymer-2017",
    type: LicenseTypes.Bsd3,
    sharedLicenseFile: "polymer-2017.txt",
  };

  public static Polymer2018: LicenseInfo = {
    name: "Polymer-2018",
    type: LicenseTypes.Bsd3,
    sharedLicenseFile: "polymer-2018.txt",
  };

  public static IsArray: LicenseInfo = {
    name: "isarray",
    type: LicenseTypes.Mit,
    sharedLicenseFile: "isarray.txt"
  };

  public static Page: LicenseInfo = {
    name: "page",
    type: LicenseTypes.Mit,
    sharedLicenseFile: "page.txt"
  }
}

const fontsRobotoFilter = (fileName: string) =>
    fileName.startsWith("fonts/roboto/") && path.basename(fileName) !== "DESCRIPTION.en_us.html";

const fontsRobotomonoFilter = (fileName: string) =>
    fileName.startsWith("fonts/robotomono/") && path.basename(fileName) !== "DESCRIPTION.en_us.html";


const packages: PackageInfo[] = [
  {
    name: "@lit/reactive-element",
    license: SharedLicenses.Lit,
  },
  {
    name: "@polymer/decorators",
    license: SharedLicenses.Polymer2017,
  },
  {
    name: "@polymer/font-roboto",
    license: SharedLicenses.Polymer2015,
  },
  {
    name: "@polymer/font-roboto-local",
    license: SharedLicenses.Polymer2015,
    filesFilter: fileName => !fontsRobotoFilter(fileName) && !fontsRobotomonoFilter(fileName)
  },
  {
    name: "@polymer/font-roboto-local",
    license: {
      name: "font-roboto-local-fonts-roboto",
      type: LicenseTypes.Apache2_0,
      packageLicenseFile: "fonts/roboto/LICENSE.txt"
    },
    filesFilter: fontsRobotoFilter
  },
  {
    name: "@polymer/font-roboto-local",
    license: {
      name: "font-roboto-local-fonts-robotomono",
      type: LicenseTypes.Apache2_0,
      packageLicenseFile: "fonts/robotomono/LICENSE.txt"
    },
    filesFilter: fontsRobotomonoFilter
  },
  {
    name: "@polymer/iron-a11y-announcer",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-a11y-keys-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-autogrow-textarea",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-behaviors",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-checked-element-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-dropdown",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-fit-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-flex-layout",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-form-element-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-icon",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-iconset-svg",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-image",
    license: SharedLicenses.Polymer2016
  },
  {
    name: "@polymer/iron-input",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-menu-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-meta",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-overlay-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-resizable-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-selector",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/iron-validatable-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/neon-animation",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-behaviors",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-button",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-card",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-checkbox",
    license: SharedLicenses.Polymer2016
  },
  {
    name: "@polymer/paper-dialog",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-dialog-behavior",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-dialog-scrollable",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-dropdown-menu",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-fab",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-icon-button",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-input",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-item",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-listbox",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-menu-button",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-ripple",
    license: SharedLicenses.Polymer2014
  },
  {
    name: "@polymer/paper-styles",
    license: SharedLicenses.Polymer2014
  },
  {
    name: "@polymer/paper-tabs",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-toggle-button",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/paper-tooltip",
    license: SharedLicenses.Polymer2015
  },
  {
    name: "@polymer/polymer",
    license: SharedLicenses.Polymer2017
  },
  {
    name: "@types/resemblejs",
    license: {
      name: 'DefinitelyTyped',
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE"
    }
  },
  {
    name: "@types/resize-observer-browser",
    license: {
      name: 'DefinitelyTyped',
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE"
    }
  },
  {
    name: "@types/trusted-types",
    license: {
      name: 'DefinitelyTyped',
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE"
    }
  },
  {
    name: "@webcomponents/shadycss",
    license: SharedLicenses.Polymer2017
  },
  {
    name: "@webcomponents/webcomponentsjs",
    license: SharedLicenses.Polymer2018
  },
  {
    name: "ba-linkify",
    license: {
      name: "ba-linkify",
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE-MIT",
    }
  },
  {
    name: "codemirror-minified",
    license: {
      name: "codemirror-minified",
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE",
    }
  },
  {
    name: "isarray",
    license: SharedLicenses.IsArray
  },
  {
    name: "page",
    license: SharedLicenses.Page
  },
  {
    name: "shadow-selection-polyfill",
    license: {
      name: "shadow-selection-polyfill",
      type: LicenseTypes.Apache2_0,
      packageLicenseFile: "LICENSE"
    }
  },
  {
    name: "path-to-regexp",
    license: {
      name: "path-to-regexp",
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE"
    }
  },
  {
    name: "polymer-resin",
    license: SharedLicenses.Polymer2018
  },
  {
    name: "polymer-bridges",
    license: SharedLicenses.Polymer2018
  },
  {
    name: "rxjs",
    license: {
      name: "rxjs",
      type: LicenseTypes.Apache2_0,
      packageLicenseFile: "LICENSE.txt"
    },
    // The following directories are not real packages, but contains package.json
    nonPackages: [
      "ajax", "fetch", "internal-compatibility", "operators", "testing",
      "webSocket", "src/ajax", "src/fetch", "src/internal-compatibility",
      "src/operators", "src/testing", "src/webSocket"],
  },
  {
    name: "lit",
    license: SharedLicenses.Lit,
  },
  {
    name: "lit-element",
    license: SharedLicenses.Lit,
  },
  {
    name: "lit-html",
    license: SharedLicenses.Lit,
  },
  {
    name: "tslib",
    license: {
      name: "tslib",
      type: LicenseTypes.BsdZeroClause,
      packageLicenseFile: "LICENSE.txt"
    },
    nonPackages: ["modules", "test/validateModuleExportsMatchCommonJS"],
  },
  {
    name: "resemblejs",
    license: {
      name: "resemblejs",
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE",
    }
  },
  {
    name: "immer",
    license: {
      name: "immer",
      type: LicenseTypes.Mit,
      packageLicenseFile: "LICENSE",
    }
  }
];

export default packages;
