From 3d22a5404dde4e9ae67ce8cd3a79b06b742155f8 Mon Sep 17 00:00:00 2001 From: zmagod Date: Thu, 26 Oct 2017 16:59:00 +0200 Subject: [PATCH 01/17] add scenic gem, teams datatables sql view --- Gemfile | 1 + Gemfile.lock | 4 + .../client_api/teams/teams_controller.rb | 3 +- app/models/datatables/datatables_team.rb | 12 + app/models/user.rb | 1 + .../client_api/teams/index.json.jbuilder | 15 +- .../20171026090804_create_datatables_teams.rb | 5 + db/schema.rb | 1261 ++++++++--------- db/views/datatables_teams_v01.sql | 13 + spec/factories/my_module_groups.rb | 1 - spec/models/datatables/teams_spec.rb | 22 + spec/models/my_module_group_spec.rb | 3 - spec/spec_helper.rb | 1 + 13 files changed, 693 insertions(+), 649 deletions(-) create mode 100644 app/models/datatables/datatables_team.rb create mode 100644 db/migrate/20171026090804_create_datatables_teams.rb create mode 100644 db/views/datatables_teams_v01.sql create mode 100644 spec/models/datatables/teams_spec.rb diff --git a/Gemfile b/Gemfile index 85ecc1e71..dd8756746 100644 --- a/Gemfile +++ b/Gemfile @@ -66,6 +66,7 @@ gem 'delayed_paperclip', gem 'rubyzip' gem 'jbuilder' # JSON structures via a Builder-style DSL gem 'activerecord-import' +gem 'scenic', '~> 1.4' gem 'paperclip', '~> 5.1' # File attachment, image attachment library gem 'aws-sdk', '~> 2' diff --git a/Gemfile.lock b/Gemfile.lock index dcd6bd846..bfc9e85da 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -415,6 +415,9 @@ GEM sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) + scenic (1.4.0) + activerecord (>= 4.0.0) + railties (>= 4.0.0) scss_lint (0.55.0) rake (>= 0.9, < 13) sass (~> 3.4.20) @@ -562,6 +565,7 @@ DEPENDENCIES rubyzip sanitize (~> 4.4) sass-rails (~> 5.0.6) + scenic (~> 1.4) scss_lint sdoc (~> 0.4.0) selenium-webdriver diff --git a/app/controllers/client_api/teams/teams_controller.rb b/app/controllers/client_api/teams/teams_controller.rb index 9d3fdfc02..d19e2bb9d 100644 --- a/app/controllers/client_api/teams/teams_controller.rb +++ b/app/controllers/client_api/teams/teams_controller.rb @@ -4,8 +4,9 @@ module ClientApi include ClientApi::Users::UserTeamsHelper def index + teams = current_user.datatables_teams success_response(template: '/client_api/teams/index', - locals: { teams: current_user.teams_data }) + locals: { teams: teams }) end def create diff --git a/app/models/datatables/datatables_team.rb b/app/models/datatables/datatables_team.rb new file mode 100644 index 000000000..58739af9d --- /dev/null +++ b/app/models/datatables/datatables_team.rb @@ -0,0 +1,12 @@ +module Datatables + class DatatablesTeam < ApplicationRecord + belongs_to :user + private + + # this isn't strictly necessary, but it will prevent + # rails from calling save, which would fail anyway. + def readonly? + true + end + end +end diff --git a/app/models/user.rb b/app/models/user.rb index 9cf7543df..a71afc1a2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -198,6 +198,7 @@ class User < ApplicationRecord has_many :user_notifications, inverse_of: :user has_many :notifications, through: :user_notifications has_many :zip_exports, inverse_of: :user, dependent: :destroy + has_many :datatables_teams, class_name: '::Datatables::DatatablesTeam' # If other errors besides parameter "avatar" exist, # they will propagate to "avatar" also, so remove them diff --git a/app/views/client_api/teams/index.json.jbuilder b/app/views/client_api/teams/index.json.jbuilder index f6958099d..245b1acb4 100644 --- a/app/views/client_api/teams/index.json.jbuilder +++ b/app/views/client_api/teams/index.json.jbuilder @@ -1,11 +1,10 @@ json.teams do - json.collection teams do |team| - json.id team.fetch('id') - json.name team.fetch('name') - json.members team.fetch('members') - json.role retrive_role_name(team.fetch('role') { nil }) - json.current_team team.fetch('current_team') - json.can_be_leaved team.fetch('can_be_leaved') - json.user_team_id team.fetch('user_team_id') + json.array teams do |team| + json.id team.id + json.name team.name + json.members team.members + json.role retrive_role_name(team.role) + json.can_be_leaved team.can_be_leaved + json.user_team_id team.user_team_id end end diff --git a/db/migrate/20171026090804_create_datatables_teams.rb b/db/migrate/20171026090804_create_datatables_teams.rb new file mode 100644 index 000000000..1aa9b0f19 --- /dev/null +++ b/db/migrate/20171026090804_create_datatables_teams.rb @@ -0,0 +1,5 @@ +class CreateDatatablesTeams < ActiveRecord::Migration[5.0] + def change + create_view :datatables_teams + end +end diff --git a/db/schema.rb b/db/schema.rb index 6046e0877..27ee1c37b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,4 +1,3 @@ -# encoding: UTF-8 # This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. @@ -11,802 +10,774 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170515141252) do +ActiveRecord::Schema.define(version: 20171026090804) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" enable_extension "pg_trgm" enable_extension "btree_gist" - create_table "activities", force: :cascade do |t| - t.integer "my_module_id" - t.integer "user_id" - t.integer "type_of", null: false - t.string "message", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "project_id", null: false - t.integer "experiment_id" + create_table "activities", id: :serial, force: :cascade do |t| + t.integer "my_module_id" + t.integer "user_id" + t.integer "type_of", null: false + t.string "message", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "project_id", null: false + t.integer "experiment_id" + t.index ["created_at"], name: "index_activities_on_created_at" + t.index ["experiment_id"], name: "index_activities_on_experiment_id" + t.index ["my_module_id"], name: "index_activities_on_my_module_id" + t.index ["project_id"], name: "index_activities_on_project_id" + t.index ["type_of"], name: "index_activities_on_type_of" + t.index ["user_id"], name: "index_activities_on_user_id" end - add_index "activities", ["created_at"], name: "index_activities_on_created_at", using: :btree - add_index "activities", ["experiment_id"], name: "index_activities_on_experiment_id", using: :btree - add_index "activities", ["my_module_id"], name: "index_activities_on_my_module_id", using: :btree - add_index "activities", ["project_id"], name: "index_activities_on_project_id", using: :btree - add_index "activities", ["type_of"], name: "index_activities_on_type_of", using: :btree - add_index "activities", ["user_id"], name: "index_activities_on_user_id", using: :btree - - create_table "asset_text_data", force: :cascade do |t| - t.text "data", null: false - t.integer "asset_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "asset_text_data", id: :serial, force: :cascade do |t| + t.text "data", null: false + t.integer "asset_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.tsvector "data_vector" + t.index ["asset_id"], name: "index_asset_text_data_on_asset_id", unique: true + t.index ["data_vector"], name: "index_asset_text_data_on_data_vector", using: :gin end - add_index "asset_text_data", ["asset_id"], name: "index_asset_text_data_on_asset_id", unique: true, using: :btree - add_index "asset_text_data", ["data_vector"], name: "index_asset_text_data_on_data_vector", using: :gin - - create_table "assets", force: :cascade do |t| - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "file_file_name" - t.string "file_content_type" - t.integer "file_file_size" + create_table "assets", id: :serial, force: :cascade do |t| + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "file_file_name" + t.string "file_content_type" + t.integer "file_file_size" t.datetime "file_updated_at" - t.integer "created_by_id" - t.integer "last_modified_by_id" - t.integer "estimated_size", default: 0, null: false - t.boolean "file_present", default: false, null: false - t.string "lock", limit: 1024 - t.integer "lock_ttl" - t.integer "version", default: 1 - t.boolean "file_processing" - t.integer "team_id" + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.integer "estimated_size", default: 0, null: false + t.boolean "file_present", default: false, null: false + t.string "lock", limit: 1024 + t.integer "lock_ttl" + t.integer "version", default: 1 + t.boolean "file_processing" + t.integer "team_id" + t.index "trim_html_tags((file_file_name)::text) gin_trgm_ops", name: "index_assets_on_file_file_name", using: :gin + t.index ["created_at"], name: "index_assets_on_created_at" + t.index ["created_by_id"], name: "index_assets_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_assets_on_last_modified_by_id" + t.index ["team_id"], name: "index_assets_on_team_id" end - add_index "assets", ["created_at"], name: "index_assets_on_created_at", using: :btree - add_index "assets", ["created_by_id"], name: "index_assets_on_created_by_id", using: :btree - add_index "assets", ["last_modified_by_id"], name: "index_assets_on_last_modified_by_id", using: :btree - add_index "assets", ["team_id"], name: "index_assets_on_team_id", using: :btree - - create_table "checklist_items", force: :cascade do |t| - t.string "text", null: false - t.boolean "checked", default: false, null: false - t.integer "checklist_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "created_by_id" - t.integer "last_modified_by_id" - t.integer "position" + create_table "checklist_items", id: :serial, force: :cascade do |t| + t.string "text", null: false + t.boolean "checked", default: false, null: false + t.integer "checklist_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.integer "position" + t.index "trim_html_tags((text)::text) gin_trgm_ops", name: "index_checklist_items_on_text", using: :gin + t.index ["checklist_id"], name: "index_checklist_items_on_checklist_id" + t.index ["created_by_id"], name: "index_checklist_items_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_checklist_items_on_last_modified_by_id" end - add_index "checklist_items", ["checklist_id"], name: "index_checklist_items_on_checklist_id", using: :btree - add_index "checklist_items", ["created_by_id"], name: "index_checklist_items_on_created_by_id", using: :btree - add_index "checklist_items", ["last_modified_by_id"], name: "index_checklist_items_on_last_modified_by_id", using: :btree - - create_table "checklists", force: :cascade do |t| - t.string "name", null: false - t.integer "step_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "created_by_id" - t.integer "last_modified_by_id" + create_table "checklists", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.integer "step_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_checklists_on_name", using: :gin + t.index ["created_by_id"], name: "index_checklists_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_checklists_on_last_modified_by_id" + t.index ["step_id"], name: "index_checklists_on_step_id" end - add_index "checklists", ["created_by_id"], name: "index_checklists_on_created_by_id", using: :btree - add_index "checklists", ["last_modified_by_id"], name: "index_checklists_on_last_modified_by_id", using: :btree - add_index "checklists", ["step_id"], name: "index_checklists_on_step_id", using: :btree - - create_table "comments", force: :cascade do |t| - t.string "message", null: false - t.integer "user_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "last_modified_by_id" - t.string "type" - t.integer "associated_id" + create_table "comments", id: :serial, force: :cascade do |t| + t.string "message", null: false + t.integer "user_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "last_modified_by_id" + t.string "type" + t.integer "associated_id" + t.index "trim_html_tags((message)::text) gin_trgm_ops", name: "index_comments_on_message", using: :gin + t.index ["associated_id"], name: "index_comments_on_associated_id" + t.index ["created_at"], name: "index_comments_on_created_at" + t.index ["last_modified_by_id"], name: "index_comments_on_last_modified_by_id" + t.index ["type"], name: "index_comments_on_type" + t.index ["user_id"], name: "index_comments_on_user_id" end - add_index "comments", ["associated_id"], name: "index_comments_on_associated_id", using: :btree - add_index "comments", ["created_at"], name: "index_comments_on_created_at", using: :btree - add_index "comments", ["last_modified_by_id"], name: "index_comments_on_last_modified_by_id", using: :btree - add_index "comments", ["type"], name: "index_comments_on_type", using: :btree - add_index "comments", ["user_id"], name: "index_comments_on_user_id", using: :btree - - create_table "connections", force: :cascade do |t| - t.integer "input_id", null: false + create_table "connections", id: :serial, force: :cascade do |t| + t.integer "input_id", null: false t.integer "output_id", null: false + t.index ["input_id"], name: "index_connections_on_input_id" + t.index ["output_id"], name: "index_connections_on_output_id" end - create_table "custom_fields", force: :cascade do |t| - t.string "name", null: false - t.integer "user_id", null: false - t.integer "team_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "last_modified_by_id" + create_table "custom_fields", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.integer "user_id", null: false + t.integer "team_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "last_modified_by_id" + t.index ["last_modified_by_id"], name: "index_custom_fields_on_last_modified_by_id" + t.index ["team_id"], name: "index_custom_fields_on_team_id" + t.index ["user_id"], name: "index_custom_fields_on_user_id" end - add_index "custom_fields", ["last_modified_by_id"], name: "index_custom_fields_on_last_modified_by_id", using: :btree - add_index "custom_fields", ["team_id"], name: "index_custom_fields_on_team_id", using: :btree - add_index "custom_fields", ["user_id"], name: "index_custom_fields_on_user_id", using: :btree - - create_table "delayed_jobs", force: :cascade do |t| - t.integer "priority", default: 0, null: false - t.integer "attempts", default: 0, null: false - t.text "handler", null: false - t.text "last_error" + create_table "delayed_jobs", id: :serial, force: :cascade do |t| + t.integer "priority", default: 0, null: false + t.integer "attempts", default: 0, null: false + t.text "handler", null: false + t.text "last_error" t.datetime "run_at" t.datetime "locked_at" t.datetime "failed_at" - t.string "locked_by" - t.string "queue" + t.string "locked_by" + t.string "queue" t.datetime "created_at" t.datetime "updated_at" + t.index ["priority", "run_at"], name: "delayed_jobs_priority" + t.index ["queue"], name: "delayed_jobs_queue" end - add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree - add_index "delayed_jobs", ["queue"], name: "delayed_jobs_queue", using: :btree - - create_table "experiments", force: :cascade do |t| - t.string "name", null: false - t.text "description" - t.integer "project_id", null: false - t.integer "created_by_id", null: false - t.integer "last_modified_by_id", null: false - t.boolean "archived", default: false, null: false - t.integer "archived_by_id" + create_table "experiments", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.text "description" + t.integer "project_id", null: false + t.integer "created_by_id", null: false + t.integer "last_modified_by_id", null: false + t.boolean "archived", default: false, null: false + t.integer "archived_by_id" t.datetime "archived_on" - t.integer "restored_by_id" + t.integer "restored_by_id" t.datetime "restored_on" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "workflowimg_file_name" - t.string "workflowimg_content_type" - t.integer "workflowimg_file_size" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "workflowimg_file_name" + t.string "workflowimg_content_type" + t.integer "workflowimg_file_size" t.datetime "workflowimg_updated_at" + t.index ["archived_by_id"], name: "index_experiments_on_archived_by_id" + t.index ["created_by_id"], name: "index_experiments_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id" + t.index ["name"], name: "index_experiments_on_name" + t.index ["project_id"], name: "index_experiments_on_project_id" + t.index ["restored_by_id"], name: "index_experiments_on_restored_by_id" end - add_index "experiments", ["archived_by_id"], name: "index_experiments_on_archived_by_id", using: :btree - add_index "experiments", ["created_by_id"], name: "index_experiments_on_created_by_id", using: :btree - add_index "experiments", ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id", using: :btree - add_index "experiments", ["name"], name: "index_experiments_on_name", using: :btree - add_index "experiments", ["project_id"], name: "index_experiments_on_project_id", using: :btree - add_index "experiments", ["restored_by_id"], name: "index_experiments_on_restored_by_id", using: :btree - - create_table "my_module_groups", force: :cascade do |t| - t.string "name", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "created_by_id" - t.integer "experiment_id", default: 0, null: false + create_table "my_module_groups", id: :serial, force: :cascade do |t| + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "created_by_id" + t.integer "experiment_id", default: 0, null: false + t.index ["created_by_id"], name: "index_my_module_groups_on_created_by_id" + t.index ["experiment_id"], name: "index_my_module_groups_on_experiment_id" end - add_index "my_module_groups", ["created_by_id"], name: "index_my_module_groups_on_created_by_id", using: :btree - add_index "my_module_groups", ["experiment_id"], name: "index_my_module_groups_on_experiment_id", using: :btree - - create_table "my_module_repository_rows", force: :cascade do |t| - t.integer "repository_row_id", null: false - t.integer "my_module_id" - t.integer "assigned_by_id", null: false + create_table "my_module_repository_rows", id: :serial, force: :cascade do |t| + t.integer "repository_row_id", null: false + t.integer "my_module_id" + t.integer "assigned_by_id", null: false t.datetime "created_at" t.datetime "updated_at" + t.index ["my_module_id", "repository_row_id"], name: "index_my_module_ids_repository_row_ids" + t.index ["repository_row_id"], name: "index_my_module_repository_rows_on_repository_row_id" end - add_index "my_module_repository_rows", ["my_module_id", "repository_row_id"], name: "index_my_module_ids_repository_row_ids", using: :btree - add_index "my_module_repository_rows", ["repository_row_id"], name: "index_my_module_repository_rows_on_repository_row_id", using: :btree - - create_table "my_module_tags", force: :cascade do |t| + create_table "my_module_tags", id: :serial, force: :cascade do |t| t.integer "my_module_id" t.integer "tag_id" t.integer "created_by_id" + t.index ["created_by_id"], name: "index_my_module_tags_on_created_by_id" + t.index ["my_module_id"], name: "index_my_module_tags_on_my_module_id" + t.index ["tag_id"], name: "index_my_module_tags_on_tag_id" end - add_index "my_module_tags", ["created_by_id"], name: "index_my_module_tags_on_created_by_id", using: :btree - add_index "my_module_tags", ["my_module_id"], name: "index_my_module_tags_on_my_module_id", using: :btree - add_index "my_module_tags", ["tag_id"], name: "index_my_module_tags_on_tag_id", using: :btree - - create_table "my_modules", force: :cascade do |t| - t.string "name", null: false + create_table "my_modules", id: :serial, force: :cascade do |t| + t.string "name", null: false t.datetime "due_date" - t.string "description" - t.integer "x", default: 0, null: false - t.integer "y", default: 0, null: false - t.integer "my_module_group_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "archived", default: false, null: false + t.string "description" + t.integer "x", default: 0, null: false + t.integer "y", default: 0, null: false + t.integer "my_module_group_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "archived", default: false, null: false t.datetime "archived_on" - t.integer "created_by_id" - t.integer "last_modified_by_id" - t.integer "archived_by_id" - t.integer "restored_by_id" + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.integer "archived_by_id" + t.integer "restored_by_id" t.datetime "restored_on" - t.integer "nr_of_assigned_samples", default: 0 - t.integer "workflow_order", default: -1, null: false - t.integer "experiment_id", default: 0, null: false - t.integer "state", limit: 2, default: 0 + t.integer "nr_of_assigned_samples", default: 0 + t.integer "workflow_order", default: -1, null: false + t.integer "experiment_id", default: 0, null: false + t.integer "state", limit: 2, default: 0 t.datetime "completed_on" + t.index "trim_html_tags((description)::text) gin_trgm_ops", name: "index_my_modules_on_description", using: :gin + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_my_modules_on_name", using: :gin + t.index ["archived_by_id"], name: "index_my_modules_on_archived_by_id" + t.index ["created_by_id"], name: "index_my_modules_on_created_by_id" + t.index ["experiment_id"], name: "index_my_modules_on_experiment_id" + t.index ["last_modified_by_id"], name: "index_my_modules_on_last_modified_by_id" + t.index ["my_module_group_id"], name: "index_my_modules_on_my_module_group_id" + t.index ["restored_by_id"], name: "index_my_modules_on_restored_by_id" end - add_index "my_modules", ["archived_by_id"], name: "index_my_modules_on_archived_by_id", using: :btree - add_index "my_modules", ["created_by_id"], name: "index_my_modules_on_created_by_id", using: :btree - add_index "my_modules", ["experiment_id"], name: "index_my_modules_on_experiment_id", using: :btree - add_index "my_modules", ["last_modified_by_id"], name: "index_my_modules_on_last_modified_by_id", using: :btree - add_index "my_modules", ["my_module_group_id"], name: "index_my_modules_on_my_module_group_id", using: :btree - add_index "my_modules", ["restored_by_id"], name: "index_my_modules_on_restored_by_id", using: :btree - - create_table "notifications", force: :cascade do |t| - t.string "title" - t.string "message" - t.integer "type_of", null: false - t.integer "generator_user_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "notifications", id: :serial, force: :cascade do |t| + t.string "title" + t.string "message" + t.integer "type_of", null: false + t.integer "generator_user_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["created_at"], name: "index_notifications_on_created_at" end - add_index "notifications", ["created_at"], name: "index_notifications_on_created_at", using: :btree - - create_table "projects", force: :cascade do |t| - t.string "name", null: false - t.integer "visibility", default: 0, null: false + create_table "projects", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.integer "visibility", default: 0, null: false t.datetime "due_date" - t.integer "team_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "archived", default: false, null: false + t.integer "team_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "archived", default: false, null: false t.datetime "archived_on" - t.integer "created_by_id" - t.integer "last_modified_by_id" - t.integer "archived_by_id" - t.integer "restored_by_id" + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.integer "archived_by_id" + t.integer "restored_by_id" t.datetime "restored_on" - t.string "experiments_order" + t.string "experiments_order" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_projects_on_name", using: :gin + t.index ["archived_by_id"], name: "index_projects_on_archived_by_id" + t.index ["created_by_id"], name: "index_projects_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_projects_on_last_modified_by_id" + t.index ["restored_by_id"], name: "index_projects_on_restored_by_id" + t.index ["team_id"], name: "index_projects_on_team_id" end - add_index "projects", ["archived_by_id"], name: "index_projects_on_archived_by_id", using: :btree - add_index "projects", ["created_by_id"], name: "index_projects_on_created_by_id", using: :btree - add_index "projects", ["last_modified_by_id"], name: "index_projects_on_last_modified_by_id", using: :btree - add_index "projects", ["restored_by_id"], name: "index_projects_on_restored_by_id", using: :btree - add_index "projects", ["team_id"], name: "index_projects_on_team_id", using: :btree - - create_table "protocol_keywords", force: :cascade do |t| - t.string "name" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "nr_of_protocols", default: 0 - t.integer "team_id", null: false + create_table "protocol_keywords", id: :serial, force: :cascade do |t| + t.string "name" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "nr_of_protocols", default: 0 + t.integer "team_id", null: false + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_protocol_keywords_on_name", using: :gin + t.index ["team_id"], name: "index_protocol_keywords_on_team_id" end - add_index "protocol_keywords", ["team_id"], name: "index_protocol_keywords_on_team_id", using: :btree - - create_table "protocol_protocol_keywords", force: :cascade do |t| - t.integer "protocol_id", null: false + create_table "protocol_protocol_keywords", id: :serial, force: :cascade do |t| + t.integer "protocol_id", null: false t.integer "protocol_keyword_id", null: false + t.index ["protocol_id"], name: "index_protocol_protocol_keywords_on_protocol_id" + t.index ["protocol_keyword_id"], name: "index_protocol_protocol_keywords_on_protocol_keyword_id" end - add_index "protocol_protocol_keywords", ["protocol_id"], name: "index_protocol_protocol_keywords_on_protocol_id", using: :btree - add_index "protocol_protocol_keywords", ["protocol_keyword_id"], name: "index_protocol_protocol_keywords_on_protocol_keyword_id", using: :btree - - create_table "protocols", force: :cascade do |t| - t.string "name" - t.text "authors" - t.text "description" - t.integer "added_by_id" - t.integer "my_module_id" - t.integer "team_id", null: false - t.integer "protocol_type", default: 0, null: false - t.integer "parent_id" + create_table "protocols", id: :serial, force: :cascade do |t| + t.string "name" + t.text "authors" + t.text "description" + t.integer "added_by_id" + t.integer "my_module_id" + t.integer "team_id", null: false + t.integer "protocol_type", default: 0, null: false + t.integer "parent_id" t.datetime "parent_updated_at" - t.integer "archived_by_id" + t.integer "archived_by_id" t.datetime "archived_on" - t.integer "restored_by_id" + t.integer "restored_by_id" t.datetime "restored_on" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.datetime "published_on" - t.integer "nr_of_linked_children", default: 0 + t.integer "nr_of_linked_children", default: 0 + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_protocols_on_name", using: :gin + t.index "trim_html_tags(authors) gin_trgm_ops", name: "index_protocols_on_authors", using: :gin + t.index "trim_html_tags(description) gin_trgm_ops", name: "index_protocols_on_description", using: :gin + t.index ["added_by_id"], name: "index_protocols_on_added_by_id" + t.index ["archived_by_id"], name: "index_protocols_on_archived_by_id" + t.index ["my_module_id"], name: "index_protocols_on_my_module_id" + t.index ["parent_id"], name: "index_protocols_on_parent_id" + t.index ["protocol_type"], name: "index_protocols_on_protocol_type" + t.index ["restored_by_id"], name: "index_protocols_on_restored_by_id" + t.index ["team_id"], name: "index_protocols_on_team_id" end - add_index "protocols", ["added_by_id"], name: "index_protocols_on_added_by_id", using: :btree - add_index "protocols", ["archived_by_id"], name: "index_protocols_on_archived_by_id", using: :btree - add_index "protocols", ["my_module_id"], name: "index_protocols_on_my_module_id", using: :btree - add_index "protocols", ["parent_id"], name: "index_protocols_on_parent_id", using: :btree - add_index "protocols", ["protocol_type"], name: "index_protocols_on_protocol_type", using: :btree - add_index "protocols", ["restored_by_id"], name: "index_protocols_on_restored_by_id", using: :btree - add_index "protocols", ["team_id"], name: "index_protocols_on_team_id", using: :btree - - create_table "report_elements", force: :cascade do |t| - t.integer "position", null: false - t.integer "type_of", null: false - t.integer "sort_order", default: 0 - t.integer "report_id" - t.integer "parent_id" - t.integer "project_id" - t.integer "my_module_id" - t.integer "step_id" - t.integer "result_id" - t.integer "checklist_id" - t.integer "asset_id" - t.integer "table_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "experiment_id" - t.integer "repository_id" + create_table "report_elements", id: :serial, force: :cascade do |t| + t.integer "position", null: false + t.integer "type_of", null: false + t.integer "sort_order", default: 0 + t.integer "report_id" + t.integer "parent_id" + t.integer "project_id" + t.integer "my_module_id" + t.integer "step_id" + t.integer "result_id" + t.integer "checklist_id" + t.integer "asset_id" + t.integer "table_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "experiment_id" + t.integer "repository_id" + t.index ["asset_id"], name: "index_report_elements_on_asset_id" + t.index ["checklist_id"], name: "index_report_elements_on_checklist_id" + t.index ["experiment_id"], name: "index_report_elements_on_experiment_id" + t.index ["my_module_id"], name: "index_report_elements_on_my_module_id" + t.index ["parent_id"], name: "index_report_elements_on_parent_id" + t.index ["project_id"], name: "index_report_elements_on_project_id" + t.index ["report_id"], name: "index_report_elements_on_report_id" + t.index ["repository_id"], name: "index_report_elements_on_repository_id" + t.index ["result_id"], name: "index_report_elements_on_result_id" + t.index ["step_id"], name: "index_report_elements_on_step_id" + t.index ["table_id"], name: "index_report_elements_on_table_id" end - add_index "report_elements", ["asset_id"], name: "index_report_elements_on_asset_id", using: :btree - add_index "report_elements", ["checklist_id"], name: "index_report_elements_on_checklist_id", using: :btree - add_index "report_elements", ["experiment_id"], name: "index_report_elements_on_experiment_id", using: :btree - add_index "report_elements", ["my_module_id"], name: "index_report_elements_on_my_module_id", using: :btree - add_index "report_elements", ["parent_id"], name: "index_report_elements_on_parent_id", using: :btree - add_index "report_elements", ["project_id"], name: "index_report_elements_on_project_id", using: :btree - add_index "report_elements", ["report_id"], name: "index_report_elements_on_report_id", using: :btree - add_index "report_elements", ["repository_id"], name: "index_report_elements_on_repository_id", using: :btree - add_index "report_elements", ["result_id"], name: "index_report_elements_on_result_id", using: :btree - add_index "report_elements", ["step_id"], name: "index_report_elements_on_step_id", using: :btree - add_index "report_elements", ["table_id"], name: "index_report_elements_on_table_id", using: :btree - - create_table "reports", force: :cascade do |t| - t.string "name", null: false - t.string "description" - t.integer "project_id", null: false - t.integer "user_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "last_modified_by_id" + create_table "reports", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.string "description" + t.integer "project_id", null: false + t.integer "user_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "last_modified_by_id" + t.index "trim_html_tags((description)::text) gin_trgm_ops", name: "index_reports_on_description", using: :gin + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_reports_on_name", using: :gin + t.index ["last_modified_by_id"], name: "index_reports_on_last_modified_by_id" + t.index ["project_id"], name: "index_reports_on_project_id" + t.index ["user_id"], name: "index_reports_on_user_id" end - add_index "reports", ["last_modified_by_id"], name: "index_reports_on_last_modified_by_id", using: :btree - add_index "reports", ["project_id"], name: "index_reports_on_project_id", using: :btree - add_index "reports", ["user_id"], name: "index_reports_on_user_id", using: :btree - - create_table "repositories", force: :cascade do |t| - t.integer "team_id" - t.integer "created_by_id", null: false - t.string "name" + create_table "repositories", id: :serial, force: :cascade do |t| + t.integer "team_id" + t.integer "created_by_id", null: false + t.string "name" t.datetime "created_at" t.datetime "updated_at" + t.index ["team_id"], name: "index_repositories_on_team_id" end - add_index "repositories", ["team_id"], name: "index_repositories_on_team_id", using: :btree - - create_table "repository_cells", force: :cascade do |t| - t.integer "repository_row_id" - t.integer "repository_column_id" - t.integer "value_id" - t.string "value_type" + create_table "repository_cells", id: :serial, force: :cascade do |t| + t.integer "repository_row_id" + t.integer "repository_column_id" + t.string "value_type" + t.integer "value_id" t.datetime "created_at" t.datetime "updated_at" + t.index ["repository_column_id"], name: "index_repository_cells_on_repository_column_id" + t.index ["repository_row_id"], name: "index_repository_cells_on_repository_row_id" + t.index ["value_type", "value_id"], name: "index_repository_cells_on_value_type_and_value_id" end - add_index "repository_cells", ["repository_column_id"], name: "index_repository_cells_on_repository_column_id", using: :btree - add_index "repository_cells", ["repository_row_id"], name: "index_repository_cells_on_repository_row_id", using: :btree - add_index "repository_cells", ["value_type", "value_id"], name: "index_repository_cells_on_value_type_and_value_id", using: :btree - - create_table "repository_columns", force: :cascade do |t| - t.integer "repository_id" - t.integer "created_by_id", null: false - t.string "name" - t.integer "data_type", null: false + create_table "repository_columns", id: :serial, force: :cascade do |t| + t.integer "repository_id" + t.integer "created_by_id", null: false + t.string "name" + t.integer "data_type", null: false t.datetime "created_at" t.datetime "updated_at" + t.index ["repository_id"], name: "index_repository_columns_on_repository_id" end - add_index "repository_columns", ["repository_id"], name: "index_repository_columns_on_repository_id", using: :btree - - create_table "repository_date_values", force: :cascade do |t| + create_table "repository_date_values", id: :serial, force: :cascade do |t| t.datetime "data" t.datetime "created_at" t.datetime "updated_at" - t.integer "created_by_id", null: false - t.integer "last_modified_by_id", null: false + t.integer "created_by_id", null: false + t.integer "last_modified_by_id", null: false end - create_table "repository_rows", force: :cascade do |t| - t.integer "repository_id" - t.integer "created_by_id", null: false - t.integer "last_modified_by_id", null: false - t.string "name" + create_table "repository_rows", id: :serial, force: :cascade do |t| + t.integer "repository_id" + t.integer "created_by_id", null: false + t.integer "last_modified_by_id", null: false + t.string "name" t.datetime "created_at" t.datetime "updated_at" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_repository_rows_on_name", using: :gin + t.index ["repository_id"], name: "index_repository_rows_on_repository_id" end - add_index "repository_rows", ["name"], name: "index_repository_rows_on_name", using: :btree - add_index "repository_rows", ["repository_id"], name: "index_repository_rows_on_repository_id", using: :btree - - create_table "repository_table_states", force: :cascade do |t| - t.jsonb "state", null: false - t.integer "user_id", null: false - t.integer "repository_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "repository_table_states", id: :serial, force: :cascade do |t| + t.jsonb "state", null: false + t.integer "user_id", null: false + t.integer "repository_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["repository_id"], name: "index_repository_table_states_on_repository_id" + t.index ["user_id"], name: "index_repository_table_states_on_user_id" end - add_index "repository_table_states", ["repository_id"], name: "index_repository_table_states_on_repository_id", using: :btree - add_index "repository_table_states", ["user_id"], name: "index_repository_table_states_on_user_id", using: :btree - - create_table "repository_text_values", force: :cascade do |t| - t.string "data" + create_table "repository_text_values", id: :serial, force: :cascade do |t| + t.string "data" t.datetime "created_at" t.datetime "updated_at" - t.integer "created_by_id", null: false - t.integer "last_modified_by_id", null: false + t.integer "created_by_id", null: false + t.integer "last_modified_by_id", null: false + t.index "trim_html_tags((data)::text) gin_trgm_ops", name: "index_repository_text_values_on_data", using: :gin end - create_table "result_assets", force: :cascade do |t| + create_table "result_assets", id: :serial, force: :cascade do |t| t.integer "result_id", null: false - t.integer "asset_id", null: false - end - - add_index "result_assets", ["result_id", "asset_id"], name: "index_result_assets_on_result_id_and_asset_id", using: :btree - - create_table "result_tables", force: :cascade do |t| - t.integer "result_id", null: false - t.integer "table_id", null: false - end - - add_index "result_tables", ["result_id", "table_id"], name: "index_result_tables_on_result_id_and_table_id", using: :btree - - create_table "result_texts", force: :cascade do |t| - t.string "text", null: false - t.integer "result_id", null: false - end - - add_index "result_texts", ["result_id"], name: "index_result_texts_on_result_id", using: :btree - - create_table "results", force: :cascade do |t| - t.string "name" - t.integer "my_module_id", null: false - t.integer "user_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "archived", default: false, null: false - t.datetime "archived_on" - t.integer "last_modified_by_id" - t.integer "archived_by_id" - t.integer "restored_by_id" - t.datetime "restored_on" - end - - add_index "results", ["archived_by_id"], name: "index_results_on_archived_by_id", using: :btree - add_index "results", ["created_at"], name: "index_results_on_created_at", using: :btree - add_index "results", ["last_modified_by_id"], name: "index_results_on_last_modified_by_id", using: :btree - add_index "results", ["my_module_id"], name: "index_results_on_my_module_id", using: :btree - add_index "results", ["restored_by_id"], name: "index_results_on_restored_by_id", using: :btree - add_index "results", ["user_id"], name: "index_results_on_user_id", using: :btree - - create_table "sample_custom_fields", force: :cascade do |t| - t.string "value", null: false - t.integer "custom_field_id", null: false - t.integer "sample_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - end - - add_index "sample_custom_fields", ["custom_field_id"], name: "index_sample_custom_fields_on_custom_field_id", using: :btree - add_index "sample_custom_fields", ["sample_id"], name: "index_sample_custom_fields_on_sample_id", using: :btree - - create_table "sample_groups", force: :cascade do |t| - t.string "name", null: false - t.string "color", default: "#ff0000", null: false - t.integer "team_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "created_by_id" - t.integer "last_modified_by_id" - end - - add_index "sample_groups", ["created_by_id"], name: "index_sample_groups_on_created_by_id", using: :btree - add_index "sample_groups", ["last_modified_by_id"], name: "index_sample_groups_on_last_modified_by_id", using: :btree - add_index "sample_groups", ["team_id"], name: "index_sample_groups_on_team_id", using: :btree - - create_table "sample_my_modules", force: :cascade do |t| - t.integer "sample_id", null: false - t.integer "my_module_id", null: false - t.integer "assigned_by_id" - t.datetime "assigned_on" - end - - add_index "sample_my_modules", ["assigned_by_id"], name: "index_sample_my_modules_on_assigned_by_id", using: :btree - add_index "sample_my_modules", ["sample_id", "my_module_id"], name: "index_sample_my_modules_on_sample_id_and_my_module_id", using: :btree - - create_table "sample_types", force: :cascade do |t| - t.string "name", null: false - t.integer "team_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "created_by_id" - t.integer "last_modified_by_id" - end - - add_index "sample_types", ["created_by_id"], name: "index_sample_types_on_created_by_id", using: :btree - add_index "sample_types", ["last_modified_by_id"], name: "index_sample_types_on_last_modified_by_id", using: :btree - add_index "sample_types", ["team_id"], name: "index_sample_types_on_team_id", using: :btree - - create_table "samples", force: :cascade do |t| - t.string "name", null: false - t.integer "user_id", null: false - t.integer "team_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "sample_group_id" - t.integer "sample_type_id" - t.integer "last_modified_by_id" - t.integer "nr_of_modules_assigned_to", default: 0 - end - - add_index "samples", ["last_modified_by_id"], name: "index_samples_on_last_modified_by_id", using: :btree - add_index "samples", ["sample_group_id"], name: "index_samples_on_sample_group_id", using: :btree - add_index "samples", ["sample_type_id"], name: "index_samples_on_sample_type_id", using: :btree - add_index "samples", ["team_id"], name: "index_samples_on_team_id", using: :btree - add_index "samples", ["user_id"], name: "index_samples_on_user_id", using: :btree - - create_table "samples_tables", force: :cascade do |t| - t.jsonb "status", default: {"time"=>0, "order"=>[[2, "desc"]], "start"=>0, "length"=>10, "search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "columns"=>[{"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}], "ColReorder"=>[0, 1, 2, 3, 4, 5, 6]}, null: false - t.integer "user_id", null: false - t.integer "team_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - end - - add_index "samples_tables", ["team_id"], name: "index_samples_tables_on_team_id", using: :btree - add_index "samples_tables", ["user_id"], name: "index_samples_tables_on_user_id", using: :btree - - create_table "settings", force: :cascade do |t| - t.text "type", null: false - t.jsonb "values", default: {}, null: false - end - - add_index "settings", ["type"], name: "index_settings_on_type", unique: true, using: :btree - - create_table "step_assets", force: :cascade do |t| - t.integer "step_id", null: false t.integer "asset_id", null: false + t.index ["result_id", "asset_id"], name: "index_result_assets_on_result_id_and_asset_id" end - add_index "step_assets", ["step_id", "asset_id"], name: "index_step_assets_on_step_id_and_asset_id", using: :btree - - create_table "step_tables", force: :cascade do |t| - t.integer "step_id", null: false + create_table "result_tables", id: :serial, force: :cascade do |t| + t.integer "result_id", null: false t.integer "table_id", null: false + t.index ["result_id", "table_id"], name: "index_result_tables_on_result_id_and_table_id" end - add_index "step_tables", ["step_id", "table_id"], name: "index_step_tables_on_step_id_and_table_id", unique: true, using: :btree + create_table "result_texts", id: :serial, force: :cascade do |t| + t.string "text", null: false + t.integer "result_id", null: false + t.index "trim_html_tags((text)::text) gin_trgm_ops", name: "index_result_texts_on_text", using: :gin + t.index ["result_id"], name: "index_result_texts_on_result_id" + end - create_table "steps", force: :cascade do |t| - t.string "name" - t.string "description" - t.integer "position", null: false - t.boolean "completed", null: false + create_table "results", id: :serial, force: :cascade do |t| + t.string "name" + t.integer "my_module_id", null: false + t.integer "user_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "archived", default: false, null: false + t.datetime "archived_on" + t.integer "last_modified_by_id" + t.integer "archived_by_id" + t.integer "restored_by_id" + t.datetime "restored_on" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_results_on_name", using: :gin + t.index ["archived_by_id"], name: "index_results_on_archived_by_id" + t.index ["created_at"], name: "index_results_on_created_at" + t.index ["last_modified_by_id"], name: "index_results_on_last_modified_by_id" + t.index ["my_module_id"], name: "index_results_on_my_module_id" + t.index ["restored_by_id"], name: "index_results_on_restored_by_id" + t.index ["user_id"], name: "index_results_on_user_id" + end + + create_table "sample_custom_fields", id: :serial, force: :cascade do |t| + t.string "value", null: false + t.integer "custom_field_id", null: false + t.integer "sample_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index "trim_html_tags((value)::text) gin_trgm_ops", name: "index_sample_custom_fields_on_value", using: :gin + t.index ["custom_field_id"], name: "index_sample_custom_fields_on_custom_field_id" + t.index ["sample_id"], name: "index_sample_custom_fields_on_sample_id" + end + + create_table "sample_groups", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.string "color", default: "#ff0000", null: false + t.integer "team_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_sample_groups_on_name", using: :gin + t.index ["created_by_id"], name: "index_sample_groups_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_sample_groups_on_last_modified_by_id" + t.index ["team_id"], name: "index_sample_groups_on_team_id" + end + + create_table "sample_my_modules", id: :serial, force: :cascade do |t| + t.integer "sample_id", null: false + t.integer "my_module_id", null: false + t.integer "assigned_by_id" + t.datetime "assigned_on" + t.index ["assigned_by_id"], name: "index_sample_my_modules_on_assigned_by_id" + t.index ["my_module_id"], name: "index_sample_my_modules_on_my_module_id" + t.index ["sample_id", "my_module_id"], name: "index_sample_my_modules_on_sample_id_and_my_module_id" + end + + create_table "sample_types", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.integer "team_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_sample_types_on_name", using: :gin + t.index ["created_by_id"], name: "index_sample_types_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_sample_types_on_last_modified_by_id" + t.index ["team_id"], name: "index_sample_types_on_team_id" + end + + create_table "samples", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.integer "user_id", null: false + t.integer "team_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "sample_group_id" + t.integer "sample_type_id" + t.integer "last_modified_by_id" + t.integer "nr_of_modules_assigned_to", default: 0 + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_samples_on_name", using: :gin + t.index ["last_modified_by_id"], name: "index_samples_on_last_modified_by_id" + t.index ["sample_group_id"], name: "index_samples_on_sample_group_id" + t.index ["sample_type_id"], name: "index_samples_on_sample_type_id" + t.index ["team_id"], name: "index_samples_on_team_id" + t.index ["user_id"], name: "index_samples_on_user_id" + end + + create_table "samples_tables", id: :serial, force: :cascade do |t| + t.jsonb "status", default: {"time"=>0, "order"=>[[2, "desc"]], "start"=>0, "length"=>10, "search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "columns"=>[{"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}, {"search"=>{"regex"=>false, "smart"=>true, "search"=>"", "caseInsensitive"=>true}, "visible"=>true}], "assigned"=>"all", "ColReorder"=>[0, 1, 2, 3, 4, 5, 6]}, null: false + t.integer "user_id", null: false + t.integer "team_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["team_id"], name: "index_samples_tables_on_team_id" + t.index ["user_id"], name: "index_samples_tables_on_user_id" + end + + create_table "settings", id: :serial, force: :cascade do |t| + t.text "type", null: false + t.jsonb "values", default: {}, null: false + t.index ["type"], name: "index_settings_on_type", unique: true + end + + create_table "step_assets", id: :serial, force: :cascade do |t| + t.integer "step_id", null: false + t.integer "asset_id", null: false + t.index ["step_id", "asset_id"], name: "index_step_assets_on_step_id_and_asset_id" + end + + create_table "step_tables", id: :serial, force: :cascade do |t| + t.integer "step_id", null: false + t.integer "table_id", null: false + t.index ["step_id", "table_id"], name: "index_step_tables_on_step_id_and_table_id", unique: true + end + + create_table "steps", id: :serial, force: :cascade do |t| + t.string "name" + t.string "description" + t.integer "position", null: false + t.boolean "completed", null: false t.datetime "completed_on" - t.integer "user_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "last_modified_by_id" - t.integer "protocol_id", null: false + t.integer "user_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "last_modified_by_id" + t.integer "protocol_id", null: false + t.index "trim_html_tags((description)::text) gin_trgm_ops", name: "index_steps_on_description", using: :gin + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_steps_on_name", using: :gin + t.index ["created_at"], name: "index_steps_on_created_at" + t.index ["last_modified_by_id"], name: "index_steps_on_last_modified_by_id" + t.index ["position"], name: "index_steps_on_position" + t.index ["protocol_id"], name: "index_steps_on_protocol_id" + t.index ["user_id"], name: "index_steps_on_user_id" end - add_index "steps", ["created_at"], name: "index_steps_on_created_at", using: :btree - add_index "steps", ["last_modified_by_id"], name: "index_steps_on_last_modified_by_id", using: :btree - add_index "steps", ["position"], name: "index_steps_on_position", using: :btree - add_index "steps", ["protocol_id"], name: "index_steps_on_protocol_id", using: :btree - add_index "steps", ["user_id"], name: "index_steps_on_user_id", using: :btree - - create_table "tables", force: :cascade do |t| - t.binary "contents", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "created_by_id" - t.integer "last_modified_by_id" + create_table "tables", id: :serial, force: :cascade do |t| + t.binary "contents", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "created_by_id" + t.integer "last_modified_by_id" t.tsvector "data_vector" - t.string "name", default: "" - t.integer "team_id" + t.string "name", default: "" + t.integer "team_id" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_tables_on_name", using: :gin + t.index ["created_at"], name: "index_tables_on_created_at" + t.index ["created_by_id"], name: "index_tables_on_created_by_id" + t.index ["data_vector"], name: "index_tables_on_data_vector", using: :gin + t.index ["last_modified_by_id"], name: "index_tables_on_last_modified_by_id" + t.index ["team_id"], name: "index_tables_on_team_id" end - add_index "tables", ["created_at"], name: "index_tables_on_created_at", using: :btree - add_index "tables", ["created_by_id"], name: "index_tables_on_created_by_id", using: :btree - add_index "tables", ["data_vector"], name: "index_tables_on_data_vector", using: :gin - add_index "tables", ["last_modified_by_id"], name: "index_tables_on_last_modified_by_id", using: :btree - add_index "tables", ["team_id"], name: "index_tables_on_team_id", using: :btree - - create_table "tags", force: :cascade do |t| - t.string "name", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "color", default: "#ff0000", null: false - t.integer "project_id", null: false - t.integer "created_by_id" - t.integer "last_modified_by_id" + create_table "tags", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "color", default: "#ff0000", null: false + t.integer "project_id", null: false + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.index "trim_html_tags((name)::text) gin_trgm_ops", name: "index_tags_on_name", using: :gin + t.index ["created_by_id"], name: "index_tags_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_tags_on_last_modified_by_id" + t.index ["project_id"], name: "index_tags_on_project_id" end - add_index "tags", ["created_by_id"], name: "index_tags_on_created_by_id", using: :btree - add_index "tags", ["last_modified_by_id"], name: "index_tags_on_last_modified_by_id", using: :btree - add_index "tags", ["project_id"], name: "index_tags_on_project_id", using: :btree - - create_table "teams", force: :cascade do |t| - t.string "name", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "created_by_id" - t.integer "last_modified_by_id" - t.string "description" - t.integer "space_taken", limit: 8, default: 1048576, null: false + create_table "teams", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "created_by_id" + t.integer "last_modified_by_id" + t.string "description" + t.bigint "space_taken", default: 1048576, null: false + t.index ["created_by_id"], name: "index_teams_on_created_by_id" + t.index ["last_modified_by_id"], name: "index_teams_on_last_modified_by_id" + t.index ["name"], name: "index_teams_on_name" end - add_index "teams", ["created_by_id"], name: "index_teams_on_created_by_id", using: :btree - add_index "teams", ["last_modified_by_id"], name: "index_teams_on_last_modified_by_id", using: :btree - add_index "teams", ["name"], name: "index_teams_on_name", using: :btree - - create_table "temp_files", force: :cascade do |t| - t.string "session_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "file_file_name" - t.string "file_content_type" - t.integer "file_file_size" + create_table "temp_files", id: :serial, force: :cascade do |t| + t.string "session_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "file_file_name" + t.string "file_content_type" + t.integer "file_file_size" t.datetime "file_updated_at" end - create_table "tiny_mce_assets", force: :cascade do |t| - t.string "image_file_name" - t.string "image_content_type" - t.integer "image_file_size" + create_table "tiny_mce_assets", id: :serial, force: :cascade do |t| + t.string "image_file_name" + t.string "image_content_type" + t.integer "image_file_size" t.datetime "image_updated_at" - t.integer "estimated_size", default: 0, null: false - t.integer "step_id" - t.integer "team_id" - t.integer "result_text_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.integer "estimated_size", default: 0, null: false + t.integer "step_id" + t.integer "team_id" + t.integer "result_text_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["result_text_id"], name: "index_tiny_mce_assets_on_result_text_id" + t.index ["step_id"], name: "index_tiny_mce_assets_on_step_id" + t.index ["team_id"], name: "index_tiny_mce_assets_on_team_id" end - add_index "tiny_mce_assets", ["result_text_id"], name: "index_tiny_mce_assets_on_result_text_id", using: :btree - add_index "tiny_mce_assets", ["step_id"], name: "index_tiny_mce_assets_on_step_id", using: :btree - add_index "tiny_mce_assets", ["team_id"], name: "index_tiny_mce_assets_on_team_id", using: :btree - - create_table "tokens", force: :cascade do |t| - t.string "token", null: false - t.integer "ttl", null: false + create_table "tokens", id: :serial, force: :cascade do |t| + t.string "token", null: false + t.integer "ttl", null: false t.integer "user_id", null: false end - create_table "user_my_modules", force: :cascade do |t| - t.integer "user_id", null: false - t.integer "my_module_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "assigned_by_id" + create_table "user_my_modules", id: :serial, force: :cascade do |t| + t.integer "user_id", null: false + t.integer "my_module_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "assigned_by_id" + t.index ["assigned_by_id"], name: "index_user_my_modules_on_assigned_by_id" + t.index ["my_module_id"], name: "index_user_my_modules_on_my_module_id" + t.index ["user_id"], name: "index_user_my_modules_on_user_id" end - add_index "user_my_modules", ["assigned_by_id"], name: "index_user_my_modules_on_assigned_by_id", using: :btree - add_index "user_my_modules", ["my_module_id"], name: "index_user_my_modules_on_my_module_id", using: :btree - add_index "user_my_modules", ["user_id"], name: "index_user_my_modules_on_user_id", using: :btree - - create_table "user_notifications", force: :cascade do |t| - t.integer "user_id" - t.integer "notification_id" - t.boolean "checked", default: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "user_notifications", id: :serial, force: :cascade do |t| + t.integer "user_id" + t.integer "notification_id" + t.boolean "checked", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["checked"], name: "index_user_notifications_on_checked" + t.index ["notification_id"], name: "index_user_notifications_on_notification_id" + t.index ["user_id"], name: "index_user_notifications_on_user_id" end - add_index "user_notifications", ["checked"], name: "index_user_notifications_on_checked", using: :btree - add_index "user_notifications", ["notification_id"], name: "index_user_notifications_on_notification_id", using: :btree - add_index "user_notifications", ["user_id"], name: "index_user_notifications_on_user_id", using: :btree - - create_table "user_projects", force: :cascade do |t| - t.integer "role" - t.integer "user_id", null: false - t.integer "project_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "assigned_by_id" + create_table "user_projects", id: :serial, force: :cascade do |t| + t.integer "role" + t.integer "user_id", null: false + t.integer "project_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "assigned_by_id" + t.index ["assigned_by_id"], name: "index_user_projects_on_assigned_by_id" + t.index ["project_id"], name: "index_user_projects_on_project_id" + t.index ["user_id"], name: "index_user_projects_on_user_id" end - add_index "user_projects", ["assigned_by_id"], name: "index_user_projects_on_assigned_by_id", using: :btree - add_index "user_projects", ["project_id"], name: "index_user_projects_on_project_id", using: :btree - add_index "user_projects", ["user_id"], name: "index_user_projects_on_user_id", using: :btree - - create_table "user_teams", force: :cascade do |t| - t.integer "role", default: 1, null: false - t.integer "user_id", null: false - t.integer "team_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "assigned_by_id" + create_table "user_teams", id: :serial, force: :cascade do |t| + t.integer "role", default: 1, null: false + t.integer "user_id", null: false + t.integer "team_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "assigned_by_id" + t.index ["assigned_by_id"], name: "index_user_teams_on_assigned_by_id" + t.index ["team_id"], name: "index_user_teams_on_team_id" + t.index ["user_id"], name: "index_user_teams_on_user_id" end - add_index "user_teams", ["assigned_by_id"], name: "index_user_teams_on_assigned_by_id", using: :btree - add_index "user_teams", ["team_id"], name: "index_user_teams_on_team_id", using: :btree - add_index "user_teams", ["user_id"], name: "index_user_teams_on_user_id", using: :btree - - create_table "users", force: :cascade do |t| - t.string "full_name", null: false - t.string "initials", null: false - t.string "email", default: "", null: false - t.string "encrypted_password", default: "", null: false - t.string "reset_password_token" + create_table "users", id: :serial, force: :cascade do |t| + t.string "full_name", null: false + t.string "initials", null: false + t.string "email", default: "", null: false + t.string "encrypted_password", default: "", null: false + t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" - t.integer "sign_in_count", default: 0, null: false + t.integer "sign_in_count", default: 0, null: false t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" - t.string "current_sign_in_ip" - t.string "last_sign_in_ip" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "avatar_file_name" - t.string "avatar_content_type" - t.integer "avatar_file_size" + t.string "current_sign_in_ip" + t.string "last_sign_in_ip" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "avatar_file_name" + t.string "avatar_content_type" + t.integer "avatar_file_size" t.datetime "avatar_updated_at" - t.string "confirmation_token" + t.string "confirmation_token" t.datetime "confirmed_at" t.datetime "confirmation_sent_at" - t.string "unconfirmed_email" - t.string "time_zone", default: "UTC" - t.string "invitation_token" + t.string "unconfirmed_email" + t.string "invitation_token" t.datetime "invitation_created_at" t.datetime "invitation_sent_at" t.datetime "invitation_accepted_at" - t.integer "invitation_limit" - t.integer "invited_by_id" - t.string "invited_by_type" - t.integer "invitations_count", default: 0 - t.integer "tutorial_status", default: 0, null: false - t.boolean "assignments_notification", default: true - t.boolean "recent_notification", default: true - t.boolean "assignments_notification_email", default: false - t.boolean "recent_notification_email", default: false - t.integer "current_team_id" - t.boolean "system_message_notification_email", default: false - t.string "authentication_token", limit: 30 + t.integer "invitation_limit" + t.string "invited_by_type" + t.integer "invited_by_id" + t.integer "invitations_count", default: 0 + t.integer "tutorial_status", default: 0, null: false + t.integer "current_team_id" + t.string "authentication_token", limit: 30 + t.jsonb "settings", default: {}, null: false + t.index "trim_html_tags((full_name)::text) gin_trgm_ops", name: "index_users_on_full_name", using: :gin + t.index ["authentication_token"], name: "index_users_on_authentication_token", unique: true + t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true + t.index ["email"], name: "index_users_on_email", unique: true + t.index ["invitation_token"], name: "index_users_on_invitation_token", unique: true + t.index ["invitations_count"], name: "index_users_on_invitations_count" + t.index ["invited_by_id"], name: "index_users_on_invited_by_id" + t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end - add_index "users", ["authentication_token"], name: "index_users_on_authentication_token", unique: true, using: :btree - add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree - add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree - add_index "users", ["invitation_token"], name: "index_users_on_invitation_token", unique: true, using: :btree - add_index "users", ["invitations_count"], name: "index_users_on_invitations_count", using: :btree - add_index "users", ["invited_by_id"], name: "index_users_on_invited_by_id", using: :btree - add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree - - create_table "wopi_actions", force: :cascade do |t| - t.string "action", null: false - t.string "extension", null: false - t.string "urlsrc", null: false + create_table "wopi_actions", id: :serial, force: :cascade do |t| + t.string "action", null: false + t.string "extension", null: false + t.string "urlsrc", null: false t.integer "wopi_app_id", null: false + t.index ["extension", "action"], name: "index_wopi_actions_on_extension_and_action" end - add_index "wopi_actions", ["extension", "action"], name: "index_wopi_actions_on_extension_and_action", using: :btree - - create_table "wopi_apps", force: :cascade do |t| - t.string "name", null: false - t.string "icon", null: false + create_table "wopi_apps", id: :serial, force: :cascade do |t| + t.string "name", null: false + t.string "icon", null: false t.integer "wopi_discovery_id", null: false end - create_table "wopi_discoveries", force: :cascade do |t| - t.integer "expires", null: false - t.string "proof_key_mod", null: false - t.string "proof_key_exp", null: false - t.string "proof_key_old_mod", null: false - t.string "proof_key_old_exp", null: false + create_table "wopi_discoveries", id: :serial, force: :cascade do |t| + t.integer "expires", null: false + t.string "proof_key_mod", null: false + t.string "proof_key_exp", null: false + t.string "proof_key_old_mod", null: false + t.string "proof_key_old_exp", null: false end - create_table "zip_exports", force: :cascade do |t| - t.integer "user_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "zip_file_file_name" - t.string "zip_file_content_type" - t.integer "zip_file_file_size" + create_table "zip_exports", id: :serial, force: :cascade do |t| + t.integer "user_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "zip_file_file_name" + t.string "zip_file_content_type" + t.integer "zip_file_file_size" t.datetime "zip_file_updated_at" + t.index ["user_id"], name: "index_zip_exports_on_user_id" end - add_index "zip_exports", ["user_id"], name: "index_zip_exports_on_user_id", using: :btree - add_foreign_key "activities", "experiments" add_foreign_key "activities", "my_modules" add_foreign_key "activities", "projects" @@ -932,4 +903,22 @@ ActiveRecord::Schema.define(version: 20170515141252) do add_foreign_key "wopi_actions", "wopi_apps" add_foreign_key "wopi_apps", "wopi_discoveries" add_foreign_key "zip_exports", "users" + + create_view "datatables_teams", sql_definition: <<-SQL + SELECT teams.id, + teams.name, + user_teams.role, + ( SELECT count(*) AS count + FROM user_teams user_teams_1 + WHERE (user_teams_1.team_id = teams.id)) AS members, + CASE + WHEN (teams.created_by_id = user_teams.user_id) THEN false + ELSE true + END AS can_be_leaved, + user_teams.id AS user_team_id, + user_teams.user_id + FROM (teams + JOIN user_teams ON ((teams.id = user_teams.team_id))); + SQL + end diff --git a/db/views/datatables_teams_v01.sql b/db/views/datatables_teams_v01.sql new file mode 100644 index 000000000..25ed66b2a --- /dev/null +++ b/db/views/datatables_teams_v01.sql @@ -0,0 +1,13 @@ +SELECT + teams.id AS id, + teams.name AS name, + user_teams.role AS role, + ( + SELECT COUNT(*) + FROM user_teams + WHERE user_teams.team_id = teams.id + ) AS members, + CASE WHEN teams.created_by_id = user_teams.user_id THEN false ELSE true END AS can_be_leaved, + user_teams.id AS user_team_id, + user_teams.user_id AS user_id +FROM teams INNER JOIN user_teams ON teams.id=user_teams.team_id diff --git a/spec/factories/my_module_groups.rb b/spec/factories/my_module_groups.rb index 3688ad772..bb38bab2c 100644 --- a/spec/factories/my_module_groups.rb +++ b/spec/factories/my_module_groups.rb @@ -1,6 +1,5 @@ FactoryGirl.define do factory :my_module_group do - name Faker::Name.unique.name experiment { Experiment.first || create(:experiment_two) } end end diff --git a/spec/models/datatables/teams_spec.rb b/spec/models/datatables/teams_spec.rb new file mode 100644 index 000000000..ab740da84 --- /dev/null +++ b/spec/models/datatables/teams_spec.rb @@ -0,0 +1,22 @@ +require 'rails_helper' + +RSpec.describe Datatables::DatatablesTeam, type: :model do + describe 'Database table' do + it { should have_db_column :id } + it { should have_db_column :name } + it { should have_db_column :members } + it { should have_db_column :role } + it { should have_db_column :user_team_id } + it { should have_db_column :user_id } + end + + describe 'is readonly' do + let(:user) { create :user } + it do + expect { + Datatables::DatatablesTeam.create!(user_id: user.id) + }.to raise_error(ActiveRecord::ReadOnlyRecord, + 'Datatables::DatatablesTeam is marked as readonly') + end + end +end diff --git a/spec/models/my_module_group_spec.rb b/spec/models/my_module_group_spec.rb index 507d74d8e..e4e6072b6 100644 --- a/spec/models/my_module_group_spec.rb +++ b/spec/models/my_module_group_spec.rb @@ -7,7 +7,6 @@ describe MyModuleGroup, type: :model do describe 'Database table' do it { should have_db_column :id } - it { should have_db_column :name } it { should have_db_column :created_at } it { should have_db_column :updated_at } it { should have_db_column :created_by_id } @@ -21,8 +20,6 @@ describe MyModuleGroup, type: :model do end describe 'Should be a valid object' do - it { should validate_presence_of :name } it { should validate_presence_of :experiment } - it { should validate_length_of(:name).is_at_most(Constants::NAME_MAX_LENGTH) } end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b24b6926a..affe9f36c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -18,6 +18,7 @@ require 'simplecov' require 'faker' require 'active_record' require 'bullet' +require 'json_matchers/rspec' RSpec.configure do |config| # rspec-expectations config goes here. You can use an alternate From e0323a0a46250d91ef4276d8de6df052479d885a Mon Sep 17 00:00:00 2001 From: zmagod Date: Fri, 27 Oct 2017 09:35:39 +0200 Subject: [PATCH 02/17] fixes failing tests --- Gemfile | 1 + Gemfile.lock | 5 +++ app/models/datatables/datatables_team.rb | 2 ++ app/models/user.rb | 19 ----------- app/services/client_api/teams_service.rb | 2 +- app/services/client_api/user_team_service.rb | 2 +- spec/models/user_spec.rb | 34 ++----------------- .../services/client_api/teams_service_spec.rb | 5 ++- .../client_api/user_team_service_spec.rb | 2 +- spec/spec_helper.rb | 2 +- spec/support/api/schemas/teams.json | 21 ++++++++++++ 11 files changed, 37 insertions(+), 58 deletions(-) create mode 100644 spec/support/api/schemas/teams.json diff --git a/Gemfile b/Gemfile index dd8756746..43d053f0f 100644 --- a/Gemfile +++ b/Gemfile @@ -113,6 +113,7 @@ group :test do gem 'capybara-webkit', '~> 1.14' gem 'selenium-webdriver' gem 'simplecov', require: false + gem 'json_matchers' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index bfc9e85da..a2fd1fa19 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -249,6 +249,10 @@ GEM js_cookie_rails (2.1.4) railties (>= 3.1) json (1.8.6) + json-schema (2.8.0) + addressable (>= 2.4) + json_matchers (0.7.2) + json-schema (~> 2.7) kaminari (1.1.1) activesupport (>= 4.1.0) kaminari-actionview (= 1.1.1) @@ -538,6 +542,7 @@ DEPENDENCIES jquery-turbolinks jquery-ui-rails js_cookie_rails + json_matchers kaminari listen (~> 3.0) logging (~> 2.0.0) diff --git a/app/models/datatables/datatables_team.rb b/app/models/datatables/datatables_team.rb index 58739af9d..1c22f8388 100644 --- a/app/models/datatables/datatables_team.rb +++ b/app/models/datatables/datatables_team.rb @@ -1,6 +1,8 @@ module Datatables class DatatablesTeam < ApplicationRecord belongs_to :user + default_scope { order(name: :asc) } + private # this isn't strictly necessary, but it will prevent diff --git a/app/models/user.rb b/app/models/user.rb index a71afc1a2..32b990722 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -219,25 +219,6 @@ class User < ApplicationRecord Team.find_by_id(self.current_team_id) end - # Retrieves the data needed in all teams page - def teams_data - ActiveRecord::Base.connection.execute( - ActiveRecord::Base.send( - :sanitize_sql_array, - ['SELECT teams.id AS id, teams.name AS name, user_teams.role ' \ - 'AS role, (SELECT COUNT(*) FROM user_teams WHERE ' \ - 'user_teams.team_id = teams.id) AS members, ' \ - 'CASE WHEN teams.id=? THEN true ELSE false END AS current_team, ' \ - 'CASE WHEN (SELECT COUNT(*) FROM user_teams WHERE ' \ - 'user_teams.team_id=teams.id AND role=2) >= 2 THEN true ELSE false ' \ - 'END AS can_be_leaved, user_teams.id AS user_team_id ' \ - 'FROM teams INNER JOIN user_teams ON ' \ - 'teams.id=user_teams.team_id WHERE user_teams.user_id=?', - self.current_team_id, self.id] - ) - ) - end - # Search all active users for username & email. Can # also specify which team to ignore. def self.search( diff --git a/app/services/client_api/teams_service.rb b/app/services/client_api/teams_service.rb index bd4adba82..e29046165 100644 --- a/app/services/client_api/teams_service.rb +++ b/app/services/client_api/teams_service.rb @@ -31,7 +31,7 @@ module ClientApi end def teams_data - { teams: @user.teams_data } + { teams: @user.datatables_teams } end end diff --git a/app/services/client_api/user_team_service.rb b/app/services/client_api/user_team_service.rb index 80c98e2b3..6cd5685a7 100644 --- a/app/services/client_api/user_team_service.rb +++ b/app/services/client_api/user_team_service.rb @@ -43,7 +43,7 @@ module ClientApi def teams_data { - teams: @user.teams_data, + teams: @user.datatables_teams, flash_message: I18n.t('client_api.user_teams.leave_flash', team: @team.name) } diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6efd9b025..1dc41319f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -152,40 +152,10 @@ describe User, type: :model do end let(:user_two) { create :user, email: 'user2@asdf.com' } - it 'in a specific format: {id: .., name: .., members: .., role: ' \ - '.., current_team: .., can_be_leaved: ..}' do - user_team = create :user_team, team: team, user: user_one - expected_result = { - id: team.id, - name: team.name, - members: 1, - role: 2, - current_team: true, - can_be_leaved: false, - user_team_id: user_team.id - } - - user_one.teams_data.first.each do |k, v| - expect(v).to eq(expected_result.fetch(k.to_sym)) - end - end - it 'should return correct number of team members' do - user_team = create :user_team, team: team, user: user_one + create :user_team, team: team, user: user_one create :user_team, team: team, user: user_two - expected_result = { - id: team.id, - name: team.name, - members: 2, - role: 2, - current_team: true, - can_be_leaved: true, - user_team_id: user_team.id - } - - user_one.teams_data.first.each do |k, v| - expect(v).to eq(expected_result.fetch(k.to_sym)) - end + expect(user_one.datatables_teams.first.members).to eq 2 end end diff --git a/spec/services/client_api/teams_service_spec.rb b/spec/services/client_api/teams_service_spec.rb index 201b2818c..fc1f355ff 100644 --- a/spec/services/client_api/teams_service_spec.rb +++ b/spec/services/client_api/teams_service_spec.rb @@ -55,10 +55,9 @@ describe ClientApi::TeamsService do ClientApi::TeamsService.new(current_user: user_one, team_id: team_one.id) end - it 'should return user teams' do + it 'should return an array of valid teams' do create :user_team, user: user_one, team: team_one - data = team_service.teams_data.fetch(:teams) - expect(data.first.fetch('name')).to eq team_one.name + expect(team_service.teams_data).to match_response_schema('teams') end end diff --git a/spec/services/client_api/user_team_service_spec.rb b/spec/services/client_api/user_team_service_spec.rb index 20ba3d102..7ffd02150 100644 --- a/spec/services/client_api/user_team_service_spec.rb +++ b/spec/services/client_api/user_team_service_spec.rb @@ -130,7 +130,7 @@ describe ClientApi::UserTeamService do user_team_id: user_team.id, role: 1 ) - team_id = ut_service.teams_data[:teams].first.fetch('id') + team_id = ut_service.teams_data[:teams].first.id expect(team_id).to eq team_one.id end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index affe9f36c..969041d15 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -18,7 +18,7 @@ require 'simplecov' require 'faker' require 'active_record' require 'bullet' -require 'json_matchers/rspec' +require "json_matchers/rspec" RSpec.configure do |config| # rspec-expectations config goes here. You can use an alternate diff --git a/spec/support/api/schemas/teams.json b/spec/support/api/schemas/teams.json new file mode 100644 index 000000000..4e3efbcd4 --- /dev/null +++ b/spec/support/api/schemas/teams.json @@ -0,0 +1,21 @@ +{ + "type": "object", + "required": ["teams"], + "properties": { + "teams": { + "type": "array", + "items":{ + "required": ["id", "name", "members", "role", "can_be_leaved", "user_team_id"], + "properties": { + "id": { "type": "integer" }, + "name": { "type": "string" }, + "members": { "type": "integer" }, + "role": { "type": "integer" }, + "can_be_leaved": { "type": "boolean" }, + "user_team_id": { "type": "integer" }, + "user_id": { "type": "integer" } + } + } + } + } +} From e5a01f7a573e6105ebb56e626a52323b910a8d28 Mon Sep 17 00:00:00 2001 From: zmagod Date: Fri, 27 Oct 2017 16:37:42 +0200 Subject: [PATCH 03/17] adds integration tests for about sciNote modal --- .../Navigation/components/InfoDropdown.jsx | 94 +++++++++++++------ app/javascript/src/config/locales/messages.js | 3 +- .../src/services/api/configurations_api.js | 6 ++ app/javascript/src/services/api/endpoints.js | 3 + config/routes.rb | 2 +- config/routes/confirmations.rb | 2 + .../navigation/addons_versions_modal.feature | 21 +++++ features/settings_page/profile.feature | 2 +- features/step_definitions/shared_steps.rb | 6 +- yarn.lock | 2 +- 10 files changed, 106 insertions(+), 35 deletions(-) create mode 100644 app/javascript/src/services/api/configurations_api.js create mode 100644 config/routes/confirmations.rb create mode 100644 features/navigation/addons_versions_modal.feature diff --git a/app/javascript/src/components/Navigation/components/InfoDropdown.jsx b/app/javascript/src/components/Navigation/components/InfoDropdown.jsx index df063f0c6..4e81ed3d0 100644 --- a/app/javascript/src/components/Navigation/components/InfoDropdown.jsx +++ b/app/javascript/src/components/Navigation/components/InfoDropdown.jsx @@ -1,4 +1,5 @@ -import React from "react"; +// @flow +import React, { Component } from "react"; import { FormattedMessage } from "react-intl"; import { NavDropdown, MenuItem } from "react-bootstrap"; import { @@ -8,35 +9,68 @@ import { PREMIUM_LINK, CONTACT_US_LINK } from "../../../config/routes"; +import { getSciNoteInfo } from "../../../services/api/configurations_api"; -const InfoDropdown = () => - -   - - - - - } - id="nav-info-dropdown" - > - - - - - - - - - - - - - - - - ; +type State = { + modalOpen: boolean, + scinoteVersion: string, + addons: Array +}; + +class InfoDropdown extends Component<*, State> { + constructor(props: any) { + super(props); + this.state = { modalOpen: false, scinoteVersion: "", addons: [] }; + (this: any).showAboutUsModal = this.showAboutUsModal.bind(this); + } + + showAboutUsModal(): void { + getSciNoteInfo().then(response => { + const { scinoteVersion, addons } = response; + (this: any).setState({ + scinoteVersion, + addons, + modalOpen: true + }); + }); + } + + render() { + return ( + +   + + + + + } + id="nav-info-dropdown" + > + + + + + + + + + + + + + + + + + + + + + ); + } +} export default InfoDropdown; diff --git a/app/javascript/src/config/locales/messages.js b/app/javascript/src/config/locales/messages.js index 4f6cd1389..c1258cdf4 100644 --- a/app/javascript/src/config/locales/messages.js +++ b/app/javascript/src/config/locales/messages.js @@ -204,7 +204,8 @@ export default { tutorials: "Tutorials", release_notes: "Release notes", premium: "Premium", - contact_us: "Contact us" + contact_us: "Contact us", + about_scinote: "About sciNote" }, user_account_dropdown: { greeting: "Hi, {name}", diff --git a/app/javascript/src/services/api/configurations_api.js b/app/javascript/src/services/api/configurations_api.js new file mode 100644 index 000000000..0797ea244 --- /dev/null +++ b/app/javascript/src/services/api/configurations_api.js @@ -0,0 +1,6 @@ +// @flow +import axiosInstance from "./config"; +import { ABOUT_SCINOTE_PATH } from "./endpoints"; + +export const getSciNoteInfo = (): Promise<*> => + axiosInstance.get(ABOUT_SCINOTE_PATH).then(({ data }) => data); diff --git a/app/javascript/src/services/api/endpoints.js b/app/javascript/src/services/api/endpoints.js index 83a2ac416..edaa3d752 100644 --- a/app/javascript/src/services/api/endpoints.js +++ b/app/javascript/src/services/api/endpoints.js @@ -42,3 +42,6 @@ export const INVITE_USERS_PATH = "/client_api/users/invite_users"; // settings export const SETTINGS_TEAMS = "/settings/teams"; + +// scinote configurations +export const ABOUT_SCINOTE_PATH = "/client_api/about_scinote"; diff --git a/config/routes.rb b/config/routes.rb index b00d30ee1..77bea4053 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,7 +18,7 @@ Rails.application.routes.draw do get '/settings/*all', to: 'client_api/settings#index' namespace :client_api, defaults: { format: 'json' } do - %i(activities teams notifications users).each do |path| + %i(activities teams notifications users confirmations).each do |path| draw path end end diff --git a/config/routes/confirmations.rb b/config/routes/confirmations.rb new file mode 100644 index 000000000..8cb5cbcf2 --- /dev/null +++ b/config/routes/confirmations.rb @@ -0,0 +1,2 @@ +# scinote configurations routes +get '/about_scinote', to: 'configurations_controller#about_scinote' diff --git a/features/navigation/addons_versions_modal.feature b/features/navigation/addons_versions_modal.feature new file mode 100644 index 000000000..139004d33 --- /dev/null +++ b/features/navigation/addons_versions_modal.feature @@ -0,0 +1,21 @@ +Feature: Addon versions + As a sciNote User + I want know what addon are activated + So that I know what features are enabled + + Background: + Given the "BioSistemika Process" team exists + Given the following users are registered + | email | password | password_confirmation | full_name | initials | + | admin@myorg.com | mypassword1234 | mypassword1234 | Karli Novak | KN | + And "admin@myorg.com" is in "BioSistemika Process" team as a "admin" + And is signed in with "admin@myorg.com", "mypassword1234" + + @javascript + Scenario: Open the sciNote addons modal + Given I'm on the profile page + And I click "#nav-info-dropdown" icon + And I click "About sciNote" link within ".dropdown.open" + Then I should see "About sciNote" + And I should see "sciNote core version" + And I should see "Addon versions" diff --git a/features/settings_page/profile.feature b/features/settings_page/profile.feature index ff968c9b6..b1571f500 100644 --- a/features/settings_page/profile.feature +++ b/features/settings_page/profile.feature @@ -15,7 +15,7 @@ Background: Scenario: Successful navigate to profile page Given I'm on the home page of "BioSistemika Process" team And I click on Avatar - And I click "Settings" link within "user-account-dropdown" + And I click "Settings" link within "#user-account-dropdown" Then I should see "My Profile" @javascript diff --git a/features/step_definitions/shared_steps.rb b/features/step_definitions/shared_steps.rb index 87b792bf6..c4abd72b7 100644 --- a/features/step_definitions/shared_steps.rb +++ b/features/step_definitions/shared_steps.rb @@ -15,7 +15,7 @@ Given(/^I click "(.+)" link$/) do |link| end Given(/^I click "(.+)" link within "(.+)"$/) do |link, element| - within("##{element}") do + within(element) do click_link link end end @@ -92,3 +92,7 @@ Then(/^I should see "([^"]*)" in "([^"]*)" input field$/) do |text, container_id container = page.find_by_id(container_id) expect(container).to have_xpath("//input[@value='#{text}']") end + +Given("I click {string} icon") do |id| + find(:css, id).click +end diff --git a/yarn.lock b/yarn.lock index d2b42b099..d3498b4ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4865,7 +4865,7 @@ prop-types-extra@^1.0.1: dependencies: warning "^3.0.0" -prop-types@^15.5.10: +prop-types@^15.5.10, prop-types@^15.5.6: version "15.6.0" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" dependencies: From 329dd4f1b08e802f4454aa5ce933a8e570e8c0b3 Mon Sep 17 00:00:00 2001 From: Luka Murn Date: Mon, 30 Oct 2017 14:13:36 +0100 Subject: [PATCH 04/17] Onboard Flow onto validation components. --- .babelrc | 1 + .../components/ValidatedErrorHelpBlock.jsx | 21 ++-- .../validation/components/ValidatedForm.jsx | 87 ++++++++----- .../components/ValidatedFormControl.jsx | 47 +++---- .../components/ValidatedFormGroup.jsx | 14 ++- .../components/ValidatedSubmitButton.jsx | 14 ++- .../components/validation/validators/file.js | 11 +- .../components/validation/validators/text.js | 35 ++++-- flow-typed/types.js | 14 +++ package.json | 7 +- yarn.lock | 119 +++++++++++++++++- 11 files changed, 278 insertions(+), 92 deletions(-) diff --git a/.babelrc b/.babelrc index 18363269c..50ece3753 100644 --- a/.babelrc +++ b/.babelrc @@ -16,6 +16,7 @@ "flow" ], "plugins": [ + "transform-flow-strip-types", "transform-object-rest-spread", "syntax-dynamic-import", "transform-react-jsx-source", diff --git a/app/javascript/src/components/validation/components/ValidatedErrorHelpBlock.jsx b/app/javascript/src/components/validation/components/ValidatedErrorHelpBlock.jsx index 21576e339..d212d866e 100644 --- a/app/javascript/src/components/validation/components/ValidatedErrorHelpBlock.jsx +++ b/app/javascript/src/components/validation/components/ValidatedErrorHelpBlock.jsx @@ -1,6 +1,9 @@ -import React, { Component } from "react"; +// @flow + +import * as React from "react"; import { HelpBlock } from "react-bootstrap"; import { FormattedMessage } from "react-intl"; +import type { ValidationError } from "flow-typed"; import PropTypes from "prop-types"; import styled from "styled-components"; import shortid from "shortid"; @@ -11,8 +14,12 @@ const MyHelpBlock = styled(HelpBlock)` } `; -class ValidatedErrorHelpBlock extends Component { - static renderErrorMessage(error) { +type Props = { + tag: string +}; + +class ValidatedErrorHelpBlock extends React.Component { + static renderErrorMessage(error: ValidationError): React.Node { const key = shortid.generate(); if (error.intl) { return ( @@ -39,16 +46,14 @@ class ValidatedErrorHelpBlock extends Component { const errors = this.context.errors(tag) || []; return ( - {errors.map((error) => ValidatedErrorHelpBlock.renderErrorMessage(error))} + {errors.map( + (error: ValidationError) => ValidatedErrorHelpBlock.renderErrorMessage(error) + )} ); } } -ValidatedErrorHelpBlock.propTypes = { - tag: PropTypes.string.isRequired -}; - ValidatedErrorHelpBlock.contextTypes = { errors: PropTypes.func } diff --git a/app/javascript/src/components/validation/components/ValidatedForm.jsx b/app/javascript/src/components/validation/components/ValidatedForm.jsx index 5b15a251a..378345cde 100644 --- a/app/javascript/src/components/validation/components/ValidatedForm.jsx +++ b/app/javascript/src/components/validation/components/ValidatedForm.jsx @@ -1,33 +1,64 @@ -import React, { Component } from "react"; +// @flow + +import * as React from "react"; import update from "immutability-helper"; +import type { + ValidationError, + ValidationErrors +} from "flow-typed"; import PropTypes from "prop-types"; import _ from "lodash"; -class ValidatedForm extends Component { - static parseErrors(errors) { +type Props = { + children?: React.Node +}; + +type State = { + [string]: Array +}; + +type ChildContext = { + setErrors: Function, + setErrorsForTag: Function, + errors: Function, + hasAnyError: Function, + hasErrorForTag: Function, + addErrorsForTag: Function, + clearErrorsForTag: Function, + clearErrors: Function +}; + +class ValidatedForm extends React.Component { + static defaultProps = { + children: undefined + } + + static parseErrors(errors: ValidationErrors): Array { // This method is quite smart, in the sense that accepts either // errors in 3 shapes: localized error messages ({}), // unlocalized error messages ({}), or mere strings (unlocalized) const arr = _.isString(errors) ? [errors] : errors; - return arr.map((el) => _.isString(el) ? { message: el } : el); + return arr.map( + (el: string | ValidationError) => _.isString(el) ? { message: el } : el + ); } - constructor(props) { + constructor(props: Props) { super(props); - this.state = {} + this.state = {}; - this.setErrors = this.setErrors.bind(this); - this.setErrorsForTag = this.setErrorsForTag.bind(this); - this.errors = this.errors.bind(this); - this.hasAnyError = this.hasAnyError.bind(this); - this.hasErrorForTag = this.hasErrorForTag.bind(this); - this.addErrorsForTag = this.addErrorsForTag.bind(this); - this.clearErrorsForTag = this.clearErrorsForTag.bind(this); - this.clearErrors = this.clearErrors.bind(this); + (this: any).setErrors = this.setErrors.bind(this); + (this: any).setErrorsForTag = this.setErrorsForTag.bind(this); + (this: any).errors = this.errors.bind(this); + (this: any).hasAnyError = this.hasAnyError.bind(this); + (this: any).hasErrorForTag = this.hasErrorForTag.bind(this); + (this: any).addErrorsForTag = this.addErrorsForTag.bind(this); + (this: any).clearErrorsForTag = this.clearErrorsForTag.bind(this); + (this: any).clearErrors = this.clearErrors.bind(this); } - getChildContext() { + getChildContext(): ChildContext { // Pass functions downstream via context return { setErrors: this.setErrors, @@ -41,7 +72,7 @@ class ValidatedForm extends Component { }; } - setErrors(errors) { + setErrors(errors: { [string]: ValidationErrors }): void { const newState = {}; _.entries(errors).forEach(([key, value]) => { newState[key] = ValidatedForm.parseErrors(value); @@ -49,28 +80,28 @@ class ValidatedForm extends Component { this.setState(newState); } - setErrorsForTag(tag, errors) { + setErrorsForTag(tag: string, errors: ValidationErrors): void { const newState = update(this.state, { [tag]: { $set: ValidatedForm.parseErrors(errors) } }); this.setState(newState); } - errors(tag) { + errors(tag: string): Array { return this.state[tag]; } - hasAnyError() { + hasAnyError(): boolean { return _.values(this.state) && _.flatten(_.values(this.state)).length > 0; } - hasErrorForTag(tag) { + hasErrorForTag(tag: string): boolean { return _.has(this.state, tag) && this.state[tag].length > 0; } - addErrorsForTag(tag, errors) { - let newState; + addErrorsForTag(tag: string, errors: ValidationErrors): void { + let newState: State; if (_.has(this.state, tag)) { newState = update(this.state, { [tag]: { $push: errors } }); } else { @@ -79,12 +110,12 @@ class ValidatedForm extends Component { this.setState(newState); } - clearErrorsForTag(tag) { + clearErrorsForTag(tag: string): void { const newState = update(this.state, { [tag]: { $set: [] } }); this.setState(newState); } - clearErrors() { + clearErrors(): void { this.setState({}); } @@ -97,14 +128,6 @@ class ValidatedForm extends Component { } } -ValidatedForm.propTypes = { - children: PropTypes.node -} - -ValidatedForm.defaultProps = { - children: undefined -} - ValidatedForm.childContextTypes = { setErrors: PropTypes.func, setErrorsForTag: PropTypes.func, diff --git a/app/javascript/src/components/validation/components/ValidatedFormControl.jsx b/app/javascript/src/components/validation/components/ValidatedFormControl.jsx index 6d1be3771..de7b548ff 100644 --- a/app/javascript/src/components/validation/components/ValidatedFormControl.jsx +++ b/app/javascript/src/components/validation/components/ValidatedFormControl.jsx @@ -1,16 +1,32 @@ -import React, { Component } from "react"; +// @flow + +import * as React from "react"; import { FormControl } from "react-bootstrap"; +import type { ValidationError } from "flow-typed"; import PropTypes from "prop-types"; -class ValidatedFormControl extends Component { - constructor(props) { - super(props); +type Props = { + tag: string, + messageIds: {[string]: Array}, + onChange?: Function, + validatorsOnChange: Array, + children?: React.Node +}; - this.handleChange = this.handleChange.bind(this); - this.cleanProps = this.cleanProps.bind(this); +class ValidatedFormControl extends React.Component { + static defaultProps = { + onChange: undefined, + children: undefined } - handleChange(e) { + constructor(props: Props) { + super(props); + + (this: any).handleChange = this.handleChange.bind(this); + (this: any).cleanProps = this.cleanProps.bind(this); + } + + handleChange(e: SyntheticEvent): void { const tag = this.props.tag; const messageIds = this.props.messageIds; const target = e.target; @@ -21,8 +37,8 @@ class ValidatedFormControl extends Component { } // Validate the field - let errors = []; - this.props.validatorsOnChange.forEach((validator) => { + let errors: Array = []; + this.props.validatorsOnChange.forEach((validator: Function) => { errors = errors.concat(validator(target, messageIds)); }); this.context.setErrorsForTag(tag, errors); @@ -50,19 +66,6 @@ class ValidatedFormControl extends Component { } } -ValidatedFormControl.propTypes = { - tag: PropTypes.string.isRequired, - messageIds: PropTypes.objectOf(PropTypes.string), - validatorsOnChange: PropTypes.arrayOf(PropTypes.func), - onChange: PropTypes.func -} - -ValidatedFormControl.defaultProps = { - messageIds: {}, - validatorsOnChange: [], - onChange: undefined -} - ValidatedFormControl.contextTypes = { setErrorsForTag: PropTypes.func } diff --git a/app/javascript/src/components/validation/components/ValidatedFormGroup.jsx b/app/javascript/src/components/validation/components/ValidatedFormGroup.jsx index 0adb2c889..e215ed3d6 100644 --- a/app/javascript/src/components/validation/components/ValidatedFormGroup.jsx +++ b/app/javascript/src/components/validation/components/ValidatedFormGroup.jsx @@ -1,8 +1,14 @@ -import React from "react"; +// @flow + +import * as React from "react"; import { FormGroup } from "react-bootstrap"; import PropTypes from "prop-types"; -const ValidatedFormGroup = (props, context) => { +type Props = { + tag: string +}; + +const ValidatedFormGroup = (props: Props, context: any) => { // Remove additional props from the props const { tag, ...cleanProps } = props; @@ -19,10 +25,6 @@ const ValidatedFormGroup = (props, context) => { ); }; -ValidatedFormGroup.propTypes = { - tag: PropTypes.string.isRequired -} - ValidatedFormGroup.contextTypes = { hasErrorForTag: PropTypes.func } diff --git a/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx b/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx index d2afa6659..1b7ef236a 100644 --- a/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx +++ b/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx @@ -1,17 +1,19 @@ -import React from "react"; +// @flow + +import * as React from "react"; import { Button } from "react-bootstrap"; import PropTypes from "prop-types"; -const ValidatedSubmitButton = (props, context) => +type Props = { + children?: React.Node +}; + +const ValidatedSubmitButton = (props: Props, context: any) => ; -ValidatedSubmitButton.propTypes = { - children: PropTypes.node -} - ValidatedSubmitButton.defaultProps = { children: undefined } diff --git a/app/javascript/src/components/validation/validators/file.js b/app/javascript/src/components/validation/validators/file.js index b2371d055..129062692 100644 --- a/app/javascript/src/components/validation/validators/file.js +++ b/app/javascript/src/components/validation/validators/file.js @@ -1,8 +1,13 @@ +// @flow + import _ from "lodash"; +import type { ValidationError } from "flow-typed"; import { AVATAR_MAX_SIZE_MB } from "../../../config/constants/numeric"; import { AVATAR_VALID_EXTENSIONS } from "../../../config/constants/strings"; -export const avatarExtensionValidator = (target, messageIds = {}) => { +export const avatarExtensionValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageId = _.has(messageIds, "invalid_file_extension") ? messageIds.invalid_file_extension : "validators.file.invalid_file_extension"; @@ -25,7 +30,9 @@ export const avatarExtensionValidator = (target, messageIds = {}) => { return []; } -export const avatarSizeValidator = (target, messageIds = {}) => { +export const avatarSizeValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageId = _.has(messageIds, "file_too_large") ? messageIds.file_too_large : "validators.file.file_too_large"; diff --git a/app/javascript/src/components/validation/validators/text.js b/app/javascript/src/components/validation/validators/text.js index 2ad97cb49..59f1c1b6c 100644 --- a/app/javascript/src/components/validation/validators/text.js +++ b/app/javascript/src/components/validation/validators/text.js @@ -1,4 +1,7 @@ +// @flow + import _ from "lodash"; +import type { ValidationError } from "flow-typed"; import { NAME_MIN_LENGTH, NAME_MAX_LENGTH, @@ -9,7 +12,9 @@ import { } from "../../../config/constants/numeric"; import { EMAIL_REGEX } from "../../../config/constants/strings"; -export const nameMinLengthValidator = (target, messageIds = {}) => { +export const nameMinLengthValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageId = _.has(messageIds, "text_too_short") ? messageIds.text_too_short : "validators.text.text_too_short"; @@ -25,7 +30,9 @@ export const nameMinLengthValidator = (target, messageIds = {}) => { return []; }; -export const nameMaxLengthValidator = (target, messageIds = {}) => { +export const nameMaxLengthValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageId = _.has(messageIds, "text_too_long") ? messageIds.text_too_long : "validators.text.text_too_long"; @@ -41,7 +48,9 @@ export const nameMaxLengthValidator = (target, messageIds = {}) => { return []; }; -export const nameLengthValidator = (target, messageIds = {}) => { +export const nameLengthValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const res = nameMinLengthValidator(target, messageIds); if (res.length > 0) { return res; @@ -49,7 +58,9 @@ export const nameLengthValidator = (target, messageIds = {}) => { return nameMaxLengthValidator(target, messageIds); }; -export const textBlankValidator = (target, messageIds = {}) => { +export const textBlankValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageId = _.has(messageIds, "text_blank") ? messageIds.text_blank : "validators.text.text_blank"; @@ -64,7 +75,9 @@ export const textBlankValidator = (target, messageIds = {}) => { return []; } -export const textMaxLengthValidator = (target, messageIds = {}) => { +export const textMaxLengthValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageId = _.has(messageIds, "text_too_long") ? messageIds.text_too_long : "validators.text.text_too_long"; @@ -80,7 +93,9 @@ export const textMaxLengthValidator = (target, messageIds = {}) => { return []; }; -export const passwordLengthValidator = (target, messageIds = {}) => { +export const passwordLengthValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageIdTooShort = _.has(messageIds, "text_too_short") ? messageIds.text_too_short : "validators.text.text_too_short"; @@ -105,7 +120,9 @@ export const passwordLengthValidator = (target, messageIds = {}) => { return []; }; -export const userInitialsMaxLengthValidator = (target, messageIds = {}) => { +export const userInitialsMaxLengthValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const messageId = _.has(messageIds, "text_too_long") ? messageIds.text_too_long : "validators.text.text_too_long"; @@ -121,7 +138,9 @@ export const userInitialsMaxLengthValidator = (target, messageIds = {}) => { return []; }; -export const emailValidator = (target, messageIds = {}) => { +export const emailValidator = ( + target: HTMLInputElement, + messageIds: { [string]: string } = {}): Array => { const res = textBlankValidator(target, messageIds); if (res.length > 0) { return res; diff --git a/flow-typed/types.js b/flow-typed/types.js index 8baf221f5..d3e6a16ce 100644 --- a/flow-typed/types.js +++ b/flow-typed/types.js @@ -16,6 +16,20 @@ export type Alert = { timeout: number }; +export type ValidationErrorSimple = {| + message: string +|}; + +export type ValidationErrorIntl = {| + intl: boolean, + messageId: string, + values: string +|}; + +export type ValidationError = ValidationErrorSimple | ValidationErrorIntl; + +export type ValidationErrors = string | Array | Array; + export type Activity = { id: number, message: string, diff --git a/package.json b/package.json index 67d1d042e..aff0cdd64 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,8 @@ "eslint-plugin-jsx-a11y": "^6.0.2", "eslint-plugin-prettier": "^2.1.2", "eslint-plugin-react": "^7.1.0", - "flow-bin": "^0.56.0", - "flow-typed": "^2.1.5", "prettier": "^1.7.0", + "prettier-eslint": "^8.2.1", "webpack-dev-server": "^2.5.1" }, "dependencies": { @@ -54,6 +53,8 @@ "css-loader": "^0.28.4", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^0.11.2", + "flow-bin": "^0.56.0", + "flow-typed": "^2.1.5", "font-awesome": "^4.7.0", "glob": "^7.1.2", "immutability-helper": "^2.3.0", @@ -95,4 +96,4 @@ "webpack-manifest-plugin": "^1.1.2", "webpack-merge": "^4.1.0" } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index d2b42b099..41a3dd519 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,7 +102,7 @@ ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" -ansi-regex@^2.0.0: +ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -114,7 +114,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0: +ansi-styles@^3.0.0, ansi-styles@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -1424,6 +1424,12 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +common-tags@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" + dependencies: + babel-runtime "^6.18.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1874,6 +1880,10 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dlv@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.0.tgz#fee1a7c43f63be75f3f679e85262da5f102764a7" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -2163,6 +2173,48 @@ eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint@^4.5.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.10.0.tgz#f25d0d7955c81968c2309aa5c9a229e045176bb7" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.0.1" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.5.1" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + eslint@^4.7.2: version "4.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.8.0.tgz#229ef0e354e0e61d837c7a80fdfba825e199815e" @@ -3012,6 +3064,10 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -3631,6 +3687,10 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.merge@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" + lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" @@ -3643,6 +3703,10 @@ lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -3651,6 +3715,13 @@ lodash.uniq@^4.5.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +loglevel-colored-level-prefix@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" + dependencies: + chalk "^1.1.3" + loglevel "^1.4.1" + loglevel@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd" @@ -4827,10 +4898,33 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.7.0: +prettier-eslint@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.2.1.tgz#cd66cf8b1a2c2fce2217f1b28474809031b9a77c" + dependencies: + common-tags "^1.4.0" + dlv "^1.1.0" + eslint "^4.5.0" + indent-string "^3.2.0" + lodash.merge "^4.6.0" + loglevel-colored-level-prefix "^1.0.0" + prettier "^1.7.1" + pretty-format "^20.0.3" + require-relative "^0.8.7" + typescript "^2.5.1" + typescript-eslint-parser "^8.0.0" + +prettier@^1.7.0, prettier@^1.7.1: version "1.7.4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.4.tgz#5e8624ae9363c80f95ec644584ecdf55d74f93fa" +pretty-format@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" + dependencies: + ansi-regex "^2.1.1" + ansi-styles "^3.0.0" + private@^0.1.6, private@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -4865,7 +4959,7 @@ prop-types-extra@^1.0.1: dependencies: warning "^3.0.0" -prop-types@^15.5.10: +prop-types@^15.5.10, prop-types@^15.5.6: version "15.6.0" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" dependencies: @@ -5391,6 +5485,10 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-relative@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -5545,7 +5643,7 @@ selfsigned@^1.9.1: dependencies: node-forge "0.6.33" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@5.4.1, semver@^5.1.0, semver@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -6095,6 +6193,17 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +typescript-eslint-parser@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-8.0.1.tgz#e8cac537d996e16c3dbb0d7c4d509799e67afe0c" + dependencies: + lodash.unescape "4.0.1" + semver "5.4.1" + +typescript@^2.5.1: + version "2.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" + ua-parser-js@^0.7.9: version "0.7.14" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" From 2118b317623fb011769e78769f6a29f696898afe Mon Sep 17 00:00:00 2001 From: zmagod Date: Thu, 2 Nov 2017 13:23:57 +0100 Subject: [PATCH 05/17] adds about sciNote modal --- .../client_api/configurations_controller.rb | 23 ++++++++++++ .../components/AboutScinoteModal.jsx | 35 +++++++++++++++++++ .../Navigation/components/InfoDropdown.jsx | 23 +++++++++--- app/javascript/src/config/locales/messages.js | 5 ++- config/routes.rb | 2 +- config/routes/configurations.rb | 2 ++ config/routes/confirmations.rb | 2 -- 7 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 app/controllers/client_api/configurations_controller.rb create mode 100644 app/javascript/src/components/Navigation/components/AboutScinoteModal.jsx create mode 100644 config/routes/configurations.rb delete mode 100644 config/routes/confirmations.rb diff --git a/app/controllers/client_api/configurations_controller.rb b/app/controllers/client_api/configurations_controller.rb new file mode 100644 index 000000000..30c623ba3 --- /dev/null +++ b/app/controllers/client_api/configurations_controller.rb @@ -0,0 +1,23 @@ +module ClientApi + class ConfigurationsController < ApplicationController + + def about_scinote + respond_to do |format| + format.json do + render json: { + scinoteVersion: Scinote::Application::VERSION, + addons: list_all_addons + }, status: :ok + end + end + end + + private + + def list_all_addons + Rails::Engine.subclasses + .select { |c| c.name.start_with?('Scinote') } + .map(&:parent) + end + end +end diff --git a/app/javascript/src/components/Navigation/components/AboutScinoteModal.jsx b/app/javascript/src/components/Navigation/components/AboutScinoteModal.jsx new file mode 100644 index 000000000..665b4cf2a --- /dev/null +++ b/app/javascript/src/components/Navigation/components/AboutScinoteModal.jsx @@ -0,0 +1,35 @@ +// @flow +import React from "react"; +import type { Node } from "react"; +import { FormattedMessage } from "react-intl"; +import { Modal } from "react-bootstrap"; + +type Props = { + showModal: boolean, + scinoteVersion: string, + addons: Array, + onModalClose: Function +}; + +export default (props: Props): Node => { + const { showModal, scinoteVersion, addons, onModalClose } = props; + return ( + + + + + + + + + + +

{scinoteVersion}

+ + + + {addons.map((addon: string): Node =>

{addon}

)} +
+
+ ); +}; diff --git a/app/javascript/src/components/Navigation/components/InfoDropdown.jsx b/app/javascript/src/components/Navigation/components/InfoDropdown.jsx index 4e81ed3d0..e01328f56 100644 --- a/app/javascript/src/components/Navigation/components/InfoDropdown.jsx +++ b/app/javascript/src/components/Navigation/components/InfoDropdown.jsx @@ -11,6 +11,8 @@ import { } from "../../../config/routes"; import { getSciNoteInfo } from "../../../services/api/configurations_api"; +import AboutScinoteModal from "./AboutScinoteModal"; + type State = { modalOpen: boolean, scinoteVersion: string, @@ -20,21 +22,26 @@ type State = { class InfoDropdown extends Component<*, State> { constructor(props: any) { super(props); - this.state = { modalOpen: false, scinoteVersion: "", addons: [] }; - (this: any).showAboutUsModal = this.showAboutUsModal.bind(this); + this.state = { showModal: false, scinoteVersion: "", addons: [] }; + (this: any).showAboutSciNoteModal = this.showAboutSciNoteModal.bind(this); + (this: any).closeModal = this.closeModal.bind(this); } - showAboutUsModal(): void { + showAboutSciNoteModal(): void { getSciNoteInfo().then(response => { const { scinoteVersion, addons } = response; (this: any).setState({ scinoteVersion, addons, - modalOpen: true + showModal: true }); }); } + closeModal(): void { + (this: any).setState({ showModal: false }); + } + render() { return ( { - + + ); diff --git a/app/javascript/src/config/locales/messages.js b/app/javascript/src/config/locales/messages.js index c1258cdf4..88cef0ad6 100644 --- a/app/javascript/src/config/locales/messages.js +++ b/app/javascript/src/config/locales/messages.js @@ -6,7 +6,10 @@ export default { update: "Update", edit: "Edit", loading: "Loading ...", - upload: "Upload" + upload: "Upload", + about_scinote: "About sciNote", + core_version: "sciNote core version", + addon_versions: "Addon versions" }, page_title: { root: "SciNote", diff --git a/config/routes.rb b/config/routes.rb index 77bea4053..8d430a8f6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,7 +18,7 @@ Rails.application.routes.draw do get '/settings/*all', to: 'client_api/settings#index' namespace :client_api, defaults: { format: 'json' } do - %i(activities teams notifications users confirmations).each do |path| + %i(activities teams notifications users configurations).each do |path| draw path end end diff --git a/config/routes/configurations.rb b/config/routes/configurations.rb new file mode 100644 index 000000000..198449f22 --- /dev/null +++ b/config/routes/configurations.rb @@ -0,0 +1,2 @@ +# scinote configurations routes +get '/about_scinote', to: 'configurations#about_scinote' diff --git a/config/routes/confirmations.rb b/config/routes/confirmations.rb deleted file mode 100644 index 8cb5cbcf2..000000000 --- a/config/routes/confirmations.rb +++ /dev/null @@ -1,2 +0,0 @@ -# scinote configurations routes -get '/about_scinote', to: 'configurations_controller#about_scinote' From 605674bf6b1838d4c786626ea8a60bae4d2dce18 Mon Sep 17 00:00:00 2001 From: zmagod Date: Thu, 2 Nov 2017 13:36:21 +0100 Subject: [PATCH 06/17] adds controller spec --- .../client_api/configurations_controller_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 spec/controllers/client_api/configurations_controller_spec.rb diff --git a/spec/controllers/client_api/configurations_controller_spec.rb b/spec/controllers/client_api/configurations_controller_spec.rb new file mode 100644 index 000000000..a3c409138 --- /dev/null +++ b/spec/controllers/client_api/configurations_controller_spec.rb @@ -0,0 +1,10 @@ +require 'rails_helper' + +describe ClientApi::ConfigurationsController, type: :controller do + login_user + + describe '#about_scinote' do + let(:subject) { get :about_scinote, format: :json } + it { is_expected.to be_success } + end +end From 55d05b013b795e0716100d78f0323ff51247e50e Mon Sep 17 00:00:00 2001 From: zmagod Date: Fri, 3 Nov 2017 10:11:23 +0100 Subject: [PATCH 07/17] fix typo --- db/schema.rb | 2 +- db/views/datatables_teams_v01.sql | 2 +- spec/models/datatables/teams_spec.rb | 1 + spec/support/api/schemas/teams.json | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 27ee1c37b..d8c47a9cb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -914,7 +914,7 @@ ActiveRecord::Schema.define(version: 20171026090804) do CASE WHEN (teams.created_by_id = user_teams.user_id) THEN false ELSE true - END AS can_be_leaved, + END AS can_be_left, user_teams.id AS user_team_id, user_teams.user_id FROM (teams diff --git a/db/views/datatables_teams_v01.sql b/db/views/datatables_teams_v01.sql index 25ed66b2a..276290608 100644 --- a/db/views/datatables_teams_v01.sql +++ b/db/views/datatables_teams_v01.sql @@ -7,7 +7,7 @@ SELECT FROM user_teams WHERE user_teams.team_id = teams.id ) AS members, - CASE WHEN teams.created_by_id = user_teams.user_id THEN false ELSE true END AS can_be_leaved, + CASE WHEN teams.created_by_id = user_teams.user_id THEN false ELSE true END AS can_be_left, user_teams.id AS user_team_id, user_teams.user_id AS user_id FROM teams INNER JOIN user_teams ON teams.id=user_teams.team_id diff --git a/spec/models/datatables/teams_spec.rb b/spec/models/datatables/teams_spec.rb index ab740da84..c69c8a82a 100644 --- a/spec/models/datatables/teams_spec.rb +++ b/spec/models/datatables/teams_spec.rb @@ -8,6 +8,7 @@ RSpec.describe Datatables::DatatablesTeam, type: :model do it { should have_db_column :role } it { should have_db_column :user_team_id } it { should have_db_column :user_id } + it { should have_db_column :can_be_left } end describe 'is readonly' do diff --git a/spec/support/api/schemas/teams.json b/spec/support/api/schemas/teams.json index 4e3efbcd4..27ad92d03 100644 --- a/spec/support/api/schemas/teams.json +++ b/spec/support/api/schemas/teams.json @@ -5,13 +5,13 @@ "teams": { "type": "array", "items":{ - "required": ["id", "name", "members", "role", "can_be_leaved", "user_team_id"], + "required": ["id", "name", "members", "role", "can_be_left", "user_team_id"], "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "members": { "type": "integer" }, "role": { "type": "integer" }, - "can_be_leaved": { "type": "boolean" }, + "can_be_left": { "type": "boolean" }, "user_team_id": { "type": "integer" }, "user_id": { "type": "integer" } } From 54e360bb5277c129343ec5a05efa430545ff42ba Mon Sep 17 00:00:00 2001 From: zmagod Date: Mon, 6 Nov 2017 15:14:17 +0100 Subject: [PATCH 08/17] fixes team switch --- .../client_api/teams/teams_controller.rb | 5 + .../Navigation/components/TeamSwitch.jsx | 80 +- .../src/components/actions/TeamsActions.js | 17 +- .../teams/components/TeamsDataTable.jsx | 1 - .../teams/components/TeamsPageDetails.jsx | 4 +- .../SettingsPage/scenes/teams/index.jsx | 7 +- app/javascript/src/services/api/endpoints.js | 9 +- app/javascript/src/services/api/teams_api.js | 23 +- .../teams/current_team.json.jbuilder | 4 + .../client_api/teams/index.json.jbuilder | 2 +- config/routes/teams.rb | 1 + flow-typed/teams_types.js | 6 +- package-lock.json | 1505 ++++++++++++----- .../client_api/teams/teams_controller_spec.rb | 5 + 14 files changed, 1173 insertions(+), 496 deletions(-) create mode 100644 app/views/client_api/teams/current_team.json.jbuilder diff --git a/app/controllers/client_api/teams/teams_controller.rb b/app/controllers/client_api/teams/teams_controller.rb index d19e2bb9d..f003a66da 100644 --- a/app/controllers/client_api/teams/teams_controller.rb +++ b/app/controllers/client_api/teams/teams_controller.rb @@ -56,6 +56,11 @@ module ClientApi error_response(message: error.to_s) end + def current_team + success_response(template: '/client_api/teams/current_team', + locals: { team: current_user.current_team }) + end + private def team_params diff --git a/app/javascript/src/components/Navigation/components/TeamSwitch.jsx b/app/javascript/src/components/Navigation/components/TeamSwitch.jsx index 7ee9259ee..5518074f3 100644 --- a/app/javascript/src/components/Navigation/components/TeamSwitch.jsx +++ b/app/javascript/src/components/Navigation/components/TeamSwitch.jsx @@ -1,29 +1,46 @@ +// @flow import React, { Component } from "react"; import { connect } from "react-redux"; -import PropTypes from "prop-types"; import { FormattedMessage } from "react-intl"; import { NavDropdown, MenuItem, Glyphicon } from "react-bootstrap"; import styled from "styled-components"; import _ from "lodash"; -import { ROOT_PATH } from "../../../config/routes"; +import { ROOT_PATH, SETTINGS_NEW_TEAM_ROUTE } from "../../../config/routes"; import { BORDER_GRAY_COLOR } from "../../../config/constants/colors"; -import { changeTeam } from "../../actions/TeamsActions"; -import { getTeamsList } from "../../actions/TeamsActions"; +import { getCurrentTeam, changeTeam } from "../../actions/TeamsActions"; +import { getTeams } from "../../../services/api/teams_api"; const StyledNavDropdown = styled(NavDropdown)` border-left: 1px solid ${BORDER_GRAY_COLOR}; border-right: 1px solid ${BORDER_GRAY_COLOR}; `; -class TeamSwitch extends Component { - constructor(props) { +type State = { + allTeams: Array +} + +type Props = { + current_team: Teams$CurrentTeam, + eventKey: string, + getCurrentTeam: Function, + changeTeam: Function +} + +class TeamSwitch extends Component { + constructor(props: Props) { super(props); - this.displayTeams = this.displayTeams.bind(this); + (this: any).state = { allTeams: [] }; + (this: any).displayTeams = this.displayTeams.bind(this); + (this: any).setTeams = this.setTeams.bind(this); } componentDidMount() { - this.props.getTeamsList(); + this.props.getCurrentTeam(); + } + + setTeams() { + getTeams().then(response => (this: any).setState({ allTeams: response })); } changeTeam(teamId) { @@ -32,20 +49,21 @@ class TeamSwitch extends Component { } displayTeams() { - if (!_.isEmpty(this.props.all_teams)) { - return this.props.all_teams - .filter(team => !team.current_team) + if (!_.isEmpty((this: any).state.allTeams)) { + return (this: any).state.allTeams + .filter(team => team.id !== this.props.current_team.id) .map(team => ( this.changeTeam(team.id)} key={team.id}> {team.name} )); } + return ; } newTeamLink() { return ( - +   @@ -57,6 +75,7 @@ class TeamSwitch extends Component {  {this.props.current_team.name} @@ -72,38 +91,11 @@ class TeamSwitch extends Component { } } -TeamSwitch.propTypes = { - getTeamsList: PropTypes.func.isRequired, - eventKey: PropTypes.number.isRequired, - changeTeam: PropTypes.func.isRequired, - all_teams: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.number.isRequired, - name: PropTypes.string.isRequired, - current_team: PropTypes.bool.isRequired - }).isRequired - ), - current_team: PropTypes.shape({ - id: PropTypes.number.isRequired, - name: PropTypes.string.isRequired, - current_team: PropTypes.bool.isRequired - }).isRequired -}; - // Map the states from store to component -const mapStateToProps = ({ all_teams, current_team }) => ({ - current_team, - all_teams: all_teams.collection +const mapStateToProps = ({ current_team }) => ({ + current_team }); -// Map the fetch activity action to component -const mapDispatchToProps = dispatch => ({ - changeTeam(teamId) { - dispatch(changeTeam(teamId)); - }, - getTeamsList() { - dispatch(getTeamsList()); - } -}); - -export default connect(mapStateToProps, mapDispatchToProps)(TeamSwitch); +export default connect(mapStateToProps, { getCurrentTeam, changeTeam })( + TeamSwitch +); diff --git a/app/javascript/src/components/actions/TeamsActions.js b/app/javascript/src/components/actions/TeamsActions.js index 3784c4693..cbfa8883b 100644 --- a/app/javascript/src/components/actions/TeamsActions.js +++ b/app/javascript/src/components/actions/TeamsActions.js @@ -5,7 +5,7 @@ import type { Actopm$SetCurrentTeam } from "flow-typed"; import type { Dispatch } from "redux-thunk"; -import { getTeams, changeCurrentTeam } from "../../services/api/teams_api"; +import { getTeams, changeCurrentTeam, fetchCurrentTeam } from "../../services/api/teams_api"; import { GET_LIST_OF_TEAMS, SET_CURRENT_TEAM } from "../../config/action_types"; export function addTeamsData(data: Array): Action$AddTeamData { @@ -15,7 +15,7 @@ export function addTeamsData(data: Array): Action$AddTeamData { }; } -export function setCurrentTeam(team: Teams$Team): Actopm$SetCurrentTeam { +export function setCurrentTeam(team: Teams$CurrentTeam): Actopm$SetCurrentTeam { return { team, type: SET_CURRENT_TEAM @@ -26,9 +26,7 @@ export function getTeamsList(): Dispatch { return dispatch => { getTeams() .then(response => { - const { teams, currentTeam } = response; - dispatch(addTeamsData(teams)); - dispatch(setCurrentTeam(currentTeam)); + dispatch(addTeamsData(response)); }) .catch(error => { console.log("get Teams Error: ", error); @@ -36,13 +34,18 @@ export function getTeamsList(): Dispatch { }; } +export function getCurrentTeam(): Dispatch { + return dispatch => { + fetchCurrentTeam().then(response => dispatch(setCurrentTeam(response))); + }; +} + export function changeTeam(teamID: number): Dispatch { return dispatch => { changeCurrentTeam(teamID) .then(response => { - const { teams, currentTeam } = response; + const { teams } = response; dispatch(addTeamsData(teams)); - dispatch(setCurrentTeam(currentTeam)); }) .catch(error => { console.log("get Teams Error: ", error); diff --git a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx index a1baf336f..19bb229b3 100644 --- a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx +++ b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx @@ -12,7 +12,6 @@ import LeaveTeamModal from "./LeaveTeamModal"; const DefaultTeam = { id: 0, name: "", - current_team: false, user_team_id: 0, role: "", members: 0, diff --git a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsPageDetails.jsx b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsPageDetails.jsx index 1ac444075..1d946b66e 100644 --- a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsPageDetails.jsx +++ b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsPageDetails.jsx @@ -44,10 +44,10 @@ TeamsPageDetails.propTypes = { PropTypes.shape({ id: number.isRequired, name: string.isRequired, - current_team: bool.isRequired, role: string.isRequired, members: number.isRequired, - can_be_left: bool.isRequired + can_be_left: bool.isRequired, + user_team_id: number.isRequired }) ) }; diff --git a/app/javascript/src/scenes/SettingsPage/scenes/teams/index.jsx b/app/javascript/src/scenes/SettingsPage/scenes/teams/index.jsx index b8df7dcd4..4923908ec 100644 --- a/app/javascript/src/scenes/SettingsPage/scenes/teams/index.jsx +++ b/app/javascript/src/scenes/SettingsPage/scenes/teams/index.jsx @@ -1,5 +1,4 @@ // @flow - import React, { Component } from "react"; import styled from "styled-components"; import { Breadcrumb } from "react-bootstrap"; @@ -36,7 +35,7 @@ class SettingsTeams extends Component { { id: 0, name: "", - current_team: true, + user_team_id: 0, role: "", members: 0, can_be_left: false @@ -47,8 +46,8 @@ class SettingsTeams extends Component { } componentDidMount() { - getTeams().then(({ teams }) => { - this.updateTeamsState(teams); + getTeams().then(response => { + this.updateTeamsState(response); }); // set team tab on active this.props.tabState("2"); diff --git a/app/javascript/src/services/api/endpoints.js b/app/javascript/src/services/api/endpoints.js index 88c2002c1..3bc711d1e 100644 --- a/app/javascript/src/services/api/endpoints.js +++ b/app/javascript/src/services/api/endpoints.js @@ -11,14 +11,15 @@ export const TEAMS_PATH = "/client_api/teams"; export const CHANGE_TEAM_PATH = "/client_api/teams/change_team"; export const TEAM_DETAILS_PATH = "/client_api/teams/:team_id/details"; export const TEAM_UPDATE_PATH = "/client_api/teams/update"; -export const CURRENT_USER_PATH = "/client_api/current_user_info" +export const CURRENT_TEAM_PATH = "/client_api/teams/current_team"; // users export const USER_PROFILE_INFO = "/client_api/users/profile_info"; export const UPDATE_USER_PATH = "/client_api/users/update"; -export const PREFERENCES_INFO_PATH = "/client_api/users/preferences_info" -export const STATISTICS_INFO_PATH = "/client_api/users/statistics_info" -export const SIGN_OUT_PATH = "/client_api/users/sign_out_user" +export const PREFERENCES_INFO_PATH = "/client_api/users/preferences_info"; +export const STATISTICS_INFO_PATH = "/client_api/users/statistics_info"; +export const SIGN_OUT_PATH = "/client_api/users/sign_out_user"; +export const CURRENT_USER_PATH = "/client_api/current_user_info"; // info dropdown_title export const CUSTOMER_SUPPORT_LINK = "http://scinote.net/support"; diff --git a/app/javascript/src/services/api/teams_api.js b/app/javascript/src/services/api/teams_api.js index c975e52de..dc8e7dad3 100644 --- a/app/javascript/src/services/api/teams_api.js +++ b/app/javascript/src/services/api/teams_api.js @@ -1,13 +1,13 @@ // @flow import type { Teams$NewTeam, Team$Update } from "flow-typed"; -import _ from "lodash"; import axiosInstance from "./config"; import { TEAM_DETAILS_PATH, TEAM_UPDATE_PATH, TEAMS_PATH, CHANGE_TEAM_PATH, - LEAVE_TEAM_PATH + LEAVE_TEAM_PATH, + CURRENT_TEAM_PATH } from "./endpoints"; export const getTeamDetails = (teamID: number): Promise<*> => { @@ -24,24 +24,21 @@ export const updateTeam = (teamID: number, teamData: Team$Update): Promise<*> => .then(({ data }) => data.team); export const getTeams = (): Promise<*> => - axiosInstance.get(TEAMS_PATH).then(({ data }) => { - const teams = data.teams.collection; - const currentTeam = _.find(teams, team => team.current_team); - return { teams, currentTeam }; - }); + axiosInstance.get(TEAMS_PATH).then(({ data }) => data.teams); export const changeCurrentTeam = (teamID: number): Promise<*> => axiosInstance.post(CHANGE_TEAM_PATH, { team_id: teamID }).then(({ data }) => { - const teams = data.teams.collection; - const currentTeam = _.find(teams, team => team.current_team); - return { teams, currentTeam }; + const teams = data.teams; + return { teams }; }); export const leaveTeam = (teamID: number, userTeamID: number): Promise<*> => { const teamUrl = `${LEAVE_TEAM_PATH}?team=${teamID}&user_team=${userTeamID}`; return axiosInstance.delete(teamUrl).then(({ data }) => { - const teams = data.teams.collection; - const currentTeam = _.find(teams, team => team.current_team); - return { teams, currentTeam }; + const teams = data.teams; + return { teams }; }); }; + +export const fetchCurrentTeam = (): Promise<*> => + axiosInstance.get(CURRENT_TEAM_PATH).then(({ data }) => data.team); diff --git a/app/views/client_api/teams/current_team.json.jbuilder b/app/views/client_api/teams/current_team.json.jbuilder new file mode 100644 index 000000000..34e833e34 --- /dev/null +++ b/app/views/client_api/teams/current_team.json.jbuilder @@ -0,0 +1,4 @@ +json.team do + json.id team.id + json.name team.name +end diff --git a/app/views/client_api/teams/index.json.jbuilder b/app/views/client_api/teams/index.json.jbuilder index e72073a2d..d32ceeda1 100644 --- a/app/views/client_api/teams/index.json.jbuilder +++ b/app/views/client_api/teams/index.json.jbuilder @@ -1,5 +1,5 @@ json.teams do - json.array teams do |team| + json.array! teams do |team| json.id team.id json.name team.name json.members team.members diff --git a/config/routes/teams.rb b/config/routes/teams.rb index dacaea158..c24e867e1 100644 --- a/config/routes/teams.rb +++ b/config/routes/teams.rb @@ -4,6 +4,7 @@ get '/teams', to: 'teams/teams#index' namespace :teams do get '/new', to: 'teams#new' get '/:team_id/details', to: 'teams#details' + get '/current_team', to: 'teams#current_team' post '/', to: 'teams#create' post '/change_team', to: 'teams#change_team' post '/update', to: 'teams#update' diff --git a/flow-typed/teams_types.js b/flow-typed/teams_types.js index e1e9b018c..ad460ca46 100644 --- a/flow-typed/teams_types.js +++ b/flow-typed/teams_types.js @@ -24,9 +24,13 @@ export type Teams$NewTeam = { export type Teams$Team = { id: number, name: string, - current_team: boolean, role: string, members: number, can_be_left: boolean, user_team_id: number }; + +export type Teams$CurrentTeam = { + id: number, + name: string +} diff --git a/package-lock.json b/package-lock.json index 45abc42ef..18e171e1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -133,9 +133,9 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", "dev": true }, "ansi-html": { @@ -299,9 +299,12 @@ "dev": true }, "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "requires": { + "lodash": "4.17.4" + } }, "async-each": { "version": "1.0.1", @@ -425,15 +428,122 @@ } }, "babel-eslint": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", - "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.0.1.tgz", + "integrity": "sha512-h3moF6PCTQE06UjMMG+ydZSBvZ4Q7rqPE/5WAUOvUyHYUTqxm8JVhjZRiG1avI/tGVOK4BnZLDQapyLzh8DeKg==", "dev": true, "requires": { - "babel-code-frame": "6.22.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4" + "babel-code-frame": "7.0.0-beta.0", + "babel-traverse": "7.0.0-beta.0", + "babel-types": "7.0.0-beta.0", + "babylon": "7.0.0-beta.22" + }, + "dependencies": { + "babel-code-frame": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-beta.0.tgz", + "integrity": "sha512-/xr1ADm5bnTjjN+xwoXb7lF4v2rnxMzNZzFU7h8SxB+qB6+IqSTOOqVcpaPTUC2Non/MbQxS3OIZnJpQ2X21aQ==", + "dev": true, + "requires": { + "chalk": "2.0.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-helper-function-name": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-7.0.0-beta.0.tgz", + "integrity": "sha512-DaQccFBBWBEzMdqbKmNXamY0m1yLHJGOdbbEsNoGdJrrU7wAF3wwowtDDPzF0ZT3SqJXPgZW/P2kgBX9moMuAA==", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "7.0.0-beta.0", + "babel-template": "7.0.0-beta.0", + "babel-traverse": "7.0.0-beta.0", + "babel-types": "7.0.0-beta.0" + } + }, + "babel-helper-get-function-arity": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-beta.0.tgz", + "integrity": "sha512-csqAic15/2Vm1951nJxkkL9K8E6ojyNF/eAOjk7pqJlO8kvgrccGNFCV9eDwcGHDPe5AjvJGwVSAcQ5fit9wuA==", + "dev": true, + "requires": { + "babel-types": "7.0.0-beta.0" + } + }, + "babel-messages": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-beta.0.tgz", + "integrity": "sha512-eXdShsm9ZTh9AQhlIaAn6HR3xWpxCnK9ZwIDA9QyjnwTgMctGxHHflw4b4RJ3/ZjTL0Vrmvm0tQXPkp49mTAUw==", + "dev": true + }, + "babel-template": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-beta.0.tgz", + "integrity": "sha512-tmdH+MmmU0F6Ur8humpevSmFzYKbrN3Oru0g5Qyg4R6+sxjnzZmnvzUbsP0aKMr7tB0Ua6xhEb9arKTOsEMkyA==", + "dev": true, + "requires": { + "babel-traverse": "7.0.0-beta.0", + "babel-types": "7.0.0-beta.0", + "babylon": "7.0.0-beta.22", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-beta.0.tgz", + "integrity": "sha512-IKzuTqUcQtMRZ0Vv5RjIrGGj33eBKmNTNeRexWSyjPPuAciyNkva1rt7WXPfHfkb+dX7coRAIUhzeTUEzhnwdA==", + "dev": true, + "requires": { + "babel-code-frame": "7.0.0-beta.0", + "babel-helper-function-name": "7.0.0-beta.0", + "babel-messages": "7.0.0-beta.0", + "babel-types": "7.0.0-beta.0", + "babylon": "7.0.0-beta.22", + "debug": "3.1.0", + "globals": "10.3.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-beta.0.tgz", + "integrity": "sha512-rJc2kV9iPJGLlqIY71AM3nPcdkoeLRCDuR07GFgfd3lFl4TsBQq76TxYQQIZ2MONg1HpsqmuoCXr9aZ1Oa4wYw==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "2.0.0" + } + }, + "babylon": { + "version": "7.0.0-beta.22", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.22.tgz", + "integrity": "sha512-Yl7iT8QGrS8OfR7p6R12AJexQm+brKwrryai4VWZ7NHUbPoZ5al3+klhvl/14shXZiLa7uK//OIFuZ1/RKHgoA==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-10.3.0.tgz", + "integrity": "sha512-1g6qO5vMbiPHbRTDtR9JVjRkAhkgH4nSANYGyx1eOfqgxcMnYMMD+7MjmjfzXjwFpVUE/7/NzF+jQxYE7P4r7A==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "babel-generator": { @@ -967,13 +1077,36 @@ } }, "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "requires": { - "babel-runtime": "6.25.0", - "core-js": "2.4.1", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" + } + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } } }, "babel-preset-env": { @@ -1013,6 +1146,37 @@ "semver": "5.4.1" } }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.24.1" + } + }, "babel-preset-flow": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", @@ -1131,6 +1295,16 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "0.1.1", + "chainsaw": "0.1.0" + } + }, "binary-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", @@ -1171,6 +1345,11 @@ "hoek": "2.16.3" } }, + "bootstrap-sass": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz", + "integrity": "sha1-ZZbHq0D2Y3OTMjqwvIDQZPxjBJg=" + }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", @@ -1288,6 +1467,12 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1391,6 +1576,20 @@ } } }, + "chain-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.0.tgz", + "integrity": "sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w=" + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": "0.3.9" + } + }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", @@ -1401,6 +1600,12 @@ "supports-color": "4.2.1" } }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -1469,18 +1674,18 @@ "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "2.0.0" } }, "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, "cliui": { @@ -1528,9 +1733,9 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "coffee-loader": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/coffee-loader/-/coffee-loader-0.7.3.tgz", - "integrity": "sha1-+tvG79b8fsyIxbMEaiwpIGa8tUo=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/coffee-loader/-/coffee-loader-0.8.0.tgz", + "integrity": "sha512-jMxsuxagYouuhTcf1EoLz8pONTIl5gwuyIdTIOCuArGLQiNc2fS6G7KfTfadb8+hiOfwslhD60wjih2knTnAww==", "requires": { "loader-utils": "1.1.0" } @@ -1594,12 +1799,6 @@ "delayed-stream": "1.0.0" } }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "optional": true - }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1635,13 +1834,12 @@ } }, "compression-webpack-plugin": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-0.4.0.tgz", - "integrity": "sha1-gR3gQhX4EepqEtTYrthFfXWPE6w=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-1.0.1.tgz", + "integrity": "sha512-ABF2AFb31gpIBeEy/w6Ct0u+K+jY8jFRfGwjUWGxVTidA9pf7iH/JzjcVBQ+KB1gNMycujMxA56/PznMPUV5jw==", "requires": { - "async": "0.2.10", - "node-zopfli": "2.0.2", - "webpack-sources": "0.1.5" + "async": "2.4.1", + "webpack-sources": "1.0.2" } }, "concat-map": { @@ -1802,6 +2000,12 @@ "which": "1.2.14" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", @@ -2169,33 +2373,27 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-7.2.3.tgz", "integrity": "sha512-AoFI37QS0S87Ft0r3Bdz4q9xSpm1Paa9lSeKLXgMPk/u/+QPIM5Gy4DHcZQS1seqPJH4gHLauPGn347z0HbsrA==" }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "optional": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "optional": true, - "requires": { - "clone": "1.0.2" - } - }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", @@ -2342,6 +2540,12 @@ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2539,78 +2743,123 @@ } }, "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", + "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", "dev": true, "requires": { + "ajv": "5.3.0", "babel-code-frame": "6.22.0", - "chalk": "1.1.3", + "chalk": "2.3.0", "concat-stream": "1.6.0", - "debug": "2.6.8", + "cross-spawn": "5.1.0", + "debug": "3.1.0", "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.4.3", + "eslint-scope": "3.7.1", + "espree": "3.5.1", "esquery": "1.0.0", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", "glob": "7.1.2", "globals": "9.18.0", - "ignore": "3.3.3", + "ignore": "3.3.7", "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.0", + "inquirer": "3.3.0", "is-resolvable": "1.0.0", - "js-yaml": "3.9.0", + "js-yaml": "3.10.0", "json-stable-stringify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.4", + "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", "optionator": "0.8.2", "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", + "pluralize": "7.0.0", + "progress": "2.0.0", "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", + "semver": "5.4.1", + "strip-ansi": "4.0.0", "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" + "table": "4.0.2", + "text-table": "0.2.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "supports-color": "4.2.1" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -2633,13 +2882,10 @@ } }, "eslint-config-google": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.5.0.tgz", - "integrity": "sha1-W3rxpmZtXvWEB3dp11vROUCC5Vc=", - "dev": true, - "requires": { - "eslint-config-xo": "0.13.0" - } + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.9.1.tgz", + "integrity": "sha512-5A83D+lH0PA81QMESKbLJd/a3ic8tPZtwUmqNrxMRo54nfFaUvtt89q/+icQ+fd66c2xQHn0KyFkzJDoAUfpZA==", + "dev": true }, "eslint-config-prettier": { "version": "2.3.0", @@ -2658,12 +2904,6 @@ } } }, - "eslint-config-xo": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.13.0.tgz", - "integrity": "sha1-+RZ2VDK6Z9L8enF3uLz+8/brBWQ=", - "dev": true - }, "eslint-import-resolver-node": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", @@ -2834,10 +3074,20 @@ "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", "dev": true }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", + "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", "dev": true, "requires": { "acorn": "5.1.1", @@ -2946,11 +3196,10 @@ } } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" }, "expand-brackets": { "version": "0.1.5", @@ -3026,6 +3275,17 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, + "external-editor": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", + "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", + "dev": true, + "requires": { + "iconv-lite": "0.4.18", + "jschardet": "1.6.0", + "tmp": "0.0.33" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -3085,6 +3345,12 @@ "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", "dev": true }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -3127,13 +3393,12 @@ } }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "1.0.5" } }, "file-entry-cache": { @@ -3142,7 +3407,7 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.2.2", + "flat-cache": "1.3.0", "object-assign": "4.1.1" } }, @@ -3226,9 +3491,9 @@ } }, "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { "circular-json": "0.3.3", @@ -3242,6 +3507,102 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" }, + "flow-bin": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.56.0.tgz", + "integrity": "sha1-zkMJIgOjRLqb9jwMq+ldlRRfbK0=", + "dev": true + }, + "flow-typed": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/flow-typed/-/flow-typed-2.2.3.tgz", + "integrity": "sha512-xCKOrKn/DnA4BPbNKyp3s2vW7Pzvff1zJhEdzNviTgwpiEkTG6uxQLjofcqvKdzTyZ/PjHBzkx02iyhP/2NrCg==", + "dev": true, + "requires": { + "babel-polyfill": "6.26.0", + "colors": "1.1.2", + "fs-extra": "4.0.2", + "github": "0.2.4", + "glob": "7.1.2", + "got": "7.1.0", + "md5": "2.2.1", + "mkdirp": "0.5.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.4.1", + "table": "4.0.2", + "through": "2.3.8", + "unzip": "0.1.11", + "which": "1.2.14", + "yargs": "4.8.1" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "lodash.assign": "4.2.0", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "window-size": "0.2.0", + "y18n": "3.2.1", + "yargs-parser": "2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" + } + } + } + }, "follow-redirects": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.4.tgz", @@ -3250,6 +3611,11 @@ "debug": "2.6.8" } }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -3329,22 +3695,17 @@ "rimraf": "2.6.1" } }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, "function-bind": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=" }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -3368,21 +3729,6 @@ "globule": "1.2.0" } }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -3413,6 +3759,15 @@ } } }, + "github": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/github/-/github-0.2.4.tgz", + "integrity": "sha1-JPp/DhP6EblGr5ETTFGYKpHOU4s=", + "dev": true, + "requires": { + "mime": "1.3.4" + } + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -3485,6 +3840,28 @@ } } }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -3531,6 +3908,21 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, + "has-symbol-support-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", + "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.1" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -3729,15 +4121,18 @@ "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" }, "ignore": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", - "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, - "immutable": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.1.tgz", - "integrity": "sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI=" + "immutability-helper": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.4.0.tgz", + "integrity": "sha512-rW/L/56ZMo9NStMK85kFrUFFGy4NeJbCdhfrDHIZrFfxYtuwuxD+dT3mWMcdmrNO61hllc60AeGglCRhfZ1dZw==", + "requires": { + "invariant": "2.2.2" + } }, "imurmurhash": { "version": "0.1.4", @@ -3782,57 +4177,58 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "optional": true - }, "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.1.0", - "figures": "1.7.0", + "ansi-escapes": "3.0.0", + "chalk": "2.0.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.0.5", + "figures": "2.0.0", "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", "through": "2.3.8" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -3850,6 +4246,11 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=" }, + "intl": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz", + "integrity": "sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94=" + }, "intl-format-cache": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.0.5.tgz", @@ -4001,18 +4402,6 @@ "is-extglob": "1.0.0" } }, - "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -4021,6 +4410,12 @@ "kind-of": "3.2.2" } }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -4068,10 +4463,10 @@ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, "is-regex": { @@ -4092,6 +4487,12 @@ "tryit": "1.0.3" } }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -4150,6 +4551,16 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } + }, "javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", @@ -4193,6 +4604,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, + "jschardet": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz", + "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==", + "dev": true + }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", @@ -4250,12 +4667,6 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, "jsprim": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", @@ -4508,6 +4919,12 @@ "signal-exit": "3.0.2" } }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", @@ -4535,6 +4952,42 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" }, + "match-stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", + "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", + "dev": true, + "requires": { + "buffers": "0.1.1", + "readable-stream": "1.0.34" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", @@ -4554,6 +5007,17 @@ "typed-function": "0.10.5" } }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "1.1.5" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4666,6 +5130,12 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, "minimalistic-assert": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", @@ -4713,6 +5183,11 @@ "minimist": "0.0.8" } }, + "moment": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.1.tgz", + "integrity": "sha1-VtoaLRy/AdOLfhr8McELz6GSkWc=" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4735,9 +5210,9 @@ "dev": true }, "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "nan": { @@ -4745,6 +5220,12 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" }, + "natives": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4844,23 +5325,6 @@ } } }, - "node-pre-gyp": { - "version": "0.6.36", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", - "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.2", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.4.1", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, "node-sass": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", @@ -4910,28 +5374,6 @@ } } }, - "node-zopfli": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-zopfli/-/node-zopfli-2.0.2.tgz", - "integrity": "sha1-p6RzrpKq6oXUxo1Fu/LJRMRhFrg=", - "optional": true, - "requires": { - "commander": "2.11.0", - "defaults": "1.0.3", - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -5066,10 +5508,13 @@ } }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } }, "opn": { "version": "4.0.2", @@ -5156,6 +5601,18 @@ "os-tmpdir": "1.0.2" } }, + "over": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", + "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -5180,6 +5637,15 @@ "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=", "dev": true }, + "p-timeout": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.0.tgz", + "integrity": "sha1-mCD5lDTFgXhotPNICe5SkWYNW2w=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -5318,9 +5784,9 @@ } }, "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, "portfinder": { @@ -7446,9 +7912,9 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.5.3.tgz", - "integrity": "sha1-WdrcaDNF7GuI+IuU7Urn4do5S/4=", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.7.4.tgz", + "integrity": "sha1-XoYkrpNjyA+V7GRFhOzfVddPk/o=", "dev": true }, "private": { @@ -7467,9 +7933,9 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, "promise": { @@ -7537,6 +8003,44 @@ "randombytes": "2.0.5" } }, + "pullstream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", + "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", + "dev": true, + "requires": { + "over": "0.0.5", + "readable-stream": "1.0.34", + "setimmediate": "1.0.5", + "slice-stream": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -7637,26 +8141,6 @@ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", "dev": true }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, "react": { "version": "15.6.1", "resolved": "https://registry.npmjs.org/react/-/react-15.6.1.tgz", @@ -7687,6 +8171,17 @@ "warning": "3.0.0" } }, + "react-bootstrap-table": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-bootstrap-table/-/react-bootstrap-table-4.1.1.tgz", + "integrity": "sha1-X26fgh1nnpIPsM3aUv9cad7RYhM=", + "requires": { + "classnames": "2.2.5", + "prop-types": "15.5.10", + "react-modal": "3.1.0", + "react-s-alert": "1.3.2" + } + }, "react-bootstrap-timezone-picker": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/react-bootstrap-timezone-picker/-/react-bootstrap-timezone-picker-1.0.11.tgz", @@ -7696,6 +8191,20 @@ "prop-types": "15.5.10" } }, + "react-data-grid": { + "version": "2.0.71", + "resolved": "https://registry.npmjs.org/react-data-grid/-/react-data-grid-2.0.71.tgz", + "integrity": "sha1-bg2BIYhhVcdXtBKkw79UEEGhAbw=" + }, + "react-document-title": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/react-document-title/-/react-document-title-2.0.3.tgz", + "integrity": "sha1-u/kioNcUEvyUgkXkKDskEt9w8rk=", + "requires": { + "prop-types": "15.5.10", + "react-side-effect": "1.1.3" + } + }, "react-dom": { "version": "15.6.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.1.tgz", @@ -7727,6 +8236,20 @@ "warning": "3.0.0" } }, + "react-modal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.1.0.tgz", + "integrity": "sha512-4sVW7Flm6sdaQeWr8OxXqMOuothdg+jnCA4MqloP65g2iWtOtho8VeI+z3SCsqunWefbuCHCnncxIBmDgPehQQ==", + "requires": { + "exenv": "1.2.2", + "prop-types": "15.5.10" + } + }, + "react-moment": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/react-moment/-/react-moment-0.6.5.tgz", + "integrity": "sha512-W3uG9rvafSEhCFRChW/MwqtmzlMWLM82lfKUulenA/gh3irTdvlIXmWcCCEHQ0RddfQ8X/JuiNoemv1r9JHqrg==" + }, "react-overlays": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.7.0.tgz", @@ -7809,6 +8332,28 @@ "react-router": "4.1.2" } }, + "react-s-alert": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/react-s-alert/-/react-s-alert-1.3.2.tgz", + "integrity": "sha512-6Gz/s5Jw3LbuFR6liD3A4f7w0cDASo1Zas+HaUtUCEm6cVQhgHsUPOBMR9bP8mfiH6KWfRGhiX3t38FbFYrVOg==", + "requires": { + "babel-runtime": "6.25.0" + } + }, + "react-side-effect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.3.tgz", + "integrity": "sha1-USwlq+DewXKDTEAB7FxR4E1BvFw=", + "requires": { + "exenv": "1.2.2", + "shallowequal": "1.0.2" + } + }, + "react-tagsinput": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/react-tagsinput/-/react-tagsinput-3.19.0.tgz", + "integrity": "sha512-ni+/qnZrYrvLg83LtTFHErKy1KQHL0fi0Y6C5jgC1dNUePE9cS/OlQ4XH6JRSjv9GGoeVE0R/ujSBaS1uzCRYQ==" + }, "react-timezone": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/react-timezone/-/react-timezone-0.2.0.tgz", @@ -7817,6 +8362,19 @@ "classnames": "2.2.5" } }, + "react-transition-group": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz", + "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==", + "requires": { + "chain-function": "1.0.0", + "classnames": "2.2.5", + "dom-helpers": "3.2.1", + "loose-envify": "1.3.1", + "prop-types": "15.5.10", + "warning": "3.0.0" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -7888,26 +8446,6 @@ "set-immediate-shim": "1.0.1" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.4.0" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -8160,13 +8698,13 @@ } }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "rework": { @@ -8221,20 +8759,29 @@ } }, "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "once": "1.4.0" + "is-promise": "2.1.0" } }, "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "dev": true }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -8457,6 +9004,11 @@ } } }, + "shallowequal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz", + "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -8470,16 +9022,10 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.0.3", - "rechoir": "0.6.2" - } + "shortid": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.8.tgz", + "integrity": "sha1-AzsRfWoul1gE9vCWnb59PQs1UTE=" }, "signal-exit": { "version": "3.0.2", @@ -8492,10 +9038,56 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "slice-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", + "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", + "dev": true, + "requires": { + "readable-stream": "1.0.34" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } }, "sntp": { "version": "1.0.9", @@ -8704,14 +9296,6 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -8722,6 +9306,14 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -8759,7 +9351,8 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "style-loader": { "version": "0.18.2", @@ -8862,24 +9455,30 @@ "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" }, "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", + "ajv": "5.3.0", + "ajv-keywords": "2.1.0", + "chalk": "2.3.0", "lodash": "4.17.4", - "slice-ansi": "0.0.4", + "slice-ansi": "1.0.0", "string-width": "2.1.1" }, "dependencies": { - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } }, "ansi-regex": { "version": "3.0.0", @@ -8887,23 +9486,15 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "supports-color": "4.2.1" } }, "is-fullwidth-code-point": { @@ -8920,24 +9511,16 @@ "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -8956,22 +9539,6 @@ "inherits": "2.0.3" } }, - "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.3", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, "tcomb": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-2.7.0.tgz", @@ -8995,6 +9562,12 @@ "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", "dev": true }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, "timers-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", @@ -9008,6 +9581,15 @@ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.0.tgz", "integrity": "sha1-utMnrbGAS0KiMa+nQVMr2ITNCa0=" }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -9026,6 +9608,12 @@ "punycode": "1.4.1" } }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -9166,12 +9754,6 @@ } } }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "optional": true - }, "uncontrollable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", @@ -9198,12 +9780,79 @@ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unzip": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", + "integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=", + "dev": true, + "requires": { + "binary": "0.3.0", + "fstream": "0.1.31", + "match-stream": "0.0.2", + "pullstream": "0.4.1", + "readable-stream": "1.0.34", + "setimmediate": "1.0.5" + }, + "dependencies": { + "fstream": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "dev": true, + "requires": { + "graceful-fs": "3.0.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "1.1.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -9243,15 +9892,21 @@ } } }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "prepend-http": "1.0.4" } }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -9676,12 +10331,24 @@ } }, "webpack-sources": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", - "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.2.tgz", + "integrity": "sha512-Y7UddMCv6dGjy81nBv6nuQeFFIt5aalHm7uyDsAsW86nZwfOVPGRr3XMjEQLaT+WKo8rlzhC9qtbJvYKLtAwaw==", "requires": { - "source-list-map": "0.1.8", - "source-map": "0.5.6" + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "websocket-driver": { diff --git a/spec/controllers/client_api/teams/teams_controller_spec.rb b/spec/controllers/client_api/teams/teams_controller_spec.rb index 2ffd1484b..8785e207d 100644 --- a/spec/controllers/client_api/teams/teams_controller_spec.rb +++ b/spec/controllers/client_api/teams/teams_controller_spec.rb @@ -128,4 +128,9 @@ describe ClientApi::Teams::TeamsController, type: :controller do expect(response).to have_http_status(:unprocessable_entity) end end + + describe 'GET #current_team' do + let(:subject) { get :current_team, as: :json } + it { is_expected.to have_http_status(:ok) } + end end From 3255d5cf7cb9be9b0ef6d524ad943226b7b93516 Mon Sep 17 00:00:00 2001 From: zmagod Date: Mon, 6 Nov 2017 15:37:09 +0100 Subject: [PATCH 09/17] code cleanup --- .../components/Navigation/components/TeamSwitch.jsx | 4 +++- .../src/components/actions/TeamsActions.js | 11 ++++++----- .../scenes/teams/components/LeaveTeamModal.jsx | 13 ++++++------- app/javascript/src/services/api/teams_api.js | 12 ++++-------- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/app/javascript/src/components/Navigation/components/TeamSwitch.jsx b/app/javascript/src/components/Navigation/components/TeamSwitch.jsx index 5518074f3..88ccc0f72 100644 --- a/app/javascript/src/components/Navigation/components/TeamSwitch.jsx +++ b/app/javascript/src/components/Navigation/components/TeamSwitch.jsx @@ -45,7 +45,9 @@ class TeamSwitch extends Component { changeTeam(teamId) { this.props.changeTeam(teamId); - window.location = ROOT_PATH; + setTimeout(() => { + window.location = ROOT_PATH; + }, 1500); } displayTeams() { diff --git a/app/javascript/src/components/actions/TeamsActions.js b/app/javascript/src/components/actions/TeamsActions.js index cbfa8883b..8daeb6cc2 100644 --- a/app/javascript/src/components/actions/TeamsActions.js +++ b/app/javascript/src/components/actions/TeamsActions.js @@ -5,7 +5,11 @@ import type { Actopm$SetCurrentTeam } from "flow-typed"; import type { Dispatch } from "redux-thunk"; -import { getTeams, changeCurrentTeam, fetchCurrentTeam } from "../../services/api/teams_api"; +import { + getTeams, + changeCurrentTeam, + fetchCurrentTeam +} from "../../services/api/teams_api"; import { GET_LIST_OF_TEAMS, SET_CURRENT_TEAM } from "../../config/action_types"; export function addTeamsData(data: Array): Action$AddTeamData { @@ -43,10 +47,7 @@ export function getCurrentTeam(): Dispatch { export function changeTeam(teamID: number): Dispatch { return dispatch => { changeCurrentTeam(teamID) - .then(response => { - const { teams } = response; - dispatch(addTeamsData(teams)); - }) + .then(response => dispatch(addTeamsData(response))) .catch(error => { console.log("get Teams Error: ", error); }); diff --git a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx index b246d1e3d..feaa33253 100644 --- a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx +++ b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx @@ -8,7 +8,7 @@ import { leaveTeam } from "../../../../../services/api/teams_api"; import { addTeamsData, - setCurrentTeam + getCurrentTeam } from "../../../../../components/actions/TeamsActions"; type Team = { @@ -23,7 +23,7 @@ type Props = { team: Team, addTeamsData: Function, hideLeaveTeamModal: Function, - setCurrentTeam: Function + getCurrentTeam: Function }; class LeaveTeamModal extends Component { @@ -41,10 +41,9 @@ class LeaveTeamModal extends Component { const { id, user_team_id } = this.props.team; leaveTeam(id, user_team_id) .then(response => { - const { teams, currentTeam } = response; - this.props.updateTeamsState(teams); - this.props.addTeamsData(teams); - this.props.setCurrentTeam(currentTeam); + this.props.updateTeamsState(response); + this.props.addTeamsData(response); + this.props.getCurrentTeam(); }) .catch(error => { console.log("error: ", error.response.data.message); @@ -101,5 +100,5 @@ class LeaveTeamModal extends Component { export default connect(null, { addTeamsData, - setCurrentTeam + getCurrentTeam })(LeaveTeamModal); diff --git a/app/javascript/src/services/api/teams_api.js b/app/javascript/src/services/api/teams_api.js index dc8e7dad3..5015ed68c 100644 --- a/app/javascript/src/services/api/teams_api.js +++ b/app/javascript/src/services/api/teams_api.js @@ -27,17 +27,13 @@ export const getTeams = (): Promise<*> => axiosInstance.get(TEAMS_PATH).then(({ data }) => data.teams); export const changeCurrentTeam = (teamID: number): Promise<*> => - axiosInstance.post(CHANGE_TEAM_PATH, { team_id: teamID }).then(({ data }) => { - const teams = data.teams; - return { teams }; - }); + axiosInstance + .post(CHANGE_TEAM_PATH, { team_id: teamID }) + .then(({ data }) => data.teams); export const leaveTeam = (teamID: number, userTeamID: number): Promise<*> => { const teamUrl = `${LEAVE_TEAM_PATH}?team=${teamID}&user_team=${userTeamID}`; - return axiosInstance.delete(teamUrl).then(({ data }) => { - const teams = data.teams; - return { teams }; - }); + return axiosInstance.delete(teamUrl).then(({ data }) => data.teams); }; export const fetchCurrentTeam = (): Promise<*> => From df835fccb4870a7c0cada058da4cd224bc833d06 Mon Sep 17 00:00:00 2001 From: mlorb Date: Tue, 7 Nov 2017 11:09:30 +0100 Subject: [PATCH 10/17] fix bug with import css styles --- app/javascript/packs/styles.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/packs/styles.scss b/app/javascript/packs/styles.scss index 431483806..61e30dc72 100644 --- a/app/javascript/packs/styles.scss +++ b/app/javascript/packs/styles.scss @@ -5,5 +5,6 @@ $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; @import "~font-awesome/scss/font-awesome"; @import "~react-bootstrap-table/dist/react-bootstrap-table.min"; @import "react-tagsinput/react-tagsinput.css"; +@import "react-bootstrap-timezone-picker/dist/react-bootstrap-timezone-picker.min.css"; @import "../src/styles/main"; From 157b1968cc4be695c51c845dcf3320af5303c9fe Mon Sep 17 00:00:00 2001 From: mlorb Date: Tue, 7 Nov 2017 17:18:41 +0100 Subject: [PATCH 11/17] implement login's feature integration tests --- .../src/components/AlertsContainer/index.jsx | 2 +- features/login.feature | 47 ---------------- features/settings_page/profile.feature | 2 +- features/settings_page/team.feature | 2 +- features/sign_up_log_in/log_in.feature | 53 +++++++++++++++++++ .../sign_up.feature | 1 + features/step_definitions/shared_steps.rb | 8 ++- features/step_definitions/users_steps.rb | 11 +++- 8 files changed, 74 insertions(+), 52 deletions(-) delete mode 100644 features/login.feature create mode 100644 features/sign_up_log_in/log_in.feature rename features/{sign_in_sign_up => sign_up_log_in}/sign_up.feature (99%) diff --git a/app/javascript/src/components/AlertsContainer/index.jsx b/app/javascript/src/components/AlertsContainer/index.jsx index 04587fb83..b2731495d 100644 --- a/app/javascript/src/components/AlertsContainer/index.jsx +++ b/app/javascript/src/components/AlertsContainer/index.jsx @@ -32,7 +32,7 @@ class AlertsContainer extends Component { render() { return ( - + {this.props.alerts.map((alert) => Date: Tue, 7 Nov 2017 17:30:15 +0100 Subject: [PATCH 12/17] Update code per @ZmagoD's request --- .../validation/components/ValidatedFormControl.jsx | 1 + .../validation/components/ValidatedSubmitButton.jsx | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/javascript/src/components/validation/components/ValidatedFormControl.jsx b/app/javascript/src/components/validation/components/ValidatedFormControl.jsx index de7b548ff..01a89e9ed 100644 --- a/app/javascript/src/components/validation/components/ValidatedFormControl.jsx +++ b/app/javascript/src/components/validation/components/ValidatedFormControl.jsx @@ -4,6 +4,7 @@ import * as React from "react"; import { FormControl } from "react-bootstrap"; import type { ValidationError } from "flow-typed"; import PropTypes from "prop-types"; +import _ from "lodash"; type Props = { tag: string, diff --git a/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx b/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx index 1b7ef236a..535a056f8 100644 --- a/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx +++ b/app/javascript/src/components/validation/components/ValidatedSubmitButton.jsx @@ -1,11 +1,12 @@ // @flow -import * as React from "react"; +import React from "react"; import { Button } from "react-bootstrap"; import PropTypes from "prop-types"; +import type { Node } from 'react'; type Props = { - children?: React.Node + children?: Node }; const ValidatedSubmitButton = (props: Props, context: any) => From 7cb159c1a3d76eefe73377d7c26d95dec136aae1 Mon Sep 17 00:00:00 2001 From: Luka Murn Date: Tue, 7 Nov 2017 17:31:12 +0100 Subject: [PATCH 13/17] Add updated flow-types --- flow-typed/npm/axios_v0.16.x.js | 6 +- ...lugin-transform-react-jsx-source_vx.x.x.js | 32 + flow-typed/npm/babel-polyfill_vx.x.x.js | 4 +- flow-typed/npm/bootstrap-sass_vx.x.x.js | 137 + flow-typed/npm/font-awesome_vx.x.x.js | 18 + flow-typed/npm/intl_vx.x.x.js | 5078 +++++++++++++++++ flow-typed/npm/lodash_v4.x.x.js | 4647 +++++++++++---- flow-typed/npm/moment_v2.3.x.js | 495 +- flow-typed/npm/prettier-eslint_vx.x.x.js | 39 + flow-typed/npm/react-document-title_vx.x.x.js | 45 + flow-typed/npm/react-intl_v2.x.x.js | 4 +- flow-typed/npm/react-redux_v5.x.x.js | 34 +- flow-typed/npm/redux_v3.x.x.js | 54 +- 13 files changed, 9145 insertions(+), 1448 deletions(-) create mode 100644 flow-typed/npm/babel-plugin-transform-react-jsx-source_vx.x.x.js create mode 100644 flow-typed/npm/bootstrap-sass_vx.x.x.js create mode 100644 flow-typed/npm/font-awesome_vx.x.x.js create mode 100644 flow-typed/npm/intl_vx.x.x.js create mode 100644 flow-typed/npm/prettier-eslint_vx.x.x.js create mode 100644 flow-typed/npm/react-document-title_vx.x.x.js diff --git a/flow-typed/npm/axios_v0.16.x.js b/flow-typed/npm/axios_v0.16.x.js index fe098492a..4a616fcde 100644 --- a/flow-typed/npm/axios_v0.16.x.js +++ b/flow-typed/npm/axios_v0.16.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: c788eedb73f0df0fed02bf99c0b49bcc -// flow-typed version: 2adcdf60cc/axios_v0.16.x/flow_>=v0.25.x +// flow-typed signature: 783541c5bb930cc2cb39610705a4adc1 +// flow-typed version: d84de54b07/axios_v0.16.x/flow_>=v0.25.x declare module 'axios' { declare interface ProxyConfig { @@ -60,7 +60,7 @@ declare module 'axios' { declare class AxiosXHR { config: AxiosXHRConfig; data: T; - headers: Object; + headers?: Object; status: number; statusText: string, request: http$ClientRequest | XMLHttpRequest diff --git a/flow-typed/npm/babel-plugin-transform-react-jsx-source_vx.x.x.js b/flow-typed/npm/babel-plugin-transform-react-jsx-source_vx.x.x.js new file mode 100644 index 000000000..12319f888 --- /dev/null +++ b/flow-typed/npm/babel-plugin-transform-react-jsx-source_vx.x.x.js @@ -0,0 +1,32 @@ +// flow-typed signature: 94a58ea1333bada1e79278664744bcec +// flow-typed version: <>/babel-plugin-transform-react-jsx-source_v^6.22.0/flow_v0.56.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'babel-plugin-transform-react-jsx-source' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'babel-plugin-transform-react-jsx-source' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'babel-plugin-transform-react-jsx-source/lib/index' { + declare module.exports: any; +} + +// Filename aliases +declare module 'babel-plugin-transform-react-jsx-source/lib/index.js' { + declare module.exports: $Exports<'babel-plugin-transform-react-jsx-source/lib/index'>; +} diff --git a/flow-typed/npm/babel-polyfill_vx.x.x.js b/flow-typed/npm/babel-polyfill_vx.x.x.js index fdf84ef64..566b1000a 100644 --- a/flow-typed/npm/babel-polyfill_vx.x.x.js +++ b/flow-typed/npm/babel-polyfill_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 7f2ed99d320afda9cbf973047b8b7ef6 -// flow-typed version: <>/babel-polyfill_v^6.23.0/flow_v0.56.0 +// flow-typed signature: 1eab6798ddbdf14d95637c19e547522a +// flow-typed version: <>/babel-polyfill_v^6.26.0/flow_v0.56.0 /** * This is an autogenerated libdef stub for: diff --git a/flow-typed/npm/bootstrap-sass_vx.x.x.js b/flow-typed/npm/bootstrap-sass_vx.x.x.js new file mode 100644 index 000000000..0afc6e807 --- /dev/null +++ b/flow-typed/npm/bootstrap-sass_vx.x.x.js @@ -0,0 +1,137 @@ +// flow-typed signature: 3b2debf5c802e09acb220a975e00957c +// flow-typed version: <>/bootstrap-sass_v^3.3.7/flow_v0.56.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'bootstrap-sass' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'bootstrap-sass' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'bootstrap-sass/assets/javascripts/bootstrap-sprockets' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap.min' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/affix' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/alert' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/button' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/carousel' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/collapse' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/dropdown' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/modal' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/popover' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/scrollspy' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/tab' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/tooltip' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/assets/javascripts/bootstrap/transition' { + declare module.exports: any; +} + +declare module 'bootstrap-sass/eyeglass-exports' { + declare module.exports: any; +} + +// Filename aliases +declare module 'bootstrap-sass/assets/javascripts/bootstrap-sprockets.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap-sprockets'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap.min.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap.min'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/affix.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/affix'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/alert.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/alert'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/button.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/button'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/carousel.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/carousel'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/collapse.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/collapse'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/dropdown.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/dropdown'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/modal.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/modal'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/popover.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/popover'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/scrollspy'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/tab.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/tab'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/tooltip.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/tooltip'>; +} +declare module 'bootstrap-sass/assets/javascripts/bootstrap/transition.js' { + declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/transition'>; +} +declare module 'bootstrap-sass/eyeglass-exports.js' { + declare module.exports: $Exports<'bootstrap-sass/eyeglass-exports'>; +} diff --git a/flow-typed/npm/font-awesome_vx.x.x.js b/flow-typed/npm/font-awesome_vx.x.x.js new file mode 100644 index 000000000..cb086ea58 --- /dev/null +++ b/flow-typed/npm/font-awesome_vx.x.x.js @@ -0,0 +1,18 @@ +// flow-typed signature: c9429fa13146f6e9952156452792cf3a +// flow-typed version: <>/font-awesome_v^4.7.0/flow_v0.56.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'font-awesome' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'font-awesome' { + declare module.exports: any; +} diff --git a/flow-typed/npm/intl_vx.x.x.js b/flow-typed/npm/intl_vx.x.x.js new file mode 100644 index 000000000..de2c9955b --- /dev/null +++ b/flow-typed/npm/intl_vx.x.x.js @@ -0,0 +1,5078 @@ +// flow-typed signature: f41ea1b205f7eba3f7089d566f99c7b3 +// flow-typed version: <>/intl_v^1.2.5/flow_v0.56.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'intl' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'intl' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'intl/dist/Intl.complete' { + declare module.exports: any; +} + +declare module 'intl/dist/Intl' { + declare module.exports: any; +} + +declare module 'intl/dist/Intl.min' { + declare module.exports: any; +} + +declare module 'intl/lib/core' { + declare module.exports: any; +} + +declare module 'intl/locale-data/complete' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/af-NA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/af-ZA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/af' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/agq-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/agq' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ak-GH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ak' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/am-ET' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/am' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-001' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-AE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-BH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-DJ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-DZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-EG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-EH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-ER' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-IL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-IQ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-JO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-KM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-KW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-LB' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-LY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-MA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-MR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-OM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-PS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-QA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-SA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-SD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-SO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-SS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-SY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-TD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-TN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar-YE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ar' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/as-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/as' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/asa-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/asa' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ast-ES' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ast' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/az-Arab' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/az-Cyrl-AZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/az-Cyrl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/az-Latn-AZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/az-Latn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/az' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bas-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bas' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/be-BY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/be' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bem-ZM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bem' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bez-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bez' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bg-BG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bg' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bm-ML' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bm-Nkoo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bm' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bn-BD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bn-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bo-CN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bo-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/br-FR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/br' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/brx-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/brx' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bs-Cyrl-BA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bs-Cyrl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bs-Latn-BA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bs-Latn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/bs' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ca-AD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ca-ES-VALENCIA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ca-ES' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ca-FR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ca-IT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ca' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ce-RU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ce' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cgg-UG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cgg' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/chr-US' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/chr' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ckb-IQ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ckb-IR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ckb' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cs-CZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cs' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cu-RU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cu' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cy-GB' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/cy' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/da-DK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/da-GL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/da' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dav-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dav' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/de-AT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/de-BE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/de-CH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/de-DE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/de-LI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/de-LU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/de' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dje-NE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dje' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dsb-DE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dsb' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dua-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dua' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dyo-SN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dyo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dz-BT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/dz' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ebu-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ebu' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ee-GH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ee-TG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ee' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/el-CY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/el-GR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/el' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-001' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-150' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-AG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-AI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-AS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-AT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-AU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-BB' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-BE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-BI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-BM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-BS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-BW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-BZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-CA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-CC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-CH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-CK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-CX' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-CY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-DE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-DG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-DK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-DM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-Dsrt' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-ER' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-FI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-FJ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-FK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-FM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GB' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-GY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-HK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-IE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-IL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-IM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-IO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-JE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-JM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-KI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-KN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-KY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-LC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-LR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-LS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MP' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-MY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-NA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-NF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-NG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-NL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-NR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-NU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-NZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-PG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-PH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-PK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-PN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-PR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-PW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-RW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SB' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-Shaw' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SX' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-SZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-TC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-TK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-TO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-TT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-TV' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-UG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-UM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-US' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-VC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-VG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-VI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-VU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-WS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-ZA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-ZM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en-ZW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/en' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/eo-001' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/eo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-419' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-AR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-BO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-CL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-CO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-CR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-CU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-DO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-EA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-EC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-ES' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-GQ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-GT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-HN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-IC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-MX' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-NI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-PA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-PE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-PH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-PR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-PY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-SV' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-US' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-UY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es-VE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/es' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/et-EE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/et' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/eu-ES' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/eu' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ewo-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ewo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fa-AF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fa-IR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fa' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ff-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ff-GN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ff-MR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ff-SN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ff' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fi-FI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fi' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fil-PH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fil' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fo-DK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fo-FO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-BE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-BF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-BI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-BJ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-BL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-CA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-CD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-CF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-CG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-CH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-CI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-DJ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-DZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-FR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-GA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-GF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-GN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-GP' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-GQ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-HT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-KM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-LU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-MA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-MC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-MF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-MG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-ML' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-MQ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-MR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-MU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-NC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-NE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-PF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-PM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-RE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-RW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-SC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-SN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-SY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-TD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-TG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-TN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-VU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-WF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr-YT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fr' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fur-IT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fur' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fy-NL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/fy' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ga-IE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ga' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gd-GB' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gd' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gl-ES' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gsw-CH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gsw-FR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gsw-LI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gsw' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gu-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gu' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/guz-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/guz' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gv-IM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/gv' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ha-Arab' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ha-GH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ha-NE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ha-NG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ha' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/haw-US' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/haw' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/he-IL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/he' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hi-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hi' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hr-BA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hr-HR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hr' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hsb-DE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hsb' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hu-HU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hu' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hy-AM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/hy' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/id-ID' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/id' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ig-NG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ig' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ii-CN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ii' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/is-IS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/is' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/it-CH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/it-IT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/it-SM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/it' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/iu-Latn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ja-JP' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ja' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/jgo-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/jgo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/jmc-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/jmc' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ka-GE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ka' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kab-DZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kab' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kam-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kam' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kde-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kde' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kea-CV' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kea' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/khq-ML' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/khq' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ki-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ki' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kk-KZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kk' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kkj-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kkj' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kl-GL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kln-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kln' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/km-KH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/km' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kn-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ko-KP' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ko-KR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ko' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kok-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kok' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ks-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ks' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ksb-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ksb' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ksf-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ksf' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ksh-DE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ksh' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kw-GB' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/kw' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ky-KG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ky' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lag-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lag' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lb-LU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lb' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lg-UG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lg' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lkt-US' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lkt' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ln-AO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ln-CD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ln-CF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ln-CG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ln' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lo-LA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lrc-IQ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lrc-IR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lrc' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lt-LT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lt' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lu-CD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lu' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/luo-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/luo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/luy-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/luy' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lv-LV' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/lv' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mas-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mas-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mas' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mer-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mer' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mfe-MU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mfe' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mg-MG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mg' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mgh-MZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mgh' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mgo-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mgo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mk-MK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mk' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ml-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ml' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mn-MN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mn-Mong' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mr-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mr' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ms-Arab' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ms-BN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ms-MY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ms-SG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ms' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mt-MT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mt' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mua-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mua' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/my-MM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/my' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mzn-IR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/mzn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/naq-NA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/naq' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nb-NO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nb-SJ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nb' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nd-ZW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nd' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ne-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ne-NP' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ne' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl-AW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl-BE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl-BQ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl-CW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl-NL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl-SR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl-SX' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nmg-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nmg' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nn-NO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nnh-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nnh' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nus-SS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nus' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nyn-UG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/nyn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/om-ET' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/om-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/om' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/or-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/or' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/os-GE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/os-RU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/os' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pa-Arab-PK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pa-Arab' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pa-Guru-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pa-Guru' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pa' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pl-PL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/prg-001' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/prg' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ps-AF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ps' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-AO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-BR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-CV' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-GW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-MO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-MZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-PT' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-ST' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt-TL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/pt' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/qu-BO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/qu-EC' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/qu-PE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/qu' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rm-CH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rm' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rn-BI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ro-MD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ro-RO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ro' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rof-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rof' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/root' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ru-BY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ru-KG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ru-KZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ru-MD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ru-RU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ru-UA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ru' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rw-RW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rw' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rwk-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/rwk' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sah-RU' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sah' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/saq-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/saq' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sbp-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sbp' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/se-FI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/se-NO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/se-SE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/se' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/seh-MZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/seh' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ses-ML' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ses' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sg-CF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sg' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/shi-Latn-MA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/shi-Latn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/shi-Tfng-MA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/shi-Tfng' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/shi' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/si-LK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/si' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sk-SK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sk' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sl-SI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/smn-FI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/smn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sn-ZW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/so-DJ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/so-ET' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/so-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/so-SO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/so' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sq-AL' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sq-MK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sq-XK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sq' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Cyrl-BA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Cyrl-ME' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Cyrl-RS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Cyrl-XK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Cyrl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Latn-BA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Latn-ME' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Latn-RS' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Latn-XK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr-Latn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sr' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sv-AX' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sv-FI' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sv-SE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sv' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sw-CD' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sw-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sw-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sw-UG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/sw' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ta-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ta-LK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ta-MY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ta-SG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ta' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/te-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/te' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/teo-KE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/teo-UG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/teo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/th-TH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/th' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ti-ER' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ti-ET' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ti' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/tk-TM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/tk' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/to-TO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/to' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/tr-CY' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/tr-TR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/tr' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/twq-NE' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/twq' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/tzm-MA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/tzm' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ug-CN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ug' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uk-UA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uk' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ur-IN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ur-PK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/ur' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uz-Arab-AF' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uz-Arab' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uz-Cyrl-UZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uz-Cyrl' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uz-Latn-UZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uz-Latn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/uz' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vai-Latn-LR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vai-Latn' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vai-Vaii-LR' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vai-Vaii' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vai' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vi-VN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vi' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vo-001' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vun-TZ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/vun' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/wae-CH' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/wae' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/xog-UG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/xog' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/yav-CM' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/yav' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/yi-001' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/yi' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/yo-BJ' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/yo-NG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/yo' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zgh-MA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zgh' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hans-CN' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hans-HK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hans-MO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hans-SG' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hans' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hant-HK' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hant-MO' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hant-TW' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh-Hant' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zh' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zu-ZA' { + declare module.exports: any; +} + +declare module 'intl/locale-data/jsonp/zu' { + declare module.exports: any; +} + +// Filename aliases +declare module 'intl/dist/Intl.complete.js' { + declare module.exports: $Exports<'intl/dist/Intl.complete'>; +} +declare module 'intl/dist/Intl.js' { + declare module.exports: $Exports<'intl/dist/Intl'>; +} +declare module 'intl/dist/Intl.min.js' { + declare module.exports: $Exports<'intl/dist/Intl.min'>; +} +declare module 'intl/index' { + declare module.exports: $Exports<'intl'>; +} +declare module 'intl/index.js' { + declare module.exports: $Exports<'intl'>; +} +declare module 'intl/lib/core.js' { + declare module.exports: $Exports<'intl/lib/core'>; +} +declare module 'intl/locale-data/complete.js' { + declare module.exports: $Exports<'intl/locale-data/complete'>; +} +declare module 'intl/locale-data/jsonp/af-NA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/af-NA'>; +} +declare module 'intl/locale-data/jsonp/af-ZA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/af-ZA'>; +} +declare module 'intl/locale-data/jsonp/af.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/af'>; +} +declare module 'intl/locale-data/jsonp/agq-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/agq-CM'>; +} +declare module 'intl/locale-data/jsonp/agq.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/agq'>; +} +declare module 'intl/locale-data/jsonp/ak-GH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ak-GH'>; +} +declare module 'intl/locale-data/jsonp/ak.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ak'>; +} +declare module 'intl/locale-data/jsonp/am-ET.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/am-ET'>; +} +declare module 'intl/locale-data/jsonp/am.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/am'>; +} +declare module 'intl/locale-data/jsonp/ar-001.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-001'>; +} +declare module 'intl/locale-data/jsonp/ar-AE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-AE'>; +} +declare module 'intl/locale-data/jsonp/ar-BH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-BH'>; +} +declare module 'intl/locale-data/jsonp/ar-DJ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-DJ'>; +} +declare module 'intl/locale-data/jsonp/ar-DZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-DZ'>; +} +declare module 'intl/locale-data/jsonp/ar-EG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-EG'>; +} +declare module 'intl/locale-data/jsonp/ar-EH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-EH'>; +} +declare module 'intl/locale-data/jsonp/ar-ER.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-ER'>; +} +declare module 'intl/locale-data/jsonp/ar-IL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-IL'>; +} +declare module 'intl/locale-data/jsonp/ar-IQ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-IQ'>; +} +declare module 'intl/locale-data/jsonp/ar-JO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-JO'>; +} +declare module 'intl/locale-data/jsonp/ar-KM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-KM'>; +} +declare module 'intl/locale-data/jsonp/ar-KW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-KW'>; +} +declare module 'intl/locale-data/jsonp/ar-LB.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-LB'>; +} +declare module 'intl/locale-data/jsonp/ar-LY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-LY'>; +} +declare module 'intl/locale-data/jsonp/ar-MA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-MA'>; +} +declare module 'intl/locale-data/jsonp/ar-MR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-MR'>; +} +declare module 'intl/locale-data/jsonp/ar-OM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-OM'>; +} +declare module 'intl/locale-data/jsonp/ar-PS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-PS'>; +} +declare module 'intl/locale-data/jsonp/ar-QA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-QA'>; +} +declare module 'intl/locale-data/jsonp/ar-SA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-SA'>; +} +declare module 'intl/locale-data/jsonp/ar-SD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-SD'>; +} +declare module 'intl/locale-data/jsonp/ar-SO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-SO'>; +} +declare module 'intl/locale-data/jsonp/ar-SS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-SS'>; +} +declare module 'intl/locale-data/jsonp/ar-SY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-SY'>; +} +declare module 'intl/locale-data/jsonp/ar-TD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-TD'>; +} +declare module 'intl/locale-data/jsonp/ar-TN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-TN'>; +} +declare module 'intl/locale-data/jsonp/ar-YE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar-YE'>; +} +declare module 'intl/locale-data/jsonp/ar.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ar'>; +} +declare module 'intl/locale-data/jsonp/as-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/as-IN'>; +} +declare module 'intl/locale-data/jsonp/as.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/as'>; +} +declare module 'intl/locale-data/jsonp/asa-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/asa-TZ'>; +} +declare module 'intl/locale-data/jsonp/asa.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/asa'>; +} +declare module 'intl/locale-data/jsonp/ast-ES.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ast-ES'>; +} +declare module 'intl/locale-data/jsonp/ast.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ast'>; +} +declare module 'intl/locale-data/jsonp/az-Arab.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/az-Arab'>; +} +declare module 'intl/locale-data/jsonp/az-Cyrl-AZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/az-Cyrl-AZ'>; +} +declare module 'intl/locale-data/jsonp/az-Cyrl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/az-Cyrl'>; +} +declare module 'intl/locale-data/jsonp/az-Latn-AZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/az-Latn-AZ'>; +} +declare module 'intl/locale-data/jsonp/az-Latn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/az-Latn'>; +} +declare module 'intl/locale-data/jsonp/az.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/az'>; +} +declare module 'intl/locale-data/jsonp/bas-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bas-CM'>; +} +declare module 'intl/locale-data/jsonp/bas.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bas'>; +} +declare module 'intl/locale-data/jsonp/be-BY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/be-BY'>; +} +declare module 'intl/locale-data/jsonp/be.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/be'>; +} +declare module 'intl/locale-data/jsonp/bem-ZM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bem-ZM'>; +} +declare module 'intl/locale-data/jsonp/bem.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bem'>; +} +declare module 'intl/locale-data/jsonp/bez-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bez-TZ'>; +} +declare module 'intl/locale-data/jsonp/bez.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bez'>; +} +declare module 'intl/locale-data/jsonp/bg-BG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bg-BG'>; +} +declare module 'intl/locale-data/jsonp/bg.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bg'>; +} +declare module 'intl/locale-data/jsonp/bm-ML.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bm-ML'>; +} +declare module 'intl/locale-data/jsonp/bm-Nkoo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bm-Nkoo'>; +} +declare module 'intl/locale-data/jsonp/bm.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bm'>; +} +declare module 'intl/locale-data/jsonp/bn-BD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bn-BD'>; +} +declare module 'intl/locale-data/jsonp/bn-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bn-IN'>; +} +declare module 'intl/locale-data/jsonp/bn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bn'>; +} +declare module 'intl/locale-data/jsonp/bo-CN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bo-CN'>; +} +declare module 'intl/locale-data/jsonp/bo-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bo-IN'>; +} +declare module 'intl/locale-data/jsonp/bo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bo'>; +} +declare module 'intl/locale-data/jsonp/br-FR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/br-FR'>; +} +declare module 'intl/locale-data/jsonp/br.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/br'>; +} +declare module 'intl/locale-data/jsonp/brx-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/brx-IN'>; +} +declare module 'intl/locale-data/jsonp/brx.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/brx'>; +} +declare module 'intl/locale-data/jsonp/bs-Cyrl-BA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bs-Cyrl-BA'>; +} +declare module 'intl/locale-data/jsonp/bs-Cyrl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bs-Cyrl'>; +} +declare module 'intl/locale-data/jsonp/bs-Latn-BA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bs-Latn-BA'>; +} +declare module 'intl/locale-data/jsonp/bs-Latn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bs-Latn'>; +} +declare module 'intl/locale-data/jsonp/bs.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/bs'>; +} +declare module 'intl/locale-data/jsonp/ca-AD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ca-AD'>; +} +declare module 'intl/locale-data/jsonp/ca-ES-VALENCIA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ca-ES-VALENCIA'>; +} +declare module 'intl/locale-data/jsonp/ca-ES.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ca-ES'>; +} +declare module 'intl/locale-data/jsonp/ca-FR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ca-FR'>; +} +declare module 'intl/locale-data/jsonp/ca-IT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ca-IT'>; +} +declare module 'intl/locale-data/jsonp/ca.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ca'>; +} +declare module 'intl/locale-data/jsonp/ce-RU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ce-RU'>; +} +declare module 'intl/locale-data/jsonp/ce.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ce'>; +} +declare module 'intl/locale-data/jsonp/cgg-UG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cgg-UG'>; +} +declare module 'intl/locale-data/jsonp/cgg.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cgg'>; +} +declare module 'intl/locale-data/jsonp/chr-US.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/chr-US'>; +} +declare module 'intl/locale-data/jsonp/chr.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/chr'>; +} +declare module 'intl/locale-data/jsonp/ckb-IQ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ckb-IQ'>; +} +declare module 'intl/locale-data/jsonp/ckb-IR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ckb-IR'>; +} +declare module 'intl/locale-data/jsonp/ckb.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ckb'>; +} +declare module 'intl/locale-data/jsonp/cs-CZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cs-CZ'>; +} +declare module 'intl/locale-data/jsonp/cs.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cs'>; +} +declare module 'intl/locale-data/jsonp/cu-RU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cu-RU'>; +} +declare module 'intl/locale-data/jsonp/cu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cu'>; +} +declare module 'intl/locale-data/jsonp/cy-GB.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cy-GB'>; +} +declare module 'intl/locale-data/jsonp/cy.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/cy'>; +} +declare module 'intl/locale-data/jsonp/da-DK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/da-DK'>; +} +declare module 'intl/locale-data/jsonp/da-GL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/da-GL'>; +} +declare module 'intl/locale-data/jsonp/da.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/da'>; +} +declare module 'intl/locale-data/jsonp/dav-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dav-KE'>; +} +declare module 'intl/locale-data/jsonp/dav.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dav'>; +} +declare module 'intl/locale-data/jsonp/de-AT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/de-AT'>; +} +declare module 'intl/locale-data/jsonp/de-BE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/de-BE'>; +} +declare module 'intl/locale-data/jsonp/de-CH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/de-CH'>; +} +declare module 'intl/locale-data/jsonp/de-DE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/de-DE'>; +} +declare module 'intl/locale-data/jsonp/de-LI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/de-LI'>; +} +declare module 'intl/locale-data/jsonp/de-LU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/de-LU'>; +} +declare module 'intl/locale-data/jsonp/de.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/de'>; +} +declare module 'intl/locale-data/jsonp/dje-NE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dje-NE'>; +} +declare module 'intl/locale-data/jsonp/dje.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dje'>; +} +declare module 'intl/locale-data/jsonp/dsb-DE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dsb-DE'>; +} +declare module 'intl/locale-data/jsonp/dsb.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dsb'>; +} +declare module 'intl/locale-data/jsonp/dua-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dua-CM'>; +} +declare module 'intl/locale-data/jsonp/dua.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dua'>; +} +declare module 'intl/locale-data/jsonp/dyo-SN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dyo-SN'>; +} +declare module 'intl/locale-data/jsonp/dyo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dyo'>; +} +declare module 'intl/locale-data/jsonp/dz-BT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dz-BT'>; +} +declare module 'intl/locale-data/jsonp/dz.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/dz'>; +} +declare module 'intl/locale-data/jsonp/ebu-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ebu-KE'>; +} +declare module 'intl/locale-data/jsonp/ebu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ebu'>; +} +declare module 'intl/locale-data/jsonp/ee-GH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ee-GH'>; +} +declare module 'intl/locale-data/jsonp/ee-TG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ee-TG'>; +} +declare module 'intl/locale-data/jsonp/ee.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ee'>; +} +declare module 'intl/locale-data/jsonp/el-CY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/el-CY'>; +} +declare module 'intl/locale-data/jsonp/el-GR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/el-GR'>; +} +declare module 'intl/locale-data/jsonp/el.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/el'>; +} +declare module 'intl/locale-data/jsonp/en-001.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-001'>; +} +declare module 'intl/locale-data/jsonp/en-150.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-150'>; +} +declare module 'intl/locale-data/jsonp/en-AG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-AG'>; +} +declare module 'intl/locale-data/jsonp/en-AI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-AI'>; +} +declare module 'intl/locale-data/jsonp/en-AS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-AS'>; +} +declare module 'intl/locale-data/jsonp/en-AT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-AT'>; +} +declare module 'intl/locale-data/jsonp/en-AU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-AU'>; +} +declare module 'intl/locale-data/jsonp/en-BB.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-BB'>; +} +declare module 'intl/locale-data/jsonp/en-BE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-BE'>; +} +declare module 'intl/locale-data/jsonp/en-BI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-BI'>; +} +declare module 'intl/locale-data/jsonp/en-BM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-BM'>; +} +declare module 'intl/locale-data/jsonp/en-BS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-BS'>; +} +declare module 'intl/locale-data/jsonp/en-BW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-BW'>; +} +declare module 'intl/locale-data/jsonp/en-BZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-BZ'>; +} +declare module 'intl/locale-data/jsonp/en-CA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-CA'>; +} +declare module 'intl/locale-data/jsonp/en-CC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-CC'>; +} +declare module 'intl/locale-data/jsonp/en-CH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-CH'>; +} +declare module 'intl/locale-data/jsonp/en-CK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-CK'>; +} +declare module 'intl/locale-data/jsonp/en-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-CM'>; +} +declare module 'intl/locale-data/jsonp/en-CX.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-CX'>; +} +declare module 'intl/locale-data/jsonp/en-CY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-CY'>; +} +declare module 'intl/locale-data/jsonp/en-DE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-DE'>; +} +declare module 'intl/locale-data/jsonp/en-DG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-DG'>; +} +declare module 'intl/locale-data/jsonp/en-DK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-DK'>; +} +declare module 'intl/locale-data/jsonp/en-DM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-DM'>; +} +declare module 'intl/locale-data/jsonp/en-Dsrt.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-Dsrt'>; +} +declare module 'intl/locale-data/jsonp/en-ER.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-ER'>; +} +declare module 'intl/locale-data/jsonp/en-FI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-FI'>; +} +declare module 'intl/locale-data/jsonp/en-FJ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-FJ'>; +} +declare module 'intl/locale-data/jsonp/en-FK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-FK'>; +} +declare module 'intl/locale-data/jsonp/en-FM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-FM'>; +} +declare module 'intl/locale-data/jsonp/en-GB.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GB'>; +} +declare module 'intl/locale-data/jsonp/en-GD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GD'>; +} +declare module 'intl/locale-data/jsonp/en-GG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GG'>; +} +declare module 'intl/locale-data/jsonp/en-GH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GH'>; +} +declare module 'intl/locale-data/jsonp/en-GI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GI'>; +} +declare module 'intl/locale-data/jsonp/en-GM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GM'>; +} +declare module 'intl/locale-data/jsonp/en-GU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GU'>; +} +declare module 'intl/locale-data/jsonp/en-GY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-GY'>; +} +declare module 'intl/locale-data/jsonp/en-HK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-HK'>; +} +declare module 'intl/locale-data/jsonp/en-IE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-IE'>; +} +declare module 'intl/locale-data/jsonp/en-IL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-IL'>; +} +declare module 'intl/locale-data/jsonp/en-IM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-IM'>; +} +declare module 'intl/locale-data/jsonp/en-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-IN'>; +} +declare module 'intl/locale-data/jsonp/en-IO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-IO'>; +} +declare module 'intl/locale-data/jsonp/en-JE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-JE'>; +} +declare module 'intl/locale-data/jsonp/en-JM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-JM'>; +} +declare module 'intl/locale-data/jsonp/en-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-KE'>; +} +declare module 'intl/locale-data/jsonp/en-KI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-KI'>; +} +declare module 'intl/locale-data/jsonp/en-KN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-KN'>; +} +declare module 'intl/locale-data/jsonp/en-KY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-KY'>; +} +declare module 'intl/locale-data/jsonp/en-LC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-LC'>; +} +declare module 'intl/locale-data/jsonp/en-LR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-LR'>; +} +declare module 'intl/locale-data/jsonp/en-LS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-LS'>; +} +declare module 'intl/locale-data/jsonp/en-MG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MG'>; +} +declare module 'intl/locale-data/jsonp/en-MH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MH'>; +} +declare module 'intl/locale-data/jsonp/en-MO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MO'>; +} +declare module 'intl/locale-data/jsonp/en-MP.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MP'>; +} +declare module 'intl/locale-data/jsonp/en-MS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MS'>; +} +declare module 'intl/locale-data/jsonp/en-MT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MT'>; +} +declare module 'intl/locale-data/jsonp/en-MU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MU'>; +} +declare module 'intl/locale-data/jsonp/en-MW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MW'>; +} +declare module 'intl/locale-data/jsonp/en-MY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-MY'>; +} +declare module 'intl/locale-data/jsonp/en-NA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-NA'>; +} +declare module 'intl/locale-data/jsonp/en-NF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-NF'>; +} +declare module 'intl/locale-data/jsonp/en-NG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-NG'>; +} +declare module 'intl/locale-data/jsonp/en-NL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-NL'>; +} +declare module 'intl/locale-data/jsonp/en-NR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-NR'>; +} +declare module 'intl/locale-data/jsonp/en-NU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-NU'>; +} +declare module 'intl/locale-data/jsonp/en-NZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-NZ'>; +} +declare module 'intl/locale-data/jsonp/en-PG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-PG'>; +} +declare module 'intl/locale-data/jsonp/en-PH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-PH'>; +} +declare module 'intl/locale-data/jsonp/en-PK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-PK'>; +} +declare module 'intl/locale-data/jsonp/en-PN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-PN'>; +} +declare module 'intl/locale-data/jsonp/en-PR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-PR'>; +} +declare module 'intl/locale-data/jsonp/en-PW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-PW'>; +} +declare module 'intl/locale-data/jsonp/en-RW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-RW'>; +} +declare module 'intl/locale-data/jsonp/en-SB.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SB'>; +} +declare module 'intl/locale-data/jsonp/en-SC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SC'>; +} +declare module 'intl/locale-data/jsonp/en-SD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SD'>; +} +declare module 'intl/locale-data/jsonp/en-SE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SE'>; +} +declare module 'intl/locale-data/jsonp/en-SG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SG'>; +} +declare module 'intl/locale-data/jsonp/en-SH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SH'>; +} +declare module 'intl/locale-data/jsonp/en-Shaw.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-Shaw'>; +} +declare module 'intl/locale-data/jsonp/en-SI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SI'>; +} +declare module 'intl/locale-data/jsonp/en-SL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SL'>; +} +declare module 'intl/locale-data/jsonp/en-SS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SS'>; +} +declare module 'intl/locale-data/jsonp/en-SX.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SX'>; +} +declare module 'intl/locale-data/jsonp/en-SZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-SZ'>; +} +declare module 'intl/locale-data/jsonp/en-TC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-TC'>; +} +declare module 'intl/locale-data/jsonp/en-TK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-TK'>; +} +declare module 'intl/locale-data/jsonp/en-TO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-TO'>; +} +declare module 'intl/locale-data/jsonp/en-TT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-TT'>; +} +declare module 'intl/locale-data/jsonp/en-TV.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-TV'>; +} +declare module 'intl/locale-data/jsonp/en-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-TZ'>; +} +declare module 'intl/locale-data/jsonp/en-UG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-UG'>; +} +declare module 'intl/locale-data/jsonp/en-UM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-UM'>; +} +declare module 'intl/locale-data/jsonp/en-US.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-US'>; +} +declare module 'intl/locale-data/jsonp/en-VC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-VC'>; +} +declare module 'intl/locale-data/jsonp/en-VG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-VG'>; +} +declare module 'intl/locale-data/jsonp/en-VI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-VI'>; +} +declare module 'intl/locale-data/jsonp/en-VU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-VU'>; +} +declare module 'intl/locale-data/jsonp/en-WS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-WS'>; +} +declare module 'intl/locale-data/jsonp/en-ZA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-ZA'>; +} +declare module 'intl/locale-data/jsonp/en-ZM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-ZM'>; +} +declare module 'intl/locale-data/jsonp/en-ZW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en-ZW'>; +} +declare module 'intl/locale-data/jsonp/en.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/en'>; +} +declare module 'intl/locale-data/jsonp/eo-001.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/eo-001'>; +} +declare module 'intl/locale-data/jsonp/eo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/eo'>; +} +declare module 'intl/locale-data/jsonp/es-419.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-419'>; +} +declare module 'intl/locale-data/jsonp/es-AR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-AR'>; +} +declare module 'intl/locale-data/jsonp/es-BO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-BO'>; +} +declare module 'intl/locale-data/jsonp/es-CL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-CL'>; +} +declare module 'intl/locale-data/jsonp/es-CO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-CO'>; +} +declare module 'intl/locale-data/jsonp/es-CR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-CR'>; +} +declare module 'intl/locale-data/jsonp/es-CU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-CU'>; +} +declare module 'intl/locale-data/jsonp/es-DO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-DO'>; +} +declare module 'intl/locale-data/jsonp/es-EA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-EA'>; +} +declare module 'intl/locale-data/jsonp/es-EC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-EC'>; +} +declare module 'intl/locale-data/jsonp/es-ES.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-ES'>; +} +declare module 'intl/locale-data/jsonp/es-GQ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-GQ'>; +} +declare module 'intl/locale-data/jsonp/es-GT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-GT'>; +} +declare module 'intl/locale-data/jsonp/es-HN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-HN'>; +} +declare module 'intl/locale-data/jsonp/es-IC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-IC'>; +} +declare module 'intl/locale-data/jsonp/es-MX.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-MX'>; +} +declare module 'intl/locale-data/jsonp/es-NI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-NI'>; +} +declare module 'intl/locale-data/jsonp/es-PA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-PA'>; +} +declare module 'intl/locale-data/jsonp/es-PE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-PE'>; +} +declare module 'intl/locale-data/jsonp/es-PH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-PH'>; +} +declare module 'intl/locale-data/jsonp/es-PR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-PR'>; +} +declare module 'intl/locale-data/jsonp/es-PY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-PY'>; +} +declare module 'intl/locale-data/jsonp/es-SV.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-SV'>; +} +declare module 'intl/locale-data/jsonp/es-US.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-US'>; +} +declare module 'intl/locale-data/jsonp/es-UY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-UY'>; +} +declare module 'intl/locale-data/jsonp/es-VE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es-VE'>; +} +declare module 'intl/locale-data/jsonp/es.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/es'>; +} +declare module 'intl/locale-data/jsonp/et-EE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/et-EE'>; +} +declare module 'intl/locale-data/jsonp/et.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/et'>; +} +declare module 'intl/locale-data/jsonp/eu-ES.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/eu-ES'>; +} +declare module 'intl/locale-data/jsonp/eu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/eu'>; +} +declare module 'intl/locale-data/jsonp/ewo-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ewo-CM'>; +} +declare module 'intl/locale-data/jsonp/ewo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ewo'>; +} +declare module 'intl/locale-data/jsonp/fa-AF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fa-AF'>; +} +declare module 'intl/locale-data/jsonp/fa-IR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fa-IR'>; +} +declare module 'intl/locale-data/jsonp/fa.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fa'>; +} +declare module 'intl/locale-data/jsonp/ff-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ff-CM'>; +} +declare module 'intl/locale-data/jsonp/ff-GN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ff-GN'>; +} +declare module 'intl/locale-data/jsonp/ff-MR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ff-MR'>; +} +declare module 'intl/locale-data/jsonp/ff-SN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ff-SN'>; +} +declare module 'intl/locale-data/jsonp/ff.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ff'>; +} +declare module 'intl/locale-data/jsonp/fi-FI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fi-FI'>; +} +declare module 'intl/locale-data/jsonp/fi.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fi'>; +} +declare module 'intl/locale-data/jsonp/fil-PH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fil-PH'>; +} +declare module 'intl/locale-data/jsonp/fil.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fil'>; +} +declare module 'intl/locale-data/jsonp/fo-DK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fo-DK'>; +} +declare module 'intl/locale-data/jsonp/fo-FO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fo-FO'>; +} +declare module 'intl/locale-data/jsonp/fo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fo'>; +} +declare module 'intl/locale-data/jsonp/fr-BE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-BE'>; +} +declare module 'intl/locale-data/jsonp/fr-BF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-BF'>; +} +declare module 'intl/locale-data/jsonp/fr-BI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-BI'>; +} +declare module 'intl/locale-data/jsonp/fr-BJ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-BJ'>; +} +declare module 'intl/locale-data/jsonp/fr-BL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-BL'>; +} +declare module 'intl/locale-data/jsonp/fr-CA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-CA'>; +} +declare module 'intl/locale-data/jsonp/fr-CD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-CD'>; +} +declare module 'intl/locale-data/jsonp/fr-CF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-CF'>; +} +declare module 'intl/locale-data/jsonp/fr-CG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-CG'>; +} +declare module 'intl/locale-data/jsonp/fr-CH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-CH'>; +} +declare module 'intl/locale-data/jsonp/fr-CI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-CI'>; +} +declare module 'intl/locale-data/jsonp/fr-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-CM'>; +} +declare module 'intl/locale-data/jsonp/fr-DJ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-DJ'>; +} +declare module 'intl/locale-data/jsonp/fr-DZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-DZ'>; +} +declare module 'intl/locale-data/jsonp/fr-FR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-FR'>; +} +declare module 'intl/locale-data/jsonp/fr-GA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-GA'>; +} +declare module 'intl/locale-data/jsonp/fr-GF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-GF'>; +} +declare module 'intl/locale-data/jsonp/fr-GN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-GN'>; +} +declare module 'intl/locale-data/jsonp/fr-GP.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-GP'>; +} +declare module 'intl/locale-data/jsonp/fr-GQ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-GQ'>; +} +declare module 'intl/locale-data/jsonp/fr-HT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-HT'>; +} +declare module 'intl/locale-data/jsonp/fr-KM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-KM'>; +} +declare module 'intl/locale-data/jsonp/fr-LU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-LU'>; +} +declare module 'intl/locale-data/jsonp/fr-MA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-MA'>; +} +declare module 'intl/locale-data/jsonp/fr-MC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-MC'>; +} +declare module 'intl/locale-data/jsonp/fr-MF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-MF'>; +} +declare module 'intl/locale-data/jsonp/fr-MG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-MG'>; +} +declare module 'intl/locale-data/jsonp/fr-ML.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-ML'>; +} +declare module 'intl/locale-data/jsonp/fr-MQ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-MQ'>; +} +declare module 'intl/locale-data/jsonp/fr-MR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-MR'>; +} +declare module 'intl/locale-data/jsonp/fr-MU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-MU'>; +} +declare module 'intl/locale-data/jsonp/fr-NC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-NC'>; +} +declare module 'intl/locale-data/jsonp/fr-NE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-NE'>; +} +declare module 'intl/locale-data/jsonp/fr-PF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-PF'>; +} +declare module 'intl/locale-data/jsonp/fr-PM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-PM'>; +} +declare module 'intl/locale-data/jsonp/fr-RE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-RE'>; +} +declare module 'intl/locale-data/jsonp/fr-RW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-RW'>; +} +declare module 'intl/locale-data/jsonp/fr-SC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-SC'>; +} +declare module 'intl/locale-data/jsonp/fr-SN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-SN'>; +} +declare module 'intl/locale-data/jsonp/fr-SY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-SY'>; +} +declare module 'intl/locale-data/jsonp/fr-TD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-TD'>; +} +declare module 'intl/locale-data/jsonp/fr-TG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-TG'>; +} +declare module 'intl/locale-data/jsonp/fr-TN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-TN'>; +} +declare module 'intl/locale-data/jsonp/fr-VU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-VU'>; +} +declare module 'intl/locale-data/jsonp/fr-WF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-WF'>; +} +declare module 'intl/locale-data/jsonp/fr-YT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr-YT'>; +} +declare module 'intl/locale-data/jsonp/fr.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fr'>; +} +declare module 'intl/locale-data/jsonp/fur-IT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fur-IT'>; +} +declare module 'intl/locale-data/jsonp/fur.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fur'>; +} +declare module 'intl/locale-data/jsonp/fy-NL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fy-NL'>; +} +declare module 'intl/locale-data/jsonp/fy.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/fy'>; +} +declare module 'intl/locale-data/jsonp/ga-IE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ga-IE'>; +} +declare module 'intl/locale-data/jsonp/ga.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ga'>; +} +declare module 'intl/locale-data/jsonp/gd-GB.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gd-GB'>; +} +declare module 'intl/locale-data/jsonp/gd.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gd'>; +} +declare module 'intl/locale-data/jsonp/gl-ES.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gl-ES'>; +} +declare module 'intl/locale-data/jsonp/gl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gl'>; +} +declare module 'intl/locale-data/jsonp/gsw-CH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gsw-CH'>; +} +declare module 'intl/locale-data/jsonp/gsw-FR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gsw-FR'>; +} +declare module 'intl/locale-data/jsonp/gsw-LI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gsw-LI'>; +} +declare module 'intl/locale-data/jsonp/gsw.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gsw'>; +} +declare module 'intl/locale-data/jsonp/gu-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gu-IN'>; +} +declare module 'intl/locale-data/jsonp/gu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gu'>; +} +declare module 'intl/locale-data/jsonp/guz-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/guz-KE'>; +} +declare module 'intl/locale-data/jsonp/guz.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/guz'>; +} +declare module 'intl/locale-data/jsonp/gv-IM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gv-IM'>; +} +declare module 'intl/locale-data/jsonp/gv.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/gv'>; +} +declare module 'intl/locale-data/jsonp/ha-Arab.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ha-Arab'>; +} +declare module 'intl/locale-data/jsonp/ha-GH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ha-GH'>; +} +declare module 'intl/locale-data/jsonp/ha-NE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ha-NE'>; +} +declare module 'intl/locale-data/jsonp/ha-NG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ha-NG'>; +} +declare module 'intl/locale-data/jsonp/ha.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ha'>; +} +declare module 'intl/locale-data/jsonp/haw-US.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/haw-US'>; +} +declare module 'intl/locale-data/jsonp/haw.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/haw'>; +} +declare module 'intl/locale-data/jsonp/he-IL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/he-IL'>; +} +declare module 'intl/locale-data/jsonp/he.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/he'>; +} +declare module 'intl/locale-data/jsonp/hi-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hi-IN'>; +} +declare module 'intl/locale-data/jsonp/hi.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hi'>; +} +declare module 'intl/locale-data/jsonp/hr-BA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hr-BA'>; +} +declare module 'intl/locale-data/jsonp/hr-HR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hr-HR'>; +} +declare module 'intl/locale-data/jsonp/hr.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hr'>; +} +declare module 'intl/locale-data/jsonp/hsb-DE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hsb-DE'>; +} +declare module 'intl/locale-data/jsonp/hsb.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hsb'>; +} +declare module 'intl/locale-data/jsonp/hu-HU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hu-HU'>; +} +declare module 'intl/locale-data/jsonp/hu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hu'>; +} +declare module 'intl/locale-data/jsonp/hy-AM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hy-AM'>; +} +declare module 'intl/locale-data/jsonp/hy.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/hy'>; +} +declare module 'intl/locale-data/jsonp/id-ID.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/id-ID'>; +} +declare module 'intl/locale-data/jsonp/id.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/id'>; +} +declare module 'intl/locale-data/jsonp/ig-NG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ig-NG'>; +} +declare module 'intl/locale-data/jsonp/ig.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ig'>; +} +declare module 'intl/locale-data/jsonp/ii-CN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ii-CN'>; +} +declare module 'intl/locale-data/jsonp/ii.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ii'>; +} +declare module 'intl/locale-data/jsonp/is-IS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/is-IS'>; +} +declare module 'intl/locale-data/jsonp/is.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/is'>; +} +declare module 'intl/locale-data/jsonp/it-CH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/it-CH'>; +} +declare module 'intl/locale-data/jsonp/it-IT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/it-IT'>; +} +declare module 'intl/locale-data/jsonp/it-SM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/it-SM'>; +} +declare module 'intl/locale-data/jsonp/it.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/it'>; +} +declare module 'intl/locale-data/jsonp/iu-Latn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/iu-Latn'>; +} +declare module 'intl/locale-data/jsonp/ja-JP.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ja-JP'>; +} +declare module 'intl/locale-data/jsonp/ja.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ja'>; +} +declare module 'intl/locale-data/jsonp/jgo-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/jgo-CM'>; +} +declare module 'intl/locale-data/jsonp/jgo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/jgo'>; +} +declare module 'intl/locale-data/jsonp/jmc-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/jmc-TZ'>; +} +declare module 'intl/locale-data/jsonp/jmc.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/jmc'>; +} +declare module 'intl/locale-data/jsonp/ka-GE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ka-GE'>; +} +declare module 'intl/locale-data/jsonp/ka.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ka'>; +} +declare module 'intl/locale-data/jsonp/kab-DZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kab-DZ'>; +} +declare module 'intl/locale-data/jsonp/kab.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kab'>; +} +declare module 'intl/locale-data/jsonp/kam-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kam-KE'>; +} +declare module 'intl/locale-data/jsonp/kam.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kam'>; +} +declare module 'intl/locale-data/jsonp/kde-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kde-TZ'>; +} +declare module 'intl/locale-data/jsonp/kde.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kde'>; +} +declare module 'intl/locale-data/jsonp/kea-CV.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kea-CV'>; +} +declare module 'intl/locale-data/jsonp/kea.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kea'>; +} +declare module 'intl/locale-data/jsonp/khq-ML.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/khq-ML'>; +} +declare module 'intl/locale-data/jsonp/khq.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/khq'>; +} +declare module 'intl/locale-data/jsonp/ki-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ki-KE'>; +} +declare module 'intl/locale-data/jsonp/ki.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ki'>; +} +declare module 'intl/locale-data/jsonp/kk-KZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kk-KZ'>; +} +declare module 'intl/locale-data/jsonp/kk.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kk'>; +} +declare module 'intl/locale-data/jsonp/kkj-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kkj-CM'>; +} +declare module 'intl/locale-data/jsonp/kkj.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kkj'>; +} +declare module 'intl/locale-data/jsonp/kl-GL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kl-GL'>; +} +declare module 'intl/locale-data/jsonp/kl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kl'>; +} +declare module 'intl/locale-data/jsonp/kln-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kln-KE'>; +} +declare module 'intl/locale-data/jsonp/kln.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kln'>; +} +declare module 'intl/locale-data/jsonp/km-KH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/km-KH'>; +} +declare module 'intl/locale-data/jsonp/km.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/km'>; +} +declare module 'intl/locale-data/jsonp/kn-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kn-IN'>; +} +declare module 'intl/locale-data/jsonp/kn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kn'>; +} +declare module 'intl/locale-data/jsonp/ko-KP.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ko-KP'>; +} +declare module 'intl/locale-data/jsonp/ko-KR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ko-KR'>; +} +declare module 'intl/locale-data/jsonp/ko.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ko'>; +} +declare module 'intl/locale-data/jsonp/kok-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kok-IN'>; +} +declare module 'intl/locale-data/jsonp/kok.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kok'>; +} +declare module 'intl/locale-data/jsonp/ks-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ks-IN'>; +} +declare module 'intl/locale-data/jsonp/ks.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ks'>; +} +declare module 'intl/locale-data/jsonp/ksb-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ksb-TZ'>; +} +declare module 'intl/locale-data/jsonp/ksb.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ksb'>; +} +declare module 'intl/locale-data/jsonp/ksf-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ksf-CM'>; +} +declare module 'intl/locale-data/jsonp/ksf.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ksf'>; +} +declare module 'intl/locale-data/jsonp/ksh-DE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ksh-DE'>; +} +declare module 'intl/locale-data/jsonp/ksh.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ksh'>; +} +declare module 'intl/locale-data/jsonp/kw-GB.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kw-GB'>; +} +declare module 'intl/locale-data/jsonp/kw.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/kw'>; +} +declare module 'intl/locale-data/jsonp/ky-KG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ky-KG'>; +} +declare module 'intl/locale-data/jsonp/ky.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ky'>; +} +declare module 'intl/locale-data/jsonp/lag-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lag-TZ'>; +} +declare module 'intl/locale-data/jsonp/lag.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lag'>; +} +declare module 'intl/locale-data/jsonp/lb-LU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lb-LU'>; +} +declare module 'intl/locale-data/jsonp/lb.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lb'>; +} +declare module 'intl/locale-data/jsonp/lg-UG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lg-UG'>; +} +declare module 'intl/locale-data/jsonp/lg.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lg'>; +} +declare module 'intl/locale-data/jsonp/lkt-US.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lkt-US'>; +} +declare module 'intl/locale-data/jsonp/lkt.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lkt'>; +} +declare module 'intl/locale-data/jsonp/ln-AO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ln-AO'>; +} +declare module 'intl/locale-data/jsonp/ln-CD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ln-CD'>; +} +declare module 'intl/locale-data/jsonp/ln-CF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ln-CF'>; +} +declare module 'intl/locale-data/jsonp/ln-CG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ln-CG'>; +} +declare module 'intl/locale-data/jsonp/ln.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ln'>; +} +declare module 'intl/locale-data/jsonp/lo-LA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lo-LA'>; +} +declare module 'intl/locale-data/jsonp/lo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lo'>; +} +declare module 'intl/locale-data/jsonp/lrc-IQ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lrc-IQ'>; +} +declare module 'intl/locale-data/jsonp/lrc-IR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lrc-IR'>; +} +declare module 'intl/locale-data/jsonp/lrc.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lrc'>; +} +declare module 'intl/locale-data/jsonp/lt-LT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lt-LT'>; +} +declare module 'intl/locale-data/jsonp/lt.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lt'>; +} +declare module 'intl/locale-data/jsonp/lu-CD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lu-CD'>; +} +declare module 'intl/locale-data/jsonp/lu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lu'>; +} +declare module 'intl/locale-data/jsonp/luo-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/luo-KE'>; +} +declare module 'intl/locale-data/jsonp/luo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/luo'>; +} +declare module 'intl/locale-data/jsonp/luy-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/luy-KE'>; +} +declare module 'intl/locale-data/jsonp/luy.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/luy'>; +} +declare module 'intl/locale-data/jsonp/lv-LV.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lv-LV'>; +} +declare module 'intl/locale-data/jsonp/lv.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/lv'>; +} +declare module 'intl/locale-data/jsonp/mas-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mas-KE'>; +} +declare module 'intl/locale-data/jsonp/mas-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mas-TZ'>; +} +declare module 'intl/locale-data/jsonp/mas.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mas'>; +} +declare module 'intl/locale-data/jsonp/mer-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mer-KE'>; +} +declare module 'intl/locale-data/jsonp/mer.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mer'>; +} +declare module 'intl/locale-data/jsonp/mfe-MU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mfe-MU'>; +} +declare module 'intl/locale-data/jsonp/mfe.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mfe'>; +} +declare module 'intl/locale-data/jsonp/mg-MG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mg-MG'>; +} +declare module 'intl/locale-data/jsonp/mg.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mg'>; +} +declare module 'intl/locale-data/jsonp/mgh-MZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mgh-MZ'>; +} +declare module 'intl/locale-data/jsonp/mgh.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mgh'>; +} +declare module 'intl/locale-data/jsonp/mgo-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mgo-CM'>; +} +declare module 'intl/locale-data/jsonp/mgo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mgo'>; +} +declare module 'intl/locale-data/jsonp/mk-MK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mk-MK'>; +} +declare module 'intl/locale-data/jsonp/mk.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mk'>; +} +declare module 'intl/locale-data/jsonp/ml-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ml-IN'>; +} +declare module 'intl/locale-data/jsonp/ml.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ml'>; +} +declare module 'intl/locale-data/jsonp/mn-MN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mn-MN'>; +} +declare module 'intl/locale-data/jsonp/mn-Mong.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mn-Mong'>; +} +declare module 'intl/locale-data/jsonp/mn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mn'>; +} +declare module 'intl/locale-data/jsonp/mr-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mr-IN'>; +} +declare module 'intl/locale-data/jsonp/mr.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mr'>; +} +declare module 'intl/locale-data/jsonp/ms-Arab.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ms-Arab'>; +} +declare module 'intl/locale-data/jsonp/ms-BN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ms-BN'>; +} +declare module 'intl/locale-data/jsonp/ms-MY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ms-MY'>; +} +declare module 'intl/locale-data/jsonp/ms-SG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ms-SG'>; +} +declare module 'intl/locale-data/jsonp/ms.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ms'>; +} +declare module 'intl/locale-data/jsonp/mt-MT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mt-MT'>; +} +declare module 'intl/locale-data/jsonp/mt.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mt'>; +} +declare module 'intl/locale-data/jsonp/mua-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mua-CM'>; +} +declare module 'intl/locale-data/jsonp/mua.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mua'>; +} +declare module 'intl/locale-data/jsonp/my-MM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/my-MM'>; +} +declare module 'intl/locale-data/jsonp/my.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/my'>; +} +declare module 'intl/locale-data/jsonp/mzn-IR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mzn-IR'>; +} +declare module 'intl/locale-data/jsonp/mzn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/mzn'>; +} +declare module 'intl/locale-data/jsonp/naq-NA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/naq-NA'>; +} +declare module 'intl/locale-data/jsonp/naq.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/naq'>; +} +declare module 'intl/locale-data/jsonp/nb-NO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nb-NO'>; +} +declare module 'intl/locale-data/jsonp/nb-SJ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nb-SJ'>; +} +declare module 'intl/locale-data/jsonp/nb.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nb'>; +} +declare module 'intl/locale-data/jsonp/nd-ZW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nd-ZW'>; +} +declare module 'intl/locale-data/jsonp/nd.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nd'>; +} +declare module 'intl/locale-data/jsonp/ne-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ne-IN'>; +} +declare module 'intl/locale-data/jsonp/ne-NP.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ne-NP'>; +} +declare module 'intl/locale-data/jsonp/ne.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ne'>; +} +declare module 'intl/locale-data/jsonp/nl-AW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl-AW'>; +} +declare module 'intl/locale-data/jsonp/nl-BE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl-BE'>; +} +declare module 'intl/locale-data/jsonp/nl-BQ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl-BQ'>; +} +declare module 'intl/locale-data/jsonp/nl-CW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl-CW'>; +} +declare module 'intl/locale-data/jsonp/nl-NL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl-NL'>; +} +declare module 'intl/locale-data/jsonp/nl-SR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl-SR'>; +} +declare module 'intl/locale-data/jsonp/nl-SX.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl-SX'>; +} +declare module 'intl/locale-data/jsonp/nl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nl'>; +} +declare module 'intl/locale-data/jsonp/nmg-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nmg-CM'>; +} +declare module 'intl/locale-data/jsonp/nmg.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nmg'>; +} +declare module 'intl/locale-data/jsonp/nn-NO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nn-NO'>; +} +declare module 'intl/locale-data/jsonp/nn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nn'>; +} +declare module 'intl/locale-data/jsonp/nnh-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nnh-CM'>; +} +declare module 'intl/locale-data/jsonp/nnh.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nnh'>; +} +declare module 'intl/locale-data/jsonp/nus-SS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nus-SS'>; +} +declare module 'intl/locale-data/jsonp/nus.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nus'>; +} +declare module 'intl/locale-data/jsonp/nyn-UG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nyn-UG'>; +} +declare module 'intl/locale-data/jsonp/nyn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/nyn'>; +} +declare module 'intl/locale-data/jsonp/om-ET.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/om-ET'>; +} +declare module 'intl/locale-data/jsonp/om-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/om-KE'>; +} +declare module 'intl/locale-data/jsonp/om.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/om'>; +} +declare module 'intl/locale-data/jsonp/or-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/or-IN'>; +} +declare module 'intl/locale-data/jsonp/or.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/or'>; +} +declare module 'intl/locale-data/jsonp/os-GE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/os-GE'>; +} +declare module 'intl/locale-data/jsonp/os-RU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/os-RU'>; +} +declare module 'intl/locale-data/jsonp/os.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/os'>; +} +declare module 'intl/locale-data/jsonp/pa-Arab-PK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pa-Arab-PK'>; +} +declare module 'intl/locale-data/jsonp/pa-Arab.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pa-Arab'>; +} +declare module 'intl/locale-data/jsonp/pa-Guru-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pa-Guru-IN'>; +} +declare module 'intl/locale-data/jsonp/pa-Guru.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pa-Guru'>; +} +declare module 'intl/locale-data/jsonp/pa.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pa'>; +} +declare module 'intl/locale-data/jsonp/pl-PL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pl-PL'>; +} +declare module 'intl/locale-data/jsonp/pl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pl'>; +} +declare module 'intl/locale-data/jsonp/prg-001.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/prg-001'>; +} +declare module 'intl/locale-data/jsonp/prg.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/prg'>; +} +declare module 'intl/locale-data/jsonp/ps-AF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ps-AF'>; +} +declare module 'intl/locale-data/jsonp/ps.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ps'>; +} +declare module 'intl/locale-data/jsonp/pt-AO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-AO'>; +} +declare module 'intl/locale-data/jsonp/pt-BR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-BR'>; +} +declare module 'intl/locale-data/jsonp/pt-CV.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-CV'>; +} +declare module 'intl/locale-data/jsonp/pt-GW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-GW'>; +} +declare module 'intl/locale-data/jsonp/pt-MO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-MO'>; +} +declare module 'intl/locale-data/jsonp/pt-MZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-MZ'>; +} +declare module 'intl/locale-data/jsonp/pt-PT.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-PT'>; +} +declare module 'intl/locale-data/jsonp/pt-ST.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-ST'>; +} +declare module 'intl/locale-data/jsonp/pt-TL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt-TL'>; +} +declare module 'intl/locale-data/jsonp/pt.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/pt'>; +} +declare module 'intl/locale-data/jsonp/qu-BO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/qu-BO'>; +} +declare module 'intl/locale-data/jsonp/qu-EC.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/qu-EC'>; +} +declare module 'intl/locale-data/jsonp/qu-PE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/qu-PE'>; +} +declare module 'intl/locale-data/jsonp/qu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/qu'>; +} +declare module 'intl/locale-data/jsonp/rm-CH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rm-CH'>; +} +declare module 'intl/locale-data/jsonp/rm.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rm'>; +} +declare module 'intl/locale-data/jsonp/rn-BI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rn-BI'>; +} +declare module 'intl/locale-data/jsonp/rn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rn'>; +} +declare module 'intl/locale-data/jsonp/ro-MD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ro-MD'>; +} +declare module 'intl/locale-data/jsonp/ro-RO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ro-RO'>; +} +declare module 'intl/locale-data/jsonp/ro.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ro'>; +} +declare module 'intl/locale-data/jsonp/rof-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rof-TZ'>; +} +declare module 'intl/locale-data/jsonp/rof.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rof'>; +} +declare module 'intl/locale-data/jsonp/root.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/root'>; +} +declare module 'intl/locale-data/jsonp/ru-BY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ru-BY'>; +} +declare module 'intl/locale-data/jsonp/ru-KG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ru-KG'>; +} +declare module 'intl/locale-data/jsonp/ru-KZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ru-KZ'>; +} +declare module 'intl/locale-data/jsonp/ru-MD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ru-MD'>; +} +declare module 'intl/locale-data/jsonp/ru-RU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ru-RU'>; +} +declare module 'intl/locale-data/jsonp/ru-UA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ru-UA'>; +} +declare module 'intl/locale-data/jsonp/ru.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ru'>; +} +declare module 'intl/locale-data/jsonp/rw-RW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rw-RW'>; +} +declare module 'intl/locale-data/jsonp/rw.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rw'>; +} +declare module 'intl/locale-data/jsonp/rwk-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rwk-TZ'>; +} +declare module 'intl/locale-data/jsonp/rwk.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/rwk'>; +} +declare module 'intl/locale-data/jsonp/sah-RU.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sah-RU'>; +} +declare module 'intl/locale-data/jsonp/sah.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sah'>; +} +declare module 'intl/locale-data/jsonp/saq-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/saq-KE'>; +} +declare module 'intl/locale-data/jsonp/saq.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/saq'>; +} +declare module 'intl/locale-data/jsonp/sbp-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sbp-TZ'>; +} +declare module 'intl/locale-data/jsonp/sbp.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sbp'>; +} +declare module 'intl/locale-data/jsonp/se-FI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/se-FI'>; +} +declare module 'intl/locale-data/jsonp/se-NO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/se-NO'>; +} +declare module 'intl/locale-data/jsonp/se-SE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/se-SE'>; +} +declare module 'intl/locale-data/jsonp/se.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/se'>; +} +declare module 'intl/locale-data/jsonp/seh-MZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/seh-MZ'>; +} +declare module 'intl/locale-data/jsonp/seh.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/seh'>; +} +declare module 'intl/locale-data/jsonp/ses-ML.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ses-ML'>; +} +declare module 'intl/locale-data/jsonp/ses.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ses'>; +} +declare module 'intl/locale-data/jsonp/sg-CF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sg-CF'>; +} +declare module 'intl/locale-data/jsonp/sg.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sg'>; +} +declare module 'intl/locale-data/jsonp/shi-Latn-MA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/shi-Latn-MA'>; +} +declare module 'intl/locale-data/jsonp/shi-Latn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/shi-Latn'>; +} +declare module 'intl/locale-data/jsonp/shi-Tfng-MA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/shi-Tfng-MA'>; +} +declare module 'intl/locale-data/jsonp/shi-Tfng.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/shi-Tfng'>; +} +declare module 'intl/locale-data/jsonp/shi.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/shi'>; +} +declare module 'intl/locale-data/jsonp/si-LK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/si-LK'>; +} +declare module 'intl/locale-data/jsonp/si.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/si'>; +} +declare module 'intl/locale-data/jsonp/sk-SK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sk-SK'>; +} +declare module 'intl/locale-data/jsonp/sk.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sk'>; +} +declare module 'intl/locale-data/jsonp/sl-SI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sl-SI'>; +} +declare module 'intl/locale-data/jsonp/sl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sl'>; +} +declare module 'intl/locale-data/jsonp/smn-FI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/smn-FI'>; +} +declare module 'intl/locale-data/jsonp/smn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/smn'>; +} +declare module 'intl/locale-data/jsonp/sn-ZW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sn-ZW'>; +} +declare module 'intl/locale-data/jsonp/sn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sn'>; +} +declare module 'intl/locale-data/jsonp/so-DJ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/so-DJ'>; +} +declare module 'intl/locale-data/jsonp/so-ET.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/so-ET'>; +} +declare module 'intl/locale-data/jsonp/so-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/so-KE'>; +} +declare module 'intl/locale-data/jsonp/so-SO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/so-SO'>; +} +declare module 'intl/locale-data/jsonp/so.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/so'>; +} +declare module 'intl/locale-data/jsonp/sq-AL.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sq-AL'>; +} +declare module 'intl/locale-data/jsonp/sq-MK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sq-MK'>; +} +declare module 'intl/locale-data/jsonp/sq-XK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sq-XK'>; +} +declare module 'intl/locale-data/jsonp/sq.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sq'>; +} +declare module 'intl/locale-data/jsonp/sr-Cyrl-BA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Cyrl-BA'>; +} +declare module 'intl/locale-data/jsonp/sr-Cyrl-ME.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Cyrl-ME'>; +} +declare module 'intl/locale-data/jsonp/sr-Cyrl-RS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Cyrl-RS'>; +} +declare module 'intl/locale-data/jsonp/sr-Cyrl-XK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Cyrl-XK'>; +} +declare module 'intl/locale-data/jsonp/sr-Cyrl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Cyrl'>; +} +declare module 'intl/locale-data/jsonp/sr-Latn-BA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Latn-BA'>; +} +declare module 'intl/locale-data/jsonp/sr-Latn-ME.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Latn-ME'>; +} +declare module 'intl/locale-data/jsonp/sr-Latn-RS.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Latn-RS'>; +} +declare module 'intl/locale-data/jsonp/sr-Latn-XK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Latn-XK'>; +} +declare module 'intl/locale-data/jsonp/sr-Latn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr-Latn'>; +} +declare module 'intl/locale-data/jsonp/sr.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sr'>; +} +declare module 'intl/locale-data/jsonp/sv-AX.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sv-AX'>; +} +declare module 'intl/locale-data/jsonp/sv-FI.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sv-FI'>; +} +declare module 'intl/locale-data/jsonp/sv-SE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sv-SE'>; +} +declare module 'intl/locale-data/jsonp/sv.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sv'>; +} +declare module 'intl/locale-data/jsonp/sw-CD.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sw-CD'>; +} +declare module 'intl/locale-data/jsonp/sw-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sw-KE'>; +} +declare module 'intl/locale-data/jsonp/sw-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sw-TZ'>; +} +declare module 'intl/locale-data/jsonp/sw-UG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sw-UG'>; +} +declare module 'intl/locale-data/jsonp/sw.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/sw'>; +} +declare module 'intl/locale-data/jsonp/ta-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ta-IN'>; +} +declare module 'intl/locale-data/jsonp/ta-LK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ta-LK'>; +} +declare module 'intl/locale-data/jsonp/ta-MY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ta-MY'>; +} +declare module 'intl/locale-data/jsonp/ta-SG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ta-SG'>; +} +declare module 'intl/locale-data/jsonp/ta.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ta'>; +} +declare module 'intl/locale-data/jsonp/te-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/te-IN'>; +} +declare module 'intl/locale-data/jsonp/te.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/te'>; +} +declare module 'intl/locale-data/jsonp/teo-KE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/teo-KE'>; +} +declare module 'intl/locale-data/jsonp/teo-UG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/teo-UG'>; +} +declare module 'intl/locale-data/jsonp/teo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/teo'>; +} +declare module 'intl/locale-data/jsonp/th-TH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/th-TH'>; +} +declare module 'intl/locale-data/jsonp/th.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/th'>; +} +declare module 'intl/locale-data/jsonp/ti-ER.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ti-ER'>; +} +declare module 'intl/locale-data/jsonp/ti-ET.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ti-ET'>; +} +declare module 'intl/locale-data/jsonp/ti.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ti'>; +} +declare module 'intl/locale-data/jsonp/tk-TM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/tk-TM'>; +} +declare module 'intl/locale-data/jsonp/tk.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/tk'>; +} +declare module 'intl/locale-data/jsonp/to-TO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/to-TO'>; +} +declare module 'intl/locale-data/jsonp/to.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/to'>; +} +declare module 'intl/locale-data/jsonp/tr-CY.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/tr-CY'>; +} +declare module 'intl/locale-data/jsonp/tr-TR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/tr-TR'>; +} +declare module 'intl/locale-data/jsonp/tr.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/tr'>; +} +declare module 'intl/locale-data/jsonp/twq-NE.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/twq-NE'>; +} +declare module 'intl/locale-data/jsonp/twq.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/twq'>; +} +declare module 'intl/locale-data/jsonp/tzm-MA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/tzm-MA'>; +} +declare module 'intl/locale-data/jsonp/tzm.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/tzm'>; +} +declare module 'intl/locale-data/jsonp/ug-CN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ug-CN'>; +} +declare module 'intl/locale-data/jsonp/ug.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ug'>; +} +declare module 'intl/locale-data/jsonp/uk-UA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uk-UA'>; +} +declare module 'intl/locale-data/jsonp/uk.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uk'>; +} +declare module 'intl/locale-data/jsonp/ur-IN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ur-IN'>; +} +declare module 'intl/locale-data/jsonp/ur-PK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ur-PK'>; +} +declare module 'intl/locale-data/jsonp/ur.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/ur'>; +} +declare module 'intl/locale-data/jsonp/uz-Arab-AF.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uz-Arab-AF'>; +} +declare module 'intl/locale-data/jsonp/uz-Arab.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uz-Arab'>; +} +declare module 'intl/locale-data/jsonp/uz-Cyrl-UZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uz-Cyrl-UZ'>; +} +declare module 'intl/locale-data/jsonp/uz-Cyrl.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uz-Cyrl'>; +} +declare module 'intl/locale-data/jsonp/uz-Latn-UZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uz-Latn-UZ'>; +} +declare module 'intl/locale-data/jsonp/uz-Latn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uz-Latn'>; +} +declare module 'intl/locale-data/jsonp/uz.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/uz'>; +} +declare module 'intl/locale-data/jsonp/vai-Latn-LR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vai-Latn-LR'>; +} +declare module 'intl/locale-data/jsonp/vai-Latn.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vai-Latn'>; +} +declare module 'intl/locale-data/jsonp/vai-Vaii-LR.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vai-Vaii-LR'>; +} +declare module 'intl/locale-data/jsonp/vai-Vaii.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vai-Vaii'>; +} +declare module 'intl/locale-data/jsonp/vai.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vai'>; +} +declare module 'intl/locale-data/jsonp/vi-VN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vi-VN'>; +} +declare module 'intl/locale-data/jsonp/vi.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vi'>; +} +declare module 'intl/locale-data/jsonp/vo-001.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vo-001'>; +} +declare module 'intl/locale-data/jsonp/vo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vo'>; +} +declare module 'intl/locale-data/jsonp/vun-TZ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vun-TZ'>; +} +declare module 'intl/locale-data/jsonp/vun.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/vun'>; +} +declare module 'intl/locale-data/jsonp/wae-CH.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/wae-CH'>; +} +declare module 'intl/locale-data/jsonp/wae.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/wae'>; +} +declare module 'intl/locale-data/jsonp/xog-UG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/xog-UG'>; +} +declare module 'intl/locale-data/jsonp/xog.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/xog'>; +} +declare module 'intl/locale-data/jsonp/yav-CM.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/yav-CM'>; +} +declare module 'intl/locale-data/jsonp/yav.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/yav'>; +} +declare module 'intl/locale-data/jsonp/yi-001.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/yi-001'>; +} +declare module 'intl/locale-data/jsonp/yi.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/yi'>; +} +declare module 'intl/locale-data/jsonp/yo-BJ.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/yo-BJ'>; +} +declare module 'intl/locale-data/jsonp/yo-NG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/yo-NG'>; +} +declare module 'intl/locale-data/jsonp/yo.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/yo'>; +} +declare module 'intl/locale-data/jsonp/zgh-MA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zgh-MA'>; +} +declare module 'intl/locale-data/jsonp/zgh.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zgh'>; +} +declare module 'intl/locale-data/jsonp/zh-Hans-CN.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hans-CN'>; +} +declare module 'intl/locale-data/jsonp/zh-Hans-HK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hans-HK'>; +} +declare module 'intl/locale-data/jsonp/zh-Hans-MO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hans-MO'>; +} +declare module 'intl/locale-data/jsonp/zh-Hans-SG.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hans-SG'>; +} +declare module 'intl/locale-data/jsonp/zh-Hans.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hans'>; +} +declare module 'intl/locale-data/jsonp/zh-Hant-HK.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hant-HK'>; +} +declare module 'intl/locale-data/jsonp/zh-Hant-MO.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hant-MO'>; +} +declare module 'intl/locale-data/jsonp/zh-Hant-TW.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hant-TW'>; +} +declare module 'intl/locale-data/jsonp/zh-Hant.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh-Hant'>; +} +declare module 'intl/locale-data/jsonp/zh.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zh'>; +} +declare module 'intl/locale-data/jsonp/zu-ZA.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zu-ZA'>; +} +declare module 'intl/locale-data/jsonp/zu.js' { + declare module.exports: $Exports<'intl/locale-data/jsonp/zu'>; +} diff --git a/flow-typed/npm/lodash_v4.x.x.js b/flow-typed/npm/lodash_v4.x.x.js index 91d792aa3..9170faa72 100644 --- a/flow-typed/npm/lodash_v4.x.x.js +++ b/flow-typed/npm/lodash_v4.x.x.js @@ -1,55 +1,138 @@ -// flow-typed signature: ec4c44a54a1213be98f78d185b1680ea -// flow-typed version: f8c676de4c/lodash_v4.x.x/flow_>=v0.55.x +// flow-typed signature: 554384bc1c2235537d0c15bf2acefe99 +// flow-typed version: c5a8c20937/lodash_v4.x.x/flow_>=v0.55.x declare module "lodash" { - declare type __CurriedFunction1 = - & ((...r: [AA]) => R) - declare type CurriedFunction1 = __CurriedFunction1 + declare type __CurriedFunction1 = (...r: [AA]) => R; + declare type CurriedFunction1 = __CurriedFunction1; - declare type __CurriedFunction2 = - & ((...r: [AA]) => CurriedFunction1) - & ((...r: [AA, BB]) => R) - declare type CurriedFunction2 = __CurriedFunction2 + declare type __CurriedFunction2 = (( + ...r: [AA] + ) => CurriedFunction1) & + ((...r: [AA, BB]) => R); + declare type CurriedFunction2 = __CurriedFunction2; - declare type __CurriedFunction3 = - & ((...r: [AA]) => CurriedFunction2) - & ((...r: [AA, BB]) => CurriedFunction1) - & ((...r: [AA, BB, CC]) => R) - declare type CurriedFunction3 = __CurriedFunction3 + declare type __CurriedFunction3 = (( + ...r: [AA] + ) => CurriedFunction2) & + ((...r: [AA, BB]) => CurriedFunction1) & + ((...r: [AA, BB, CC]) => R); + declare type CurriedFunction3 = __CurriedFunction3< + A, + B, + C, + R, + *, + *, + * + >; - declare type __CurriedFunction4 = - & ((...r: [AA]) => CurriedFunction3) - & ((...r: [AA, BB]) => CurriedFunction2) - & ((...r: [AA, BB, CC]) => CurriedFunction1) - & ((...r: [AA, BB, CC, DD]) => R) - declare type CurriedFunction4 = __CurriedFunction4 + declare type __CurriedFunction4< + A, + B, + C, + D, + R, + AA: A, + BB: B, + CC: C, + DD: D + > = ((...r: [AA]) => CurriedFunction3) & + ((...r: [AA, BB]) => CurriedFunction2) & + ((...r: [AA, BB, CC]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD]) => R); + declare type CurriedFunction4 = __CurriedFunction4< + A, + B, + C, + D, + R, + *, + *, + *, + * + >; - declare type __CurriedFunction5 = - & ((...r: [AA]) => CurriedFunction4) - & ((...r: [AA, BB]) => CurriedFunction3) - & ((...r: [AA, BB, CC]) => CurriedFunction2) - & ((...r: [AA, BB, CC, DD]) => CurriedFunction1) - & ((...r: [AA, BB, CC, DD, EE]) => R) - declare type CurriedFunction5 = __CurriedFunction5 + declare type __CurriedFunction5< + A, + B, + C, + D, + E, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E + > = ((...r: [AA]) => CurriedFunction4) & + ((...r: [AA, BB]) => CurriedFunction3) & + ((...r: [AA, BB, CC]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE]) => R); + declare type CurriedFunction5 = __CurriedFunction5< + A, + B, + C, + D, + E, + R, + *, + *, + *, + *, + * + >; - declare type __CurriedFunction6 = - & ((...r: [AA]) => CurriedFunction5) - & ((...r: [AA, BB]) => CurriedFunction4) - & ((...r: [AA, BB, CC]) => CurriedFunction3) - & ((...r: [AA, BB, CC, DD]) => CurriedFunction2) - & ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) - & ((...r: [AA, BB, CC, DD, EE, FF]) => R) - declare type CurriedFunction6 = __CurriedFunction6 + declare type __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E, + FF: F + > = ((...r: [AA]) => CurriedFunction5) & + ((...r: [AA, BB]) => CurriedFunction4) & + ((...r: [AA, BB, CC]) => CurriedFunction3) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE, FF]) => R); + declare type CurriedFunction6 = __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + *, + *, + *, + *, + *, + * + >; - declare type Curry = - & (((...r: [A]) => R) => CurriedFunction1) - & (((...r: [A, B]) => R) => CurriedFunction2) - & (((...r: [A, B, C]) => R) => CurriedFunction3) - & (((...r: [A, B, C, D]) => R) => CurriedFunction4) - & (((...r: [A, B, C, D, E]) => R) => CurriedFunction5) - & (((...r: [A, B, C, D, E, F]) => R) => CurriedFunction6) + declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & + (((...r: [A, B]) => R) => CurriedFunction2) & + (((...r: [A, B, C]) => R) => CurriedFunction3) & + (( + (...r: [A, B, C, D]) => R + ) => CurriedFunction4) & + (( + (...r: [A, B, C, D, E]) => R + ) => CurriedFunction5) & + (( + (...r: [A, B, C, D, E, F]) => R + ) => CurriedFunction6); - declare type UnaryFn = (a: A) => R; + declare type UnaryFn = (a: A) => R; declare type TemplateSettings = { escape?: RegExp, @@ -125,361 +208,364 @@ declare module "lodash" { declare class Lodash { // Array - chunk(array: ?Array, size?: number): Array>, - compact(array: Array): Array, - concat(base: Array, ...elements: Array): Array, - difference(array: ?Array, values?: Array): Array, + chunk(array: ?Array, size?: number): Array>; + compact(array: Array): Array; + concat(base: Array, ...elements: Array): Array; + difference(array: ?Array, values?: Array): Array; differenceBy( array: ?Array, values: Array, iteratee: ValueOnlyIteratee - ): T[], - differenceWith(array: T[], values: T[], comparator?: Comparator): T[], - drop(array: ?Array, n?: number): Array, - dropRight(array: ?Array, n?: number): Array, - dropRightWhile(array: ?Array, predicate?: Predicate): Array, - dropWhile(array: ?Array, predicate?: Predicate): Array, + ): T[]; + differenceWith(array: T[], values: T[], comparator?: Comparator): T[]; + drop(array: ?Array, n?: number): Array; + dropRight(array: ?Array, n?: number): Array; + dropRightWhile(array: ?Array, predicate?: Predicate): Array; + dropWhile(array: ?Array, predicate?: Predicate): Array; fill( array: ?Array, value: U, start?: number, end?: number - ): Array, + ): Array; findIndex( - array: ?Array, + array: ?$ReadOnlyArray, predicate?: Predicate, fromIndex?: number - ): number, + ): number; findLastIndex( - array: ?Array, + array: ?$ReadOnlyArray, predicate?: Predicate, fromIndex?: number - ): number, + ): number; // alias of _.head - first(array: ?Array): T, - flatten(array: Array | X>): Array, - flattenDeep(array: any[]): Array, - flattenDepth(array: any[], depth?: number): any[], - fromPairs(pairs: Array): Object, - head(array: ?Array): T, - indexOf(array: ?Array, value: T, fromIndex?: number): number, - initial(array: ?Array): Array, - intersection(...arrays: Array>): Array, + first(array: ?Array): T; + flatten(array: Array | X>): Array; + flattenDeep(array: any[]): Array; + flattenDepth(array: any[], depth?: number): any[]; + fromPairs(pairs: Array<[A, B]>): { [key: A]: B }; + head(array: ?Array): T; + indexOf(array: ?Array, value: T, fromIndex?: number): number; + initial(array: ?Array): Array; + intersection(...arrays: Array>): Array; //Workaround until (...parameter: T, parameter2: U) works - intersectionBy(a1: Array, iteratee?: ValueOnlyIteratee): Array, + intersectionBy(a1: Array, iteratee?: ValueOnlyIteratee): Array; intersectionBy( a1: Array, a2: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; intersectionBy( a1: Array, a2: Array, a3: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; intersectionBy( a1: Array, a2: Array, a3: Array, a4: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; //Workaround until (...parameter: T, parameter2: U) works - intersectionWith(a1: Array, comparator: Comparator): Array, + intersectionWith(a1: Array, comparator: Comparator): Array; intersectionWith( a1: Array, a2: Array, comparator: Comparator - ): Array, + ): Array; intersectionWith( a1: Array, a2: Array, a3: Array, comparator: Comparator - ): Array, + ): Array; intersectionWith( a1: Array, a2: Array, a3: Array, a4: Array, comparator: Comparator - ): Array, - join(array: ?Array, separator?: string): string, - last(array: ?Array): T, - lastIndexOf(array: ?Array, value: T, fromIndex?: number): number, - nth(array: T[], n?: number): T, - pull(array: ?Array, ...values?: Array): Array, - pullAll(array: ?Array, values: Array): Array, + ): Array; + join(array: ?Array, separator?: string): string; + last(array: ?Array): T; + lastIndexOf(array: ?Array, value: T, fromIndex?: number): number; + nth(array: T[], n?: number): T; + pull(array: ?Array, ...values?: Array): Array; + pullAll(array: ?Array, values: Array): Array; pullAllBy( array: ?Array, values: Array, iteratee?: ValueOnlyIteratee - ): Array, - pullAllWith(array?: T[], values: T[], comparator?: Function): T[], - pullAt(array: ?Array, ...indexed?: Array): Array, - pullAt(array: ?Array, indexed?: Array): Array, - remove(array: ?Array, predicate?: Predicate): Array, - reverse(array: ?Array): Array, - slice(array: ?Array, start?: number, end?: number): Array, - sortedIndex(array: ?Array, value: T): number, + ): Array; + pullAllWith(array?: T[], values: T[], comparator?: Function): T[]; + pullAt(array: ?Array, ...indexed?: Array): Array; + pullAt(array: ?Array, indexed?: Array): Array; + remove(array: ?Array, predicate?: Predicate): Array; + reverse(array: ?Array): Array; + slice(array: ?Array, start?: number, end?: number): Array; + sortedIndex(array: ?Array, value: T): number; sortedIndexBy( array: ?Array, value: T, iteratee?: ValueOnlyIteratee - ): number, - sortedIndexOf(array: ?Array, value: T): number, - sortedLastIndex(array: ?Array, value: T): number, + ): number; + sortedIndexOf(array: ?Array, value: T): number; + sortedLastIndex(array: ?Array, value: T): number; sortedLastIndexBy( array: ?Array, value: T, iteratee?: ValueOnlyIteratee - ): number, - sortedLastIndexOf(array: ?Array, value: T): number, - sortedUniq(array: ?Array): Array, - sortedUniqBy(array: ?Array, iteratee?: (value: T) => mixed): Array, - tail(array: ?Array): Array, - take(array: ?Array, n?: number): Array, - takeRight(array: ?Array, n?: number): Array, - takeRightWhile(array: ?Array, predicate?: Predicate): Array, - takeWhile(array: ?Array, predicate?: Predicate): Array, - union(...arrays?: Array>): Array, + ): number; + sortedLastIndexOf(array: ?Array, value: T): number; + sortedUniq(array: ?Array): Array; + sortedUniqBy(array: ?Array, iteratee?: (value: T) => mixed): Array; + tail(array: ?Array): Array; + take(array: ?Array, n?: number): Array; + takeRight(array: ?Array, n?: number): Array; + takeRightWhile(array: ?Array, predicate?: Predicate): Array; + takeWhile(array: ?Array, predicate?: Predicate): Array; + union(...arrays?: Array>): Array; //Workaround until (...parameter: T, parameter2: U) works - unionBy(a1: Array, iteratee?: ValueOnlyIteratee): Array, + unionBy(a1: Array, iteratee?: ValueOnlyIteratee): Array; unionBy( a1: Array, a2: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; unionBy( a1: Array, a2: Array, a3: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; unionBy( a1: Array, a2: Array, a3: Array, a4: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; //Workaround until (...parameter: T, parameter2: U) works - unionWith(a1: Array, comparator?: Comparator): Array, + unionWith(a1: Array, comparator?: Comparator): Array; unionWith( a1: Array, a2: Array, comparator?: Comparator - ): Array, + ): Array; unionWith( a1: Array, a2: Array, a3: Array, comparator?: Comparator - ): Array, + ): Array; unionWith( a1: Array, a2: Array, a3: Array, a4: Array, comparator?: Comparator - ): Array, - uniq(array: ?Array): Array, - uniqBy(array: ?Array, iteratee?: ValueOnlyIteratee): Array, - uniqWith(array: ?Array, comparator?: Comparator): Array, - unzip(array: ?Array): Array, - unzipWith(array: ?Array, iteratee?: Iteratee): Array, - without(array: ?Array, ...values?: Array): Array, - xor(...array: Array>): Array, + ): Array; + uniq(array: ?Array): Array; + uniqBy(array: ?Array, iteratee?: ValueOnlyIteratee): Array; + uniqWith(array: ?Array, comparator?: Comparator): Array; + unzip(array: ?Array): Array; + unzipWith(array: ?Array, iteratee?: Iteratee): Array; + without(array: ?Array, ...values?: Array): Array; + xor(...array: Array>): Array; //Workaround until (...parameter: T, parameter2: U) works - xorBy(a1: Array, iteratee?: ValueOnlyIteratee): Array, + xorBy(a1: Array, iteratee?: ValueOnlyIteratee): Array; xorBy( a1: Array, a2: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; xorBy( a1: Array, a2: Array, a3: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; xorBy( a1: Array, a2: Array, a3: Array, a4: Array, iteratee?: ValueOnlyIteratee - ): Array, + ): Array; //Workaround until (...parameter: T, parameter2: U) works - xorWith(a1: Array, comparator?: Comparator): Array, + xorWith(a1: Array, comparator?: Comparator): Array; xorWith( a1: Array, a2: Array, comparator?: Comparator - ): Array, + ): Array; xorWith( a1: Array, a2: Array, a3: Array, comparator?: Comparator - ): Array, + ): Array; xorWith( a1: Array, a2: Array, a3: Array, a4: Array, comparator?: Comparator - ): Array, - zip(a1: A[], a2: B[]): Array<[A, B]>, - zip(a1: A[], a2: B[], a3: C[]): Array<[A, B, C]>, - zip(a1: A[], a2: B[], a3: C[], a4: D[]): Array<[A, B, C, D]>, + ): Array; + zip(a1: A[], a2: B[]): Array<[A, B]>; + zip(a1: A[], a2: B[], a3: C[]): Array<[A, B, C]>; + zip(a1: A[], a2: B[], a3: C[], a4: D[]): Array<[A, B, C, D]>; zip( a1: A[], a2: B[], a3: C[], a4: D[], a5: E[] - ): Array<[A, B, C, D, E]>, + ): Array<[A, B, C, D, E]>; - zipObject(props?: Array, values?: Array): Object, - zipObjectDeep(props?: any[], values?: any): Object, + zipObject(props?: Array, values?: Array): { [key: K]: V }; + zipObjectDeep(props?: any[], values?: any): Object; //Workaround until (...parameter: T, parameter2: U) works - zipWith(a1: NestedArray, iteratee?: Iteratee): Array, + zipWith(a1: NestedArray, iteratee?: Iteratee): Array; zipWith( a1: NestedArray, a2: NestedArray, iteratee?: Iteratee - ): Array, + ): Array; zipWith( a1: NestedArray, a2: NestedArray, a3: NestedArray, iteratee?: Iteratee - ): Array, + ): Array; zipWith( a1: NestedArray, a2: NestedArray, a3: NestedArray, a4: NestedArray, iteratee?: Iteratee - ): Array, + ): Array; // Collection - countBy(array: ?Array, iteratee?: ValueOnlyIteratee): Object, - countBy(object: T, iteratee?: ValueOnlyIteratee): Object, + countBy(array: ?Array, iteratee?: ValueOnlyIteratee): Object; + countBy(object: T, iteratee?: ValueOnlyIteratee): Object; // alias of _.forEach - each(array: ?Array, iteratee?: Iteratee): Array, - each(object: T, iteratee?: OIteratee): T, + each(array: ?Array, iteratee?: Iteratee): Array; + each(object: T, iteratee?: OIteratee): T; // alias of _.forEachRight - eachRight(array: ?Array, iteratee?: Iteratee): Array, - eachRight(object: T, iteratee?: OIteratee): T, - every(array: ?Array, iteratee?: Iteratee): boolean, - every(object: T, iteratee?: OIteratee): boolean, - filter(array: ?Array, predicate?: Predicate): Array, + eachRight(array: ?Array, iteratee?: Iteratee): Array; + eachRight(object: T, iteratee?: OIteratee): T; + every(array: ?Array, iteratee?: Iteratee): boolean; + every(object: T, iteratee?: OIteratee): boolean; + filter(array: ?Array, predicate?: Predicate): Array; filter( object: T, predicate?: OPredicate - ): Array, + ): Array; find( - array: ?Array, + array: ?$ReadOnlyArray, predicate?: Predicate, fromIndex?: number - ): T | void, + ): T | void; find( object: T, predicate?: OPredicate, fromIndex?: number - ): V, + ): V; findLast( - array: ?Array, + array: ?$ReadOnlyArray, predicate?: Predicate, fromIndex?: number - ): T | void, + ): T | void; findLast( object: T, predicate?: OPredicate - ): V, - flatMap(array: ?Array, iteratee?: FlatMapIteratee): Array, + ): V; + flatMap(array: ?Array, iteratee?: FlatMapIteratee): Array; flatMap( object: T, iteratee?: OFlatMapIteratee - ): Array, + ): Array; flatMapDeep( array: ?Array, iteratee?: FlatMapIteratee - ): Array, + ): Array; flatMapDeep( object: T, iteratee?: OFlatMapIteratee - ): Array, + ): Array; flatMapDepth( array: ?Array, iteratee?: FlatMapIteratee, depth?: number - ): Array, + ): Array; flatMapDepth( object: T, iteratee?: OFlatMapIteratee, depth?: number - ): Array, - forEach(array: ?Array, iteratee?: Iteratee): Array, - forEach(object: T, iteratee?: OIteratee): T, - forEachRight(array: ?Array, iteratee?: Iteratee): Array, - forEachRight(object: T, iteratee?: OIteratee): T, + ): Array; + forEach(array: ?Array, iteratee?: Iteratee): Array; + forEach(object: T, iteratee?: OIteratee): T; + forEachRight(array: ?Array, iteratee?: Iteratee): Array; + forEachRight(object: T, iteratee?: OIteratee): T; groupBy( array: ?Array, iteratee?: ValueOnlyIteratee - ): { [key: V]: Array }, + ): { [key: V]: Array }; groupBy( object: T, iteratee?: ValueOnlyIteratee - ): { [key: V]: Array }, - includes(array: ?Array, value: T, fromIndex?: number): boolean, - includes(object: T, value: any, fromIndex?: number): boolean, - includes(str: string, value: string, fromIndex?: number): boolean, + ): { [key: V]: Array }; + includes(array: ?Array, value: T, fromIndex?: number): boolean; + includes(object: T, value: any, fromIndex?: number): boolean; + includes(str: string, value: string, fromIndex?: number): boolean; invokeMap( array: ?Array, path: ((value: T) => Array | string) | Array | string, ...args?: Array - ): Array, + ): Array; invokeMap( object: T, path: ((value: any) => Array | string) | Array | string, ...args?: Array - ): Array, + ): Array; keyBy( array: ?Array, iteratee?: ValueOnlyIteratee - ): { [key: V]: ?T }, + ): { [key: V]: ?T }; keyBy( object: T, iteratee?: ValueOnlyIteratee - ): { [key: V]: ?A }, - map(array: ?Array, iteratee?: MapIterator): Array, + ): { [key: V]: ?A }; + map(array: ?Array, iteratee?: MapIterator): Array; map( object: ?T, iteratee?: OMapIterator - ): Array, + ): Array; map( str: ?string, iteratee?: (char: string, index: number, str: string) => any - ): string, + ): string; orderBy( array: ?Array, iteratees?: Array> | string, orders?: Array<"asc" | "desc"> | string - ): Array, + ): Array; orderBy( object: T, iteratees?: Array> | string, orders?: Array<"asc" | "desc"> | string - ): Array, - partition(array: ?Array, predicate?: Predicate): NestedArray, + ): Array; + partition( + array: ?Array, + predicate?: Predicate + ): [Array, Array]; partition( object: T, predicate?: OPredicate - ): NestedArray, + ): [Array, Array]; reduce( array: ?Array, iteratee?: ( @@ -489,12 +575,12 @@ declare module "lodash" { array: ?Array ) => U, accumulator?: U - ): U, + ): U; reduce( object: T, iteratee?: (accumulator: U, value: any, key: string, object: T) => U, accumulator?: U - ): U, + ): U; reduceRight( array: ?Array, iteratee?: ( @@ -504,107 +590,103 @@ declare module "lodash" { array: ?Array ) => U, accumulator?: U - ): U, + ): U; reduceRight( object: T, iteratee?: (accumulator: U, value: any, key: string, object: T) => U, accumulator?: U - ): U, - reject(array: ?Array, predicate?: Predicate): Array, + ): U; + reject(array: ?Array, predicate?: Predicate): Array; reject( object: T, predicate?: OPredicate - ): Array, - sample(array: ?Array): T, - sample(object: T): V, - sampleSize(array: ?Array, n?: number): Array, - sampleSize(object: T, n?: number): Array, - shuffle(array: ?Array): Array, - shuffle(object: T): Array, - size(collection: Array | Object): number, - some(array: ?Array, predicate?: Predicate): boolean, + ): Array; + sample(array: ?Array): T; + sample(object: T): V; + sampleSize(array: ?Array, n?: number): Array; + sampleSize(object: T, n?: number): Array; + shuffle(array: ?Array): Array; + shuffle(object: T): Array; + size(collection: Array | Object): number; + some(array: ?Array, predicate?: Predicate): boolean; some( object?: ?T, predicate?: OPredicate - ): boolean, - sortBy(array: ?Array, ...iteratees?: Array>): Array, - sortBy(array: ?Array, iteratees?: Array>): Array, + ): boolean; + sortBy(array: ?Array, ...iteratees?: Array>): Array; + sortBy(array: ?Array, iteratees?: Array>): Array; sortBy( object: T, ...iteratees?: Array> - ): Array, - sortBy(object: T, iteratees?: Array>): Array, + ): Array; + sortBy(object: T, iteratees?: Array>): Array; // Date - now(): number, + now(): number; // Function - after(n: number, fn: Function): Function, - ary(func: Function, n?: number): Function, - before(n: number, fn: Function): Function, - bind(func: Function, thisArg: any, ...partials: Array): Function, - bindKey(obj: Object, key: string, ...partials: Array): Function, - curry: Curry, - curry(func: Function, arity?: number): Function, - curryRight(func: Function, arity?: number): Function, - debounce( - func: Function, - wait?: number, - options?: DebounceOptions - ): Function, - defer(func: Function, ...args?: Array): number, - delay(func: Function, wait: number, ...args?: Array): number, - flip(func: Function): Function, - memoize(func: Function, resolver?: Function): Function, - negate(predicate: Function): Function, - once(func: Function): Function, - overArgs(func: Function, ...transforms: Array): Function, - overArgs(func: Function, transforms: Array): Function, - partial(func: Function, ...partials: any[]): Function, - partialRight(func: Function, ...partials: Array): Function, - partialRight(func: Function, partials: Array): Function, - rearg(func: Function, ...indexes: Array): Function, - rearg(func: Function, indexes: Array): Function, - rest(func: Function, start?: number): Function, - spread(func: Function): Function, + after(n: number, fn: Function): Function; + ary(func: Function, n?: number): Function; + before(n: number, fn: Function): Function; + bind(func: Function, thisArg: any, ...partials: Array): Function; + bindKey(obj: Object, key: string, ...partials: Array): Function; + curry: Curry; + curry(func: Function, arity?: number): Function; + curryRight(func: Function, arity?: number): Function; + debounce(func: F, wait?: number, options?: DebounceOptions): F; + defer(func: Function, ...args?: Array): number; + delay(func: Function, wait: number, ...args?: Array): number; + flip(func: Function): Function; + memoize(func: F, resolver?: Function): F; + negate(predicate: Function): Function; + once(func: Function): Function; + overArgs(func: Function, ...transforms: Array): Function; + overArgs(func: Function, transforms: Array): Function; + partial(func: Function, ...partials: any[]): Function; + partialRight(func: Function, ...partials: Array): Function; + partialRight(func: Function, partials: Array): Function; + rearg(func: Function, ...indexes: Array): Function; + rearg(func: Function, indexes: Array): Function; + rest(func: Function, start?: number): Function; + spread(func: Function): Function; throttle( func: Function, wait?: number, options?: ThrottleOptions - ): Function, - unary(func: Function): Function, - wrap(value: any, wrapper: Function): Function, + ): Function; + unary(func: Function): Function; + wrap(value: any, wrapper: Function): Function; // Lang - castArray(value: *): any[], - clone(value: T): T, - cloneDeep(value: T): T, + castArray(value: *): any[]; + clone(value: T): T; + cloneDeep(value: T): T; cloneDeepWith( value: T, customizer?: ?(value: T, key: number | string, object: T, stack: any) => U - ): U, + ): U; cloneWith( value: T, customizer?: ?(value: T, key: number | string, object: T, stack: any) => U - ): U, + ): U; conformsTo( source: T, predicates: T & { [key: string]: (x: any) => boolean } - ): boolean, - eq(value: any, other: any): boolean, - gt(value: any, other: any): boolean, - gte(value: any, other: any): boolean, - isArguments(value: any): boolean, - isArray(value: any): boolean, - isArrayBuffer(value: any): boolean, - isArrayLike(value: any): boolean, - isArrayLikeObject(value: any): boolean, - isBoolean(value: any): boolean, - isBuffer(value: any): boolean, - isDate(value: any): boolean, - isElement(value: any): boolean, - isEmpty(value: any): boolean, - isEqual(value: any, other: any): boolean, + ): boolean; + eq(value: any, other: any): boolean; + gt(value: any, other: any): boolean; + gte(value: any, other: any): boolean; + isArguments(value: any): boolean; + isArray(value: any): boolean; + isArrayBuffer(value: any): boolean; + isArrayLike(value: any): boolean; + isArrayLikeObject(value: any): boolean; + isBoolean(value: any): boolean; + isBuffer(value: any): boolean; + isDate(value: any): boolean; + isElement(value: any): boolean; + isEmpty(value: any): boolean; + isEqual(value: any, other: any): boolean; isEqualWith( value: T, other: U, @@ -616,15 +698,15 @@ declare module "lodash" { other: U, stack: any ) => boolean | void - ): boolean, - isError(value: any): boolean, - isFinite(value: any): boolean, - isFunction(value: Function): true, - isFunction(value: number | string | void | null | Object): false, - isInteger(value: any): boolean, - isLength(value: any): boolean, - isMap(value: any): boolean, - isMatch(object?: ?Object, source: Object): boolean, + ): boolean; + isError(value: any): boolean; + isFinite(value: any): boolean; + isFunction(value: Function): true; + isFunction(value: number | string | void | null | Object): false; + isInteger(value: any): boolean; + isLength(value: any): boolean; + isMap(value: any): boolean; + isMatch(object?: ?Object, source: Object): boolean; isMatchWith( object: T, source: U, @@ -635,66 +717,66 @@ declare module "lodash" { object: T, source: U ) => boolean | void - ): boolean, - isNaN(value: any): boolean, - isNative(value: any): boolean, - isNil(value: any): boolean, - isNull(value: any): boolean, - isNumber(value: any): boolean, - isObject(value: any): boolean, - isObjectLike(value: any): boolean, - isPlainObject(value: any): boolean, - isRegExp(value: any): boolean, - isSafeInteger(value: any): boolean, - isSet(value: any): boolean, - isString(value: string): true, + ): boolean; + isNaN(value: any): boolean; + isNative(value: any): boolean; + isNil(value: any): boolean; + isNull(value: any): boolean; + isNumber(value: any): boolean; + isObject(value: any): boolean; + isObjectLike(value: any): boolean; + isPlainObject(value: any): boolean; + isRegExp(value: any): boolean; + isSafeInteger(value: any): boolean; + isSet(value: any): boolean; + isString(value: string): true; isString( value: number | boolean | Function | void | null | Object | Array - ): false, - isSymbol(value: any): boolean, - isTypedArray(value: any): boolean, - isUndefined(value: any): boolean, - isWeakMap(value: any): boolean, - isWeakSet(value: any): boolean, - lt(value: any, other: any): boolean, - lte(value: any, other: any): boolean, - toArray(value: any): Array, - toFinite(value: any): number, - toInteger(value: any): number, - toLength(value: any): number, - toNumber(value: any): number, - toPlainObject(value: any): Object, - toSafeInteger(value: any): number, - toString(value: any): string, + ): false; + isSymbol(value: any): boolean; + isTypedArray(value: any): boolean; + isUndefined(value: any): boolean; + isWeakMap(value: any): boolean; + isWeakSet(value: any): boolean; + lt(value: any, other: any): boolean; + lte(value: any, other: any): boolean; + toArray(value: any): Array; + toFinite(value: any): number; + toInteger(value: any): number; + toLength(value: any): number; + toNumber(value: any): number; + toPlainObject(value: any): Object; + toSafeInteger(value: any): number; + toString(value: any): string; // Math - add(augend: number, addend: number): number, - ceil(number: number, precision?: number): number, - divide(dividend: number, divisor: number): number, - floor(number: number, precision?: number): number, - max(array: ?Array): T, - maxBy(array: ?Array, iteratee?: Iteratee): T, - mean(array: Array<*>): number, - meanBy(array: Array, iteratee?: Iteratee): number, - min(array: ?Array): T, - minBy(array: ?Array, iteratee?: Iteratee): T, - multiply(multiplier: number, multiplicand: number): number, - round(number: number, precision?: number): number, - subtract(minuend: number, subtrahend: number): number, - sum(array: Array<*>): number, - sumBy(array: Array, iteratee?: Iteratee): number, + add(augend: number, addend: number): number; + ceil(number: number, precision?: number): number; + divide(dividend: number, divisor: number): number; + floor(number: number, precision?: number): number; + max(array: ?Array): T; + maxBy(array: ?Array, iteratee?: Iteratee): T; + mean(array: Array<*>): number; + meanBy(array: Array, iteratee?: Iteratee): number; + min(array: ?Array): T; + minBy(array: ?Array, iteratee?: Iteratee): T; + multiply(multiplier: number, multiplicand: number): number; + round(number: number, precision?: number): number; + subtract(minuend: number, subtrahend: number): number; + sum(array: Array<*>): number; + sumBy(array: Array, iteratee?: Iteratee): number; // number - clamp(number: number, lower?: number, upper: number): number, - inRange(number: number, start?: number, end: number): boolean, - random(lower?: number, upper?: number, floating?: boolean): number, + clamp(number: number, lower?: number, upper: number): number; + inRange(number: number, start?: number, end: number): boolean; + random(lower?: number, upper?: number, floating?: boolean): number; // Object - assign(object?: ?Object, ...sources?: Array): Object, - assignIn(a: A, b: B): A & B, - assignIn(a: A, b: B, c: C): A & B & C, - assignIn(a: A, b: B, c: C, d: D): A & B & C & D, - assignIn(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E, + assign(object?: ?Object, ...sources?: Array): Object; + assignIn(a: A, b: B): A & B; + assignIn(a: A, b: B, c: C): A & B & C; + assignIn(a: A, b: B, c: C, d: D): A & B & C & D; + assignIn(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; assignInWith( object: T, s1: A, @@ -705,7 +787,7 @@ declare module "lodash" { object: T, source: A ) => any | void - ): Object, + ): Object; assignInWith( object: T, s1: A, @@ -717,7 +799,7 @@ declare module "lodash" { object: T, source: A | B ) => any | void - ): Object, + ): Object; assignInWith( object: T, s1: A, @@ -730,7 +812,7 @@ declare module "lodash" { object: T, source: A | B | C ) => any | void - ): Object, + ): Object; assignInWith( object: T, s1: A, @@ -744,7 +826,7 @@ declare module "lodash" { object: T, source: A | B | C | D ) => any | void - ): Object, + ): Object; assignWith( object: T, s1: A, @@ -755,7 +837,7 @@ declare module "lodash" { object: T, source: A ) => any | void - ): Object, + ): Object; assignWith( object: T, s1: A, @@ -767,7 +849,7 @@ declare module "lodash" { object: T, source: A | B ) => any | void - ): Object, + ): Object; assignWith( object: T, s1: A, @@ -780,7 +862,7 @@ declare module "lodash" { object: T, source: A | B | C ) => any | void - ): Object, + ): Object; assignWith( object: T, s1: A, @@ -794,21 +876,21 @@ declare module "lodash" { object: T, source: A | B | C | D ) => any | void - ): Object, - at(object?: ?Object, ...paths: Array): Array, - at(object?: ?Object, paths: Array): Array, - create(prototype: T, properties?: Object): $Supertype, - defaults(object?: ?Object, ...sources?: Array): Object, - defaultsDeep(object?: ?Object, ...sources?: Array): Object, + ): Object; + at(object?: ?Object, ...paths: Array): Array; + at(object?: ?Object, paths: Array): Array; + create(prototype: T, properties?: Object): $Supertype; + defaults(object?: ?Object, ...sources?: Array): Object; + defaultsDeep(object?: ?Object, ...sources?: Array): Object; // alias for _.toPairs - entries(object?: ?Object): NestedArray, + entries(object?: ?Object): NestedArray; // alias for _.toPairsIn - entriesIn(object?: ?Object): NestedArray, + entriesIn(object?: ?Object): NestedArray; // alias for _.assignIn - extend(a: A, b: B): A & B, - extend(a: A, b: B, c: C): A & B & C, - extend(a: A, b: B, c: C, d: D): A & B & C & D, - extend(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E, + extend(a: A, b: B): A & B; + extend(a: A, b: B, c: C): A & B & C; + extend(a: A, b: B, c: C, d: D): A & B & C & D; + extend(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; // alias for _.assignInWith extendWith( object: T, @@ -820,7 +902,7 @@ declare module "lodash" { object: T, source: A ) => any | void - ): Object, + ): Object; extendWith( object: T, s1: A, @@ -832,7 +914,7 @@ declare module "lodash" { object: T, source: A | B ) => any | void - ): Object, + ): Object; extendWith( object: T, s1: A, @@ -845,7 +927,7 @@ declare module "lodash" { object: T, source: A | B | C ) => any | void - ): Object, + ): Object; extendWith( object: T, s1: A, @@ -859,40 +941,41 @@ declare module "lodash" { object: T, source: A | B | C | D ) => any | void - ): Object, + ): Object; findKey( object?: ?T, predicate?: OPredicate - ): string | void, + ): string | void; findLastKey( object?: ?T, predicate?: OPredicate - ): string | void, - forIn(object?: ?Object, iteratee?: OIteratee<*>): Object, - forInRight(object?: ?Object, iteratee?: OIteratee<*>): Object, - forOwn(object?: ?Object, iteratee?: OIteratee<*>): Object, - forOwnRight(object?: ?Object, iteratee?: OIteratee<*>): Object, - functions(object?: ?Object): Array, - functionsIn(object?: ?Object): Array, + ): string | void; + forIn(object?: ?Object, iteratee?: OIteratee<*>): Object; + forInRight(object?: ?Object, iteratee?: OIteratee<*>): Object; + forOwn(object?: ?Object, iteratee?: OIteratee<*>): Object; + forOwnRight(object?: ?Object, iteratee?: OIteratee<*>): Object; + functions(object?: ?Object): Array; + functionsIn(object?: ?Object): Array; get( object?: ?Object | ?Array, path?: ?Array | string, defaultValue?: any - ): any, - has(object?: ?Object, path?: ?Array | string): boolean, - hasIn(object?: ?Object, path?: ?Array | string): boolean, - invert(object?: ?Object, multiVal?: boolean): Object, - invertBy(object: ?Object, iteratee?: Function): Object, + ): any; + has(object?: ?Object, path?: ?Array | string): boolean; + hasIn(object?: ?Object, path?: ?Array | string): boolean; + invert(object?: ?Object, multiVal?: boolean): Object; + invertBy(object: ?Object, iteratee?: Function): Object; invoke( object?: ?Object, path?: ?Array | string, ...args?: Array - ): any, - keys(object?: ?Object): Array, - keysIn(object?: ?Object): Array, - mapKeys(object?: ?Object, iteratee?: OIteratee<*>): Object, - mapValues(object?: ?Object, iteratee?: OIteratee<*>): Object, - merge(object?: ?Object, ...sources?: Array): Object, + ): any; + keys(object?: ?{ [key: K]: any }): Array; + keys(object?: ?Object): Array; + keysIn(object?: ?Object): Array; + mapKeys(object?: ?Object, iteratee?: OIteratee<*>): Object; + mapValues(object?: ?Object, iteratee?: OIteratee<*>): Object; + merge(object?: ?Object, ...sources?: Array): Object; mergeWith( object: T, customizer?: ( @@ -902,7 +985,7 @@ declare module "lodash" { object: T, source: A ) => any | void - ): Object, + ): Object; mergeWith( object: T, s1: A, @@ -914,7 +997,7 @@ declare module "lodash" { object: T, source: A | B ) => any | void - ): Object, + ): Object; mergeWith( object: T, s1: A, @@ -927,7 +1010,7 @@ declare module "lodash" { object: T, source: A | B | C ) => any | void - ): Object, + ): Object; mergeWith( object: T, s1: A, @@ -941,210 +1024,293 @@ declare module "lodash" { object: T, source: A | B | C | D ) => any | void - ): Object, - omit(object?: ?Object, ...props: Array): Object, - omit(object?: ?Object, props: Array): Object, + ): Object; + omit(object?: ?Object, ...props: Array): Object; + omit(object?: ?Object, props: Array): Object; omitBy( object?: ?T, predicate?: OPredicate - ): Object, - pick(object?: ?Object, ...props: Array): Object, - pick(object?: ?Object, props: Array): Object, + ): Object; + pick(object?: ?Object, ...props: Array): Object; + pick(object?: ?Object, props: Array): Object; pickBy( object?: ?T, predicate?: OPredicate - ): Object, + ): Object; result( object?: ?Object, path?: ?Array | string, defaultValue?: any - ): any, - set(object?: ?Object, path?: ?Array | string, value: any): Object, + ): any; + set(object?: ?Object, path?: ?Array | string, value: any): Object; setWith( object: T, path?: ?Array | string, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any - ): Object, - toPairs(object?: ?Object | Array<*>): NestedArray, - toPairsIn(object?: ?Object): NestedArray, + ): Object; + toPairs(object?: ?Object | Array<*>): NestedArray; + toPairsIn(object?: ?Object): NestedArray; transform( collection: Object | Array, iteratee?: OIteratee<*>, accumulator?: any - ): any, - unset(object?: ?Object, path?: ?Array | string): boolean, - update(object: Object, path: string[] | string, updater: Function): Object, + ): any; + unset(object?: ?Object, path?: ?Array | string): boolean; + update(object: Object, path: string[] | string, updater: Function): Object; updateWith( object: Object, path: string[] | string, updater: Function, customizer?: Function - ): Object, - values(object?: ?Object): Array, - valuesIn(object?: ?Object): Array, + ): Object; + values(object?: ?Object): Array; + valuesIn(object?: ?Object): Array; // Seq // harder to read, but this is _() - (value: any): any, - chain(value: T): any, - tap(value: T, interceptor: (value: T) => any): T, - thru(value: T1, interceptor: (value: T1) => T2): T2, + (value: any): any; + chain(value: T): any; + tap(value: T, interceptor: (value: T) => any): T; + thru(value: T1, interceptor: (value: T1) => T2): T2; // TODO: _.prototype.* // String - camelCase(string?: ?string): string, - capitalize(string?: string): string, - deburr(string?: string): string, - endsWith(string?: string, target?: string, position?: number): boolean, - escape(string?: string): string, - escapeRegExp(string?: string): string, - kebabCase(string?: string): string, - lowerCase(string?: string): string, - lowerFirst(string?: string): string, - pad(string?: string, length?: number, chars?: string): string, - padEnd(string?: string, length?: number, chars?: string): string, - padStart(string?: string, length?: number, chars?: string): string, - parseInt(string: string, radix?: number): number, - repeat(string?: string, n?: number): string, + camelCase(string?: ?string): string; + capitalize(string?: string): string; + deburr(string?: string): string; + endsWith(string?: string, target?: string, position?: number): boolean; + escape(string?: string): string; + escapeRegExp(string?: string): string; + kebabCase(string?: string): string; + lowerCase(string?: string): string; + lowerFirst(string?: string): string; + pad(string?: string, length?: number, chars?: string): string; + padEnd(string?: string, length?: number, chars?: string): string; + padStart(string?: string, length?: number, chars?: string): string; + parseInt(string: string, radix?: number): number; + repeat(string?: string, n?: number): string; replace( string?: string, pattern: RegExp | string, replacement: ((string: string) => string) | string - ): string, - snakeCase(string?: string): string, + ): string; + snakeCase(string?: string): string; split( string?: string, separator: RegExp | string, limit?: number - ): Array, - startCase(string?: string): string, - startsWith(string?: string, target?: string, position?: number): boolean, - template(string?: string, options?: TemplateSettings): Function, - toLower(string?: string): string, - toUpper(string?: string): string, - trim(string?: string, chars?: string): string, - trimEnd(string?: string, chars?: string): string, - trimStart(string?: string, chars?: string): string, - truncate(string?: string, options?: TruncateOptions): string, - unescape(string?: string): string, - upperCase(string?: string): string, - upperFirst(string?: string): string, - words(string?: string, pattern?: RegExp | string): Array, + ): Array; + startCase(string?: string): string; + startsWith(string?: string, target?: string, position?: number): boolean; + template(string?: string, options?: TemplateSettings): Function; + toLower(string?: string): string; + toUpper(string?: string): string; + trim(string?: string, chars?: string): string; + trimEnd(string?: string, chars?: string): string; + trimStart(string?: string, chars?: string): string; + truncate(string?: string, options?: TruncateOptions): string; + unescape(string?: string): string; + upperCase(string?: string): string; + upperFirst(string?: string): string; + words(string?: string, pattern?: RegExp | string): Array; // Util - attempt(func: Function, ...args: Array): any, - bindAll(object?: ?Object, methodNames: Array): Object, - bindAll(object?: ?Object, ...methodNames: Array): Object, - cond(pairs: NestedArray): Function, - conforms(source: Object): Function, - constant(value: T): () => T, + attempt(func: Function, ...args: Array): any; + bindAll(object?: ?Object, methodNames: Array): Object; + bindAll(object?: ?Object, ...methodNames: Array): Object; + cond(pairs: NestedArray): Function; + conforms(source: Object): Function; + constant(value: T): () => T; defaultTo( value: T1, defaultValue: T2 - ): T1, + ): T1; // NaN is a number instead of its own type, otherwise it would behave like null/void - defaultTo(value: T1, defaultValue: T2): T1 | T2, - defaultTo(value: T1, defaultValue: T2): T2, - flow: $ComposeReverse, - flow(funcs?: Array): Function, - flowRight: $Compose, - flowRight(funcs?: Array): Function, - identity(value: T): T, - iteratee(func?: any): Function, - matches(source: Object): Function, - matchesProperty(path?: ?Array | string, srcValue: any): Function, - method(path?: ?Array | string, ...args?: Array): Function, - methodOf(object?: ?Object, ...args?: Array): Function, + defaultTo(value: T1, defaultValue: T2): T1 | T2; + defaultTo(value: T1, defaultValue: T2): T2; + flow: $ComposeReverse; + flow(funcs?: Array): Function; + flowRight: $Compose; + flowRight(funcs?: Array): Function; + identity(value: T): T; + iteratee(func?: any): Function; + matches(source: Object): Function; + matchesProperty(path?: ?Array | string, srcValue: any): Function; + method(path?: ?Array | string, ...args?: Array): Function; + methodOf(object?: ?Object, ...args?: Array): Function; mixin( object?: T, source: Object, options?: { chain: boolean } - ): T, - noConflict(): Lodash, - noop(...args: Array): void, - nthArg(n?: number): Function, - over(...iteratees: Array): Function, - over(iteratees: Array): Function, - overEvery(...predicates: Array): Function, - overEvery(predicates: Array): Function, - overSome(...predicates: Array): Function, - overSome(predicates: Array): Function, - property(path?: ?Array | string): Function, - propertyOf(object?: ?Object): Function, - range(start: number, end: number, step?: number): Array, - range(end: number, step?: number): Array, - rangeRight(start: number, end: number, step?: number): Array, - rangeRight(end: number, step?: number): Array, - runInContext(context?: Object): Function, + ): T; + noConflict(): Lodash; + noop(...args: Array): void; + nthArg(n?: number): Function; + over(...iteratees: Array): Function; + over(iteratees: Array): Function; + overEvery(...predicates: Array): Function; + overEvery(predicates: Array): Function; + overSome(...predicates: Array): Function; + overSome(predicates: Array): Function; + property(path?: ?Array | string): Function; + propertyOf(object?: ?Object): Function; + range(start: number, end: number, step?: number): Array; + range(end: number, step?: number): Array; + rangeRight(start: number, end: number, step?: number): Array; + rangeRight(end: number, step?: number): Array; + runInContext(context?: Object): Function; - stubArray(): Array<*>, - stubFalse(): false, - stubObject(): {}, - stubString(): "", - stubTrue(): true, - times(n: number, ...rest: Array): Array, - times(n: number, iteratee: (i: number) => T): Array, - toPath(value: any): Array, - uniqueId(prefix?: string): string, + stubArray(): Array<*>; + stubFalse(): false; + stubObject(): {}; + stubString(): ""; + stubTrue(): true; + times(n: number, ...rest: Array): Array; + times(n: number, iteratee: (i: number) => T): Array; + toPath(value: any): Array; + uniqueId(prefix?: string): string; // Properties - VERSION: string, - templateSettings: TemplateSettings + VERSION: string; + templateSettings: TemplateSettings; } declare var exports: Lodash; } declare module "lodash/fp" { - declare type __CurriedFunction1 = - & ((...r: [AA]) => R) - declare type CurriedFunction1 = __CurriedFunction1 + declare type __CurriedFunction1 = (...r: [AA]) => R; + declare type CurriedFunction1 = __CurriedFunction1; - declare type __CurriedFunction2 = - & ((...r: [AA]) => CurriedFunction1) - & ((...r: [AA, BB]) => R) - declare type CurriedFunction2 = __CurriedFunction2 + declare type __CurriedFunction2 = (( + ...r: [AA] + ) => CurriedFunction1) & + ((...r: [AA, BB]) => R); + declare type CurriedFunction2 = __CurriedFunction2; - declare type __CurriedFunction3 = - & ((...r: [AA]) => CurriedFunction2) - & ((...r: [AA, BB]) => CurriedFunction1) - & ((...r: [AA, BB, CC]) => R) - declare type CurriedFunction3 = __CurriedFunction3 + declare type __CurriedFunction3 = (( + ...r: [AA] + ) => CurriedFunction2) & + ((...r: [AA, BB]) => CurriedFunction1) & + ((...r: [AA, BB, CC]) => R); + declare type CurriedFunction3 = __CurriedFunction3< + A, + B, + C, + R, + *, + *, + * + >; - declare type __CurriedFunction4 = - & ((...r: [AA]) => CurriedFunction3) - & ((...r: [AA, BB]) => CurriedFunction2) - & ((...r: [AA, BB, CC]) => CurriedFunction1) - & ((...r: [AA, BB, CC, DD]) => R) - declare type CurriedFunction4 = __CurriedFunction4 + declare type __CurriedFunction4< + A, + B, + C, + D, + R, + AA: A, + BB: B, + CC: C, + DD: D + > = ((...r: [AA]) => CurriedFunction3) & + ((...r: [AA, BB]) => CurriedFunction2) & + ((...r: [AA, BB, CC]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD]) => R); + declare type CurriedFunction4 = __CurriedFunction4< + A, + B, + C, + D, + R, + *, + *, + *, + * + >; - declare type __CurriedFunction5 = - & ((...r: [AA]) => CurriedFunction4) - & ((...r: [AA, BB]) => CurriedFunction3) - & ((...r: [AA, BB, CC]) => CurriedFunction2) - & ((...r: [AA, BB, CC, DD]) => CurriedFunction1) - & ((...r: [AA, BB, CC, DD, EE]) => R) - declare type CurriedFunction5 = __CurriedFunction5 + declare type __CurriedFunction5< + A, + B, + C, + D, + E, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E + > = ((...r: [AA]) => CurriedFunction4) & + ((...r: [AA, BB]) => CurriedFunction3) & + ((...r: [AA, BB, CC]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE]) => R); + declare type CurriedFunction5 = __CurriedFunction5< + A, + B, + C, + D, + E, + R, + *, + *, + *, + *, + * + >; - declare type __CurriedFunction6 = - & ((...r: [AA]) => CurriedFunction5) - & ((...r: [AA, BB]) => CurriedFunction4) - & ((...r: [AA, BB, CC]) => CurriedFunction3) - & ((...r: [AA, BB, CC, DD]) => CurriedFunction2) - & ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) - & ((...r: [AA, BB, CC, DD, EE, FF]) => R) - declare type CurriedFunction6 = __CurriedFunction6 + declare type __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E, + FF: F + > = ((...r: [AA]) => CurriedFunction5) & + ((...r: [AA, BB]) => CurriedFunction4) & + ((...r: [AA, BB, CC]) => CurriedFunction3) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE, FF]) => R); + declare type CurriedFunction6 = __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + *, + *, + *, + *, + *, + * + >; - declare type Curry = - & (((...r: [A]) => R) => CurriedFunction1) - & (((...r: [A, B]) => R) => CurriedFunction2) - & (((...r: [A, B, C]) => R) => CurriedFunction3) - & (((...r: [A, B, C, D]) => R) => CurriedFunction4) - & (((...r: [A, B, C, D, E]) => R) => CurriedFunction5) - & (((...r: [A, B, C, D, E, F]) => R) => CurriedFunction6) + declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & + (((...r: [A, B]) => R) => CurriedFunction2) & + (((...r: [A, B, C]) => R) => CurriedFunction3) & + (( + (...r: [A, B, C, D]) => R + ) => CurriedFunction4) & + (( + (...r: [A, B, C, D, E]) => R + ) => CurriedFunction5) & + (( + (...r: [A, B, C, D, E, F]) => R + ) => CurriedFunction6); - declare type UnaryFn = (a: A) => R; + declare type UnaryFn = (a: A) => R; declare type TemplateSettings = { escape?: RegExp, @@ -1183,10 +1349,7 @@ declare module "lodash/fp" { | matchesPropertyIterateeShorthand | propertyIterateeShorthand; - declare type OIterateeWithResult = - | Object - | string - | ((value: V) => R); + declare type OIterateeWithResult = Object | string | ((value: V) => R); declare type OIteratee = OIterateeWithResult; declare type OFlatMapIteratee = OIterateeWithResult>; @@ -1206,9 +1369,7 @@ declare module "lodash/fp" { | string; declare type Comparator = (item: T, item2: T) => boolean; - declare type MapIterator = - | ((item: T) => U) - | propertyIterateeShorthand; + declare type MapIterator = ((item: T) => U) | propertyIterateeShorthand; declare type OMapIterator = | ((item: T) => U) @@ -1216,728 +1377,1589 @@ declare module "lodash/fp" { declare class Lodash { // Array - chunk(size: number): (array: Array) => Array>, - chunk(size: number, array: Array): Array>, - compact(array: Array): Array, - concat | T, B: Array | U>(base: A): (elements: B) => Array, - concat | T, B: Array | U>(base: A, elements: B): Array, - difference(values: Array): (array: Array) => Array, - difference(values: Array, array: Array): Array, - differenceBy(iteratee: ValueOnlyIteratee): ((values: Array) => (array: Array) => T[]) & ((values: Array, array: Array) => T[]), - differenceBy(iteratee: ValueOnlyIteratee, values: Array): (array: Array) => T[], - differenceBy(iteratee: ValueOnlyIteratee, values: Array, array: Array): T[], - differenceWith(values: T[]): ((comparator: Comparator) => (array: T[]) => T[]) & ((comparator: Comparator, array: T[]) => T[]), - differenceWith(values: T[], comparator: Comparator): (array: T[]) => T[], - differenceWith(values: T[], comparator: Comparator, array: T[]): T[], - drop(n: number): (array: Array) => Array, - drop(n: number, array: Array): Array, - dropLast(n: number): (array: Array) => Array, - dropLast(n: number, array: Array): Array, - dropRight(n: number): (array: Array) => Array, - dropRight(n: number, array: Array): Array, - dropRightWhile(predicate: Predicate): (array: Array) => Array, - dropRightWhile(predicate: Predicate, array: Array): Array, - dropWhile(predicate: Predicate): (array: Array) => Array, - dropWhile(predicate: Predicate, array: Array): Array, - dropLastWhile(predicate: Predicate): (array: Array) => Array, - dropLastWhile(predicate: Predicate, array: Array): Array, - fill(start: number): ((end: number) => (((value: U) => (array: Array) => Array) & ((value: U, array: Array) => Array))) & ((end: number, value: U) => (array: Array) => Array) & ((end: number, value: U, array: Array) => Array), - fill(start: number, end: number): ((value: U) => (array: Array) => Array) & ((value: U, array: Array) => Array), - fill(start: number, end: number, value: U): (array: Array) => Array, - fill(start: number, end: number, value: U, array: Array): Array, - findIndex(predicate: Predicate): (array: Array) => number, - findIndex(predicate: Predicate, array: Array): number, - findIndexFrom(predicate: Predicate): ((fromIndex: number) => (array: Array) => number) & ((fromIndex: number, array: Array) => number), - findIndexFrom(predicate: Predicate, fromIndex: number): (array: Array) => number, - findIndexFrom(predicate: Predicate, fromIndex: number, array: Array): number, - findLastIndex(predicate: Predicate): (array: Array) => number, - findLastIndex(predicate: Predicate, array: Array): number, - findLastIndexFrom(predicate: Predicate): ((fromIndex: number) => (array: Array) => number) & ((fromIndex: number, array: Array) => number), - findLastIndexFrom(predicate: Predicate, fromIndex: number): (array: Array) => number, - findLastIndexFrom(predicate: Predicate, fromIndex: number, array: Array): number, + chunk(size: number): (array: Array) => Array>; + chunk(size: number, array: Array): Array>; + compact(array: Array): Array; + concat | T, B: Array | U>( + base: A + ): (elements: B) => Array; + concat | T, B: Array | U>( + base: A, + elements: B + ): Array; + difference(values: Array): (array: Array) => Array; + difference(values: Array, array: Array): Array; + differenceBy( + iteratee: ValueOnlyIteratee + ): ((values: Array) => (array: Array) => T[]) & + ((values: Array, array: Array) => T[]); + differenceBy( + iteratee: ValueOnlyIteratee, + values: Array + ): (array: Array) => T[]; + differenceBy( + iteratee: ValueOnlyIteratee, + values: Array, + array: Array + ): T[]; + differenceWith( + values: T[] + ): ((comparator: Comparator) => (array: T[]) => T[]) & + ((comparator: Comparator, array: T[]) => T[]); + differenceWith( + values: T[], + comparator: Comparator + ): (array: T[]) => T[]; + differenceWith(values: T[], comparator: Comparator, array: T[]): T[]; + drop(n: number): (array: Array) => Array; + drop(n: number, array: Array): Array; + dropLast(n: number): (array: Array) => Array; + dropLast(n: number, array: Array): Array; + dropRight(n: number): (array: Array) => Array; + dropRight(n: number, array: Array): Array; + dropRightWhile(predicate: Predicate): (array: Array) => Array; + dropRightWhile(predicate: Predicate, array: Array): Array; + dropWhile(predicate: Predicate): (array: Array) => Array; + dropWhile(predicate: Predicate, array: Array): Array; + dropLastWhile(predicate: Predicate): (array: Array) => Array; + dropLastWhile(predicate: Predicate, array: Array): Array; + fill( + start: number + ): (( + end: number + ) => ((value: U) => (array: Array) => Array) & + ((value: U, array: Array) => Array)) & + ((end: number, value: U) => (array: Array) => Array) & + ((end: number, value: U, array: Array) => Array); + fill( + start: number, + end: number + ): ((value: U) => (array: Array) => Array) & + ((value: U, array: Array) => Array); + fill( + start: number, + end: number, + value: U + ): (array: Array) => Array; + fill( + start: number, + end: number, + value: U, + array: Array + ): Array; + findIndex(predicate: Predicate): (array: $ReadOnlyArray) => number; + findIndex(predicate: Predicate, array: $ReadOnlyArray): number; + findIndexFrom( + predicate: Predicate + ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & + ((fromIndex: number, array: $ReadOnlyArray) => number); + findIndexFrom( + predicate: Predicate, + fromIndex: number + ): (array: $ReadOnlyArray) => number; + findIndexFrom( + predicate: Predicate, + fromIndex: number, + array: $ReadOnlyArray + ): number; + findLastIndex( + predicate: Predicate + ): (array: $ReadOnlyArray) => number; + findLastIndex(predicate: Predicate, array: $ReadOnlyArray): number; + findLastIndexFrom( + predicate: Predicate + ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & + ((fromIndex: number, array: $ReadOnlyArray) => number); + findLastIndexFrom( + predicate: Predicate, + fromIndex: number + ): (array: $ReadOnlyArray) => number; + findLastIndexFrom( + predicate: Predicate, + fromIndex: number, + array: $ReadOnlyArray + ): number; // alias of _.head - first(array: Array): T, - flatten(array: Array | X>): Array, - unnest(array: Array | X>): Array, - flattenDeep(array: any[]): Array, - flattenDepth(depth: number): (array: any[]) => any[], - flattenDepth(depth: number, array: any[]): any[], - fromPairs(pairs: Array): Object, - head(array: Array): T, - indexOf(value: T): (array: Array) => number, - indexOf(value: T, array: Array): number, - indexOfFrom(value: T): ((fromIndex: number) => (array: Array) => number) & ((fromIndex: number, array: Array) => number), - indexOfFrom(value: T, fromIndex: number): (array: Array) => number, - indexOfFrom(value: T, fromIndex: number, array: Array): number, - initial(array: Array): Array, - init(array: Array): Array, - intersection(a1: Array): (a2: Array) => Array, - intersection(a1: Array, a2: Array): Array, - intersectionBy(iteratee: ValueOnlyIteratee): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - intersectionBy(iteratee: ValueOnlyIteratee, a1: Array): (a2: Array) => Array, - intersectionBy(iteratee: ValueOnlyIteratee, a1: Array, a2: Array): Array, - intersectionWith(comparator: Comparator): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - intersectionWith(comparator: Comparator, a1: Array): (a2: Array) => Array, - intersectionWith(comparator: Comparator, a1: Array, a2: Array): Array, - join(separator: string): (array: Array) => string, - join(separator: string, array: Array): string, - last(array: Array): T, - lastIndexOf(value: T): (array: Array) => number, - lastIndexOf(value: T, array: Array): number, - lastIndexOfFrom(value: T): ((fromIndex: number) => (array: Array) => number) & ((fromIndex: number, array: Array) => number), - lastIndexOfFrom(value: T, fromIndex: number): (array: Array) => number, - lastIndexOfFrom(value: T, fromIndex: number, array: Array): number, - nth(n: number): (array: T[]) => T, - nth(n: number, array: T[]): T, - pull(value: T): (array: Array) => Array, - pull(value: T, array: Array): Array, - pullAll(values: Array): (array: Array) => Array, - pullAll(values: Array, array: Array): Array, - pullAllBy(iteratee: ValueOnlyIteratee): ((values: Array) => (array: Array) => Array) & ((values: Array, array: Array) => Array), - pullAllBy(iteratee: ValueOnlyIteratee, values: Array): (array: Array) => Array, - pullAllBy(iteratee: ValueOnlyIteratee, values: Array, array: Array): Array, - pullAllWith(comparator: Function): ((values: T[]) => (array: T[]) => T[]) & ((values: T[], array: T[]) => T[]), - pullAllWith(comparator: Function, values: T[]): (array: T[]) => T[], - pullAllWith(comparator: Function, values: T[], array: T[]): T[], - pullAt(indexed: Array): (array: Array) => Array, - pullAt(indexed: Array, array: Array): Array, - remove(predicate: Predicate): (array: Array) => Array, - remove(predicate: Predicate, array: Array): Array, - reverse(array: Array): Array, - slice(start: number): ((end: number) => (array: Array) => Array) & ((end: number, array: Array) => Array), - slice(start: number, end: number): (array: Array) => Array, - slice(start: number, end: number, array: Array): Array, - sortedIndex(value: T): (array: Array) => number, - sortedIndex(value: T, array: Array): number, - sortedIndexBy(iteratee: ValueOnlyIteratee): ((value: T) => (array: Array) => number) & ((value: T, array: Array) => number), - sortedIndexBy(iteratee: ValueOnlyIteratee, value: T): (array: Array) => number, - sortedIndexBy(iteratee: ValueOnlyIteratee, value: T, array: Array): number, - sortedIndexOf(value: T): (array: Array) => number, - sortedIndexOf(value: T, array: Array): number, - sortedLastIndex(value: T): (array: Array) => number, - sortedLastIndex(value: T, array: Array): number, - sortedLastIndexBy(iteratee: ValueOnlyIteratee): ((value: T) => (array: Array) => number) & ((value: T, array: Array) => number), - sortedLastIndexBy(iteratee: ValueOnlyIteratee, value: T): (array: Array) => number, - sortedLastIndexBy(iteratee: ValueOnlyIteratee, value: T, array: Array): number, - sortedLastIndexOf(value: T): (array: Array) => number, - sortedLastIndexOf(value: T, array: Array): number, - sortedUniq(array: Array): Array, - sortedUniqBy(iteratee: (value: T) => mixed): (array: Array) => Array, - sortedUniqBy(iteratee: (value: T) => mixed, array: Array): Array, - tail(array: Array): Array, - take(n: number): (array: Array) => Array, - take(n: number, array: Array): Array, - takeRight(n: number): (array: Array) => Array, - takeRight(n: number, array: Array): Array, - takeLast(n: number): (array: Array) => Array, - takeLast(n: number, array: Array): Array, - takeRightWhile(predicate: Predicate): (array: Array) => Array, - takeRightWhile(predicate: Predicate, array: Array): Array, - takeLastWhile(predicate: Predicate): (array: Array) => Array, - takeLastWhile(predicate: Predicate, array: Array): Array, - takeWhile(predicate: Predicate): (array: Array) => Array, - takeWhile(predicate: Predicate, array: Array): Array, - union(a1: Array): (a2: Array) => Array, - union(a1: Array, a2: Array): Array, - unionBy(iteratee: ValueOnlyIteratee): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - unionBy(iteratee: ValueOnlyIteratee, a1: Array): (a2: Array) => Array, - unionBy(iteratee: ValueOnlyIteratee, a1: Array, a2: Array): Array, - unionWith(comparator: Comparator): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - unionWith(comparator: Comparator, a1: Array): (a2: Array) => Array, - unionWith(comparator: Comparator, a1: Array, a2: Array): Array, - uniq(array: Array): Array, - uniqBy(iteratee: ValueOnlyIteratee): (array: Array) => Array, - uniqBy(iteratee: ValueOnlyIteratee, array: Array): Array, - uniqWith(comparator: Comparator): (array: Array) => Array, - uniqWith(comparator: Comparator, array: Array): Array, - unzip(array: Array): Array, - unzipWith(iteratee: Iteratee): (array: Array) => Array, - unzipWith(iteratee: Iteratee, array: Array): Array, - without(values: Array): (array: Array) => Array, - without(values: Array, array: Array): Array, - xor(a1: Array): (a2: Array) => Array, - xor(a1: Array, a2: Array): Array, - symmetricDifference(a1: Array): (a2: Array) => Array, - symmetricDifference(a1: Array, a2: Array): Array, - xorBy(iteratee: ValueOnlyIteratee): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - xorBy(iteratee: ValueOnlyIteratee, a1: Array): (a2: Array) => Array, - xorBy(iteratee: ValueOnlyIteratee, a1: Array, a2: Array ): Array, - symmetricDifferenceBy(iteratee: ValueOnlyIteratee): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - symmetricDifferenceBy(iteratee: ValueOnlyIteratee, a1: Array): (a2: Array) => Array, - symmetricDifferenceBy(iteratee: ValueOnlyIteratee, a1: Array, a2: Array ): Array, - xorWith(comparator: Comparator): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - xorWith(comparator: Comparator, a1: Array): (a2: Array) => Array, - xorWith(comparator: Comparator, a1: Array, a2: Array): Array, - symmetricDifferenceWith(comparator: Comparator): ((a1: Array) => (a2: Array) => Array) & ((a1: Array, a2: Array) => Array), - symmetricDifferenceWith(comparator: Comparator, a1: Array): (a2: Array) => Array, - symmetricDifferenceWith(comparator: Comparator, a1: Array, a2: Array): Array, - zip(a1: A[]): (a2: B[]) => Array<[A, B]>, - zip(a1: A[], a2: B[]): Array<[A, B]>, - zipAll(arrays: Array>): Array, - zipObject(props: Array): (values: Array) => Object, - zipObject(props: Array, values: Array): Object, - zipObj(props: Array): (values: Array) => Object, - zipObj(props: Array, values: Array): Object, - zipObjectDeep(props: any[]): (values: any) => Object, - zipObjectDeep(props: any[], values: any): Object, - zipWith(iteratee: Iteratee): ((a1: NestedArray) => (a2: NestedArray) => Array) & ((a1: NestedArray, a2: NestedArray) => Array), - zipWith(iteratee: Iteratee, a1: NestedArray): (a2: NestedArray) => Array, - zipWith(iteratee: Iteratee, a1: NestedArray, a2: NestedArray): Array, + first(array: Array): T; + flatten(array: Array | X>): Array; + unnest(array: Array | X>): Array; + flattenDeep(array: any[]): Array; + flattenDepth(depth: number): (array: any[]) => any[]; + flattenDepth(depth: number, array: any[]): any[]; + fromPairs(pairs: Array<[A, B]>): { [key: A]: B }; + head(array: Array): T; + indexOf(value: T): (array: Array) => number; + indexOf(value: T, array: Array): number; + indexOfFrom( + value: T + ): ((fromIndex: number) => (array: Array) => number) & + ((fromIndex: number, array: Array) => number); + indexOfFrom(value: T, fromIndex: number): (array: Array) => number; + indexOfFrom(value: T, fromIndex: number, array: Array): number; + initial(array: Array): Array; + init(array: Array): Array; + intersection(a1: Array): (a2: Array) => Array; + intersection(a1: Array, a2: Array): Array; + intersectionBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + intersectionBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + intersectionBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + intersectionWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + intersectionWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + intersectionWith( + comparator: Comparator, + a1: Array, + a2: Array + ): Array; + join(separator: string): (array: Array) => string; + join(separator: string, array: Array): string; + last(array: Array): T; + lastIndexOf(value: T): (array: Array) => number; + lastIndexOf(value: T, array: Array): number; + lastIndexOfFrom( + value: T + ): ((fromIndex: number) => (array: Array) => number) & + ((fromIndex: number, array: Array) => number); + lastIndexOfFrom( + value: T, + fromIndex: number + ): (array: Array) => number; + lastIndexOfFrom(value: T, fromIndex: number, array: Array): number; + nth(n: number): (array: T[]) => T; + nth(n: number, array: T[]): T; + pull(value: T): (array: Array) => Array; + pull(value: T, array: Array): Array; + pullAll(values: Array): (array: Array) => Array; + pullAll(values: Array, array: Array): Array; + pullAllBy( + iteratee: ValueOnlyIteratee + ): ((values: Array) => (array: Array) => Array) & + ((values: Array, array: Array) => Array); + pullAllBy( + iteratee: ValueOnlyIteratee, + values: Array + ): (array: Array) => Array; + pullAllBy( + iteratee: ValueOnlyIteratee, + values: Array, + array: Array + ): Array; + pullAllWith( + comparator: Function + ): ((values: T[]) => (array: T[]) => T[]) & + ((values: T[], array: T[]) => T[]); + pullAllWith(comparator: Function, values: T[]): (array: T[]) => T[]; + pullAllWith(comparator: Function, values: T[], array: T[]): T[]; + pullAt(indexed: Array): (array: Array) => Array; + pullAt(indexed: Array, array: Array): Array; + remove(predicate: Predicate): (array: Array) => Array; + remove(predicate: Predicate, array: Array): Array; + reverse(array: Array): Array; + slice( + start: number + ): ((end: number) => (array: Array) => Array) & + ((end: number, array: Array) => Array); + slice(start: number, end: number): (array: Array) => Array; + slice(start: number, end: number, array: Array): Array; + sortedIndex(value: T): (array: Array) => number; + sortedIndex(value: T, array: Array): number; + sortedIndexBy( + iteratee: ValueOnlyIteratee + ): ((value: T) => (array: Array) => number) & + ((value: T, array: Array) => number); + sortedIndexBy( + iteratee: ValueOnlyIteratee, + value: T + ): (array: Array) => number; + sortedIndexBy( + iteratee: ValueOnlyIteratee, + value: T, + array: Array + ): number; + sortedIndexOf(value: T): (array: Array) => number; + sortedIndexOf(value: T, array: Array): number; + sortedLastIndex(value: T): (array: Array) => number; + sortedLastIndex(value: T, array: Array): number; + sortedLastIndexBy( + iteratee: ValueOnlyIteratee + ): ((value: T) => (array: Array) => number) & + ((value: T, array: Array) => number); + sortedLastIndexBy( + iteratee: ValueOnlyIteratee, + value: T + ): (array: Array) => number; + sortedLastIndexBy( + iteratee: ValueOnlyIteratee, + value: T, + array: Array + ): number; + sortedLastIndexOf(value: T): (array: Array) => number; + sortedLastIndexOf(value: T, array: Array): number; + sortedUniq(array: Array): Array; + sortedUniqBy( + iteratee: (value: T) => mixed + ): (array: Array) => Array; + sortedUniqBy(iteratee: (value: T) => mixed, array: Array): Array; + tail(array: Array): Array; + take(n: number): (array: Array) => Array; + take(n: number, array: Array): Array; + takeRight(n: number): (array: Array) => Array; + takeRight(n: number, array: Array): Array; + takeLast(n: number): (array: Array) => Array; + takeLast(n: number, array: Array): Array; + takeRightWhile(predicate: Predicate): (array: Array) => Array; + takeRightWhile(predicate: Predicate, array: Array): Array; + takeLastWhile(predicate: Predicate): (array: Array) => Array; + takeLastWhile(predicate: Predicate, array: Array): Array; + takeWhile(predicate: Predicate): (array: Array) => Array; + takeWhile(predicate: Predicate, array: Array): Array; + union(a1: Array): (a2: Array) => Array; + union(a1: Array, a2: Array): Array; + unionBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + unionBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + unionBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + unionWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + unionWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + unionWith( + comparator: Comparator, + a1: Array, + a2: Array + ): Array; + uniq(array: Array): Array; + uniqBy(iteratee: ValueOnlyIteratee): (array: Array) => Array; + uniqBy(iteratee: ValueOnlyIteratee, array: Array): Array; + uniqWith(comparator: Comparator): (array: Array) => Array; + uniqWith(comparator: Comparator, array: Array): Array; + unzip(array: Array): Array; + unzipWith(iteratee: Iteratee): (array: Array) => Array; + unzipWith(iteratee: Iteratee, array: Array): Array; + without(values: Array): (array: Array) => Array; + without(values: Array, array: Array): Array; + xor(a1: Array): (a2: Array) => Array; + xor(a1: Array, a2: Array): Array; + symmetricDifference(a1: Array): (a2: Array) => Array; + symmetricDifference(a1: Array, a2: Array): Array; + xorBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + xorBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + xorBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + symmetricDifferenceBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + symmetricDifferenceBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + symmetricDifferenceBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + xorWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + xorWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + xorWith(comparator: Comparator, a1: Array, a2: Array): Array; + symmetricDifferenceWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + symmetricDifferenceWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + symmetricDifferenceWith( + comparator: Comparator, + a1: Array, + a2: Array + ): Array; + zip(a1: A[]): (a2: B[]) => Array<[A, B]>; + zip(a1: A[], a2: B[]): Array<[A, B]>; + zipAll(arrays: Array>): Array; + zipObject(props?: Array): (values?: Array) => { [key: K]: V }; + zipObject(props?: Array, values?: Array): { [key: K]: V }; + zipObj(props: Array): (values: Array) => Object; + zipObj(props: Array, values: Array): Object; + zipObjectDeep(props: any[]): (values: any) => Object; + zipObjectDeep(props: any[], values: any): Object; + zipWith( + iteratee: Iteratee + ): ((a1: NestedArray) => (a2: NestedArray) => Array) & + ((a1: NestedArray, a2: NestedArray) => Array); + zipWith( + iteratee: Iteratee, + a1: NestedArray + ): (a2: NestedArray) => Array; + zipWith( + iteratee: Iteratee, + a1: NestedArray, + a2: NestedArray + ): Array; // Collection - countBy(iteratee: ValueOnlyIteratee): (collection: Array | { [id: any]: T }) => { [string]: number }, - countBy(iteratee: ValueOnlyIteratee, collection: Array | { [id: any]: T }): { [string]: number }, + countBy( + iteratee: ValueOnlyIteratee + ): (collection: Array | { [id: any]: T }) => { [string]: number }; + countBy( + iteratee: ValueOnlyIteratee, + collection: Array | { [id: any]: T } + ): { [string]: number }; // alias of _.forEach - each(iteratee: Iteratee | OIteratee): (collection: Array | { [id: any]: T }) => Array, - each(iteratee: Iteratee | OIteratee, collection: Array | { [id: any]: T }): Array, + each( + iteratee: Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => Array; + each( + iteratee: Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): Array; // alias of _.forEachRight - eachRight(iteratee: Iteratee | OIteratee): (collection: Array | { [id: any]: T }) => Array, - eachRight(iteratee: Iteratee | OIteratee, collection: Array | { [id: any]: T }): Array, - every(iteratee: Iteratee | OIteratee): (collection: Array | { [id: any]: T }) => boolean, - every(iteratee: Iteratee | OIteratee, collection: Array | { [id: any]: T }): boolean, - all(iteratee: Iteratee | OIteratee): (collection: Array | { [id: any]: T }) => boolean, - all(iteratee: Iteratee | OIteratee, collection: Array | { [id: any]: T }): boolean, - filter(predicate: Predicate | OPredicate): (collection: Array | { [id: any]: T }) => Array, - filter(predicate: Predicate | OPredicate, collection: Array | { [id: any]: T }): Array, - find(predicate: Predicate | OPredicate): (collection: Array | { [id: any]: T }) => T | void, - find(predicate: Predicate | OPredicate, collection: Array | { [id: any]: T }): T | void, - findFrom(predicate: Predicate | OPredicate): ((fromIndex: number) => (collection: Array | { [id: any]: T }) => T | void) & ((fromIndex: number, collection: Array | { [id: any]: T }) => T | void), - findFrom(predicate: Predicate | OPredicate, fromIndex: number): (collection: Array | { [id: any]: T }) => T | void, - findFrom(predicate: Predicate | OPredicate, fromIndex: number, collection: Array | { [id: any]: T }): T | void, - findLast(predicate: Predicate | OPredicate): (collection: Array | { [id: any]: T }) => T | void, - findLast(predicate: Predicate | OPredicate, collection: Array | { [id: any]: T }): T | void, - findLastFrom(predicate: Predicate | OPredicate): ((fromIndex: number) => (collection: Array | { [id: any]: T }) => T | void) & ((fromIndex: number, collection: Array | { [id: any]: T }) => T | void), - findLastFrom(predicate: Predicate | OPredicate, fromIndex: number): (collection: Array | { [id: any]: T }) => T | void, - findLastFrom(predicate: Predicate | OPredicate, fromIndex: number, collection: Array | { [id: any]: T }): T | void, - flatMap(iteratee: FlatMapIteratee | OFlatMapIteratee): (collection: Array | { [id: any]: T }) => Array, - flatMap(iteratee: FlatMapIteratee | OFlatMapIteratee, collection: Array | { [id: any]: T }): Array, - flatMapDeep(iteratee: FlatMapIteratee | OFlatMapIteratee): (collection: Array | { [id: any]: T }) => Array, - flatMapDeep(iteratee: FlatMapIteratee | OFlatMapIteratee, collection: Array | { [id: any]: T }): Array, - flatMapDepth(iteratee: FlatMapIteratee | OFlatMapIteratee): ((depth: number) => (collection: Array | { [id: any]: T }) => Array) & ((depth: number, collection: Array | { [id: any]: T }) => Array), - flatMapDepth(iteratee: FlatMapIteratee | OFlatMapIteratee, depth: number): (collection: Array | { [id: any]: T }) => Array, - flatMapDepth(iteratee: FlatMapIteratee | OFlatMapIteratee, depth: number, collection: Array | { [id: any]: T }): Array, - forEach(iteratee: Iteratee | OIteratee): (collection: Array | { [id: any]: T }) => Array, - forEach(iteratee: Iteratee | OIteratee, collection: Array | { [id: any]: T }): Array, - forEachRight(iteratee: Iteratee | OIteratee): (collection: Array | { [id: any]: T }) => Array, - forEachRight(iteratee: Iteratee | OIteratee, collection: Array | { [id: any]: T }): Array, - groupBy(iteratee: ValueOnlyIteratee): (collection: Array | { [id: any]: T }) => { [key: V]: Array }, - groupBy(iteratee: ValueOnlyIteratee, collection: Array | { [id: any]: T }): { [key: V]: Array }, - includes(value: string): (str: string) => boolean, - includes(value: string, str: string): boolean, - includes(value: T): (collection: Array | { [id: any]: T }) => boolean, - includes(value: T, collection: Array | { [id: any]: T }): boolean, - contains(value: string): (str: string) => boolean, - contains(value: string, str: string): boolean, - contains(value: T): (collection: Array | { [id: any]: T }) => boolean, - contains(value: T, collection: Array | { [id: any]: T }): boolean, - includesFrom(value: string): ((fromIndex: number) => (str: string) => boolean) & ((fromIndex: number, str: string) => boolean), - includesFrom(value: string, fromIndex: number): (str: string) => boolean, - includesFrom(value: string, fromIndex: number, str: string): boolean, - includesFrom(value: T): ((fromIndex: number) => (collection: Array) => boolean) & ((fromIndex: number, collection: Array) => boolean), - includesFrom(value: T, fromIndex: number): (collection: Array) => boolean, - includesFrom(value: T, fromIndex: number, collection: Array): boolean, - invokeMap(path: ((value: T) => Array | string) | Array | string): (collection: Array | { [id: any]: T }) => Array, - invokeMap(path: ((value: T) => Array | string) | Array | string, collection: Array | { [id: any]: T }): Array, - invokeArgsMap(path: ((value: T) => Array | string) | Array | string): ((collection: Array | { [id: any]: T }) => (args: Array) => Array) & ((collection: Array | { [id: any]: T }, args: Array) => Array), - invokeArgsMap(path: ((value: T) => Array | string) | Array | string, collection: Array | { [id: any]: T }): (args: Array) => Array, - invokeArgsMap(path: ((value: T) => Array | string) | Array | string, collection: Array | { [id: any]: T }, args: Array): Array, - keyBy(iteratee: ValueOnlyIteratee): (collection: Array | { [id: any]: T }) => { [key: V]: T }, - keyBy(iteratee: ValueOnlyIteratee, collection: Array | { [id: any]: T }): { [key: V]: T }, - indexBy(iteratee: ValueOnlyIteratee): (collection: Array | { [id: any]: T }) => { [key: V]: T }, - indexBy(iteratee: ValueOnlyIteratee, collection: Array | { [id: any]: T }): { [key: V]: T }, - map(iteratee: MapIterator | OMapIterator): (collection: Array | { [id: any]: T}) => Array, - map(iteratee: MapIterator | OMapIterator, collection: Array | { [id: any]: T}): Array, - map(iteratee: (char: string) => any): (str: string) => string, - map(iteratee: (char: string) => any, str: string): string, - pluck(iteratee: MapIterator | OMapIterator): (collection: Array | { [id: any]: T}) => Array, - pluck(iteratee: MapIterator | OMapIterator, collection: Array | { [id: any]: T}): Array, - pluck(iteratee: (char: string) => any): (str: string) => string, - pluck(iteratee: (char: string) => any, str: string): string, - orderBy(iteratees: Array | OIteratee<*>> | string): ((orders: Array<"asc" | "desc"> | string) => (collection: Array | { [id: any]: T}) => Array) & ((orders: Array<"asc" | "desc"> | string, collection: Array | { [id: any]: T}) => Array), - orderBy(iteratees: Array | OIteratee<*>> | string, orders: Array<"asc" | "desc"> | string): (collection: Array | { [id: any]: T}) => Array, - orderBy(iteratees: Array | OIteratee<*>> | string, orders: Array<"asc" | "desc"> | string, collection: Array | { [id: any]: T}): Array, - partition(predicate: Predicate | OPredicate): (collection: Array | { [id: any]: T }) => NestedArray, - partition(predicate: Predicate | OPredicate, collection: Array | { [id: any]: T }): NestedArray, - reduce(iteratee: (accumulator: U, value: T) => U): ((accumulator: U) => (collection: Array | { [id: any]: T}) => U) & ((accumulator: U, collection: Array | { [id: any]: T}) => U), - reduce(iteratee: (accumulator: U, value: T) => U, accumulator: U): (collection: Array | { [id: any]: T}) => U, - reduce(iteratee: (accumulator: U, value: T) => U, accumulator: U, collection: Array | { [id: any]: T}): U, - reduceRight(iteratee: (value: T, accumulator: U) => U): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & ((accumulator: U, collection: Array | { [id: any]: T }) => U), - reduceRight(iteratee: (value: T, accumulator: U) => U, accumulator: U): (collection: Array | { [id: any]: T }) => U, - reduceRight(iteratee: (value: T, accumulator: U) => U, accumulator: U, collection: Array | { [id: any]: T }): U, - reject(predicate: Predicate | OPredicate): (collection: Array | { [id: any]: T }) => Array, - reject(predicate: Predicate | OPredicate, collection: Array | { [id: any]: T }): Array, - sample(collection: Array | { [id: any]: T }): T, - sampleSize(n: number): (collection: Array | { [id: any]: T }) => Array, - sampleSize(n: number, collection: Array | { [id: any]: T }): Array, - shuffle(collection: Array | { [id: any]: T }): Array, - size(collection: Array | Object): number, - some(predicate: Predicate | OPredicate): (collection: Array | { [id: any]: T }) => boolean, - some(predicate: Predicate | OPredicate, collection: Array | { [id: any]: T }): boolean, - any(predicate: Predicate | OPredicate): (collection: Array | { [id: any]: T }) => boolean, - any(predicate: Predicate | OPredicate, collection: Array | { [id: any]: T }): boolean, - sortBy(iteratees: Array | OIteratee> | Iteratee | OIteratee): (collection: Array | { [id: any]: T }) => Array, - sortBy(iteratees: Array | OIteratee> | Iteratee | OIteratee, collection: Array | { [id: any]: T }): Array, + eachRight( + iteratee: Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => Array; + eachRight( + iteratee: Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): Array; + every( + iteratee: Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => boolean; + every( + iteratee: Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): boolean; + all( + iteratee: Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => boolean; + all( + iteratee: Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): boolean; + filter( + predicate: Predicate | OPredicate + ): (collection: Array | { [id: any]: T }) => Array; + filter( + predicate: Predicate | OPredicate, + collection: Array | { [id: any]: T } + ): Array; + find( + predicate: Predicate | OPredicate + ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; + find( + predicate: Predicate | OPredicate, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + findFrom( + predicate: Predicate | OPredicate + ): (( + fromIndex: number + ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & + (( + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ) => T | void); + findFrom( + predicate: Predicate | OPredicate, + fromIndex: number + ): (collection: Array | { [id: any]: T }) => T | void; + findFrom( + predicate: Predicate | OPredicate, + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + findLast( + predicate: Predicate | OPredicate + ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; + findLast( + predicate: Predicate | OPredicate, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + findLastFrom( + predicate: Predicate | OPredicate + ): (( + fromIndex: number + ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & + (( + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ) => T | void); + findLastFrom( + predicate: Predicate | OPredicate, + fromIndex: number + ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; + findLastFrom( + predicate: Predicate | OPredicate, + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + flatMap( + iteratee: FlatMapIteratee | OFlatMapIteratee + ): (collection: Array | { [id: any]: T }) => Array; + flatMap( + iteratee: FlatMapIteratee | OFlatMapIteratee, + collection: Array | { [id: any]: T } + ): Array; + flatMapDeep( + iteratee: FlatMapIteratee | OFlatMapIteratee + ): (collection: Array | { [id: any]: T }) => Array; + flatMapDeep( + iteratee: FlatMapIteratee | OFlatMapIteratee, + collection: Array | { [id: any]: T } + ): Array; + flatMapDepth( + iteratee: FlatMapIteratee | OFlatMapIteratee + ): (( + depth: number + ) => (collection: Array | { [id: any]: T }) => Array) & + ((depth: number, collection: Array | { [id: any]: T }) => Array); + flatMapDepth( + iteratee: FlatMapIteratee | OFlatMapIteratee, + depth: number + ): (collection: Array | { [id: any]: T }) => Array; + flatMapDepth( + iteratee: FlatMapIteratee | OFlatMapIteratee, + depth: number, + collection: Array | { [id: any]: T } + ): Array; + forEach( + iteratee: Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => Array; + forEach( + iteratee: Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): Array; + forEachRight( + iteratee: Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => Array; + forEachRight( + iteratee: Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): Array; + groupBy( + iteratee: ValueOnlyIteratee + ): (collection: Array | { [id: any]: T }) => { [key: V]: Array }; + groupBy( + iteratee: ValueOnlyIteratee, + collection: Array | { [id: any]: T } + ): { [key: V]: Array }; + includes(value: string): (str: string) => boolean; + includes(value: string, str: string): boolean; + includes(value: T): (collection: Array | { [id: any]: T }) => boolean; + includes(value: T, collection: Array | { [id: any]: T }): boolean; + contains(value: string): (str: string) => boolean; + contains(value: string, str: string): boolean; + contains(value: T): (collection: Array | { [id: any]: T }) => boolean; + contains(value: T, collection: Array | { [id: any]: T }): boolean; + includesFrom( + value: string + ): ((fromIndex: number) => (str: string) => boolean) & + ((fromIndex: number, str: string) => boolean); + includesFrom(value: string, fromIndex: number): (str: string) => boolean; + includesFrom(value: string, fromIndex: number, str: string): boolean; + includesFrom( + value: T + ): ((fromIndex: number) => (collection: Array) => boolean) & + ((fromIndex: number, collection: Array) => boolean); + includesFrom( + value: T, + fromIndex: number + ): (collection: Array) => boolean; + includesFrom(value: T, fromIndex: number, collection: Array): boolean; + invokeMap( + path: ((value: T) => Array | string) | Array | string + ): (collection: Array | { [id: any]: T }) => Array; + invokeMap( + path: ((value: T) => Array | string) | Array | string, + collection: Array | { [id: any]: T } + ): Array; + invokeArgsMap( + path: ((value: T) => Array | string) | Array | string + ): (( + collection: Array | { [id: any]: T } + ) => (args: Array) => Array) & + (( + collection: Array | { [id: any]: T }, + args: Array + ) => Array); + invokeArgsMap( + path: ((value: T) => Array | string) | Array | string, + collection: Array | { [id: any]: T } + ): (args: Array) => Array; + invokeArgsMap( + path: ((value: T) => Array | string) | Array | string, + collection: Array | { [id: any]: T }, + args: Array + ): Array; + keyBy( + iteratee: ValueOnlyIteratee + ): (collection: Array | { [id: any]: T }) => { [key: V]: T }; + keyBy( + iteratee: ValueOnlyIteratee, + collection: Array | { [id: any]: T } + ): { [key: V]: T }; + indexBy( + iteratee: ValueOnlyIteratee + ): (collection: Array | { [id: any]: T }) => { [key: V]: T }; + indexBy( + iteratee: ValueOnlyIteratee, + collection: Array | { [id: any]: T } + ): { [key: V]: T }; + map( + iteratee: MapIterator | OMapIterator + ): (collection: Array | { [id: any]: T }) => Array; + map( + iteratee: MapIterator | OMapIterator, + collection: Array | { [id: any]: T } + ): Array; + map(iteratee: (char: string) => any): (str: string) => string; + map(iteratee: (char: string) => any, str: string): string; + pluck( + iteratee: MapIterator | OMapIterator + ): (collection: Array | { [id: any]: T }) => Array; + pluck( + iteratee: MapIterator | OMapIterator, + collection: Array | { [id: any]: T } + ): Array; + pluck(iteratee: (char: string) => any): (str: string) => string; + pluck(iteratee: (char: string) => any, str: string): string; + orderBy( + iteratees: Array | OIteratee<*>> | string + ): (( + orders: Array<"asc" | "desc"> | string + ) => (collection: Array | { [id: any]: T }) => Array) & + (( + orders: Array<"asc" | "desc"> | string, + collection: Array | { [id: any]: T } + ) => Array); + orderBy( + iteratees: Array | OIteratee<*>> | string, + orders: Array<"asc" | "desc"> | string + ): (collection: Array | { [id: any]: T }) => Array; + orderBy( + iteratees: Array | OIteratee<*>> | string, + orders: Array<"asc" | "desc"> | string, + collection: Array | { [id: any]: T } + ): Array; + partition( + predicate: Predicate | OPredicate + ): (collection: Array | { [id: any]: T }) => [Array, Array]; + partition( + predicate: Predicate | OPredicate, + collection: Array | { [id: any]: T } + ): [Array, Array]; + reduce( + iteratee: (accumulator: U, value: T) => U + ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & + ((accumulator: U, collection: Array | { [id: any]: T }) => U); + reduce( + iteratee: (accumulator: U, value: T) => U, + accumulator: U + ): (collection: Array | { [id: any]: T }) => U; + reduce( + iteratee: (accumulator: U, value: T) => U, + accumulator: U, + collection: Array | { [id: any]: T } + ): U; + reduceRight( + iteratee: (value: T, accumulator: U) => U + ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & + ((accumulator: U, collection: Array | { [id: any]: T }) => U); + reduceRight( + iteratee: (value: T, accumulator: U) => U, + accumulator: U + ): (collection: Array | { [id: any]: T }) => U; + reduceRight( + iteratee: (value: T, accumulator: U) => U, + accumulator: U, + collection: Array | { [id: any]: T } + ): U; + reject( + predicate: Predicate | OPredicate + ): (collection: Array | { [id: any]: T }) => Array; + reject( + predicate: Predicate | OPredicate, + collection: Array | { [id: any]: T } + ): Array; + sample(collection: Array | { [id: any]: T }): T; + sampleSize( + n: number + ): (collection: Array | { [id: any]: T }) => Array; + sampleSize(n: number, collection: Array | { [id: any]: T }): Array; + shuffle(collection: Array | { [id: any]: T }): Array; + size(collection: Array | Object): number; + some( + predicate: Predicate | OPredicate + ): (collection: Array | { [id: any]: T }) => boolean; + some( + predicate: Predicate | OPredicate, + collection: Array | { [id: any]: T } + ): boolean; + any( + predicate: Predicate | OPredicate + ): (collection: Array | { [id: any]: T }) => boolean; + any( + predicate: Predicate | OPredicate, + collection: Array | { [id: any]: T } + ): boolean; + sortBy( + iteratees: Array | OIteratee> | Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => Array; + sortBy( + iteratees: Array | OIteratee> | Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): Array; // Date - now(): number, + now(): number; // Function - after(fn: Function): (n: number) => Function, - after(fn: Function, n: number): Function, - ary(func: Function): Function, - nAry(n: number): (func: Function) => Function, - nAry(n: number, func: Function): Function, - before(fn: Function): (n: number) => Function, - before(fn: Function, n: number): Function, - bind(func: Function): (thisArg: any) => Function, - bind(func: Function, thisArg: any): Function, - bindKey(obj: Object): (key: string) => Function, - bindKey(obj: Object, key: string): Function, - curry: Curry, - curryN(arity: number): (func: Function) => Function, - curryN(arity: number, func: Function): Function, - curryRight(func: Function): Function, - curryRightN(arity: number): (func: Function) => Function, - curryRightN(arity: number, func: Function): Function, - debounce(wait: number): (func: Function) => Function, - debounce(wait: number, func: Function): Function, - defer(func: Function): number, - delay(wait: number): (func: Function) => number, - delay(wait: number, func: Function): number, - flip(func: Function): Function, - memoize(func: Function): Function, - negate(predicate: Function): Function, - complement(predicate: Function): Function, - once(func: Function): Function, - overArgs(func: Function): (transforms: Array) => Function, - overArgs(func: Function, transforms: Array): Function, - useWith(func: Function): (transforms: Array) => Function, - useWith(func: Function, transforms: Array): Function, - partial(func: Function): (partials: any[]) => Function, - partial(func: Function, partials: any[]): Function, - partialRight(func: Function): (partials: Array) => Function, - partialRight(func: Function, partials: Array): Function, - rearg(indexes: Array): (func: Function) => Function, - rearg(indexes: Array, func: Function): Function, - rest(func: Function): Function, - unapply(func: Function): Function, - restFrom(start: number): (func: Function) => Function, - restFrom(start: number, func: Function): Function, - spread(func: Function): Function, - apply(func: Function): Function, - spreadFrom(start: number): (func: Function) => Function, - spreadFrom(start: number, func: Function): Function, - throttle(wait: number): (func: Function) => Function, - throttle(wait: number, func: Function): Function, - unary(func: Function): Function, - wrap(wrapper: Function): (value: any) => Function, - wrap(wrapper: Function, value: any): Function, + after(fn: Function): (n: number) => Function; + after(fn: Function, n: number): Function; + ary(func: Function): Function; + nAry(n: number): (func: Function) => Function; + nAry(n: number, func: Function): Function; + before(fn: Function): (n: number) => Function; + before(fn: Function, n: number): Function; + bind(func: Function): (thisArg: any) => Function; + bind(func: Function, thisArg: any): Function; + bindKey(obj: Object): (key: string) => Function; + bindKey(obj: Object, key: string): Function; + curry: Curry; + curryN(arity: number): (func: Function) => Function; + curryN(arity: number, func: Function): Function; + curryRight(func: Function): Function; + curryRightN(arity: number): (func: Function) => Function; + curryRightN(arity: number, func: Function): Function; + debounce(wait: number): (func: F) => F; + debounce(wait: number, func: F): F; + defer(func: Function): number; + delay(wait: number): (func: Function) => number; + delay(wait: number, func: Function): number; + flip(func: Function): Function; + memoize(func: F): F; + negate(predicate: Function): Function; + complement(predicate: Function): Function; + once(func: Function): Function; + overArgs(func: Function): (transforms: Array) => Function; + overArgs(func: Function, transforms: Array): Function; + useWith(func: Function): (transforms: Array) => Function; + useWith(func: Function, transforms: Array): Function; + partial(func: Function): (partials: any[]) => Function; + partial(func: Function, partials: any[]): Function; + partialRight(func: Function): (partials: Array) => Function; + partialRight(func: Function, partials: Array): Function; + rearg(indexes: Array): (func: Function) => Function; + rearg(indexes: Array, func: Function): Function; + rest(func: Function): Function; + unapply(func: Function): Function; + restFrom(start: number): (func: Function) => Function; + restFrom(start: number, func: Function): Function; + spread(func: Function): Function; + apply(func: Function): Function; + spreadFrom(start: number): (func: Function) => Function; + spreadFrom(start: number, func: Function): Function; + throttle(wait: number): (func: Function) => Function; + throttle(wait: number, func: Function): Function; + unary(func: Function): Function; + wrap(wrapper: Function): (value: any) => Function; + wrap(wrapper: Function, value: any): Function; // Lang - castArray(value: *): any[], - clone(value: T): T, - cloneDeep(value: T): T, - cloneDeepWith(customizer: (value: T, key: number | string, object: T, stack: any) => U): (value: T) => U, - cloneDeepWith(customizer: (value: T, key: number | string, object: T, stack: any) => U, value: T): U, - cloneWith(customizer: (value: T, key: number | string, object: T, stack: any) => U): (value: T) => U, - cloneWith(customizer: (value: T, key: number | string, object: T, stack: any) => U, value: T): U, - conformsTo(predicates: T & { [key: string]: (x: any) => boolean }): (source: T) => boolean, - conformsTo(predicates: T & { [key: string]: (x: any) => boolean }, source: T): boolean, - where(predicates: T & { [key: string]: (x: any) => boolean }): (source: T) => boolean, - where(predicates: T & { [key: string]: (x: any) => boolean }, source: T): boolean, - conforms(predicates: T & { [key: string]: (x: any) => boolean }): (source: T) => boolean, - conforms(predicates: T & { [key: string]: (x: any) => boolean }, source: T): boolean, - eq(value: any): (other: any) => boolean, - eq(value: any, other: any): boolean, - identical(value: any): (other: any) => boolean, - identical(value: any, other: any): boolean, - gt(value: any): (other: any) => boolean, - gt(value: any, other: any): boolean, - gte(value: any): (other: any) => boolean, - gte(value: any, other: any): boolean, - isArguments(value: any): boolean, - isArray(value: any): boolean, - isArrayBuffer(value: any): boolean, - isArrayLike(value: any): boolean, - isArrayLikeObject(value: any): boolean, - isBoolean(value: any): boolean, - isBuffer(value: any): boolean, - isDate(value: any): boolean, - isElement(value: any): boolean, - isEmpty(value: any): boolean, - isEqual(value: any): (other: any) => boolean, - isEqual(value: any, other: any): boolean, - equals(value: any): (other: any) => boolean, - equals(value: any, other: any): boolean, - isEqualWith(customizer: (objValue: any, otherValue: any, key: number | string, object: T, other: U, stack: any) => boolean | void): ((value: T) => (other: U) => boolean) & ((value: T, other: U) => boolean), - isEqualWith(customizer: (objValue: any, otherValue: any, key: number | string, object: T, other: U, stack: any) => boolean | void, value: T): (other: U) => boolean, - isEqualWith(customizer: (objValue: any, otherValue: any, key: number | string, object: T, other: U, stack: any) => boolean | void, value: T, other: U): boolean, - isError(value: any): boolean, - isFinite(value: any): boolean, - isFunction(value: Function): true, - isFunction(value: number | string | void | null | Object): false, - isInteger(value: any): boolean, - isLength(value: any): boolean, - isMap(value: any): boolean, - isMatch(source: Object): (object: Object) => boolean, - isMatch(source: Object, object: Object): boolean, - whereEq(source: Object): (object: Object) => boolean, - whereEq(source: Object, object: Object): boolean, - isMatchWith(customizer: (objValue: any, srcValue: any, key: number | string, object: T, source: U) => boolean | void): ((source: U) => (object: T) => boolean) & ((source: U, object: T) => boolean), - isMatchWith(customizer: (objValue: any, srcValue: any, key: number | string, object: T, source: U) => boolean | void, source: U): (object: T) => boolean, - isMatchWith(customizer: (objValue: any, srcValue: any, key: number | string, object: T, source: U) => boolean | void, source: U, object: T): boolean, - isNaN(value: any): boolean, - isNative(value: any): boolean, - isNil(value: any): boolean, - isNull(value: any): boolean, - isNumber(value: any): boolean, - isObject(value: any): boolean, - isObjectLike(value: any): boolean, - isPlainObject(value: any): boolean, - isRegExp(value: any): boolean, - isSafeInteger(value: any): boolean, - isSet(value: any): boolean, - isString(value: string): true, - isString(value: number | boolean | Function | void | null | Object | Array): false, - isSymbol(value: any): boolean, - isTypedArray(value: any): boolean, - isUndefined(value: any): boolean, - isWeakMap(value: any): boolean, - isWeakSet(value: any): boolean, - lt(value: any): (other: any) => boolean, - lt(value: any, other: any): boolean, - lte(value: any): (other: any) => boolean, - lte(value: any, other: any): boolean, - toArray(value: any): Array, - toFinite(value: any): number, - toInteger(value: any): number, - toLength(value: any): number, - toNumber(value: any): number, - toPlainObject(value: any): Object, - toSafeInteger(value: any): number, - toString(value: any): string, + castArray(value: *): any[]; + clone(value: T): T; + cloneDeep(value: T): T; + cloneDeepWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U + ): (value: T) => U; + cloneDeepWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U, + value: T + ): U; + cloneWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U + ): (value: T) => U; + cloneWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U, + value: T + ): U; + conformsTo( + predicates: T & { [key: string]: (x: any) => boolean } + ): (source: T) => boolean; + conformsTo( + predicates: T & { [key: string]: (x: any) => boolean }, + source: T + ): boolean; + where( + predicates: T & { [key: string]: (x: any) => boolean } + ): (source: T) => boolean; + where( + predicates: T & { [key: string]: (x: any) => boolean }, + source: T + ): boolean; + conforms( + predicates: T & { [key: string]: (x: any) => boolean } + ): (source: T) => boolean; + conforms( + predicates: T & { [key: string]: (x: any) => boolean }, + source: T + ): boolean; + eq(value: any): (other: any) => boolean; + eq(value: any, other: any): boolean; + identical(value: any): (other: any) => boolean; + identical(value: any, other: any): boolean; + gt(value: any): (other: any) => boolean; + gt(value: any, other: any): boolean; + gte(value: any): (other: any) => boolean; + gte(value: any, other: any): boolean; + isArguments(value: any): boolean; + isArray(value: any): boolean; + isArrayBuffer(value: any): boolean; + isArrayLike(value: any): boolean; + isArrayLikeObject(value: any): boolean; + isBoolean(value: any): boolean; + isBuffer(value: any): boolean; + isDate(value: any): boolean; + isElement(value: any): boolean; + isEmpty(value: any): boolean; + isEqual(value: any): (other: any) => boolean; + isEqual(value: any, other: any): boolean; + equals(value: any): (other: any) => boolean; + equals(value: any, other: any): boolean; + isEqualWith( + customizer: ( + objValue: any, + otherValue: any, + key: number | string, + object: T, + other: U, + stack: any + ) => boolean | void + ): ((value: T) => (other: U) => boolean) & + ((value: T, other: U) => boolean); + isEqualWith( + customizer: ( + objValue: any, + otherValue: any, + key: number | string, + object: T, + other: U, + stack: any + ) => boolean | void, + value: T + ): (other: U) => boolean; + isEqualWith( + customizer: ( + objValue: any, + otherValue: any, + key: number | string, + object: T, + other: U, + stack: any + ) => boolean | void, + value: T, + other: U + ): boolean; + isError(value: any): boolean; + isFinite(value: any): boolean; + isFunction(value: Function): true; + isFunction(value: number | string | void | null | Object): false; + isInteger(value: any): boolean; + isLength(value: any): boolean; + isMap(value: any): boolean; + isMatch(source: Object): (object: Object) => boolean; + isMatch(source: Object, object: Object): boolean; + whereEq(source: Object): (object: Object) => boolean; + whereEq(source: Object, object: Object): boolean; + isMatchWith( + customizer: ( + objValue: any, + srcValue: any, + key: number | string, + object: T, + source: U + ) => boolean | void + ): ((source: U) => (object: T) => boolean) & + ((source: U, object: T) => boolean); + isMatchWith( + customizer: ( + objValue: any, + srcValue: any, + key: number | string, + object: T, + source: U + ) => boolean | void, + source: U + ): (object: T) => boolean; + isMatchWith( + customizer: ( + objValue: any, + srcValue: any, + key: number | string, + object: T, + source: U + ) => boolean | void, + source: U, + object: T + ): boolean; + isNaN(value: any): boolean; + isNative(value: any): boolean; + isNil(value: any): boolean; + isNull(value: any): boolean; + isNumber(value: any): boolean; + isObject(value: any): boolean; + isObjectLike(value: any): boolean; + isPlainObject(value: any): boolean; + isRegExp(value: any): boolean; + isSafeInteger(value: any): boolean; + isSet(value: any): boolean; + isString(value: string): true; + isString( + value: number | boolean | Function | void | null | Object | Array + ): false; + isSymbol(value: any): boolean; + isTypedArray(value: any): boolean; + isUndefined(value: any): boolean; + isWeakMap(value: any): boolean; + isWeakSet(value: any): boolean; + lt(value: any): (other: any) => boolean; + lt(value: any, other: any): boolean; + lte(value: any): (other: any) => boolean; + lte(value: any, other: any): boolean; + toArray(value: any): Array; + toFinite(value: any): number; + toInteger(value: any): number; + toLength(value: any): number; + toNumber(value: any): number; + toPlainObject(value: any): Object; + toSafeInteger(value: any): number; + toString(value: any): string; // Math - add(augend: number): (addend: number) => number, - add(augend: number, addend: number): number, - ceil(number: number): number, - divide(dividend: number): (divisor: number) => number, - divide(dividend: number, divisor: number): number, - floor(number: number): number, - max(array: Array): T, - maxBy(iteratee: Iteratee): (array: Array) => T, - maxBy(iteratee: Iteratee, array: Array): T, - mean(array: Array<*>): number, - meanBy(iteratee: Iteratee): (array: Array) => number, - meanBy(iteratee: Iteratee, array: Array): number, - min(array: Array): T, - minBy(iteratee: Iteratee): (array: Array) => T, - minBy(iteratee: Iteratee, array: Array): T, - multiply(multiplier: number): (multiplicand: number) => number, - multiply(multiplier: number, multiplicand: number): number, - round(number: number): number, - subtract(minuend: number): (subtrahend: number) => number, - subtract(minuend: number, subtrahend: number): number, - sum(array: Array<*>): number, - sumBy(iteratee: Iteratee): (array: Array) => number, - sumBy(iteratee: Iteratee, array: Array): number, + add(augend: number): (addend: number) => number; + add(augend: number, addend: number): number; + ceil(number: number): number; + divide(dividend: number): (divisor: number) => number; + divide(dividend: number, divisor: number): number; + floor(number: number): number; + max(array: Array): T; + maxBy(iteratee: Iteratee): (array: Array) => T; + maxBy(iteratee: Iteratee, array: Array): T; + mean(array: Array<*>): number; + meanBy(iteratee: Iteratee): (array: Array) => number; + meanBy(iteratee: Iteratee, array: Array): number; + min(array: Array): T; + minBy(iteratee: Iteratee): (array: Array) => T; + minBy(iteratee: Iteratee, array: Array): T; + multiply(multiplier: number): (multiplicand: number) => number; + multiply(multiplier: number, multiplicand: number): number; + round(number: number): number; + subtract(minuend: number): (subtrahend: number) => number; + subtract(minuend: number, subtrahend: number): number; + sum(array: Array<*>): number; + sumBy(iteratee: Iteratee): (array: Array) => number; + sumBy(iteratee: Iteratee, array: Array): number; // number - clamp(lower: number): ((upper: number) => (number: number) => number) & ((upper: number, number: number) => number), - clamp(lower: number, upper: number): (number: number) => number, - clamp(lower: number, upper: number, number: number): number, - inRange(start: number): ((end: number) => (number: number) => boolean) & ((end: number, number: number) => boolean), - inRange(start: number, end: number): (number: number) => boolean, - inRange(start: number, end: number, number: number): boolean, - random(lower: number): (upper: number) => number, - random(lower: number, upper: number): number, + clamp( + lower: number + ): ((upper: number) => (number: number) => number) & + ((upper: number, number: number) => number); + clamp(lower: number, upper: number): (number: number) => number; + clamp(lower: number, upper: number, number: number): number; + inRange( + start: number + ): ((end: number) => (number: number) => boolean) & + ((end: number, number: number) => boolean); + inRange(start: number, end: number): (number: number) => boolean; + inRange(start: number, end: number, number: number): boolean; + random(lower: number): (upper: number) => number; + random(lower: number, upper: number): number; // Object - assign(object: Object): (source: Object) => Object, - assign(object: Object, source: Object): Object, - assignAll(objects: Array): Object, - assignInAll(objects: Array): Object, - extendAll(objects: Array): Object, - assignIn(a: A): (b: B) => A & B, - assignIn(a: A, b: B): A & B, - assignInWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object), - assignInWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void, object: T): (s1: A) => Object, - assignInWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void, object: T, s1: A): Object, - assignWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object), - assignWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void, object: T): (s1: A) => Object, - assignWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void, object: T, s1: A): Object, - assignInAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void): (objects: Array) => Object, - assignInAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void, objects: Array): Object, - extendAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void): (objects: Array) => Object, - extendAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void, objects: Array): Object, - assignAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void): (objects: Array) => Object, - assignAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void, objects: Array): Object, - at(paths: Array): (object: Object) => Array, - at(paths: Array, object: Object): Array, - props(paths: Array): (object: Object) => Array, - props(paths: Array, object: Object): Array, - paths(paths: Array): (object: Object) => Array, - paths(paths: Array, object: Object): Array, - create(prototype: T): $Supertype, - defaults(source: Object): (object: Object) => Object, - defaults(source: Object, object: Object): Object, - defaultsAll(objects: Array): Object, - defaultsDeep(source: Object): (object: Object) => Object, - defaultsDeep(source: Object, object: Object): Object, - defaultsDeepAll(objects: Array): Object, + assign(object: Object): (source: Object) => Object; + assign(object: Object, source: Object): Object; + assignAll(objects: Array): Object; + assignInAll(objects: Array): Object; + extendAll(objects: Array): Object; + assignIn(a: A): (b: B) => A & B; + assignIn(a: A, b: B): A & B; + assignInWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + assignInWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T + ): (s1: A) => Object; + assignInWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T, + s1: A + ): Object; + assignWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + assignWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T + ): (s1: A) => Object; + assignWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T, + s1: A + ): Object; + assignInAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + assignInAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + extendAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + extendAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + assignAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + assignAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + at(paths: Array): (object: Object) => Array; + at(paths: Array, object: Object): Array; + props(paths: Array): (object: Object) => Array; + props(paths: Array, object: Object): Array; + paths(paths: Array): (object: Object) => Array; + paths(paths: Array, object: Object): Array; + create(prototype: T): $Supertype; + defaults(source: Object): (object: Object) => Object; + defaults(source: Object, object: Object): Object; + defaultsAll(objects: Array): Object; + defaultsDeep(source: Object): (object: Object) => Object; + defaultsDeep(source: Object, object: Object): Object; + defaultsDeepAll(objects: Array): Object; // alias for _.toPairs - entries(object: Object): NestedArray, + entries(object: Object): NestedArray; // alias for _.toPairsIn - entriesIn(object: Object): NestedArray, + entriesIn(object: Object): NestedArray; // alias for _.assignIn - extend(a: A): (b: B) => A & B, - extend(a: A, b: B): A & B, + extend(a: A): (b: B) => A & B; + extend(a: A, b: B): A & B; // alias for _.assignInWith - extendWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object), - extendWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void, object: T): (s1: A) => Object, - extendWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A) => any | void, object: T, s1: A): Object, - findKey(predicate: OPredicate): (object: T) => string | void, - findKey(predicate: OPredicate, object: T): string | void, - findLastKey(predicate: OPredicate): (object: T) => string | void, - findLastKey(predicate: OPredicate, object: T): string | void, - forIn(iteratee: OIteratee<*>): (object: Object) => Object, - forIn(iteratee: OIteratee<*>, object: Object): Object, - forInRight(iteratee: OIteratee<*>): (object: Object) => Object, - forInRight(iteratee: OIteratee<*>, object: Object): Object, - forOwn(iteratee: OIteratee<*>): (object: Object) => Object, - forOwn(iteratee: OIteratee<*>, object: Object): Object, - forOwnRight(iteratee: OIteratee<*>): (object: Object) => Object, - forOwnRight(iteratee: OIteratee<*>, object: Object): Object, - functions(object: Object): Array, - functionsIn(object: Object): Array, - get(path: Array | string): (object: Object | Array) => any, - get(path: Array | string, object: Object | Array): any, - prop(path: Array | string): (object: Object | Array) => any, - prop(path: Array | string, object: Object | Array): any, - path(path: Array | string): (object: Object | Array) => any, - path(path: Array | string, object: Object | Array): any, - getOr(defaultValue: any): ((path: Array | string) => (object: Object | Array) => any) & ((path: Array | string, object: Object | Array) => any), - getOr(defaultValue: any, path: Array | string): (object: Object | Array) => any, - getOr(defaultValue: any, path: Array | string, object: Object | Array): any, - propOr(defaultValue: any): ((path: Array | string) => (object: Object | Array) => any) & ((path: Array | string, object: Object | Array) => any), - propOr(defaultValue: any, path: Array | string): (object: Object | Array) => any, - propOr(defaultValue: any, path: Array | string, object: Object | Array): any, - pathOr(defaultValue: any): ((path: Array | string) => (object: Object | Array) => any) & ((path: Array | string, object: Object | Array) => any), - pathOr(defaultValue: any, path: Array | string): (object: Object | Array) => any, - pathOr(defaultValue: any, path: Array | string, object: Object | Array): any, - has(path: Array | string): (object: Object) => boolean, - has(path: Array | string, object: Object): boolean, - hasIn(path: Array | string): (object: Object) => boolean, - hasIn(path: Array | string, object: Object): boolean, - invert(object: Object): Object, - invertObj(object: Object): Object, - invertBy(iteratee: Function): (object: Object) => Object, - invertBy(iteratee: Function, object: Object): Object, - invoke(path: Array | string): (object: Object) => any, - invoke(path: Array | string, object: Object): any, - invokeArgs(path: Array | string): ((object: Object) => (args: Array) => any) & ((object: Object, args: Array) => any), - invokeArgs(path: Array | string, object: Object): (args: Array) => any, - invokeArgs(path: Array | string, object: Object, args: Array): any, - keys(object: Object): Array, - keysIn(object: Object): Array, - mapKeys(iteratee: OIteratee<*>): (object: Object) => Object, - mapKeys(iteratee: OIteratee<*>, object: Object): Object, - mapValues(iteratee: OIteratee<*>): (object: Object) => Object, - mapValues(iteratee: OIteratee<*>, object: Object): Object, - merge(object: Object): (source: Object) => Object, - merge(object: Object, source: Object): Object, - mergeAll(objects: Array): Object, - mergeWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A | B) => any | void): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object), - mergeWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A | B) => any | void, object: T): (s1: A) => Object, - mergeWith(customizer: (objValue: any, srcValue: any, key: string, object: T, source: A | B) => any | void, object: T, s1: A): Object, - mergeAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void): (objects: Array) => Object, - mergeAllWith(customizer: (objValue: any, srcValue: any, key: string, object: Object, source: Object) => any | void, objects: Array): Object, - omit(props: Array): (object: Object) => Object, - omit(props: Array, object: Object): Object, - omitAll(props: Array): (object: Object) => Object, - omitAll(props: Array, object: Object): Object, - omitBy(predicate: OPredicate): (object: T) => Object, - omitBy(predicate: OPredicate, object: T): Object, - pick(props: Array): (object: Object) => Object, - pick(props: Array, object: Object): Object, - pickAll(props: Array): (object: Object) => Object, - pickAll(props: Array, object: Object): Object, - pickBy(predicate: OPredicate): (object: T) => Object, - pickBy(predicate: OPredicate, object: T): Object, - result(path: Array | string): (object: Object) => any, - result(path: Array | string, object: Object): any, - set(path: Array | string): ((value: any) => (object: Object) => Object) & ((value: any, object: Object) => Object), - set(path: Array | string, value: any): (object: Object) => Object, - set(path: Array | string, value: any, object: Object): Object, - assoc(path: Array | string): ((value: any) => (object: Object) => Object) & ((value: any, object: Object) => Object), - assoc(path: Array | string, value: any): (object: Object) => Object, - assoc(path: Array | string, value: any, object: Object): Object, - assocPath(path: Array | string): ((value: any) => (object: Object) => Object) & ((value: any, object: Object) => Object), - assocPath(path: Array | string, value: any): (object: Object) => Object, - assocPath(path: Array | string, value: any, object: Object): Object, - setWith(customizer: (nsValue: any, key: string, nsObject: T) => any): ((path: Array | string) => (((value: any) => (object: T) => Object) & ((value: any, object: T) => Object))) & ((path: Array | string, value: any) => (object: T) => Object) & ((path: Array | string, value: any, object: T) => Object), - setWith(customizer: (nsValue: any, key: string, nsObject: T) => any, path: Array | string): ((value: any) => (object: T) => Object) & ((value: any, object: T) => Object), - setWith(customizer: (nsValue: any, key: string, nsObject: T) => any, path: Array | string, value: any): (object: T) => Object, - setWith(customizer: (nsValue: any, key: string, nsObject: T) => any, path: Array | string, value: any, object: T): Object, - toPairs(object: Object | Array<*>): NestedArray, - toPairsIn(object: Object): NestedArray, - transform(iteratee: OIteratee<*>): ((accumulator: any) => (collection: Object | Array) => any) & ((accumulator: any, collection: Object | Array) => any), - transform(iteratee: OIteratee<*>, accumulator: any): (collection: Object | Array) => any, - transform(iteratee: OIteratee<*>, accumulator: any, collection: Object | Array): any, - unset(path: Array | string): (object: Object) => boolean, - unset(path: Array | string, object: Object): boolean, - dissoc(path: Array | string): (object: Object) => boolean, - dissoc(path: Array | string, object: Object): boolean, - dissocPath(path: Array | string): (object: Object) => boolean, - dissocPath(path: Array | string, object: Object): boolean, - update(path: string[] | string): ((updater: Function) => (object: Object) => Object) & ((updater: Function, object: Object) => Object), - update(path: string[] | string, updater: Function): (object: Object) => Object, - update(path: string[] | string, updater: Function, object: Object): Object, - updateWith(customizer: Function): ((path: string[] | string) => (((updater: Function) => (object: Object) => Object) & ((updater: Function, object: Object) => Object))) & ((path: string[] | string, updater: Function) => (object: Object) => Object) & ((path: string[] | string, updater: Function, object: Object) => Object), - updateWith(customizer: Function, path: string[] | string): ((updater: Function) => (object: Object) => Object) & ((updater: Function, object: Object) => Object), - updateWith(customizer: Function, path: string[] | string, updater: Function): (object: Object) => Object, - updateWith(customizer: Function, path: string[] | string, updater: Function, object: Object): Object, - values(object: Object): Array, - valuesIn(object: Object): Array, + extendWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + extendWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T + ): (s1: A) => Object; + extendWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T, + s1: A + ): Object; + findKey( + predicate: OPredicate + ): (object: T) => string | void; + findKey( + predicate: OPredicate, + object: T + ): string | void; + findLastKey( + predicate: OPredicate + ): (object: T) => string | void; + findLastKey( + predicate: OPredicate, + object: T + ): string | void; + forIn(iteratee: OIteratee<*>): (object: Object) => Object; + forIn(iteratee: OIteratee<*>, object: Object): Object; + forInRight(iteratee: OIteratee<*>): (object: Object) => Object; + forInRight(iteratee: OIteratee<*>, object: Object): Object; + forOwn(iteratee: OIteratee<*>): (object: Object) => Object; + forOwn(iteratee: OIteratee<*>, object: Object): Object; + forOwnRight(iteratee: OIteratee<*>): (object: Object) => Object; + forOwnRight(iteratee: OIteratee<*>, object: Object): Object; + functions(object: Object): Array; + functionsIn(object: Object): Array; + get(path: Array | string): (object: Object | Array) => any; + get(path: Array | string, object: Object | Array): any; + prop(path: Array | string): (object: Object | Array) => any; + prop(path: Array | string, object: Object | Array): any; + path(path: Array | string): (object: Object | Array) => any; + path(path: Array | string, object: Object | Array): any; + getOr( + defaultValue: any + ): (( + path: Array | string + ) => (object: Object | Array) => any) & + ((path: Array | string, object: Object | Array) => any); + getOr( + defaultValue: any, + path: Array | string + ): (object: Object | Array) => any; + getOr( + defaultValue: any, + path: Array | string, + object: Object | Array + ): any; + propOr( + defaultValue: any + ): (( + path: Array | string + ) => (object: Object | Array) => any) & + ((path: Array | string, object: Object | Array) => any); + propOr( + defaultValue: any, + path: Array | string + ): (object: Object | Array) => any; + propOr( + defaultValue: any, + path: Array | string, + object: Object | Array + ): any; + pathOr( + defaultValue: any + ): (( + path: Array | string + ) => (object: Object | Array) => any) & + ((path: Array | string, object: Object | Array) => any); + pathOr( + defaultValue: any, + path: Array | string + ): (object: Object | Array) => any; + pathOr( + defaultValue: any, + path: Array | string, + object: Object | Array + ): any; + has(path: Array | string): (object: Object) => boolean; + has(path: Array | string, object: Object): boolean; + hasIn(path: Array | string): (object: Object) => boolean; + hasIn(path: Array | string, object: Object): boolean; + invert(object: Object): Object; + invertObj(object: Object): Object; + invertBy(iteratee: Function): (object: Object) => Object; + invertBy(iteratee: Function, object: Object): Object; + invoke(path: Array | string): (object: Object) => any; + invoke(path: Array | string, object: Object): any; + invokeArgs( + path: Array | string + ): ((object: Object) => (args: Array) => any) & + ((object: Object, args: Array) => any); + invokeArgs( + path: Array | string, + object: Object + ): (args: Array) => any; + invokeArgs( + path: Array | string, + object: Object, + args: Array + ): any; + keys(object: { [key: K]: any }): Array; + keys(object: Object): Array; + keysIn(object: Object): Array; + mapKeys(iteratee: OIteratee<*>): (object: Object) => Object; + mapKeys(iteratee: OIteratee<*>, object: Object): Object; + mapValues(iteratee: OIteratee<*>): (object: Object) => Object; + mapValues(iteratee: OIteratee<*>, object: Object): Object; + merge(object: Object): (source: Object) => Object; + merge(object: Object, source: Object): Object; + mergeAll(objects: Array): Object; + mergeWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + mergeWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void, + object: T + ): (s1: A) => Object; + mergeWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void, + object: T, + s1: A + ): Object; + mergeAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + mergeAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + omit(props: Array): (object: Object) => Object; + omit(props: Array, object: Object): Object; + omitAll(props: Array): (object: Object) => Object; + omitAll(props: Array, object: Object): Object; + omitBy( + predicate: OPredicate + ): (object: T) => Object; + omitBy(predicate: OPredicate, object: T): Object; + pick(props: Array): (object: Object) => Object; + pick(props: Array, object: Object): Object; + pickAll(props: Array): (object: Object) => Object; + pickAll(props: Array, object: Object): Object; + pickBy( + predicate: OPredicate + ): (object: T) => Object; + pickBy(predicate: OPredicate, object: T): Object; + result(path: Array | string): (object: Object) => any; + result(path: Array | string, object: Object): any; + set( + path: Array | string + ): ((value: any) => (object: Object) => Object) & + ((value: any, object: Object) => Object); + set(path: Array | string, value: any): (object: Object) => Object; + set(path: Array | string, value: any, object: Object): Object; + assoc( + path: Array | string + ): ((value: any) => (object: Object) => Object) & + ((value: any, object: Object) => Object); + assoc(path: Array | string, value: any): (object: Object) => Object; + assoc(path: Array | string, value: any, object: Object): Object; + assocPath( + path: Array | string + ): ((value: any) => (object: Object) => Object) & + ((value: any, object: Object) => Object); + assocPath( + path: Array | string, + value: any + ): (object: Object) => Object; + assocPath(path: Array | string, value: any, object: Object): Object; + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any + ): (( + path: Array | string + ) => ((value: any) => (object: T) => Object) & + ((value: any, object: T) => Object)) & + ((path: Array | string, value: any) => (object: T) => Object) & + ((path: Array | string, value: any, object: T) => Object); + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any, + path: Array | string + ): ((value: any) => (object: T) => Object) & + ((value: any, object: T) => Object); + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any, + path: Array | string, + value: any + ): (object: T) => Object; + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any, + path: Array | string, + value: any, + object: T + ): Object; + toPairs(object: Object | Array<*>): NestedArray; + toPairsIn(object: Object): NestedArray; + transform( + iteratee: OIteratee<*> + ): ((accumulator: any) => (collection: Object | Array) => any) & + ((accumulator: any, collection: Object | Array) => any); + transform( + iteratee: OIteratee<*>, + accumulator: any + ): (collection: Object | Array) => any; + transform( + iteratee: OIteratee<*>, + accumulator: any, + collection: Object | Array + ): any; + unset(path: Array | string): (object: Object) => boolean; + unset(path: Array | string, object: Object): boolean; + dissoc(path: Array | string): (object: Object) => boolean; + dissoc(path: Array | string, object: Object): boolean; + dissocPath(path: Array | string): (object: Object) => boolean; + dissocPath(path: Array | string, object: Object): boolean; + update( + path: string[] | string + ): ((updater: Function) => (object: Object) => Object) & + ((updater: Function, object: Object) => Object); + update( + path: string[] | string, + updater: Function + ): (object: Object) => Object; + update(path: string[] | string, updater: Function, object: Object): Object; + updateWith( + customizer: Function + ): (( + path: string[] | string + ) => ((updater: Function) => (object: Object) => Object) & + ((updater: Function, object: Object) => Object)) & + (( + path: string[] | string, + updater: Function + ) => (object: Object) => Object) & + ((path: string[] | string, updater: Function, object: Object) => Object); + updateWith( + customizer: Function, + path: string[] | string + ): ((updater: Function) => (object: Object) => Object) & + ((updater: Function, object: Object) => Object); + updateWith( + customizer: Function, + path: string[] | string, + updater: Function + ): (object: Object) => Object; + updateWith( + customizer: Function, + path: string[] | string, + updater: Function, + object: Object + ): Object; + values(object: Object): Array; + valuesIn(object: Object): Array; - tap(interceptor: (value: T) => any): (value: T) => T, - tap(interceptor: (value: T) => any, value: T): T, - thru(interceptor: (value: T1) => T2): (value: T1) => T2, - thru(interceptor: (value: T1) => T2, value: T1): T2, + tap(interceptor: (value: T) => any): (value: T) => T; + tap(interceptor: (value: T) => any, value: T): T; + thru(interceptor: (value: T1) => T2): (value: T1) => T2; + thru(interceptor: (value: T1) => T2, value: T1): T2; // String - camelCase(string: string): string, - capitalize(string: string): string, - deburr(string: string): string, - endsWith(target: string): (string: string) => boolean, - endsWith(target: string, string: string): boolean, - escape(string: string): string, - escapeRegExp(string: string): string, - kebabCase(string: string): string, - lowerCase(string: string): string, - lowerFirst(string: string): string, - pad(length: number): (string: string) => string, - pad(length: number, string: string): string, - padChars(chars: string): ((length: number) => (string: string) => string) & ((length: number, string: string) => string), - padChars(chars: string, length: number): (string: string) => string, - padChars(chars: string, length: number, string: string): string, - padEnd(length: number): (string: string) => string, - padEnd(length: number, string: string): string, - padCharsEnd(chars: string): ((length: number) => (string: string) => string) & ((length: number, string: string) => string), - padCharsEnd(chars: string, length: number): (string: string) => string, - padCharsEnd(chars: string, length: number, string: string): string, - padStart(length: number): (string: string) => string, - padStart(length: number, string: string): string, - padCharsStart(chars: string): ((length: number) => (string: string) => string) & ((length: number, string: string) => string), - padCharsStart(chars: string, length: number): (string: string) => string, - padCharsStart(chars: string, length: number, string: string): string, - parseInt(radix: number): (string: string) => number, - parseInt(radix: number, string: string): number, - repeat(n: number): (string: string) => string, - repeat(n: number, string: string): string, - replace(pattern: RegExp | string): ((replacement: ((string: string) => string) | string) => (string: string) => string) & ((replacement: ((string: string) => string) | string, string: string) => string), - replace(pattern: RegExp | string, replacement: ((string: string) => string) | string): (string: string) => string, - replace(pattern: RegExp | string, replacement: ((string: string) => string) | string, string: string): string, - snakeCase(string: string): string, - split(separator: RegExp | string): (string: string) => Array, - split(separator: RegExp | string, string: string): Array, - startCase(string: string): string, - startsWith(target: string): (string: string) => boolean, - startsWith(target: string, string: string): boolean, - template(string: string): Function, - toLower(string: string): string, - toUpper(string: string): string, - trim(string: string): string, - trimChars(chars: string): (string: string) => string, - trimChars(chars: string, string: string): string, - trimEnd(string: string): string, - trimCharsEnd(chars: string): (string: string) => string, - trimCharsEnd(chars: string, string: string): string, - trimStart(string: string): string, - trimCharsStart(chars: string): (string: string) => string, - trimCharsStart(chars: string, string: string): string, - truncate(options: TruncateOptions): (string: string) => string, - truncate(options: TruncateOptions, string: string): string, - unescape(string: string): string, - upperCase(string: string): string, - upperFirst(string: string): string, - words(string: string): Array, + camelCase(string: string): string; + capitalize(string: string): string; + deburr(string: string): string; + endsWith(target: string): (string: string) => boolean; + endsWith(target: string, string: string): boolean; + escape(string: string): string; + escapeRegExp(string: string): string; + kebabCase(string: string): string; + lowerCase(string: string): string; + lowerFirst(string: string): string; + pad(length: number): (string: string) => string; + pad(length: number, string: string): string; + padChars( + chars: string + ): ((length: number) => (string: string) => string) & + ((length: number, string: string) => string); + padChars(chars: string, length: number): (string: string) => string; + padChars(chars: string, length: number, string: string): string; + padEnd(length: number): (string: string) => string; + padEnd(length: number, string: string): string; + padCharsEnd( + chars: string + ): ((length: number) => (string: string) => string) & + ((length: number, string: string) => string); + padCharsEnd(chars: string, length: number): (string: string) => string; + padCharsEnd(chars: string, length: number, string: string): string; + padStart(length: number): (string: string) => string; + padStart(length: number, string: string): string; + padCharsStart( + chars: string + ): ((length: number) => (string: string) => string) & + ((length: number, string: string) => string); + padCharsStart(chars: string, length: number): (string: string) => string; + padCharsStart(chars: string, length: number, string: string): string; + parseInt(radix: number): (string: string) => number; + parseInt(radix: number, string: string): number; + repeat(n: number): (string: string) => string; + repeat(n: number, string: string): string; + replace( + pattern: RegExp | string + ): (( + replacement: ((string: string) => string) | string + ) => (string: string) => string) & + (( + replacement: ((string: string) => string) | string, + string: string + ) => string); + replace( + pattern: RegExp | string, + replacement: ((string: string) => string) | string + ): (string: string) => string; + replace( + pattern: RegExp | string, + replacement: ((string: string) => string) | string, + string: string + ): string; + snakeCase(string: string): string; + split(separator: RegExp | string): (string: string) => Array; + split(separator: RegExp | string, string: string): Array; + startCase(string: string): string; + startsWith(target: string): (string: string) => boolean; + startsWith(target: string, string: string): boolean; + template(string: string): Function; + toLower(string: string): string; + toUpper(string: string): string; + trim(string: string): string; + trimChars(chars: string): (string: string) => string; + trimChars(chars: string, string: string): string; + trimEnd(string: string): string; + trimCharsEnd(chars: string): (string: string) => string; + trimCharsEnd(chars: string, string: string): string; + trimStart(string: string): string; + trimCharsStart(chars: string): (string: string) => string; + trimCharsStart(chars: string, string: string): string; + truncate(options: TruncateOptions): (string: string) => string; + truncate(options: TruncateOptions, string: string): string; + unescape(string: string): string; + upperCase(string: string): string; + upperFirst(string: string): string; + words(string: string): Array; // Util - attempt(func: Function): any, - bindAll(methodNames: Array): (object: Object) => Object, - bindAll(methodNames: Array, object: Object): Object, - cond(pairs: NestedArray): Function, - constant(value: T): () => T, - always(value: T): () => T, - defaultTo(defaultValue: T2): (value: T1) => T1, - defaultTo(defaultValue: T2, value: T1): T1, + attempt(func: Function): any; + bindAll(methodNames: Array): (object: Object) => Object; + bindAll(methodNames: Array, object: Object): Object; + cond(pairs: NestedArray): Function; + constant(value: T): () => T; + always(value: T): () => T; + defaultTo( + defaultValue: T2 + ): (value: T1) => T1; + defaultTo( + defaultValue: T2, + value: T1 + ): T1; // NaN is a number instead of its own type, otherwise it would behave like null/void - defaultTo(defaultValue: T2): (value: T1) => T1 | T2, - defaultTo(defaultValue: T2, value: T1): T1 | T2, - defaultTo(defaultValue: T2): (value: T1) => T2, - defaultTo(defaultValue: T2, value: T1): T2, - flow: $ComposeReverse, - flow(funcs: Array): Function, - pipe: $ComposeReverse, - pipe(funcs: Array): Function, - flowRight: $Compose, - flowRight(funcs: Array): Function, - compose: $Compose, - compose(funcs: Array): Function, - identity(value: T): T, - iteratee(func: any): Function, - matches(source: Object): (object: Object) => boolean, - matches(source: Object, object: Object): boolean, - matchesProperty(path: Array | string): (srcValue: any) => Function, - matchesProperty(path: Array | string, srcValue: any): Function, - propEq(path: Array | string): (srcValue: any) => Function, - propEq(path: Array | string, srcValue: any): Function, - pathEq(path: Array | string): (srcValue: any) => Function, - pathEq(path: Array | string, srcValue: any): Function, - method(path: Array | string): Function, - methodOf(object: Object): Function, - mixin(object: T): ((source: Object) => (options: {chain: boolean}) => T) & ((source: Object, options: {chain: boolean}) => T), - mixin(object: T, source: Object): (options: {chain: boolean}) => T, - mixin(object: T, source: Object, options: {chain: boolean}): T, - noConflict(): Lodash, - noop(...args: Array): void, - nthArg(n: number): Function, - over(iteratees: Array): Function, - juxt(iteratees: Array): Function, - overEvery(predicates: Array): Function, - allPass(predicates: Array): Function, - overSome(predicates: Array): Function, - anyPass(predicates: Array): Function, - property(path: Array | string): (object: Object | Array) => any, - property(path: Array | string, object: Object | Array): any, - propertyOf(object: Object): (path: Array | string) => Function, - propertyOf(object: Object, path: Array | string): Function, - range(start: number): (end: number) => Array, - range(start: number, end: number): Array, - rangeStep(step: number): ((start: number) => (end: number) => Array) & ((start: number, end: number) => Array), - rangeStep(step: number, start: number): (end: number) => Array, - rangeStep(step: number, start: number, end: number): Array, - rangeRight(start: number): (end: number) => Array, - rangeRight(start: number, end: number): Array, - rangeStepRight(step: number): ((start: number) => (end: number) => Array) & ((start: number, end: number) => Array), - rangeStepRight(step: number, start: number): (end: number) => Array, - rangeStepRight(step: number, start: number, end: number): Array, - runInContext(context: Object): Function, + defaultTo(defaultValue: T2): (value: T1) => T1 | T2; + defaultTo(defaultValue: T2, value: T1): T1 | T2; + defaultTo(defaultValue: T2): (value: T1) => T2; + defaultTo(defaultValue: T2, value: T1): T2; + flow: $ComposeReverse; + flow(funcs: Array): Function; + pipe: $ComposeReverse; + pipe(funcs: Array): Function; + flowRight: $Compose; + flowRight(funcs: Array): Function; + compose: $Compose; + compose(funcs: Array): Function; + identity(value: T): T; + iteratee(func: any): Function; + matches(source: Object): (object: Object) => boolean; + matches(source: Object, object: Object): boolean; + matchesProperty(path: Array | string): (srcValue: any) => Function; + matchesProperty(path: Array | string, srcValue: any): Function; + propEq(path: Array | string): (srcValue: any) => Function; + propEq(path: Array | string, srcValue: any): Function; + pathEq(path: Array | string): (srcValue: any) => Function; + pathEq(path: Array | string, srcValue: any): Function; + method(path: Array | string): Function; + methodOf(object: Object): Function; + mixin( + object: T + ): ((source: Object) => (options: { chain: boolean }) => T) & + ((source: Object, options: { chain: boolean }) => T); + mixin( + object: T, + source: Object + ): (options: { chain: boolean }) => T; + mixin( + object: T, + source: Object, + options: { chain: boolean } + ): T; + noConflict(): Lodash; + noop(...args: Array): void; + nthArg(n: number): Function; + over(iteratees: Array): Function; + juxt(iteratees: Array): Function; + overEvery(predicates: Array): Function; + allPass(predicates: Array): Function; + overSome(predicates: Array): Function; + anyPass(predicates: Array): Function; + property( + path: Array | string + ): (object: Object | Array) => any; + property(path: Array | string, object: Object | Array): any; + propertyOf(object: Object): (path: Array | string) => Function; + propertyOf(object: Object, path: Array | string): Function; + range(start: number): (end: number) => Array; + range(start: number, end: number): Array; + rangeStep( + step: number + ): ((start: number) => (end: number) => Array) & + ((start: number, end: number) => Array); + rangeStep(step: number, start: number): (end: number) => Array; + rangeStep(step: number, start: number, end: number): Array; + rangeRight(start: number): (end: number) => Array; + rangeRight(start: number, end: number): Array; + rangeStepRight( + step: number + ): ((start: number) => (end: number) => Array) & + ((start: number, end: number) => Array); + rangeStepRight(step: number, start: number): (end: number) => Array; + rangeStepRight(step: number, start: number, end: number): Array; + runInContext(context: Object): Function; - stubArray(): Array<*>, - stubFalse(): false, - F(): false, - stubObject(): {}, - stubString(): "", - stubTrue(): true, - T(): true, - times(iteratee: (i: number) => T): (n: number) => Array, - times(iteratee: (i: number) => T, n: number): Array, - toPath(value: any): Array, - uniqueId(prefix: string): string, + stubArray(): Array<*>; + stubFalse(): false; + F(): false; + stubObject(): {}; + stubString(): ""; + stubTrue(): true; + T(): true; + times(iteratee: (i: number) => T): (n: number) => Array; + times(iteratee: (i: number) => T, n: number): Array; + toPath(value: any): Array; + uniqueId(prefix: string): string; - __: any, - placeholder: any, + __: any; + placeholder: any; convert(options: { cap?: boolean, @@ -1945,12 +2967,1241 @@ declare module "lodash/fp" { fixed?: boolean, immutable?: boolean, rearg?: boolean - }): void, + }): void; // Properties - VERSION: string, - templateSettings: TemplateSettings + VERSION: string; + templateSettings: TemplateSettings; } declare var exports: Lodash; } + +declare module "lodash/chunk" { + declare module.exports: $PropertyType<$Exports<"lodash">, "chunk">; +} + +declare module "lodash/compact" { + declare module.exports: $PropertyType<$Exports<"lodash">, "compact">; +} + +declare module "lodash/concat" { + declare module.exports: $PropertyType<$Exports<"lodash">, "concat">; +} + +declare module "lodash/difference" { + declare module.exports: $PropertyType<$Exports<"lodash">, "difference">; +} + +declare module "lodash/differenceBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "differenceBy">; +} + +declare module "lodash/differenceWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "differenceWith">; +} + +declare module "lodash/drop" { + declare module.exports: $PropertyType<$Exports<"lodash">, "drop">; +} + +declare module "lodash/dropRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "dropRight">; +} + +declare module "lodash/dropRightWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "dropRightWhile">; +} + +declare module "lodash/dropWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "dropWhile">; +} + +declare module "lodash/fill" { + declare module.exports: $PropertyType<$Exports<"lodash">, "fill">; +} + +declare module "lodash/findIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findIndex">; +} + +declare module "lodash/findLastIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findLastIndex">; +} + +declare module "lodash/first" { + declare module.exports: $PropertyType<$Exports<"lodash">, "first">; +} + +declare module "lodash/flatten" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatten">; +} + +declare module "lodash/flattenDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDeep">; +} + +declare module "lodash/flattenDepth" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDepth">; +} + +declare module "lodash/fromPairs" { + declare module.exports: $PropertyType<$Exports<"lodash">, "fromPairs">; +} + +declare module "lodash/head" { + declare module.exports: $PropertyType<$Exports<"lodash">, "head">; +} + +declare module "lodash/indexOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "indexOf">; +} + +declare module "lodash/initial" { + declare module.exports: $PropertyType<$Exports<"lodash">, "initial">; +} + +declare module "lodash/intersection" { + declare module.exports: $PropertyType<$Exports<"lodash">, "intersection">; +} + +declare module "lodash/intersectionBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionBy">; +} + +declare module "lodash/intersectionWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionWith">; +} + +declare module "lodash/join" { + declare module.exports: $PropertyType<$Exports<"lodash">, "join">; +} + +declare module "lodash/last" { + declare module.exports: $PropertyType<$Exports<"lodash">, "last">; +} + +declare module "lodash/lastIndexOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lastIndexOf">; +} + +declare module "lodash/nth" { + declare module.exports: $PropertyType<$Exports<"lodash">, "nth">; +} + +declare module "lodash/pull" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pull">; +} + +declare module "lodash/pullAll" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAll">; +} + +declare module "lodash/pullAllBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllBy">; +} + +declare module "lodash/pullAllWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllWith">; +} + +declare module "lodash/pullAt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAt">; +} + +declare module "lodash/remove" { + declare module.exports: $PropertyType<$Exports<"lodash">, "remove">; +} + +declare module "lodash/reverse" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reverse">; +} + +declare module "lodash/slice" { + declare module.exports: $PropertyType<$Exports<"lodash">, "slice">; +} + +declare module "lodash/sortedIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndex">; +} + +declare module "lodash/sortedIndexBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexBy">; +} + +declare module "lodash/sortedIndexOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexOf">; +} + +declare module "lodash/sortedLastIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedLastIndex">; +} + +declare module "lodash/sortedLastIndexBy" { + declare module.exports: $PropertyType< + $Exports<"lodash">, + "sortedLastIndexBy" + >; +} + +declare module "lodash/sortedLastIndexOf" { + declare module.exports: $PropertyType< + $Exports<"lodash">, + "sortedLastIndexOf" + >; +} + +declare module "lodash/sortedUniq" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniq">; +} + +declare module "lodash/sortedUniqBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniqBy">; +} + +declare module "lodash/tail" { + declare module.exports: $PropertyType<$Exports<"lodash">, "tail">; +} + +declare module "lodash/take" { + declare module.exports: $PropertyType<$Exports<"lodash">, "take">; +} + +declare module "lodash/takeRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "takeRight">; +} + +declare module "lodash/takeRightWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "takeRightWhile">; +} + +declare module "lodash/takeWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "takeWhile">; +} + +declare module "lodash/union" { + declare module.exports: $PropertyType<$Exports<"lodash">, "union">; +} + +declare module "lodash/unionBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unionBy">; +} + +declare module "lodash/unionWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unionWith">; +} + +declare module "lodash/uniq" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniq">; +} + +declare module "lodash/uniqBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniqBy">; +} + +declare module "lodash/uniqWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniqWith">; +} + +declare module "lodash/unzip" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unzip">; +} + +declare module "lodash/unzipWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unzipWith">; +} + +declare module "lodash/without" { + declare module.exports: $PropertyType<$Exports<"lodash">, "without">; +} + +declare module "lodash/xor" { + declare module.exports: $PropertyType<$Exports<"lodash">, "xor">; +} + +declare module "lodash/xorBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "xorBy">; +} + +declare module "lodash/xorWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "xorWith">; +} + +declare module "lodash/zip" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zip">; +} + +declare module "lodash/zipObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zipObject">; +} + +declare module "lodash/zipObjectDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zipObjectDeep">; +} + +declare module "lodash/zipWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zipWith">; +} + +declare module "lodash/countBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "countBy">; +} + +declare module "lodash/each" { + declare module.exports: $PropertyType<$Exports<"lodash">, "each">; +} + +declare module "lodash/eachRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "eachRight">; +} + +declare module "lodash/every" { + declare module.exports: $PropertyType<$Exports<"lodash">, "every">; +} + +declare module "lodash/filter" { + declare module.exports: $PropertyType<$Exports<"lodash">, "filter">; +} + +declare module "lodash/find" { + declare module.exports: $PropertyType<$Exports<"lodash">, "find">; +} + +declare module "lodash/findLast" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findLast">; +} + +declare module "lodash/flatMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatMap">; +} + +declare module "lodash/flatMapDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDeep">; +} + +declare module "lodash/flatMapDepth" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDepth">; +} + +declare module "lodash/forEach" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forEach">; +} + +declare module "lodash/forEachRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forEachRight">; +} + +declare module "lodash/groupBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "groupBy">; +} + +declare module "lodash/includes" { + declare module.exports: $PropertyType<$Exports<"lodash">, "includes">; +} + +declare module "lodash/invokeMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invokeMap">; +} + +declare module "lodash/keyBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "keyBy">; +} + +declare module "lodash/map" { + declare module.exports: $PropertyType<$Exports<"lodash">, "map">; +} + +declare module "lodash/orderBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "orderBy">; +} + +declare module "lodash/partition" { + declare module.exports: $PropertyType<$Exports<"lodash">, "partition">; +} + +declare module "lodash/reduce" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reduce">; +} + +declare module "lodash/reduceRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reduceRight">; +} + +declare module "lodash/reject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reject">; +} + +declare module "lodash/sample" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sample">; +} + +declare module "lodash/sampleSize" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sampleSize">; +} + +declare module "lodash/shuffle" { + declare module.exports: $PropertyType<$Exports<"lodash">, "shuffle">; +} + +declare module "lodash/size" { + declare module.exports: $PropertyType<$Exports<"lodash">, "size">; +} + +declare module "lodash/some" { + declare module.exports: $PropertyType<$Exports<"lodash">, "some">; +} + +declare module "lodash/sortBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortBy">; +} + +declare module "lodash/now" { + declare module.exports: $PropertyType<$Exports<"lodash">, "now">; +} + +declare module "lodash/after" { + declare module.exports: $PropertyType<$Exports<"lodash">, "after">; +} + +declare module "lodash/ary" { + declare module.exports: $PropertyType<$Exports<"lodash">, "ary">; +} + +declare module "lodash/before" { + declare module.exports: $PropertyType<$Exports<"lodash">, "before">; +} + +declare module "lodash/bind" { + declare module.exports: $PropertyType<$Exports<"lodash">, "bind">; +} + +declare module "lodash/bindKey" { + declare module.exports: $PropertyType<$Exports<"lodash">, "bindKey">; +} + +declare module "lodash/curry" { + declare module.exports: $PropertyType<$Exports<"lodash">, "curry">; +} + +declare module "lodash/curryRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "curryRight">; +} + +declare module "lodash/debounce" { + declare module.exports: $PropertyType<$Exports<"lodash">, "debounce">; +} + +declare module "lodash/defer" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defer">; +} + +declare module "lodash/delay" { + declare module.exports: $PropertyType<$Exports<"lodash">, "delay">; +} + +declare module "lodash/flip" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flip">; +} + +declare module "lodash/memoize" { + declare module.exports: $PropertyType<$Exports<"lodash">, "memoize">; +} + +declare module "lodash/negate" { + declare module.exports: $PropertyType<$Exports<"lodash">, "negate">; +} + +declare module "lodash/once" { + declare module.exports: $PropertyType<$Exports<"lodash">, "once">; +} + +declare module "lodash/overArgs" { + declare module.exports: $PropertyType<$Exports<"lodash">, "overArgs">; +} + +declare module "lodash/partial" { + declare module.exports: $PropertyType<$Exports<"lodash">, "partial">; +} + +declare module "lodash/partialRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "partialRight">; +} + +declare module "lodash/rearg" { + declare module.exports: $PropertyType<$Exports<"lodash">, "rearg">; +} + +declare module "lodash/rest" { + declare module.exports: $PropertyType<$Exports<"lodash">, "rest">; +} + +declare module "lodash/spread" { + declare module.exports: $PropertyType<$Exports<"lodash">, "spread">; +} + +declare module "lodash/throttle" { + declare module.exports: $PropertyType<$Exports<"lodash">, "throttle">; +} + +declare module "lodash/unary" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unary">; +} + +declare module "lodash/wrap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "wrap">; +} + +declare module "lodash/castArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "castArray">; +} + +declare module "lodash/clone" { + declare module.exports: $PropertyType<$Exports<"lodash">, "clone">; +} + +declare module "lodash/cloneDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeep">; +} + +declare module "lodash/cloneDeepWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeepWith">; +} + +declare module "lodash/cloneWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cloneWith">; +} + +declare module "lodash/conformsTo" { + declare module.exports: $PropertyType<$Exports<"lodash">, "conformsTo">; +} + +declare module "lodash/eq" { + declare module.exports: $PropertyType<$Exports<"lodash">, "eq">; +} + +declare module "lodash/gt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "gt">; +} + +declare module "lodash/gte" { + declare module.exports: $PropertyType<$Exports<"lodash">, "gte">; +} + +declare module "lodash/isArguments" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArguments">; +} + +declare module "lodash/isArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArray">; +} + +declare module "lodash/isArrayBuffer" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayBuffer">; +} + +declare module "lodash/isArrayLike" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayLike">; +} + +declare module "lodash/isArrayLikeObject" { + declare module.exports: $PropertyType< + $Exports<"lodash">, + "isArrayLikeObject" + >; +} + +declare module "lodash/isBoolean" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isBoolean">; +} + +declare module "lodash/isBuffer" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isBuffer">; +} + +declare module "lodash/isDate" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isDate">; +} + +declare module "lodash/isElement" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isElement">; +} + +declare module "lodash/isEmpty" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isEmpty">; +} + +declare module "lodash/isEqual" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isEqual">; +} + +declare module "lodash/isEqualWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isEqualWith">; +} + +declare module "lodash/isError" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isError">; +} + +declare module "lodash/isFinite" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isFinite">; +} + +declare module "lodash/isFunction" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isFunction">; +} + +declare module "lodash/isInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isInteger">; +} + +declare module "lodash/isLength" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isLength">; +} + +declare module "lodash/isMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isMap">; +} + +declare module "lodash/isMatch" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isMatch">; +} + +declare module "lodash/isMatchWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isMatchWith">; +} + +declare module "lodash/isNaN" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNaN">; +} + +declare module "lodash/isNative" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNative">; +} + +declare module "lodash/isNil" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNil">; +} + +declare module "lodash/isNull" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNull">; +} + +declare module "lodash/isNumber" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNumber">; +} + +declare module "lodash/isObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isObject">; +} + +declare module "lodash/isObjectLike" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isObjectLike">; +} + +declare module "lodash/isPlainObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isPlainObject">; +} + +declare module "lodash/isRegExp" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isRegExp">; +} + +declare module "lodash/isSafeInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isSafeInteger">; +} + +declare module "lodash/isSet" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isSet">; +} + +declare module "lodash/isString" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isString">; +} + +declare module "lodash/isSymbol" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isSymbol">; +} + +declare module "lodash/isTypedArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isTypedArray">; +} + +declare module "lodash/isUndefined" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isUndefined">; +} + +declare module "lodash/isWeakMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakMap">; +} + +declare module "lodash/isWeakSet" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakSet">; +} + +declare module "lodash/lt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lt">; +} + +declare module "lodash/lte" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lte">; +} + +declare module "lodash/toArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toArray">; +} + +declare module "lodash/toFinite" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toFinite">; +} + +declare module "lodash/toInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toInteger">; +} + +declare module "lodash/toLength" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toLength">; +} + +declare module "lodash/toNumber" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toNumber">; +} + +declare module "lodash/toPlainObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPlainObject">; +} + +declare module "lodash/toSafeInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toSafeInteger">; +} + +declare module "lodash/toString" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toString">; +} + +declare module "lodash/add" { + declare module.exports: $PropertyType<$Exports<"lodash">, "add">; +} + +declare module "lodash/ceil" { + declare module.exports: $PropertyType<$Exports<"lodash">, "ceil">; +} + +declare module "lodash/divide" { + declare module.exports: $PropertyType<$Exports<"lodash">, "divide">; +} + +declare module "lodash/floor" { + declare module.exports: $PropertyType<$Exports<"lodash">, "floor">; +} + +declare module "lodash/max" { + declare module.exports: $PropertyType<$Exports<"lodash">, "max">; +} + +declare module "lodash/maxBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "maxBy">; +} + +declare module "lodash/mean" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mean">; +} + +declare module "lodash/meanBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "meanBy">; +} + +declare module "lodash/min" { + declare module.exports: $PropertyType<$Exports<"lodash">, "min">; +} + +declare module "lodash/minBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "minBy">; +} + +declare module "lodash/multiply" { + declare module.exports: $PropertyType<$Exports<"lodash">, "multiply">; +} + +declare module "lodash/round" { + declare module.exports: $PropertyType<$Exports<"lodash">, "round">; +} + +declare module "lodash/subtract" { + declare module.exports: $PropertyType<$Exports<"lodash">, "subtract">; +} + +declare module "lodash/sum" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sum">; +} + +declare module "lodash/sumBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sumBy">; +} + +declare module "lodash/clamp" { + declare module.exports: $PropertyType<$Exports<"lodash">, "clamp">; +} + +declare module "lodash/inRange" { + declare module.exports: $PropertyType<$Exports<"lodash">, "inRange">; +} + +declare module "lodash/random" { + declare module.exports: $PropertyType<$Exports<"lodash">, "random">; +} + +declare module "lodash/assign" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assign">; +} + +declare module "lodash/assignIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assignIn">; +} + +declare module "lodash/assignInWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assignInWith">; +} + +declare module "lodash/assignWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assignWith">; +} + +declare module "lodash/at" { + declare module.exports: $PropertyType<$Exports<"lodash">, "at">; +} + +declare module "lodash/create" { + declare module.exports: $PropertyType<$Exports<"lodash">, "create">; +} + +declare module "lodash/defaults" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defaults">; +} + +declare module "lodash/defaultsDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defaultsDeep">; +} + +declare module "lodash/entries" { + declare module.exports: $PropertyType<$Exports<"lodash">, "entries">; +} + +declare module "lodash/entriesIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "entriesIn">; +} + +declare module "lodash/extend" { + declare module.exports: $PropertyType<$Exports<"lodash">, "extend">; +} + +declare module "lodash/extendWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "extendWith">; +} + +declare module "lodash/findKey" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findKey">; +} + +declare module "lodash/findLastKey" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findLastKey">; +} + +declare module "lodash/forIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forIn">; +} + +declare module "lodash/forInRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forInRight">; +} + +declare module "lodash/forOwn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forOwn">; +} + +declare module "lodash/forOwnRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forOwnRight">; +} + +declare module "lodash/functions" { + declare module.exports: $PropertyType<$Exports<"lodash">, "functions">; +} + +declare module "lodash/functionsIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "functionsIn">; +} + +declare module "lodash/get" { + declare module.exports: $PropertyType<$Exports<"lodash">, "get">; +} + +declare module "lodash/has" { + declare module.exports: $PropertyType<$Exports<"lodash">, "has">; +} + +declare module "lodash/hasIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "hasIn">; +} + +declare module "lodash/invert" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invert">; +} + +declare module "lodash/invertBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invertBy">; +} + +declare module "lodash/invoke" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invoke">; +} + +declare module "lodash/keys" { + declare module.exports: $PropertyType<$Exports<"lodash">, "keys">; +} + +declare module "lodash/keysIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "keysIn">; +} + +declare module "lodash/mapKeys" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mapKeys">; +} + +declare module "lodash/mapValues" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mapValues">; +} + +declare module "lodash/merge" { + declare module.exports: $PropertyType<$Exports<"lodash">, "merge">; +} + +declare module "lodash/mergeWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mergeWith">; +} + +declare module "lodash/omit" { + declare module.exports: $PropertyType<$Exports<"lodash">, "omit">; +} + +declare module "lodash/omitBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "omitBy">; +} + +declare module "lodash/pick" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pick">; +} + +declare module "lodash/pickBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pickBy">; +} + +declare module "lodash/result" { + declare module.exports: $PropertyType<$Exports<"lodash">, "result">; +} + +declare module "lodash/set" { + declare module.exports: $PropertyType<$Exports<"lodash">, "set">; +} + +declare module "lodash/setWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "setWith">; +} + +declare module "lodash/toPairs" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPairs">; +} + +declare module "lodash/toPairsIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPairsIn">; +} + +declare module "lodash/transform" { + declare module.exports: $PropertyType<$Exports<"lodash">, "transform">; +} + +declare module "lodash/unset" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unset">; +} + +declare module "lodash/update" { + declare module.exports: $PropertyType<$Exports<"lodash">, "update">; +} + +declare module "lodash/updateWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "updateWith">; +} + +declare module "lodash/values" { + declare module.exports: $PropertyType<$Exports<"lodash">, "values">; +} + +declare module "lodash/valuesIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "valuesIn">; +} + +declare module "lodash/chain" { + declare module.exports: $PropertyType<$Exports<"lodash">, "chain">; +} + +declare module "lodash/tap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "tap">; +} + +declare module "lodash/thru" { + declare module.exports: $PropertyType<$Exports<"lodash">, "thru">; +} + +declare module "lodash/camelCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "camelCase">; +} + +declare module "lodash/capitalize" { + declare module.exports: $PropertyType<$Exports<"lodash">, "capitalize">; +} + +declare module "lodash/deburr" { + declare module.exports: $PropertyType<$Exports<"lodash">, "deburr">; +} + +declare module "lodash/endsWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "endsWith">; +} + +declare module "lodash/escape" { + declare module.exports: $PropertyType<$Exports<"lodash">, "escape">; +} + +declare module "lodash/escapeRegExp" { + declare module.exports: $PropertyType<$Exports<"lodash">, "escapeRegExp">; +} + +declare module "lodash/kebabCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "kebabCase">; +} + +declare module "lodash/lowerCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lowerCase">; +} + +declare module "lodash/lowerFirst" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lowerFirst">; +} + +declare module "lodash/pad" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pad">; +} + +declare module "lodash/padEnd" { + declare module.exports: $PropertyType<$Exports<"lodash">, "padEnd">; +} + +declare module "lodash/padStart" { + declare module.exports: $PropertyType<$Exports<"lodash">, "padStart">; +} + +declare module "lodash/parseInt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "parseInt">; +} + +declare module "lodash/repeat" { + declare module.exports: $PropertyType<$Exports<"lodash">, "repeat">; +} + +declare module "lodash/replace" { + declare module.exports: $PropertyType<$Exports<"lodash">, "replace">; +} + +declare module "lodash/snakeCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "snakeCase">; +} + +declare module "lodash/split" { + declare module.exports: $PropertyType<$Exports<"lodash">, "split">; +} + +declare module "lodash/startCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "startCase">; +} + +declare module "lodash/startsWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "startsWith">; +} + +declare module "lodash/template" { + declare module.exports: $PropertyType<$Exports<"lodash">, "template">; +} + +declare module "lodash/toLower" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toLower">; +} + +declare module "lodash/toUpper" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toUpper">; +} + +declare module "lodash/trim" { + declare module.exports: $PropertyType<$Exports<"lodash">, "trim">; +} + +declare module "lodash/trimEnd" { + declare module.exports: $PropertyType<$Exports<"lodash">, "trimEnd">; +} + +declare module "lodash/trimStart" { + declare module.exports: $PropertyType<$Exports<"lodash">, "trimStart">; +} + +declare module "lodash/truncate" { + declare module.exports: $PropertyType<$Exports<"lodash">, "truncate">; +} + +declare module "lodash/unescape" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unescape">; +} + +declare module "lodash/upperCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "upperCase">; +} + +declare module "lodash/upperFirst" { + declare module.exports: $PropertyType<$Exports<"lodash">, "upperFirst">; +} + +declare module "lodash/words" { + declare module.exports: $PropertyType<$Exports<"lodash">, "words">; +} + +declare module "lodash/attempt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "attempt">; +} + +declare module "lodash/bindAll" { + declare module.exports: $PropertyType<$Exports<"lodash">, "bindAll">; +} + +declare module "lodash/cond" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cond">; +} + +declare module "lodash/conforms" { + declare module.exports: $PropertyType<$Exports<"lodash">, "conforms">; +} + +declare module "lodash/constant" { + declare module.exports: $PropertyType<$Exports<"lodash">, "constant">; +} + +declare module "lodash/defaultTo" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defaultTo">; +} + +declare module "lodash/flow" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flow">; +} + +declare module "lodash/flowRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flowRight">; +} + +declare module "lodash/identity" { + declare module.exports: $PropertyType<$Exports<"lodash">, "identity">; +} + +declare module "lodash/iteratee" { + declare module.exports: $PropertyType<$Exports<"lodash">, "iteratee">; +} + +declare module "lodash/matches" { + declare module.exports: $PropertyType<$Exports<"lodash">, "matches">; +} + +declare module "lodash/matchesProperty" { + declare module.exports: $PropertyType<$Exports<"lodash">, "matchesProperty">; +} + +declare module "lodash/method" { + declare module.exports: $PropertyType<$Exports<"lodash">, "method">; +} + +declare module "lodash/methodOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "methodOf">; +} + +declare module "lodash/mixin" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mixin">; +} + +declare module "lodash/noConflict" { + declare module.exports: $PropertyType<$Exports<"lodash">, "noConflict">; +} + +declare module "lodash/noop" { + declare module.exports: $PropertyType<$Exports<"lodash">, "noop">; +} + +declare module "lodash/nthArg" { + declare module.exports: $PropertyType<$Exports<"lodash">, "nthArg">; +} + +declare module "lodash/over" { + declare module.exports: $PropertyType<$Exports<"lodash">, "over">; +} + +declare module "lodash/overEvery" { + declare module.exports: $PropertyType<$Exports<"lodash">, "overEvery">; +} + +declare module "lodash/overSome" { + declare module.exports: $PropertyType<$Exports<"lodash">, "overSome">; +} + +declare module "lodash/property" { + declare module.exports: $PropertyType<$Exports<"lodash">, "property">; +} + +declare module "lodash/propertyOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "propertyOf">; +} + +declare module "lodash/range" { + declare module.exports: $PropertyType<$Exports<"lodash">, "range">; +} + +declare module "lodash/rangeRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "rangeRight">; +} + +declare module "lodash/runInContext" { + declare module.exports: $PropertyType<$Exports<"lodash">, "runInContext">; +} + +declare module "lodash/stubArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubArray">; +} + +declare module "lodash/stubFalse" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubFalse">; +} + +declare module "lodash/stubObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubObject">; +} + +declare module "lodash/stubString" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubString">; +} + +declare module "lodash/stubTrue" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubTrue">; +} + +declare module "lodash/times" { + declare module.exports: $PropertyType<$Exports<"lodash">, "times">; +} + +declare module "lodash/toPath" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPath">; +} + +declare module "lodash/uniqueId" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniqueId">; +} diff --git a/flow-typed/npm/moment_v2.3.x.js b/flow-typed/npm/moment_v2.3.x.js index 4925c47cb..c03d2ff2d 100644 --- a/flow-typed/npm/moment_v2.3.x.js +++ b/flow-typed/npm/moment_v2.3.x.js @@ -1,29 +1,29 @@ -// flow-typed signature: 793995d08b898744007089d163219dbe -// flow-typed version: 7a7fdd86ed/moment_v2.3.x/flow_>=v0.34.x +// flow-typed signature: a56215e90c2cb9a5f9e106edd857208f +// flow-typed version: 057d3e81b5/moment_v2.3.x/flow_>=v0.34.x type moment$MomentOptions = { - y?: number|string, - year?: number|string, - years?: number|string, - M?: number|string, - month?: number|string, - months?: number|string, - d?: number|string, - day?: number|string, - days?: number|string, - date?: number|string, - h?: number|string, - hour?: number|string, - hours?: number|string, - m?: number|string, - minute?: number|string, - minutes?: number|string, - s?: number|string, - second?: number|string, - seconds?: number|string, - ms?: number|string, - millisecond?: number|string, - milliseconds?: number|string, + y?: number | string, + year?: number | string, + years?: number | string, + M?: number | string, + month?: number | string, + months?: number | string, + d?: number | string, + day?: number | string, + days?: number | string, + date?: number | string, + h?: number | string, + hour?: number | string, + hours?: number | string, + m?: number | string, + minute?: number | string, + minutes?: number | string, + s?: number | string, + second?: number | string, + seconds?: number | string, + ms?: number | string, + millisecond?: number | string, + milliseconds?: number | string }; type moment$MomentObject = { @@ -33,18 +33,18 @@ type moment$MomentObject = { hours: number, minutes: number, seconds: number, - milliseconds: number, + milliseconds: number }; type moment$MomentCreationData = { input: string, format: string, locale: Object, - isUTC: bool, - strict: bool, + isUTC: boolean, + strict: boolean }; -type moment$CalendarFormat = string | (moment: moment$Moment) => string; +type moment$CalendarFormat = string | ((moment: moment$Moment) => string); type moment$CalendarFormats = { sameDay?: moment$CalendarFormat, @@ -52,197 +52,276 @@ type moment$CalendarFormats = { nextWeek?: moment$CalendarFormat, lastDay?: moment$CalendarFormat, lastWeek?: moment$CalendarFormat, - sameElse?: moment$CalendarFormat, + sameElse?: moment$CalendarFormat }; declare class moment$LocaleData { - months(moment: moment$Moment): string; - monthsShort(moment: moment$Moment): string; - monthsParse(month: string): number; - weekdays(moment: moment$Moment): string; - weekdaysShort(moment: moment$Moment): string; - weekdaysMin(moment: moment$Moment): string; - weekdaysParse(weekDay: string): number; - longDateFormat(dateFormat: string): string; - isPM(date: string): bool; - meridiem(hours: number, minutes: number, isLower: bool): string; - calendar(key: 'sameDay'|'nextDay'|'lastDay'|'nextWeek'|'prevWeek'|'sameElse', moment: moment$Moment): string; - relativeTime(number: number, withoutSuffix: bool, key: 's'|'m'|'mm'|'h'|'hh'|'d'|'dd'|'M'|'MM'|'y'|'yy', isFuture: bool): string; - pastFuture(diff: any, relTime: string): string; - ordinal(number: number): string; - preparse(str: string): any; - postformat(str: string): any; - week(moment: moment$Moment): string; - invalidDate(): string; - firstDayOfWeek(): number; - firstDayOfYear(): number; + months(moment: moment$Moment): string, + monthsShort(moment: moment$Moment): string, + monthsParse(month: string): number, + weekdays(moment: moment$Moment): string, + weekdaysShort(moment: moment$Moment): string, + weekdaysMin(moment: moment$Moment): string, + weekdaysParse(weekDay: string): number, + longDateFormat(dateFormat: string): string, + isPM(date: string): boolean, + meridiem(hours: number, minutes: number, isLower: boolean): string, + calendar( + key: + | "sameDay" + | "nextDay" + | "lastDay" + | "nextWeek" + | "prevWeek" + | "sameElse", + moment: moment$Moment + ): string, + relativeTime( + number: number, + withoutSuffix: boolean, + key: "s" | "m" | "mm" | "h" | "hh" | "d" | "dd" | "M" | "MM" | "y" | "yy", + isFuture: boolean + ): string, + pastFuture(diff: any, relTime: string): string, + ordinal(number: number): string, + preparse(str: string): any, + postformat(str: string): any, + week(moment: moment$Moment): string, + invalidDate(): string, + firstDayOfWeek(): number, + firstDayOfYear(): number } declare class moment$MomentDuration { - humanize(suffix?: bool): string; - milliseconds(): number; - asMilliseconds(): number; - seconds(): number; - asSeconds(): number; - minutes(): number; - asMinutes(): number; - hours(): number; - asHours(): number; - days(): number; - asDays(): number; - months(): number; - asMonths(): number; - years(): number; - asYears(): number; - add(value: number|moment$MomentDuration|Object, unit?: string): this; - subtract(value: number|moment$MomentDuration|Object, unit?: string): this; - as(unit: string): number; - get(unit: string): number; - toJSON(): string; - toISOString(): string; - isValid(): bool; + humanize(suffix?: boolean): string, + milliseconds(): number, + asMilliseconds(): number, + seconds(): number, + asSeconds(): number, + minutes(): number, + asMinutes(): number, + hours(): number, + asHours(): number, + days(): number, + asDays(): number, + months(): number, + asMonths(): number, + years(): number, + asYears(): number, + add(value: number | moment$MomentDuration | Object, unit?: string): this, + subtract(value: number | moment$MomentDuration | Object, unit?: string): this, + as(unit: string): number, + get(unit: string): number, + toJSON(): string, + toISOString(): string, + isValid(): boolean } declare class moment$Moment { - static ISO_8601: string; - static (string?: string, format?: string|Array, strict?: bool): moment$Moment; - static (string?: string, format?: string|Array, locale?: string, strict?: bool): moment$Moment; - static (initDate: ?Object|number|Date|Array|moment$Moment|string): moment$Moment; - static unix(seconds: number): moment$Moment; - static utc(): moment$Moment; - static utc(number: number|Array): moment$Moment; - static utc(str: string, str2?: string|Array, str3?: string): moment$Moment; - static utc(moment: moment$Moment): moment$Moment; - static utc(date: Date): moment$Moment; - static parseZone(): moment$Moment; - static parseZone(rawDate: string): moment$Moment; - static parseZone(rawDate: string, format: string | Array): moment$Moment; - static parseZone(rawDate: string, format: string, strict: boolean): moment$Moment; - static parseZone(rawDate: string, format: string, locale: string, strict: boolean): moment$Moment; - isValid(): bool; - invalidAt(): 0|1|2|3|4|5|6; - creationData(): moment$MomentCreationData; - millisecond(number: number): this; - milliseconds(number: number): this; - millisecond(): number; - milliseconds(): number; - second(number: number): this; - seconds(number: number): this; - second(): number; - seconds(): number; - minute(number: number): this; - minutes(number: number): this; - minute(): number; - minutes(): number; - hour(number: number): this; - hours(number: number): this; - hour(): number; - hours(): number; - date(number: number): this; - dates(number: number): this; - date(): number; - dates(): number; - day(day: number|string): this; - days(day: number|string): this; - day(): number; - days(): number; - weekday(number: number): this; - weekday(): number; - isoWeekday(number: number): this; - isoWeekday(): number; - dayOfYear(number: number): this; - dayOfYear(): number; - week(number: number): this; - weeks(number: number): this; - week(): number; - weeks(): number; - isoWeek(number: number): this; - isoWeeks(number: number): this; - isoWeek(): number; - isoWeeks(): number; - month(number: number): this; - months(number: number): this; - month(): number; - months(): number; - quarter(number: number): this; - quarter(): number; - year(number: number): this; - years(number: number): this; - year(): number; - years(): number; - weekYear(number: number): this; - weekYear(): number; - isoWeekYear(number: number): this; - isoWeekYear(): number; - weeksInYear(): number; - isoWeeksInYear(): number; - get(string: string): number; - set(unit: string, value: number): this; - set(options: { [unit: string]: number }): this; - static max(...dates: Array): moment$Moment; - static max(dates: Array): moment$Moment; - static min(...dates: Array): moment$Moment; - static min(dates: Array): moment$Moment; - add(value: number|moment$MomentDuration|moment$Moment|Object, unit?: string): this; - subtract(value: number|moment$MomentDuration|moment$Moment|string|Object, unit?: string): this; - startOf(unit: string): this; - endOf(unit: string): this; - local(): this; - utc(): this; - utcOffset(offset: number|string): this; - utcOffset(): number; - format(format?: string): string; - fromNow(removeSuffix?: bool): string; - from(value: moment$Moment|string|number|Date|Array, removePrefix?: bool): string; - toNow(removePrefix?: bool): string; - to(value: moment$Moment|string|number|Date|Array, removePrefix?: bool): string; - calendar(refTime?: any, formats?: moment$CalendarFormats): string; - diff(date: moment$Moment|string|number|Date|Array, format?: string, floating?: bool): number; - valueOf(): number; - unix(): number; - daysInMonth(): number; - toDate(): Date; - toArray(): Array; - toJSON(): string; - toISOString(): string; - toObject(): moment$MomentObject; - isBefore(date?: moment$Moment|string|number|Date|Array, units?: ?string): bool; - isSame(date?: moment$Moment|string|number|Date|Array, units?: ?string): bool; - isAfter(date?: moment$Moment|string|number|Date|Array, units?: ?string): bool; - isSameOrBefore(date?: moment$Moment|string|number|Date|Array, units?: ?string): bool; - isSameOrAfter(date?: moment$Moment|string|number|Date|Array, units?: ?string): bool; + static ISO_8601: string, + static ( + string?: string, + format?: string | Array, + strict?: boolean + ): moment$Moment, + static ( + string?: string, + format?: string | Array, + locale?: string, + strict?: boolean + ): moment$Moment, + static ( + initDate: ?Object | number | Date | Array | moment$Moment | string + ): moment$Moment, + static unix(seconds: number): moment$Moment, + static utc(): moment$Moment, + static utc(number: number | Array): moment$Moment, + static utc( + str: string, + str2?: string | Array, + str3?: string + ): moment$Moment, + static utc(moment: moment$Moment): moment$Moment, + static utc(date: Date): moment$Moment, + static parseZone(): moment$Moment, + static parseZone(rawDate: string): moment$Moment, + static parseZone( + rawDate: string, + format: string | Array + ): moment$Moment, + static parseZone( + rawDate: string, + format: string, + strict: boolean + ): moment$Moment, + static parseZone( + rawDate: string, + format: string, + locale: string, + strict: boolean + ): moment$Moment, + isValid(): boolean, + invalidAt(): 0 | 1 | 2 | 3 | 4 | 5 | 6, + creationData(): moment$MomentCreationData, + millisecond(number: number): this, + milliseconds(number: number): this, + millisecond(): number, + milliseconds(): number, + second(number: number): this, + seconds(number: number): this, + second(): number, + seconds(): number, + minute(number: number): this, + minutes(number: number): this, + minute(): number, + minutes(): number, + hour(number: number): this, + hours(number: number): this, + hour(): number, + hours(): number, + date(number: number): this, + dates(number: number): this, + date(): number, + dates(): number, + day(day: number | string): this, + days(day: number | string): this, + day(): number, + days(): number, + weekday(number: number): this, + weekday(): number, + isoWeekday(number: number): this, + isoWeekday(): number, + dayOfYear(number: number): this, + dayOfYear(): number, + week(number: number): this, + weeks(number: number): this, + week(): number, + weeks(): number, + isoWeek(number: number): this, + isoWeeks(number: number): this, + isoWeek(): number, + isoWeeks(): number, + month(number: number): this, + months(number: number): this, + month(): number, + months(): number, + quarter(number: number): this, + quarter(): number, + year(number: number): this, + years(number: number): this, + year(): number, + years(): number, + weekYear(number: number): this, + weekYear(): number, + isoWeekYear(number: number): this, + isoWeekYear(): number, + weeksInYear(): number, + isoWeeksInYear(): number, + get(string: string): number, + set(unit: string, value: number): this, + set(options: { [unit: string]: number }): this, + static max(...dates: Array): moment$Moment, + static max(dates: Array): moment$Moment, + static min(...dates: Array): moment$Moment, + static min(dates: Array): moment$Moment, + add( + value: number | moment$MomentDuration | moment$Moment | Object, + unit?: string + ): this, + subtract( + value: number | moment$MomentDuration | moment$Moment | string | Object, + unit?: string + ): this, + startOf(unit: string): this, + endOf(unit: string): this, + local(): this, + utc(): this, + utcOffset( + offset: number | string, + keepLocalTime?: boolean, + keepMinutes?: boolean + ): this, + utcOffset(): number, + format(format?: string): string, + fromNow(removeSuffix?: boolean): string, + from( + value: moment$Moment | string | number | Date | Array, + removePrefix?: boolean + ): string, + toNow(removePrefix?: boolean): string, + to( + value: moment$Moment | string | number | Date | Array, + removePrefix?: boolean + ): string, + calendar(refTime?: any, formats?: moment$CalendarFormats): string, + diff( + date: moment$Moment | string | number | Date | Array, + format?: string, + floating?: boolean + ): number, + valueOf(): number, + unix(): number, + daysInMonth(): number, + toDate(): Date, + toArray(): Array, + toJSON(): string, + toISOString(): string, + toObject(): moment$MomentObject, + isBefore( + date?: moment$Moment | string | number | Date | Array, + units?: ?string + ): boolean, + isSame( + date?: moment$Moment | string | number | Date | Array, + units?: ?string + ): boolean, + isAfter( + date?: moment$Moment | string | number | Date | Array, + units?: ?string + ): boolean, + isSameOrBefore( + date?: moment$Moment | string | number | Date | Array, + units?: ?string + ): boolean, + isSameOrAfter( + date?: moment$Moment | string | number | Date | Array, + units?: ?string + ): boolean, isBetween( - fromDate: moment$Moment|string|number|Date|Array, - toDate?: ?moment$Moment|string|number|Date|Array, + fromDate: moment$Moment | string | number | Date | Array, + toDate?: ?moment$Moment | string | number | Date | Array, granularity?: ?string, inclusion?: ?string - ): bool; - isDST(): bool; - isDSTShifted(): bool; - isLeapYear(): bool; - clone(): moment$Moment; - static isMoment(obj: any): bool; - static isDate(obj: any): bool; - static locale(locale: string, localeData?: Object): string; - static updateLocale(locale: string, localeData?: ?Object): void; - static locale(locales: Array): string; - locale(locale: string, customization?: Object|null): moment$Moment; - locale(): string; - static months(): Array; - static monthsShort(): Array; - static weekdays(): Array; - static weekdaysShort(): Array; - static weekdaysMin(): Array; - static months(): string; - static monthsShort(): string; - static weekdays(): string; - static weekdaysShort(): string; - static weekdaysMin(): string; - static localeData(key?: string): moment$LocaleData; - static duration(value: number|Object|string, unit?: string): moment$MomentDuration; - static isDuration(obj: any): bool; - static normalizeUnits(unit: string): string; - static invalid(object: any): moment$Moment; + ): boolean, + isDST(): boolean, + isDSTShifted(): boolean, + isLeapYear(): boolean, + clone(): moment$Moment, + static isMoment(obj: any): boolean, + static isDate(obj: any): boolean, + static locale(locale: string, localeData?: Object): string, + static updateLocale(locale: string, localeData?: ?Object): void, + static locale(locales: Array): string, + locale(locale: string, customization?: Object | null): moment$Moment, + locale(): string, + static months(): Array, + static monthsShort(): Array, + static weekdays(): Array, + static weekdaysShort(): Array, + static weekdaysMin(): Array, + static months(): string, + static monthsShort(): string, + static weekdays(): string, + static weekdaysShort(): string, + static weekdaysMin(): string, + static localeData(key?: string): moment$LocaleData, + static duration( + value: number | Object | string, + unit?: string + ): moment$MomentDuration, + static isDuration(obj: any): boolean, + static normalizeUnits(unit: string): string, + static invalid(object: any): moment$Moment } -declare module 'moment' { +declare module "moment" { declare module.exports: Class; } diff --git a/flow-typed/npm/prettier-eslint_vx.x.x.js b/flow-typed/npm/prettier-eslint_vx.x.x.js new file mode 100644 index 000000000..88dfad2d3 --- /dev/null +++ b/flow-typed/npm/prettier-eslint_vx.x.x.js @@ -0,0 +1,39 @@ +// flow-typed signature: ace44a98a89509a513ab899eea5ba4fd +// flow-typed version: <>/prettier-eslint_v^8.2.1/flow_v0.56.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'prettier-eslint' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'prettier-eslint' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'prettier-eslint/dist/index' { + declare module.exports: any; +} + +declare module 'prettier-eslint/dist/utils' { + declare module.exports: any; +} + +// Filename aliases +declare module 'prettier-eslint/dist/index.js' { + declare module.exports: $Exports<'prettier-eslint/dist/index'>; +} +declare module 'prettier-eslint/dist/utils.js' { + declare module.exports: $Exports<'prettier-eslint/dist/utils'>; +} diff --git a/flow-typed/npm/react-document-title_vx.x.x.js b/flow-typed/npm/react-document-title_vx.x.x.js new file mode 100644 index 000000000..8912f44da --- /dev/null +++ b/flow-typed/npm/react-document-title_vx.x.x.js @@ -0,0 +1,45 @@ +// flow-typed signature: 1df6b1361f12b05b8482216160fd1b61 +// flow-typed version: <>/react-document-title_v^2.0.3/flow_v0.56.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'react-document-title' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'react-document-title' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'react-document-title/test/browser' { + declare module.exports: any; +} + +declare module 'react-document-title/test/common' { + declare module.exports: any; +} + +// Filename aliases +declare module 'react-document-title/index' { + declare module.exports: $Exports<'react-document-title'>; +} +declare module 'react-document-title/index.js' { + declare module.exports: $Exports<'react-document-title'>; +} +declare module 'react-document-title/test/browser.js' { + declare module.exports: $Exports<'react-document-title/test/browser'>; +} +declare module 'react-document-title/test/common.js' { + declare module.exports: $Exports<'react-document-title/test/common'>; +} diff --git a/flow-typed/npm/react-intl_v2.x.x.js b/flow-typed/npm/react-intl_v2.x.x.js index 1aefb5b06..bc98f53f5 100644 --- a/flow-typed/npm/react-intl_v2.x.x.js +++ b/flow-typed/npm/react-intl_v2.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 4c4c0d4f407d88878f9e0b815c57c823 -// flow-typed version: 97b6f00328/react-intl_v2.x.x/flow_>=v0.53.x +// flow-typed signature: ffba6b43bdc8cce76dba8a7d4fb7b539 +// flow-typed version: cc3eacb5a2/react-intl_v2.x.x/flow_>=v0.53.x <=v0.56.x /** * Original implementation of this file by @marudor at https://github.com/marudor/flowInterfaces diff --git a/flow-typed/npm/react-redux_v5.x.x.js b/flow-typed/npm/react-redux_v5.x.x.js index 30380824d..e0c8bc04a 100644 --- a/flow-typed/npm/react-redux_v5.x.x.js +++ b/flow-typed/npm/react-redux_v5.x.x.js @@ -1,8 +1,5 @@ -// flow-typed signature: f0d96df48e9abc14bcc1405ba2a47dde -// flow-typed version: 83053e4020/react-redux_v5.x.x/flow_>=v0.53.x - -// flow-typed signature: 8db7b853f57c51094bf0ab8b2650fd9c -// flow-typed version: ab8db5f14d/react-redux_v5.x.x/flow_>=v0.30.x +// flow-typed signature: 59b0c4be0e1408f21e2446be96c79804 +// flow-typed version: 9092387fd2/react-redux_v5.x.x/flow_>=v0.54.x import type { Dispatch, Store } from "redux"; @@ -34,6 +31,22 @@ declare module "react-redux" { declare type Context = { store: Store<*, *> }; + declare type ComponentWithDefaultProps = Class< + React$Component + > & { defaultProps: DP }; + + declare class ConnectedComponentWithDefaultProps< + OP, + DP, + CP + > extends React$Component { + static defaultProps: DP, // <= workaround for https://github.com/facebook/flow/issues/4644 + static WrappedComponent: Class>, + getWrappedInstance(): React$Component, + props: OP, + state: void + } + declare class ConnectedComponent extends React$Component { static WrappedComponent: Class>, getWrappedInstance(): React$Component

, @@ -41,13 +54,18 @@ declare module "react-redux" { state: void } + declare type ConnectedComponentWithDefaultPropsClass = Class< + ConnectedComponentWithDefaultProps + >; + declare type ConnectedComponentClass = Class< ConnectedComponent >; - declare type Connector = ( - component: React$ComponentType

- ) => ConnectedComponentClass; + declare type Connector = (( + component: ComponentWithDefaultProps + ) => ConnectedComponentWithDefaultPropsClass) & + ((component: React$ComponentType

) => ConnectedComponentClass); declare class Provider extends React$Component<{ store: Store, diff --git a/flow-typed/npm/redux_v3.x.x.js b/flow-typed/npm/redux_v3.x.x.js index f6445d9cf..08c122efb 100644 --- a/flow-typed/npm/redux_v3.x.x.js +++ b/flow-typed/npm/redux_v3.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 86993bd000012d3e1ef10d757d16952d -// flow-typed version: a165222d28/redux_v3.x.x/flow_>=v0.33.x +// flow-typed signature: 33b83b6284653250e74578cf4dbe6124 +// flow-typed version: e282e4128f/redux_v3.x.x/flow_>=v0.33.x declare module 'redux' { @@ -11,15 +11,15 @@ declare module 'redux' { */ - declare type DispatchAPI = (action: A) => A; - declare type Dispatch }> = DispatchAPI; + declare export type DispatchAPI = (action: A) => A; + declare export type Dispatch }> = DispatchAPI; - declare type MiddlewareAPI> = { + declare export type MiddlewareAPI> = { dispatch: D; getState(): S; }; - declare type Store> = { + declare export type Store> = { // rewrite MiddlewareAPI members in order to get nicer error messages (intersections produce long messages) dispatch: D; getState(): S; @@ -27,58 +27,58 @@ declare module 'redux' { replaceReducer(nextReducer: Reducer): void }; - declare type Reducer = (state: S, action: A) => S; + declare export type Reducer = (state: S, action: A) => S; - declare type CombinedReducer = (state: $Shape & {} | void, action: A) => S; + declare export type CombinedReducer = (state: $Shape & {} | void, action: A) => S; - declare type Middleware> = + declare export type Middleware> = (api: MiddlewareAPI) => (next: D) => D; - declare type StoreCreator> = { + declare export type StoreCreator> = { (reducer: Reducer, enhancer?: StoreEnhancer): Store; (reducer: Reducer, preloadedState: S, enhancer?: StoreEnhancer): Store; }; - declare type StoreEnhancer> = (next: StoreCreator) => StoreCreator; + declare export type StoreEnhancer> = (next: StoreCreator) => StoreCreator; - declare function createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store; - declare function createStore(reducer: Reducer, preloadedState: S, enhancer?: StoreEnhancer): Store; + declare export function createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store; + declare export function createStore(reducer: Reducer, preloadedState: S, enhancer?: StoreEnhancer): Store; - declare function applyMiddleware(...middlewares: Array>): StoreEnhancer; + declare export function applyMiddleware(...middlewares: Array>): StoreEnhancer; - declare type ActionCreator = (...args: Array) => A; - declare type ActionCreators = { [key: K]: ActionCreator }; + declare export type ActionCreator = (...args: Array) => A; + declare export type ActionCreators = { [key: K]: ActionCreator }; - declare function bindActionCreators, D: DispatchAPI>(actionCreator: C, dispatch: D): C; - declare function bindActionCreators, D: DispatchAPI>(actionCreators: C, dispatch: D): C; + declare export function bindActionCreators, D: DispatchAPI>(actionCreator: C, dispatch: D): C; + declare export function bindActionCreators, D: DispatchAPI>(actionCreators: C, dispatch: D): C; - declare function combineReducers(reducers: O): CombinedReducer<$ObjMap(r: Reducer) => S>, A>; + declare export function combineReducers(reducers: O): CombinedReducer<$ObjMap(r: Reducer) => S>, A>; - declare function compose(ab: (a: A) => B): (a: A) => B - declare function compose( + declare export function compose(ab: (a: A) => B): (a: A) => B + declare export function compose( bc: (b: B) => C, ab: (a: A) => B ): (a: A) => C - declare function compose( + declare export function compose( cd: (c: C) => D, bc: (b: B) => C, ab: (a: A) => B ): (a: A) => D - declare function compose( + declare export function compose( de: (d: D) => E, cd: (c: C) => D, bc: (b: B) => C, ab: (a: A) => B ): (a: A) => E - declare function compose( + declare export function compose( ef: (e: E) => F, de: (d: D) => E, cd: (c: C) => D, bc: (b: B) => C, ab: (a: A) => B ): (a: A) => F - declare function compose( + declare export function compose( fg: (f: F) => G, ef: (e: E) => F, de: (d: D) => E, @@ -86,7 +86,7 @@ declare module 'redux' { bc: (b: B) => C, ab: (a: A) => B ): (a: A) => G - declare function compose( + declare export function compose( gh: (g: G) => H, fg: (f: F) => G, ef: (e: E) => F, @@ -95,7 +95,7 @@ declare module 'redux' { bc: (b: B) => C, ab: (a: A) => B ): (a: A) => H - declare function compose( + declare export function compose( hi: (h: H) => I, gh: (g: G) => H, fg: (f: F) => G, From f7f825b11f6d663262b8f1e390c9dfde56c50444 Mon Sep 17 00:00:00 2001 From: Luka Murn Date: Wed, 8 Nov 2017 08:44:36 +0100 Subject: [PATCH 14/17] Move flow-typed & flow-bin back to devDependencies --- .eslintrc.json | 2 ++ package.json | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 7c50bbe30..53b770cfe 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,6 +19,8 @@ "rules": { "import/extensions": "off", "import/no-unresolved": "off", + // Because of flow-typed & flow-bin + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], "spaced-comment": [ "error", diff --git a/package.json b/package.json index aff0cdd64..421ca21ce 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,8 @@ "eslint-plugin-jsx-a11y": "^6.0.2", "eslint-plugin-prettier": "^2.1.2", "eslint-plugin-react": "^7.1.0", + "flow-bin": "^0.56.0", + "flow-typed": "^2.1.5", "prettier": "^1.7.0", "prettier-eslint": "^8.2.1", "webpack-dev-server": "^2.5.1" @@ -53,8 +55,6 @@ "css-loader": "^0.28.4", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^0.11.2", - "flow-bin": "^0.56.0", - "flow-typed": "^2.1.5", "font-awesome": "^4.7.0", "glob": "^7.1.2", "immutability-helper": "^2.3.0", From f2246292590975fc5a8aea84ad14612c0019fe64 Mon Sep 17 00:00:00 2001 From: zmagod Date: Thu, 9 Nov 2017 09:00:00 +0100 Subject: [PATCH 15/17] fixes failing team.feature:19 scenario --- features/step_definitions/shared_steps.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/features/step_definitions/shared_steps.rb b/features/step_definitions/shared_steps.rb index 2ba585890..4c122148b 100644 --- a/features/step_definitions/shared_steps.rb +++ b/features/step_definitions/shared_steps.rb @@ -120,5 +120,6 @@ Then(/^I change "([^"]*)" with "([^"]*)" in "([^"]*)" textarea field$/) do |old_ end Then(/^I should see "([^"]*)" on "([^"]*)" element$/) do |text, element| + wait_for_ajax expect(find(element)).to have_content(text) end From e0b6683a44ed16e82208629af7b705468ae57027 Mon Sep 17 00:00:00 2001 From: zmagod Date: Thu, 9 Nov 2017 10:06:53 +0100 Subject: [PATCH 16/17] create view directory per @Ducz0r 's request --- .../src/components/actions/TeamsActions.js | 2 +- app/javascript/src/services/api/teams_api.js | 2 +- app/models/datatables/datatables_team.rb | 14 -------------- app/models/user.rb | 2 +- app/models/views/datatables/datatables_team.rb | 16 ++++++++++++++++ spec/models/{ => views}/datatables/teams_spec.rb | 6 +++--- spec/services/client_api/teams_service_spec.rb | 4 +++- .../{teams.json => datatables_teams.json} | 0 8 files changed, 25 insertions(+), 21 deletions(-) delete mode 100644 app/models/datatables/datatables_team.rb create mode 100644 app/models/views/datatables/datatables_team.rb rename spec/models/{ => views}/datatables/teams_spec.rb (70%) rename spec/support/api/schemas/{teams.json => datatables_teams.json} (100%) diff --git a/app/javascript/src/components/actions/TeamsActions.js b/app/javascript/src/components/actions/TeamsActions.js index 8daeb6cc2..c9d70824b 100644 --- a/app/javascript/src/components/actions/TeamsActions.js +++ b/app/javascript/src/components/actions/TeamsActions.js @@ -8,7 +8,7 @@ import type { Dispatch } from "redux-thunk"; import { getTeams, changeCurrentTeam, - fetchCurrentTeam + getCurrentTeam as fetchCurrentTeam } from "../../services/api/teams_api"; import { GET_LIST_OF_TEAMS, SET_CURRENT_TEAM } from "../../config/action_types"; diff --git a/app/javascript/src/services/api/teams_api.js b/app/javascript/src/services/api/teams_api.js index 5015ed68c..af362cded 100644 --- a/app/javascript/src/services/api/teams_api.js +++ b/app/javascript/src/services/api/teams_api.js @@ -36,5 +36,5 @@ export const leaveTeam = (teamID: number, userTeamID: number): Promise<*> => { return axiosInstance.delete(teamUrl).then(({ data }) => data.teams); }; -export const fetchCurrentTeam = (): Promise<*> => +export const getCurrentTeam = (): Promise<*> => axiosInstance.get(CURRENT_TEAM_PATH).then(({ data }) => data.team); diff --git a/app/models/datatables/datatables_team.rb b/app/models/datatables/datatables_team.rb deleted file mode 100644 index 1c22f8388..000000000 --- a/app/models/datatables/datatables_team.rb +++ /dev/null @@ -1,14 +0,0 @@ -module Datatables - class DatatablesTeam < ApplicationRecord - belongs_to :user - default_scope { order(name: :asc) } - - private - - # this isn't strictly necessary, but it will prevent - # rails from calling save, which would fail anyway. - def readonly? - true - end - end -end diff --git a/app/models/user.rb b/app/models/user.rb index 32b990722..96afe98b2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -198,7 +198,7 @@ class User < ApplicationRecord has_many :user_notifications, inverse_of: :user has_many :notifications, through: :user_notifications has_many :zip_exports, inverse_of: :user, dependent: :destroy - has_many :datatables_teams, class_name: '::Datatables::DatatablesTeam' + has_many :datatables_teams, class_name: '::Views::Datatables::DatatablesTeam' # If other errors besides parameter "avatar" exist, # they will propagate to "avatar" also, so remove them diff --git a/app/models/views/datatables/datatables_team.rb b/app/models/views/datatables/datatables_team.rb new file mode 100644 index 000000000..3caac3f06 --- /dev/null +++ b/app/models/views/datatables/datatables_team.rb @@ -0,0 +1,16 @@ +module Views + module Datatables + class DatatablesTeam < ApplicationRecord + belongs_to :user + default_scope { order(name: :asc) } + + private + + # this isn't strictly necessary, but it will prevent + # rails from calling save, which would fail anyway. + def readonly? + true + end + end + end +end diff --git a/spec/models/datatables/teams_spec.rb b/spec/models/views/datatables/teams_spec.rb similarity index 70% rename from spec/models/datatables/teams_spec.rb rename to spec/models/views/datatables/teams_spec.rb index c69c8a82a..cc4095b8d 100644 --- a/spec/models/datatables/teams_spec.rb +++ b/spec/models/views/datatables/teams_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -RSpec.describe Datatables::DatatablesTeam, type: :model do +RSpec.describe Views::Datatables::DatatablesTeam, type: :model do describe 'Database table' do it { should have_db_column :id } it { should have_db_column :name } @@ -15,9 +15,9 @@ RSpec.describe Datatables::DatatablesTeam, type: :model do let(:user) { create :user } it do expect { - Datatables::DatatablesTeam.create!(user_id: user.id) + Views::Datatables::DatatablesTeam.create!(user_id: user.id) }.to raise_error(ActiveRecord::ReadOnlyRecord, - 'Datatables::DatatablesTeam is marked as readonly') + 'Views::Datatables::DatatablesTeam is marked as readonly') end end end diff --git a/spec/services/client_api/teams_service_spec.rb b/spec/services/client_api/teams_service_spec.rb index fc1f355ff..40025f951 100644 --- a/spec/services/client_api/teams_service_spec.rb +++ b/spec/services/client_api/teams_service_spec.rb @@ -57,7 +57,9 @@ describe ClientApi::TeamsService do it 'should return an array of valid teams' do create :user_team, user: user_one, team: team_one - expect(team_service.teams_data).to match_response_schema('teams') + expect(team_service.teams_data).to( + match_response_schema('datatables_teams') + ) end end diff --git a/spec/support/api/schemas/teams.json b/spec/support/api/schemas/datatables_teams.json similarity index 100% rename from spec/support/api/schemas/teams.json rename to spec/support/api/schemas/datatables_teams.json From e227a75f5f41a3a67389bc1bcc44a994b7c9d132 Mon Sep 17 00:00:00 2001 From: mlorb Date: Thu, 9 Nov 2017 13:40:30 +0100 Subject: [PATCH 17/17] rename folder --- features/{sign_up_log_in => sessions}/log_in.feature | 0 features/{sign_up_log_in => sessions}/sign_up.feature | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename features/{sign_up_log_in => sessions}/log_in.feature (100%) rename features/{sign_up_log_in => sessions}/sign_up.feature (100%) diff --git a/features/sign_up_log_in/log_in.feature b/features/sessions/log_in.feature similarity index 100% rename from features/sign_up_log_in/log_in.feature rename to features/sessions/log_in.feature diff --git a/features/sign_up_log_in/sign_up.feature b/features/sessions/sign_up.feature similarity index 100% rename from features/sign_up_log_in/sign_up.feature rename to features/sessions/sign_up.feature