From 705c62b3883a9aa3619deca79ec6e0515cbe2c4a Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:22:43 -0400 Subject: [PATCH 01/56] Add devfest-authorized-page.test.js and Update test.js --- gulp/test.js | 3 ++- .../devfest-authorized-page.test.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test.js diff --git a/gulp/test.js b/gulp/test.js index 261c1af..0a1a4e3 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -1,2 +1,3 @@ import '../core/shell/index.test' -import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' \ No newline at end of file +import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' +import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' \ No newline at end of file diff --git a/src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test.js b/src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test.js new file mode 100644 index 0000000..c98c6fb --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-authorized-page' + +describe('Devfest authorized page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-authorized-page') + expect(el.constructor.is).to.equal('devfest-authorized-page') + }) +}) \ No newline at end of file From b39ce3c7a0396f4b05bdfb2ef41f835ccdc6e520 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:24:50 -0400 Subject: [PATCH 02/56] Update test.js --- gulp/test.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gulp/test.js b/gulp/test.js index 0a1a4e3..2634f86 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -1,3 +1,4 @@ import '../core/shell/index.test' import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' -import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' \ No newline at end of file +import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' \ No newline at end of file From 2a18ae00dc941ea776c6dec9860fe87911b05875 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:31:20 -0400 Subject: [PATCH 03/56] Add devfest-not-authorized-page.test.js --- .../devfes-not-authorized-page.test.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test.js diff --git a/src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test.js b/src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test.js new file mode 100644 index 0000000..ba1ea3c --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-not-authorized-page' + +describe('Devfest not authorized page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-not-authorized-page') + expect(el.constructor.is).to.equal('devfest-not-authorized-page') + }) +}) \ No newline at end of file From 84b17cabd98b10a7663d9494248336bc3c8bf4a4 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:39:37 -0400 Subject: [PATCH 04/56] Update test.js --- gulp/test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gulp/test.js b/gulp/test.js index 2634f86..22ceceb 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -1,4 +1,5 @@ import '../core/shell/index.test' -import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' -import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' \ No newline at end of file +import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' +import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test' From b9f2c9cd91ae1a129c435b5ae055b484dc61edd8 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:43:07 -0400 Subject: [PATCH 05/56] Add devfest-tickets-page.test.js --- .../devfest-tickets-page.test.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test.js diff --git a/src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test.js b/src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test.js new file mode 100644 index 0000000..6b1ee3e --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-tickets-page' + +describe('Devfest tickets page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-tickets-page') + expect(el.constructor.is).to.equal('devfest-tickets-page') + }) +}) \ No newline at end of file From a32eec3d533aa4894a16f3403c544356433db887 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:47:16 -0400 Subject: [PATCH 06/56] Update test.js --- gulp/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gulp/test.js b/gulp/test.js index 22ceceb..318ecba 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -2,4 +2,5 @@ import '../core/shell/index.test' import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test' import '../src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test' From 99ab2e25ab26d4be7102375b882042fff9de088c Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:50:10 -0400 Subject: [PATCH 07/56] Add devfest-sponsors-page.test.js --- .../devfest-sponsors-page.test.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test.js diff --git a/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test.js b/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test.js new file mode 100644 index 0000000..296aeca --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-sponsors-page' + +describe('Devfest sponsors page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-sponsors-page') + expect(el.constructor.is).to.equal('devfest-sponsors-page') + }) +}) \ No newline at end of file From 319b2f920069cc8eceb5c38e16722aacc844f9bf Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:52:58 -0400 Subject: [PATCH 08/56] Update test.js --- gulp/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gulp/test.js b/gulp/test.js index 318ecba..4ff310b 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -2,5 +2,6 @@ import '../core/shell/index.test' import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test' import '../src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test' import '../src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test' From 193d198435186b480767449faf3e9a4be4f2c3c0 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:55:42 -0400 Subject: [PATCH 09/56] Add devfest-speakers-page.test.js --- .../devfest-speakers-page.test.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test.js diff --git a/src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test.js b/src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test.js new file mode 100644 index 0000000..0f26252 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-speakers-page' + +describe('Devfest speakers page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-speakers-page') + expect(el.constructor.is).to.equal('devfest-speakers-page') + }) +}) \ No newline at end of file From c60d554fdcc07b3a354caf0bf83cc20890db8a5f Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 02:56:33 -0400 Subject: [PATCH 10/56] Update test.js --- gulp/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gulp/test.js b/gulp/test.js index 4ff310b..d5cb7fc 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -2,6 +2,7 @@ import '../core/shell/index.test' import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test' import '../src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test' import '../src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test' import '../src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.test' From 69d64644edc3cdb91931d000f4fde3ff9d128654 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 03:00:10 -0400 Subject: [PATCH 11/56] Add devfest-speaker-page.test.js --- .../devfest-speaker-page.test.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js diff --git a/src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js b/src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js new file mode 100644 index 0000000..905ddf7 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-speaker-page' + +describe('Devfest speaker page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-speaker-page') + expect(el.constructor.is).to.equal('devfest-speaker-page') + }) +}) \ No newline at end of file From 7ec7b50fd71fc1cc000b0d292bd44c9c89b07fb0 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 03:00:55 -0400 Subject: [PATCH 12/56] Update test.js --- gulp/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gulp/test.js b/gulp/test.js index d5cb7fc..614abf1 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -2,6 +2,7 @@ import '../core/shell/index.test' import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-sessions-page/devfest-sessions-page.test' import '../src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test' import '../src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test' import '../src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.test' From d7c002c098082489e11d341cd496b08cd7fd41b7 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 03:02:17 -0400 Subject: [PATCH 13/56] Add devfest-sessions-page.test.js --- .../devfest-sessions-page.test.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-sessions-page/devfest-sessions-page.test.js diff --git a/src/modules/devfest-module/pages/devfest-sessions-page/devfest-sessions-page.test.js b/src/modules/devfest-module/pages/devfest-sessions-page/devfest-sessions-page.test.js new file mode 100644 index 0000000..23f1451 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-sessions-page/devfest-sessions-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-sessions-page' + +describe('Devfest sessions page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-sessions-page') + expect(el.constructor.is).to.equal('devfest-sessions-page') + }) +}) \ No newline at end of file From 50f6029ebfe6db09be02a0c7a5b56bbca2d9b0e6 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 03:03:38 -0400 Subject: [PATCH 14/56] Update test.js --- gulp/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gulp/test.js b/gulp/test.js index 614abf1..7f10be5 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -2,6 +2,7 @@ import '../core/shell/index.test' import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-session-page/devfest-session-page.test' import '../src/modules/devfest-module/pages/devfest-sessions-page/devfest-sessions-page.test' import '../src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test' import '../src/modules/devfest-module/pages/devfest-speakers-page/devfest-speakers-page.test' From 86f03781fb1907d2bdc5397c05810f523bc5cabd Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 03:04:04 -0400 Subject: [PATCH 15/56] Add devfest-session-page.test.js --- .../devfest-session-page.test.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-session-page/devfest-session-page.test.js diff --git a/src/modules/devfest-module/pages/devfest-session-page/devfest-session-page.test.js b/src/modules/devfest-module/pages/devfest-session-page/devfest-session-page.test.js new file mode 100644 index 0000000..1411583 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-session-page/devfest-session-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-session-page' + +describe('Devfest session page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-session-page') + expect(el.constructor.is).to.equal('devfest-session-page') + }) +}) \ No newline at end of file From d0bb5d78720e09ef14ce688bc58fb743b5faa5aa Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 03:10:51 -0400 Subject: [PATCH 16/56] Update test.js devfest-not-found-page.test.js --- gulp/test.js | 1 + .../devfest-not-found-page.test.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 src/modules/devfest-module/pages/devfest-not-found-page/devfest-not-found-page.test.js diff --git a/gulp/test.js b/gulp/test.js index 7f10be5..4465202 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -2,6 +2,7 @@ import '../core/shell/index.test' import '../src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.test' import '../src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.test' import '../src/modules/devfest-module/pages/devfest-not-authorized-page/devfes-not-authorized-page.test' +import '../src/modules/devfest-module/pages/devfest-not-found-page/devfest-not-found-page.test' import '../src/modules/devfest-module/pages/devfest-session-page/devfest-session-page.test' import '../src/modules/devfest-module/pages/devfest-sessions-page/devfest-sessions-page.test' import '../src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test' diff --git a/src/modules/devfest-module/pages/devfest-not-found-page/devfest-not-found-page.test.js b/src/modules/devfest-module/pages/devfest-not-found-page/devfest-not-found-page.test.js new file mode 100644 index 0000000..df8fd24 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-not-found-page/devfest-not-found-page.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai' +import page from './devfest-not-found-page' + +describe('Devfest not found page', () => { + + it('should exist', () => { + expect(page).to.exist + }) + + it('should work', () => { + const el = document.createElement('devfest-not-found-page') + expect(el.constructor.is).to.equal('devfest-not-found-page') + }) +}) \ No newline at end of file From 84674ad735f480dfffbc22a888e2096ad95a1ab9 Mon Sep 17 00:00:00 2001 From: Rokuto Date: Tue, 10 Oct 2017 04:08:54 -0400 Subject: [PATCH 17/56] Error at devfest-speaker-page.test.js back button should exist --- .../pages/devfest-speaker-page/devfest-speaker-page.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js b/src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js index 905ddf7..72fb01a 100644 --- a/src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js +++ b/src/modules/devfest-module/pages/devfest-speaker-page/devfest-speaker-page.test.js @@ -11,4 +11,10 @@ describe('Devfest speaker page', () => { const el = document.createElement('devfest-speaker-page') expect(el.constructor.is).to.equal('devfest-speaker-page') }) + + it('back button should exist', () => { + const el = document.createElement('devfest-speaker-page') + const ret = el.shadowRoot.querySelector("section.back-section devfest-button[href='/speakers']") + expect(ret).to.exist + }) }) \ No newline at end of file From bb5582af90050575baba1bc042b100e99a2ff35e Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Tue, 10 Oct 2017 16:26:10 +0800 Subject: [PATCH 18/56] added state manager Signed-off-by: Toni-Jan Keith Monserrat --- .../mixins/app-network-status-mixin.html | 56 -- .../modules/firebase-property-mixin/.bowerrc | 1 - .../firebase-property-mixin/bower.json | 22 - .../mixins/firebase-property-mixin.html | 815 ------------------ .../scripts/pouchdb.html | 3 - archive/core/modules/permission-data/.bowerrc | 1 - .../core/modules/permission-data/bower.json | 15 - .../models/permission-data.html | 50 -- .../permission-data/reducers/reducers.html | 11 - .../core/modules/polyapp-location/.bowerrc | 1 - .../core/modules/polyapp-location/bower.json | 20 - .../components/polyapp-location.html | 387 --------- .../components/polyapp-query-params.html | 107 --- archive/core/modules/polyapp-router/.bowerrc | 1 - .../core/modules/polyapp-router/bower.json | 20 - .../components/polyapp-router.html | 499 ----------- archive/core/modules/polyapp-toast/.bowerrc | 1 - archive/core/modules/polyapp-toast/bower.json | 16 - .../components/polyapp-toast.html | 161 ---- archive/core/modules/user-data/.bowerrc | 1 - archive/core/modules/user-data/bower.json | 15 - .../modules/user-data/models/user-data.html | 322 ------- .../modules/user-data/reducers/reducers.html | 44 - archive/core/opts/state-manager.html | 21 - archive/core/root/index.hbs | 302 ------- archive/core/root/script.hbs | 1 - archive/core/scripts/index.js | 2 - archive/core/service-worker/routing.js | 21 - archive/core/shell/app-shell.html | 179 ---- archive/core/shell/test/app-shell.test.html | 38 - archive/core/test/core.test.html | 15 - archive/core/test/essentials.js | 85 -- archive/src/config/dev.json | 139 --- .../components/devfest-footer.html | 165 ---- .../devfest-module/components/gdg-logo.html | 23 - .../devfest-module/fonts/devfest-fonts.html | 2 - .../devfest-module/icons/devfest-icons.html | 25 - .../pages/devfest-call-for-speakers-page.html | 246 ------ .../pages/devfest-landing-page.html | 131 --- .../pages/devfest-not-authorized-page.html | 18 - .../pages/devfest-not-found-page.html | 18 - .../devfest-theme/components/_button.scss | 11 - .../devfest-theme/components/_footer.scss | 79 -- .../devfest-theme/components/_gdg-logo.scss | 11 - .../devfest-theme/components/_header.scss | 81 -- .../devfest-theme/components/_temp-link.scss | 16 - .../modules/devfest-theme/partials/_base.scss | 18 - archive/src/modules/devfest-theme/root.scss | 9 - archive/src/modules/devfest-theme/theme.json | 64 -- archive/src/modules/devfest-theme/theme.scss | 9 - .../example-data/models/example-data.html | 49 -- .../example-data/reducers/reducers.html | 11 - .../components/example-app-header.html | 0 .../pages/example-home-page.html | 0 .../pages/example-not-authorized-page.html | 0 .../pages/example-not-found-page.html | 0 archive/src/opts/auth-functions.html | 16 - archive/src/rules/database.dev.json | 4 - archive/src/scripts/index.js | 4 - archive/src/service-worker/routing.js | 14 - core/modules/state-manager/index.js | 12 + .../modules/state-manager/polymer-redux.js | 0 core/shell/index.js | 48 ++ package.json | 1 + yarn.lock | 21 + 65 files changed, 82 insertions(+), 4396 deletions(-) delete mode 100644 archive/core/modules/app-network-status/mixins/app-network-status-mixin.html delete mode 100644 archive/core/modules/firebase-property-mixin/.bowerrc delete mode 100644 archive/core/modules/firebase-property-mixin/bower.json delete mode 100644 archive/core/modules/firebase-property-mixin/mixins/firebase-property-mixin.html delete mode 100644 archive/core/modules/firebase-property-mixin/scripts/pouchdb.html delete mode 100644 archive/core/modules/permission-data/.bowerrc delete mode 100644 archive/core/modules/permission-data/bower.json delete mode 100644 archive/core/modules/permission-data/models/permission-data.html delete mode 100644 archive/core/modules/permission-data/reducers/reducers.html delete mode 100644 archive/core/modules/polyapp-location/.bowerrc delete mode 100644 archive/core/modules/polyapp-location/bower.json delete mode 100644 archive/core/modules/polyapp-location/components/polyapp-location.html delete mode 100644 archive/core/modules/polyapp-location/components/polyapp-query-params.html delete mode 100644 archive/core/modules/polyapp-router/.bowerrc delete mode 100644 archive/core/modules/polyapp-router/bower.json delete mode 100644 archive/core/modules/polyapp-router/components/polyapp-router.html delete mode 100644 archive/core/modules/polyapp-toast/.bowerrc delete mode 100644 archive/core/modules/polyapp-toast/bower.json delete mode 100644 archive/core/modules/polyapp-toast/components/polyapp-toast.html delete mode 100644 archive/core/modules/user-data/.bowerrc delete mode 100644 archive/core/modules/user-data/bower.json delete mode 100644 archive/core/modules/user-data/models/user-data.html delete mode 100644 archive/core/modules/user-data/reducers/reducers.html delete mode 100644 archive/core/opts/state-manager.html delete mode 100644 archive/core/root/index.hbs delete mode 100644 archive/core/root/script.hbs delete mode 100644 archive/core/scripts/index.js delete mode 100644 archive/core/service-worker/routing.js delete mode 100644 archive/core/shell/app-shell.html delete mode 100644 archive/core/shell/test/app-shell.test.html delete mode 100644 archive/core/test/core.test.html delete mode 100644 archive/core/test/essentials.js delete mode 100644 archive/src/config/dev.json delete mode 100644 archive/src/modules/devfest-module/components/devfest-footer.html delete mode 100644 archive/src/modules/devfest-module/components/gdg-logo.html delete mode 100644 archive/src/modules/devfest-module/fonts/devfest-fonts.html delete mode 100644 archive/src/modules/devfest-module/icons/devfest-icons.html delete mode 100644 archive/src/modules/devfest-module/pages/devfest-call-for-speakers-page.html delete mode 100644 archive/src/modules/devfest-module/pages/devfest-landing-page.html delete mode 100644 archive/src/modules/devfest-module/pages/devfest-not-authorized-page.html delete mode 100644 archive/src/modules/devfest-module/pages/devfest-not-found-page.html delete mode 100644 archive/src/modules/devfest-theme/components/_button.scss delete mode 100644 archive/src/modules/devfest-theme/components/_footer.scss delete mode 100644 archive/src/modules/devfest-theme/components/_gdg-logo.scss delete mode 100644 archive/src/modules/devfest-theme/components/_header.scss delete mode 100644 archive/src/modules/devfest-theme/components/_temp-link.scss delete mode 100644 archive/src/modules/devfest-theme/partials/_base.scss delete mode 100644 archive/src/modules/devfest-theme/root.scss delete mode 100644 archive/src/modules/devfest-theme/theme.json delete mode 100644 archive/src/modules/devfest-theme/theme.scss delete mode 100644 archive/src/modules/example-data/models/example-data.html delete mode 100644 archive/src/modules/example-data/reducers/reducers.html delete mode 100644 archive/src/modules/example-module/components/example-app-header.html delete mode 100644 archive/src/modules/example-module/pages/example-home-page.html delete mode 100644 archive/src/modules/example-module/pages/example-not-authorized-page.html delete mode 100644 archive/src/modules/example-module/pages/example-not-found-page.html delete mode 100644 archive/src/opts/auth-functions.html delete mode 100644 archive/src/rules/database.dev.json delete mode 100644 archive/src/scripts/index.js delete mode 100644 archive/src/service-worker/routing.js create mode 100644 core/modules/state-manager/index.js rename archive/src/modules/example-module/components/example-app-drawer.html => core/modules/state-manager/polymer-redux.js (100%) diff --git a/archive/core/modules/app-network-status/mixins/app-network-status-mixin.html b/archive/core/modules/app-network-status/mixins/app-network-status-mixin.html deleted file mode 100644 index 2f28c07..0000000 --- a/archive/core/modules/app-network-status/mixins/app-network-status-mixin.html +++ /dev/null @@ -1,56 +0,0 @@ - diff --git a/archive/core/modules/firebase-property-mixin/.bowerrc b/archive/core/modules/firebase-property-mixin/.bowerrc deleted file mode 100644 index 2969b9b..0000000 --- a/archive/core/modules/firebase-property-mixin/.bowerrc +++ /dev/null @@ -1 +0,0 @@ -{"directory":"../../../bower_components/","timeout":120000} \ No newline at end of file diff --git a/archive/core/modules/firebase-property-mixin/bower.json b/archive/core/modules/firebase-property-mixin/bower.json deleted file mode 100644 index 8507911..0000000 --- a/archive/core/modules/firebase-property-mixin/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "firebase-property-mixin", - "description": "Firebase Property Mixin for TJ's Projects", - "main": "mixins/firebase-property-mixin.html", - "authors": [ - "TJ Monserrat" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "src/bower_components/", - "test", - "tests" - ], - "dependencies": { - "polymer": "Polymer/polymer#^2.0.1", - "pouchdb": "^6.3.4", - "pouchdb-upsert": "^2.2.0" - } -} diff --git a/archive/core/modules/firebase-property-mixin/mixins/firebase-property-mixin.html b/archive/core/modules/firebase-property-mixin/mixins/firebase-property-mixin.html deleted file mode 100644 index ff687a2..0000000 --- a/archive/core/modules/firebase-property-mixin/mixins/firebase-property-mixin.html +++ /dev/null @@ -1,815 +0,0 @@ - - - diff --git a/archive/core/modules/firebase-property-mixin/scripts/pouchdb.html b/archive/core/modules/firebase-property-mixin/scripts/pouchdb.html deleted file mode 100644 index 53ec753..0000000 --- a/archive/core/modules/firebase-property-mixin/scripts/pouchdb.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/archive/core/modules/permission-data/.bowerrc b/archive/core/modules/permission-data/.bowerrc deleted file mode 100644 index 2969b9b..0000000 --- a/archive/core/modules/permission-data/.bowerrc +++ /dev/null @@ -1 +0,0 @@ -{"directory":"../../../bower_components/","timeout":120000} \ No newline at end of file diff --git a/archive/core/modules/permission-data/bower.json b/archive/core/modules/permission-data/bower.json deleted file mode 100644 index f3f0fce..0000000 --- a/archive/core/modules/permission-data/bower.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "permission-data", - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "src/bower_components/", - "test", - "tests" - ], - "dependencies": { - "polymer": "Polymer/polymer#^2.0.1" - } -} diff --git a/archive/core/modules/permission-data/models/permission-data.html b/archive/core/modules/permission-data/models/permission-data.html deleted file mode 100644 index 15b995b..0000000 --- a/archive/core/modules/permission-data/models/permission-data.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - diff --git a/archive/core/modules/permission-data/reducers/reducers.html b/archive/core/modules/permission-data/reducers/reducers.html deleted file mode 100644 index 707a4b6..0000000 --- a/archive/core/modules/permission-data/reducers/reducers.html +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/archive/core/modules/polyapp-location/.bowerrc b/archive/core/modules/polyapp-location/.bowerrc deleted file mode 100644 index 2969b9b..0000000 --- a/archive/core/modules/polyapp-location/.bowerrc +++ /dev/null @@ -1 +0,0 @@ -{"directory":"../../../bower_components/","timeout":120000} \ No newline at end of file diff --git a/archive/core/modules/polyapp-location/bower.json b/archive/core/modules/polyapp-location/bower.json deleted file mode 100644 index ab1e629..0000000 --- a/archive/core/modules/polyapp-location/bower.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "polyapp-location", - "description": "Polyapp Router for TJ's Projects", - "main": "polyapp-router.html", - "authors": [ - "TJ Monserrat" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "src/bower_components/", - "test", - "tests" - ], - "dependencies": { - "polymer": "Polymer/polymer#^2.0.1" - } -} diff --git a/archive/core/modules/polyapp-location/components/polyapp-location.html b/archive/core/modules/polyapp-location/components/polyapp-location.html deleted file mode 100644 index 8988852..0000000 --- a/archive/core/modules/polyapp-location/components/polyapp-location.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - diff --git a/archive/core/modules/polyapp-location/components/polyapp-query-params.html b/archive/core/modules/polyapp-location/components/polyapp-query-params.html deleted file mode 100644 index b4b01bc..0000000 --- a/archive/core/modules/polyapp-location/components/polyapp-query-params.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - diff --git a/archive/core/modules/polyapp-router/.bowerrc b/archive/core/modules/polyapp-router/.bowerrc deleted file mode 100644 index 2969b9b..0000000 --- a/archive/core/modules/polyapp-router/.bowerrc +++ /dev/null @@ -1 +0,0 @@ -{"directory":"../../../bower_components/","timeout":120000} \ No newline at end of file diff --git a/archive/core/modules/polyapp-router/bower.json b/archive/core/modules/polyapp-router/bower.json deleted file mode 100644 index 8c0fc59..0000000 --- a/archive/core/modules/polyapp-router/bower.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "app-router", - "description": "App Router for TJ's Projects", - "main": "app-router.html", - "authors": [ - "TJ Monserrat" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "src/bower_components/", - "test", - "tests" - ], - "dependencies": { - "polymer": "Polymer/polymer#^2.0.1" - } -} diff --git a/archive/core/modules/polyapp-router/components/polyapp-router.html b/archive/core/modules/polyapp-router/components/polyapp-router.html deleted file mode 100644 index d9e70d5..0000000 --- a/archive/core/modules/polyapp-router/components/polyapp-router.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - - - - - - - diff --git a/archive/core/modules/polyapp-toast/.bowerrc b/archive/core/modules/polyapp-toast/.bowerrc deleted file mode 100644 index 2969b9b..0000000 --- a/archive/core/modules/polyapp-toast/.bowerrc +++ /dev/null @@ -1 +0,0 @@ -{"directory":"../../../bower_components/","timeout":120000} \ No newline at end of file diff --git a/archive/core/modules/polyapp-toast/bower.json b/archive/core/modules/polyapp-toast/bower.json deleted file mode 100644 index bcd3eec..0000000 --- a/archive/core/modules/polyapp-toast/bower.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "polyapp-toast", - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "src/bower_components/", - "test", - "tests" - ], - "dependencies": { - "polymer": "Polymer/polymer#^2.0.1", - "paper-toast": "PolymerElements/paper-toast#^2.0.0" - } -} diff --git a/archive/core/modules/polyapp-toast/components/polyapp-toast.html b/archive/core/modules/polyapp-toast/components/polyapp-toast.html deleted file mode 100644 index b5e1e2f..0000000 --- a/archive/core/modules/polyapp-toast/components/polyapp-toast.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - diff --git a/archive/core/modules/user-data/.bowerrc b/archive/core/modules/user-data/.bowerrc deleted file mode 100644 index 2969b9b..0000000 --- a/archive/core/modules/user-data/.bowerrc +++ /dev/null @@ -1 +0,0 @@ -{"directory":"../../../bower_components/","timeout":120000} \ No newline at end of file diff --git a/archive/core/modules/user-data/bower.json b/archive/core/modules/user-data/bower.json deleted file mode 100644 index 5f491a9..0000000 --- a/archive/core/modules/user-data/bower.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "user-data", - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "src/bower_components/", - "test", - "tests" - ], - "dependencies": { - "polymer": "Polymer/polymer#^2.0.1" - } -} diff --git a/archive/core/modules/user-data/models/user-data.html b/archive/core/modules/user-data/models/user-data.html deleted file mode 100644 index ab92681..0000000 --- a/archive/core/modules/user-data/models/user-data.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - diff --git a/archive/core/modules/user-data/reducers/reducers.html b/archive/core/modules/user-data/reducers/reducers.html deleted file mode 100644 index 5938c74..0000000 --- a/archive/core/modules/user-data/reducers/reducers.html +++ /dev/null @@ -1,44 +0,0 @@ - diff --git a/archive/core/opts/state-manager.html b/archive/core/opts/state-manager.html deleted file mode 100644 index 2f406ad..0000000 --- a/archive/core/opts/state-manager.html +++ /dev/null @@ -1,21 +0,0 @@ - - diff --git a/archive/core/root/index.hbs b/archive/core/root/index.hbs deleted file mode 100644 index f3a34e7..0000000 --- a/archive/core/root/index.hbs +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - {{app.title}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{#each theme.icons}} - - {{/each}} - - - {{#each theme.icons}} - {{#if tileImage}} - - {{/if}} - {{/each}} - - - - - - - - - {{#if app.sentryUrl}} - - - - {{/if}} - - - - - - - - - - - - {{#each fragments}} - - - {{/each}} - - - {{#if analytics}} - - {{/if}} - - - - - - - - - diff --git a/archive/core/root/script.hbs b/archive/core/root/script.hbs deleted file mode 100644 index 27e4db3..0000000 --- a/archive/core/root/script.hbs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/archive/core/scripts/index.js b/archive/core/scripts/index.js deleted file mode 100644 index d644e7b..0000000 --- a/archive/core/scripts/index.js +++ /dev/null @@ -1,2 +0,0 @@ -Object.defineProperty(window, 'pathToRegexp', { value: window.pathToRegexp || require('path-to-regexp') }) -Object.defineProperty(window, 'Redux', { value: window.Redux || require('redux') }) diff --git a/archive/core/service-worker/routing.js b/archive/core/service-worker/routing.js deleted file mode 100644 index 0541873..0000000 --- a/archive/core/service-worker/routing.js +++ /dev/null @@ -1,21 +0,0 @@ -for (var i in app.firebaseConfig) { - router.registerRoute({route: new workbox.routing.ExpressRoute({ - path: 'https://' + app.firebaseConfig[i].projectId + '.firebaseio.com/:json+', - handler: function (obj) { - var event = obj.event - var url = obj.url - - return fetch(url.href) - .then(function (response) { - caches.open(app.shortTitle).then(function (cache) { - cache.put(event.request, response) - }) - return response.clone() - }) - .catch(function (err) { - console.log(err, url.href, caches.match(url.href)) - return caches.match(url.href) - }) - } - })}) -} diff --git a/archive/core/shell/app-shell.html b/archive/core/shell/app-shell.html deleted file mode 100644 index fec9c4a..0000000 --- a/archive/core/shell/app-shell.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - diff --git a/archive/core/shell/test/app-shell.test.html b/archive/core/shell/test/app-shell.test.html deleted file mode 100644 index 1c19002..0000000 --- a/archive/core/shell/test/app-shell.test.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - app-shell test - - - - - - - - - - - - - - - - - diff --git a/archive/core/test/core.test.html b/archive/core/test/core.test.html deleted file mode 100644 index 8b4f3a4..0000000 --- a/archive/core/test/core.test.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/archive/core/test/essentials.js b/archive/core/test/essentials.js deleted file mode 100644 index bd7268e..0000000 --- a/archive/core/test/essentials.js +++ /dev/null @@ -1,85 +0,0 @@ -// set project namespace -Object.defineProperty(window, 'App', { value: window.App || {} }) -Object.defineProperty(App, 'Mixins', { value: App.Mixins || {} }) -Object.defineProperty(App, 'utils', { value: App.utils || {} }) -Object.defineProperty(App.utils, 'extends', { value: App.utils.extends || Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target } }) -/** - * Merges a property's object value using the defaults way. - * - * @private - * @param {Object} what Initial prototype - * @param {String} which Property to collect. - * @return {Object} the collected values - */ -Object.defineProperty(App.utils, 'collect', { value: App.utils.collect || function (what, which) { - var res = {} - while (what) { - res = App.utils.extends({}, what[which], res) // Respect prototype priority - what = Object.getPrototypeOf(what) - } - return res -}}) -Object.defineProperty(App.utils, 'isEmpty', { value: App.utils.isEmpty || function (obj) { - for (var key in obj) { - if (obj.hasOwnProperty(key)) return false - } - return true -}}); -(() => { - var __currentUsed = 0 - Object.defineProperty(App.utils, 'checkStorage', { value: App.utils.checkStorage || function () { - if (window.navigator && navigator.storage && navigator.storage.estimate) { - return navigator.storage.estimate() - } else if (window.navigator && - navigator.webkitTemporaryStorage && - navigator.webkitTemporaryStorage.queryUsageAndQuota && - typeof navigator.webkitTemporaryStorage.queryUsageAndQuota === 'function') { - return new Promise((resolve, reject) => { - navigator.webkitTemporaryStorage.queryUsageAndQuota( - (usedBytes, grantedBytes) => { - if (__currentUsed && App.__build !== 'prod') { - console.log('added data:', ((usedBytes - __currentUsed) / 1024) / 1024, 'MB. Current used:', (usedBytes / 1024) / 1024, 'MB') - } - __currentUsed = usedBytes - return resolve({ - usage: usedBytes - }) - }, reject) - }) - } else { - Promise.resolve({ - type: 'no_navigator_storage' - }) - } - }}); - App.utils.checkStorage() -})() - -Object.defineProperty(App, '__dataRestStaleTime', { value: 60 }) -Object.defineProperty(App, '__firebaseFetch', { value: App.__firebaseFetch || {} }) -Object.defineProperty(App, '__firebaseVersion', { value: App.__firebaseVersion || '4.2.0' }) - -// set project build -Object.defineProperty(App, '__build', { value: App.__build || '0.0.1' }) -Object.defineProperty(App, '__version', { value: App.__version || '0.0.1' }) -Object.defineProperty(App, '__database', { value: App.__database || 'dev' }) -Object.defineProperty(App, '__analytics', { value: App.__analytics || '' }) - -// set config variables -Object.defineProperty(App, '__routes', { value: App.__routes || '{}' }) -Object.defineProperty(App, '__shellComponents', { value: App.__shellComponents || '{}' }) -Object.defineProperty(App, 'Reducers', { value: App.Reducers || {} }) -Object.defineProperty(App, 'Actions', { value: App.Actions || {} }) - -if (window.performance) { - window.globalStart = window.globalStart || performance.now() -} - -// Register the base URL -window.App.baseUrl = window.App.baseUrl || '/' - -// loading more essential files - -var script = document.createElement('script') -script.src = 'index.js' -document.head.appendChild(script) diff --git a/archive/src/config/dev.json b/archive/src/config/dev.json deleted file mode 100644 index 31f4dd5..0000000 --- a/archive/src/config/dev.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "app": { - "title": "GDG DevFest Philippines 2017", - "shortTitle": "DevFestPh", - "description": "In celebration of GDG Philippines 10th Anniversary, we bring to you the Grandest Technology event of the year - GDG DevFest Philippines 2017! GDG DevFest Philippines brings together experts in Mobile, Web and Cloud technologies to Manila for sessions, workshops and showcases. In this conference our goal is to equip you with new knowledge & skills that you can immediately apply and bring back to your respective companies.", - "baseHref": "/", - "twitter": "@gdgphilippines", - "image": "https://devfestph.firebaseapp.com/images/header.png", - "analytics": "UA-78413383-2", - "firebaseVersion": "4.2.0", - "database": "dev", - "waitBeforeFetchingSameURLInRest": 60, - "sentryUrl": "https://85d1091a410948caa823a5230bd0dbcf@sentry.io/204253", - "appVersion": "0.0.1", - "firebaseConfig": [] - }, - "theme": { - "src": "modules/devfest-theme", - "ignoreComponents": [] - }, - "fragments": { - "devfest-landing-page": "modules/devfest-module/pages/devfest-landing-page.html", - "devfest-call-for-speakers-page": "modules/devfest-module/pages/devfest-call-for-speakers-page.html", - "devfest-not-found-page": "modules/devfest-module/pages/devfest-not-found-page.html", - "devfest-not-authorized-page": "modules/devfest-module/pages/devfest-not-authorized-page.html", - "example-app-header": "modules/example-module/components/example-app-header.html", - "example-app-drawer": "modules/example-module/components/example-app-drawer.html" - }, - "routing": { - "/": "devfest-landing-page", - "/index.html": "devfest-landing-page", - "/call-for-speakers": "devfest-call-for-speakers-page" - }, - "httpCodes": { - "not-found": "devfest-not-found-page", - "not-authorized": "devfest-not-authorized-page" - }, - "shellComponents": [ - { - "node": "example-app-header", - "header": true, - "activate": false, - "attrs": [] - }, - { - "node": "example-app-drawer", - "drawer": true, - "activate": false, - "attrs": [] - } - ], - "serviceWorker": { - "globIgnores": [], - "runtimeCaching": [], - "globPatterns": [] - }, - "hosting": { - "rewrites": [ - { - "source": "/api/**", - "function": "app" - } - ], - "headers": [ - { - "source" : "**/*.@(jpg|jpeg|gif|png)", - "headers" : [ - { - "key" : "Cache-Control", - "value" : "max-age=7200" - } - ] - }, - { - "source" : "404.html", - "headers" : [ - { - "key" : "Cache-Control", - "value" : "max-age=300" - } - ] - }, - { - "source": "service-worker.js", - "headers" : [ - { - "key": "Cache-Control", - "value": "no-cache, no-store, must-revalidate" - } - ] - }, - { - "source": "routing-sw-src.js", - "headers" : [ - { - "key": "Cache-Control", - "value": "no-cache, no-store, must-revalidate" - } - ] - }, - { - "source": "routing-sw.js", - "headers" : [ - { - "key": "Cache-Control", - "value": "no-cache, no-store, must-revalidate" - } - ] - }, - { - "source": "sw.js", - "headers" : [ - { - "key": "Cache-Control", - "value": "no-cache, no-store, must-revalidate" - } - ] - }, - { - "source": "workbox-routing.js", - "headers" : [ - { - "key": "Cache-Control", - "value": "no-cache, no-store, must-revalidate" - } - ] - }, - { - "source": "workbox-sw.*.js", - "headers" : [ - { - "key": "Cache-Control", - "value": "no-cache, no-store, must-revalidate" - } - ] - } - ] - } -} diff --git a/archive/src/modules/devfest-module/components/devfest-footer.html b/archive/src/modules/devfest-module/components/devfest-footer.html deleted file mode 100644 index adab217..0000000 --- a/archive/src/modules/devfest-module/components/devfest-footer.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - diff --git a/archive/src/modules/devfest-module/components/gdg-logo.html b/archive/src/modules/devfest-module/components/gdg-logo.html deleted file mode 100644 index 1f628e5..0000000 --- a/archive/src/modules/devfest-module/components/gdg-logo.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/archive/src/modules/devfest-module/fonts/devfest-fonts.html b/archive/src/modules/devfest-module/fonts/devfest-fonts.html deleted file mode 100644 index f864c40..0000000 --- a/archive/src/modules/devfest-module/fonts/devfest-fonts.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/archive/src/modules/devfest-module/icons/devfest-icons.html b/archive/src/modules/devfest-module/icons/devfest-icons.html deleted file mode 100644 index c62d79c..0000000 --- a/archive/src/modules/devfest-module/icons/devfest-icons.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archive/src/modules/devfest-module/pages/devfest-call-for-speakers-page.html b/archive/src/modules/devfest-module/pages/devfest-call-for-speakers-page.html deleted file mode 100644 index b98c747..0000000 --- a/archive/src/modules/devfest-module/pages/devfest-call-for-speakers-page.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - - diff --git a/archive/src/modules/devfest-module/pages/devfest-landing-page.html b/archive/src/modules/devfest-module/pages/devfest-landing-page.html deleted file mode 100644 index f06e62b..0000000 --- a/archive/src/modules/devfest-module/pages/devfest-landing-page.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - diff --git a/archive/src/modules/devfest-module/pages/devfest-not-authorized-page.html b/archive/src/modules/devfest-module/pages/devfest-not-authorized-page.html deleted file mode 100644 index acbbb2d..0000000 --- a/archive/src/modules/devfest-module/pages/devfest-not-authorized-page.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/archive/src/modules/devfest-module/pages/devfest-not-found-page.html b/archive/src/modules/devfest-module/pages/devfest-not-found-page.html deleted file mode 100644 index 1a7bf4a..0000000 --- a/archive/src/modules/devfest-module/pages/devfest-not-found-page.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/archive/src/modules/devfest-theme/components/_button.scss b/archive/src/modules/devfest-theme/components/_button.scss deleted file mode 100644 index 85c7044..0000000 --- a/archive/src/modules/devfest-theme/components/_button.scss +++ /dev/null @@ -1,11 +0,0 @@ -.button { - background: #2e9be6; - color: white; - border: 3px solid #2e9be6; - padding: 24px; - font-size: 24px; - display: inline-block; - text-transform: uppercase; - font-weight: bold; - text-decoration: none; -} diff --git a/archive/src/modules/devfest-theme/components/_footer.scss b/archive/src/modules/devfest-theme/components/_footer.scss deleted file mode 100644 index c2d41e3..0000000 --- a/archive/src/modules/devfest-theme/components/_footer.scss +++ /dev/null @@ -1,79 +0,0 @@ -.footer { - background: #303C42; - color: rgba(255,255,255,0.8); - - - a { - color: inherit; - text-decoration: none; - } - - > .top-mini { - @apply --layout-horizontal; - height: 8px; - - > .flex { - @apply --layout-flex; - height: 8px; - } - - > .color-mini { - height: 8px; - width: 60px; - } - - > .blue-mini { - background-color: #4285F4; - } - - > .red-mini { - background-color: #DB4437; - } - - > .yellow-mini { - background-color: #FFC107; - } - - > .green-mini { - background-color: #0F9D58; - } - } - - > .footer-columns { - padding-top: 20px; - @apply --layout-horizontal; - @apply --layout-wrap; - padding-left: 50px; - padding-right: 50px; - padding-bottom: 20px; - - @media only screen and (max-width: 500px) { - padding-left: 20px; - padding-right: 20px; - } - - > .footer-column { - @apply --layout-flex; - min-width: 200px; - // margin-left: 20px; - // margin-right: 20px; - - > .footer-link-list { - list-style-type: none; - padding: 0; - - > .footer-link-item { - padding-bottom: 5px; - } - } - } - - } - - > .footer-bottom { - background: #37424B; - padding: 20px; - padding-left: 50px; - - } -} diff --git a/archive/src/modules/devfest-theme/components/_gdg-logo.scss b/archive/src/modules/devfest-theme/components/_gdg-logo.scss deleted file mode 100644 index f62ef0a..0000000 --- a/archive/src/modules/devfest-theme/components/_gdg-logo.scss +++ /dev/null @@ -1,11 +0,0 @@ -.gdg-logo-anchor { - display: block; - vertical-align: middle; - text-decoration: none; - color: rgba(255, 255, 255, 0.5); - font-size: 24px; - - > img { - height: 24px; - } -} diff --git a/archive/src/modules/devfest-theme/components/_header.scss b/archive/src/modules/devfest-theme/components/_header.scss deleted file mode 100644 index 9c6b081..0000000 --- a/archive/src/modules/devfest-theme/components/_header.scss +++ /dev/null @@ -1,81 +0,0 @@ -.header { - font-family: 'Roboto'; - position: relative; - min-height: 100vh; - background: url('/images/devfest-bg-repeatable.png') center/contain repeat; - - > .header-white { - background: rgba(255,255,255, 0.75); - min-height: 100%; - position: absolute; - width: 100%; - top: 0; - bottom: 0; - left: 0; - right: 0; - } - - > .header-container { - position: relative; - height: 100vh; - @apply --layout-horizontal; - @apply --layout-center; - - > .header-image-text-container { - @apply --layout-flex; - - > .header-image { - position: relative; - // padding-top: 100px; - width: inherit; - text-align: center; - - > img { - width: 80%; - max-width: 600px; - } - } - - > .header-text { - text-align: center; - > h1 { - font-family: 'Product Sans'; - opacity: .75; - } - - } - } - } - - - - - - // > .header-image { - // position: relative; - // height: 100%; - // // padding-top: 10%; - // z-index: 1; - // text-align: center; - // @apply --layout-horizontal; - // @apply --layout-center; - - // background: rgba(255,255,255,0.5); /* For browsers that do not support gradients */ - // background: -webkit-radial-gradient(rgba(255,255,255,1), rgba(255,255,255,0.75), rgba(255,255,255,0)); /* Safari 5.1 to 6.0 */ - // background: -o-radial-gradient(rgba(255,255,255,1), rgba(255,255,255,0.75), rgba(255,255,255,0)); /* For Opera 11.6 to 12.0 */ - // background: -moz-radial-gradient(rgba(255,255,255,1), rgba(255,255,255,0.75), rgba(255,255,255,0)); /* For Firefox 3.6 to 15 */ - // background: radial-gradient(rgba(255,255,255,1), rgba(255,255,255,0.75), rgba(255,255,255,0)); /* Standard syntax */ - - // > .header-image-container { - // height: 60%; - // margin-left: 20px; - // margin-right: 20px; - // background: url('/images/devfest-10x-logo.png') center/contain no-repeat; - // @apply --layout-flex; - // } - - - // } - - -} diff --git a/archive/src/modules/devfest-theme/components/_temp-link.scss b/archive/src/modules/devfest-theme/components/_temp-link.scss deleted file mode 100644 index 27bfff3..0000000 --- a/archive/src/modules/devfest-theme/components/_temp-link.scss +++ /dev/null @@ -1,16 +0,0 @@ -.temp-link { - padding: 20px; - padding-top: 0px; - font-family: 'Roboto', 'Arial', sans-serif; - color: #666; - line-height: 150%; - font-size: 1.25em; - text-align: center; - margin: 0 auto; - max-width: 550px; - padding-bottom: 100px; - - @media only screen and (max-width: 500px) { - font-size: 1em; - } -} diff --git a/archive/src/modules/devfest-theme/partials/_base.scss b/archive/src/modules/devfest-theme/partials/_base.scss deleted file mode 100644 index f8e2208..0000000 --- a/archive/src/modules/devfest-theme/partials/_base.scss +++ /dev/null @@ -1,18 +0,0 @@ -// Font weights -$light: 100; -$regular: 400; -$bold: 600; - -// Base Font -$base-font-family: sans-serif; -$base-font-weight: $regular; -$base-font-size: 13px; -$base-line-height: 1.4; - -// Fixed Font -$fixed-font-family: monospace; -$fixed-font-size: 85%; -$fixed-line-height: $base-line-height; - -// Headings -$header-font-weight: $bold; diff --git a/archive/src/modules/devfest-theme/root.scss b/archive/src/modules/devfest-theme/root.scss deleted file mode 100644 index aa6d516..0000000 --- a/archive/src/modules/devfest-theme/root.scss +++ /dev/null @@ -1,9 +0,0 @@ -// @import "./core/modules/default-theme/partials/*"; -@import './partials/_base.scss'; -@import './components/button.scss'; - -body { - margin: 0; - font-size: $base-font-size; - font-family: 'Roboto', 'Arial', sans-serif; -} diff --git a/archive/src/modules/devfest-theme/theme.json b/archive/src/modules/devfest-theme/theme.json deleted file mode 100644 index 413b86d..0000000 --- a/archive/src/modules/devfest-theme/theme.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "devfest", - "author": "TJ Monserrat", - "themeColor": "#3f51b5", - "backgroundColor": "#3f51b5", - "startUrl": "/index.html", - "display": "standalone", - "webApp": { - "capable": "yes", - "statusBarStyle": "black-translucent", - "tapHighlight": "no" - }, - "icons": [ - { - "src": "images/icons/icon-48x48.png", - "sizes": "48x48", - "type": "image/png" - }, - { - "src": "images/icons/icon-72x72.png", - "sizes": "72x72", - "type": "image/png" - }, - { - "src": "images/icons/icon-96x96.png", - "sizes": "96x96", - "type": "image/png" - }, - { - "src": "images/icons/icon-128x128.png", - "sizes": "128x128", - "type": "image/png" - }, - { - "src": "images/icons/icon-144x144.png", - "sizes": "144x144", - "type": "image/png", - "tileImage": true - }, - { - "src": "images/icons/icon-152x152.png", - "sizes": "152x152", - "type": "image/png" - }, - { - "src": "images/icons/icon-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "images/icons/icon-384x384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src": "images/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "dependencies": [ - "../../bower_components/iron-flex-layout/iron-flex-layout.html" - ] -} diff --git a/archive/src/modules/devfest-theme/theme.scss b/archive/src/modules/devfest-theme/theme.scss deleted file mode 100644 index 669e14a..0000000 --- a/archive/src/modules/devfest-theme/theme.scss +++ /dev/null @@ -1,9 +0,0 @@ -@import './components/header'; -@import './components/temp-link.scss'; -@import './components/footer.scss'; -@import './components/button.scss'; -@import './components/gdg-logo'; - -:host { - font-family: 'Roboto', 'Arial', sans-serif; -} diff --git a/archive/src/modules/example-data/models/example-data.html b/archive/src/modules/example-data/models/example-data.html deleted file mode 100644 index 69b0f15..0000000 --- a/archive/src/modules/example-data/models/example-data.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - diff --git a/archive/src/modules/example-data/reducers/reducers.html b/archive/src/modules/example-data/reducers/reducers.html deleted file mode 100644 index 1594747..0000000 --- a/archive/src/modules/example-data/reducers/reducers.html +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/archive/src/modules/example-module/components/example-app-header.html b/archive/src/modules/example-module/components/example-app-header.html deleted file mode 100644 index e69de29..0000000 diff --git a/archive/src/modules/example-module/pages/example-home-page.html b/archive/src/modules/example-module/pages/example-home-page.html deleted file mode 100644 index e69de29..0000000 diff --git a/archive/src/modules/example-module/pages/example-not-authorized-page.html b/archive/src/modules/example-module/pages/example-not-authorized-page.html deleted file mode 100644 index e69de29..0000000 diff --git a/archive/src/modules/example-module/pages/example-not-found-page.html b/archive/src/modules/example-module/pages/example-not-found-page.html deleted file mode 100644 index e69de29..0000000 diff --git a/archive/src/opts/auth-functions.html b/archive/src/opts/auth-functions.html deleted file mode 100644 index 38f4d67..0000000 --- a/archive/src/opts/auth-functions.html +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/archive/src/rules/database.dev.json b/archive/src/rules/database.dev.json deleted file mode 100644 index 4a116eb..0000000 --- a/archive/src/rules/database.dev.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - ".read": true, - ".write": "auth != null" -} diff --git a/archive/src/scripts/index.js b/archive/src/scripts/index.js deleted file mode 100644 index 0f112e3..0000000 --- a/archive/src/scripts/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// put other index scripts here -if (App.__prod !== 'prod') { - console.log('Root script loaded') -} diff --git a/archive/src/service-worker/routing.js b/archive/src/service-worker/routing.js deleted file mode 100644 index d8325fd..0000000 --- a/archive/src/service-worker/routing.js +++ /dev/null @@ -1,14 +0,0 @@ -// put routing things here -router.registerRoute({route: new workbox.routing.ExpressRoute({ - path: '/api/landing-temp-link', - handler: workboxSW.strategies.networkFirst({ - networkTimeoutSeconds: 3, - cacheExpiration: { - maxEntries: 10, - maxAgeSeconds: 60 * 60 * 24 - }, - cacheableResponse: { - statuses: [200, 400, 404, 500] - } - }) -})}) diff --git a/core/modules/state-manager/index.js b/core/modules/state-manager/index.js new file mode 100644 index 0000000..aa2103f --- /dev/null +++ b/core/modules/state-manager/index.js @@ -0,0 +1,12 @@ +import { createStore } from 'redux'; +import PolymerRedux from 'polymer-redux'; + +const reducers = {}; + +const initialStore = {}; + +const store = createStore((state = initialStore, action) => state); + +const ReduxMixin = PolymerRedux(store); + +export { reducers, store, ReduxMixin }; diff --git a/archive/src/modules/example-module/components/example-app-drawer.html b/core/modules/state-manager/polymer-redux.js similarity index 100% rename from archive/src/modules/example-module/components/example-app-drawer.html rename to core/modules/state-manager/polymer-redux.js diff --git a/core/shell/index.js b/core/shell/index.js index e0b3cb6..626c59d 100644 --- a/core/shell/index.js +++ b/core/shell/index.js @@ -7,6 +7,32 @@ import routing from '../../src/routing.js' import httpCodes from '../../src/http-codes.js' import partials from '../../src/partials.js' import auth from '../../src/authentication/index.js' +import { reducers, store, ReduxMixin } from '../modules/state-manager'; +import { combineReducers } from 'redux'; + +const ROUTER_ACTION = { + PARAMS: 'ROUTER_UPDATE_PARAMS', + ROUTE: 'ROUTER_UPDATE_ROUTE' +}; + +reducers.router = (router = {}, action) => { + switch (action.type) { + case ROUTER_ACTION.PARAMS: + return Object.assign({}, router, { + params: action.params + }); + case ROUTER_ACTION.ROUTE: + return Object.assign({}, router, { + route: action.route + }); + default: + return router; + } +}; + +store.replaceReducer(combineReducers(reducers)); + +export { ROUTER_ACTION }; const messages = [] @@ -215,9 +241,19 @@ class AppShell extends QueryParamsMixin(LocationMixin(Polymer.Element)) { } routeName = route[0] this.params = params + + this.dispatch({ + type: ROUTER_ACTION.PARAMS, + params + }); } }) + this.dispatch({ + type: ROUTER_ACTION.ROUTE, + route: routeName || 'not-found' + }); + this._checkAuth(routeName || 'not-found') } @@ -257,8 +293,20 @@ class AppShell extends QueryParamsMixin(LocationMixin(Polymer.Element)) { } if (this._routes[route]) { routes[route]().then(() => { + + if (!this._routes[route].element.constructor.is || + this._routes[route].element.constructor === this._routes[route].element.nodeName.toLowerCase()) { + this.dispatch({ + type: ROUTER_ACTION.ROUTE, + route: 'not-found' + }); + + this._checkAuth('not-found') + } + this._routes[route].element._setProperty('params', this.params) this._routes[route].element._setProperty('queryParams', this.paramsObject) + if (this._routes[route].element.reload) { this._routes[route].element.reload() } diff --git a/package.json b/package.json index 0adff4e..58a1c32 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "build-production": "cd gulp && ./node_modules/.bin/gulp --prod" }, "dependencies": { + "global": "^4.3.2", "indexeddbshim": "^3.0.4", "intersection-observer": "^0.4.2", "marked": "^0.3.6", diff --git a/yarn.lock b/yarn.lock index 9de0760..4259c05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -621,6 +621,10 @@ dom-serializer@0: domelementtype "~1.1.1" entities "~1.1.1" +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + domelementtype@1, domelementtype@1.3.0, domelementtype@^1.3.0, domelementtype@~1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" @@ -778,6 +782,13 @@ glob@^7.0.5, glob@^7.1.1, glob@~7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +global@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + dependencies: + min-document "^2.19.0" + process "~0.5.1" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -1011,6 +1022,12 @@ mime-types@^2.1.12, mime-types@~2.1.7: dependencies: mime-db "~1.30.0" +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + dependencies: + dom-walk "^0.1.0" + minimatch@^3.0.0, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -1141,6 +1158,10 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" From ff5681e7317edbaa92f1dfdff3645f24de9e6e9f Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Wed, 11 Oct 2017 00:53:19 +0800 Subject: [PATCH 19/56] added stuff Signed-off-by: Toni-Jan Keith Monserrat --- core/shell/index.js | 3 +- gulp/utils/create-firebase-config.js | 27 ++- package.json | 1 + src/.temp/temp.json | 6 +- src/config/dev.json | 6 +- src/firebase.js | 17 +- .../devfest-module/models/user-model.js | 201 ++++++++++++++++++ .../devfest-landing-page.js | 2 +- src/modules/firebase/index.js | 0 yarn.lock | 123 ++++++++++- 10 files changed, 374 insertions(+), 12 deletions(-) create mode 100644 src/modules/devfest-module/models/user-model.js create mode 100644 src/modules/firebase/index.js diff --git a/core/shell/index.js b/core/shell/index.js index 626c59d..661b812 100644 --- a/core/shell/index.js +++ b/core/shell/index.js @@ -9,6 +9,7 @@ import partials from '../../src/partials.js' import auth from '../../src/authentication/index.js' import { reducers, store, ReduxMixin } from '../modules/state-manager'; import { combineReducers } from 'redux'; +import '../../src/firebase'; const ROUTER_ACTION = { PARAMS: 'ROUTER_UPDATE_PARAMS', @@ -36,7 +37,7 @@ export { ROUTER_ACTION }; const messages = [] -class AppShell extends QueryParamsMixin(LocationMixin(Polymer.Element)) { +class AppShell extends ReduxMixin(QueryParamsMixin(LocationMixin(Polymer.Element))) { static get is () { return 'app-shell' } static get properties () { diff --git a/gulp/utils/create-firebase-config.js b/gulp/utils/create-firebase-config.js index 6cd39ad..3f8252e 100644 --- a/gulp/utils/create-firebase-config.js +++ b/gulp/utils/create-firebase-config.js @@ -1,9 +1,24 @@ -const getConfig = require('./get-config') +const getConfig = require('./get-config'); -module.exports = (env) => { - const {config} = getConfig(env) +module.exports = (dev) => { + const {config} = getConfig(dev); return ` - export default ${JSON.stringify(config.build.firebaseConfig)} - ` -} \ No newline at end of file + let firebase = null; + const configs = ${JSON.stringify(config.build.firebaseConfig)}; + import(/* webpackChunkName: 'firebase' */ 'firebase').then(sdk => { + firebase = sdk; + configs.forEach(config => { + if (config.name) { + firebase.initializeApp(config, name); + } else { + firebase.initializeApp(config); + } + }); + window.dispatchEvent(new window.CustomEvent('firebase-initialized', { detail: firebase })); + }) + const firebaseConfig = configs; + export default firebase; + export { firebaseConfig }; + `; +}; diff --git a/package.json b/package.json index 58a1c32..70406aa 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "build-production": "cd gulp && ./node_modules/.bin/gulp --prod" }, "dependencies": { + "firebase": "^4.5.0", "global": "^4.3.2", "indexeddbshim": "^3.0.4", "intersection-observer": "^0.4.2", diff --git a/src/.temp/temp.json b/src/.temp/temp.json index fe75d47..cd28466 100644 --- a/src/.temp/temp.json +++ b/src/.temp/temp.json @@ -19,7 +19,11 @@ "firebaseConfig": [ { "apiKey": "AIzaSyB3VQN0MNOxcunaUKXZr54u0t6ruv2YbkE", - "name": "DEFAULT" + "authDomain": "devfestph.firebaseapp.com", + "databaseURL": "https://devfestph.firebaseio.com", + "projectId": "devfestph", + "storageBucket": "devfestph.appspot.com", + "messagingSenderId": "36335134103" } ] }, diff --git a/src/config/dev.json b/src/config/dev.json index fe75d47..cd28466 100644 --- a/src/config/dev.json +++ b/src/config/dev.json @@ -19,7 +19,11 @@ "firebaseConfig": [ { "apiKey": "AIzaSyB3VQN0MNOxcunaUKXZr54u0t6ruv2YbkE", - "name": "DEFAULT" + "authDomain": "devfestph.firebaseapp.com", + "databaseURL": "https://devfestph.firebaseio.com", + "projectId": "devfestph", + "storageBucket": "devfestph.appspot.com", + "messagingSenderId": "36335134103" } ] }, diff --git a/src/firebase.js b/src/firebase.js index 821ca14..85f8f03 100644 --- a/src/firebase.js +++ b/src/firebase.js @@ -1,3 +1,18 @@ - export default [{"apiKey":"AIzaSyB3VQN0MNOxcunaUKXZr54u0t6ruv2YbkE","name":"DEFAULT"}] + let firebase = null; + const configs = [{"apiKey":"AIzaSyB3VQN0MNOxcunaUKXZr54u0t6ruv2YbkE","authDomain":"devfestph.firebaseapp.com","databaseURL":"https://devfestph.firebaseio.com","projectId":"devfestph","storageBucket":"devfestph.appspot.com","messagingSenderId":"36335134103"}]; + import(/* webpackChunkName: 'firebase' */ 'firebase').then(sdk => { + firebase = sdk; + configs.forEach(config => { + if (config.name) { + firebase.initializeApp(config, name); + } else { + firebase.initializeApp(config); + } + }); + window.dispatchEvent(new window.CustomEvent('firebase-initialized', { detail: firebase })); + }) + const firebaseConfig = configs; + export default firebase; + export { firebaseConfig }; \ No newline at end of file diff --git a/src/modules/devfest-module/models/user-model.js b/src/modules/devfest-module/models/user-model.js new file mode 100644 index 0000000..54dbbc4 --- /dev/null +++ b/src/modules/devfest-module/models/user-model.js @@ -0,0 +1,201 @@ +import { ReduxMixin, store, reducers } from '../../../../core/modules/state-manager'; +import { combineReducers } from 'redux'; + +let firebase = null; +import(/* webpackChunkName: 'firebase' */ 'firebase').then(sdk => { + if (sdk) { + firebase = sdk; + } +}); + +let authStateChanged = null; + +const profileModel = { + primary: { + displayName: String, + firstName: String, + email: String, + avatar: String + }, + meta: { + lastName: String, + dateJoined: Number, + dateBirth: Number + }, + cross: { + articles: Array, + threads: Array + } +}; + +const listeners = {}; + +const modelPath = 'v1/user'; + +const USER_ACTION = { + UPDATE: 'USER_UPDATE', + PROFILE: 'USER_UPDATE_PROFILE', + FETCH: 'USER_UPDATE_FETCH' +}; + +const observeAuth = (firebase, store) => { + authStateChanged = authStateChanged || firebase.auth().onAuthStateChanged((user) => { + store.dispatch({ + type: USER_ACTION.UPDATE, + user + }); + }); + return authStateChanged; +}; + +const updateAttrSnapshot = (store, attr, snapshot) => { + if (snapshot.exists()) { + store.dispatch({ + type: USER_ACTION.PROFILE, + value: snapshot.val(), + attr + }); + } +}; + +const updateModelTypeSnapshot = (store, modelType, snapshot) => { + if (snapshot.exists()) { + const attrs = []; + snapshot.forEach(child => { + attrs.push({ + attr: child.key, + value: child.val() + }); + }); + store.dispatch({ + type: USER_ACTION.PROFILE, + attrs + }); + } +}; + +const firebaseDocumentLoader = (modelPath, key, action) => { + const sourcePath = `${modelPath}/source/${key}`; + if (action.modelType) { + const modelType = `${sourcePath}/${action.modelType}`; + if (!action.attr) { + for (var i in profileModel) { + if (i === action.modelType) { + for (var j in profileModel[i]) { + if (listeners[modelType + '/' + j]) { + listeners[modelType + '/' + j].off(); + listeners[modelType + '/' + j] = null; + } + } + listeners[modelType] = listeners[modelType] || firebase.database().ref(modelType); + listeners[modelType].on('value', updateModelTypeSnapshot.bind(this, store, action.modelType)); + break; + } + } + } else if (!listeners[modelType]) { + const attr = `${modelType}/${action.attr}`; + listeners[attr] = listeners[attr] || firebase.database().ref(attr); + listeners[attr].on('value', updateAttrSnapshot.bind(this, store, action.attr)); + } + } +} + +reducers.user = (user = {}, action) => { + switch (action.type) { + case USER_ACTION.FETCH: + if (user.user && user.user.uid) { + firebaseDocumentLoader + } + return user; + case USER_ACTION.UPDATE: + if (!action.user) { + for (var path in listeners) { + if (listeners[path]) { + listeners[path].off(); + listeners[path] = null; + } + } + } + return Object.assign({}, user, { + user: action.user + }); + case USER_ACTION.PROFILE: + const profile = Object.assign({}, user.profile); + + if (action.attrs) { + action.attrs.forEach(item => { + profile[item.attr] = item.value; + }); + } else if (action.attr) { + profile[action.attr] = action.value; + } + + if (action.del) { + return Object.assign({}, user, { + profile: null + }); + } + + return Object.assign({}, user, { + profile + }); + default: + return user; + } +}; +store.replaceReducer(combineReducers(reducers)); + + +if (firebase) { + observeAuth(firebase, store); +} else { + window.addEventListener('firebase-initialized', event => { + observeAuth(event.detail, store); + }); +} + +export { USER_ACTION }; + +export default (superClass) => { + return class extends ReduxMixin(superClass) { + static get properties () { + return { + user: { + type: Object, + statePath: 'user.user', + observer: '_userChanged' + }, + profile: { + type: Object, + statePath: 'user.profile' + } + }; + } + + _userChanged (user) { + if (user) { + this.dispatch({ + type: USER_ACTION.FETCH, + modelType: 'primary' + }); + this.dispatch({ + type: USER_ACTION.FETCH, + modelType: 'meta' + }); + } else { + this.dispatch({ + type: USER_ACTION.PROFILE, + del: true + }); + } + } + + login () { + firebase.auth().signInWithPopup(new firebase.auth.GoogleAuthProvider()); + } + + logout () { + firebase.auth().signOut(); + } + }; +}; diff --git a/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js b/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js index 6c20195..bc28bf4 100644 --- a/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js +++ b/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js @@ -16,7 +16,7 @@ import '../../fonts/devfest-fonts.html' import './devfest-landing-page.html' import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js' import marked from 'marked' -import firebaseConfig from '../../../../firebase.js' +import { firebaseConfig } from '../../../../firebase.js' import app from '../../../../app.js' window.marked = window.marked || marked diff --git a/src/modules/firebase/index.js b/src/modules/firebase/index.js new file mode 100644 index 0000000..e69de29 diff --git a/yarn.lock b/yarn.lock index 4259c05..1003f8d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@firebase/webchannel-wrapper@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.1.tgz#2c4dbc15edd1de4f656d543a6f512ded7978ef72" + abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" @@ -489,6 +493,10 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base64url@2.0.0, base64url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" + bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" @@ -521,6 +529,10 @@ browserslist@^2.1.2: caniuse-lite "^1.0.30000718" electron-to-chromium "^1.3.18" +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + caniuse-lite@^1.0.30000718: version "1.0.30000726" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000726.tgz#966a753fa107a09d4131cf8b3d616723a06ccf7e" @@ -621,6 +633,10 @@ dom-serializer@0: domelementtype "~1.1.1" entities "~1.1.1" +dom-storage@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.0.2.tgz#ed17cbf68abd10e0aef8182713e297c5e4b500b0" + dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" @@ -648,6 +664,13 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecdsa-sig-formatter@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1" + dependencies: + base64url "^2.0.0" + safe-buffer "^5.0.1" + electron-to-chromium@^1.3.18: version "1.3.21" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2" @@ -697,6 +720,23 @@ extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" +faye-websocket@0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.9.3.tgz#482a505b0df0ae626b969866d3bd740cdb962e83" + dependencies: + websocket-driver ">=0.5.1" + +firebase@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-4.5.0.tgz#e0973a9803b74c4c9d73d19f874712e6e9d16ba7" + dependencies: + "@firebase/webchannel-wrapper" "^0.2.1" + dom-storage "^2.0.2" + faye-websocket "0.9.3" + jsonwebtoken "^7.3.0" + promise-polyfill "^6.0.2" + xmlhttprequest "^1.8.0" + for-each@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" @@ -848,6 +888,10 @@ htmlparser2@^3.8.2: inherits "^2.0.1" readable-stream "^2.0.2" +http-parser-js@>=0.4.0: + version "0.4.9" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -928,10 +972,23 @@ isarray@0.0.1, isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isemail@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-1.2.0.tgz#be03df8cc3e29de4d2c5df6501263f1fa4595e9a" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +joi@^6.10.1: + version "6.10.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-6.10.1.tgz#4d50c318079122000fe5f16af1ff8e1917b77e06" + dependencies: + hoek "2.x.x" + isemail "1.x.x" + moment "2.x.x" + topo "1.x.x" + js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -968,6 +1025,16 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +jsonwebtoken@^7.3.0: + version "7.4.3" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz#77f5021de058b605a1783fa1283e99812e645638" + dependencies: + joi "^6.10.1" + jws "^3.1.4" + lodash.once "^4.0.0" + ms "^2.0.0" + xtend "^4.0.1" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -977,6 +1044,23 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jwa@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5" + dependencies: + base64url "2.0.0" + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.9" + safe-buffer "^5.0.1" + +jws@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2" + dependencies: + base64url "^2.0.0" + jwa "^1.1.4" + safe-buffer "^5.0.1" + lodash-es@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" @@ -985,6 +1069,10 @@ lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + lodash.template@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" @@ -1044,7 +1132,11 @@ minimist@0.0.8, minimist@1.2.0, minimist@^1.2.0, minimist@~1.2.0: dependencies: minimist "0.0.8" -ms@2.0.0: +moment@2.x.x: + version "2.18.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" + +ms@2.0.0, ms@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -1162,6 +1254,10 @@ process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" +promise-polyfill@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.0.2.tgz#d9c86d3dc4dc2df9016e88946defd69b49b41162" + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -1417,6 +1513,12 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +topo@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/topo/-/topo-1.1.0.tgz#e9d751615d1bb87dc865db182fa1ca0a5ef536d5" + dependencies: + hoek "2.x.x" + tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" @@ -1457,6 +1559,17 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" + "websql@https://github.com/brettz9/node-websql#configurable": version "0.4.4" resolved "https://github.com/brettz9/node-websql#c9828a34c92eced64858fc19151ec099fd60e8dd" @@ -1496,3 +1609,11 @@ workbox-sw@2.0.1, workbox-sw@^1.1.0, workbox-sw@^2.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xmlhttprequest@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + +xtend@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From d6ed356a2a0e56242c137886ff9a2807ec88bee4 Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Wed, 11 Oct 2017 02:40:39 +0800 Subject: [PATCH 20/56] added so much stuff Signed-off-by: Toni-Jan Keith Monserrat --- .eslintrc.js | 8 + firebase.json | 28 + package.json | 15 +- src/.temp/temp.json | 32 + src/authentication/index.js | 12 +- src/config/dev.json | 32 + .../devfest-drawer/devfest-drawer.html | 10 + .../devfest-drawer/devfest-drawer.js | 51 +- .../devfest-header/devfest-header.html | 10 + .../devfest-header/devfest-header.js | 70 +- .../devfest-header/devfest-header.scss | 6 +- .../devfest-speakers-section.js | 32 +- .../devfest-module/models/user-model.js | 119 +-- .../devfest-authorized-page.js | 10 +- .../devfest-codelabs-page.html | 12 + .../devfest-codelabs-page.js | 48 + .../devfest-codelabs-page.scss | 3 + .../devfest-connect-ticket-page.html | 12 + .../devfest-connect-ticket-page.js | 48 + .../devfest-connect-ticket-page.scss | 3 + .../devfest-landing-page.html | 2 +- .../devfest-landing-page.js | 116 ++- .../devfest-login-page.html | 12 + .../devfest-login-page/devfest-login-page.js | 48 + .../devfest-login-page.scss | 3 + .../devfest-not-sponsor-page.html | 12 + .../devfest-not-sponsor-page.js | 48 + .../devfest-not-sponsor-page.scss | 3 + .../devfest-profile-page.html | 12 + .../devfest-profile-page.js | 48 + .../devfest-profile-page.scss | 3 + .../devfest-register-page.html | 12 + .../devfest-register-page.js | 48 + .../devfest-register-page.scss | 3 + .../devfest-scan-page/devfest-scan-page.html | 12 + .../devfest-scan-page/devfest-scan-page.js | 48 + .../devfest-scan-page/devfest-scan-page.scss | 0 .../devfest-scanned-list-page.html | 12 + .../devfest-scanned-list-page.js | 48 + .../devfest-scanned-list-page.scss | 3 + .../devfest-sponsors-page.html | 44 +- .../devfest-sponsors-page.js | 49 +- .../devfest-tickets-page.js | 46 +- .../devfest-verify-page.html | 12 + .../devfest-verify-page.js | 48 + .../devfest-verify-page.scss | 3 + src/modules/firebase/index.js | 92 ++ src/routing.js | 7 + yarn.lock | 858 +++++++++++++++++- 49 files changed, 1854 insertions(+), 359 deletions(-) create mode 100644 .eslintrc.js create mode 100644 src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.html create mode 100644 src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js create mode 100644 src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.html create mode 100644 src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js create mode 100644 src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html create mode 100644 src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js create mode 100644 src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.html create mode 100644 src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.js create mode 100644 src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html create mode 100644 src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js create mode 100644 src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.html create mode 100644 src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.js create mode 100644 src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.html create mode 100644 src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js create mode 100644 src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html create mode 100644 src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.js create mode 100644 src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.scss create mode 100644 src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.html create mode 100644 src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.js create mode 100644 src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.scss diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..f2539bf --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + "extends": "semistandard", + "parser": "babel-eslint", + "plugins": [ + "standard", + "promise" + ] +}; \ No newline at end of file diff --git a/firebase.json b/firebase.json index 6dbcc4a..018c934 100644 --- a/firebase.json +++ b/firebase.json @@ -40,6 +40,34 @@ "source": "/sponsors", "destination": "/index.html" }, + { + "source": "/login", + "destination": "/index.html" + }, + { + "source": "/profile", + "destination": "/index.html" + }, + { + "source": "/codelabs/**/**/**", + "destination": "/index.html" + }, + { + "source": "/connect-ticket", + "destination": "/index.html" + }, + { + "source": "/scan", + "destination": "/index.html" + }, + { + "source": "/scanned-list", + "destination": "/index.html" + }, + { + "source": "/are-you-a-sponsor", + "destination": "/index.html" + }, { "source": "/auth-check", "destination": "/index.html" diff --git a/package.json b/package.json index 70406aa..b32e9cc 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "babel-plugin-transform-runtime": "^6.23.0", "babel-preset-env": "^1.6.0", "eslint-plugin-html": "^3.2.0", + "semistandard": "^11.0.0", "workbox-build": "^2.0.0", "workbox-routing": "^1.1.0", "workbox-sw": "^1.1.0" @@ -45,6 +46,18 @@ "minimist": "1.2.0", "isarray": "1.0.0", "assert-plus": "1.0.0", - "domelementtype": "1.3.0" + "domelementtype": "1.3.0", + "rimraf": "2.6.2", + "semver": "5.4.1", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "is-fullwidth-code-point": "2.0.0", + "ansi-regex": "3.0.0", + "es-abstract": "1.9.0", + "debug": "2.6.9", + "doctrine": "2.0.0", + "acorn": "5.1.2", + "find-up": "2.1.0", + "path-exists": "3.0.0" } } diff --git a/src/.temp/temp.json b/src/.temp/temp.json index cd28466..6f0cf00 100644 --- a/src/.temp/temp.json +++ b/src/.temp/temp.json @@ -39,6 +39,13 @@ "devfest-session-page": "modules/devfest-module/pages/devfest-session-page/devfest-session-page.js", "devfest-tickets-page": "modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js", "devfest-sponsors-page": "modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js", + "devfest-login-page": "modules/devfest-module/pages/devfest-login-page/devfest-login-page.js", + "devfest-profile-page": "modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js", + "devfest-codelabs-page": "modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js", + "devfest-connect-ticket-page": "modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js", + "devfest-scan-page": "modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js", + "devfest-scanned-list-page": "modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.js", + "devfest-not-sponsor-page": "modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.js", "devfest-not-found-page": "modules/devfest-module/pages/devfest-not-found-page/devfest-not-found-page.js", "devfest-not-authorized-page": "modules/devfest-module/pages/devfest-not-authorized-page/devfest-not-authorized-page.js", "devfest-authorized-page": "modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.js", @@ -54,6 +61,31 @@ "/sessions/:id": "devfest-session-page", "/tickets": "devfest-tickets-page", "/sponsors": "devfest-sponsors-page", + "/login": "devfest-login-page", + "/profile": { + "name": "devfest-login-page", + "auth": "isLoggedIn" + }, + "/codelabs/:type?/:id?/:page?": { + "name": "devfest-codelabs-page", + "auth": "isLoggedIn" + }, + "/connect-ticket": { + "name": "devfest-connect-ticket-page", + "auth": "isLoggedIn" + }, + "/scan": { + "name": "devfest-scan-page", + "auth": "isSponsor" + }, + "/scanned-list": { + "name": "devfest-scanned-list-page", + "auth": "isSponsor" + }, + "/are-you-a-sponsor": { + "name": "devfest-not-sponsor-page", + "auth": "isLoggedIn" + }, "/auth-check": { "name": "devfest-authorized-page", "auth": "exampleAuthentication" diff --git a/src/authentication/index.js b/src/authentication/index.js index 401cad9..a781fb4 100644 --- a/src/authentication/index.js +++ b/src/authentication/index.js @@ -1,5 +1,13 @@ export default { exampleAuthentication: () => { - return false + return false; + }, + + isLoggedIn: () => { + return true; + }, + + isSponsor: () => { + return true; } -} +}; diff --git a/src/config/dev.json b/src/config/dev.json index cd28466..6f0cf00 100644 --- a/src/config/dev.json +++ b/src/config/dev.json @@ -39,6 +39,13 @@ "devfest-session-page": "modules/devfest-module/pages/devfest-session-page/devfest-session-page.js", "devfest-tickets-page": "modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js", "devfest-sponsors-page": "modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js", + "devfest-login-page": "modules/devfest-module/pages/devfest-login-page/devfest-login-page.js", + "devfest-profile-page": "modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js", + "devfest-codelabs-page": "modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js", + "devfest-connect-ticket-page": "modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js", + "devfest-scan-page": "modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js", + "devfest-scanned-list-page": "modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.js", + "devfest-not-sponsor-page": "modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.js", "devfest-not-found-page": "modules/devfest-module/pages/devfest-not-found-page/devfest-not-found-page.js", "devfest-not-authorized-page": "modules/devfest-module/pages/devfest-not-authorized-page/devfest-not-authorized-page.js", "devfest-authorized-page": "modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.js", @@ -54,6 +61,31 @@ "/sessions/:id": "devfest-session-page", "/tickets": "devfest-tickets-page", "/sponsors": "devfest-sponsors-page", + "/login": "devfest-login-page", + "/profile": { + "name": "devfest-login-page", + "auth": "isLoggedIn" + }, + "/codelabs/:type?/:id?/:page?": { + "name": "devfest-codelabs-page", + "auth": "isLoggedIn" + }, + "/connect-ticket": { + "name": "devfest-connect-ticket-page", + "auth": "isLoggedIn" + }, + "/scan": { + "name": "devfest-scan-page", + "auth": "isSponsor" + }, + "/scanned-list": { + "name": "devfest-scanned-list-page", + "auth": "isSponsor" + }, + "/are-you-a-sponsor": { + "name": "devfest-not-sponsor-page", + "auth": "isLoggedIn" + }, "/auth-check": { "name": "devfest-authorized-page", "auth": "exampleAuthentication" diff --git a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html index b806b11..b502929 100644 --- a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html +++ b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html @@ -12,6 +12,16 @@ + + + + diff --git a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.js b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.js index 948bb15..d871681 100644 --- a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.js +++ b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.js @@ -1,51 +1,54 @@ -import 'polymer/polymer.html' -import 'polymer/lib/mixins/gesture-event-listeners.html' -import 'app-layout/app-header/app-header.html' -import 'app-layout/app-toolbar/app-toolbar.html' -import 'app-layout/app-drawer/app-drawer.html' -import '../devfest-button/devfest-button.js' -import '../gdg-logo/gdg-logo.js' -import './devfest-drawer.html' -import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js' - -class DevfestDrawer extends contentLoaderMixin(Polymer.GestureEventListeners(Polymer.Element)) { - static get is () { return 'devfest-drawer' } +import 'polymer/polymer.html'; +import 'polymer/lib/mixins/gesture-event-listeners.html'; +import 'app-layout/app-header/app-header.html'; +import 'app-layout/app-toolbar/app-toolbar.html'; +import 'app-layout/app-drawer/app-drawer.html'; +import '../devfest-button/devfest-button.js'; +import '../gdg-logo/gdg-logo.js'; +import './devfest-drawer.html'; +import User from '../../models/user-model'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; + +const {Polymer} = window; + +class DevfestDrawer extends User(contentLoaderMixin(Polymer.GestureEventListeners(Polymer.Element))) { + static get is () { return 'devfest-drawer'; } static get properties () { return { menu: { type: Array } - } + }; } constructor () { - super() - this._boundOpenDrawer = this.openDrawer.bind(this) + super(); + this._boundOpenDrawer = this.openDrawer.bind(this); } connectedCallback () { - super.connectedCallback() - this.reload() - window.addEventListener('open-drawer', this._boundOpenDrawer) + super.connectedCallback(); + this.reload(); + window.addEventListener('open-drawer', this._boundOpenDrawer); } disconnectedCallback () { - super.disconnectedCallback() - window.removeEventListener('open-drawer', this._boundOpenDrawer) + super.disconnectedCallback(); + window.removeEventListener('open-drawer', this._boundOpenDrawer); } reload (menu) { - this._fetchJson(menu || 'menu/default.json', 'menu') + this._fetchJson(menu || 'menu/default.json', 'menu'); } openDrawer () { - this.shadowRoot.querySelector('app-drawer').open() + this.shadowRoot.querySelector('app-drawer').open(); } closeDrawer () { - this.shadowRoot.querySelector('app-drawer').close() + this.shadowRoot.querySelector('app-drawer').close(); } } -window.customElements.define(DevfestDrawer.is, DevfestDrawer) \ No newline at end of file +window.customElements.define(DevfestDrawer.is, DevfestDrawer); diff --git a/src/modules/devfest-module/components/devfest-header/devfest-header.html b/src/modules/devfest-module/components/devfest-header/devfest-header.html index 8ded3f3..6f7fbdf 100644 --- a/src/modules/devfest-module/components/devfest-header/devfest-header.html +++ b/src/modules/devfest-module/components/devfest-header/devfest-header.html @@ -12,6 +12,16 @@ + + + + diff --git a/src/modules/devfest-module/components/devfest-header/devfest-header.js b/src/modules/devfest-module/components/devfest-header/devfest-header.js index eb5e0f4..5bac9e3 100644 --- a/src/modules/devfest-module/components/devfest-header/devfest-header.js +++ b/src/modules/devfest-module/components/devfest-header/devfest-header.js @@ -1,81 +1,83 @@ -import 'polymer/polymer.html' -import 'polymer/lib/mixins/gesture-event-listeners.html' -import 'app-layout/app-header/app-header.html' -import 'app-layout/app-toolbar/app-toolbar.html' -import 'iron-flex-layout/iron-flex-layout.html' -import 'shadycss/apply-shim.html' -import '../devfest-button/devfest-button.js' -import '../devfest-icon-button/devfest-icon-button.js' -import '../gdg-logo/gdg-logo.js' -import '../../fonts/devfest-fonts.html' -import './devfest-header.html' -import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js' +import 'polymer/polymer.html'; +import 'polymer/lib/mixins/gesture-event-listeners.html'; +import 'app-layout/app-header/app-header.html'; +import 'app-layout/app-toolbar/app-toolbar.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import '../devfest-button/devfest-button.js'; +import '../devfest-icon-button/devfest-icon-button.js'; +import '../gdg-logo/gdg-logo.js'; +import '../../fonts/devfest-fonts.html'; +import './devfest-header.html'; +import User from '../../models/user-model'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; -class DevfestHeader extends contentLoaderMixin(Polymer.GestureEventListeners(Polymer.Element)) { - static get is () { return 'devfest-header' } +const {Polymer, IntersectionObserver, CustomEvent} = window; + +class DevfestHeader extends User(contentLoaderMixin(Polymer.GestureEventListeners(Polymer.Element))) { + static get is () { return 'devfest-header'; } static get properties () { return { menu: { type: Array } - } + }; } connectedCallback () { - super.connectedCallback() - this.reload() - this._observedObject = null + super.connectedCallback(); + this.reload(); + this._observedObject = null; if (window.IntersectionObserver) { this._observer = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.target === this._observedObject) { if (!entry.isIntersecting) { - this.shadowRoot.querySelector('gdg-logo').style.opacity = 1 + this.shadowRoot.querySelector('gdg-logo').style.opacity = 1; } else { - this.shadowRoot.querySelector('gdg-logo').style.opacity = 0 + this.shadowRoot.querySelector('gdg-logo').style.opacity = 0; } } - }) + }); }, { threshold: [0, 0.25, 0.5, 0.75, 1.0] - }) + }); } } reload (menu) { - this._fetchJson(menu || 'menu/default.json', 'menu') + this._fetchJson(menu || 'menu/default.json', 'menu'); Polymer.RenderStatus.afterNextRender(this, () => { if (this._observer) { - this._observer.disconnect() + this._observer.disconnect(); } - const page = document.querySelector('.page--on-view') + const page = document.querySelector('.page--on-view'); if (page && page.nodeName.toLowerCase() === 'devfest-landing-page' && page.shadowRoot) { - - const children = page.shadowRoot.children - this._observedObject = null + const children = page.shadowRoot.children; + this._observedObject = null; for (var i = 0; i < children.length; i++) { if (children[i].getBoundingClientRect().height > 0) { - this._observedObject = children[i] + this._observedObject = children[i]; break; } } if (this._observer && this._observedObject) { - this._observer.observe(this._observedObject) + this._observer.observe(this._observedObject); } } - }) + }); } openDrawer () { - window.dispatchEvent(new CustomEvent('open-drawer')) + window.dispatchEvent(new CustomEvent('open-drawer')); } } -window.customElements.define(DevfestHeader.is, DevfestHeader) +window.customElements.define(DevfestHeader.is, DevfestHeader); -export default DevfestHeader \ No newline at end of file +export default DevfestHeader; diff --git a/src/modules/devfest-module/components/devfest-header/devfest-header.scss b/src/modules/devfest-module/components/devfest-header/devfest-header.scss index e9fdf8d..17b91a2 100644 --- a/src/modules/devfest-module/components/devfest-header/devfest-header.scss +++ b/src/modules/devfest-module/components/devfest-header/devfest-header.scss @@ -20,13 +20,13 @@ app-header { .menu { display: none; - @media screen and (max-width: 700px) { + @media screen and (max-width: 1100px) { display: block; } } .links { - @media screen and (max-width: 700px) { + @media screen and (max-width: 1100px) { display: none; } } @@ -38,7 +38,7 @@ app-header { min-width: 100px; height: 10px; - @media screen and (max-width: 700px) { + @media screen and (max-width: 1100px) { display: none; } } diff --git a/src/modules/devfest-module/components/devfest-speakers-section/devfest-speakers-section.js b/src/modules/devfest-module/components/devfest-speakers-section/devfest-speakers-section.js index b60c4cb..176815c 100644 --- a/src/modules/devfest-module/components/devfest-speakers-section/devfest-speakers-section.js +++ b/src/modules/devfest-module/components/devfest-speakers-section/devfest-speakers-section.js @@ -1,9 +1,9 @@ -import 'polymer/polymer.html' -import './devfest-speakers-section.html' -import app from '../../../../app' +import 'polymer/polymer.html'; +import './devfest-speakers-section.html'; +import app from '../../../../app'; class DevfestSpeakersSection extends Polymer.Element { - static get is () { return 'devfest-speakers-section' } + static get is () { return 'devfest-speakers-section'; } static get properties () { return { @@ -19,35 +19,33 @@ class DevfestSpeakersSection extends Polymer.Element { type: Boolean, value: false } - } + }; } static get observers () { return [ 'reload(speakers)', 'reload(speakers.*)' - ] + ]; } constructor () { super() - this._app = app + this._app = app; } reload () { - this.speakersArray = [] - const speakers = Object.entries(this.speakers) + this.speakersArray = []; + const speakers = Object.entries(this.speakers); speakers.forEach(speaker => { - const obj = speaker[1] - obj.id = speaker[0] - this.speakersArray.push(obj) - }) + const obj = speaker[1]; + obj.id = speaker[0]; + this.speakersArray.push(obj); + }); // console.log() } - - } -window.customElements.define(DevfestSpeakersSection.is, DevfestSpeakersSection) +window.customElements.define(DevfestSpeakersSection.is, DevfestSpeakersSection); -export default DevfestSpeakersSection \ No newline at end of file +export default DevfestSpeakersSection; diff --git a/src/modules/devfest-module/models/user-model.js b/src/modules/devfest-module/models/user-model.js index 54dbbc4..35442e3 100644 --- a/src/modules/devfest-module/models/user-model.js +++ b/src/modules/devfest-module/models/user-model.js @@ -1,35 +1,29 @@ -import { ReduxMixin, store, reducers } from '../../../../core/modules/state-manager'; import { combineReducers } from 'redux'; - -let firebase = null; -import(/* webpackChunkName: 'firebase' */ 'firebase').then(sdk => { - if (sdk) { - firebase = sdk; - } -}); - -let authStateChanged = null; +import { login, logout, firebaseDocumentLoader, observeAuth, firebaseRemoveListeners } from '../../firebase'; +import { ReduxMixin, store, reducers } from '../../../../core/modules/state-manager'; const profileModel = { primary: { displayName: String, - firstName: String, email: String, - avatar: String + avatar: String, + github: String, + ticket: String, + ticketEmail: String, + ticketName: String }, meta: { - lastName: String, dateJoined: Number, - dateBirth: Number + score: Number, + accepted: Boolean, + verified: Boolean }, cross: { - articles: Array, - threads: Array + sponsorId: String, + codelabsDone: Array } }; -const listeners = {}; - const modelPath = 'v1/user'; const USER_ACTION = { @@ -38,83 +32,16 @@ const USER_ACTION = { FETCH: 'USER_UPDATE_FETCH' }; -const observeAuth = (firebase, store) => { - authStateChanged = authStateChanged || firebase.auth().onAuthStateChanged((user) => { - store.dispatch({ - type: USER_ACTION.UPDATE, - user - }); - }); - return authStateChanged; -}; - -const updateAttrSnapshot = (store, attr, snapshot) => { - if (snapshot.exists()) { - store.dispatch({ - type: USER_ACTION.PROFILE, - value: snapshot.val(), - attr - }); - } -}; - -const updateModelTypeSnapshot = (store, modelType, snapshot) => { - if (snapshot.exists()) { - const attrs = []; - snapshot.forEach(child => { - attrs.push({ - attr: child.key, - value: child.val() - }); - }); - store.dispatch({ - type: USER_ACTION.PROFILE, - attrs - }); - } -}; - -const firebaseDocumentLoader = (modelPath, key, action) => { - const sourcePath = `${modelPath}/source/${key}`; - if (action.modelType) { - const modelType = `${sourcePath}/${action.modelType}`; - if (!action.attr) { - for (var i in profileModel) { - if (i === action.modelType) { - for (var j in profileModel[i]) { - if (listeners[modelType + '/' + j]) { - listeners[modelType + '/' + j].off(); - listeners[modelType + '/' + j] = null; - } - } - listeners[modelType] = listeners[modelType] || firebase.database().ref(modelType); - listeners[modelType].on('value', updateModelTypeSnapshot.bind(this, store, action.modelType)); - break; - } - } - } else if (!listeners[modelType]) { - const attr = `${modelType}/${action.attr}`; - listeners[attr] = listeners[attr] || firebase.database().ref(attr); - listeners[attr].on('value', updateAttrSnapshot.bind(this, store, action.attr)); - } - } -} - reducers.user = (user = {}, action) => { switch (action.type) { case USER_ACTION.FETCH: if (user.user && user.user.uid) { - firebaseDocumentLoader + firebaseDocumentLoader(modelPath, user.user.uid, action, store, profileModel, USER_ACTION.PROFILE); } return user; case USER_ACTION.UPDATE: if (!action.user) { - for (var path in listeners) { - if (listeners[path]) { - listeners[path].off(); - listeners[path] = null; - } - } + firebaseRemoveListeners(); } return Object.assign({}, user, { user: action.user @@ -145,14 +72,14 @@ reducers.user = (user = {}, action) => { }; store.replaceReducer(combineReducers(reducers)); - -if (firebase) { - observeAuth(firebase, store); -} else { - window.addEventListener('firebase-initialized', event => { - observeAuth(event.detail, store); +const userState = (user) => { + store.dispatch({ + type: USER_ACTION.UPDATE, + user }); -} +}; + +observeAuth(userState); export { USER_ACTION }; @@ -191,11 +118,11 @@ export default (superClass) => { } login () { - firebase.auth().signInWithPopup(new firebase.auth.GoogleAuthProvider()); + login('google'); } logout () { - firebase.auth().signOut(); + logout(); } }; }; diff --git a/src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.js b/src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.js index de90227..bd8e90a 100644 --- a/src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.js +++ b/src/modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.js @@ -1,10 +1,10 @@ -import 'polymer/polymer.html' -import './devfest-authorized-page.html' +import 'polymer/polymer.html'; +import './devfest-authorized-page.html'; class DevfestAuthorizedPage extends Polymer.Element { - static get is () { return 'devfest-authorized-page' } + static get is () { return 'devfest-authorized-page'; } } -window.customElements.define(DevfestAuthorizedPage.is, DevfestAuthorizedPage) +window.customElements.define(DevfestAuthorizedPage.is, DevfestAuthorizedPage); -export default DevfestAuthorizedPage \ No newline at end of file +export default DevfestAuthorizedPage; diff --git a/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.html b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.html new file mode 100644 index 0000000..b6ac2f4 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js new file mode 100644 index 0000000..2d7c5d7 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-codelabs-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestCodelabsPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-codelabs-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestCodelabsPage.is, DevfestCodelabsPage); + +export default DevfestCodelabsPage; diff --git a/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.html b/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.html new file mode 100644 index 0000000..df5a51a --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js b/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js new file mode 100644 index 0000000..7bfc846 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-connect-ticket-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestConnectTicketPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-connect-ticket-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestConnectTicketPage.is, DevfestConnectTicketPage); + +export default DevfestConnectTicketPage; diff --git a/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.scss b/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.html b/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.html index d3d0744..a23d01b 100644 --- a/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.html +++ b/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.html @@ -64,7 +64,7 @@

[[item.name]]

diff --git a/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js b/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js index bc28bf4..3a41c1b 100644 --- a/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js +++ b/src/modules/devfest-module/pages/devfest-landing-page/devfest-landing-page.js @@ -1,27 +1,28 @@ -import 'polymer/polymer.html' -import 'paper-ripple/paper-ripple.html' -import 'iron-flex-layout/iron-flex-layout.html' -import 'shadycss/apply-shim.html' -import 'iron-icon/iron-icon.html' -import 'marked-element/marked-element.html' -import 'google-map/google-map.html' -import 'google-map/google-map-marker.html' -import 'iron-media-query/iron-media-query.html' -import '../../components/devfest-button/devfest-button.js' -import '../../components/devfest-icon-button/devfest-icon-button.js' -import '../../components/devfest-speakers-section/devfest-speakers-section.js' -import '../../components/devfest-banner/devfest-banner.js' -import '../../components/devfest-footer/devfest-footer.js' -import '../../fonts/devfest-fonts.html' -import './devfest-landing-page.html' -import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js' -import marked from 'marked' -import { firebaseConfig } from '../../../../firebase.js' -import app from '../../../../app.js' -window.marked = window.marked || marked +import 'polymer/polymer.html'; +import 'paper-ripple/paper-ripple.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'iron-icon/iron-icon.html'; +import 'marked-element/marked-element.html'; +import 'google-map/google-map.html'; +import 'google-map/google-map-marker.html'; +import 'iron-media-query/iron-media-query.html'; +import '../../components/devfest-button/devfest-button.js'; +import '../../components/devfest-icon-button/devfest-icon-button.js'; +import '../../components/devfest-speakers-section/devfest-speakers-section.js'; +import '../../components/devfest-banner/devfest-banner.js'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../fonts/devfest-fonts.html'; +import './devfest-landing-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +import { firebaseConfig } from '../../../../firebase.js'; +import app from '../../../../app.js'; +window.marked = window.marked || marked; +const {Polymer, google} = window; class DevfestLandingPage extends contentLoaderMixin(Polymer.Element) { - static get is () { return 'devfest-landing-page' } + static get is () { return 'devfest-landing-page'; } static get properties () { return { @@ -62,44 +63,44 @@ class DevfestLandingPage extends contentLoaderMixin(Polymer.Element) { type: Boolean, value: false } - } + }; } static get observers () { return [ '_setMap(largeMapSize, middleSizeMap, smallMapSize, _map)' - ] + ]; } constructor () { - super() - this._apiKey = firebaseConfig[0].apiKey - this._app = app + super(); + this._apiKey = firebaseConfig[0].apiKey; + this._app = app; } connectedCallback () { - super.connectedCallback() - this.reload() + super.connectedCallback(); + this.reload(); } _setMap (large, middle, small, m) { - const map = this.shadowRoot.querySelector('.venue-section') + const map = this.shadowRoot.querySelector('.venue-section'); if (map) { if (!large && !middle && !small) { - large = window.innerWidth > 800 - small = window.innerWidth <= 600 - middle = !large && !small + large = window.innerWidth > 800; + small = window.innerWidth <= 600; + middle = !large && !small; } if (large) { - map.latitude = 14.536921 - map.longitude = 121.0151518 + map.latitude = 14.536921; + map.longitude = 121.0151518; } else if (middle) { - map.latitude = 14.52676 - map.longitude = 121.0214175 + map.latitude = 14.52676; + map.longitude = 121.0214175; } else if (small) { - map.latitude = 14.52976 - map.longitude = 121.0214175 + map.latitude = 14.52976; + map.longitude = 121.0214175; } else { } @@ -110,39 +111,36 @@ class DevfestLandingPage extends contentLoaderMixin(Polymer.Element) { if (map) { map.setOptions({ // center: {lat: 14.536921, lng: 121.0151518}, - panControl:false, - zoomControl:false, - mapTypeControl:false, - scaleControl:false, - streetViewControl:false, - overviewMapControl:false, - rotateControl:false, + panControl: false, + zoomControl: false, + mapTypeControl: false, + scaleControl: false, + streetViewControl: false, + overviewMapControl: false, + rotateControl: false, scrollwheel: false, navigationControl: false, draggable: false - }) + }); } } _animateMarker (marker) { - if (marker) { - marker.setAnimation(google.maps.Animation.BOUNCE) + if (marker && google) { + marker.setAnimation(google.maps.Animation.BOUNCE); } } + reload () { + this._fetchContent('pages/landing.md'); + this._fetchJson('speakers/speakers.json', 'speakers'); - reload() { - this._fetchContent('pages/landing.md') - this._fetchJson('speakers/speakers.json', 'speakers') - - const map = this.shadowRoot.querySelector('.venue-section') + const map = this.shadowRoot.querySelector('.venue-section'); if (map && typeof map.resize === 'function') { - map.resize() + map.resize(); } } - - // _shareFacebookLink () { // var text = 'Let\'s attend the Grandest Technology event of the year - GDG DevFest Philippines 2017!' // var link = window.location.protocol + '//' + window.location.hostname //'https://uxphilippines.com' // @@ -161,6 +159,6 @@ class DevfestLandingPage extends contentLoaderMixin(Polymer.Element) { // } } -window.customElements.define(DevfestLandingPage.is, DevfestLandingPage) +window.customElements.define(DevfestLandingPage.is, DevfestLandingPage); -export default DevfestLandingPage \ No newline at end of file +export default DevfestLandingPage; diff --git a/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html new file mode 100644 index 0000000..1950468 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js new file mode 100644 index 0000000..56d14fe --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-login-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestLoginPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-login-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestLoginPage.is, DevfestLoginPage); + +export default DevfestLoginPage; diff --git a/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.scss b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.html b/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.html new file mode 100644 index 0000000..6505605 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.js b/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.js new file mode 100644 index 0000000..e84d21e --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-not-sponsor-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestNotSponsorPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-not-sponsor-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestNotSponsorPage.is, DevfestNotSponsorPage); + +export default DevfestNotSponsorPage; diff --git a/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.scss b/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html new file mode 100644 index 0000000..55d769c --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js new file mode 100644 index 0000000..b61a08b --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-profile-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestProfilePage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-profile-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestProfilePage.is, DevfestProfilePage); + +export default DevfestProfilePage; diff --git a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.html b/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.html new file mode 100644 index 0000000..1950468 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.js b/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.js new file mode 100644 index 0000000..f236fb8 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-register-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestRegisterPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-register-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestRegisterPage.is, DevfestRegisterPage); + +export default DevfestRegisterPage; diff --git a/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.scss b/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-register-page/devfest-register-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.html b/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.html new file mode 100644 index 0000000..ef07031 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js b/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js new file mode 100644 index 0000000..b53a39a --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-scan-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestScanPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-scan-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestScanPage.is, DevfestScanPage); + +export default DevfestScanPage; diff --git a/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.scss b/src/modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html new file mode 100644 index 0000000..efbfd57 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.js b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.js new file mode 100644 index 0000000..a9fd8af --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-scanned-list-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestScannedListPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-scanned-list-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestScannedListPage.is, DevfestScannedListPage); + +export default DevfestScannedListPage; diff --git a/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.scss b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.html b/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.html index a09d997..fe64f50 100644 --- a/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.html +++ b/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.html @@ -1,26 +1,26 @@ - + diff --git a/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js b/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js index 09fb27f..6bfbb3e 100644 --- a/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js +++ b/src/modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js @@ -1,20 +1,20 @@ -import 'polymer/polymer.html' -import 'paper-ripple/paper-ripple.html' -import 'iron-flex-layout/iron-flex-layout.html' -import 'shadycss/apply-shim.html' -import 'iron-icon/iron-icon.html' -import 'marked-element/marked-element.html' -import '../../fonts/devfest-fonts.html' -import './devfest-sponsors-page.html' -import '../../components/devfest-footer/devfest-footer.js' -import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js' -import marked from 'marked' -import firebaseConfig from '../../../../firebase.js' -import app from '../../../../app.js' -window.marked = window.marked || marked +import 'polymer/polymer.html'; +import 'paper-ripple/paper-ripple.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'iron-icon/iron-icon.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import './devfest-sponsors-page.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +import app from '../../../../app.js'; +window.marked = window.marked || marked; +const {Polymer} = window; class DevfestSponsorsPage extends contentLoaderMixin(Polymer.Element) { - static get is () { return 'devfest-sponsors-page' } + static get is () { return 'devfest-sponsors-page'; } static get properties () { return { @@ -35,25 +35,24 @@ class DevfestSponsorsPage extends contentLoaderMixin(Polymer.Element) { type: Array, value: [] } - } + }; } constructor () { - super() - this._apiKey = firebaseConfig[0].apiKey - this._app = app + super(); + this._app = app; } connectedCallback () { - super.connectedCallback() - this.reload() + super.connectedCallback(); + this.reload(); } - reload() { - this._fetchContent('pages/sponsors.md') + reload () { + this._fetchContent('pages/sponsors.md'); } } -window.customElements.define(DevfestSponsorsPage.is, DevfestSponsorsPage) +window.customElements.define(DevfestSponsorsPage.is, DevfestSponsorsPage); -export default DevfestSponsorsPage \ No newline at end of file +export default DevfestSponsorsPage; diff --git a/src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js b/src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js index 3c3f500..0f7b822 100644 --- a/src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js +++ b/src/modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js @@ -1,20 +1,22 @@ -import 'polymer/polymer-element.html' -import 'polymer/lib/elements/dom-repeat.html' -import 'iron-icon/iron-icon.html' -import 'iron-flex-layout/iron-flex-layout.html' -import 'shadycss/apply-shim.html' -import 'marked-element/marked-element.html' -import '../../fonts/devfest-fonts.html' -import '../../icons/devfest-icons.html' -import '../../components/devfest-footer/devfest-footer.js' -import '../../components/devfest-button/devfest-button.js' -import './devfest-tickets-page.html' -import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js' -import marked from 'marked' -window.marked = window.marked || marked +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-tickets-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; class DevfestTicketsPage extends contentLoaderMixin(Polymer.Element) { - static get is () { return 'devfest-tickets-page' } + static get is () { return 'devfest-tickets-page'; } static get properties () { return { @@ -30,20 +32,20 @@ class DevfestTicketsPage extends contentLoaderMixin(Polymer.Element) { type: Array, value: [] } - } + }; } connectedCallback () { - super.connectedCallback() - this.reload() + super.connectedCallback(); + this.reload(); } - reload() { - this._fetchContent('pages/tickets.md') + reload () { + this._fetchContent('pages/tickets.md'); // this._fetchJson('speakers/speakers.json', 'speakers') } } -window.customElements.define(DevfestTicketsPage.is, DevfestTicketsPage) +window.customElements.define(DevfestTicketsPage.is, DevfestTicketsPage); -export default DevfestTicketsPage \ No newline at end of file +export default DevfestTicketsPage; diff --git a/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.html b/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.html new file mode 100644 index 0000000..74e4781 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.html @@ -0,0 +1,12 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.js b/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.js new file mode 100644 index 0000000..b43d120 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-verify-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestVerifyPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-verify-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestVerifyPage.is, DevfestVerifyPage); + +export default DevfestVerifyPage; diff --git a/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.scss b/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-verify-page/devfest-verify-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; diff --git a/src/modules/firebase/index.js b/src/modules/firebase/index.js index e69de29..9eb3593 100644 --- a/src/modules/firebase/index.js +++ b/src/modules/firebase/index.js @@ -0,0 +1,92 @@ +let firebase = null; +const listeners = {}; +import(/* webpackChunkName: 'firebase' */ 'firebase').then(sdk => { + if (sdk) { + firebase = sdk; + } +}); + +const updateAttrSnapshot = (store, attr, type, snapshot) => { + if (snapshot.exists()) { + store.dispatch({ + type, // USER_ACTION.PROFILE, + value: snapshot.val(), + attr + }); + } +}; + +const updateModelTypeSnapshot = (store, modelType, type, snapshot) => { + if (snapshot.exists()) { + const attrs = []; + snapshot.forEach(child => { + attrs.push({ + attr: child.key, + value: child.val() + }); + }); + store.dispatch({ + type, // USER_ACTION.PROFILE, + attrs + }); + } +}; + +export const firebaseRemoveListeners = () => { + for (var path in listeners) { + if (listeners[path]) { + listeners[path].off(); + listeners[path] = null; + } + } +}; + +export const firebaseDocumentLoader = (modelPath, key, action, store, profileModel, type) => { + const sourcePath = `${modelPath}/source/${key}`; + if (action.modelType) { + const modelType = `${sourcePath}/${action.modelType}`; + if (!action.attr) { + for (var i in profileModel) { + if (i === action.modelType) { + for (var j in profileModel[i]) { + if (listeners[modelType + '/' + j]) { + listeners[modelType + '/' + j].off(); + listeners[modelType + '/' + j] = null; + } + } + listeners[modelType] = listeners[modelType] || firebase.database().ref(modelType); + listeners[modelType].on('value', updateModelTypeSnapshot.bind(this, store, action.modelType, type)); + break; + } + } + } else if (!listeners[modelType]) { + const attr = `${modelType}/${action.attr}`; + listeners[attr] = listeners[attr] || firebase.database().ref(attr); + listeners[attr].on('value', updateAttrSnapshot.bind(this, store, action.attr, type)); + } + } +}; + +export const login = (name) => { + var provider = null; + if (name === 'google') { + provider = new firebase.auth.GoogleAuthProvider(); + } + + return firebase.auth().signInWithPopup(provider); +}; + +export const logout = () => { + return firebase.auth().signOut(); +}; + +export const observeAuth = (dispatch) => { + if (firebase) { + firebase.auth().onAuthStateChanged(dispatch); + } else { + window.addEventListener('firebase-initialized', event => { + firebase = event.detail; + firebase.auth().onAuthStateChanged(dispatch); + }); + } +}; diff --git a/src/routing.js b/src/routing.js index d21e5a3..4b60290 100644 --- a/src/routing.js +++ b/src/routing.js @@ -8,6 +8,13 @@ '/sessions/:id': () => { return import(/* webpackChunkName: "devfest-session-page" */ './modules/devfest-module/pages/devfest-session-page/devfest-session-page.js') }, '/tickets': () => { return import(/* webpackChunkName: "devfest-tickets-page" */ './modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js') }, '/sponsors': () => { return import(/* webpackChunkName: "devfest-sponsors-page" */ './modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js') }, +'/login': () => { return import(/* webpackChunkName: "devfest-login-page" */ './modules/devfest-module/pages/devfest-login-page/devfest-login-page.js') }, +'/profile': () => { return import(/* webpackChunkName: "devfest-login-page" */ './modules/devfest-module/pages/devfest-login-page/devfest-login-page.js') }, +'/codelabs/:type?/:id?/:page?': () => { return import(/* webpackChunkName: "devfest-codelabs-page" */ './modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js') }, +'/connect-ticket': () => { return import(/* webpackChunkName: "devfest-connect-ticket-page" */ './modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js') }, +'/scan': () => { return import(/* webpackChunkName: "devfest-scan-page" */ './modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js') }, +'/scanned-list': () => { return import(/* webpackChunkName: "devfest-scanned-list-page" */ './modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.js') }, +'/are-you-a-sponsor': () => { return import(/* webpackChunkName: "devfest-not-sponsor-page" */ './modules/devfest-module/pages/devfest-not-sponsor-page/devfest-not-sponsor-page.js') }, '/auth-check': () => { return import(/* webpackChunkName: "devfest-authorized-page" */ './modules/devfest-module/pages/devfest-authorized-page/devfest-authorized-page.js') } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1003f8d..400f5d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,16 +10,34 @@ abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" -ajv@^4.9.1: +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4, acorn@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" + +ajv-keywords@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv@^4.7.0, ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-regex@^2.0.0, ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" ansi-styles@^2.2.1: version "2.2.1" @@ -36,10 +54,37 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + argsarray@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array.prototype.find@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -60,7 +105,7 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -533,6 +578,20 @@ buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + caniuse-lite@^1.0.30000718: version "1.0.30000726" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000726.tgz#966a753fa107a09d4131cf8b3d616723a06ccf7e" @@ -541,7 +600,7 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -551,6 +610,20 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -569,10 +642,22 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + core-js@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" @@ -587,15 +672,25 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" dependencies: assert-plus "^1.0.0" -debug@^2.2.0, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" +debug-log@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + +debug@^2.1.1, debug@^2.2.0, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" @@ -607,6 +702,10 @@ deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -618,6 +717,29 @@ defined@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" +deglob@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a" + dependencies: + find-root "^1.0.0" + glob "^7.0.5" + ignore "^3.0.9" + pkg-config "^1.1.0" + run-parallel "^1.1.2" + uniq "^1.0.1" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -626,6 +748,13 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" +doctrine@1.5.0, doctrine@^1.2.2, doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" @@ -679,9 +808,15 @@ entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -es-abstract@^1.5.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.5.0, es-abstract@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -697,10 +832,98 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -escape-string-regexp@^1.0.2: +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.31" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.31.tgz#7bb938c95a7f1b9f728092dc09c41edcc398eefe" + dependencies: + es6-iterator "~2.0.1" + es6-symbol "~3.1.1" + +es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-config-semistandard@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-semistandard/-/eslint-config-semistandard-11.0.0.tgz#44eef7cfdfd47219e3a7b81b91b540e880bb2615" + +eslint-config-standard-jsx@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642" + +eslint-config-standard@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" + +eslint-import-resolver-node@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c" + dependencies: + debug "^2.2.0" + object-assign "^4.0.1" + resolve "^1.1.6" + +eslint-module-utils@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + eslint-plugin-html@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-3.2.1.tgz#4289d38245f3d95134d22c17b1894d78db92c572" @@ -708,10 +931,132 @@ eslint-plugin-html@^3.2.0: htmlparser2 "^3.8.2" semver "^5.4.1" +eslint-plugin-import@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.2.0" + doctrine "1.5.0" + eslint-import-resolver-node "^0.2.0" + eslint-module-utils "^2.0.0" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + pkg-up "^1.0.0" + +eslint-plugin-node@~4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz#c04390ab8dbcbb6887174023d6f3a72769e63b97" + dependencies: + ignore "^3.0.11" + minimatch "^3.0.2" + object-assign "^4.0.1" + resolve "^1.1.7" + semver "5.3.0" + +eslint-plugin-promise@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" + +eslint-plugin-react@~6.10.0: + version "6.10.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" + dependencies: + array.prototype.find "^2.0.1" + doctrine "^1.2.2" + has "^1.0.1" + jsx-ast-utils "^1.3.4" + object.assign "^4.0.4" + +eslint-plugin-standard@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" + +eslint@~3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.5.2" + debug "^2.1.1" + doctrine "^2.0.0" + escope "^3.6.0" + espree "^3.4.0" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.14.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~2.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^3.4.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" + dependencies: + acorn "^5.1.1" + acorn-jsx "^3.0.0" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -720,12 +1065,40 @@ extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + faye-websocket@0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.9.3.tgz#482a505b0df0ae626b969866d3bd740cdb962e83" dependencies: websocket-driver ">=0.5.1" +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +find-root@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + +find-up@^1.0.0, find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + firebase@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/firebase/-/firebase-4.5.0.tgz#e0973a9803b74c4c9d73d19f874712e6e9d16ba7" @@ -737,6 +1110,15 @@ firebase@^4.5.0: promise-polyfill "^6.0.2" xmlhttprequest "^1.8.0" +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + for-each@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" @@ -788,7 +1170,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.0: +function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1, function-bind@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -805,13 +1187,27 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" dependencies: assert-plus "^1.0.0" -glob@^7.0.5, glob@^7.1.1, glob@~7.1.2: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -829,10 +1225,21 @@ global@^4.3.2: min-document "^2.19.0" process "~0.5.1" -globals@^9.18.0: +globals@^9.14.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -900,10 +1307,18 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +ignore@^3.0.11, ignore@^3.0.9, ignore@^3.2.0: + version "3.3.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" + immediate@^3.2.2: version "3.2.3" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + indexeddbshim@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/indexeddbshim/-/indexeddbshim-3.0.4.tgz#b4d9a4fb3fce7532b66e19790a15692f9b2c7b56" @@ -918,7 +1333,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -926,6 +1341,28 @@ ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +interpret@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" + intersection-observer@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.4.2.tgz#24100ed620baf6a427072996d4d73366e9ec93ef" @@ -936,6 +1373,10 @@ invariant@^2.2.2: dependencies: loose-envify "^1.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" @@ -944,22 +1385,55 @@ is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" +is-fullwidth-code-point@^1.0.0, is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" is-function@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" +is-my-json-valid@^2.10.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: has "^1.0.1" +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" @@ -968,7 +1442,7 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -isarray@0.0.1, isarray@1.0.0, isarray@~1.0.0: +isarray@0.0.1, isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -993,6 +1467,13 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +js-yaml@^3.5.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -1005,7 +1486,7 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: @@ -1025,6 +1506,10 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + jsonwebtoken@^7.3.0: version "7.4.3" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz#77f5021de058b605a1783fa1283e99812e645638" @@ -1044,6 +1529,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jsx-ast-utils@^1.3.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" + jwa@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5" @@ -1061,6 +1550,29 @@ jws@^3.1.4: jwa "^1.1.4" safe-buffer "^5.0.1" +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash-es@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" @@ -1069,6 +1581,10 @@ lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -1086,7 +1602,7 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "~3.0.0" -lodash@^4.17.4, lodash@^4.2.1: +lodash@^4.0.0, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -1116,17 +1632,17 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -minimatch@^3.0.0, minimatch@^3.0.4: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: brace-expansion "^1.1.7" -minimist@0.0.8, minimist@1.2.0, minimist@^1.2.0, minimist@~1.2.0: +minimist@0.0.8, minimist@1.2.0, minimist@^1.1.0, minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -"mkdirp@>=0.5 0", mkdirp@^0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1140,10 +1656,18 @@ ms@2.0.0, ms@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + nan@~2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + node-pre-gyp@~0.6.36: version "0.6.37" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.37.tgz#3c872b236b2e266e4140578fe1ee88f693323a05" @@ -1187,7 +1711,7 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^4.1.0: +object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1195,16 +1719,39 @@ object-inspect@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.3.0.tgz#5b1eb8e6742e2ee83342a637034d844928ba2f6d" -object-keys@^1.0.8: +object-keys@^1.0.10, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object.assign@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.0" + object-keys "^1.0.10" + once@^1.3.0, once@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -1220,10 +1767,34 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +path-exists@^2.0.0, path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" @@ -1238,10 +1809,59 @@ performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-conf@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" + dependencies: + find-up "^2.0.0" + load-json-file "^2.0.0" + +pkg-config@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + dependencies: + debug-log "^1.0.0" + find-root "^1.0.0" + xtend "^4.0.1" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pkg-up@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" + dependencies: + find-up "^1.0.0" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + pouchdb-collections@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-1.0.1.tgz#fe63a17da977611abef7cb8026cb1a9553fd8359" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + private@^0.1.6: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -1254,6 +1874,10 @@ process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + promise-polyfill@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.0.2.tgz#d9c86d3dc4dc2df9016e88946defd69b49b41162" @@ -1275,7 +1899,7 @@ rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -1287,6 +1911,20 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: string_decoder "~1.0.3" util-deprecate "~1.0.1" +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + redux@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" @@ -1357,29 +1995,76 @@ request@^2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" -resolve@~1.4.0: +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@^1.1.6, resolve@^1.1.7, resolve@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" dependencies: path-parse "^1.0.5" +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" dependencies: through "~2.3.4" -rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +run-parallel@^1.1.2: + version "1.1.6" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -semver@^5.3.0, semver@^5.4.1: +semistandard@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/semistandard/-/semistandard-11.0.0.tgz#d2d9fc8ac393de21312195e006e50c8861391c47" + dependencies: + eslint "~3.19.0" + eslint-config-semistandard "^11.0.0" + eslint-config-standard "^10.2.1" + eslint-config-standard-jsx "4.0.1" + eslint-plugin-import "~2.2.0" + eslint-plugin-node "~4.2.2" + eslint-plugin-promise "~3.5.0" + eslint-plugin-react "~6.10.0" + eslint-plugin-standard "~3.0.1" + standard-engine "~7.0.0" + +semver@5.3.0, semver@^5.3.0, semver@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -1387,16 +2072,32 @@ set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +shelljs@^0.7.5: + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" dependencies: hoek "2.x.x" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + sqlite3@^3.1.3: version "3.1.9" resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-3.1.9.tgz#b2e7fbaa348380318d3834323918c3c351b8bf18" @@ -1418,13 +2119,21 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" +standard-engine@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-7.0.0.tgz#ebb77b9c8fc2c8165ffa353bd91ba0dff41af690" dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + deglob "^2.1.0" + get-stdin "^5.0.1" + minimist "^1.1.0" + pkg-conf "^2.0.0" + +string-width@^1.0.1, string-width@^1.0.2, string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" string.prototype.trim@~1.1.2: version "1.1.2" @@ -1444,11 +2153,15 @@ stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" +strip-ansi@^3.0.0, strip-ansi@^3.0.1, strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" dependencies: - ansi-regex "^2.0.0" + ansi-regex "^3.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" strip-json-comments@~2.0.1: version "2.0.1" @@ -1462,6 +2175,17 @@ symbol-observable@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + tape@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/tape/-/tape-4.8.0.tgz#f6a9fec41cc50a1de50fa33603ab580991f6068e" @@ -1501,7 +2225,11 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" -through@~2.3.4, through@~2.3.8: +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -1525,6 +2253,10 @@ tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -1535,14 +2267,34 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + universalify@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -1587,6 +2339,10 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2" +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + workbox-build@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-2.0.0.tgz#3f3b3591dcab71c39a64be1dce7445f0190acb72" @@ -1610,10 +2366,16 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + xmlhttprequest@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" -xtend@^4.0.1: +xtend@^4.0.0, xtend@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From 328148b33e0c238d895616c54834f67d8001058f Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Wed, 11 Oct 2017 03:21:06 +0800 Subject: [PATCH 21/56] added login Signed-off-by: Toni-Jan Keith Monserrat --- bower.json | 3 +- .../devfest-button-only.html | 10 ++++ .../devfest-button-only.js | 56 +++++++++++++++++++ .../devfest-button-only.scss | 55 ++++++++++++++++++ .../devfest-button/devfest-button.html | 6 -- .../devfest-module/models/user-model.js | 6 +- .../devfest-login-page.html | 6 +- .../devfest-login-page/devfest-login-page.js | 6 +- .../devfest-login-page.scss | 28 ++++++++++ .../devfest-register-page.html | 4 +- src/modules/firebase/index.js | 4 ++ 11 files changed, 170 insertions(+), 14 deletions(-) create mode 100644 src/modules/devfest-module/components/devfest-button-only/devfest-button-only.html create mode 100644 src/modules/devfest-module/components/devfest-button-only/devfest-button-only.js create mode 100644 src/modules/devfest-module/components/devfest-button-only/devfest-button-only.scss diff --git a/bower.json b/bower.json index d1bb5a2..ae85427 100644 --- a/bower.json +++ b/bower.json @@ -30,7 +30,8 @@ "paper-item": "PolymerElements/paper-item#^2.0.0", "paper-toast": "PolymerElements/paper-toast#^2.0.0", "google-map": "GoogleWebComponents/google-map#^2.0.2", - "iron-media-query": "PolymerElements/iron-media-query#^2.0.0" + "iron-media-query": "PolymerElements/iron-media-query#^2.0.0", + "paper-button": "PolymerElements/paper-button#^2.0.0" }, "devDependencies": { "web-component-tester": "^6.0.0" diff --git a/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.html b/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.html new file mode 100644 index 0000000..c8b7786 --- /dev/null +++ b/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.html @@ -0,0 +1,10 @@ + + + diff --git a/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.js b/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.js new file mode 100644 index 0000000..a9fe5a8 --- /dev/null +++ b/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.js @@ -0,0 +1,56 @@ +import 'polymer/polymer.html'; +import 'paper-ripple/paper-ripple.html'; +import './devfest-button-only.html'; + +class DevfestButton extends Polymer.Element { + static get is () { return 'devfest-button-only'; } + + static get properties () { + return { + href: { + type: String, + value: '#' + }, + isBig: { + type: Boolean, + value: false + }, + target: { + type: String + }, + noColor: { + type: Boolean, + value: false + }, + disable: { + type: Boolean, + value: false + }, + red: { + type: Boolean, + value: false + }, + className: String + }; + } + + _isBig (isBig) { + return isBig ? 'button__big' : ''; + } + + _noColor (noColor) { + return noColor ? 'button__no-color' : ''; + } + + _getHref (href, disable) { + return disable ? '#' : href; + } + + _red (red) { + return red ? 'red' : ''; + } +} + +window.customElements.define(DevfestButton.is, DevfestButton); + +export default DevfestButton; diff --git a/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.scss b/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.scss new file mode 100644 index 0000000..b5a7b45 --- /dev/null +++ b/src/modules/devfest-module/components/devfest-button-only/devfest-button-only.scss @@ -0,0 +1,55 @@ +.button { + font-family: 'Roboto', 'Arial', sans-serif; + background: #2e9be6; + color: white; + border: 3px solid #2e9be6; + border-radius: 2px; + padding: 12px; + font-size: 16px; + width: 100%; + display: block; + text-transform: uppercase; + font-weight: bold; + text-decoration: none; + position: relative; + cursor: pointer; +} + +.google { + background: #DD4B39; + color: white; + border-color: #DD4B39; +} + +.facebook { + background: #3B5998; + color: white; + border-color: #3B5998; +} + +.github { + background: #444444; + color: white; + border-color: #444444; +} + +.button__big { + padding: 24px; + font-size: 1.5em; +} + +.button__no-color { + background: none; + color: #666; + border: none; +} + +.button__no-color:hover { + color: #4688f4; +} + +.red { + background: #e63125; + border: 3px solid #e63125; + color: white; +} \ No newline at end of file diff --git a/src/modules/devfest-module/components/devfest-button/devfest-button.html b/src/modules/devfest-module/components/devfest-button/devfest-button.html index 4ddd644..0c4e986 100644 --- a/src/modules/devfest-module/components/devfest-button/devfest-button.html +++ b/src/modules/devfest-module/components/devfest-button/devfest-button.html @@ -7,10 +7,4 @@ - - diff --git a/src/modules/devfest-module/models/user-model.js b/src/modules/devfest-module/models/user-model.js index 35442e3..64182fc 100644 --- a/src/modules/devfest-module/models/user-model.js +++ b/src/modules/devfest-module/models/user-model.js @@ -117,8 +117,10 @@ export default (superClass) => { } } - login () { - login('google'); + login (e) { + var el = e.target; + var provider = el.id || 'google'; + login(provider); } logout () { diff --git a/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html index 1950468..663bee6 100644 --- a/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html +++ b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.html @@ -2,8 +2,12 @@ diff --git a/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js index 6ea3791..34aa757 100644 --- a/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js +++ b/src/modules/devfest-module/pages/devfest-login-page/devfest-login-page.js @@ -3,7 +3,7 @@ import 'polymer/lib/elements/dom-repeat.html'; import 'iron-icon/iron-icon.html'; import 'iron-flex-layout/iron-flex-layout.html'; import 'shadycss/apply-shim.html'; -// import 'paper-button/paper-button.html'; +import 'paper-spinner/paper-spinner.html'; import 'marked-element/marked-element.html'; import '../../fonts/devfest-fonts.html'; import '../../icons/devfest-icons.html'; @@ -37,12 +37,27 @@ class DevfestLoginPage extends User(Polymer.GestureEventListeners(contentLoaderM }; } + static get observers () { + return [ + '_checkUser(user)' + ]; + } + connectedCallback () { super.connectedCallback(); this.reload(); } - reload () {} + _checkUser (user) { + if (user) { + window.history.pushState({}, '', '/profile'); + window.dispatchEvent(new CustomEvent('location-changed')); + } + } + + reload () { + this._checkUser(this.user); + } } window.customElements.define(DevfestLoginPage.is, DevfestLoginPage); diff --git a/src/routing.js b/src/routing.js index 4b60290..769bb83 100644 --- a/src/routing.js +++ b/src/routing.js @@ -9,7 +9,7 @@ '/tickets': () => { return import(/* webpackChunkName: "devfest-tickets-page" */ './modules/devfest-module/pages/devfest-tickets-page/devfest-tickets-page.js') }, '/sponsors': () => { return import(/* webpackChunkName: "devfest-sponsors-page" */ './modules/devfest-module/pages/devfest-sponsors-page/devfest-sponsors-page.js') }, '/login': () => { return import(/* webpackChunkName: "devfest-login-page" */ './modules/devfest-module/pages/devfest-login-page/devfest-login-page.js') }, -'/profile': () => { return import(/* webpackChunkName: "devfest-login-page" */ './modules/devfest-module/pages/devfest-login-page/devfest-login-page.js') }, +'/profile': () => { return import(/* webpackChunkName: "devfest-profile-page" */ './modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js') }, '/codelabs/:type?/:id?/:page?': () => { return import(/* webpackChunkName: "devfest-codelabs-page" */ './modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js') }, '/connect-ticket': () => { return import(/* webpackChunkName: "devfest-connect-ticket-page" */ './modules/devfest-module/pages/devfest-connect-ticket-page/devfest-connect-ticket-page.js') }, '/scan': () => { return import(/* webpackChunkName: "devfest-scan-page" */ './modules/devfest-module/pages/devfest-scan-page/devfest-scan-page.js') }, From aa1ee3b2e1b9da3e6ecf24d067575b463ee54335 Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Wed, 11 Oct 2017 04:45:31 +0800 Subject: [PATCH 23/56] added stuff Signed-off-by: Toni-Jan Keith Monserrat --- functions/index.js | 14 +++++++++- .../devfest-drawer/devfest-drawer.html | 2 +- .../devfest-module/models/user-model.js | 26 +++++++++++++++++-- src/modules/firebase/index.js | 9 ++++++- 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/functions/index.js b/functions/index.js index ce475e2..70b177e 100644 --- a/functions/index.js +++ b/functions/index.js @@ -1,4 +1,16 @@ -const functions = require('firebase-functions') +const functions = require('firebase-functions'); +const admin = require('firebase-admin'); +admin.initializeApp(functions.config().firebase); + +exports.createProfile = functions.auth.user().onCreate(event => { + const user = event.data; + const uid = event.uid; + const email = user.email; + const displayName = user.displayName || email; + const image = user.photoURL; + const key = admin.database().ref(`v1/`) + // ... +}); // // Create and Deploy Your First Cloud Functions // // https://firebase.google.com/docs/functions/write-firebase-functions diff --git a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html index 28f4f61..5e298a5 100644 --- a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html +++ b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html @@ -16,7 +16,7 @@

Unlink Accounts

+

+ Note: Unlinking your Github account will reset your score. +

@@ -89,5 +97,36 @@

Ticket Connected

+ +
+

+ Are you sure you want to disconnect your ticket from your account? (You will not be eligible to be part of the raffle prizes and will reset your score) +

+ + + Disconnect Ticket. + +
+ + Cancel + +
+
+ + +
+

+ Are you sure you want to unlink [[_unlinkId]] from your account? (You will not be eligible to be part of the raffle prizes and will reset your score) +

+ + + Disconnect [[_unlinkId]] + +
+ + Cancel + +
+
diff --git a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js index a3ef514..07637a7 100644 --- a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js +++ b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js @@ -3,6 +3,7 @@ import 'polymer/lib/elements/dom-repeat.html'; import 'iron-icon/iron-icon.html'; import 'iron-flex-layout/iron-flex-layout.html'; import 'shadycss/apply-shim.html'; +import 'paper-dialog/paper-dialog.html'; import 'marked-element/marked-element.html'; import '../../fonts/devfest-fonts.html'; import '../../icons/devfest-icons.html'; @@ -105,6 +106,66 @@ class DevfestProfilePage extends User(contentLoaderMixin(Polymer.Element)) { } } + disconnectDialog () { + this.shadowRoot.querySelector('#disconnect-dialog').open(); + } + + unlinkDialog (e) { + var el = e.target; + while (!el.id) { + el = el.parentNode; + } + this._unlinkId = el.id; + this.shadowRoot.querySelector('#unlink-dialog').open(); + } + + unlink () { + super.unlink(); + this.shadowRoot.querySelector('#unlink-dialog').close(); + this._unlinkId = null; + } + + _closeUnlinkDialog () { + this.shadowRoot.querySelector('#unlink-dialog').cancel(); + this._unlinkId = null; + } + + _disconnect () { + const headers = new Headers(); + headers.append('Content-Type', 'application/json'); + var user = this.user; + var profile = this.profile; + if (user && profile) { + user.getIdToken().then(token => { + fetch('/disconnect', { + method: 'POST', + headers, + body: JSON.stringify({ + id: profile.ticketNumber, + token + }) + }).then(res => { + return res.json(); + }).then(json => { + if (json.success) { + document.querySelector('app-shell').showMessage('Disconnected', function () { document.querySelector('app-shell').closeToast(); }, 'Close', null, 10000); + } else { + if (Raven) { + Raven.captureException(json); + } + document.querySelector('app-shell').showMessage('Error in disconnecting ticket: ' + json.message, function () { document.querySelector('app-shell').closeToast(); }, 'Close', null, 10000); + } + this.notifyPath('profile.ticketNumber'); + this.shadowRoot.querySelector('#disconnect-dialog').close(); + }); + }); + } + } + + _closeDisconnectDialog () { + this.shadowRoot.querySelector('#disconnect-dialog').cancel(); + } + reload () {} } diff --git a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss index aeaf544..8465ae3 100644 --- a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss +++ b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.scss @@ -78,4 +78,6 @@ text-align: left; } - +.dialog-box { + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12), 0 3px 1px -2px rgba(0,0,0,.2); +} From 7ff130eff875ddd61d798254f7370c0086f92040 Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Thu, 12 Oct 2017 16:13:36 +0800 Subject: [PATCH 45/56] found it Signed-off-by: Toni-Jan Keith Monserrat --- functions/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/functions/index.js b/functions/index.js index 463c6ff..effb97a 100644 --- a/functions/index.js +++ b/functions/index.js @@ -445,8 +445,13 @@ exports.connect = functions.https.onRequest((req, res) => { updates[`v1/eventbrite/source/${req.body.id}/primary/displayName`] = user.displayName || user.name || user.email; updates[`v1/eventbrite/source/${req.body.id}/primary/email`] = user.email; updates[`v1/eventbrite/source/${req.body.id}/primary/uid`] = user.uid; - updates[`v1/eventbrite/source/${oldTicketNumber}`] = null; + if (oldTicketNumber) { + updates[`v1/eventbrite/source/${oldTicketNumber}`] = null; + } + + + console.log(updates) return admin .database() .ref() From 5fdc6121ef948cb1426ce6091240e44f3084bc85 Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Thu, 12 Oct 2017 16:14:18 +0800 Subject: [PATCH 46/56] fixed Signed-off-by: Toni-Jan Keith Monserrat --- functions/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/functions/index.js b/functions/index.js index effb97a..828c2ff 100644 --- a/functions/index.js +++ b/functions/index.js @@ -449,9 +449,6 @@ exports.connect = functions.https.onRequest((req, res) => { if (oldTicketNumber) { updates[`v1/eventbrite/source/${oldTicketNumber}`] = null; } - - - console.log(updates) return admin .database() .ref() From 01dfd90eabfcee71fee3c17bfbe4496712296a7a Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Thu, 12 Oct 2017 16:22:57 +0800 Subject: [PATCH 47/56] added stff Signed-off-by: Toni-Jan Keith Monserrat --- .../devfest-profile-page/devfest-profile-page.html | 10 ++++++++++ .../pages/devfest-profile-page/devfest-profile-page.js | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html index 38d0642..234e63a 100644 --- a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html +++ b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.html @@ -93,6 +93,16 @@

Ticket Connected

+ + diff --git a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js index 07637a7..2d79e85 100644 --- a/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js +++ b/src/modules/devfest-module/pages/devfest-profile-page/devfest-profile-page.js @@ -38,7 +38,6 @@ class DevfestProfilePage extends User(contentLoaderMixin(Polymer.Element)) { } _setProfileImage (image) { - console.log(image) this.shadowRoot.querySelector('#profile-image').style.background = `url(${image}) center/cover no-repeat`; } From 861611ef4d63dcccbaab0ac0dca0e84be7538c42 Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Thu, 12 Oct 2017 16:38:20 +0800 Subject: [PATCH 48/56] added stiuff Signed-off-by: Toni-Jan Keith Monserrat --- src/config/prod.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/config/prod.json b/src/config/prod.json index 8ca5957..0b5e945 100644 --- a/src/config/prod.json +++ b/src/config/prod.json @@ -19,7 +19,11 @@ "firebaseConfig": [ { "apiKey": "AIzaSyB3VQN0MNOxcunaUKXZr54u0t6ruv2YbkE", - "name": "DEFAULT" + "authDomain": "devfestph.firebaseapp.com", + "databaseURL": "https://devfestph.firebaseio.com", + "projectId": "devfestph", + "storageBucket": "devfestph.appspot.com", + "messagingSenderId": "36335134103" } ] }, @@ -129,6 +133,10 @@ { "source": "/scan-id", "function": "scanId" + }, + { + "source": "/disconnect", + "function": "disconnect" } ], "headers": [ From 677237a8fd2e1356367201df06e10496a0525ffd Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Thu, 12 Oct 2017 16:48:58 +0800 Subject: [PATCH 49/56] added stuff Signed-off-by: Toni-Jan Keith Monserrat --- firebase.json | 8 ++++ functions/index.js | 22 ++++++++++- src/.temp/temp.json | 8 ++++ src/authentication/index.js | 13 ++++++- src/config/dev.json | 8 ++++ src/config/prod.json | 8 ++++ .../content-loader/content-loader-mixin.js | 5 ++- .../devfest-scanned-list-page.html | 39 ++++++++++++++++++- .../devfest-scanned-list-page.js | 4 +- 9 files changed, 108 insertions(+), 7 deletions(-) diff --git a/firebase.json b/firebase.json index b42160b..46fbf80 100644 --- a/firebase.json +++ b/firebase.json @@ -20,6 +20,14 @@ "source": "/disconnect", "function": "disconnect" }, + { + "source": "/scanned-list-for-sponsor", + "function": "scannedList" + }, + { + "source": "/submit-repo", + "function": "submitRepo" + }, { "source": "/", "destination": "/index.html" diff --git a/functions/index.js b/functions/index.js index 828c2ff..4520d94 100644 --- a/functions/index.js +++ b/functions/index.js @@ -274,7 +274,27 @@ exports.scanId = functions.https.onRequest((req, res) => { }); }); -exports.resetScoreOnGithubUnlink = functions.https.onRequest((req, res) => { +exports.submitRepo = functions.https.onRequest((req, res) => { + if (!req.body.token) { + return res + .status(404) + .json({ + success: false, + message: 'No auth or uid found' + }); + } + + if (!req.body.repository) { + return res + .status(404) + .json({ + success: false, + message: 'No repository found' + }); + } +}); + +exports.scannedList = functions.https.onRequest((req, res) => { }); diff --git a/src/.temp/temp.json b/src/.temp/temp.json index 6c030b9..386180e 100644 --- a/src/.temp/temp.json +++ b/src/.temp/temp.json @@ -137,6 +137,14 @@ { "source": "/disconnect", "function": "disconnect" + }, + { + "source": "/scanned-list-for-sponsor", + "function": "scannedList" + }, + { + "source": "/submit-repo", + "function": "submitRepo" } ], "headers": [ diff --git a/src/authentication/index.js b/src/authentication/index.js index a781fb4..0c70d02 100644 --- a/src/authentication/index.js +++ b/src/authentication/index.js @@ -1,13 +1,22 @@ +import { store } from '../../core/modules/state-manager'; + export default { exampleAuthentication: () => { return false; }, isLoggedIn: () => { - return true; + if (window.firebase) { + return window.firebase.auth().currentUser.uid; + } }, isSponsor: () => { - return true; + if (window.firebase) { + if (window.firebase.auth().currentUser.uid) { + var profile = store.getState().profile; + return profile && profile.sponsorId; + } + } } }; diff --git a/src/config/dev.json b/src/config/dev.json index 6c030b9..386180e 100644 --- a/src/config/dev.json +++ b/src/config/dev.json @@ -137,6 +137,14 @@ { "source": "/disconnect", "function": "disconnect" + }, + { + "source": "/scanned-list-for-sponsor", + "function": "scannedList" + }, + { + "source": "/submit-repo", + "function": "submitRepo" } ], "headers": [ diff --git a/src/config/prod.json b/src/config/prod.json index 0b5e945..ee34ca4 100644 --- a/src/config/prod.json +++ b/src/config/prod.json @@ -137,6 +137,14 @@ { "source": "/disconnect", "function": "disconnect" + }, + { + "source": "/scanned-list-for-sponsor", + "function": "scannedList" + }, + { + "source": "/submit-repo", + "function": "submitRepo" } ], "headers": [ diff --git a/src/modules/content-loader/content-loader-mixin.js b/src/modules/content-loader/content-loader-mixin.js index bc00365..92aed68 100644 --- a/src/modules/content-loader/content-loader-mixin.js +++ b/src/modules/content-loader/content-loader-mixin.js @@ -6,8 +6,9 @@ export default (superClass) => { super() this.__observeProps = {} } - _fetchJson (content, prop) { - fetch(`${app.contentRepo + app.branch}/${content}`) + _fetchJson (content, prop, own) { + var href = own ? `/${content}` : `${app.contentRepo + app.branch}/${content}` + fetch(href) .then(res => { return res.json() }) diff --git a/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html index efbfd57..ee7cb1a 100644 --- a/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html +++ b/src/modules/devfest-module/pages/devfest-scanned-list-page/devfest-scanned-list-page.html @@ -2,8 +2,45 @@ diff --git a/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js index 8cf4e4c..2341392 100644 --- a/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js +++ b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.js @@ -4,6 +4,8 @@ import 'iron-icon/iron-icon.html'; import 'iron-flex-layout/iron-flex-layout.html'; import 'shadycss/apply-shim.html'; import 'marked-element/marked-element.html'; +import '../../components/codelab-item/codelab-item.js'; +import '../../components/codelab-block/codelab-block.js'; import '../../fonts/devfest-fonts.html'; import '../../icons/devfest-icons.html'; import '../../components/devfest-footer/devfest-footer.js'; @@ -26,33 +28,144 @@ class DevfestCodelabsPage extends contentLoaderMixin(Polymer.Element) { codelabType: { type: String, value: 'all' + }, + codelabTypes: { + type: Array + }, + pages: { + type: Array + }, + page: { + type: String } }; } static get observers () { return [ - '_changeListCodelab(codelabType, params.id, params.page)' + '_changeListCodelab(codelabType, params.id, params.page, user.uid)', + '_changeCodeLabType(params.type)' ]; } connectedCallback () { super.connectedCallback(); this.reload(); + if (this._codelabTypes) { + this._codelabTypes.off(); + } + + this._codelabTypes = firebase.database().ref(`v1/codelabtype/source`) + this._codelabTypes.on('value', snapshot => { + var list = []; + snapshot.forEach(child => { + list.push({ + $key: child.key, + image: child.val().primary.image, + title: child.val().primary.title + }); + }); + this.codelabTypes = list; + }); + } + + disconnectedCallback () { + super.disconnectedCallback(); + if (this._codelabs) { + this._codelabs.off(); + } + + if (this._codelabPages) { + this._codelabPages.off(); + } + + if (this._codelabPage) { + this._codelabPage.off(); + } + + if (this._codelabTitle) { + this._codelabTitle.off(); + } + + if (this._codelabType) { + this._codelabType.off(); + } + } + + _changeCodeLabType (type) { + console.log(type) + this.codelabType = type || 'all'; } - _changeListCodelab (codelabType, id, page) { - console.log(codelabType, id, page) + _changeListCodelab (codelabType, id, page, uid) { if (this._codelabs) { this._codelabs.off(); } - if (codelabType === 'done') { + if (this._codelabPages) { + this._codelabPages.off(); + } - } if (codelabType === 'exer') { + if (this._codelabPage) { + this._codelabPage.off(); + } + + if (this._codelabTitle) { + this._codelabTitle.off(); + } + + if (this._codelabType) { + this._codelabType.off(); + } + + if (codelabType === 'done' && uid) { + this._codelabs = firebase.database().ref(`v1/user/source/${uid}/cross/codelabs`); + this._codelabs.on('value', (snapshot) => { + var list = []; + snapshot.forEach(child => { + list.push({ + $key: child.key + }); + }); + this.codelabs = list; + }); + } else if (codelabType === 'exer' && id) { + + this._codelabPages = firebase.database().ref(`v1/codelabs/source/${id}/primary/pages`); + this._codelabPages.on('value', snapshot => { + var list = []; + snapshot.forEach(child => { + list.push({ + $key: child.key, + title: child.val().title, + value: child.val().value + }); + }); + this.pages = list; + }); + + this._codelabTitle = firebase.database().ref(`v1/codelabs/source/${id}/primary/title`); + this._codelabTitle.on('value', snapshot => { + this.codelabTitle = snapshot.val(); + }); + + this._codelabType = firebase.database().ref(`v1/codelabs/source/${id}/meta/type`); + this._codelabType.on('value', snapshot => { + this.codelabTypePage = snapshot.val(); + }); + + page = page || 'page-01'; + + this._codelabPage = firebase.database().ref(`v1/codelabs/source/${id}/primary/pageContent/${page}/value`); + this._codelabPage.on('value', snapshot => { + this.page = snapshot.val(); + }); } else { - this._codelabs = firebase.database().ref(`v1/codelabs/query/${codelabType}`) + if (codelabType === 'exer' || codelabType === 'done') { + codelabType = 'all'; + } + this._codelabs = firebase.database().ref(`v1/codelabs/query/${codelabType}`); this._codelabs.on('value', (snapshot) => { var list = []; snapshot.forEach(child => { diff --git a/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss index a9f25ef..47662f6 100644 --- a/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss +++ b/src/modules/devfest-module/pages/devfest-codelabs-page/devfest-codelabs-page.scss @@ -11,4 +11,16 @@ margin: 0 auto; width: 90vw; max-width: 1024px; +} + +.codelabs-list { + @apply --layout-wrap; + @apply --layout-horizontal; + + max-width: 1000px; + margin: 0 auto; + + @media screen and (max-width: 500px) { + display: block; + } } \ No newline at end of file diff --git a/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.html b/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.html new file mode 100644 index 0000000..3ff8b70 --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.html @@ -0,0 +1,10 @@ + + + diff --git a/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.js b/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.js new file mode 100644 index 0000000..596a14e --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.js @@ -0,0 +1,48 @@ +import 'polymer/polymer-element.html'; +import 'polymer/lib/elements/dom-repeat.html'; +import 'iron-icon/iron-icon.html'; +import 'iron-flex-layout/iron-flex-layout.html'; +import 'shadycss/apply-shim.html'; +import 'marked-element/marked-element.html'; +import '../../fonts/devfest-fonts.html'; +import '../../icons/devfest-icons.html'; +import '../../components/devfest-footer/devfest-footer.js'; +import '../../components/devfest-button/devfest-button.js'; +import './devfest-scores-page.html'; +import contentLoaderMixin from '../../../content-loader/content-loader-mixin.js'; +import marked from 'marked'; +window.marked = window.marked || marked; + +const {Polymer} = window; + +class DevfestScoresPage extends contentLoaderMixin(Polymer.Element) { + static get is () { return 'devfest-scores-page'; } + + static get properties () { + return { + perks: { + type: Array, + value: [] + }, + details: { + type: Array, + value: [] + }, + payment: { + type: Array, + value: [] + } + }; + } + + connectedCallback () { + super.connectedCallback(); + this.reload(); + } + + reload () {} +} + +window.customElements.define(DevfestScoresPage.is, DevfestScoresPage); + +export default DevfestScoresPage; diff --git a/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.scss b/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.scss new file mode 100644 index 0000000..4c50add --- /dev/null +++ b/src/modules/devfest-module/pages/devfest-scores-page/devfest-scores-page.scss @@ -0,0 +1,3 @@ +@import '../../styles/components/host.scss'; +@import '../../styles/components/typography.scss'; +@import '../../styles/components/section.scss'; From c71db716a28fc94bc6307e6d0137c2ca3c1d6dc3 Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Fri, 13 Oct 2017 00:34:07 +0800 Subject: [PATCH 54/56] edit index Signed-off-by: Toni-Jan Keith Monserrat --- functions/index.js | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/functions/index.js b/functions/index.js index a1af04d..4a5fb01 100644 --- a/functions/index.js +++ b/functions/index.js @@ -56,17 +56,27 @@ exports.updateScore = functions.database.ref('v1/user/source/{userId}/cross/code .onWrite(event => { var score = 0; var updates = {}; - event.data.forEach(child => { - updates[`v1/codelabs/source/${child.key}/cross/scores/${event.params.userId}/value`] = child.val().value; - if (updates[`v1/codelabtype/source/${child.val().type}/cross/scores/${event.params.userId}/value`]) { - updates[`v1/codelabtype/source/${child.val().type}/cross/scores/${event.params.userId}/value`] += child.val().value; - } else { - updates[`v1/codelabtype/source/${child.val().type}/cross/scores/${event.params.userId}/value`] = child.val().value; - } - score = score + child.val().value; - }); - updates[`v1/user/source/${event.params.userId}/meta/score`] = score; - updates[`v1/user/query/score/${event.params.userId}/value`] = score; + if (!event.data.exists()) { + event.data.previous.forEach(child => { + updates[`v1/codelabs/source/${child.key}/cross/scores/${event.params.userId}/value`] = score; + updates[`v1/codelabtype/source/${child.val().type}/cross/scores/${event.params.userId}/value`] = score; + }); + updates[`v1/user/source/${event.params.userId}/meta/score`] = score; + updates[`v1/user/query/score/${event.params.userId}/value`] = score; + } else { + event.data.forEach(child => { + updates[`v1/codelabs/source/${child.key}/cross/scores/${event.params.userId}/value`] = child.val().value; + if (updates[`v1/codelabtype/source/${child.val().type}/cross/scores/${event.params.userId}/value`]) { + updates[`v1/codelabtype/source/${child.val().type}/cross/scores/${event.params.userId}/value`] += child.val().value; + } else { + updates[`v1/codelabtype/source/${child.val().type}/cross/scores/${event.params.userId}/value`] = child.val().value; + } + score = score + child.val().value; + }); + updates[`v1/user/source/${event.params.userId}/meta/score`] = score; + updates[`v1/user/query/score/${event.params.userId}/value`] = score; + } + return admin.database().ref().update(updates); }); From 6b4f8ee1dc66a0d8b739fcb947d74b640ac18000 Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Fri, 13 Oct 2017 00:37:17 +0800 Subject: [PATCH 55/56] added stuff Signed-off-by: Toni-Jan Keith Monserrat --- .../components/devfest-drawer/devfest-drawer.html | 2 +- .../components/devfest-header/devfest-header.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html index 9a7da1a..5e298a5 100644 --- a/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html +++ b/src/modules/devfest-module/components/devfest-drawer/devfest-drawer.html @@ -14,7 +14,7 @@ diff --git a/src/modules/devfest-module/components/devfest-header/devfest-header.html b/src/modules/devfest-module/components/devfest-header/devfest-header.html index 209f444..6f7fbdf 100644 --- a/src/modules/devfest-module/components/devfest-header/devfest-header.html +++ b/src/modules/devfest-module/components/devfest-header/devfest-header.html @@ -14,7 +14,7 @@ From b1f872c87234df4dd9129ccdc4c2664d6c8353be Mon Sep 17 00:00:00 2001 From: Toni-Jan Keith Monserrat Date: Fri, 13 Oct 2017 01:02:24 +0800 Subject: [PATCH 56/56] fixed Signed-off-by: Toni-Jan Keith Monserrat --- .../devfest-module/components/codelab-block/codelab-block.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/devfest-module/components/codelab-block/codelab-block.scss b/src/modules/devfest-module/components/codelab-block/codelab-block.scss index 0794a9f..a5de6c3 100644 --- a/src/modules/devfest-module/components/codelab-block/codelab-block.scss +++ b/src/modules/devfest-module/components/codelab-block/codelab-block.scss @@ -53,6 +53,9 @@ pre { padding: 14px; -webkit-text-size-adjust: none; line-height: 1.4; + max-width: 800px; + display: block; + overflow-x: auto; } a code {