binnacle 0.4.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +138 -0
- data/LICENSE.txt +22 -0
- data/README.asc +264 -0
- data/Rakefile +48 -0
- data/bin/binnacle +5 -0
- data/binnacle.gemspec +49 -0
- data/lib/binnacle.rb +112 -0
- data/lib/binnacle/client.rb +115 -0
- data/lib/binnacle/commands/commands.rb +20 -0
- data/lib/binnacle/commands/help.rb +21 -0
- data/lib/binnacle/commands/tail.rb +187 -0
- data/lib/binnacle/configuration.rb +278 -0
- data/lib/binnacle/connection.rb +66 -0
- data/lib/binnacle/errors.rb +4 -0
- data/lib/binnacle/http_logging/adapters/ethon.rb +44 -0
- data/lib/binnacle/http_logging/adapters/excon.rb +62 -0
- data/lib/binnacle/http_logging/adapters/http.rb +63 -0
- data/lib/binnacle/http_logging/adapters/httpclient.rb +93 -0
- data/lib/binnacle/http_logging/adapters/net_http.rb +54 -0
- data/lib/binnacle/http_logging/adapters/patron.rb +24 -0
- data/lib/binnacle/http_logging/adapters/typhoeus.rb +20 -0
- data/lib/binnacle/http_logging/http_logger.rb +83 -0
- data/lib/binnacle/logging/formatter.rb +62 -0
- data/lib/binnacle/logging/logging.rb +36 -0
- data/lib/binnacle/logging/request_log_subscriber.rb +120 -0
- data/lib/binnacle/resource.rb +54 -0
- data/lib/binnacle/resources/event.rb +100 -0
- data/lib/binnacle/trap/backtrace.rb +130 -0
- data/lib/binnacle/trap/exception_event.rb +176 -0
- data/lib/binnacle/trap/middleware.rb +45 -0
- data/lib/binnacle/trap/railtie.rb +28 -0
- data/lib/binnacle/version.rb +3 -0
- data/lib/generators/binnacle/binnacle_generator.rb +78 -0
- data/lib/generators/binnacle/templates/firebase-messaging-sw.js.erb +35 -0
- data/spec/adapters/ethon_adapter.rb +19 -0
- data/spec/adapters/excon_adapter.rb +10 -0
- data/spec/adapters/faraday_adapter.rb +46 -0
- data/spec/adapters/http_adapter.rb +14 -0
- data/spec/adapters/http_base_adapter.rb +37 -0
- data/spec/adapters/httparty_adapter.rb +10 -0
- data/spec/adapters/httpclient_adapter.rb +21 -0
- data/spec/adapters/net_http_adapter.rb +14 -0
- data/spec/adapters/open_uri_adapter.rb +17 -0
- data/spec/adapters/patron_adapter.rb +29 -0
- data/spec/adapters/typhoeus_adapter.rb +25 -0
- data/spec/backtrace_spec.rb +197 -0
- data/spec/binnacle_spec.rb +33 -0
- data/spec/client_spec.rb +128 -0
- data/spec/commands_spec.rb +91 -0
- data/spec/configuration_spec.rb +139 -0
- data/spec/connection_spec.rb +34 -0
- data/spec/exception_event_spec.rb +72 -0
- data/spec/http_logger_spec.rb +77 -0
- data/spec/logger_spec.rb +60 -0
- data/spec/spec_helper.rb +117 -0
- data/spec/support/index.html +8 -0
- data/spec/support/index.html.gz +0 -0
- data/spec/support/test.bin +0 -0
- data/spec/support/test_server.rb +31 -0
- data/spec/support/utf8-invalid.html +0 -0
- data/spec/support/utf8.html +8 -0
- data/spec/vcr/binnacle/configure_can_be_configured_via_a_hash_of_options.yml +42 -0
- data/spec/vcr/binnacle/configure_creates_a_module_level_instance_of_a_binnacle_client.yml +42 -0
- data/spec/vcr/binnacle_client/events_invokes_the_events_api.yml +124 -0
- data/spec/vcr/binnacle_client/events_returns_a_collection_of_event_objects.yml +124 -0
- data/spec/vcr/binnacle_client/recents_invokes_the_events_api_recents.yml +83 -0
- data/spec/vcr/binnacle_client/recents_returns_a_collection_of_event_objects.yml +83 -0
- data/spec/vcr/binnacle_client/report_exception_invokes_the_events_api_signal.yml +121 -0
- data/spec/vcr/binnacle_client/signal_asynch_invokes_the_events_api_signal.yml +74 -0
- data/spec/vcr/binnacle_client/signal_invokes_the_events_api_signal.yml +74 -0
- data/spec/vcr/binnacle_client_ready_/returns_true_if_a_connection_has_been_successfully_established.yml +42 -0
- data/spec/vcr/binnacle_command/tail_command_with_n_flag_returns_recent_events.yml +81 -0
- data/spec/vcr/binnacle_connection/initialize_fails_with_incorrect_credentials.yml +40 -0
- data/spec/vcr/binnacle_connection/initialize_retrieves_available_endpoints_upon_successful_connection.yml +42 -0
- data/spec/vcr/binnacle_http_logger/_htt_party_adapter_should_log__ge_t_requests.yml +122 -0
- data/spec/vcr/binnacle_http_logger/_http_adapter_should_log__ge_t_requests.yml +165 -0
- data/spec/vcr/binnacle_http_logger/_http_client_adapter_should_log__ge_t_requests.yml +274 -0
- data/spec/vcr/binnacle_http_logger/ethon_adapter_should_log__ge_t_requests.yml +87 -0
- data/spec/vcr/binnacle_http_logger/excon_adapter_should_log__ge_t_requests.yml +204 -0
- data/spec/vcr/binnacle_http_logger/faraday_adapter_should_log__ge_t_requests.yml +200 -0
- data/spec/vcr/binnacle_http_logger/net_http_adapter_should_log__ge_t_requests.yml +827 -0
- data/spec/vcr/binnacle_http_logger/open_uri_adapter_should_log__ge_t_requests.yml +751 -0
- data/spec/vcr/binnacle_http_logger/patron_adapter_should_log__ge_t_requests.yml +124 -0
- data/spec/vcr/binnacle_http_logger/typhoeus_adapter_should_log__ge_t_requests.yml +124 -0
- data/spec/vcr/binnacle_logging/logging_allows_passing_other_parameters_using_a_hash.yml +119 -0
- data/spec/vcr/binnacle_logging/logging_invokes_the_events_api_signal.yml +75 -0
- data/spec/vcr/binnacle_logging/logging_respects_the_logger_severity.yml +81 -0
- data/vendor/assets/javascripts/atmosphere/atmosphere.js +3487 -0
- data/vendor/assets/javascripts/base64/base64.js +61 -0
- data/vendor/assets/javascripts/binnacle.js +5 -0
- data/vendor/assets/javascripts/binnacle/binnacle.js +9090 -0
- data/vendor/assets/javascripts/firebase/firebase-app-externs.js +261 -0
- data/vendor/assets/javascripts/firebase/firebase-app.js +35 -0
- data/vendor/assets/javascripts/firebase/firebase-auth-externs.js +1300 -0
- data/vendor/assets/javascripts/firebase/firebase-auth.js +241 -0
- data/vendor/assets/javascripts/firebase/firebase-database-externs.js +1700 -0
- data/vendor/assets/javascripts/firebase/firebase-database.js +260 -0
- data/vendor/assets/javascripts/firebase/firebase-messaging-externs.js +164 -0
- data/vendor/assets/javascripts/firebase/firebase-messaging.js +35 -0
- data/vendor/assets/javascripts/firebase/firebase-storage-externs.js +663 -0
- data/vendor/assets/javascripts/firebase/firebase-storage.js +52 -0
- data/vendor/assets/javascripts/firebase/firebase.js +611 -0
- data/vendor/assets/javascripts/moment/locale/af.js +73 -0
- data/vendor/assets/javascripts/moment/locale/ar-dz.js +59 -0
- data/vendor/assets/javascripts/moment/locale/ar-kw.js +59 -0
- data/vendor/assets/javascripts/moment/locale/ar-ly.js +126 -0
- data/vendor/assets/javascripts/moment/locale/ar-ma.js +60 -0
- data/vendor/assets/javascripts/moment/locale/ar-sa.js +105 -0
- data/vendor/assets/javascripts/moment/locale/ar-tn.js +59 -0
- data/vendor/assets/javascripts/moment/locale/ar.js +142 -0
- data/vendor/assets/javascripts/moment/locale/az.js +105 -0
- data/vendor/assets/javascripts/moment/locale/be.js +134 -0
- data/vendor/assets/javascripts/moment/locale/bg.js +90 -0
- data/vendor/assets/javascripts/moment/locale/bn.js +119 -0
- data/vendor/assets/javascripts/moment/locale/bo.js +119 -0
- data/vendor/assets/javascripts/moment/locale/br.js +108 -0
- data/vendor/assets/javascripts/moment/locale/bs.js +143 -0
- data/vendor/assets/javascripts/moment/locale/ca.js +88 -0
- data/vendor/assets/javascripts/moment/locale/cs.js +172 -0
- data/vendor/assets/javascripts/moment/locale/cv.js +63 -0
- data/vendor/assets/javascripts/moment/locale/cy.js +81 -0
- data/vendor/assets/javascripts/moment/locale/da.js +60 -0
- data/vendor/assets/javascripts/moment/locale/de-at.js +79 -0
- data/vendor/assets/javascripts/moment/locale/de-ch.js +78 -0
- data/vendor/assets/javascripts/moment/locale/de.js +78 -0
- data/vendor/assets/javascripts/moment/locale/dv.js +100 -0
- data/vendor/assets/javascripts/moment/locale/el.js +100 -0
- data/vendor/assets/javascripts/moment/locale/en-au.js +67 -0
- data/vendor/assets/javascripts/moment/locale/en-ca.js +63 -0
- data/vendor/assets/javascripts/moment/locale/en-gb.js +67 -0
- data/vendor/assets/javascripts/moment/locale/en-ie.js +67 -0
- data/vendor/assets/javascripts/moment/locale/en-nz.js +67 -0
- data/vendor/assets/javascripts/moment/locale/eo.js +73 -0
- data/vendor/assets/javascripts/moment/locale/es-do.js +82 -0
- data/vendor/assets/javascripts/moment/locale/es.js +83 -0
- data/vendor/assets/javascripts/moment/locale/et.js +80 -0
- data/vendor/assets/javascripts/moment/locale/eu.js +66 -0
- data/vendor/assets/javascripts/moment/locale/fa.js +107 -0
- data/vendor/assets/javascripts/moment/locale/fi.js +107 -0
- data/vendor/assets/javascripts/moment/locale/fo.js +60 -0
- data/vendor/assets/javascripts/moment/locale/fr-ca.js +74 -0
- data/vendor/assets/javascripts/moment/locale/fr-ch.js +78 -0
- data/vendor/assets/javascripts/moment/locale/fr.js +83 -0
- data/vendor/assets/javascripts/moment/locale/fy.js +75 -0
- data/vendor/assets/javascripts/moment/locale/gd.js +76 -0
- data/vendor/assets/javascripts/moment/locale/gl.js +77 -0
- data/vendor/assets/javascripts/moment/locale/gom-latn.js +122 -0
- data/vendor/assets/javascripts/moment/locale/he.js +99 -0
- data/vendor/assets/javascripts/moment/locale/hi.js +124 -0
- data/vendor/assets/javascripts/moment/locale/hr.js +145 -0
- data/vendor/assets/javascripts/moment/locale/hu.js +109 -0
- data/vendor/assets/javascripts/moment/locale/hy-am.js +95 -0
- data/vendor/assets/javascripts/moment/locale/id.js +83 -0
- data/vendor/assets/javascripts/moment/locale/is.js +127 -0
- data/vendor/assets/javascripts/moment/locale/it.js +70 -0
- data/vendor/assets/javascripts/moment/locale/ja.js +80 -0
- data/vendor/assets/javascripts/moment/locale/jv.js +83 -0
- data/vendor/assets/javascripts/moment/locale/ka.js +89 -0
- data/vendor/assets/javascripts/moment/locale/kk.js +87 -0
- data/vendor/assets/javascripts/moment/locale/km.js +58 -0
- data/vendor/assets/javascripts/moment/locale/kn.js +126 -0
- data/vendor/assets/javascripts/moment/locale/ko.js +69 -0
- data/vendor/assets/javascripts/moment/locale/ky.js +88 -0
- data/vendor/assets/javascripts/moment/locale/lb.js +137 -0
- data/vendor/assets/javascripts/moment/locale/lo.js +70 -0
- data/vendor/assets/javascripts/moment/locale/lt.js +117 -0
- data/vendor/assets/javascripts/moment/locale/lv.js +97 -0
- data/vendor/assets/javascripts/moment/locale/me.js +111 -0
- data/vendor/assets/javascripts/moment/locale/mi.js +64 -0
- data/vendor/assets/javascripts/moment/locale/mk.js +90 -0
- data/vendor/assets/javascripts/moment/locale/ml.js +81 -0
- data/vendor/assets/javascripts/moment/locale/mr.js +159 -0
- data/vendor/assets/javascripts/moment/locale/ms-my.js +83 -0
- data/vendor/assets/javascripts/moment/locale/ms.js +82 -0
- data/vendor/assets/javascripts/moment/locale/my.js +96 -0
- data/vendor/assets/javascripts/moment/locale/nb.js +63 -0
- data/vendor/assets/javascripts/moment/locale/ne.js +123 -0
- data/vendor/assets/javascripts/moment/locale/nl-be.js +88 -0
- data/vendor/assets/javascripts/moment/locale/nl.js +88 -0
- data/vendor/assets/javascripts/moment/locale/nn.js +60 -0
- data/vendor/assets/javascripts/moment/locale/pa-in.js +124 -0
- data/vendor/assets/javascripts/moment/locale/pl.js +107 -0
- data/vendor/assets/javascripts/moment/locale/pt-br.js +61 -0
- data/vendor/assets/javascripts/moment/locale/pt.js +65 -0
- data/vendor/assets/javascripts/moment/locale/ro.js +75 -0
- data/vendor/assets/javascripts/moment/locale/ru.js +183 -0
- data/vendor/assets/javascripts/moment/locale/sd.js +98 -0
- data/vendor/assets/javascripts/moment/locale/se.js +61 -0
- data/vendor/assets/javascripts/moment/locale/si.js +71 -0
- data/vendor/assets/javascripts/moment/locale/sk.js +150 -0
- data/vendor/assets/javascripts/moment/locale/sl.js +162 -0
- data/vendor/assets/javascripts/moment/locale/sq.js +70 -0
- data/vendor/assets/javascripts/moment/locale/sr-cyrl.js +110 -0
- data/vendor/assets/javascripts/moment/locale/sr.js +110 -0
- data/vendor/assets/javascripts/moment/locale/ss.js +89 -0
- data/vendor/assets/javascripts/moment/locale/sv.js +69 -0
- data/vendor/assets/javascripts/moment/locale/sw.js +59 -0
- data/vendor/assets/javascripts/moment/locale/ta.js +130 -0
- data/vendor/assets/javascripts/moment/locale/te.js +89 -0
- data/vendor/assets/javascripts/moment/locale/tet.js +68 -0
- data/vendor/assets/javascripts/moment/locale/th.js +67 -0
- data/vendor/assets/javascripts/moment/locale/tl-ph.js +62 -0
- data/vendor/assets/javascripts/moment/locale/tlh.js +120 -0
- data/vendor/assets/javascripts/moment/locale/tr.js +90 -0
- data/vendor/assets/javascripts/moment/locale/tzl.js +91 -0
- data/vendor/assets/javascripts/moment/locale/tzm-latn.js +58 -0
- data/vendor/assets/javascripts/moment/locale/tzm.js +58 -0
- data/vendor/assets/javascripts/moment/locale/uk.js +151 -0
- data/vendor/assets/javascripts/moment/locale/ur.js +99 -0
- data/vendor/assets/javascripts/moment/locale/uz-latn.js +58 -0
- data/vendor/assets/javascripts/moment/locale/uz.js +58 -0
- data/vendor/assets/javascripts/moment/locale/vi.js +79 -0
- data/vendor/assets/javascripts/moment/locale/x-pseudo.js +68 -0
- data/vendor/assets/javascripts/moment/locale/yo.js +60 -0
- data/vendor/assets/javascripts/moment/locale/zh-cn.js +111 -0
- data/vendor/assets/javascripts/moment/locale/zh-hk.js +105 -0
- data/vendor/assets/javascripts/moment/locale/zh-tw.js +104 -0
- data/vendor/assets/javascripts/moment/min/locales.js +9252 -0
- data/vendor/assets/javascripts/moment/min/moment-with-locales.js +13700 -0
- data/vendor/assets/javascripts/moment/min/moment.min.js +7 -0
- data/vendor/assets/javascripts/moment/min/tests.js +78265 -0
- data/vendor/assets/javascripts/moment/moment.js +4463 -0
- data/vendor/assets/javascripts/moment/src/lib/create/check-overflow.js +34 -0
- data/vendor/assets/javascripts/moment/src/lib/create/date-from-array.js +21 -0
- data/vendor/assets/javascripts/moment/src/lib/create/from-anything.js +110 -0
- data/vendor/assets/javascripts/moment/src/lib/create/from-array.js +140 -0
- data/vendor/assets/javascripts/moment/src/lib/create/from-object.js +16 -0
- data/vendor/assets/javascripts/moment/src/lib/create/from-string-and-array.js +50 -0
- data/vendor/assets/javascripts/moment/src/lib/create/from-string-and-format.js +113 -0
- data/vendor/assets/javascripts/moment/src/lib/create/from-string.js +202 -0
- data/vendor/assets/javascripts/moment/src/lib/create/local.js +5 -0
- data/vendor/assets/javascripts/moment/src/lib/create/parsing-flags.js +26 -0
- data/vendor/assets/javascripts/moment/src/lib/create/utc.js +5 -0
- data/vendor/assets/javascripts/moment/src/lib/create/valid.js +49 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/abs.js +18 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/add-subtract.js +21 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/as.js +61 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/bubble.js +61 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/constructor.js +44 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/create.js +122 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/duration.js +16 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/get.js +25 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/humanize.js +85 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/iso-string.js +56 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/prototype.js +50 -0
- data/vendor/assets/javascripts/moment/src/lib/duration/valid.js +35 -0
- data/vendor/assets/javascripts/moment/src/lib/format/format.js +92 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/base-config.js +44 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/calendar.js +15 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/constructor.js +5 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/en.js +15 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/formats.js +23 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/invalid.js +5 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/lists.js +93 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/locale.js +39 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/locales.js +186 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/ordinal.js +7 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/pre-post-format.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/prototype.js +69 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/relative.js +30 -0
- data/vendor/assets/javascripts/moment/src/lib/locale/set.js +49 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/add-subtract.js +55 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/calendar.js +26 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/clone.js +5 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/compare.js +59 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/constructor.js +77 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/creation-data.js +9 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/diff.js +62 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/format.js +57 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/from.js +17 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/get-set.js +55 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/locale.js +34 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/min-max.js +63 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/moment.js +28 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/now.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/prototype.js +150 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/start-end-of.js +59 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/to-type.js +34 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/to.js +17 -0
- data/vendor/assets/javascripts/moment/src/lib/moment/valid.js +15 -0
- data/vendor/assets/javascripts/moment/src/lib/parse/regex.js +54 -0
- data/vendor/assets/javascripts/moment/src/lib/parse/token.js +33 -0
- data/vendor/assets/javascripts/moment/src/lib/units/aliases.js +30 -0
- data/vendor/assets/javascripts/moment/src/lib/units/constants.js +9 -0
- data/vendor/assets/javascripts/moment/src/lib/units/day-of-month.js +39 -0
- data/vendor/assets/javascripts/moment/src/lib/units/day-of-week.js +364 -0
- data/vendor/assets/javascripts/moment/src/lib/units/day-of-year.js +36 -0
- data/vendor/assets/javascripts/moment/src/lib/units/hour.js +144 -0
- data/vendor/assets/javascripts/moment/src/lib/units/millisecond.js +69 -0
- data/vendor/assets/javascripts/moment/src/lib/units/minute.js +29 -0
- data/vendor/assets/javascripts/moment/src/lib/units/month.js +283 -0
- data/vendor/assets/javascripts/moment/src/lib/units/offset.js +235 -0
- data/vendor/assets/javascripts/moment/src/lib/units/priorities.js +16 -0
- data/vendor/assets/javascripts/moment/src/lib/units/quarter.js +32 -0
- data/vendor/assets/javascripts/moment/src/lib/units/second.js +29 -0
- data/vendor/assets/javascripts/moment/src/lib/units/timestamp.js +20 -0
- data/vendor/assets/javascripts/moment/src/lib/units/timezone.js +16 -0
- data/vendor/assets/javascripts/moment/src/lib/units/units.js +20 -0
- data/vendor/assets/javascripts/moment/src/lib/units/week-calendar-utils.js +65 -0
- data/vendor/assets/javascripts/moment/src/lib/units/week-year.js +107 -0
- data/vendor/assets/javascripts/moment/src/lib/units/week.js +67 -0
- data/vendor/assets/javascripts/moment/src/lib/units/year.js +75 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/abs-ceil.js +7 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/abs-floor.js +8 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/abs-round.js +7 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/compare-arrays.js +16 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/defaults.js +10 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/deprecate.js +55 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/extend.js +19 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/has-own-prop.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/hooks.js +13 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/index-of.js +18 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/is-array.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/is-date.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/is-function.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/is-number.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/is-object-empty.js +8 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/is-object.js +5 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/is-undefined.js +3 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/keys.js +19 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/map.js +7 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/some.js +19 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/to-int.js +12 -0
- data/vendor/assets/javascripts/moment/src/lib/utils/zero-fill.js +7 -0
- data/vendor/assets/javascripts/moment/src/locale/af.js +63 -0
- data/vendor/assets/javascripts/moment/src/locale/ar-dz.js +50 -0
- data/vendor/assets/javascripts/moment/src/locale/ar-kw.js +49 -0
- data/vendor/assets/javascripts/moment/src/locale/ar-ly.js +112 -0
- data/vendor/assets/javascripts/moment/src/locale/ar-ma.js +51 -0
- data/vendor/assets/javascripts/moment/src/locale/ar-sa.js +95 -0
- data/vendor/assets/javascripts/moment/src/locale/ar-tn.js +50 -0
- data/vendor/assets/javascripts/moment/src/locale/ar.js +128 -0
- data/vendor/assets/javascripts/moment/src/locale/az.js +96 -0
- data/vendor/assets/javascripts/moment/src/locale/be.js +125 -0
- data/vendor/assets/javascripts/moment/src/locale/bg.js +81 -0
- data/vendor/assets/javascripts/moment/src/locale/bn.js +109 -0
- data/vendor/assets/javascripts/moment/src/locale/bo.js +110 -0
- data/vendor/assets/javascripts/moment/src/locale/br.js +99 -0
- data/vendor/assets/javascripts/moment/src/locale/bs.js +133 -0
- data/vendor/assets/javascripts/moment/src/locale/ca.js +79 -0
- data/vendor/assets/javascripts/moment/src/locale/cs.js +163 -0
- data/vendor/assets/javascripts/moment/src/locale/cv.js +53 -0
- data/vendor/assets/javascripts/moment/src/locale/cy.js +72 -0
- data/vendor/assets/javascripts/moment/src/locale/da.js +50 -0
- data/vendor/assets/javascripts/moment/src/locale/de-at.js +69 -0
- data/vendor/assets/javascripts/moment/src/locale/de-ch.js +68 -0
- data/vendor/assets/javascripts/moment/src/locale/de.js +68 -0
- data/vendor/assets/javascripts/moment/src/locale/dv.js +89 -0
- data/vendor/assets/javascripts/moment/src/locale/el.js +88 -0
- data/vendor/assets/javascripts/moment/src/locale/en-au.js +58 -0
- data/vendor/assets/javascripts/moment/src/locale/en-ca.js +53 -0
- data/vendor/assets/javascripts/moment/src/locale/en-gb.js +58 -0
- data/vendor/assets/javascripts/moment/src/locale/en-ie.js +58 -0
- data/vendor/assets/javascripts/moment/src/locale/en-nz.js +57 -0
- data/vendor/assets/javascripts/moment/src/locale/eo.js +64 -0
- data/vendor/assets/javascripts/moment/src/locale/es-do.js +73 -0
- data/vendor/assets/javascripts/moment/src/locale/es.js +74 -0
- data/vendor/assets/javascripts/moment/src/locale/et.js +71 -0
- data/vendor/assets/javascripts/moment/src/locale/eu.js +57 -0
- data/vendor/assets/javascripts/moment/src/locale/fa.js +97 -0
- data/vendor/assets/javascripts/moment/src/locale/fi.js +98 -0
- data/vendor/assets/javascripts/moment/src/locale/fo.js +51 -0
- data/vendor/assets/javascripts/moment/src/locale/fr-ca.js +65 -0
- data/vendor/assets/javascripts/moment/src/locale/fr-ch.js +69 -0
- data/vendor/assets/javascripts/moment/src/locale/fr.js +74 -0
- data/vendor/assets/javascripts/moment/src/locale/fy.js +66 -0
- data/vendor/assets/javascripts/moment/src/locale/gd.js +67 -0
- data/vendor/assets/javascripts/moment/src/locale/gl.js +68 -0
- data/vendor/assets/javascripts/moment/src/locale/gom-latn.js +112 -0
- data/vendor/assets/javascripts/moment/src/locale/he.js +90 -0
- data/vendor/assets/javascripts/moment/src/locale/hi.js +115 -0
- data/vendor/assets/javascripts/moment/src/locale/hr.js +135 -0
- data/vendor/assets/javascripts/moment/src/locale/hu.js +100 -0
- data/vendor/assets/javascripts/moment/src/locale/hy-am.js +86 -0
- data/vendor/assets/javascripts/moment/src/locale/id.js +74 -0
- data/vendor/assets/javascripts/moment/src/locale/is.js +118 -0
- data/vendor/assets/javascripts/moment/src/locale/it.js +61 -0
- data/vendor/assets/javascripts/moment/src/locale/ja.js +71 -0
- data/vendor/assets/javascripts/moment/src/locale/jv.js +73 -0
- data/vendor/assets/javascripts/moment/src/locale/ka.js +80 -0
- data/vendor/assets/javascripts/moment/src/locale/kk.js +77 -0
- data/vendor/assets/javascripts/moment/src/locale/km.js +49 -0
- data/vendor/assets/javascripts/moment/src/locale/kn.js +116 -0
- data/vendor/assets/javascripts/moment/src/locale/ko.js +60 -0
- data/vendor/assets/javascripts/moment/src/locale/ky.js +78 -0
- data/vendor/assets/javascripts/moment/src/locale/lb.js +128 -0
- data/vendor/assets/javascripts/moment/src/locale/lo.js +61 -0
- data/vendor/assets/javascripts/moment/src/locale/lt.js +108 -0
- data/vendor/assets/javascripts/moment/src/locale/lv.js +88 -0
- data/vendor/assets/javascripts/moment/src/locale/me.js +101 -0
- data/vendor/assets/javascripts/moment/src/locale/mi.js +54 -0
- data/vendor/assets/javascripts/moment/src/locale/mk.js +81 -0
- data/vendor/assets/javascripts/moment/src/locale/ml.js +72 -0
- data/vendor/assets/javascripts/moment/src/locale/mr.js +150 -0
- data/vendor/assets/javascripts/moment/src/locale/ms-my.js +74 -0
- data/vendor/assets/javascripts/moment/src/locale/ms.js +73 -0
- data/vendor/assets/javascripts/moment/src/locale/my.js +86 -0
- data/vendor/assets/javascripts/moment/src/locale/nb.js +54 -0
- data/vendor/assets/javascripts/moment/src/locale/ne.js +114 -0
- data/vendor/assets/javascripts/moment/src/locale/nl-be.js +79 -0
- data/vendor/assets/javascripts/moment/src/locale/nl.js +79 -0
- data/vendor/assets/javascripts/moment/src/locale/nn.js +51 -0
- data/vendor/assets/javascripts/moment/src/locale/pa-in.js +115 -0
- data/vendor/assets/javascripts/moment/src/locale/pl.js +97 -0
- data/vendor/assets/javascripts/moment/src/locale/pt-br.js +52 -0
- data/vendor/assets/javascripts/moment/src/locale/pt.js +56 -0
- data/vendor/assets/javascripts/moment/src/locale/ro.js +66 -0
- data/vendor/assets/javascripts/moment/src/locale/ru.js +173 -0
- data/vendor/assets/javascripts/moment/src/locale/sd.js +88 -0
- data/vendor/assets/javascripts/moment/src/locale/se.js +51 -0
- data/vendor/assets/javascripts/moment/src/locale/si.js +61 -0
- data/vendor/assets/javascripts/moment/src/locale/sk.js +141 -0
- data/vendor/assets/javascripts/moment/src/locale/sl.js +152 -0
- data/vendor/assets/javascripts/moment/src/locale/sq.js +61 -0
- data/vendor/assets/javascripts/moment/src/locale/sr-cyrl.js +100 -0
- data/vendor/assets/javascripts/moment/src/locale/sr.js +100 -0
- data/vendor/assets/javascripts/moment/src/locale/ss.js +80 -0
- data/vendor/assets/javascripts/moment/src/locale/sv.js +60 -0
- data/vendor/assets/javascripts/moment/src/locale/sw.js +50 -0
- data/vendor/assets/javascripts/moment/src/locale/ta.js +120 -0
- data/vendor/assets/javascripts/moment/src/locale/te.js +79 -0
- data/vendor/assets/javascripts/moment/src/locale/tet.js +58 -0
- data/vendor/assets/javascripts/moment/src/locale/th.js +57 -0
- data/vendor/assets/javascripts/moment/src/locale/tl-ph.js +53 -0
- data/vendor/assets/javascripts/moment/src/locale/tlh.js +110 -0
- data/vendor/assets/javascripts/moment/src/locale/tr.js +81 -0
- data/vendor/assets/javascripts/moment/src/locale/tzl.js +82 -0
- data/vendor/assets/javascripts/moment/src/locale/tzm-latn.js +49 -0
- data/vendor/assets/javascripts/moment/src/locale/tzm.js +49 -0
- data/vendor/assets/javascripts/moment/src/locale/uk.js +142 -0
- data/vendor/assets/javascripts/moment/src/locale/ur.js +89 -0
- data/vendor/assets/javascripts/moment/src/locale/uz-latn.js +49 -0
- data/vendor/assets/javascripts/moment/src/locale/uz.js +49 -0
- data/vendor/assets/javascripts/moment/src/locale/vi.js +70 -0
- data/vendor/assets/javascripts/moment/src/locale/x-pseudo.js +58 -0
- data/vendor/assets/javascripts/moment/src/locale/yo.js +50 -0
- data/vendor/assets/javascripts/moment/src/locale/zh-cn.js +102 -0
- data/vendor/assets/javascripts/moment/src/locale/zh-hk.js +95 -0
- data/vendor/assets/javascripts/moment/src/locale/zh-tw.js +94 -0
- data/vendor/assets/javascripts/moment/src/moment.js +82 -0
- data/vendor/assets/javascripts/moment/templates/default.js +5 -0
- data/vendor/assets/javascripts/moment/templates/locale-header.js +6 -0
- data/vendor/assets/javascripts/moment/templates/test-header.js +6 -0
- metadata +943 -0
@@ -0,0 +1,261 @@
|
|
1
|
+
/**
|
2
|
+
* @fileoverview Firebase namespace and Firebase App API.
|
3
|
+
* Version: 3.7.1
|
4
|
+
*
|
5
|
+
* Copyright 2017 Google Inc. All Rights Reserved.
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
*
|
19
|
+
* @externs
|
20
|
+
*/
|
21
|
+
|
22
|
+
/**
|
23
|
+
* <code>firebase</code> is a global namespace from which all the Firebase
|
24
|
+
* services are accessed.
|
25
|
+
*
|
26
|
+
* @namespace
|
27
|
+
*/
|
28
|
+
var firebase = {};
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Creates and initializes a Firebase {@link firebase.app.App app} instance.
|
32
|
+
*
|
33
|
+
* See
|
34
|
+
* {@link
|
35
|
+
* https://firebase.google.com/docs/web/setup#add_firebase_to_your_app
|
36
|
+
* Add Firebase to your app} and
|
37
|
+
* {@link
|
38
|
+
* https://firebase.google.com/docs/web/setup#initialize_multiple_apps
|
39
|
+
* Initialize multiple apps} for detailed documentation.
|
40
|
+
*
|
41
|
+
* @example
|
42
|
+
* // Initialize default app
|
43
|
+
* // Retrieve your own options values by adding a web app on
|
44
|
+
* // https://console.firebase.google.com
|
45
|
+
* firebase.initializeApp({
|
46
|
+
* apiKey: "AIza....", // Auth / General Use
|
47
|
+
* authDomain: "YOUR_APP.firebaseapp.com", // Auth with popup/redirect
|
48
|
+
* databaseURL: "https://YOUR_APP.firebaseio.com", // Realtime Database
|
49
|
+
* storageBucket: "YOUR_APP.appspot.com", // Storage
|
50
|
+
* messagingSenderId: "123456789" // Cloud Messaging
|
51
|
+
* });
|
52
|
+
*
|
53
|
+
* @example
|
54
|
+
* // Initialize another app
|
55
|
+
* var otherApp = firebase.initializeApp({
|
56
|
+
* databaseURL: "https://<OTHER_DATABASE_NAME>.firebaseio.com",
|
57
|
+
* storageBucket: "<OTHER_STORAGE_BUCKET>.appspot.com"
|
58
|
+
* }, "otherApp");
|
59
|
+
*
|
60
|
+
* @param {!Object} options Options to configure the app's services.
|
61
|
+
* @param {string=} name Optional name of the app to initialize. If no name
|
62
|
+
* is provided, the default is `"[DEFAULT]"`.
|
63
|
+
*
|
64
|
+
* @return {!firebase.app.App} The initialized app.
|
65
|
+
*/
|
66
|
+
firebase.initializeApp = function(options, name) {};
|
67
|
+
|
68
|
+
/**
|
69
|
+
* Retrieves a Firebase {@link firebase.app.App app} instance.
|
70
|
+
*
|
71
|
+
* When called with no arguments, the default app is returned. When an app name
|
72
|
+
* is provided, the app corresponding to that name is returned.
|
73
|
+
*
|
74
|
+
* An exception is thrown if the app being retrieved has not yet been
|
75
|
+
* initialized.
|
76
|
+
*
|
77
|
+
* @example
|
78
|
+
* // Return the default app
|
79
|
+
* var app = firebase.app();
|
80
|
+
*
|
81
|
+
* @example
|
82
|
+
* // Return a named app
|
83
|
+
* var otherApp = firebase.app("otherApp");
|
84
|
+
*
|
85
|
+
* @namespace
|
86
|
+
* @param {string=} name Optional name of the app to return. If no name is
|
87
|
+
* provided, the default is `"[DEFAULT]"`.
|
88
|
+
*
|
89
|
+
* @return {!firebase.app.App} The app corresponding to the provided app name.
|
90
|
+
* If no app name is provided, the default app is returned.
|
91
|
+
*/
|
92
|
+
firebase.app = function(name) {};
|
93
|
+
|
94
|
+
/**
|
95
|
+
* A (read-only) array of all initialized apps.
|
96
|
+
* @type {!Array<firebase.app.App>}
|
97
|
+
*/
|
98
|
+
firebase.apps;
|
99
|
+
|
100
|
+
/**
|
101
|
+
* The current SDK version.
|
102
|
+
* @type {string}
|
103
|
+
*/
|
104
|
+
firebase.SDK_VERSION;
|
105
|
+
|
106
|
+
/**
|
107
|
+
* A Firebase App holds the initialization information for a collection of
|
108
|
+
* services.
|
109
|
+
*
|
110
|
+
* Do not call this constructor directly. Instead, use
|
111
|
+
* {@link firebase#.initializeApp `firebase.initializeApp()`} to create an app.
|
112
|
+
*
|
113
|
+
* @interface
|
114
|
+
*/
|
115
|
+
firebase.app.App = function() {};
|
116
|
+
|
117
|
+
/**
|
118
|
+
* The (read-only) name for this app.
|
119
|
+
*
|
120
|
+
* The default app's name is `"[DEFAULT]"`.
|
121
|
+
*
|
122
|
+
* @example
|
123
|
+
* // The default app's name is "[DEFAULT]"
|
124
|
+
* firebase.initializeApp(defaultAppConfig);
|
125
|
+
* console.log(firebase.app().name); // "[DEFAULT]"
|
126
|
+
*
|
127
|
+
* @example
|
128
|
+
* // A named app's name is what you provide to initializeApp()
|
129
|
+
* var otherApp = firebase.initializeApp(otherAppConfig, "other");
|
130
|
+
* console.log(otherApp.name); // "other"
|
131
|
+
*
|
132
|
+
* @type {string}
|
133
|
+
*/
|
134
|
+
firebase.app.App.prototype.name;
|
135
|
+
|
136
|
+
/**
|
137
|
+
* The (read-only) configuration options for this app. These are the original
|
138
|
+
* parameters given in
|
139
|
+
* {@link firebase#.initializeApp `firebase.initializeApp()`}.
|
140
|
+
*
|
141
|
+
* @example
|
142
|
+
* var app = firebase.initializeApp(config);
|
143
|
+
* console.log(app.options.credential === config.credential); // true
|
144
|
+
* console.log(app.options.databaseURL === config.databaseURL); // true
|
145
|
+
*
|
146
|
+
* @type {!Object}
|
147
|
+
*/
|
148
|
+
firebase.app.App.prototype.options;
|
149
|
+
|
150
|
+
/**
|
151
|
+
* Renders this app unusable and frees the resources of all associated
|
152
|
+
* services.
|
153
|
+
*
|
154
|
+
* @example
|
155
|
+
* app.delete()
|
156
|
+
* .then(function() {
|
157
|
+
* console.log("App deleted successfully");
|
158
|
+
* })
|
159
|
+
* .catch(function(error) {
|
160
|
+
* console.log("Error deleting app:", error);
|
161
|
+
* });
|
162
|
+
*
|
163
|
+
* @return {!firebase.Promise<void>} An empty promise fulfilled when the app has
|
164
|
+
* been deleted.
|
165
|
+
*/
|
166
|
+
firebase.app.App.prototype.delete = function() {};
|
167
|
+
|
168
|
+
/**
|
169
|
+
* A Thenable is the standard interface returned by a Promise.
|
170
|
+
*
|
171
|
+
* @template T
|
172
|
+
* @interface
|
173
|
+
*/
|
174
|
+
firebase.Thenable = function() {};
|
175
|
+
|
176
|
+
/**
|
177
|
+
* Assign callback functions called when the Thenable value either
|
178
|
+
* resolves, or is rejected.
|
179
|
+
*
|
180
|
+
* @param {(function(T): *)=} onResolve Called when the Thenable resolves.
|
181
|
+
* @param {(function(!Error): *)=} onReject Called when the Thenable is rejected
|
182
|
+
* (with an error).
|
183
|
+
* @return {!firebase.Thenable<*>}
|
184
|
+
*/
|
185
|
+
firebase.Thenable.prototype.then = function(onResolve, onReject) {};
|
186
|
+
|
187
|
+
/**
|
188
|
+
* Assign a callback when the Thenable rejects.
|
189
|
+
*
|
190
|
+
* @param {(function(!Error): *)=} onReject Called when the Thenable is rejected
|
191
|
+
* (with an error).
|
192
|
+
* @return {!firebase.Thenable<*>}
|
193
|
+
*/
|
194
|
+
firebase.Thenable.prototype.catch = function(onReject) {};
|
195
|
+
|
196
|
+
/**
|
197
|
+
* A Promise represents an eventual (asynchronous) value. A Promise should
|
198
|
+
* (eventually) either resolve or reject. When it does, it will call all the
|
199
|
+
* callback functions that have been assigned via the <code>.then()</code> or
|
200
|
+
* <code>.catch()</code> methods.
|
201
|
+
*
|
202
|
+
* <code>firebase.Promise</code> is the same as the native Promise
|
203
|
+
* implementation when available in the current environment, otherwise it is a
|
204
|
+
* compatible implementation of the Promise/A+ spec.
|
205
|
+
*
|
206
|
+
* @template T
|
207
|
+
* @constructor
|
208
|
+
* @implements {firebase.Thenable}
|
209
|
+
* @param {function((function(T): void),
|
210
|
+
* (function(!Error): void))} resolver
|
211
|
+
*/
|
212
|
+
firebase.Promise = function(resolver) {};
|
213
|
+
|
214
|
+
/**
|
215
|
+
* Assign callback functions called when the Promise either resolves, or is
|
216
|
+
* rejected.
|
217
|
+
*
|
218
|
+
* @param {(function(T): *)=} onResolve Called when the Promise resolves.
|
219
|
+
* @param {(function(!Error): *)=} onReject Called when the Promise is rejected
|
220
|
+
* (with an error).
|
221
|
+
* @return {!firebase.Promise<*>}
|
222
|
+
*/
|
223
|
+
firebase.Promise.prototype.then = function(onResolve, onReject) {};
|
224
|
+
|
225
|
+
/**
|
226
|
+
* Assign a callback when the Promise rejects.
|
227
|
+
*
|
228
|
+
* @param {(function(!Error): *)=} onReject Called when the Promise is rejected
|
229
|
+
* (with an error).
|
230
|
+
*/
|
231
|
+
firebase.Promise.prototype.catch = function(onReject) {};
|
232
|
+
|
233
|
+
/**
|
234
|
+
* Return a resolved Promise.
|
235
|
+
*
|
236
|
+
* @template T
|
237
|
+
* @param {T=} value The value to be returned by the Promise.
|
238
|
+
* @return {!firebase.Promise<T>}
|
239
|
+
*/
|
240
|
+
firebase.Promise.resolve = function(value) {};
|
241
|
+
|
242
|
+
/**
|
243
|
+
* Return (an immediately) rejected Promise.
|
244
|
+
*
|
245
|
+
* @param {!Error} error The reason for the Promise being rejected.
|
246
|
+
* @return {!firebase.Promise<*>}
|
247
|
+
*/
|
248
|
+
firebase.Promise.reject = function(error) {};
|
249
|
+
|
250
|
+
/**
|
251
|
+
* Convert an array of Promises, to a single array of values.
|
252
|
+
* <code>Promise.all()</code> resolves only after all the Promises in the array
|
253
|
+
* have resolved.
|
254
|
+
*
|
255
|
+
* <code>Promise.all()</code> rejects when any of the promises in the Array have
|
256
|
+
* rejected.
|
257
|
+
*
|
258
|
+
* @param {!Array<!firebase.Promise<*>>} values
|
259
|
+
* @return {!firebase.Promise<!Array<*>>}
|
260
|
+
*/
|
261
|
+
firebase.Promise.all = function(values) {};
|
@@ -0,0 +1,35 @@
|
|
1
|
+
/*! @license Firebase v3.7.1
|
2
|
+
Build: 3.7.1-rc.1
|
3
|
+
Terms: https://firebase.google.com/terms/ */
|
4
|
+
var firebase = null; (function() { var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},k="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,l=function(){l=function(){};k.Symbol||(k.Symbol=ba)},ca=0,ba=function(a){return"jscomp_symbol_"+(a||"")+ca++},n=function(){l();var a=k.Symbol.iterator;a||(a=k.Symbol.iterator=
|
5
|
+
k.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return m(this)}});n=function(){}},m=function(a){var b=0;return da(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})},da=function(a){n();a={next:a};a[k.Symbol.iterator]=function(){return this};return a},q=this,r=function(){},t=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);
|
6
|
+
if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},v=function(a){return"function"==t(a)},ea=function(a,
|
7
|
+
b,c){return a.call.apply(a.bind,arguments)},fa=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}},w=function(a,b,c){w=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ea:fa;return w.apply(null,arguments)},x=function(a,b){var c=Array.prototype.slice.call(arguments,
|
8
|
+
1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}},y=function(a,b){function c(){}c.prototype=b.prototype;a.ha=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(a,c,h){for(var e=Array(arguments.length-2),d=2;d<arguments.length;d++)e[d-2]=arguments[d];return b.prototype[c].apply(a,e)}};var A;A="undefined"!==typeof window?window:"undefined"!==typeof self?self:global;
|
9
|
+
var __extends=function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,new c)},__assign=Object.assign||function(a){for(var b,c=1,d=arguments.length;c<d;c++){b=arguments[c];for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(a[e]=b[e])}return a},__rest=function(a,b){var c={},d;for(d in a)Object.prototype.hasOwnProperty.call(a,d)&&0>b.indexOf(d)&&(c[d]=a[d]);if(null!=a&&"function"===typeof Object.getOwnPropertySymbols){var e=
|
10
|
+
0;for(d=Object.getOwnPropertySymbols(a);e<d.length;e++)0>b.indexOf(d[e])&&(c[d[e]]=a[d[e]])}return c},__decorate=function(a,b,c,d){var e=arguments.length,h=3>e?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d,g;g=A.Reflect;if("object"===typeof g&&"function"===typeof g.decorate)h=g.decorate(a,b,c,d);else for(var f=a.length-1;0<=f;f--)if(g=a[f])h=(3>e?g(h):3<e?g(b,c,h):g(b,c))||h;return 3<e&&h&&Object.defineProperty(b,c,h),h},__metadata=function(a,b){var c=A.Reflect;if("object"===typeof c&&"function"===
|
11
|
+
typeof c.metadata)return c.metadata(a,b)},__param=function(a,b){return function(c,d){b(c,d,a)}},__awaiter=function(a,b,c,d){return new (c||(c=Promise))(function(e,h){function g(a){try{p(d.next(a))}catch(u){h(u)}}function f(a){try{p(d["throw"](a))}catch(u){h(u)}}function p(a){a.done?e(a.value):(new c(function(b){b(a.value)})).then(g,f)}p((d=d.apply(a,b)).next())})},__generator=function(a,b){function c(a){return function(b){return d([a,b])}}function d(c){if(h)throw new TypeError("Generator is already executing.");
|
12
|
+
for(;e;)try{if(h=1,g&&(f=g[c[0]&2?"return":c[0]?"throw":"next"])&&!(f=f.call(g,c[1])).done)return f;if(g=0,f)c=[0,f.value];switch(c[0]){case 0:case 1:f=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++;g=c[1];c=[0];continue;case 7:c=e.G.pop();e.I.pop();continue;default:if(!(f=e.I,f=0<f.length&&f[f.length-1])&&(6===c[0]||2===c[0])){e=0;continue}if(3===c[0]&&(!f||c[1]>f[0]&&c[1]<f[3]))e.label=c[1];else if(6===c[0]&&e.label<f[1])e.label=f[1],f=c;else if(f&&e.label<f[2])e.label=f[2],
|
13
|
+
e.G.push(c);else{f[2]&&e.G.pop();e.I.pop();continue}}c=b.call(a,e)}catch(z){c=[6,z],g=0}finally{h=f=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}var e={label:0,ga:function(){if(f[0]&1)throw f[1];return f[1]},I:[],G:[]},h,g,f;return{next:c(0),"throw":c(1),"return":c(2)}};
|
14
|
+
"undefined"!==typeof A.S&&A.S||(A.__extends=__extends,A.__assign=__assign,A.__rest=__rest,A.__extends=__extends,A.__decorate=__decorate,A.__metadata=__metadata,A.__param=__param,A.__awaiter=__awaiter,A.__generator=__generator);var B=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,B);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))};y(B,Error);B.prototype.name="CustomError";var ga=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};var C=function(a,b){b.unshift(a);B.call(this,ga.apply(null,b));b.shift()};y(C,B);C.prototype.name="AssertionError";var ha=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),h=d;else a&&(e+=": "+a,h=b);throw new C(""+e,h||[]);},D=function(a,b,c){a||ha("",null,b,Array.prototype.slice.call(arguments,2))},E=function(a,b,c){v(a)||ha("Expected function but got %s: %s.",[t(a),a],b,Array.prototype.slice.call(arguments,2))};var F=function(a,b,c){this.Y=c;this.T=a;this.Z=b;this.s=0;this.o=null};F.prototype.get=function(){var a;0<this.s?(this.s--,a=this.o,this.o=a.next,a.next=null):a=this.T();return a};F.prototype.put=function(a){this.Z(a);this.s<this.Y&&(this.s++,a.next=this.o,this.o=a)};var G;a:{var ia=q.navigator;if(ia){var ja=ia.userAgent;if(ja){G=ja;break a}}G=""};var ka=function(a){q.setTimeout(function(){throw a;},0)},H,la=function(){var a=q.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&-1==G.indexOf("Presto")&&(a=function(){var a=document.createElement("IFRAME");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+
|
15
|
+
"//"+b.location.host,a=w(function(a){if(("*"==d||a.origin==d)&&a.data==c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&&-1==G.indexOf("Trident")&&-1==G.indexOf("MSIE")){var b=new a,c={},d=c;b.port1.onmessage=function(){if(void 0!==c.next){c=c.next;var a=c.J;c.J=null;a()}};return function(a){d.next={J:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in
|
16
|
+
document.createElement("SCRIPT")?function(a){var b=document.createElement("SCRIPT");b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){q.setTimeout(a,0)}};var I=function(){this.v=this.g=null},ma=new F(function(){return new J},function(a){a.reset()},100);I.prototype.add=function(a,b){var c=ma.get();c.set(a,b);this.v?this.v.next=c:(D(!this.g),this.g=c);this.v=c};I.prototype.remove=function(){var a=null;this.g&&(a=this.g,this.g=this.g.next,this.g||(this.v=null),a.next=null);return a};var J=function(){this.next=this.scope=this.B=null};J.prototype.set=function(a,b){this.B=a;this.scope=b;this.next=null};
|
17
|
+
J.prototype.reset=function(){this.next=this.scope=this.B=null};var M=function(a,b){K||na();L||(K(),L=!0);oa.add(a,b)},K,na=function(){if(-1!=String(q.Promise).indexOf("[native code]")){var a=q.Promise.resolve(void 0);K=function(){a.then(pa)}}else K=function(){var a=pa;!v(q.setImmediate)||q.Window&&q.Window.prototype&&-1==G.indexOf("Edge")&&q.Window.prototype.setImmediate==q.setImmediate?(H||(H=la()),H(a)):q.setImmediate(a)}},L=!1,oa=new I,pa=function(){for(var a;a=oa.remove();){try{a.B.call(a.scope)}catch(b){ka(b)}ma.put(a)}L=!1};var O=function(a,b){this.b=0;this.R=void 0;this.j=this.h=this.u=null;this.m=this.A=!1;if(a!=r)try{var c=this;a.call(b,function(a){N(c,2,a)},function(a){try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(e){}N(c,3,a)})}catch(d){N(this,3,d)}},qa=function(){this.next=this.context=this.i=this.f=this.child=null;this.w=!1};qa.prototype.reset=function(){this.context=this.i=this.f=this.child=null;this.w=!1};
|
18
|
+
var ra=new F(function(){return new qa},function(a){a.reset()},100),sa=function(a,b,c){var d=ra.get();d.f=a;d.i=b;d.context=c;return d},ua=function(a,b,c){ta(a,b,c,null)||M(x(b,a))};O.prototype.then=function(a,b,c){null!=a&&E(a,"opt_onFulfilled should be a function.");null!=b&&E(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");return va(this,v(a)?a:null,v(b)?b:null,c)};O.prototype.then=O.prototype.then;O.prototype.$goog_Thenable=!0;
|
19
|
+
O.prototype.ba=function(a,b){return va(this,null,a,b)};var xa=function(a,b){a.h||2!=a.b&&3!=a.b||wa(a);D(null!=b.f);a.j?a.j.next=b:a.h=b;a.j=b},va=function(a,b,c,d){var e=sa(null,null,null);e.child=new O(function(a,g){e.f=b?function(c){try{var e=b.call(d,c);a(e)}catch(z){g(z)}}:a;e.i=c?function(b){try{var e=c.call(d,b);a(e)}catch(z){g(z)}}:g});e.child.u=a;xa(a,e);return e.child};O.prototype.da=function(a){D(1==this.b);this.b=0;N(this,2,a)};
|
20
|
+
O.prototype.ea=function(a){D(1==this.b);this.b=0;N(this,3,a)};
|
21
|
+
var N=function(a,b,c){0==a.b&&(a===c&&(b=3,c=new TypeError("Promise cannot resolve to itself")),a.b=1,ta(c,a.da,a.ea,a)||(a.R=c,a.b=b,a.u=null,wa(a),3!=b||ya(a,c)))},ta=function(a,b,c,d){if(a instanceof O)return null!=b&&E(b,"opt_onFulfilled should be a function."),null!=c&&E(c,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?"),xa(a,sa(b||r,c||null,d)),!0;var e;if(a)try{e=!!a.$goog_Thenable}catch(g){e=!1}else e=!1;if(e)return a.then(b,c,d),
|
22
|
+
!0;e=typeof a;if("object"==e&&null!=a||"function"==e)try{var h=a.then;if(v(h))return za(a,h,b,c,d),!0}catch(g){return c.call(d,g),!0}return!1},za=function(a,b,c,d,e){var h=!1,g=function(a){h||(h=!0,c.call(e,a))},f=function(a){h||(h=!0,d.call(e,a))};try{b.call(a,g,f)}catch(p){f(p)}},wa=function(a){a.A||(a.A=!0,M(a.V,a))},Aa=function(a){var b=null;a.h&&(b=a.h,a.h=b.next,b.next=null);a.h||(a.j=null);null!=b&&D(null!=b.f);return b};
|
23
|
+
O.prototype.V=function(){for(var a;a=Aa(this);){var b=this.b,c=this.R;if(3==b&&a.i&&!a.w){var d;for(d=this;d&&d.m;d=d.u)d.m=!1}if(a.child)a.child.u=null,Ba(a,b,c);else try{a.w?a.f.call(a.context):Ba(a,b,c)}catch(e){Ca.call(null,e)}ra.put(a)}this.A=!1};var Ba=function(a,b,c){2==b?a.f.call(a.context,c):a.i&&a.i.call(a.context,c)},ya=function(a,b){a.m=!0;M(function(){a.m&&Ca.call(null,b)})},Ca=ka;function P(a,b){if(!(b instanceof Object))return b;switch(b.constructor){case Date:return new Date(b.getTime());case Object:void 0===a&&(a={});break;case Array:a=[];break;default:return b}for(var c in b)b.hasOwnProperty(c)&&(a[c]=P(a[c],b[c]));return a};O.all=function(a){return new O(function(b,c){var d=a.length,e=[];if(d)for(var h=function(a,c){d--;e[a]=c;0==d&&b(e)},g=function(a){c(a)},f=0,p;f<a.length;f++)p=a[f],ua(p,x(h,f),g);else b(e)})};O.resolve=function(a){if(a instanceof O)return a;var b=new O(r);N(b,2,a);return b};O.reject=function(a){return new O(function(b,c){c(a)})};O.prototype["catch"]=O.prototype.ba;var Q=O;"undefined"!==typeof Promise&&(Q=Promise);var Da=Q;function Ea(a,b){a=new R(a,b);return a.subscribe.bind(a)}var R=function(a,b){var c=this;this.a=[];this.P=0;this.task=Da.resolve();this.l=!1;this.F=b;this.task.then(function(){a(c)}).catch(function(a){c.error(a)})};R.prototype.next=function(a){S(this,function(b){b.next(a)})};R.prototype.error=function(a){S(this,function(b){b.error(a)});this.close(a)};R.prototype.complete=function(){S(this,function(a){a.complete()});this.close()};
|
24
|
+
R.prototype.subscribe=function(a,b,c){var d=this,e;if(void 0===a&&void 0===b&&void 0===c)throw Error("Missing Observer.");e=Fa(a)?a:{next:a,error:b,complete:c};void 0===e.next&&(e.next=T);void 0===e.error&&(e.error=T);void 0===e.complete&&(e.complete=T);a=this.fa.bind(this,this.a.length);this.l&&this.task.then(function(){try{d.K?e.error(d.K):e.complete()}catch(h){}});this.a.push(e);return a};
|
25
|
+
R.prototype.fa=function(a){void 0!==this.a&&void 0!==this.a[a]&&(delete this.a[a],--this.P,0===this.P&&void 0!==this.F&&this.F(this))};var S=function(a,b){if(!a.l)for(var c=0;c<a.a.length;c++)Ga(a,c,b)},Ga=function(a,b,c){a.task.then(function(){if(void 0!==a.a&&void 0!==a.a[b])try{c(a.a[b])}catch(d){"undefined"!==typeof console&&console.error&&console.error(d)}})};R.prototype.close=function(a){var b=this;this.l||(this.l=!0,void 0!==a&&(this.K=a),this.task.then(function(){b.a=void 0;b.F=void 0}))};
|
26
|
+
function Fa(a){if("object"!==typeof a||null===a)return!1;var b;b=["next","error","complete"];n();var c=b[Symbol.iterator];b=c?c.call(b):m(b);for(c=b.next();!c.done;c=b.next())if(c=c.value,c in a&&"function"===typeof a[c])return!0;return!1}function T(){};var Ha=Error.captureStackTrace,V=function(a,b){this.code=a;this.message=b;if(Ha)Ha(this,U.prototype.create);else{var c=Error.apply(this,arguments);this.name="FirebaseError";Object.defineProperty(this,"stack",{get:function(){return c.stack}})}};V.prototype=Object.create(Error.prototype);V.prototype.constructor=V;V.prototype.name="FirebaseError";var U=function(a,b,c){this.$=a;this.aa=b;this.U=c;this.pattern=/\{\$([^}]+)}/g};
|
27
|
+
U.prototype.create=function(a,b){void 0===b&&(b={});var c=this.U[a];a=this.$+"/"+a;var c=void 0===c?"Error":c.replace(this.pattern,function(a,c){a=b[c];return void 0!==a?a.toString():"<"+c+"?>"}),c=this.aa+": "+c+" ("+a+").",c=new V(a,c),d;for(d in b)b.hasOwnProperty(d)&&"_"!==d.slice(-1)&&(c[d]=b[d]);return c};var W=Q,X=function(a,b,c){var d=this;this.M=c;this.N=!1;this.c={};this.D=b;this.H=P(void 0,a);a="serviceAccount"in this.H;("credential"in this.H||a)&&"undefined"!==typeof console&&console.log("The '"+(a?"serviceAccount":"credential")+"' property specified in the first argument to initializeApp() is deprecated and will be removed in the next major version. You should instead use the 'firebase-admin' package. See https://firebase.google.com/docs/admin/setup for details on how to get started.");Object.keys(c.INTERNAL.factories).forEach(function(a){var b=
|
28
|
+
c.INTERNAL.useAsService(d,a);null!==b&&(b=d.X.bind(d,b),d[a]=b)})};X.prototype.delete=function(){var a=this;return(new W(function(b){Y(a);b()})).then(function(){a.M.INTERNAL.removeApp(a.D);var b=[];Object.keys(a.c).forEach(function(c){Object.keys(a.c[c]).forEach(function(d){b.push(a.c[c][d])})});return W.all(b.map(function(a){return a.INTERNAL.delete()}))}).then(function(){a.N=!0;a.c={}})};
|
29
|
+
X.prototype.X=function(a,b){Y(this);"undefined"===typeof this.c[a]&&(this.c[a]={});var c=b||"[DEFAULT]";return"undefined"===typeof this.c[a][c]?(b=this.M.INTERNAL.factories[a](this,this.W.bind(this),b),this.c[a][c]=b):this.c[a][c]};X.prototype.W=function(a){P(this,a)};var Y=function(a){a.N&&Z("app-deleted",{name:a.D})};k.Object.defineProperties(X.prototype,{name:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.D}},options:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.H}}});
|
30
|
+
X.prototype.name&&X.prototype.options||X.prototype.delete||console.log("dc");
|
31
|
+
function Ia(){function a(a){a=a||"[DEFAULT]";var b=d[a];void 0===b&&Z("no-app",{name:a});return b}function b(a,b){Object.keys(e).forEach(function(d){d=c(a,d);if(null!==d&&h[d])h[d](b,a)})}function c(a,b){if("serverAuth"===b)return null;var c=b;a=a.options;"auth"===b&&(a.serviceAccount||a.credential)&&(c="serverAuth","serverAuth"in e||Z("sa-not-supported"));return c}var d={},e={},h={},g={__esModule:!0,initializeApp:function(a,c){void 0===c?c="[DEFAULT]":"string"===typeof c&&""!==c||Z("bad-app-name",
|
32
|
+
{name:c+""});void 0!==d[c]&&Z("duplicate-app",{name:c});a=new X(a,c,g);d[c]=a;b(a,"create");void 0!=a.INTERNAL&&void 0!=a.INTERNAL.getToken||P(a,{INTERNAL:{getUid:function(){return null},getToken:function(){return W.resolve(null)},addAuthTokenListener:function(){},removeAuthTokenListener:function(){}}});return a},app:a,apps:null,Promise:W,SDK_VERSION:"0.0.0",INTERNAL:{registerService:function(b,c,d,u){e[b]&&Z("duplicate-service",{name:b});e[b]=c;u&&(h[b]=u);c=function(c){void 0===c&&(c=a());return c[b]()};
|
33
|
+
void 0!==d&&P(c,d);return g[b]=c},createFirebaseNamespace:Ia,extendNamespace:function(a){P(g,a)},createSubscribe:Ea,ErrorFactory:U,removeApp:function(a){b(d[a],"delete");delete d[a]},factories:e,useAsService:c,Promise:O,deepExtend:P}};g["default"]=g;Object.defineProperty(g,"apps",{get:function(){return Object.keys(d).map(function(a){return d[a]})}});a.App=X;return g}function Z(a,b){throw Ja.create(a,b);}
|
34
|
+
var Ja=new U("app","Firebase",{"no-app":"No Firebase App '{$name}' has been created - call Firebase App.initializeApp()","bad-app-name":"Illegal App name: '{$name}","duplicate-app":"Firebase App named '{$name}' already exists","app-deleted":"Firebase App named '{$name}' already deleted","duplicate-service":"Firebase service named '{$name}' already registered","sa-not-supported":"Initializing the Firebase SDK with a service account is only allowed in a Node.js environment. On client devices, you should instead initialize the SDK with an api key and auth domain"});"undefined"!==typeof firebase&&(firebase=Ia()); }).call(this);
|
35
|
+
firebase.SDK_VERSION = "3.7.1";
|
@@ -0,0 +1,1300 @@
|
|
1
|
+
/**
|
2
|
+
* @fileoverview Firebase Auth API.
|
3
|
+
* Version: 3.7.1
|
4
|
+
*
|
5
|
+
* Copyright 2017 Google Inc. All Rights Reserved.
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
*
|
19
|
+
* @externs
|
20
|
+
*/
|
21
|
+
|
22
|
+
/**
|
23
|
+
* Gets the {@link firebase.auth.Auth `Auth`} service for the default app or a
|
24
|
+
* given app.
|
25
|
+
*
|
26
|
+
* `firebase.auth()` can be called with no arguments to access the default app's
|
27
|
+
* {@link firebase.auth.Auth `Auth`} service or as `firebase.auth(app)` to
|
28
|
+
* access the {@link firebase.auth.Auth `Auth`} service associated with a
|
29
|
+
* specific app.
|
30
|
+
*
|
31
|
+
* @example
|
32
|
+
* // Get the Auth service for the default app
|
33
|
+
* var defaultAuth = firebase.auth();
|
34
|
+
*
|
35
|
+
* @example
|
36
|
+
* // Get the Auth service for a given app
|
37
|
+
* var otherAuth = firebase.auth(otherApp);
|
38
|
+
*
|
39
|
+
* @namespace
|
40
|
+
* @param {!firebase.app.App=} app
|
41
|
+
*
|
42
|
+
* @return {!firebase.auth.Auth}
|
43
|
+
*/
|
44
|
+
firebase.auth = function(app) {};
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Interface that represents the credentials returned by an auth provider.
|
48
|
+
* Implementations specify the details about each auth provider's credential
|
49
|
+
* requirements.
|
50
|
+
*
|
51
|
+
* @interface
|
52
|
+
*/
|
53
|
+
firebase.auth.AuthCredential = function() {};
|
54
|
+
|
55
|
+
/**
|
56
|
+
* The authentication provider ID for the credential.
|
57
|
+
* For example, 'facebook.com', or 'google.com'.
|
58
|
+
*
|
59
|
+
* @type {string}
|
60
|
+
*/
|
61
|
+
firebase.auth.AuthCredential.prototype.provider;
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Gets the {@link firebase.auth.Auth `Auth`} service for the current app.
|
65
|
+
*
|
66
|
+
* @example
|
67
|
+
* var auth = app.auth();
|
68
|
+
* // The above is shorthand for:
|
69
|
+
* // var auth = firebase.auth(app);
|
70
|
+
*
|
71
|
+
* @return {!firebase.auth.Auth}
|
72
|
+
*/
|
73
|
+
firebase.app.App.prototype.auth = function() {};
|
74
|
+
|
75
|
+
/**
|
76
|
+
* User profile information, visible only to the Firebase project's
|
77
|
+
* apps.
|
78
|
+
*
|
79
|
+
* @interface
|
80
|
+
*/
|
81
|
+
firebase.UserInfo = function() {};
|
82
|
+
|
83
|
+
/**
|
84
|
+
* The user's unique ID.
|
85
|
+
*
|
86
|
+
* @type {string}
|
87
|
+
*/
|
88
|
+
firebase.UserInfo.prototype.uid;
|
89
|
+
|
90
|
+
/**
|
91
|
+
* The authentication provider ID for the current user.
|
92
|
+
* For example, 'facebook.com', or 'google.com'.
|
93
|
+
*
|
94
|
+
* @type {string}
|
95
|
+
*/
|
96
|
+
firebase.UserInfo.prototype.providerId;
|
97
|
+
|
98
|
+
/**
|
99
|
+
* The user's email address (if available).
|
100
|
+
* @type {?string}
|
101
|
+
*/
|
102
|
+
firebase.UserInfo.prototype.email;
|
103
|
+
|
104
|
+
/**
|
105
|
+
* The user's display name (if available).
|
106
|
+
*
|
107
|
+
* @type {?string}
|
108
|
+
*/
|
109
|
+
firebase.UserInfo.prototype.displayName;
|
110
|
+
|
111
|
+
/**
|
112
|
+
* The URL of the user's profile picture (if available).
|
113
|
+
*
|
114
|
+
* @type {?string}
|
115
|
+
*/
|
116
|
+
firebase.UserInfo.prototype.photoURL;
|
117
|
+
|
118
|
+
/**
|
119
|
+
* A user account.
|
120
|
+
*
|
121
|
+
* @interface
|
122
|
+
* @extends {firebase.UserInfo}
|
123
|
+
*/
|
124
|
+
firebase.User;
|
125
|
+
|
126
|
+
/** @type {boolean} */
|
127
|
+
firebase.User.prototype.isAnonymous;
|
128
|
+
|
129
|
+
/**
|
130
|
+
* True if the user's email address has been verified.
|
131
|
+
* @type {boolean}
|
132
|
+
*/
|
133
|
+
firebase.User.prototype.emailVerified;
|
134
|
+
|
135
|
+
/**
|
136
|
+
* Additional provider-specific information about the user.
|
137
|
+
* @type {!Array<firebase.UserInfo>}
|
138
|
+
*/
|
139
|
+
firebase.User.prototype.providerData;
|
140
|
+
|
141
|
+
/**
|
142
|
+
* A refresh token for the user account. Use only for advanced scenarios that
|
143
|
+
* require explicitly refreshing tokens.
|
144
|
+
* @type {string}
|
145
|
+
*/
|
146
|
+
firebase.User.prototype.refreshToken;
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Returns a JWT token used to identify the user to a Firebase service.
|
150
|
+
*
|
151
|
+
* Returns the current token if it has not expired, otherwise this will
|
152
|
+
* refresh the token and return a new one.
|
153
|
+
*
|
154
|
+
* @param {boolean=} forceRefresh Force refresh regardless of token
|
155
|
+
* expiration.
|
156
|
+
* @return {!firebase.Promise<string>}
|
157
|
+
*/
|
158
|
+
firebase.User.prototype.getToken = function(forceRefresh) {};
|
159
|
+
|
160
|
+
/**
|
161
|
+
* Refreshes the current user, if signed in.
|
162
|
+
*
|
163
|
+
* @return {!firebase.Promise<void>}
|
164
|
+
*/
|
165
|
+
firebase.User.prototype.reload = function() {};
|
166
|
+
|
167
|
+
/**
|
168
|
+
* Sends a verification email to a user.
|
169
|
+
*
|
170
|
+
* The verification process is completed by calling
|
171
|
+
* {@link firebase.auth.Auth#applyActionCode}
|
172
|
+
*
|
173
|
+
* @return {!firebase.Promise<void>}
|
174
|
+
*/
|
175
|
+
firebase.User.prototype.sendEmailVerification = function() {};
|
176
|
+
|
177
|
+
|
178
|
+
/**
|
179
|
+
* Links the user account with the given credentials.
|
180
|
+
*
|
181
|
+
* <h4>Error Codes</h4>
|
182
|
+
* <dl>
|
183
|
+
* <dt>auth/provider-already-linked</dt>
|
184
|
+
* <dd>Thrown if the provider has already been linked to the user. This error is
|
185
|
+
* thrown even if this is not the same provider's account that is currently
|
186
|
+
* linked to the user.</dd>
|
187
|
+
* <dt>auth/invalid-credential</dt>
|
188
|
+
* <dd>Thrown if the provider's credential is not valid. This can happen if it
|
189
|
+
* has already expired when calling link, or if it used invalid token(s).
|
190
|
+
* Please refer to the Guide, under the provider's section you tried to
|
191
|
+
* link, and make sure you pass in the correct parameter to the credential
|
192
|
+
* method.</dd>
|
193
|
+
* <dt>auth/credential-already-in-use</dt>
|
194
|
+
* <dd>Thrown if the account corresponding to the credential already exists
|
195
|
+
* among your users, or is already linked to a Firebase User.
|
196
|
+
* For example, this error could be thrown if you are upgrading an anonymous
|
197
|
+
* user to a Google user by linking a Google credential to it and the Google
|
198
|
+
* credential used is already associated with an existing Firebase Google
|
199
|
+
* user.
|
200
|
+
* An <code>error.email</code> and <code>error.credential</code>
|
201
|
+
* ({@link firebase.auth.AuthCredential}) fields are also provided. You can
|
202
|
+
* recover from this error by signing in with that credential directly via
|
203
|
+
* {@link firebase.auth.Auth#signInWithCredential}.</dd>
|
204
|
+
* <dt>auth/email-already-in-use</dt>
|
205
|
+
* <dd>Thrown if the email corresponding to the credential already exists
|
206
|
+
* among your users. When thrown while linking a credential to an existing
|
207
|
+
* user, an <code>error.email</code> and <code>error.credential</code>
|
208
|
+
* ({@link firebase.auth.AuthCredential}) fields are also provided.
|
209
|
+
* You have to link the credential to the existing user with that email if
|
210
|
+
* you wish to continue signing in with that credential. To do so, call
|
211
|
+
* {@link firebase.auth.Auth#fetchProvidersForEmail}, sign in to
|
212
|
+
* <code>error.email</code> via one of the providers returned and then
|
213
|
+
* {@link firebase.User#link} the original credential to that newly signed
|
214
|
+
* in user.</dd>
|
215
|
+
* <dt>auth/operation-not-allowed</dt>
|
216
|
+
* <dd>Thrown if you have not enabled the provider in the Firebase Console. Go
|
217
|
+
* to the Firebase Console for your project, in the Auth section and the
|
218
|
+
* <strong>Sign in Method</strong> tab and configure the provider.</dd>
|
219
|
+
* <dt>auth/invalid-email</dt>
|
220
|
+
* <dd>Thrown if the email used in a
|
221
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is invalid.</dd>
|
222
|
+
* <dt>auth/wrong-password</dt>
|
223
|
+
* <dd>Thrown if the password used in a
|
224
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is not correct or when
|
225
|
+
* the user associated with the email does not have a password.</dd>
|
226
|
+
* </dl>
|
227
|
+
*
|
228
|
+
* @param {!firebase.auth.AuthCredential} credential The auth credential.
|
229
|
+
* @return {!firebase.Promise<!firebase.User>}
|
230
|
+
*/
|
231
|
+
firebase.User.prototype.link = function(credential) {};
|
232
|
+
|
233
|
+
|
234
|
+
/**
|
235
|
+
* Unlinks a provider from a user account.
|
236
|
+
*
|
237
|
+
* <h4>Error Codes</h4>
|
238
|
+
* <dl>
|
239
|
+
* <dt>auth/no-such-provider</dt>
|
240
|
+
* <dd>Thrown if the user does not have this provider linked or when the
|
241
|
+
* provider ID given does not exist.</dd>
|
242
|
+
* </dt>
|
243
|
+
*
|
244
|
+
* @param {string} providerId
|
245
|
+
* @return {!firebase.Promise<!firebase.User>}
|
246
|
+
*/
|
247
|
+
firebase.User.prototype.unlink = function(providerId) {};
|
248
|
+
|
249
|
+
|
250
|
+
/**
|
251
|
+
* Re-authenticates a user using a fresh credential. Use before operations
|
252
|
+
* such as {@link firebase.User#updatePassword} that require tokens from recent
|
253
|
+
* sign-in attempts.
|
254
|
+
*
|
255
|
+
* <h4>Error Codes</h4>
|
256
|
+
* <dl>
|
257
|
+
* <dt>auth/user-mismatch</dt>
|
258
|
+
* <dd>Thrown if the credential given does not correspond to the user.</dd>
|
259
|
+
* <dt>auth/user-not-found</dt>
|
260
|
+
* <dd>Thrown if the credential given does not correspond to any existing user.
|
261
|
+
* </dd>
|
262
|
+
* <dt>auth/invalid-credential</dt>
|
263
|
+
* <dd>Thrown if the provider's credential is not valid. This can happen if it
|
264
|
+
* has already expired when calling link, or if it used invalid token(s).
|
265
|
+
* Please refer to the Guide, under the provider's section you tried to
|
266
|
+
* link, and make sure you pass in the correct parameter to the credential
|
267
|
+
* method.</dd>
|
268
|
+
* <dt>auth/invalid-email</dt>
|
269
|
+
* <dd>Thrown if the email used in a
|
270
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is invalid.</dd>
|
271
|
+
* <dt>auth/wrong-password</dt>
|
272
|
+
* <dd>Thrown if the password used in a
|
273
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is not correct or when
|
274
|
+
* the user associated with the email does not have a password.</dd>
|
275
|
+
* </dl>
|
276
|
+
*
|
277
|
+
* @param {!firebase.auth.AuthCredential} credential
|
278
|
+
* @return {!firebase.Promise<void>}
|
279
|
+
*/
|
280
|
+
firebase.User.prototype.reauthenticate = function(credential) {};
|
281
|
+
|
282
|
+
|
283
|
+
/**
|
284
|
+
* Updates the user's email address.
|
285
|
+
*
|
286
|
+
* An email will be sent to the original email address (if it was set) that
|
287
|
+
* allows to revoke the email address change, in order to protect them from
|
288
|
+
* account hijacking.
|
289
|
+
*
|
290
|
+
* <b>Important:</b> this is a security sensitive operation that requires the
|
291
|
+
* user to have recently signed in. If this requirement isn't met, ask the user
|
292
|
+
* to authenticate again and then call {@link firebase.User#reauthenticate}.
|
293
|
+
*
|
294
|
+
* <h4>Error Codes</h4>
|
295
|
+
* <dl>
|
296
|
+
* <dt>auth/invalid-email</dt>
|
297
|
+
* <dd>Thrown if the email used is invalid.</dd>
|
298
|
+
* <dt>auth/email-already-in-use</dt>
|
299
|
+
* <dd>Thrown if the email is already used by another user.</dd>
|
300
|
+
* <dt>auth/requires-recent-login</dt>
|
301
|
+
* <dd>Thrown if the user's last sign-in time does not meet the security
|
302
|
+
* threshold. Use {@link firebase.User#reauthenticate} to resolve. This does
|
303
|
+
* not apply if the user is anonymous.</dd>
|
304
|
+
* </dl>
|
305
|
+
*
|
306
|
+
* @param {string} newEmail The new email address.
|
307
|
+
* @return {!firebase.Promise<void>}
|
308
|
+
*/
|
309
|
+
firebase.User.prototype.updateEmail = function(newEmail) {};
|
310
|
+
|
311
|
+
|
312
|
+
/**
|
313
|
+
* Updates the user's password.
|
314
|
+
*
|
315
|
+
* <b>Important:</b> this is a security sensitive operation that requires the
|
316
|
+
* user to have recently signed in. If this requirement isn't met, ask the user
|
317
|
+
* to authenticate again and then call {@link firebase.User#reauthenticate}.
|
318
|
+
*
|
319
|
+
* <h4>Error Codes</h4>
|
320
|
+
* <dl>
|
321
|
+
* <dt>auth/weak-password</dt>
|
322
|
+
* <dd>Thrown if the password is not strong enough.</dd>
|
323
|
+
* <dt>auth/requires-recent-login</dt>
|
324
|
+
* <dd>Thrown if the user's last sign-in time does not meet the security
|
325
|
+
* threshold. Use {@link firebase.User#reauthenticate} to resolve. This does
|
326
|
+
* not apply if the user is anonymous.</dd>
|
327
|
+
* </dl>
|
328
|
+
*
|
329
|
+
* @param {string} newPassword
|
330
|
+
* @return {!firebase.Promise<void>}
|
331
|
+
*/
|
332
|
+
firebase.User.prototype.updatePassword = function(newPassword) {};
|
333
|
+
|
334
|
+
|
335
|
+
/**
|
336
|
+
* Updates a user's profile data.
|
337
|
+
*
|
338
|
+
* @example
|
339
|
+
* // Updates the user attributes:
|
340
|
+
* user.updateProfile({
|
341
|
+
* displayName: "Jane Q. User",
|
342
|
+
* photoURL: "https://example.com/jane-q-user/profile.jpg"
|
343
|
+
* }).then(function() {
|
344
|
+
* // Profile updated successfully!
|
345
|
+
* // "Jane Q. User"
|
346
|
+
* var displayName = user.displayName;
|
347
|
+
* // "https://example.com/jane-q-user/profile.jpg"
|
348
|
+
* var photoURL = user.photoURL;
|
349
|
+
* }, function(error) {
|
350
|
+
* // An error happened.
|
351
|
+
* });
|
352
|
+
*
|
353
|
+
* // Passing a null value will delete the current attribute's value, but not
|
354
|
+
* // passing a property won't change the current attribute's value:
|
355
|
+
* // Let's say we're using the same user than before, after the update.
|
356
|
+
* user.updateProfile({photoURL: null}).then(function() {
|
357
|
+
* // Profile updated successfully!
|
358
|
+
* // "Jane Q. User", hasn't changed.
|
359
|
+
* var displayName = user.displayName;
|
360
|
+
* // Now, this is null.
|
361
|
+
* var photoURL = user.photoURL;
|
362
|
+
* }, function(error) {
|
363
|
+
* // An error happened.
|
364
|
+
* });
|
365
|
+
*
|
366
|
+
* @param {!{displayName: ?string, photoURL: ?string}} profile The profile's
|
367
|
+
* displayName and photoURL to update.
|
368
|
+
* @return {!firebase.Promise<void>}
|
369
|
+
*/
|
370
|
+
firebase.User.prototype.updateProfile = function(profile) {};
|
371
|
+
|
372
|
+
|
373
|
+
/**
|
374
|
+
* Deletes and signs out the user.
|
375
|
+
*
|
376
|
+
* <b>Important:</b> this is a security sensitive operation that requires the
|
377
|
+
* user to have recently signed in. If this requirement isn't met, ask the user
|
378
|
+
* to authenticate again and then call {@link firebase.User#reauthenticate}.
|
379
|
+
*
|
380
|
+
* <h4>Error Codes</h4>
|
381
|
+
* <dl>
|
382
|
+
* <dt>auth/requires-recent-login</dt>
|
383
|
+
* <dd>Thrown if the user's last sign-in time does not meet the security
|
384
|
+
* threshold. Use {@link firebase.User#reauthenticate} to resolve. This does
|
385
|
+
* not apply if the user is anonymous.</dd>
|
386
|
+
* </dl>
|
387
|
+
*
|
388
|
+
* @return {!firebase.Promise<void>}
|
389
|
+
*/
|
390
|
+
firebase.User.prototype.delete = function() {};
|
391
|
+
|
392
|
+
|
393
|
+
/**
|
394
|
+
* Returns a JSON-serializable representation of this object.
|
395
|
+
*
|
396
|
+
* @return {!Object} A JSON-serializable representation of this object.
|
397
|
+
*/
|
398
|
+
firebase.User.prototype.toJSON = function() {};
|
399
|
+
|
400
|
+
|
401
|
+
/**
|
402
|
+
* Checks a password reset code sent to the user by email or other out-of-band
|
403
|
+
* mechanism.
|
404
|
+
*
|
405
|
+
* Returns the user's email address if valid.
|
406
|
+
*
|
407
|
+
* <h4>Error Codes</h4>
|
408
|
+
* <dl>
|
409
|
+
* <dt>auth/expired-action-code</dt>
|
410
|
+
* <dd>Thrown if the password reset code has expired.</dd>
|
411
|
+
* <dt>auth/invalid-action-code</dt>
|
412
|
+
* <dd>Thrown if the password reset code is invalid. This can happen if the code
|
413
|
+
* is malformed or has already been used.</dd>
|
414
|
+
* <dt>auth/user-disabled</dt>
|
415
|
+
* <dd>Thrown if the user corresponding to the given password reset code has
|
416
|
+
* been disabled.</dd>
|
417
|
+
* <dt>auth/user-not-found</dt>
|
418
|
+
* <dd>Thrown if there is no user corresponding to the password reset code. This
|
419
|
+
* may have happened if the user was deleted between when the code was
|
420
|
+
* issued and when this method was called.</dd>
|
421
|
+
* </dl>
|
422
|
+
*
|
423
|
+
* @param {string} code A verification code sent to the user.
|
424
|
+
* @return {!firebase.Promise<string>}
|
425
|
+
*/
|
426
|
+
firebase.auth.Auth.prototype.verifyPasswordResetCode = function(code) {};
|
427
|
+
|
428
|
+
|
429
|
+
/**
|
430
|
+
* A response from {@link firebase.auth.Auth#checkActionCode}.
|
431
|
+
*
|
432
|
+
* @interface
|
433
|
+
*/
|
434
|
+
firebase.auth.ActionCodeInfo = function() {};
|
435
|
+
|
436
|
+
|
437
|
+
/**
|
438
|
+
* The email address associated with the action code.
|
439
|
+
*
|
440
|
+
* @typedef {{
|
441
|
+
* email: string
|
442
|
+
* }}
|
443
|
+
*/
|
444
|
+
firebase.auth.ActionCodeInfo.prototype.data;
|
445
|
+
|
446
|
+
|
447
|
+
/**
|
448
|
+
* Checks a verification code sent to the user by email or other out-of-band
|
449
|
+
* mechanism.
|
450
|
+
*
|
451
|
+
* Returns metadata about the code.
|
452
|
+
*
|
453
|
+
* <h4>Error Codes</h4>
|
454
|
+
* <dl>
|
455
|
+
* <dt>auth/expired-action-code</dt>
|
456
|
+
* <dd>Thrown if the action code has expired.</dd>
|
457
|
+
* <dt>auth/invalid-action-code</dt>
|
458
|
+
* <dd>Thrown if the action code is invalid. This can happen if the code is
|
459
|
+
* malformed or has already been used.</dd>
|
460
|
+
* <dt>auth/user-disabled</dt>
|
461
|
+
* <dd>Thrown if the user corresponding to the given action code has been
|
462
|
+
* disabled.</dd>
|
463
|
+
* <dt>auth/user-not-found</dt>
|
464
|
+
* <dd>Thrown if there is no user corresponding to the action code. This may
|
465
|
+
* have happened if the user was deleted between when the action code was
|
466
|
+
* issued and when this method was called.</dd>
|
467
|
+
* </dl>
|
468
|
+
*
|
469
|
+
* @param {string} code A verification code sent to the user.
|
470
|
+
* @return {!firebase.Promise<!firebase.auth.ActionCodeInfo>}
|
471
|
+
*/
|
472
|
+
firebase.auth.Auth.prototype.checkActionCode = function(code) {};
|
473
|
+
|
474
|
+
|
475
|
+
/**
|
476
|
+
* Applies a verification code sent to the user by email or other out-of-band
|
477
|
+
* mechanism.
|
478
|
+
*
|
479
|
+
* <h4>Error Codes</h4>
|
480
|
+
* <dl>
|
481
|
+
* <dt>auth/expired-action-code</dt>
|
482
|
+
* <dd>Thrown if the action code has expired.</dd>
|
483
|
+
* <dt>auth/invalid-action-code</dt>
|
484
|
+
* <dd>Thrown if the action code is invalid. This can happen if the code is
|
485
|
+
* malformed or has already been used.</dd>
|
486
|
+
* <dt>auth/user-disabled</dt>
|
487
|
+
* <dd>Thrown if the user corresponding to the given action code has been
|
488
|
+
* disabled.</dd>
|
489
|
+
* <dt>auth/user-not-found</dt>
|
490
|
+
* <dd>Thrown if there is no user corresponding to the action code. This may
|
491
|
+
* have happened if the user was deleted between when the action code was
|
492
|
+
* issued and when this method was called.</dd>
|
493
|
+
* </dl>
|
494
|
+
*
|
495
|
+
* @param {string} code A verification code sent to the user.
|
496
|
+
* @return {!firebase.Promise<void>}
|
497
|
+
*/
|
498
|
+
firebase.auth.Auth.prototype.applyActionCode = function(code) {};
|
499
|
+
|
500
|
+
/**
|
501
|
+
* The Firebase Auth service interface.
|
502
|
+
*
|
503
|
+
* Do not call this constructor directly. Instead, use
|
504
|
+
* {@link firebase.auth `firebase.auth()`}.
|
505
|
+
*
|
506
|
+
* See
|
507
|
+
* {@link https://firebase.google.com/docs/auth/ Firebase Authentication}
|
508
|
+
* for a full guide on how to use the Firebase Auth service.
|
509
|
+
*
|
510
|
+
* @interface
|
511
|
+
*/
|
512
|
+
firebase.auth.Auth = function() {};
|
513
|
+
|
514
|
+
/**
|
515
|
+
* The {@link firebase.app.App app} associated with the `Auth` service
|
516
|
+
* instance.
|
517
|
+
*
|
518
|
+
* @example
|
519
|
+
* var app = auth.app;
|
520
|
+
*
|
521
|
+
* @type {!firebase.app.App}
|
522
|
+
*/
|
523
|
+
firebase.auth.Auth.prototype.app;
|
524
|
+
|
525
|
+
/**
|
526
|
+
* The currently signed-in user (or null).
|
527
|
+
*
|
528
|
+
* @type {firebase.User|null}
|
529
|
+
*/
|
530
|
+
firebase.auth.Auth.prototype.currentUser;
|
531
|
+
|
532
|
+
/**
|
533
|
+
* Creates a new user account associated with the specified email address and
|
534
|
+
* password.
|
535
|
+
*
|
536
|
+
* On successful creation of the user account, this user will also be
|
537
|
+
* signed in to your application.
|
538
|
+
*
|
539
|
+
* User account creation can fail if the account already exists or the password
|
540
|
+
* is invalid.
|
541
|
+
*
|
542
|
+
* Note: The email address acts as a unique identifier for the user and
|
543
|
+
* enables an email-based password reset. This function will create
|
544
|
+
* a new user account and set the initial user password.
|
545
|
+
*
|
546
|
+
* <h4>Error Codes</h4>
|
547
|
+
* <dl>
|
548
|
+
* <dt>auth/email-already-in-use</dt>
|
549
|
+
* <dd>Thrown if there already exists an account with the given email
|
550
|
+
* address.</dd>
|
551
|
+
* <dt>auth/invalid-email</dt>
|
552
|
+
* <dd>Thrown if the email address is not valid.</dd>
|
553
|
+
* <dt>auth/operation-not-allowed</dt>
|
554
|
+
* <dd>Thrown if email/password accounts are not enabled. Enable email/password
|
555
|
+
* accounts in the Firebase Console, under the Auth tab.</dd>
|
556
|
+
* <dt>auth/weak-password</dt>
|
557
|
+
* <dd>Thrown if the password is not strong enough.</dd>
|
558
|
+
* </dl>
|
559
|
+
*
|
560
|
+
* @example
|
561
|
+
* firebase.auth().createUserWithEmailAndPassword(email, password)
|
562
|
+
* .catch(function(error) {
|
563
|
+
* // Handle Errors here.
|
564
|
+
* var errorCode = error.code;
|
565
|
+
* var errorMessage = error.message;
|
566
|
+
* if (errorCode == 'auth/weak-password') {
|
567
|
+
* alert('The password is too weak.');
|
568
|
+
* } else {
|
569
|
+
* alert(errorMessage);
|
570
|
+
* }
|
571
|
+
* console.log(error);
|
572
|
+
* });
|
573
|
+
*
|
574
|
+
* @param {string} email The user's email address.
|
575
|
+
* @param {string} password The user's chosen password.
|
576
|
+
* @return {!firebase.Promise<!firebase.User>}
|
577
|
+
*/
|
578
|
+
firebase.auth.Auth.prototype.createUserWithEmailAndPassword =
|
579
|
+
function(email, password) {};
|
580
|
+
|
581
|
+
|
582
|
+
/**
|
583
|
+
* Gets the list of provider IDs that can be used to sign in for the given email
|
584
|
+
* address. Useful for an "identifier-first" sign-in flow.
|
585
|
+
*
|
586
|
+
* <h4>Error Codes</h4>
|
587
|
+
* <dl>
|
588
|
+
* <dt>auth/invalid-email</dt>
|
589
|
+
* <dd>Thrown if the email address is not valid.</dd>
|
590
|
+
* </dl>
|
591
|
+
*
|
592
|
+
* @param {string} email An email address.
|
593
|
+
* @return {!firebase.Promise<!Array<string>>}
|
594
|
+
*/
|
595
|
+
firebase.auth.Auth.prototype.fetchProvidersForEmail = function(email) {};
|
596
|
+
|
597
|
+
|
598
|
+
/**
|
599
|
+
* Adds an observer for auth state changes.
|
600
|
+
*
|
601
|
+
* @example
|
602
|
+
* firebase.auth().onAuthStateChanged(function(user) {
|
603
|
+
* if (user) {
|
604
|
+
* // User is signed in.
|
605
|
+
* }
|
606
|
+
* });
|
607
|
+
*
|
608
|
+
* @param {!Object|function(?firebase.User)}
|
609
|
+
* nextOrObserver An observer object or a function triggered on change.
|
610
|
+
* @param {function(!firebase.auth.Error)=} error Optional A function
|
611
|
+
* triggered on auth error.
|
612
|
+
* @param {function()=} completed Optional A function triggered when the
|
613
|
+
* observer is removed.
|
614
|
+
* @return {!function()} The unsubscribe function for the observer.
|
615
|
+
*/
|
616
|
+
firebase.auth.Auth.prototype.onAuthStateChanged = function(
|
617
|
+
nextOrObserver, error, completed) {};
|
618
|
+
|
619
|
+
|
620
|
+
/**
|
621
|
+
* Sends a password reset email to the given email address.
|
622
|
+
*
|
623
|
+
* To complete the password reset, call
|
624
|
+
* {@link firebase.auth.Auth#confirmPasswordReset} with the code supplied in the
|
625
|
+
* email sent to the user, along with the new password specified by the user.
|
626
|
+
*
|
627
|
+
* <h4>Error Codes</h4>
|
628
|
+
* <dl>
|
629
|
+
* <dt>auth/invalid-email</dt>
|
630
|
+
* <dd>Thrown if the email address is not valid.</dd>
|
631
|
+
* <dt>auth/user-not-found</dt>
|
632
|
+
* <dd>Thrown if there is no user corresponding to the email address.</dd>
|
633
|
+
* </dl>
|
634
|
+
*
|
635
|
+
* @param {string} email The email address with the password to be reset.
|
636
|
+
* @return {!firebase.Promise<void>}
|
637
|
+
*/
|
638
|
+
firebase.auth.Auth.prototype.sendPasswordResetEmail = function(email) {};
|
639
|
+
|
640
|
+
|
641
|
+
/**
|
642
|
+
* Completes the password reset process, given a confirmation code and new
|
643
|
+
* password.
|
644
|
+
*
|
645
|
+
* <h4>Error Codes</h4>
|
646
|
+
* <dl>
|
647
|
+
* <dt>auth/expired-action-code</dt>
|
648
|
+
* <dd>Thrown if the password reset code has expired.</dd>
|
649
|
+
* <dt>auth/invalid-action-code</dt>
|
650
|
+
* <dd>Thrown if the password reset code is invalid. This can happen if the
|
651
|
+
* code is malformed or has already been used.</dd>
|
652
|
+
* <dt>auth/user-disabled</dt>
|
653
|
+
* <dd>Thrown if the user corresponding to the given password reset code has
|
654
|
+
* been disabled.</dd>
|
655
|
+
* <dt>auth/user-not-found</dt>
|
656
|
+
* <dd>Thrown if there is no user corresponding to the password reset code. This
|
657
|
+
* may have happened if the user was deleted between when the code was
|
658
|
+
* issued and when this method was called.</dd>
|
659
|
+
* <dt>auth/weak-password</dt>
|
660
|
+
* <dd>Thrown if the new password is not strong enough.</dd>
|
661
|
+
* </dl>
|
662
|
+
*
|
663
|
+
* @param {string} code The confirmation code send via email to the user.
|
664
|
+
* @param {string} newPassword The new password.
|
665
|
+
* @return {!firebase.Promise<void>}
|
666
|
+
*/
|
667
|
+
firebase.auth.Auth.prototype.confirmPasswordReset =
|
668
|
+
function(code, newPassword) {};
|
669
|
+
|
670
|
+
/**
|
671
|
+
* Asynchronously signs in with the given credentials.
|
672
|
+
*
|
673
|
+
* <h4>Error Codes</h4>
|
674
|
+
* <dl>
|
675
|
+
* <dt>auth/account-exists-with-different-credential</dt>
|
676
|
+
* <dd>Thrown if there already exists an account with the email address
|
677
|
+
* asserted by the credential. Resolve this by calling
|
678
|
+
* {@link firebase.auth.Auth#fetchProvidersForEmail} and then asking the
|
679
|
+
* user to sign in using one of the returned providers. Once the user is
|
680
|
+
* signed in, the original credential can be linked to the user with
|
681
|
+
* {@link firebase.User#link}.</dd>
|
682
|
+
* <dt>auth/invalid-credential</dt>
|
683
|
+
* <dd>Thrown if the credential is malformed or has expired.</dd>
|
684
|
+
* <dt>auth/operation-not-allowed</dt>
|
685
|
+
* <dd>Thrown if the type of account corresponding to the credential
|
686
|
+
* is not enabled. Enable the account type in the Firebase Console, under
|
687
|
+
* the Auth tab.</dd>
|
688
|
+
* <dt>auth/user-disabled</dt>
|
689
|
+
* <dd>Thrown if the user corresponding to the given credential has been
|
690
|
+
* disabled.</dd>
|
691
|
+
* <dt>auth/user-not-found</dt>
|
692
|
+
* <dd>Thrown if signing in with a credential from
|
693
|
+
* {@link firebase.auth.EmailAuthProvider#credential} and there is no user
|
694
|
+
* corresponding to the given email. </dd>
|
695
|
+
* <dt>auth/wrong-password</dt>
|
696
|
+
* <dd>Thrown if signing in with a credential from
|
697
|
+
* {@link firebase.auth.EmailAuthProvider#credential} and the password is
|
698
|
+
* invalid for the given email, or if the account corresponding to the email
|
699
|
+
* does not have a password set.</dd>
|
700
|
+
* </dl>
|
701
|
+
*
|
702
|
+
* @example
|
703
|
+
* firebase.auth().signInWithCredential(credential).catch(function(error) {
|
704
|
+
* // Handle Errors here.
|
705
|
+
* var errorCode = error.code;
|
706
|
+
* var errorMessage = error.message;
|
707
|
+
* // The email of the user's account used.
|
708
|
+
* var email = error.email;
|
709
|
+
* // The firebase.auth.AuthCredential type that was used.
|
710
|
+
* var credential = error.credential;
|
711
|
+
* if (errorCode === 'auth/account-exists-with-different-credential') {
|
712
|
+
* alert('Email already associated with another account.');
|
713
|
+
* // Handle account linking here, if using.
|
714
|
+
* } else {
|
715
|
+
* console.error(error);
|
716
|
+
* }
|
717
|
+
* });
|
718
|
+
*
|
719
|
+
* @param {!firebase.auth.AuthCredential} credential The auth credential.
|
720
|
+
* @return {!firebase.Promise<!firebase.User>}
|
721
|
+
*/
|
722
|
+
firebase.auth.Auth.prototype.signInWithCredential = function(credential) {};
|
723
|
+
|
724
|
+
|
725
|
+
/**
|
726
|
+
* Asynchronously signs in using a custom token.
|
727
|
+
*
|
728
|
+
* Custom tokens are used to integrate Firebase Auth with existing auth systems,
|
729
|
+
* and must be generated by the auth backend.
|
730
|
+
*
|
731
|
+
* Fails with an error if the token is invalid, expired, or not accepted by the
|
732
|
+
* Firebase Auth service.
|
733
|
+
*
|
734
|
+
* <h4>Error Codes</h4>
|
735
|
+
* <dl>
|
736
|
+
* <dt>auth/custom-token-mismatch</dt>
|
737
|
+
* <dd>Thrown if the custom token is for a different Firebase App.</dd>
|
738
|
+
* <dt>auth/invalid-custom-token</dt>
|
739
|
+
* <dd>Thrown if the custom token format is incorrect.</dd>
|
740
|
+
* </dl>
|
741
|
+
*
|
742
|
+
* @example
|
743
|
+
* firebase.auth().signInWithCustomToken(token).catch(function(error) {
|
744
|
+
* // Handle Errors here.
|
745
|
+
* var errorCode = error.code;
|
746
|
+
* var errorMessage = error.message;
|
747
|
+
* if (errorCode === 'auth/invalid-custom-token') {
|
748
|
+
* alert('The token you provided is not valid.');
|
749
|
+
* } else {
|
750
|
+
* console.error(error);
|
751
|
+
* }
|
752
|
+
* });
|
753
|
+
*
|
754
|
+
* @param {string} token The custom token to sign in with.
|
755
|
+
* @return {!firebase.Promise<!firebase.User>}
|
756
|
+
*/
|
757
|
+
firebase.auth.Auth.prototype.signInWithCustomToken = function(token) {};
|
758
|
+
|
759
|
+
|
760
|
+
/**
|
761
|
+
* Asynchronously signs in using an email and password.
|
762
|
+
*
|
763
|
+
* Fails with an error if the email address and password do not match.
|
764
|
+
*
|
765
|
+
* Note: The user's password is NOT the password used to access the user's email
|
766
|
+
* account. The email address serves as a unique identifier for the user, and
|
767
|
+
* the password is used to access the user's account in your Firebase project.
|
768
|
+
*
|
769
|
+
* See also: {@link firebase.auth.Auth#createUserWithEmailAndPassword}.
|
770
|
+
*
|
771
|
+
* <h4>Error Codes</h4>
|
772
|
+
* <dl>
|
773
|
+
* <dt>auth/invalid-email</dt>
|
774
|
+
* <dd>Thrown if the email address is not valid.</dd>
|
775
|
+
* <dt>auth/user-disabled</dt>
|
776
|
+
* <dd>Thrown if the user corresponding to the given email has been
|
777
|
+
* disabled.</dd>
|
778
|
+
* <dt>auth/user-not-found</dt>
|
779
|
+
* <dd>Thrown if there is no user corresponding to the given email.</dd>
|
780
|
+
* <dt>auth/wrong-password</dt>
|
781
|
+
* <dd>Thrown if the password is invalid for the given email, or the account
|
782
|
+
* corresponding to the email does not have a password set.</dd>
|
783
|
+
* </dl>
|
784
|
+
*
|
785
|
+
* @example
|
786
|
+
* firebase.auth().signInWithEmailAndPassword(email, password)
|
787
|
+
* .catch(function(error) {
|
788
|
+
* // Handle Errors here.
|
789
|
+
* var errorCode = error.code;
|
790
|
+
* var errorMessage = error.message;
|
791
|
+
* if (errorCode === 'auth/wrong-password') {
|
792
|
+
* alert('Wrong password.');
|
793
|
+
* } else {
|
794
|
+
* alert(errorMessage);
|
795
|
+
* }
|
796
|
+
* console.log(error);
|
797
|
+
* });
|
798
|
+
*
|
799
|
+
* @param {string} email The users email address.
|
800
|
+
* @param {string} password The users password.
|
801
|
+
* @return {!firebase.Promise<!firebase.User>}
|
802
|
+
*/
|
803
|
+
firebase.auth.Auth.prototype.signInWithEmailAndPassword =
|
804
|
+
function(email, password) {};
|
805
|
+
|
806
|
+
|
807
|
+
/**
|
808
|
+
* Asynchronously signs in as an anonymous user.
|
809
|
+
*
|
810
|
+
* If there is already an anonymous user signed in, that user will be returned;
|
811
|
+
* otherwise, a new anonymous user identity will be created and returned.
|
812
|
+
*
|
813
|
+
* <h4>Error Codes</h4>
|
814
|
+
* <dl>
|
815
|
+
* <dt>auth/operation-not-allowed</dt>
|
816
|
+
* <dd>Thrown if anonymous accounts are not enabled. Enable anonymous accounts
|
817
|
+
* in the Firebase Console, under the Auth tab.</dd>
|
818
|
+
* </dl>
|
819
|
+
*
|
820
|
+
* @example
|
821
|
+
* firebase.auth().signInAnonymously().catch(function(error) {
|
822
|
+
* // Handle Errors here.
|
823
|
+
* var errorCode = error.code;
|
824
|
+
* var errorMessage = error.message;
|
825
|
+
*
|
826
|
+
* if (errorCode === 'auth/operation-not-allowed') {
|
827
|
+
* alert('You must enable Anonymous auth in the Firebase Console.');
|
828
|
+
* } else {
|
829
|
+
* console.error(error);
|
830
|
+
* }
|
831
|
+
* });
|
832
|
+
*
|
833
|
+
* @return {!firebase.Promise<!firebase.User>}
|
834
|
+
*/
|
835
|
+
firebase.auth.Auth.prototype.signInAnonymously = function() {};
|
836
|
+
|
837
|
+
|
838
|
+
/**
|
839
|
+
* A structure containing a User and an AuthCredential.
|
840
|
+
*
|
841
|
+
* @typedef {{
|
842
|
+
* user: ?firebase.User,
|
843
|
+
* credential: ?firebase.auth.AuthCredential
|
844
|
+
* }}
|
845
|
+
*/
|
846
|
+
firebase.auth.UserCredential;
|
847
|
+
|
848
|
+
/**
|
849
|
+
* Signs out the current user.
|
850
|
+
*
|
851
|
+
* @return {!firebase.Promise<void>}
|
852
|
+
*/
|
853
|
+
firebase.auth.Auth.prototype.signOut = function() {};
|
854
|
+
|
855
|
+
|
856
|
+
/**
|
857
|
+
* An authentication error.
|
858
|
+
* For method-specific error codes, refer to the specific methods in the
|
859
|
+
* documentation. For common error codes, check the reference below. Use {@link
|
860
|
+
* firebase.auth.Error#code} to get the specific error code. For a detailed
|
861
|
+
* message, use {@link firebase.auth.Error#message}.
|
862
|
+
* Errors with the code <strong>auth/account-exists-with-different-credential
|
863
|
+
* </strong> will have the additional fields <strong>email</strong> and <strong>
|
864
|
+
* credential</strong> which are needed to provide a way to resolve these
|
865
|
+
* specific errors. Refer to {@link firebase.auth.Auth#signInWithPopup} for more
|
866
|
+
* information.
|
867
|
+
*
|
868
|
+
* <h4>Common Error Codes</h4>
|
869
|
+
* <dl>
|
870
|
+
* <dt>auth/app-deleted</dt>
|
871
|
+
* <dd>Thrown if the instance of FirebaseApp has been deleted.</dd>
|
872
|
+
* <dt>auth/app-not-authorized</dt>
|
873
|
+
* <dd>Thrown if the app identified by the domain where it's hosted, is not
|
874
|
+
* authorized to use Firebase Authentication with the provided API key.
|
875
|
+
* Review your key configuration in the Google API console.</dd>
|
876
|
+
* <dt>auth/argument-error</dt>
|
877
|
+
* <dd>Thrown if a method is called with incorrect arguments.</dd>
|
878
|
+
* <dt>auth/invalid-api-key</dt>
|
879
|
+
* <dd>Thrown if the provided API key is invalid. Please check that you have
|
880
|
+
* copied it correctly from the Firebase Console.</dd>
|
881
|
+
* <dt>auth/invalid-user-token</dt>
|
882
|
+
* <dd>Thrown if the user's credential is no longer valid. The user must sign in
|
883
|
+
* again.</dd>
|
884
|
+
* <dt>auth/network-request-failed</dt>
|
885
|
+
* <dd>Thrown if a network error (such as timeout, interrupted connection or
|
886
|
+
* unreachable host) has occurred.</dd>
|
887
|
+
* <dt>auth/operation-not-allowed</dt>
|
888
|
+
* <dd>Thrown if you have not enabled the provider in the Firebase Console. Go
|
889
|
+
* to the Firebase Console for your project, in the Auth section and the
|
890
|
+
* <strong>Sign in Method</strong> tab and configure the provider.</dd>
|
891
|
+
* <dt>auth/requires-recent-login</dt>
|
892
|
+
* <dd>Thrown if the user's last sign-in time does not meet the security
|
893
|
+
* threshold. Use {@link firebase.User#reauthenticate} to resolve. This does
|
894
|
+
* not apply if the user is anonymous.</dd>
|
895
|
+
* <dt>auth/too-many-requests</dt>
|
896
|
+
* <dd>Thrown if requests are blocked from a device due to unusual activity.
|
897
|
+
* Trying again after some delay would unblock.</dd>
|
898
|
+
* <dt>auth/unauthorized-domain</dt>
|
899
|
+
* <dd>Thrown if the app domain is not authorized for OAuth operations for your
|
900
|
+
* Firebase project. Edit the list of authorized domains from the Firebase
|
901
|
+
* console.</dd>
|
902
|
+
* <dt>auth/user-disabled</dt>
|
903
|
+
* <dd>Thrown if the user account has been disabled by an administrator.
|
904
|
+
* Accounts can be enabled or disabled in the Firebase Console, the Auth
|
905
|
+
* section and Users subsection.</dd>
|
906
|
+
* <dt>auth/user-token-expired</dt>
|
907
|
+
* <dd>Thrown if the user's credential has expired. This could also be thrown if
|
908
|
+
* a user has been deleted. Prompting the user to sign in again should
|
909
|
+
* resolve this for either case.</dd>
|
910
|
+
* <dt>auth/web-storage-unsupported</dt>
|
911
|
+
* <dd>Thrown if the browser does not support web storage or if the user
|
912
|
+
* disables them.</dd>
|
913
|
+
* </dl>
|
914
|
+
*
|
915
|
+
* @interface
|
916
|
+
*/
|
917
|
+
firebase.auth.Error = function() {};
|
918
|
+
|
919
|
+
/**
|
920
|
+
* Unique error code.
|
921
|
+
*
|
922
|
+
* @type {string}
|
923
|
+
*/
|
924
|
+
firebase.auth.Error.prototype.code;
|
925
|
+
|
926
|
+
/**
|
927
|
+
* Complete error message.
|
928
|
+
*
|
929
|
+
* @type {string}
|
930
|
+
*/
|
931
|
+
firebase.auth.Error.prototype.message;
|
932
|
+
|
933
|
+
|
934
|
+
//
|
935
|
+
// List of Auth Providers.
|
936
|
+
//
|
937
|
+
|
938
|
+
|
939
|
+
/**
|
940
|
+
* Interface that represents an auth provider.
|
941
|
+
*
|
942
|
+
* @interface
|
943
|
+
*/
|
944
|
+
firebase.auth.AuthProvider = function() {};
|
945
|
+
|
946
|
+
/** @type {string} */
|
947
|
+
firebase.auth.AuthProvider.prototype.providerId;
|
948
|
+
|
949
|
+
/**
|
950
|
+
* Facebook auth provider.
|
951
|
+
*
|
952
|
+
* @example
|
953
|
+
* // Sign in using a redirect.
|
954
|
+
* firebase.auth().getRedirectResult().then(function(result) {
|
955
|
+
* if (result.credential) {
|
956
|
+
* // This gives you a Google Access Token.
|
957
|
+
* var token = result.credential.accessToken;
|
958
|
+
* }
|
959
|
+
* var user = result.user;
|
960
|
+
* })
|
961
|
+
* // Start a sign in process for an unauthenticated user.
|
962
|
+
* var provider = new firebase.auth.FacebookAuthProvider();
|
963
|
+
* provider.addScope('user_birthday');
|
964
|
+
* firebase.auth().signInWithRedirect(provider);
|
965
|
+
*
|
966
|
+
* @example
|
967
|
+
* // Sign in using a popup.
|
968
|
+
* var provider = new firebase.auth.FacebookAuthProvider();
|
969
|
+
* provider.addScope('user_birthday');
|
970
|
+
* firebase.auth().signInWithPopup(provider).then(function(result) {
|
971
|
+
* // This gives you a Facebook Access Token.
|
972
|
+
* var token = result.credential.accessToken;
|
973
|
+
* // The signed-in user info.
|
974
|
+
* var user = result.user;
|
975
|
+
* });
|
976
|
+
*
|
977
|
+
* @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state
|
978
|
+
* changes.
|
979
|
+
* @constructor
|
980
|
+
* @implements {firebase.auth.AuthProvider}
|
981
|
+
*/
|
982
|
+
firebase.auth.FacebookAuthProvider = function() {};
|
983
|
+
|
984
|
+
/** @type {string} */
|
985
|
+
firebase.auth.FacebookAuthProvider.PROVIDER_ID;
|
986
|
+
|
987
|
+
/**
|
988
|
+
* @example
|
989
|
+
* var cred = firebase.auth.FacebookAuthProvider.credential(
|
990
|
+
* // `event` from the Facebook auth.authResponseChange callback.
|
991
|
+
* event.authResponse.accessToken
|
992
|
+
* );
|
993
|
+
*
|
994
|
+
* @param {string} token Facebook access token.
|
995
|
+
* @return {!firebase.auth.AuthCredential} The auth provider credential.
|
996
|
+
*/
|
997
|
+
firebase.auth.FacebookAuthProvider.credential = function(token) {};
|
998
|
+
|
999
|
+
/** @type {string} */
|
1000
|
+
firebase.auth.FacebookAuthProvider.prototype.providerId;
|
1001
|
+
|
1002
|
+
/**
|
1003
|
+
* @param {string} scope Facebook OAuth scope.
|
1004
|
+
*/
|
1005
|
+
firebase.auth.FacebookAuthProvider.prototype.addScope = function(scope) {};
|
1006
|
+
|
1007
|
+
/**
|
1008
|
+
* Sets the OAuth custom parameters to pass in a Facebook OAuth request for
|
1009
|
+
* popup and redirect sign-in operations.
|
1010
|
+
* Valid parameters include 'auth_type', 'display' and 'locale'.
|
1011
|
+
* For a detailed list, check the
|
1012
|
+
* {@link https://goo.gl/pve4fo Facebook}
|
1013
|
+
* documentation.
|
1014
|
+
* Reserved required OAuth 2.0 parameters such as 'client_id', 'redirect_uri',
|
1015
|
+
* 'scope', 'response_type' and 'state' are not allowed and will be ignored.
|
1016
|
+
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1017
|
+
* in the OAuth request.
|
1018
|
+
*/
|
1019
|
+
firebase.auth.FacebookAuthProvider.prototype.setCustomParameters =
|
1020
|
+
function(customOAuthParameters) {};
|
1021
|
+
|
1022
|
+
|
1023
|
+
/**
|
1024
|
+
* Github auth provider.
|
1025
|
+
*
|
1026
|
+
* GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect
|
1027
|
+
* directly, or use the signInWithPopup handler:
|
1028
|
+
*
|
1029
|
+
* @example
|
1030
|
+
* // Using a redirect.
|
1031
|
+
* firebase.auth().getRedirectResult().then(function(result) {
|
1032
|
+
* if (result.credential) {
|
1033
|
+
* // This gives you a GitHub Access Token.
|
1034
|
+
* var token = result.credential.accessToken;
|
1035
|
+
* }
|
1036
|
+
* var user = result.user;
|
1037
|
+
* }).catch(function(error) {
|
1038
|
+
* // Handle Errors here.
|
1039
|
+
* var errorCode = error.code;
|
1040
|
+
* var errorMessage = error.message;
|
1041
|
+
* // The email of the user's account used.
|
1042
|
+
* var email = error.email;
|
1043
|
+
* // The firebase.auth.AuthCredential type that was used.
|
1044
|
+
* var credential = error.credential;
|
1045
|
+
* if (errorCode === 'auth/account-exists-with-different-credential') {
|
1046
|
+
* alert('You have signed up with a different provider for that email.');
|
1047
|
+
* // Handle linking here if your app allows it.
|
1048
|
+
* } else {
|
1049
|
+
* console.error(error);
|
1050
|
+
* }
|
1051
|
+
* });
|
1052
|
+
*
|
1053
|
+
* // Start a sign in process for an unauthenticated user.
|
1054
|
+
* var provider = new firebase.auth.GithubAuthProvider();
|
1055
|
+
* provider.addScope('repo');
|
1056
|
+
* firebase.auth().signInWithRedirect(provider);
|
1057
|
+
*
|
1058
|
+
* @example
|
1059
|
+
* // With popup.
|
1060
|
+
* var provider = new firebase.auth.GithubAuthProvider();
|
1061
|
+
* provider.addScope('repo');
|
1062
|
+
* firebase.auth().signInWithPopup(provider).then(function(result) {
|
1063
|
+
* // This gives you a GitHub Access Token.
|
1064
|
+
* var token = result.credential.accessToken;
|
1065
|
+
* // The signed-in user info.
|
1066
|
+
* var user = result.user;
|
1067
|
+
* }).catch(function(error) {
|
1068
|
+
* // Handle Errors here.
|
1069
|
+
* var errorCode = error.code;
|
1070
|
+
* var errorMessage = error.message;
|
1071
|
+
* // The email of the user's account used.
|
1072
|
+
* var email = error.email;
|
1073
|
+
* // The firebase.auth.AuthCredential type that was used.
|
1074
|
+
* var credential = error.credential;
|
1075
|
+
* if (errorCode === 'auth/account-exists-with-different-credential') {
|
1076
|
+
* alert('You have signed up with a different provider for that email.');
|
1077
|
+
* // Handle linking here if your app allows it.
|
1078
|
+
* } else {
|
1079
|
+
* console.error(error);
|
1080
|
+
* }
|
1081
|
+
* });
|
1082
|
+
*
|
1083
|
+
* @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state
|
1084
|
+
* changes.
|
1085
|
+
* @constructor
|
1086
|
+
* @implements {firebase.auth.AuthProvider}
|
1087
|
+
*/
|
1088
|
+
firebase.auth.GithubAuthProvider = function() {};
|
1089
|
+
|
1090
|
+
/** @type {string} */
|
1091
|
+
firebase.auth.GithubAuthProvider.PROVIDER_ID;
|
1092
|
+
|
1093
|
+
/**
|
1094
|
+
* @example
|
1095
|
+
* var cred = firebase.auth.FacebookAuthProvider.credential(
|
1096
|
+
* // `event` from the Facebook auth.authResponseChange callback.
|
1097
|
+
* event.authResponse.accessToken
|
1098
|
+
* );
|
1099
|
+
*
|
1100
|
+
* @param {string} token Github access token.
|
1101
|
+
* @return {!firebase.auth.AuthCredential} The auth provider credential.
|
1102
|
+
*/
|
1103
|
+
firebase.auth.GithubAuthProvider.credential = function(token) {};
|
1104
|
+
|
1105
|
+
/** @type {string} */
|
1106
|
+
firebase.auth.GithubAuthProvider.prototype.providerId;
|
1107
|
+
|
1108
|
+
/**
|
1109
|
+
* @param {string} scope Github OAuth scope.
|
1110
|
+
*/
|
1111
|
+
firebase.auth.GithubAuthProvider.prototype.addScope = function(scope) {};
|
1112
|
+
|
1113
|
+
/**
|
1114
|
+
* Sets the OAuth custom parameters to pass in a GitHub OAuth request for popup
|
1115
|
+
* and redirect sign-in operations.
|
1116
|
+
* Valid parameters include 'allow_signup'.
|
1117
|
+
* For a detailed list, check the
|
1118
|
+
* {@link https://developer.github.com/v3/oauth/ GitHub} documentation.
|
1119
|
+
* Reserved required OAuth 2.0 parameters such as 'client_id', 'redirect_uri',
|
1120
|
+
* 'scope', 'response_type' and 'state' are not allowed and will be ignored.
|
1121
|
+
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1122
|
+
* in the OAuth request.
|
1123
|
+
*/
|
1124
|
+
firebase.auth.GithubAuthProvider.prototype.setCustomParameters =
|
1125
|
+
function(customOAuthParameters) {};
|
1126
|
+
|
1127
|
+
|
1128
|
+
/**
|
1129
|
+
* Google auth provider.
|
1130
|
+
*
|
1131
|
+
* @example
|
1132
|
+
* // Using a redirect.
|
1133
|
+
* firebase.auth().getRedirectResult().then(function(result) {
|
1134
|
+
* if (result.credential) {
|
1135
|
+
* // This gives you a Google Access Token.
|
1136
|
+
* var token = result.credential.accessToken;
|
1137
|
+
* }
|
1138
|
+
* var user = result.user;
|
1139
|
+
* });
|
1140
|
+
*
|
1141
|
+
* // Start a sign in process for an unauthenticated user.
|
1142
|
+
* var provider = new firebase.auth.GoogleAuthProvider();
|
1143
|
+
* provider.addScope('profile');
|
1144
|
+
* provider.addScope('email');
|
1145
|
+
* firebase.auth().signInWithRedirect(provider);
|
1146
|
+
*
|
1147
|
+
* @example
|
1148
|
+
* // Using a popup.
|
1149
|
+
* var provider = new firebase.auth.GoogleAuthProvider();
|
1150
|
+
* provider.addScope('profile');
|
1151
|
+
* provider.addScope('email');
|
1152
|
+
* firebase.auth().signInWithPopup(provider).then(function(result) {
|
1153
|
+
* // This gives you a Google Access Token.
|
1154
|
+
* var token = result.credential.accessToken;
|
1155
|
+
* // The signed-in user info.
|
1156
|
+
* var user = result.user;
|
1157
|
+
* });
|
1158
|
+
*
|
1159
|
+
* @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state
|
1160
|
+
* changes.
|
1161
|
+
* @constructor
|
1162
|
+
* @implements {firebase.auth.AuthProvider}
|
1163
|
+
*/
|
1164
|
+
firebase.auth.GoogleAuthProvider = function() {};
|
1165
|
+
|
1166
|
+
/** @type {string} */
|
1167
|
+
firebase.auth.GoogleAuthProvider.PROVIDER_ID;
|
1168
|
+
|
1169
|
+
/**
|
1170
|
+
* Creates a credential for Google. At least one of ID token and access token
|
1171
|
+
* is required.
|
1172
|
+
*
|
1173
|
+
* @example
|
1174
|
+
* // `googleUser` from the onsuccess Google Sign In callback.
|
1175
|
+
* var credential = firebase.auth.GoogleAuthProvider.credential(
|
1176
|
+
googleUser.getAuthResponse().id_token);
|
1177
|
+
* firebase.auth().signInWithCredential(credential)
|
1178
|
+
*
|
1179
|
+
* @param {?string=} idToken Google ID token.
|
1180
|
+
* @param {?string=} accessToken Google access token.
|
1181
|
+
* @return {!firebase.auth.AuthCredential} The auth provider credential.
|
1182
|
+
*/
|
1183
|
+
firebase.auth.GoogleAuthProvider.credential = function(idToken, accessToken) {};
|
1184
|
+
|
1185
|
+
/** @type {string} */
|
1186
|
+
firebase.auth.GoogleAuthProvider.prototype.providerId;
|
1187
|
+
|
1188
|
+
/**
|
1189
|
+
* @param {string} scope Google OAuth scope.
|
1190
|
+
*/
|
1191
|
+
firebase.auth.GoogleAuthProvider.prototype.addScope = function(scope) {};
|
1192
|
+
|
1193
|
+
/**
|
1194
|
+
* Sets the OAuth custom parameters to pass in a Google OAuth request for popup
|
1195
|
+
* and redirect sign-in operations.
|
1196
|
+
* Valid parameters include 'hd', 'hl', 'include_granted_scopes', 'login_hint'
|
1197
|
+
* and 'prompt'.
|
1198
|
+
* For a detailed list, check the
|
1199
|
+
* {@link https://goo.gl/Xo01Jm Google}
|
1200
|
+
* documentation.
|
1201
|
+
* Reserved required OAuth 2.0 parameters such as 'client_id', 'redirect_uri',
|
1202
|
+
* 'scope', 'response_type' and 'state' are not allowed and will be ignored.
|
1203
|
+
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1204
|
+
* in the OAuth request.
|
1205
|
+
*/
|
1206
|
+
firebase.auth.GoogleAuthProvider.prototype.setCustomParameters =
|
1207
|
+
function(customOAuthParameters) {};
|
1208
|
+
|
1209
|
+
|
1210
|
+
/**
|
1211
|
+
* Twitter auth provider.
|
1212
|
+
*
|
1213
|
+
* @example
|
1214
|
+
* // Using a redirect.
|
1215
|
+
* firebase.auth().getRedirectResult().then(function(result) {
|
1216
|
+
* if (result.credential) {
|
1217
|
+
* // For accessing the Twitter API.
|
1218
|
+
* var token = result.credential.accessToken;
|
1219
|
+
* var secret = result.credential.secret;
|
1220
|
+
* }
|
1221
|
+
* var user = result.user;
|
1222
|
+
* });
|
1223
|
+
*
|
1224
|
+
* // Start a sign in process for an unauthenticated user.
|
1225
|
+
* var provider = new firebase.auth.TwitterAuthProvider();
|
1226
|
+
* firebase.auth().signInWithRedirect(provider);
|
1227
|
+
*
|
1228
|
+
* @example
|
1229
|
+
* // Using a popup.
|
1230
|
+
* var provider = new firebase.auth.TwitterAuthProvider();
|
1231
|
+
* firebase.auth().signInWithPopup(provider).then(function(result) {
|
1232
|
+
* // For accessing the Twitter API.
|
1233
|
+
* var token = result.credential.accessToken;
|
1234
|
+
* var secret = result.credential.secret;
|
1235
|
+
* // The signed-in user info.
|
1236
|
+
* var user = result.user;
|
1237
|
+
* });
|
1238
|
+
*
|
1239
|
+
* @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state
|
1240
|
+
* changes.
|
1241
|
+
* @constructor
|
1242
|
+
* @implements {firebase.auth.AuthProvider}
|
1243
|
+
*/
|
1244
|
+
firebase.auth.TwitterAuthProvider = function() {};
|
1245
|
+
|
1246
|
+
/** @type {string} */
|
1247
|
+
firebase.auth.TwitterAuthProvider.PROVIDER_ID;
|
1248
|
+
|
1249
|
+
/**
|
1250
|
+
* @param {string} token Twitter access token.
|
1251
|
+
* @param {string} secret Twitter secret.
|
1252
|
+
* @return {!firebase.auth.AuthCredential} The auth provider credential.
|
1253
|
+
*/
|
1254
|
+
firebase.auth.TwitterAuthProvider.credential = function(token, secret) {};
|
1255
|
+
|
1256
|
+
/** @type {string} */
|
1257
|
+
firebase.auth.TwitterAuthProvider.prototype.providerId;
|
1258
|
+
|
1259
|
+
/**
|
1260
|
+
* Sets the OAuth custom parameters to pass in a Twitter OAuth request for popup
|
1261
|
+
* and redirect sign-in operations.
|
1262
|
+
* Valid parameters include 'lang'.
|
1263
|
+
* Reserved required OAuth 1.0 parameters such as 'oauth_consumer_key',
|
1264
|
+
* 'oauth_token', 'oauth_signature', etc are not allowed and will be ignored.
|
1265
|
+
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1266
|
+
* in the OAuth request.
|
1267
|
+
*/
|
1268
|
+
firebase.auth.TwitterAuthProvider.prototype.setCustomParameters =
|
1269
|
+
function(customOAuthParameters) {};
|
1270
|
+
|
1271
|
+
|
1272
|
+
/**
|
1273
|
+
* Email and password auth provider implementation.
|
1274
|
+
*
|
1275
|
+
* To authenticate: {@link firebase.auth.Auth#createUserWithEmailAndPassword}
|
1276
|
+
* and {@link firebase.auth.Auth#signInWithEmailAndPassword}.
|
1277
|
+
*
|
1278
|
+
* @constructor
|
1279
|
+
* @implements {firebase.auth.AuthProvider}
|
1280
|
+
*/
|
1281
|
+
firebase.auth.EmailAuthProvider = function() {};
|
1282
|
+
|
1283
|
+
/** @type {string} */
|
1284
|
+
firebase.auth.EmailAuthProvider.PROVIDER_ID;
|
1285
|
+
|
1286
|
+
/**
|
1287
|
+
* @example
|
1288
|
+
* var cred = firebase.auth.EmailAuthProvider.credential(
|
1289
|
+
* email,
|
1290
|
+
* password
|
1291
|
+
* );
|
1292
|
+
*
|
1293
|
+
* @param {string} email Email address.
|
1294
|
+
* @param {string} password User account password.
|
1295
|
+
* @return {!firebase.auth.AuthCredential} The auth provider credential.
|
1296
|
+
*/
|
1297
|
+
firebase.auth.EmailAuthProvider.credential = function(email, password) {};
|
1298
|
+
|
1299
|
+
/** @type {string} */
|
1300
|
+
firebase.auth.EmailAuthProvider.prototype.providerId;
|