/**
 * @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 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: "@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/resize-observer-browser",
    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: "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-element",
    license: {
      name: "lit-element",
      type: LicenseTypes.Bsd3,
      packageLicenseFile: "LICENSE"
    },
  },
  {
    name: "lit-html",
    license: {
      name: "lit-html",
      type: LicenseTypes.Bsd3,
      packageLicenseFile: "LICENSE"
    },
  },
  {
    name: "tslib",
    license: {
      name: "tslib",
      type: LicenseTypes.BsdZeroClause,
      packageLicenseFile: "LICENSE.txt"
    },
    nonPackages: ["modules", "test/validateModuleExportsMatchCommonJS"],
  },
];

export default packages;
