diff --git a/README.md b/README.md index cf00654bb..ae83abf29 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ You'll need Ruby v2.4.6 (use your local ruby version management system - RVM / r 5. Initialize database with `bundle exec rails db:setup` 6. Enter ReCaptcha public and private keys in config/initializers/recaptcha.rb, copied from recaptcha.rb.example. To get keys, visit https://www.google.com/recaptcha/admin/create 7. Install static assets (like external javascript libraries, fonts) with `yarn install` -8. Start rails with `bundle exec passenger start` from the Rails root and open http://localhost:3000 in a web browser. (For some, just `passenger start` will work; adding `bundle exec` ensures you're using the version of passenger you just installed with Bundler.) +8. Start rails with `bundle exec rails s` from the Rails root and open http://localhost:3000 in a web browser. (For some, just `rails s` will work; adding `bundle exec` ensures you're using the version of passenger you just installed with Bundler.) ================== diff --git a/app/assets/javascripts/mapknitter/Map.js b/app/assets/javascripts/mapknitter/Map.js index a7051a25a..91be10d68 100644 --- a/app/assets/javascripts/mapknitter/Map.js +++ b/app/assets/javascripts/mapknitter/Map.js @@ -12,13 +12,6 @@ MapKnitter.Map = MapKnitter.Class.extend({ L.Icon.Default.imagePath = '/assets/leaflet/dist/images/'; - /* Initialize before map in order to add to layers; probably it can be done later too */ - var google = L.google('SATELLITE', { - maxZoom: 24, - maxNativeZoom: 20, - opacity: 0.5 - }); - this._map = L.map('knitter-map-pane', { zoomControl: false, }).setView(this._latlng, this._zoom); @@ -31,11 +24,17 @@ MapKnitter.Map = MapKnitter.Class.extend({ /* Set up basemap and drawing toolbars. */ this.setupMap(); + this.setupCollection(); + map._initialBounds = map.getBounds(); /* Load warpables data via AJAX request. */ this._warpablesUrl = options.warpablesUrl; + /** this took me a bit to notice - this below code is all one big chunk run + * only after a map refresh. Events need to be setup before this + */ + this.withWarpables(function (warpables) { $.each(warpables, function (i, warpable) { @@ -94,14 +93,9 @@ MapKnitter.Map = MapKnitter.Class.extend({ var img = L.distortableImageOverlay(warpable.srcmedium, { corners: corners, mode: 'lock' - }).addTo(map); - - var customExports = mapknitter.customExportAction(); - var imgGroup = L.distortableCollection({ - actions: [customExports] - }).addTo(map); + }); - imgGroup.addLayer(img); + map._imgGroup.addLayer(img); /** * TODO: toolbar may still appear outside of frame. Create a getter for toolbar corners in LDI and then include them in this calculation @@ -111,61 +105,73 @@ MapKnitter.Map = MapKnitter.Class.extend({ if (!map._initialBounds.contains(newImgBounds) && !map._initialBounds.equals(newImgBounds)) { map._initialBounds.extend(newImgBounds); - mapknitter._map.flyToBounds(map._initialBounds); + map.flyToBounds(map._initialBounds); } images.push(img); img.warpable_id = warpable.id; if (!mapknitter.readOnly) { - L.DomEvent.on(img._image, { - click: mapknitter.selectImage, - dblclick: mapknitter.dblClickImage, - load: mapknitter.setupToolbar - }, img); - - L.DomEvent.on(imgGroup, 'layeradd', mapknitter.setupEvents, img); + L.DomEvent.on(img._image, 'load', function(e) { + mapknitter.setupEvents(L.Util.extend(e, {layer: img})); + mapknitter.setupToolbar(L.Util.extend(e, {layer: img})); + }); } } }); - }); - - // Deselect images if you click on the sidebar, otherwise hotkeys still fire as you type. - $('.sidebar').click(function () { $.each(images, function (i, img) { img.editing.disable() }) }) - - // hi res: - //img._image.src = img._image.src.split('_medium').join('') }, - setupEvents: function () { - var img = this; + _enter: function() { + map._imgGroup.editing.disable(); + }, - L.DomEvent.on(img._image, 'mouseup', mapknitter.saveImageIfChanged, img); - L.DomEvent.on(img._image, 'touchend', mapknitter.saveImageIfChanged, img); + _out: function() { + map._imgGroup.editing.enable(); + }, - img.on('deselect', mapknitter.saveImageIfChanged, img); + setupEvents: function (e) { + var img = e.layer; + + /** + * TODO: the edit event is fire on handleDragEnd from LDI. This needs to be documented. + * and maybe change to 'handledragend' or something to be very explicit. this handle + * is necessary beyond click / mouseup because you can distort the image without clicking + * on it. + */ + L.DomEvent.on(img, { + edit: mapknitter.saveImage, + }, img); + + L.DomEvent.on(img._image, { + click: mapknitter.selectImage, + mouseup: mapknitter.saveImageIfChanged, + touchend: mapknitter.saveImageIfChanged + }, img); + + // deselect is not a real event / can we just use mouseup instead + // img.on('deselect', mapknitter.saveImageIfChanged, img); }, - /* - * Setup toolbar and events - */ - setupToolbar: function () { - var img = this, + setupToolbar: function (e) { + var img = e.layer, edit = img.editing; // overriding the upstream Delete action so that it makes database updates in MapKnitter - if (edit.hasTool(Delete)) { edit.removeTool(Delete); } - edit.addTool(mapknitter.customDeleteAction()); + L.DomEvent.on(img._image, 'load', function() { + if (edit.hasTool(Delete)) { edit.removeTool(Delete); } + edit.addTool(mapknitter.customDeleteAction()); + + if (!edit._selected) { edit._deselect(); } - img.on('edit', mapknitter.saveImageIfChanged, img); - img.on('delete', mapknitter.deleteImage, img); + img.on('delete', mapknitter.deleteImage, img); + }) }, /* Add a new, unplaced, but already uploaded image to the map. * and are optional. */ addImage: function(url,id,lat,lng,angle,altitude) { - var img = L.distortableImageOverlay(url, {}); + var img = L.distortableImageOverlay(url); img.geocoding = { lat: lat, @@ -176,103 +182,72 @@ MapKnitter.Map = MapKnitter.Class.extend({ images.push(img); img.warpable_id = id; - img.addTo(map); - - /** - * TODO: creating the feature group now so that event handling works with it - * but can't actually add the img to it until image load because the image has - * no corners. Above ^ we initialize image with no corners. Need to figure out a fix. - */ - var customExports = mapknitter.customExportAction(); - var imgGroup = L.distortableCollection({ - actions: [customExports] - }).addTo(map); - if (!mapknitter.readOnly) { - L.DomEvent.on(imgGroup, 'layeradd', mapknitter.setupEvents, img); - - L.DomEvent.on(img._image, { - click: mapknitter.selectImage, - dblclick: mapknitter.dblClickImage - }, img); - - img.on('deselect', mapknitter.saveImageIfChanged, img); - - L.DomEvent.on(img._image, 'load', function () { - imgGroup.addLayer(img); - mapknitter.setupToolbarAndGeocode.bind(img); - }, img); - } + map._imgGroup.addLayer(img); }, - setupToolbarAndGeocode: function () { - var img = this; + setupGeocode: function (e) { + var img = e.layer, + geo = img.geocoding; - mapknitter.setupToolbar.bind(img); - mapknitter.setupGeocode.bind(img); - }, + L.DomEvent.on(img._image, 'load', function () { - setupGeocode: function () { - var img = this, - edit = img.editing, - geo = img.geocoding; + /* use geodata */ + if (geo && geo.lat) { + /* move the image to this newly discovered location */ + var center = img.getCenter(); + var latBy = geo.lat - center.lat; + var lngBy = geo.lng - center.lng; - /* use geodata */ - if (geo && geo.lat) { - /* move the image to this newly discovered location */ - var center = L.latLngBounds(img.getCorners()).getCenter(), - latBy = geo.lat - center.lat, - lngBy = geo.lng - center.lng + for (var i = 0; i < 4; i++) { + img._corners[i].lat += latBy; + img._corners[i].lng += lngBy; + } - for (var i = 0; i < 4; i++) { - img._corners[i].lat += latBy; - img._corners[i].lng += lngBy; - } + img.rotateBy(geo.angle); + + /* Attempt to convert altitude to scale factor based on Leaflet zoom; + * for correction based on altitude we need the original dimensions of the image. + * This may work only at sea level unless we factor in ground level. + * We may also need to get camera field of view to get this even closer. + * We could also fall back to the scale of the last-placed image. + */ + if (geo.altitude && geo.altitude != 0) { + var width = img._image.width, height = img._image.height + //scale = ( (act_height/img_height) * (act_width/img_width) ) / geo.altitude; + //img.scaleBy(scale); + + var elevator = new google.maps.ElevationService(); + var lat = mapknitter._map.getCenter().lat; + var lng = mapknitter._map.getCenter().lng; + + elevator.getElevationForLocations({ + 'locations': [{lat: lat, lng: lng}] + }, function (results, status) { + console.log("Photo taken from " + geo.altitude + " meters above sea level"); + console.log("Ground is " + results[0].elevation + " meters above sea level"); + console.log("Photo taken from " + (geo.altitude - results[0].elevation) + " meters"); + var a = geo.altitude - results[0].elevation, + fov = 50, + A = fov * (Math.PI / 180), + width = 2 * (a / Math.tan(A)), + currentWidth = + img.getCorner(2).distanceTo(img.getCorner(1)) + + img.getCorner(1).distanceTo(img.getCorner(2)) / 2; + + console.log("Photo should be " + width + " meters wide"); + img.scaleBy(width / currentWidth); + }); + } - edit._rotateBy(geo.angle); - - /* Attempt to convert altitude to scale factor based on Leaflet zoom; - * for correction based on altitude we need the original dimensions of the image. - * This may work only at sea level unless we factor in ground level. - * We may also need to get camera field of view to get this even closer. - * We could also fall back to the scale of the last-placed image. - */ - if (geo.altitude && geo.altitude != 0) { - var width = img._image.width, height = img._image.height - //scale = ( (act_height/img_height) * (act_width/img_width) ) / geo.altitude; - //edit._scaleBy(scale); - - var elevator = new google.maps.ElevationService(), - lat = mapknitter._map.getCenter().lat, - lng = mapknitter._map.getCenter().lng; - - elevator.getElevationForLocations({ - 'locations': [{ lat: lat, lng: lng }] - }, function (results, status) { - console.log("Photo taken from " + geo.altitude + " meters above sea level"); - console.log("Ground is " + results[0].elevation + " meters above sea level"); - console.log("Photo taken from " + (geo.altitude - results[0].elevation) + " meters"); - var a = geo.altitude - results[0].elevation, - fov = 50, - A = fov * (Math.PI / 180), - width = 2 * (a / Math.tan(A)), - currentWidth = - img.getCorner(2).distanceTo(img.getCorner(1)) + - img.getCorner(1).distanceTo(img.getCorner(2)) / 2; - - console.log("Photo should be " + width + " meters wide"); - edit._scaleBy(width / currentWidth); - img.fire('update'); - }); + img.fire('update'); + /* pan the map there too */ + mapknitter._map.fitBounds(L.latLngBounds(img.getCorners())); + img._reset(); } - img.fire('update'); - /* pan the map there too */ - mapknitter._map.fitBounds(L.latLngBounds(img.getCorners())); - img._reset(); - } - - return img; + return img; + }); }, geocodeImageFromId: function (dom_id, id, url) { @@ -381,8 +356,7 @@ MapKnitter.Map = MapKnitter.Class.extend({ img._corner_state = JSON.stringify(img._corners); /* Need to re-enable editing on each select because we disable it when clicking the sidebar */ img.editing.enable.bind(img.editing)() - img.bringToFront(); - /* If it's locked, allow event to propagate on to map below */ + /* If it's locked, allow event to propagate on to map below */ // sb: why? commenting out below line. if (this.editing._mode !== "lock") { e.stopPropagation(); } }, @@ -513,7 +487,6 @@ MapKnitter.Map = MapKnitter.Class.extend({ if (!mapknitter.readOnly) { L.DomEvent.on(img._image, { click: mapknitter.selectImage, - dblclick: mapknitter.dblClickImage, load: mapknitter.setupToolbar }, img); @@ -533,20 +506,10 @@ MapKnitter.Map = MapKnitter.Class.extend({ } }, - dblClickImage: function (e) { - var img = this, - edit = img.editing; - - edit._enableDragging(); - edit.enable(); - edit._toggleRotateScale(); - e.stopPropagation(); - }, - saveImage: function () { var img = this; img._corner_state = JSON.stringify(img._corners); // reset change state string: - $.ajax('/images/'+img.warpable_id, { // send save request + $.ajax('/images/' + img.warpable_id, { // send save request type: 'PATCH', data: { warpable_id: img.warpable_id, @@ -649,37 +612,35 @@ MapKnitter.Map = MapKnitter.Class.extend({ setupMap: function () { var map = this._map; + map.addGoogleMutant(); - //L.tileLayer.provider('Esri.WorldImagery').addTo(map); - var mapbox = L.tileLayer('https://{s}.tiles.mapbox.com/v3/anishshah101.ipm9j6em/{z}/{x}/{y}.png', { - maxZoom: 24, - attribution: 'Map data © OpenStreetMap contributors, ' + - 'CC-BY-SA, ' + - 'Imagery © Mapbox', - id: 'examples.map-i86knfo3' - }) + L.control.zoom({position: 'topright'}).addTo(map); + L.control.scale().addTo(map); + }, - // https://gitlab.com/IvanSanchez/Leaflet.GridLayer.GoogleMutant - var googleMutant = L.gridLayer.googleMutant({ - type: 'satellite', // valid values are 'roadmap', 'satellite', 'terrain' and 'hybrid' - maxZoom: 24, - maxNativeZoom: 20, - opacity: 0.5 - }).addTo(this._map); - - var baseMaps = { - "OpenStreetMap": mapbox, - "Google Satellite": googleMutant - }; - // eventually, annotations - var overlayMaps = { - }; + setupCollection: function() { + var customExports = mapknitter.customExportAction(); - var layersControl = L.control.layers(baseMaps, overlayMaps); - this._map.addControl(layersControl); + map._imgGroup = L.distortableCollection({ + actions: [customExports], + editable: !mapknitter.readOnly + }).addTo(map); - L.control.zoom({ position: 'topright' }).addTo(map); - L.control.scale().addTo(map); + var sidebar = document.querySelector('body > div.sidebar'); + + if (!mapknitter.readOnly) { + // Deselect images if you click on the sidebar, otherwise hotkeys still fire as you type. + L.DomEvent.on(sidebar, { + mouseenter: mapknitter._enter, + mouseleave: mapknitter._out, + }); + + L.DomEvent.on(map._imgGroup, 'layeradd', function (e) { + mapknitter.setupEvents(e); + mapknitter.setupToolbar(e); + mapknitter.setupGeocode(e); + }); + } }, /** ========== custom toolbar actions =========== */ /* TODO: find a better place for these */ @@ -725,6 +686,7 @@ MapKnitter.Map = MapKnitter.Class.extend({ addHooks: function () { var group = this._overlay; + var edit = group.editing; var exportInterval; var updateUI = function updateUI(data) { @@ -764,7 +726,7 @@ MapKnitter.Map = MapKnitter.Class.extend({ }); } - group.startExport({ handleStatusUrl: addUrlToModel, updater: updateUI, scale: prompt("Choose a scale or use the default (cm per pixel):", 100) }); + edit.startExport({ handleStatusUrl: addUrlToModel, updater: updateUI, scale: prompt("Choose a scale or use the default (cm per pixel):", 100) }); } }); diff --git a/app/views/layouts/knitter2.html.erb b/app/views/layouts/knitter2.html.erb index 7f225df83..5937749da 100644 --- a/app/views/layouts/knitter2.html.erb +++ b/app/views/layouts/knitter2.html.erb @@ -16,7 +16,6 @@ - diff --git a/config/initializers/column_definition.rb b/config/initializers/column_definition.rb deleted file mode 100644 index 501e955b1..000000000 --- a/config/initializers/column_definition.rb +++ /dev/null @@ -1,25 +0,0 @@ -# prior to MySQL5.7, MySQL would silently convert a column that is part of a primary key and is -# DEFAULT NULL into NOT NULL with a default value of 0 (non standard behavior and not a recommended -# practice) As of MySQL 5.7, this column is converted to NOT NULL, but without a default value, -# throwing an error. - -# the below customization both prevents that error and standardizes all of the DBs primary key data -# with a SQL compliant syntax. All the primary keys will be sequential numbers starting from 1. - -# Plese keep in mind the compatability of this initializer with your db - if you do not want -# all of your primary keys to be sequential numbers then you can customize this function further - -# or, alternatively, - - # # This can also be removed if DEFAULT NULL is removed from all columns; - # # Read more at https://github.com/publiclab/mapknitter/pull/323 - -class ActiveRecord::ConnectionAdapters::ColumnDefinition - - # if ActiveRecord::Base.connection.adapter_name != 'sqlite3' && ActiveRecord::Base.connection.adapter_name != 'SQLite' - # def sql_type - # type.to_sym == :primary_key ? 'int(11) auto_increment PRIMARY KEY' : base.type_to_sql(type.to_sym, limit, precision, scale) rescue type - # end - # end - -end diff --git a/config/puma.rb b/config/puma.rb index a6860886a..7ac412907 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -1,5 +1,10 @@ -#!/usr/bin/env puma +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +port ENV.fetch("PORT") { 3000 } +# Specifies the `environment` that Puma will run in. environment ENV.fetch("RAILS_ENV") { "production" } -pidfile '/app/tmp/pids/puma.pid' \ No newline at end of file +pidfile 'tmp/pids/puma.pid' + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/db/migrate/20091016214109_create_maps.rb b/db/migrate/20091016214109_create_maps.rb index 55688a4ce..4d8690a3e 100644 --- a/db/migrate/20091016214109_create_maps.rb +++ b/db/migrate/20091016214109_create_maps.rb @@ -8,7 +8,7 @@ def self.up t.integer :version, :default => 1 # haha you call this security: t.string :password, :default => '' - t.text :styles, :default => '' + t.text :styles t.timestamps end end diff --git a/db/migrate/20100308193343_add_map_description_author.rb b/db/migrate/20100308193343_add_map_description_author.rb index 274c871dd..0b0d2ed49 100644 --- a/db/migrate/20100308193343_add_map_description_author.rb +++ b/db/migrate/20100308193343_add_map_description_author.rb @@ -1,6 +1,6 @@ class AddMapDescriptionAuthor < ActiveRecord::Migration[5.2] def self.up - add_column :maps, :description, :text, :default => '' + add_column :maps, :description, :text add_column :maps, :author, :string, :default => 'anonymous' end diff --git a/db/migrate/20100316142953_zoom_to_float.rb b/db/migrate/20100316142953_zoom_to_float.rb index a3a0288b5..27ee3967a 100644 --- a/db/migrate/20100316142953_zoom_to_float.rb +++ b/db/migrate/20100316142953_zoom_to_float.rb @@ -1,7 +1,7 @@ class ZoomToFloat < ActiveRecord::Migration[5.2] def self.up remove_column :maps, :zoom - add_column :maps, :zoom, :decimal, :precision => 15, :scale => 10, :default => 2 + add_column :maps, :zoom, :decimal, :precision => 15, :scale => 10, :default => 2 end def self.down diff --git a/db/migrate/20111005211631_add_zip_warpable_res_history.rb b/db/migrate/20111005211631_add_zip_warpable_res_history.rb index eb2520cca..f7dd25b43 100644 --- a/db/migrate/20111005211631_add_zip_warpable_res_history.rb +++ b/db/migrate/20111005211631_add_zip_warpable_res_history.rb @@ -1,15 +1,14 @@ class AddZipWarpableResHistory < ActiveRecord::Migration[5.2] def self.up - add_column :warpables, :history, :text, :default => "", :null => false + add_column :warpables, :history, :text, :null => false add_column :warpables, :cm_per_pixel, :float, :default => 0, :null => false add_column :exports, :zip, :boolean, :default => false, :null => false - - Warpable.find(:all).each do |w| + + Warpable.all.each do |w| r = w.get_cm_per_pixel w.cm_per_pixel = r if r != nil w.save end - end def self.down diff --git a/db/migrate/20111006153011_add_map_tile_url.rb b/db/migrate/20111006153011_add_map_tile_url.rb index 2034f0f96..f12f8c1b4 100644 --- a/db/migrate/20111006153011_add_map_tile_url.rb +++ b/db/migrate/20111006153011_add_map_tile_url.rb @@ -1,7 +1,7 @@ class AddMapTileUrl < ActiveRecord::Migration[5.2] def self.up - add_column :maps, :tile_url, :text, :default => "", :null => false - add_column :maps, :tile_layer, :text, :default => "", :null => false + add_column :maps, :tile_url, :text, :null => false + add_column :maps, :tile_layer, :text, :null => false end def self.down diff --git a/db/migrate/20120104164144_add_export_type_bands.rb b/db/migrate/20120104164144_add_export_type_bands.rb index 572efea6c..93148dd34 100644 --- a/db/migrate/20120104164144_add_export_type_bands.rb +++ b/db/migrate/20120104164144_add_export_type_bands.rb @@ -1,6 +1,6 @@ class AddExportTypeBands < ActiveRecord::Migration[5.2] def self.up - add_column :exports, :bands_string, :text, :default => "", :null => false + add_column :exports, :bands_string, :text, :null => false add_column :exports, :export_type, :string, :default => "normal", :null => false end diff --git a/db/migrate/20130128184718_add_node_and_way_body.rb b/db/migrate/20130128184718_add_node_and_way_body.rb index dd91eb697..31209de7b 100644 --- a/db/migrate/20130128184718_add_node_and_way_body.rb +++ b/db/migrate/20130128184718_add_node_and_way_body.rb @@ -3,11 +3,14 @@ def self.up add_column :nodes, :body, :text add_column :ways, :body, :text - Node.find(:all, :conditions => ["description != ''"]).each do |node| + nodes = Node.all.select { |n| n.description != '' } + nodes.each do |node| node.body = node.description node.save end - Way.find(:all, :conditions => ["description != ''"]).each do |way| + + ways = Way.all.select { |w| w.description != '' } + ways.each do |way| way.body = way.description way.save end diff --git a/db/migrate/20141104184417_change_openid_identity_urls.rb b/db/migrate/20141104184417_change_openid_identity_urls.rb index b079ffce8..93712aa35 100644 --- a/db/migrate/20141104184417_change_openid_identity_urls.rb +++ b/db/migrate/20141104184417_change_openid_identity_urls.rb @@ -1,16 +1,13 @@ class ChangeOpenidIdentityUrls < ActiveRecord::Migration[5.2] def up - - users = User.find :all - users.each do |user| + User.all.each do |u| # if it matches http://publiclaboratory.org/... - if user.identity_url != "" && !user.identity_url.nil? && user.identity_url[0..26] == "http://publiclaboratory.org" - user.identity_url = "http://publiclab.org/openid/"+user.login.downcase - puts " => "+user.identity_url - user.save + if u.identity_url != "" && !u.identity_url.nil? && u.identity_url[0..26] == "http://publiclaboratory.org" + u.identity_url = "http://publiclab.org/openid/"+ u.login.downcase + puts " => "+ u.identity_url + u.save end end - end def down diff --git a/db/migrate/20150715162314_change_map_null.rb b/db/migrate/20150715162314_change_map_null.rb index c4d25fec9..b3ca9c672 100644 --- a/db/migrate/20150715162314_change_map_null.rb +++ b/db/migrate/20150715162314_change_map_null.rb @@ -1,6 +1,6 @@ class ChangeMapNull < ActiveRecord::Migration[5.2] def up - change_column_null :maps, :tile_url, true + change_column_null :maps, :tile_url, true change_column_null :maps, :tile_layer, true end diff --git a/db/migrate/20190909224739_remove_text_column_type_defaults.rb b/db/migrate/20190909224739_remove_text_column_type_defaults.rb new file mode 100644 index 000000000..363d8844b --- /dev/null +++ b/db/migrate/20190909224739_remove_text_column_type_defaults.rb @@ -0,0 +1,10 @@ +class RemoveTextColumnTypeDefaults < ActiveRecord::Migration[5.2] + def self.up + change_column_default :warpables, :history, nil + change_column_default :maps, :styles, nil + change_column_default :maps, :description, nil + change_column_default :maps, :tile_layer, nil + change_column_default :maps, :tile_url, nil + change_column_default :exports, :bands_string, nil + end +end diff --git a/db/schema.rb b/db/schema.rb index 4772d9b03..ef9559207 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,151 +10,158 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20190420025012) do +ActiveRecord::Schema.define(version: 2019_09_09_224739) do - create_table "annotations", force: :cascade do |t| - t.integer "map_id", limit: 4 - t.integer "user_id", limit: 4 - t.string "annotation_type", limit: 255 - t.string "text", limit: 255 - t.string "style", limit: 255 - t.string "coordinates", limit: 255 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "annotations", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.integer "map_id" + t.integer "user_id" + t.string "annotation_type" + t.string "text" + t.string "style" + t.string "coordinates" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end - create_table "comments", force: :cascade do |t| - t.string "user_id", limit: 255 - t.string "body", limit: 255 - t.integer "map_id", limit: 4 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "comments", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "user_id" + t.string "body" + t.integer "map_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end - create_table "exports", force: :cascade do |t| - t.integer "map_id", limit: 4, default: 0 - t.integer "size", limit: 4, default: 0 - t.integer "width", limit: 4, default: 0 - t.integer "height", limit: 4, default: 0 - t.float "cm_per_pixel", limit: 24, default: 0.0 - t.string "status", limit: 255, default: "none" - t.boolean "tms", default: false - t.boolean "jpg", default: false - t.boolean "geotiff", default: false - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "zip", default: false, null: false - t.text "bands_string", limit: 65535, null: false - t.string "export_type", limit: 255, default: "normal", null: false - t.integer "user_id", limit: 4, default: 0 - t.string "export_url", limit: 255 + create_table "exports", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.integer "map_id", default: 0 + t.integer "size", default: 0 + t.integer "width", default: 0 + t.integer "height", default: 0 + t.float "cm_per_pixel", default: 0.0 + t.string "status", default: "none" + t.boolean "tms", default: false + t.boolean "jpg", default: false + t.boolean "geotiff", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "zip", default: false, null: false + t.text "bands_string", null: false + t.string "export_type", default: "normal", null: false + t.integer "user_id", default: 0 + t.string "export_url" end - create_table "maps", force: :cascade do |t| - t.string "name", limit: 255, default: "" - t.decimal "lat", precision: 20, scale: 10, default: 0.0 - t.decimal "lon", precision: 20, scale: 10, default: 0.0 - t.integer "version", limit: 4, default: 1 - t.string "password", limit: 255, default: "" - t.text "styles", limit: 65535 - t.datetime "created_at" - t.datetime "updated_at" - t.text "description", limit: 65535 - t.string "author", limit: 255, default: "anonymous" - t.decimal "zoom", precision: 15, scale: 10, default: 2.0 - t.string "location", limit: 255, default: "" - t.string "static_data", limit: 255, default: "" - t.boolean "vectors", default: false, null: false - t.string "tiles", limit: 255, default: "google", null: false - t.string "email", limit: 255, default: "", null: false - t.boolean "archived", default: false, null: false - t.text "tile_url", limit: 65535 - t.text "tile_layer", limit: 65535 - t.string "license", limit: 255, default: "copyright" - t.integer "user_id", limit: 4, default: 0 - t.boolean "anon_annotatable", default: false - t.string "slug", limit: 255 + create_table "maps", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "name", default: "" + t.decimal "lat", precision: 20, scale: 10, default: "0.0" + t.decimal "lon", precision: 20, scale: 10, default: "0.0" + t.integer "version", default: 1 + t.string "password", default: "" + t.text "styles" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.text "description" + t.string "author", default: "anonymous" + t.decimal "zoom", precision: 15, scale: 10, default: "2.0" + t.string "location", default: "" + t.string "static_data", default: "" + t.boolean "vectors", default: false, null: false + t.string "tiles", default: "google", null: false + t.string "email", default: "", null: false + t.boolean "archived", default: false, null: false + t.text "tile_url" + t.text "tile_layer" + t.string "license", default: "copyright" + t.integer "user_id", default: 0 + t.boolean "anon_annotatable", default: false + t.string "slug" + t.index ["slug"], name: "index_maps_on_slug", unique: true end - add_index "maps", ["slug"], name: "index_maps_on_slug", unique: true, using: :btree - - create_table "nodes", force: :cascade do |t| - t.string "color", limit: 255, default: "red" - t.string "author", limit: 255, default: "anonymous" - t.decimal "lat", precision: 20, scale: 10, default: 0.0 - t.decimal "lon", precision: 20, scale: 10, default: 0.0 - t.integer "way_id", limit: 4, default: 0 - t.integer "order", limit: 4, default: 0 - t.datetime "created_at" - t.datetime "updated_at" - t.string "name", limit: 255, default: "" - t.string "description", limit: 255, default: "" - t.integer "map_id", limit: 4, default: 0 - t.integer "way_order", limit: 4, default: 0 - t.text "body", limit: 65535 + create_table "nodes", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "color", default: "red" + t.string "author", default: "anonymous" + t.decimal "lat", precision: 20, scale: 10, default: "0.0" + t.decimal "lon", precision: 20, scale: 10, default: "0.0" + t.integer "way_id", default: 0 + t.integer "order", default: 0 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "name", default: "" + t.string "description", default: "" + t.integer "map_id", default: 0 + t.integer "way_order", default: 0 + t.text "body" end - create_table "tags", force: :cascade do |t| - t.string "user_id", limit: 255 - t.string "name", limit: 255 - t.integer "map_id", limit: 4 - t.integer "warpable_id", limit: 4 - t.datetime "created_at" - t.datetime "updated_at" + create_table "tags", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "user_id" + t.string "name" + t.integer "map_id" + t.integer "warpable_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["map_id"], name: "index_tags_on_map_id" + t.index ["user_id"], name: "index_tags_on_user_id" + t.index ["warpable_id"], name: "index_tags_on_warpable_id" end - add_index "tags", ["map_id"], name: "index_tags_on_map_id", using: :btree - add_index "tags", ["user_id"], name: "index_tags_on_user_id", using: :btree - add_index "tags", ["warpable_id"], name: "index_tags_on_warpable_id", using: :btree - - create_table "users", force: :cascade do |t| - t.string "login", limit: 40 - t.string "name", limit: 100, default: "" - t.string "email", limit: 100 - t.string "crypted_password", limit: 40 - t.string "salt", limit: 40 - t.string "identity_url", limit: 255 - t.string "role", limit: 40, default: "basic" + create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "login", limit: 40 + t.string "name", limit: 100, default: "" + t.string "email", limit: 100 + t.string "crypted_password", limit: 40 + t.string "salt", limit: 40 + t.string "identity_url" + t.string "role", limit: 40, default: "basic" t.datetime "created_at" t.datetime "updated_at" - t.string "remember_token", limit: 40 + t.string "remember_token", limit: 40 t.datetime "remember_token_expires_at" + t.index ["login"], name: "index_users_on_login", unique: true end - add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree - - create_table "warpables", force: :cascade do |t| - t.integer "parent_id", limit: 4 - t.string "image_content_type", limit: 255 - t.string "image_file_name", limit: 255 - t.string "thumbnail", limit: 255 - t.integer "image_file_size", limit: 4 - t.integer "width", limit: 4 - t.integer "height", limit: 4 + create_table "versions", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t| + t.string "item_type", limit: 191, null: false + t.bigint "item_id", null: false + t.string "event", null: false + t.string "whodunnit" + t.text "object", limit: 4294967295 t.datetime "created_at" - t.datetime "updated_at" - t.integer "map_id", limit: 4, default: 0 - t.string "nodes", limit: 255, default: "" - t.boolean "locked", default: false, null: false - t.boolean "deleted", default: false, null: false - t.text "history", limit: 65535, null: false - t.float "cm_per_pixel", limit: 24, default: 0.0, null: false + t.index ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id" end - create_table "ways", force: :cascade do |t| - t.string "color", limit: 255, default: "red" - t.string "author", limit: 255, default: "anonymous" - t.decimal "lat1", precision: 20, scale: 10, default: 0.0 - t.decimal "lat2", precision: 20, scale: 10, default: 0.0 - t.decimal "lon1", precision: 20, scale: 10, default: 0.0 - t.decimal "lon2", precision: 20, scale: 10, default: 0.0 - t.datetime "created_at" - t.datetime "updated_at" - t.string "name", limit: 255, default: "" - t.string "description", limit: 255, default: "" - t.boolean "complete", default: true - t.integer "map_id", limit: 4, default: 0 - t.text "body", limit: 65535 + create_table "warpables", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.integer "parent_id" + t.string "image_content_type" + t.string "image_file_name" + t.string "thumbnail" + t.integer "image_file_size" + t.integer "width" + t.integer "height" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "map_id", default: 0 + t.string "nodes", default: "" + t.boolean "locked", default: false, null: false + t.boolean "deleted", default: false, null: false + t.text "history", null: false + t.float "cm_per_pixel", default: 0.0, null: false + end + + create_table "ways", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "color", default: "red" + t.string "author", default: "anonymous" + t.decimal "lat1", precision: 20, scale: 10, default: "0.0" + t.decimal "lat2", precision: 20, scale: 10, default: "0.0" + t.decimal "lon1", precision: 20, scale: 10, default: "0.0" + t.decimal "lon2", precision: 20, scale: 10, default: "0.0" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "name", default: "" + t.string "description", default: "" + t.boolean "complete", default: true + t.integer "map_id", default: 0 + t.text "body" end end diff --git a/db/schema.rb.example b/db/schema.rb.example index 220d6e9d8..f87a6c45e 100644 --- a/db/schema.rb.example +++ b/db/schema.rb.example @@ -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,151 +10,158 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20190420025012) do +ActiveRecord::Schema.define(version: 2019_07_15_092943) do - create_table "annotations", force: :cascade do |t| - t.integer "map_id", limit: 4 - t.integer "user_id", limit: 4 - t.string "annotation_type", limit: 255 - t.string "text", limit: 255 - t.string "style", limit: 255 - t.string "coordinates", limit: 255 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "annotations", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.integer "map_id" + t.integer "user_id" + t.string "annotation_type" + t.string "text" + t.string "style" + t.string "coordinates" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end - create_table "comments", force: :cascade do |t| - t.string "user_id", limit: 255 - t.string "body", limit: 255 - t.integer "map_id", limit: 4 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + create_table "comments", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "user_id" + t.string "body" + t.integer "map_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end - create_table "exports", force: :cascade do |t| - t.integer "map_id", limit: 4, default: 0 - t.integer "size", limit: 4, default: 0 - t.integer "width", limit: 4, default: 0 - t.integer "height", limit: 4, default: 0 - t.float "cm_per_pixel", limit: 24, default: 0.0 - t.string "status", limit: 255, default: "none" - t.boolean "tms", default: false - t.boolean "jpg", default: false - t.boolean "geotiff", default: false - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "zip", default: false, null: false - t.text "bands_string", limit: 65535, null: false - t.string "export_type", limit: 255, default: "normal", null: false - t.integer "user_id", limit: 4, default: 0 - t.string "export_url", limit: 255 + create_table "exports", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.integer "map_id", default: 0 + t.integer "size", default: 0 + t.integer "width", default: 0 + t.integer "height", default: 0 + t.float "cm_per_pixel", default: 0.0 + t.string "status", default: "none" + t.boolean "tms", default: false + t.boolean "jpg", default: false + t.boolean "geotiff", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "zip", default: false, null: false + t.text "bands_string", null: false + t.string "export_type", default: "normal", null: false + t.integer "user_id", default: 0 + t.string "export_url" end - create_table "maps", force: :cascade do |t| - t.string "name", limit: 255, default: "" - t.decimal "lat", precision: 20, scale: 10, default: 0.0 - t.decimal "lon", precision: 20, scale: 10, default: 0.0 - t.integer "version", limit: 4, default: 1 - t.string "password", limit: 255, default: "" - t.text "styles", limit: 65535 - t.datetime "created_at" - t.datetime "updated_at" - t.text "description", limit: 65535 - t.string "author", limit: 255, default: "anonymous" - t.decimal "zoom", precision: 15, scale: 10, default: 2.0 - t.string "location", limit: 255, default: "" - t.string "static_data", limit: 255, default: "" - t.boolean "vectors", default: false, null: false - t.string "tiles", limit: 255, default: "google", null: false - t.string "email", limit: 255, default: "", null: false - t.boolean "archived", default: false, null: false - t.text "tile_url", limit: 65535 - t.text "tile_layer", limit: 65535 - t.string "license", limit: 255, default: "copyright" - t.integer "user_id", limit: 4, default: 0 - t.boolean "anon_annotatable", default: false - t.string "slug", limit: 255 + create_table "maps", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "name", default: "" + t.decimal "lat", precision: 20, scale: 10, default: "0.0" + t.decimal "lon", precision: 20, scale: 10, default: "0.0" + t.integer "version", default: 1 + t.string "password", default: "" + t.text "styles" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.text "description" + t.string "author", default: "anonymous" + t.decimal "zoom", precision: 15, scale: 10, default: "2.0" + t.string "location", default: "" + t.string "static_data", default: "" + t.boolean "vectors", default: false, null: false + t.string "tiles", default: "google", null: false + t.string "email", default: "", null: false + t.boolean "archived", default: false, null: false + t.text "tile_url" + t.text "tile_layer" + t.string "license", default: "copyright" + t.integer "user_id", default: 0 + t.boolean "anon_annotatable", default: false + t.string "slug" + t.index ["slug"], name: "index_maps_on_slug", unique: true end - add_index "maps", ["slug"], name: "index_maps_on_slug", unique: true, using: :btree - - create_table "nodes", force: :cascade do |t| - t.string "color", limit: 255, default: "red" - t.string "author", limit: 255, default: "anonymous" - t.decimal "lat", precision: 20, scale: 10, default: 0.0 - t.decimal "lon", precision: 20, scale: 10, default: 0.0 - t.integer "way_id", limit: 4, default: 0 - t.integer "order", limit: 4, default: 0 - t.datetime "created_at" - t.datetime "updated_at" - t.string "name", limit: 255, default: "" - t.string "description", limit: 255, default: "" - t.integer "map_id", limit: 4, default: 0 - t.integer "way_order", limit: 4, default: 0 - t.text "body", limit: 65535 + create_table "nodes", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "color", default: "red" + t.string "author", default: "anonymous" + t.decimal "lat", precision: 20, scale: 10, default: "0.0" + t.decimal "lon", precision: 20, scale: 10, default: "0.0" + t.integer "way_id", default: 0 + t.integer "order", default: 0 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "name", default: "" + t.string "description", default: "" + t.integer "map_id", default: 0 + t.integer "way_order", default: 0 + t.text "body" end - create_table "tags", force: :cascade do |t| - t.string "user_id", limit: 255 - t.string "name", limit: 255 - t.integer "map_id", limit: 4 - t.integer "warpable_id", limit: 4 - t.datetime "created_at" - t.datetime "updated_at" + create_table "tags", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "user_id" + t.string "name" + t.integer "map_id" + t.integer "warpable_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["map_id"], name: "index_tags_on_map_id" + t.index ["user_id"], name: "index_tags_on_user_id" + t.index ["warpable_id"], name: "index_tags_on_warpable_id" end - add_index "tags", ["map_id"], name: "index_tags_on_map_id", using: :btree - add_index "tags", ["user_id"], name: "index_tags_on_user_id", using: :btree - add_index "tags", ["warpable_id"], name: "index_tags_on_warpable_id", using: :btree - - create_table "users", force: :cascade do |t| - t.string "login", limit: 40 - t.string "name", limit: 100, default: "" - t.string "email", limit: 100 - t.string "crypted_password", limit: 40 - t.string "salt", limit: 40 - t.string "identity_url", limit: 255 - t.string "role", limit: 40, default: "basic" + create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "login", limit: 40 + t.string "name", limit: 100, default: "" + t.string "email", limit: 100 + t.string "crypted_password", limit: 40 + t.string "salt", limit: 40 + t.string "identity_url" + t.string "role", limit: 40, default: "basic" t.datetime "created_at" t.datetime "updated_at" - t.string "remember_token", limit: 40 + t.string "remember_token", limit: 40 t.datetime "remember_token_expires_at" + t.index ["login"], name: "index_users_on_login", unique: true end - add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree - - create_table "warpables", force: :cascade do |t| - t.integer "parent_id", limit: 4 - t.string "image_content_type", limit: 255 - t.string "image_file_name", limit: 255 - t.string "thumbnail", limit: 255 - t.integer "image_file_size", limit: 4 - t.integer "width", limit: 4 - t.integer "height", limit: 4 + create_table "versions", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t| + t.string "item_type", limit: 191, null: false + t.bigint "item_id", null: false + t.string "event", null: false + t.string "whodunnit" + t.text "object", limit: 4294967295 t.datetime "created_at" - t.datetime "updated_at" - t.integer "map_id", limit: 4, default: 0 - t.string "nodes", limit: 255, default: "" - t.boolean "locked", default: false, null: false - t.boolean "deleted", default: false, null: false - t.text "history", limit: 65535, null: false - t.float "cm_per_pixel", limit: 24, default: 0.0, null: false + t.index ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id" end - create_table "ways", force: :cascade do |t| - t.string "color", limit: 255, default: "red" - t.string "author", limit: 255, default: "anonymous" - t.decimal "lat1", precision: 20, scale: 10, default: 0.0 - t.decimal "lat2", precision: 20, scale: 10, default: 0.0 - t.decimal "lon1", precision: 20, scale: 10, default: 0.0 - t.decimal "lon2", precision: 20, scale: 10, default: 0.0 - t.datetime "created_at" - t.datetime "updated_at" - t.string "name", limit: 255, default: "" - t.string "description", limit: 255, default: "" - t.boolean "complete", default: true - t.integer "map_id", limit: 4, default: 0 - t.text "body", limit: 65535 + create_table "warpables", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.integer "parent_id" + t.string "image_content_type" + t.string "image_file_name" + t.string "thumbnail" + t.integer "image_file_size" + t.integer "width" + t.integer "height" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "map_id", default: 0 + t.string "nodes", default: "" + t.boolean "locked", default: false, null: false + t.boolean "deleted", default: false, null: false + t.text "history", null: false + t.float "cm_per_pixel", default: 0.0, null: false + end + + create_table "ways", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| + t.string "color", default: "red" + t.string "author", default: "anonymous" + t.decimal "lat1", precision: 20, scale: 10, default: "0.0" + t.decimal "lat2", precision: 20, scale: 10, default: "0.0" + t.decimal "lon1", precision: 20, scale: 10, default: "0.0" + t.decimal "lon2", precision: 20, scale: 10, default: "0.0" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "name", default: "" + t.string "description", default: "" + t.boolean "complete", default: true + t.integer "map_id", default: 0 + t.text "body" end -end \ No newline at end of file +end diff --git a/package.json b/package.json index 2f3ca71fe..c95fbc30c 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ "junction": "theleagueof/junction#*", "leaflet": "Leaflet/Leaflet#^1.0.0", "leaflet-dist": "vperron/leaflet-dist#0.7.x", - "leaflet-distortableimage": "^0.7.2", "leaflet-draw": "Leaflet/Leaflet.draw#0.2.4", + "leaflet-distortableimage": "0.7.7", "leaflet-easybutton": "^2.4.0", "leaflet-environmental-layers": "^1.3.6", "leaflet-fullhash": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index a880e4d72..45f1c772c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -290,11 +290,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -305,11 +300,6 @@ array-from@^2.1.1: resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -1645,11 +1635,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -1981,7 +1966,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exif-js@jseidelin/exif-js#*: +exif-js@^2.3.0, exif-js@jseidelin/exif-js#*: version "2.3.0" resolved "https://codeload.github.com/jseidelin/exif-js/tar.gz/a10f3d53f3f72defef4cad5a54a90ee308901fe6" @@ -2012,13 +1997,6 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - express-session@^1.15.3: version "1.16.2" resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.16.2.tgz#59f36d7770e94872d19b163b6708a2d16aa6848c" @@ -2084,7 +2062,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -2213,37 +2191,11 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -fined@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - fisheyegl@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/fisheyegl/-/fisheyegl-0.1.2.tgz#4b7ad5705253444ad6030888a81296f5068e4972" integrity sha1-S3rVcFJTRErWAwiIqBKW9QaOSXI= -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - flat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" @@ -2268,13 +2220,6 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -2456,6 +2401,11 @@ glfx-js@jywarren/glfx.js#*: version "0.0.1" resolved "https://codeload.github.com/jywarren/glfx.js/tar.gz/07a117c2b7c75a8556d7338108c0976d110c11a2" +glfx@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/glfx/-/glfx-0.0.4.tgz#1b776dc748c081994624b0af3b5638403de78f4d" + integrity sha1-G3dtx0jAgZlGJLCvO1Y4QD3nj00= + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -2525,26 +2475,6 @@ glob@^7.1.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" @@ -2555,22 +2485,6 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -grunt-cli@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.3.2.tgz#60f12d12c1b5aae94ae3469c6b5fe24e960014e8" - integrity sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ== - dependencies: - grunt-known-options "~1.1.0" - interpret "~1.1.0" - liftoff "~2.5.0" - nopt "~4.0.1" - v8flags "~3.1.1" - -grunt-known-options@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" - integrity sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ== - gulp-mocha@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gulp-mocha/-/gulp-mocha-6.0.0.tgz#80f32bc705ce30747f355ddb8ccd96a1c73bef13" @@ -2702,13 +2616,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - htmlescape@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" @@ -2883,7 +2790,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@~1.3.0: +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -2911,11 +2818,6 @@ insert-module-globals@^7.0.0: undeclared-identifiers "^1.1.2" xtend "^4.0.0" -interpret@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= - invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -2937,14 +2839,6 @@ ipaddr.js@1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -3054,7 +2948,7 @@ is-extglob@^1.0.0: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -3078,13 +2972,6 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -3140,13 +3027,6 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3164,14 +3044,7 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -3363,13 +3236,15 @@ leaflet-dist@vperron/leaflet-dist#0.7.x: version "0.0.0" resolved "https://codeload.github.com/vperron/leaflet-dist/tar.gz/2ec7a0846eaecdce1321d92b3c45c74f4fd08dd3" -leaflet-distortableimage@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/leaflet-distortableimage/-/leaflet-distortableimage-0.7.2.tgz#a3aa4ce359e20dcc6066252ecfc1677d95cf4e88" - integrity sha512-RzQOlC0bAfEohzk8BanyKU2I//MxoeoaicaadSgjoEgoSLSLfcHNOqKB6tHDRI04uFfwwW+1+BD6mWVX+EHq4A== +leaflet-distortableimage@0.7.7: + version "0.7.7" + resolved "https://registry.yarnpkg.com/leaflet-distortableimage/-/leaflet-distortableimage-0.7.7.tgz#72a8516aa31edb75fc6f5d9e7da41158fac44441" + integrity sha512-ncLq9UR5n67jlEuzQnln7p9YaKww8fUWfkylCrujRFi4lktFsYlblhRGEB+7p7gmBsB503l/M8SxMmKNhlC8Rg== dependencies: - grunt-cli "^1.2.0" + exif-js "^2.3.0" + glfx "0.0.4" leaflet-toolbar "0.4.0-alpha.2" + webgl-distort "0.0.2" leaflet-draw@Leaflet/Leaflet.draw#0.2.4: version "0.2.3" @@ -3465,20 +3340,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -liftoff@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" - integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew= - dependencies: - extend "^3.0.0" - findup-sync "^2.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -3553,13 +3414,6 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -3567,7 +3421,7 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.0, map-cache@^0.2.2: +map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= @@ -3643,7 +3497,7 @@ micromatch@^2.1.5: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4, micromatch@^3.1.10: +micromatch@^3.1.10: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -4006,7 +3860,7 @@ nopt@^3.0.1: dependencies: abbrev "1" -nopt@^4.0.1, nopt@~4.0.1: +nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= @@ -4124,16 +3978,6 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -4142,14 +3986,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -4158,7 +3994,7 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -object.pick@^1.2.0, object.pick@^1.3.0: +object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= @@ -4353,15 +4189,6 @@ parse-data-uri@^0.2.0: dependencies: data-uri-to-buffer "0.0.3" -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -4377,11 +4204,6 @@ parse-node-version@^1.0.0: resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -4422,18 +4244,6 @@ path-platform@~0.11.15: resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -4787,13 +4597,6 @@ readline-sync@^1.4.7: resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -4881,14 +4684,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -4899,7 +4694,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: +resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.5, resolve@^1.1.7: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -5823,11 +5618,6 @@ umd@^3.0.0: resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - undeclared-identifiers@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" @@ -5946,13 +5736,6 @@ uws@^9.148.0: resolved "https://registry.yarnpkg.com/uws/-/uws-9.148.0.tgz#56aff36cb95f7594573daff2a21105ec4b764664" integrity sha512-vWt+e8dOdwLM4neb1xIeZuQ7ZUN3l7n0qTKrOUtU1EZrV4BpmrSnsEL30d062/ocqRMGtLpwzVFsLKFgXomA9g== -v8flags@~3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" - integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== - dependencies: - homedir-polyfill "^1.0.1" - vargs@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" @@ -6006,6 +5789,11 @@ wd@*: request "2.88.0" vargs "^0.1.0" +webgl-distort@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/webgl-distort/-/webgl-distort-0.0.2.tgz#80d2f61efc4aece28e7a1ff1375e14aac6d06f36" + integrity sha1-gNL2HvxK7OKOeh/xN14UqsbQbzY= + webgl-distort@jywarren/webgl-distort#*: version "0.0.1" resolved "https://codeload.github.com/jywarren/webgl-distort/tar.gz/f8a86cb7c60b25a1728ffb532c8ec2db116821f7" @@ -6023,7 +5811,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1.3.1, which@^1.2.14, which@^1.2.9: +which@1.3.1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==