18 |
19 | ## Authentication Methods
20 |
21 | Currently the following methods from Google Firebase are available in the package:
22 |
23 | * Email & Password
24 | * Email Link
25 | * Google
26 | * Github
27 | * Facebook
28 | * Twitter
29 | * Microsoft
30 | * Yahoo!
31 | * Phone
32 |
33 | ## Example
34 |
35 | An application that provides authentication could look like this.
36 |
37 | ```r
38 | library(shiny)
39 | library(firebase)
40 |
41 | ui <- fluidPage(
42 | useFirebase(), # import dependencies,
43 | firebaseUIContainer()
44 | )
45 |
46 | server <- function(input, output){
47 | f <- FirebaseUI$
48 | new()$ # instantiate
49 | set_providers( # define providers
50 | email = TRUE,
51 | google = TRUE
52 | )$
53 | launch() # launch
54 | }
55 |
56 | shinyApp(ui, server)
57 | ```
58 |
59 | ## Install
60 |
61 | Install the stable version from CRAN:
62 |
63 | ```r
64 | install.packages("firebase")
65 | ```
66 |
67 | Install the development from Github using remotes:
68 |
69 | ```r
70 | # install.packages("remotes")
71 | remotes::install_github("JohnCoene/firebase")
72 | ```
73 |
74 | Get the current bleeding edge refactor with webpack
75 | with [packer](https://packer.john-coene.com)
76 | to improve performances and use firebase JavaScript version 9.
77 | It also includes two new classes `Storage` and `Analytics`.
78 |
79 | ```r
80 | remotes::install_github("JohnCoene/firebase@packer")
81 | ```
82 |
83 | ## Related
84 |
85 | Below are similar projects:
86 |
87 | - [Polished](https://polished.tech/)
88 | - [SaaS with R by Mark Edmondson](https://github.com/MarkEdmondson1234/Shiny-R-SaaS/)
89 | - [Firebase with R by Andy Merlino](https://github.com/shinyonfire/sof-auth-example)
90 | - [Auth0 with Shiny](https://auth0.com/blog/adding-authentication-to-shiny-server/)
91 |
92 | ## Code of Conduct
93 |
94 | Please note that the firebase project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.
95 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # SECURITY
2 |
3 | If you spot a security issue or a potential security issue please
4 | do not open an issue.
5 |
6 | Posting a security issue on Github only makes more people aware of the vulnerability.
7 |
8 | Instead, contact me via a personal message on [twitter](https://twitter.com/jdatap) or email (jcoenep [at] gmail).
9 |
10 | Thank you
11 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | # DO NOT CHANGE the "init" and "install" sections below
2 |
3 | # Download script file from GitHub
4 | init:
5 | ps: |
6 | $ErrorActionPreference = "Stop"
7 | Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1"
8 | Import-Module '..\appveyor-tool.ps1'
9 |
10 | install:
11 | ps: Bootstrap
12 |
13 | cache:
14 | - C:\RLibrary
15 |
16 | environment:
17 | NOT_CRAN: true
18 | # env vars that may need to be set, at least temporarily, from time to time
19 | # see https://github.com/krlmlr/r-appveyor#readme for details
20 | # USE_RTOOLS: true
21 | # R_REMOTES_STANDALONE: true
22 |
23 | # Adapt as necessary starting from here
24 |
25 | build_script:
26 | - travis-tool.sh install_deps
27 |
28 | test_script:
29 | - travis-tool.sh run_tests
30 |
31 | on_failure:
32 | - 7z a failure.zip *.Rcheck\*
33 | - appveyor PushArtifact failure.zip
34 |
35 | artifacts:
36 | - path: '*.Rcheck\**\*.log'
37 | name: Logs
38 |
39 | - path: '*.Rcheck\**\*.out'
40 | name: Logs
41 |
42 | - path: '*.Rcheck\**\*.fail'
43 | name: Logs
44 |
45 | - path: '*.Rcheck\**\*.Rout'
46 | name: Logs
47 |
48 | - path: '\*_*.tar.gz'
49 | name: Bits
50 |
51 | - path: '\*_*.zip'
52 | name: Bits
53 |
--------------------------------------------------------------------------------
/cran-comments.md:
--------------------------------------------------------------------------------
1 | ## Notes
2 |
3 |
4 | ### Second resubmission (answer to Victoria Wimmer)
5 |
6 | > The Date field is over a month old.
7 |
8 | Sorry indeed a commit reverted it back to last date. Fixed it and rechecked the package on rhub.
9 |
10 | ### First resubmission (answers to Victoria Wimmer)
11 |
12 | > Please proof-read your description text. Currently it reads: "...use 'Firebase Storage' to ..." -> Should probably begin with a capital "U" since it is a new sentence
13 |
14 | Thanks, changed in the DESCRIPTION file.
15 |
16 |
17 | > Please add \value to .Rd files regarding exported methods and explain the functions results in the documentation. Please write about the structure of the output (class) and also what the output means. (If a function does not return a value, please document that too, e.g. \value{No return value, called for side effects} or similar)
18 | Missing Rd-tags in up to 15 .Rd files, e.g.:
19 | Analytics.Rd: \value
20 | dependencies.Rd: \value
21 | Firebase.Rd: \value
22 | FirebaseAuth.Rd: \value
23 | FirebaseEmailLink.Rd: \value
24 | FirebaseEmailPassword.Rd: \value
25 | ...
26 |
27 |
28 | > We added the \value to all the .Rd files regarding exported methods
29 |
30 |
31 |
32 | > Unexecutable code in man/Storage.Rd:
33 | observeEvent(s$get_response() {
34 |
35 | Missing comma indeed ! Fixed it.
36 |
37 | > Functions which are supposed to only run interactively (e.g. shiny) should be wrapped in if(interactive()).
38 | Please replace /dontrun{} with if(interactive()){} if possible, then users can see that the functions are not intended for use in scripts / functions that are supposed to run non interactively. \dontrun{} should only be used if the example really cannot be executed (e.g. because of missing additional software, missing API keys, ...) by the user. That's why wrapping examples in \dontrun{} adds the comment ("# Not run:") as a warning for the user.
39 |
40 | Indeed we wrapped it (and the other ones) in \dontrun{} in purpose because of missing API keys required from Firebase.
41 |
42 |
43 | > Please always make sure to reset to user's options(), working directory or par() after you changed it in examples and vignettes and demos. --> man/FirebaseEmailLink.Rd. e.g.:
44 | old <- options(digits = 3)
45 | ...
46 | options(old)
47 |
48 | Fixed it in FirebaseEmailLink.Rd which was the only example requiring this change.
49 |
50 |
51 | > Additionally: Have the issues why your package was archived been fixed?
52 |
53 | Yes, I talked with the past maintainer and they have been fixed but not resubmitted because of lack of time.
54 | Thanks for your time and feedback !
55 |
56 |
57 | ## Test environments
58 | - R-hub windows-x86_64-devel (r-devel)
59 | - R-hub ubuntu-gcc-release (r-release)
60 | - R-hub fedora-clang-devel (r-devel)
61 |
62 | ## R CMD check results
63 |
64 | ❯ On windows-x86_64-devel (r-devel)
65 | checking CRAN incoming feasibility ... [16s] NOTE
66 |
67 | New maintainer:
68 | David Munoz Tord
69 | Old maintainer(s):
70 | John Coene
71 | Maintainer: 'David Munoz Tord '
72 |
73 | ❯ On ubuntu-gcc-release (r-release)
74 | checking CRAN incoming feasibility ... [8s/32s] NOTE
75 | Maintainer: ‘David Munoz Tord ’
76 |
77 | New maintainer:
78 | David Munoz Tord
79 | Old maintainer(s):
80 | John Coene
81 |
82 | ❯ On ubuntu-gcc-release (r-release), fedora-clang-devel (r-devel)
83 | checking HTML version of manual ... NOTE
84 | Skipping checking HTML validation: no command 'tidy' found
85 |
86 | ❯ On fedora-clang-devel (r-devel)
87 | checking CRAN incoming feasibility ... [12s/39s] NOTE
88 | Maintainer: ‘David Munoz Tord ’
89 |
90 | New maintainer:
91 | David Munoz Tord
92 | Old maintainer(s):
93 | John Coene
94 |
95 | 0 error ✖ | 0 warnings ✔ | 3 notes ✖
--------------------------------------------------------------------------------
/docs/.nojekyll:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/docs/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/apple-touch-icon.png
--------------------------------------------------------------------------------
/docs/articles/firebase_email_password.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/firebase_email_password.gif
--------------------------------------------------------------------------------
/docs/articles/firebase_redirect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/firebase_redirect.png
--------------------------------------------------------------------------------
/docs/articles/firebase_yahoo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/firebase_yahoo.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_github.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_github_popup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_github_popup.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_google.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_home.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_project.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_project.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_signin_method.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_signin_method.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_social.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_social.gif
--------------------------------------------------------------------------------
/docs/articles/fireblaze_step_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_step_1.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_step_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_step_2.png
--------------------------------------------------------------------------------
/docs/articles/fireblaze_users.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblaze_users.png
--------------------------------------------------------------------------------
/docs/articles/fireblazer_project_setup1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/fireblazer_project_setup1.png
--------------------------------------------------------------------------------
/docs/articles/github_oauth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/github_oauth.png
--------------------------------------------------------------------------------
/docs/articles/ui_simple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/articles/ui_simple.png
--------------------------------------------------------------------------------
/docs/bootstrap-toc.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/)
3 | * Copyright 2015 Aidan Feldman
4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */
5 |
6 | /* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */
7 |
8 | /* All levels of nav */
9 | nav[data-toggle='toc'] .nav > li > a {
10 | display: block;
11 | padding: 4px 20px;
12 | font-size: 13px;
13 | font-weight: 500;
14 | color: #767676;
15 | }
16 | nav[data-toggle='toc'] .nav > li > a:hover,
17 | nav[data-toggle='toc'] .nav > li > a:focus {
18 | padding-left: 19px;
19 | color: #563d7c;
20 | text-decoration: none;
21 | background-color: transparent;
22 | border-left: 1px solid #563d7c;
23 | }
24 | nav[data-toggle='toc'] .nav > .active > a,
25 | nav[data-toggle='toc'] .nav > .active:hover > a,
26 | nav[data-toggle='toc'] .nav > .active:focus > a {
27 | padding-left: 18px;
28 | font-weight: bold;
29 | color: #563d7c;
30 | background-color: transparent;
31 | border-left: 2px solid #563d7c;
32 | }
33 |
34 | /* Nav: second level (shown on .active) */
35 | nav[data-toggle='toc'] .nav .nav {
36 | display: none; /* Hide by default, but at >768px, show it */
37 | padding-bottom: 10px;
38 | }
39 | nav[data-toggle='toc'] .nav .nav > li > a {
40 | padding-top: 1px;
41 | padding-bottom: 1px;
42 | padding-left: 30px;
43 | font-size: 12px;
44 | font-weight: normal;
45 | }
46 | nav[data-toggle='toc'] .nav .nav > li > a:hover,
47 | nav[data-toggle='toc'] .nav .nav > li > a:focus {
48 | padding-left: 29px;
49 | }
50 | nav[data-toggle='toc'] .nav .nav > .active > a,
51 | nav[data-toggle='toc'] .nav .nav > .active:hover > a,
52 | nav[data-toggle='toc'] .nav .nav > .active:focus > a {
53 | padding-left: 28px;
54 | font-weight: 500;
55 | }
56 |
57 | /* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */
58 | nav[data-toggle='toc'] .nav > .active > ul {
59 | display: block;
60 | }
61 |
--------------------------------------------------------------------------------
/docs/docsearch.js:
--------------------------------------------------------------------------------
1 | $(function() {
2 |
3 | // register a handler to move the focus to the search bar
4 | // upon pressing shift + "/" (i.e. "?")
5 | $(document).on('keydown', function(e) {
6 | if (e.shiftKey && e.keyCode == 191) {
7 | e.preventDefault();
8 | $("#search-input").focus();
9 | }
10 | });
11 |
12 | $(document).ready(function() {
13 | // do keyword highlighting
14 | /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */
15 | var mark = function() {
16 |
17 | var referrer = document.URL ;
18 | var paramKey = "q" ;
19 |
20 | if (referrer.indexOf("?") !== -1) {
21 | var qs = referrer.substr(referrer.indexOf('?') + 1);
22 | var qs_noanchor = qs.split('#')[0];
23 | var qsa = qs_noanchor.split('&');
24 | var keyword = "";
25 |
26 | for (var i = 0; i < qsa.length; i++) {
27 | var currentParam = qsa[i].split('=');
28 |
29 | if (currentParam.length !== 2) {
30 | continue;
31 | }
32 |
33 | if (currentParam[0] == paramKey) {
34 | keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20"));
35 | }
36 | }
37 |
38 | if (keyword !== "") {
39 | $(".contents").unmark({
40 | done: function() {
41 | $(".contents").mark(keyword);
42 | }
43 | });
44 | }
45 | }
46 | };
47 |
48 | mark();
49 | });
50 | });
51 |
52 | /* Search term highlighting ------------------------------*/
53 |
54 | function matchedWords(hit) {
55 | var words = [];
56 |
57 | var hierarchy = hit._highlightResult.hierarchy;
58 | // loop to fetch from lvl0, lvl1, etc.
59 | for (var idx in hierarchy) {
60 | words = words.concat(hierarchy[idx].matchedWords);
61 | }
62 |
63 | var content = hit._highlightResult.content;
64 | if (content) {
65 | words = words.concat(content.matchedWords);
66 | }
67 |
68 | // return unique words
69 | var words_uniq = [...new Set(words)];
70 | return words_uniq;
71 | }
72 |
73 | function updateHitURL(hit) {
74 |
75 | var words = matchedWords(hit);
76 | var url = "";
77 |
78 | if (hit.anchor) {
79 | url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor;
80 | } else {
81 | url = hit.url + '?q=' + escape(words.join(" "));
82 | }
83 |
84 | return url;
85 | }
86 |
--------------------------------------------------------------------------------
/docs/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/favicon-16x16.png
--------------------------------------------------------------------------------
/docs/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/favicon-32x32.png
--------------------------------------------------------------------------------
/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/favicon.ico
--------------------------------------------------------------------------------
/docs/link.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
--------------------------------------------------------------------------------
/docs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/logo.png
--------------------------------------------------------------------------------
/docs/pkgdown.js:
--------------------------------------------------------------------------------
1 | /* http://gregfranko.com/blog/jquery-best-practices/ */
2 | (function($) {
3 | $(function() {
4 |
5 | $('.navbar-fixed-top').headroom();
6 |
7 | $('body').css('padding-top', $('.navbar').height() + 10);
8 | $(window).resize(function(){
9 | $('body').css('padding-top', $('.navbar').height() + 10);
10 | });
11 |
12 | $('[data-toggle="tooltip"]').tooltip();
13 |
14 | var cur_path = paths(location.pathname);
15 | var links = $("#navbar ul li a");
16 | var max_length = -1;
17 | var pos = -1;
18 | for (var i = 0; i < links.length; i++) {
19 | if (links[i].getAttribute("href") === "#")
20 | continue;
21 | // Ignore external links
22 | if (links[i].host !== location.host)
23 | continue;
24 |
25 | var nav_path = paths(links[i].pathname);
26 |
27 | var length = prefix_length(nav_path, cur_path);
28 | if (length > max_length) {
29 | max_length = length;
30 | pos = i;
31 | }
32 | }
33 |
34 | // Add class to parent
, and enclosing
if in dropdown
35 | if (pos >= 0) {
36 | var menu_anchor = $(links[pos]);
37 | menu_anchor.parent().addClass("active");
38 | menu_anchor.closest("li.dropdown").addClass("active");
39 | }
40 | });
41 |
42 | function paths(pathname) {
43 | var pieces = pathname.split("/");
44 | pieces.shift(); // always starts with /
45 |
46 | var end = pieces[pieces.length - 1];
47 | if (end === "index.html" || end === "")
48 | pieces.pop();
49 | return(pieces);
50 | }
51 |
52 | // Returns -1 if not found
53 | function prefix_length(needle, haystack) {
54 | if (needle.length > haystack.length)
55 | return(-1);
56 |
57 | // Special case for length-0 haystack, since for loop won't run
58 | if (haystack.length === 0) {
59 | return(needle.length === 0 ? 0 : -1);
60 | }
61 |
62 | for (var i = 0; i < haystack.length; i++) {
63 | if (needle[i] != haystack[i])
64 | return(i);
65 | }
66 |
67 | return(haystack.length);
68 | }
69 |
70 | /* Clipboard --------------------------*/
71 |
72 | function changeTooltipMessage(element, msg) {
73 | var tooltipOriginalTitle=element.getAttribute('data-original-title');
74 | element.setAttribute('data-original-title', msg);
75 | $(element).tooltip('show');
76 | element.setAttribute('data-original-title', tooltipOriginalTitle);
77 | }
78 |
79 | if(ClipboardJS.isSupported()) {
80 | $(document).ready(function() {
81 | var copyButton = "";
82 |
83 | $("div.sourceCode").addClass("hasCopyButton");
84 |
85 | // Insert copy buttons:
86 | $(copyButton).prependTo(".hasCopyButton");
87 |
88 | // Initialize tooltips:
89 | $('.btn-copy-ex').tooltip({container: 'body'});
90 |
91 | // Initialize clipboard:
92 | var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', {
93 | text: function(trigger) {
94 | return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, "");
95 | }
96 | });
97 |
98 | clipboardBtnCopies.on('success', function(e) {
99 | changeTooltipMessage(e.trigger, 'Copied!');
100 | e.clearSelection();
101 | });
102 |
103 | clipboardBtnCopies.on('error', function() {
104 | changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy');
105 | });
106 | });
107 | }
108 | })(window.jQuery || window.$)
109 |
--------------------------------------------------------------------------------
/docs/pkgdown.yml:
--------------------------------------------------------------------------------
1 | pandoc: 3.1.1
2 | pkgdown: 2.0.7
3 | pkgdown_sha: ~
4 | articles:
5 | analytics: analytics.html
6 | demo: demo.html
7 | email-link: email-link.html
8 | email-password: email-password.html
9 | flow: flow.html
10 | get-started: get-started.html
11 | manage: manage.html
12 | oauth-providers: oauth-providers.html
13 | phone: phone.html
14 | social: social.html
15 | state-persistence: state-persistence.html
16 | storage: storage.html
17 | ui: ui.html
18 | last_built: 2023-07-04T12:12Z
19 |
20 |
--------------------------------------------------------------------------------
/docs/reference/Rplot001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/reference/Rplot001.png
--------------------------------------------------------------------------------
/docs/reference/figures/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JohnCoene/firebase/01bf3e4f1186aa1bcb6c106eac1b55fc713d9d49/docs/reference/figures/logo.png
--------------------------------------------------------------------------------
/docs/sitemap.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | /404.html
5 |
6 |
7 | /CODE_OF_CONDUCT.html
8 |
9 |
10 | /LICENSE.html
11 |
12 |
13 | /SECURITY.html
14 |
15 |
16 | /articles/analytics.html
17 |
18 |
19 | /articles/demo.html
20 |
21 |
22 | /articles/email-link.html
23 |
24 |
25 | /articles/email-password.html
26 |
27 |
28 | /articles/flow.html
29 |
30 |
31 | /articles/get-started.html
32 |
33 |
34 | /articles/index.html
35 |
36 |
37 | /articles/manage.html
38 |
39 |
40 | /articles/oauth-providers.html
41 |
42 |
43 | /articles/phone.html
44 |
45 |
46 | /articles/social.html
47 |
48 |
49 | /articles/state-persistence.html
50 |
51 |
52 | /articles/storage.html
53 |
54 |
55 | /articles/ui.html
56 |
57 |
58 | /authors.html
59 |
60 |
61 | /index.html
62 |
63 |
64 | /news/index.html
65 |
66 |
67 | /reference/Analytics.html
68 |
69 |
70 | /reference/Firebase.html
71 |
72 |
73 | /reference/FirebaseAuth.html
74 |
75 |
76 | /reference/FirebaseEmailLink.html
77 |
78 |
79 | /reference/FirebaseEmailPassword.html
80 |
81 |
82 | /reference/FirebaseOauthProviders.html
83 |
84 |
85 | /reference/FirebasePhone.html
86 |
87 |
88 | /reference/FirebaseSocial.html
89 |
90 |
91 | /reference/FirebaseUI.html
92 |
93 |
94 | /reference/RealtimeDatabase.html
95 |
96 |
97 | /reference/Storage.html
98 |
99 |
100 | /reference/check_installed.html
101 |
102 |
103 | /reference/check_providers.html
104 |
105 |
106 | /reference/check_urls.html
107 |
108 |
109 | /reference/config.html
110 |
111 |
112 | /reference/create_unique_id.html
113 |
114 |
115 | /reference/dependencies.html
116 |
117 |
118 | /reference/encryption.html
119 |
120 |
121 | /reference/get_config_from_env.html
122 |
123 |
124 | /reference/get_config_from_file.html
125 |
126 |
127 | /reference/index.html
128 |
129 |
130 | /reference/pkg_file.html
131 |
132 |
133 | /reference/read_config.html
134 |
135 |
136 | /reference/recaptcha.html
137 |
138 |
139 | /reference/reqSignin.html
140 |
141 |
142 | /reference/reqSignout.html
143 |
144 |
145 |
--------------------------------------------------------------------------------
/inst/app/app.R:
--------------------------------------------------------------------------------
1 | library(shiny)
2 | library(firebase)
3 |
4 | ui <- fluidPage(
5 | useFirebase(),
6 | firebaseUIContainer(),
7 | reqSignin(actionButton("signout", "Sign out")),
8 | uiOutput("msg"),
9 | plotOutput("plot")
10 | )
11 |
12 | server <- function(input, output){
13 | f <- FirebaseUI$
14 | new("session")$
15 | set_providers(
16 | email = TRUE,
17 | google = TRUE,
18 | github = TRUE,
19 | twitter = TRUE,
20 | facebook = TRUE,
21 | microsoft = TRUE
22 | )$
23 | launch()
24 |
25 | output$plot <- renderPlot({
26 | f$req_sign_in() # require sign in
27 | plot(cars)
28 | })
29 |
30 | output$msg <- renderUI({
31 | f$req_sign_in() # require sign in
32 |
33 | user <- f$get_signed_in() # get logged in user info
34 | print(user)
35 |
36 | h4("Welcome,", user$response$displayName)
37 | })
38 |
39 | observeEvent(input$signout, {
40 | f$sign_out()
41 | })
42 |
43 | }
44 |
45 | shinyApp(ui, server)
46 |
--------------------------------------------------------------------------------
/inst/packer/analytics.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2019 Google LLC
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * @license
20 | * Copyright 2020 Google LLC
21 | *
22 | * Licensed under the Apache License, Version 2.0 (the "License");
23 | * you may not use this file except in compliance with the License.
24 | * You may obtain a copy of the License at
25 | *
26 | * http://www.apache.org/licenses/LICENSE-2.0
27 | *
28 | * Unless required by applicable law or agreed to in writing, software
29 | * distributed under the License is distributed on an "AS IS" BASIS,
30 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 | * See the License for the specific language governing permissions and
32 | * limitations under the License.
33 | */
34 |
--------------------------------------------------------------------------------
/inst/packer/auth.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2017 Google LLC
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * @license
20 | * Copyright 2019 Google LLC
21 | *
22 | * Licensed under the Apache License, Version 2.0 (the "License");
23 | * you may not use this file except in compliance with the License.
24 | * You may obtain a copy of the License at
25 | *
26 | * http://www.apache.org/licenses/LICENSE-2.0
27 | *
28 | * Unless required by applicable law or agreed to in writing, software
29 | * distributed under the License is distributed on an "AS IS" BASIS,
30 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 | * See the License for the specific language governing permissions and
32 | * limitations under the License.
33 | */
34 |
35 | /**
36 | * @license
37 | * Copyright 2020 Google LLC
38 | *
39 | * Licensed under the Apache License, Version 2.0 (the "License");
40 | * you may not use this file except in compliance with the License.
41 | * You may obtain a copy of the License at
42 | *
43 | * http://www.apache.org/licenses/LICENSE-2.0
44 | *
45 | * Unless required by applicable law or agreed to in writing, software
46 | * distributed under the License is distributed on an "AS IS" BASIS,
47 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
48 | * See the License for the specific language governing permissions and
49 | * limitations under the License.
50 | */
51 |
52 | /**
53 | * @license
54 | * Copyright 2020 Google LLC.
55 | *
56 | * Licensed under the Apache License, Version 2.0 (the "License");
57 | * you may not use this file except in compliance with the License.
58 | * You may obtain a copy of the License at
59 | *
60 | * http://www.apache.org/licenses/LICENSE-2.0
61 | *
62 | * Unless required by applicable law or agreed to in writing, software
63 | * distributed under the License is distributed on an "AS IS" BASIS,
64 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
65 | * See the License for the specific language governing permissions and
66 | * limitations under the License.
67 | */
68 |
69 | /**
70 | * @license
71 | * Copyright 2021 Google LLC
72 | *
73 | * Licensed under the Apache License, Version 2.0 (the "License");
74 | * you may not use this file except in compliance with the License.
75 | * You may obtain a copy of the License at
76 | *
77 | * http://www.apache.org/licenses/LICENSE-2.0
78 | *
79 | * Unless required by applicable law or agreed to in writing, software
80 | * distributed under the License is distributed on an "AS IS" BASIS,
81 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
82 | * See the License for the specific language governing permissions and
83 | * limitations under the License.
84 | */
85 |
86 | /**
87 | * @license
88 | * Copyright 2022 Google LLC
89 | *
90 | * Licensed under the Apache License, Version 2.0 (the "License");
91 | * you may not use this file except in compliance with the License.
92 | * You may obtain a copy of the License at
93 | *
94 | * http://www.apache.org/licenses/LICENSE-2.0
95 | *
96 | * Unless required by applicable law or agreed to in writing, software
97 | * distributed under the License is distributed on an "AS IS" BASIS,
98 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
99 | * See the License for the specific language governing permissions and
100 | * limitations under the License.
101 | */
102 |
--------------------------------------------------------------------------------
/inst/packer/core.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2017 Google LLC
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * @license
20 | * Copyright 2019 Google LLC
21 | *
22 | * Licensed under the Apache License, Version 2.0 (the "License");
23 | * you may not use this file except in compliance with the License.
24 | * You may obtain a copy of the License at
25 | *
26 | * http://www.apache.org/licenses/LICENSE-2.0
27 | *
28 | * Unless required by applicable law or agreed to in writing, software
29 | * distributed under the License is distributed on an "AS IS" BASIS,
30 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 | * See the License for the specific language governing permissions and
32 | * limitations under the License.
33 | */
34 |
35 | /**
36 | * @license
37 | * Copyright 2020 Google LLC
38 | *
39 | * Licensed under the Apache License, Version 2.0 (the "License");
40 | * you may not use this file except in compliance with the License.
41 | * You may obtain a copy of the License at
42 | *
43 | * http://www.apache.org/licenses/LICENSE-2.0
44 | *
45 | * Unless required by applicable law or agreed to in writing, software
46 | * distributed under the License is distributed on an "AS IS" BASIS,
47 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
48 | * See the License for the specific language governing permissions and
49 | * limitations under the License.
50 | */
51 |
52 | /**
53 | * @license
54 | * Copyright 2021 Google LLC
55 | *
56 | * Licensed under the Apache License, Version 2.0 (the "License");
57 | * you may not use this file except in compliance with the License.
58 | * You may obtain a copy of the License at
59 | *
60 | * http://www.apache.org/licenses/LICENSE-2.0
61 | *
62 | * Unless required by applicable law or agreed to in writing, software
63 | * distributed under the License is distributed on an "AS IS" BASIS,
64 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
65 | * See the License for the specific language governing permissions and
66 | * limitations under the License.
67 | */
68 |
69 | /**
70 | * @license
71 | * Copyright 2022 Google LLC
72 | *
73 | * Licensed under the Apache License, Version 2.0 (the "License");
74 | * you may not use this file except in compliance with the License.
75 | * You may obtain a copy of the License at
76 | *
77 | * http://www.apache.org/licenses/LICENSE-2.0
78 | *
79 | * Unless required by applicable law or agreed to in writing, software
80 | * distributed under the License is distributed on an "AS IS" BASIS,
81 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
82 | * See the License for the specific language governing permissions and
83 | * limitations under the License.
84 | */
85 |
--------------------------------------------------------------------------------
/inst/packer/email-link.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkfirebase_r=self.webpackChunkfirebase_r||[]).push([[840],{345:(e,s,n)=>{n(235);var i=n(774),a=n(118);Shiny.addCustomMessageHandler("fireblaze-send-email-link",(e=>{const s=(0,a.v0)();window.localStorage.setItem("fireblazeEmailSignIn",e.email),e.config.url||(e.config.url=window.location.href),(0,a.oo)(s,e.email,e.config).then((()=>{(0,i.H9)("email_link_sent",{success:!0,response:e.email},e.ns)})).catch((function(s){(0,i.H9)("email_link_sent",{success:!1,response:s},e.ns)}))}))}},e=>{e.O(0,[818,647],(()=>(345,e(e.s=345)))),e.O()}]);
--------------------------------------------------------------------------------
/inst/packer/email-password.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkfirebase_r=self.webpackChunkfirebase_r||[]).push([[372],{429:(s,e,n)=>{n(235);var c=n(774),a=n(118);Shiny.addCustomMessageHandler("fireblaze-create-email-password",(function(s){const e=(0,a.v0)();(0,a.Xb)(e,s.email,s.password).then((function(e){(0,c.H9)("created_email_user",{success:!0,response:e},s.ns)})).catch((function(e){(0,c.H9)("created_email_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-signin-email-password",(function(s){const e=(0,a.v0)();(0,a.e5)(e,s.email,s.password).then((function(e){(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((function(e){(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-send-verification-email",(function(s){var e=(0,a.v0)().currentUser;(0,a.w$)(e).then((function(){(0,c.H9)("verification_email_sent",{success:!0,response:"successful"},s.ns)})).catch((function(e){(0,c.H9)("verification_email_sent",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-reset-email",(function(s){const e=(0,a.v0)();(0,a.LS)(e,s.email).then((function(){(0,c.H9)("reset_email_sent",{success:!0,response:"successful"},s.ns)})).catch((function(e){(0,c.H9)("reset_email_sent",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-re-authenticate",(function(s){var e=(0,a.v0)().currentUser,n=firebase.auth.EmailAuthProvider.credential(e.email,s.password);(0,a.aF)(e,n).then((function(){(0,c.H9)("re_authenticate",{success:!0,response:"successful"},s.ns)})).catch((function(e){(0,c.H9)("re_authenticate",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-set-password",(function(s){var e=(0,a.v0)().currentUser;(0,a.gQ)(e,s.password).then((function(){(0,c.H9)("set_password",{success:!0,response:"successful"},s.ns)})).catch((function(e){(0,c.H9)("set_password",{success:!1,response:e},s.ns)}))}))}},s=>{s.O(0,[818,647],(()=>(429,s(s.s=429)))),s.O()}]);
--------------------------------------------------------------------------------
/inst/packer/firebaseui.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2015 Google Inc. All Rights Reserved.
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * @license
20 | * Copyright 2017 Google LLC
21 | *
22 | * Licensed under the Apache License, Version 2.0 (the "License");
23 | * you may not use this file except in compliance with the License.
24 | * You may obtain a copy of the License at
25 | *
26 | * http://www.apache.org/licenses/LICENSE-2.0
27 | *
28 | * Unless required by applicable law or agreed to in writing, software
29 | * distributed under the License is distributed on an "AS IS" BASIS,
30 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 | * See the License for the specific language governing permissions and
32 | * limitations under the License.
33 | */
34 |
35 | /**
36 | * @license
37 | * Copyright 2019 Google LLC
38 | *
39 | * Licensed under the Apache License, Version 2.0 (the "License");
40 | * you may not use this file except in compliance with the License.
41 | * You may obtain a copy of the License at
42 | *
43 | * http://www.apache.org/licenses/LICENSE-2.0
44 | *
45 | * Unless required by applicable law or agreed to in writing, software
46 | * distributed under the License is distributed on an "AS IS" BASIS,
47 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
48 | * See the License for the specific language governing permissions and
49 | * limitations under the License.
50 | */
51 |
52 | /**
53 | * @license
54 | * Copyright 2020 Google LLC
55 | *
56 | * Licensed under the Apache License, Version 2.0 (the "License");
57 | * you may not use this file except in compliance with the License.
58 | * You may obtain a copy of the License at
59 | *
60 | * http://www.apache.org/licenses/LICENSE-2.0
61 | *
62 | * Unless required by applicable law or agreed to in writing, software
63 | * distributed under the License is distributed on an "AS IS" BASIS,
64 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
65 | * See the License for the specific language governing permissions and
66 | * limitations under the License.
67 | */
68 |
69 | /**
70 | * @license
71 | * Copyright 2020 Google LLC.
72 | *
73 | * Licensed under the Apache License, Version 2.0 (the "License");
74 | * you may not use this file except in compliance with the License.
75 | * You may obtain a copy of the License at
76 | *
77 | * http://www.apache.org/licenses/LICENSE-2.0
78 | *
79 | * Unless required by applicable law or agreed to in writing, software
80 | * distributed under the License is distributed on an "AS IS" BASIS,
81 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
82 | * See the License for the specific language governing permissions and
83 | * limitations under the License.
84 | */
85 |
86 | /**
87 | * @license
88 | * Copyright 2021 Google LLC
89 | *
90 | * Licensed under the Apache License, Version 2.0 (the "License");
91 | * you may not use this file except in compliance with the License.
92 | * You may obtain a copy of the License at
93 | *
94 | * http://www.apache.org/licenses/LICENSE-2.0
95 | *
96 | * Unless required by applicable law or agreed to in writing, software
97 | * distributed under the License is distributed on an "AS IS" BASIS,
98 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
99 | * See the License for the specific language governing permissions and
100 | * limitations under the License.
101 | */
102 |
--------------------------------------------------------------------------------
/inst/packer/oauth.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkfirebase_r=self.webpackChunkfirebase_r||[]).push([[199],{471:(e,s,n)=>{n(235);var r=n(774),i=n(118);let c=[];Shiny.addCustomMessageHandler("fireblaze-set-oauth-provider",(e=>{c[e.id]=new i.O4(e.provider),Object.entries(e.opts).length>0&&c[e.id].setCustomParameters(e.opts)})),Shiny.addCustomMessageHandler("fireblaze-oauth-sign-in-popup",(e=>{const s=(0,i.v0)();(0,i.rh)(s,c[e.id]).then((s=>{if(e.credentials){const e=i.O4.credentialFromResult(s);s.credentials={idToken:e.idToken,accessToken:e.accessToken}}(0,r.H9)("signed_up_user",{success:!0,response:s},e.ns)})).catch((s=>{(0,r.H9)("signed_up_user",{success:!1,response:s},e.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-oauth-sign-in-redirect",(e=>{const s=(0,i.v0)();(0,i.F6)(s,c[e.id]),(0,i.cx)().then((s=>{if(e.credentials){const e=i.O4.credentialFromResult(s);s.credentials={idToken:e.idToken,accessToken:e.accessToken}}(0,r.H9)("signed_up_user",{success:!0,response:s},e.ns)})).catch((s=>{(0,r.H9)("signed_up_user",{success:!1,response:s},e.ns)}))}))}},e=>{e.O(0,[818,647],(()=>(471,e(e.s=471)))),e.O()}]);
--------------------------------------------------------------------------------
/inst/packer/phone.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkfirebase_r=self.webpackChunkfirebase_r||[]).push([[214],{44:(e,s,n)=>{n(235);var c,a,r=n(774),i=n(118);Shiny.addCustomMessageHandler("fireblaze-phone-verify",(e=>{const s=(0,i.v0)();a||(a="firebase-recaptcha"==e.id?new i.lI(e.id,{callback:s=>{(0,r.H9)("phone_recaptcha",s,e.ns)}},s):new i.lI(e.id,{size:"invisible",callback:s=>{(0,r.H9)("phone_recaptcha",s,e.ns)}},s)),(0,i.$g)(s,e.number,a).then((s=>{c=s,(0,r.H9)("phone_verification",{success:!0,response:s},e.ns)})).catch((s=>{a.render().then((function(e){grecaptcha.reset(e)})),(0,r.H9)("phone_verification",{success:!1,response:s},e.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-phone-confirm",(e=>{c&&c.confirm(e.code).then((s=>{(0,r.H9)("phone_confirmation",{success:!0,response:s},e.ns)})).catch((s=>{(0,r.H9)("phone_confirmation",{success:!1,response:s},e.ns)}))}))}},e=>{e.O(0,[818,647],(()=>(44,e(e.s=44)))),e.O()}]);
--------------------------------------------------------------------------------
/inst/packer/real-time.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2017 Google LLC
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * @license
20 | * Copyright 2019 Google LLC
21 | *
22 | * Licensed under the Apache License, Version 2.0 (the "License");
23 | * you may not use this file except in compliance with the License.
24 | * You may obtain a copy of the License at
25 | *
26 | * http://www.apache.org/licenses/LICENSE-2.0
27 | *
28 | * Unless required by applicable law or agreed to in writing, software
29 | * distributed under the License is distributed on an "AS IS" BASIS,
30 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 | * See the License for the specific language governing permissions and
32 | * limitations under the License.
33 | */
34 |
35 | /**
36 | * @license
37 | * Copyright 2020 Google LLC
38 | *
39 | * Licensed under the Apache License, Version 2.0 (the "License");
40 | * you may not use this file except in compliance with the License.
41 | * You may obtain a copy of the License at
42 | *
43 | * http://www.apache.org/licenses/LICENSE-2.0
44 | *
45 | * Unless required by applicable law or agreed to in writing, software
46 | * distributed under the License is distributed on an "AS IS" BASIS,
47 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
48 | * See the License for the specific language governing permissions and
49 | * limitations under the License.
50 | */
51 |
52 | /**
53 | * @license
54 | * Copyright 2021 Google LLC
55 | *
56 | * Licensed under the Apache License, Version 2.0 (the "License");
57 | * you may not use this file except in compliance with the License.
58 | * You may obtain a copy of the License at
59 | *
60 | * http://www.apache.org/licenses/LICENSE-2.0
61 | *
62 | * Unless required by applicable law or agreed to in writing, software
63 | * distributed under the License is distributed on an "AS IS" BASIS,
64 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
65 | * See the License for the specific language governing permissions and
66 | * limitations under the License.
67 | */
68 |
--------------------------------------------------------------------------------
/inst/packer/runtime.js:
--------------------------------------------------------------------------------
1 | (()=>{"use strict";var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={id:e,exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.amdD=function(){throw new Error("define cannot be used indirect")},e=[],o.O=(r,t,n,i)=>{if(!t){var a=1/0;for(s=0;s=i)&&Object.keys(o.O).every((e=>o.O[e](t[l])))?t.splice(l--,1):(f=!1,i0&&e[s-1][2]>i;s--)e[s]=e[s-1];e[s]=[t,n,i]},o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{o.b=document.baseURI||self.location.href;var e={666:0};o.O.j=r=>0===e[r];var r=(r,t)=>{var n,i,[a,f,l]=t,u=0;if(a.some((r=>0!==e[r]))){for(n in f)o.o(f,n)&&(o.m[n]=f[n]);if(l)var s=l(o)}for(r&&r(t);u{n(235);var c=n(774),r=n(118);let u=new r.c4,i=new r._O,a=new r.GH,d=new r.hJ;Shiny.addCustomMessageHandler("fireblaze-google-scope",(s=>{d.addScope(s)})),Shiny.addCustomMessageHandler("fireblaze-google-sign-in-popup",(s=>{const e=(0,r.v0)();(0,r.rh)(e,d).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-google-sign-in-redirect",(s=>{const e=(0,r.v0)();(0,r.F6)(e,d),(0,r.cx)(e).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-facebook-scope",(s=>{i.addScope(s)})),Shiny.addCustomMessageHandler("fireblaze-facebook-sign-in-popup",(s=>{const e=(0,r.v0)();(0,r.rh)(e,i).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-facebook-sign-in-redirect",(s=>{const e=(0,r.v0)();(0,r.F6)(e,i),(0,r.cx)(e).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-github-scope",(s=>{a.addScope(s)})),Shiny.addCustomMessageHandler("fireblaze-github-sign-in-popup",(s=>{const e=(0,r.v0)();(0,r.rh)(e,a).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-github-sign-in-redirect",(s=>{const e=(0,r.v0)();(0,r.F6)(e,a),(0,r.cx)(e).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-twitter-scope",(s=>{u.addScope(s)})),Shiny.addCustomMessageHandler("fireblaze-twitter-sign-in-popup",(s=>{const e=(0,r.v0)();(0,r.rh)(e,u).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))})),Shiny.addCustomMessageHandler("fireblaze-twitter-sign-in-redirect",(s=>{const e=(0,r.v0)();(0,r.F6)(e,u),(0,r.cx)(e).then((e=>{(0,c.H9)("signed_up_user",{success:!0,response:e},s.ns)})).catch((e=>{(0,c.H9)("signed_up_user",{success:!1,response:e},s.ns)}))}))}},s=>{s.O(0,[818,647],(()=>(960,s(s.s=960)))),s.O()}]);
--------------------------------------------------------------------------------
/inst/packer/storage.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2017 Google LLC
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * @license
20 | * Copyright 2019 Google LLC
21 | *
22 | * Licensed under the Apache License, Version 2.0 (the "License");
23 | * you may not use this file except in compliance with the License.
24 | * You may obtain a copy of the License at
25 | *
26 | * http://www.apache.org/licenses/LICENSE-2.0
27 | *
28 | * Unless required by applicable law or agreed to in writing, software
29 | * distributed under the License is distributed on an "AS IS" BASIS,
30 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 | * See the License for the specific language governing permissions and
32 | * limitations under the License.
33 | */
34 |
35 | /**
36 | * @license
37 | * Copyright 2021 Google LLC
38 | *
39 | * Licensed under the Apache License, Version 2.0 (the "License");
40 | * you may not use this file except in compliance with the License.
41 | * You may obtain a copy of the License at
42 | *
43 | * http://www.apache.org/licenses/LICENSE-2.0
44 | *
45 | * Unless required by applicable law or agreed to in writing, software
46 | * distributed under the License is distributed on an "AS IS" BASIS,
47 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
48 | * See the License for the specific language governing permissions and
49 | * limitations under the License.
50 | */
51 |
--------------------------------------------------------------------------------
/inst/packer/ui.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2015 Google Inc. All Rights Reserved.
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * @license
20 | * Copyright 2017 Google LLC
21 | *
22 | * Licensed under the Apache License, Version 2.0 (the "License");
23 | * you may not use this file except in compliance with the License.
24 | * You may obtain a copy of the License at
25 | *
26 | * http://www.apache.org/licenses/LICENSE-2.0
27 | *
28 | * Unless required by applicable law or agreed to in writing, software
29 | * distributed under the License is distributed on an "AS IS" BASIS,
30 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 | * See the License for the specific language governing permissions and
32 | * limitations under the License.
33 | */
34 |
35 | /**
36 | * @license
37 | * Copyright 2019 Google LLC
38 | *
39 | * Licensed under the Apache License, Version 2.0 (the "License");
40 | * you may not use this file except in compliance with the License.
41 | * You may obtain a copy of the License at
42 | *
43 | * http://www.apache.org/licenses/LICENSE-2.0
44 | *
45 | * Unless required by applicable law or agreed to in writing, software
46 | * distributed under the License is distributed on an "AS IS" BASIS,
47 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
48 | * See the License for the specific language governing permissions and
49 | * limitations under the License.
50 | */
51 |
52 | /**
53 | * @license
54 | * Copyright 2020 Google LLC
55 | *
56 | * Licensed under the Apache License, Version 2.0 (the "License");
57 | * you may not use this file except in compliance with the License.
58 | * You may obtain a copy of the License at
59 | *
60 | * http://www.apache.org/licenses/LICENSE-2.0
61 | *
62 | * Unless required by applicable law or agreed to in writing, software
63 | * distributed under the License is distributed on an "AS IS" BASIS,
64 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
65 | * See the License for the specific language governing permissions and
66 | * limitations under the License.
67 | */
68 |
69 | /**
70 | * @license
71 | * Copyright 2021 Google LLC
72 | *
73 | * Licensed under the Apache License, Version 2.0 (the "License");
74 | * you may not use this file except in compliance with the License.
75 | * You may obtain a copy of the License at
76 | *
77 | * http://www.apache.org/licenses/LICENSE-2.0
78 | *
79 | * Unless required by applicable law or agreed to in writing, software
80 | * distributed under the License is distributed on an "AS IS" BASIS,
81 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
82 | * See the License for the specific language governing permissions and
83 | * limitations under the License.
84 | */
85 |
--------------------------------------------------------------------------------
/inst/packer/utilities.js:
--------------------------------------------------------------------------------
1 | "use strict";(self.webpackChunkfirebase_r=self.webpackChunkfirebase_r||[]).push([[647],{774:(e,s,i)=>{i.d(s,{H9:()=>o,T1:()=>t,eL:()=>n,fh:()=>l,k_:()=>a,qm:()=>h}),i(235);var r=i(118);const a=e=>{if("none"!=e)return"memory"==e?r.BV:"session"==e?r.aT:r.a$},n=e=>{for(var s=document.getElementsByClassName("fireblaze__requires__signin"),i=0;i{for(var s=document.getElementsByClassName("fireblaze__requires__signout"),i=0;i{i||(i=window.globalNs),Shiny.setInputValue(`${i}fireblaze_${e}`,s)},t=(e,s,i)=>{i||(i=window.globalNs),Shiny.setInputValue(`${i}${e}`,s)},h=e=>{if(!e)return;const s=(0,r.v0)();s.languageCode="browser"!=e?e:s.useDeviceLanguage()}},235:e=>{e.exports=Shiny}},e=>{e.O(0,[818],(()=>(774,e(e.s=774)))),e.O()}]);
--------------------------------------------------------------------------------
/makefile:
--------------------------------------------------------------------------------
1 | check: document
2 | Rscript -e "devtools::check()"
3 |
4 | document: bundle
5 | Rscript -e "devtools::document()"
6 |
7 | bundle:
8 | Rscript -e "packer::bundle()"
9 |
--------------------------------------------------------------------------------
/man/Firebase.Rd:
--------------------------------------------------------------------------------
1 | % Generated by roxygen2: do not edit by hand
2 | % Please edit documentation in R/class-core.R
3 | \name{Firebase}
4 | \alias{Firebase}
5 | \title{Firebase}
6 | \value{
7 | An object of class \code{Firebase}.
8 | }
9 | \description{
10 | Core Firebase class.
11 | }
12 | \section{Public fields}{
13 | \if{html}{\out{