├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── LICENSE
├── README.md
├── babel.config.js
├── jsconfig.json
├── package-lock.json
├── package.json
├── public
├── favicon.ico
└── icons
│ ├── favicon-128x128.png
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ └── favicon-96x96.png
├── quasar.conf.js
├── src-cordova
├── .gitignore
├── config.xml
├── cordova-flag.d.ts
├── package-lock.json
└── package.json
├── src-electron
├── electron-flag.d.ts
├── icons
│ ├── icon.icns
│ ├── icon.ico
│ └── linux-512x512.png
└── main-process
│ ├── electron-main.dev.js
│ └── electron-main.js
└── src
├── App.vue
├── assets
└── quasar-logo-full.svg
├── boot
├── .gitkeep
└── firebase.js
├── css
├── app.sass
└── quasar.variables.sass
├── index.template.html
├── layouts
└── MainLayout.vue
├── pages
├── Error404.vue
├── PageAbout.vue
└── PageHome.vue
└── router
├── index.js
└── routes.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .thumbs.db
3 | node_modules
4 |
5 | # Quasar core related directories
6 | .quasar
7 | /dist
8 |
9 | # Cordova related directories and files
10 | /src-cordova/node_modules
11 | /src-cordova/platforms
12 | /src-cordova/plugins
13 | /src-cordova/www
14 |
15 | # Capacitor related directories and files
16 | /src-capacitor/www
17 | /src-capacitor/node_modules
18 |
19 | # BEX related directories and files
20 | /src-bex/www
21 | /src-bex/js/core
22 |
23 | # Log files
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # Editor directories and files
29 | .idea
30 | *.suo
31 | *.ntvs*
32 | *.njsproj
33 | *.sln
34 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | plugins: [
5 | // to edit target browsers: use "browserslist" field in package.json
6 | require('autoprefixer')
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Danny Connell
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Qwitter (qwitter)
2 |
3 | A Cross-Platrom Twitter Clone created with Quasar Framework, VueJS & Firebase
4 |
5 | ## Setup Firebase
6 | - Create a new Firebase project named Qwitter
7 | - Create a Web App named Qwitter
8 | - Copy the config from the code sample that appears and add it to src/boot/firebase.js
9 | - Create a Cloud Firestore database - make sure you choose "Start in test mode"
10 |
11 | ## Install the dependencies
12 | ```bash
13 | npm install
14 | ```
15 |
16 | ## Web Version
17 |
18 | ### Start in development mode
19 | ```bash
20 | quasar dev
21 | ```
22 |
23 | ### Build for production
24 | ```bash
25 | quasar build
26 | ```
27 |
28 | ## Desktop Version (Electron)
29 |
30 | ### Start in development mode
31 | ```bash
32 | quasar dev -m electron
33 | ```
34 |
35 | ### Build for production
36 | To build for different platforms, change the `electron > packager > platform` setting in `quasar.conf.js` to `win32`, `darwin`, `mas` or `linux`
37 | ```bash
38 | quasar build -m electron
39 | ```
40 |
41 | ## iOS Version (Cordova)
42 |
43 | ### Install Cordova globally
44 | ```bash
45 | npm install -g cordova
46 | ```
47 | or
48 | ```bash
49 | sudo npm install -g cordova
50 | ```
51 |
52 | ### Install Xcode
53 |
54 | [Install Xcode](https://developer.apple.com/download/more/)
55 |
56 | ### Start in development mode
57 | ```bash
58 | quasar dev -m cordova -T ios
59 | ```
60 |
61 | ### Start on other Simulator Devices
62 | ```bash
63 | cd src-cordova
64 | cordova run ios --list
65 | cd ..
66 | quasar dev -m cordova -T ios -e "iPhone-12, 14.3"
67 | ```
68 |
69 | ### Build for production
70 | ```bash
71 | quasar build -m cordova -T ios
72 | ```
73 |
74 | ## Android Version (Cordova)
75 |
76 | ### Install Cordova globally
77 | ```bash
78 | npm install -g cordova
79 | ```
80 | or
81 | ```bash
82 | sudo npm install -g cordova
83 | ```
84 |
85 | ### Follow all steps on Quasar site
86 |
87 | [Follow all steps on Quasar site](https://quasar.dev/quasar-cli/developing-cordova-apps/preparation#Android-setup)
88 |
89 | ### Launch Android Virtual Device
90 | Android Studio > Configure > AVD Manager > Launch an AVD
91 |
92 | ### Start in development mode
93 | ```bash
94 | quasar dev -m cordova -T android
95 | ```
96 |
97 | ### Build for production
98 | ```bash
99 | quasar build -m cordova -T android
100 | ```
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports = {
3 | presets: [
4 | '@quasar/babel-preset-app'
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "paths": {
5 | "src/*": [
6 | "src/*"
7 | ],
8 | "app/*": [
9 | "*"
10 | ],
11 | "components/*": [
12 | "src/components/*"
13 | ],
14 | "layouts/*": [
15 | "src/layouts/*"
16 | ],
17 | "pages/*": [
18 | "src/pages/*"
19 | ],
20 | "assets/*": [
21 | "src/assets/*"
22 | ],
23 | "boot/*": [
24 | "src/boot/*"
25 | ],
26 | "vue$": [
27 | "node_modules/vue/dist/vue.esm.js"
28 | ]
29 | }
30 | },
31 | "exclude": [
32 | "dist",
33 | ".quasar",
34 | "node_modules"
35 | ]
36 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "qwitter",
3 | "version": "0.0.1",
4 | "description": "A Quasar Framework app",
5 | "productName": "Qwitter",
6 | "author": "Danny Connell",
7 | "private": true,
8 | "scripts": {
9 | "test": "echo \"No test specified\" && exit 0"
10 | },
11 | "dependencies": {
12 | "@quasar/extras": "^1.0.0",
13 | "core-js": "^3.6.5",
14 | "date-fns": "^2.16.1",
15 | "firebase": "^8.2.4",
16 | "quasar": "^1.0.0"
17 | },
18 | "devDependencies": {
19 | "@quasar/app": "^2.0.0",
20 | "devtron": "^1.4.0",
21 | "electron": "^9.4.1",
22 | "electron-debug": "^3.2.0",
23 | "electron-devtools-installer": "^3.1.1",
24 | "electron-packager": "^14.2.1"
25 | },
26 | "browserslist": [
27 | "last 10 Chrome versions",
28 | "last 10 Firefox versions",
29 | "last 4 Edge versions",
30 | "last 7 Safari versions",
31 | "last 8 Android versions",
32 | "last 8 ChromeAndroid versions",
33 | "last 8 FirefoxAndroid versions",
34 | "last 10 iOS versions",
35 | "last 5 Opera versions"
36 | ],
37 | "engines": {
38 | "node": ">= 10.18.1",
39 | "npm": ">= 6.13.4",
40 | "yarn": ">= 1.21.1"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/public/favicon.ico
--------------------------------------------------------------------------------
/public/icons/favicon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/public/icons/favicon-128x128.png
--------------------------------------------------------------------------------
/public/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/public/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/public/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/public/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/public/icons/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/public/icons/favicon-96x96.png
--------------------------------------------------------------------------------
/quasar.conf.js:
--------------------------------------------------------------------------------
1 | /*
2 | * This file runs in a Node context (it's NOT transpiled by Babel), so use only
3 | * the ES6 features that are supported by your Node version. https://node.green/
4 | */
5 |
6 | // Configuration for your app
7 | // https://quasar.dev/quasar-cli/quasar-conf-js
8 |
9 | module.exports = function (/* ctx */) {
10 | return {
11 | // https://quasar.dev/quasar-cli/supporting-ts
12 | supportTS: false,
13 |
14 | // https://quasar.dev/quasar-cli/prefetch-feature
15 | // preFetch: true,
16 |
17 | // app boot file (/src/boot)
18 | // --> boot files are part of "main.js"
19 | // https://quasar.dev/quasar-cli/boot-files
20 | boot: [
21 | 'firebase'
22 | ],
23 |
24 | // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
25 | css: [
26 | 'app.sass'
27 | ],
28 |
29 | // https://github.com/quasarframework/quasar/tree/dev/extras
30 | extras: [
31 | // 'ionicons-v4',
32 | // 'mdi-v5',
33 | 'fontawesome-v5',
34 | // 'eva-icons',
35 | // 'themify',
36 | // 'line-awesome',
37 | // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
38 |
39 | 'roboto-font', // optional, you are not bound to it
40 | 'material-icons', // optional, you are not bound to it
41 | ],
42 |
43 | // Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
44 | build: {
45 | vueRouterMode: 'hash', // available values: 'hash', 'history'
46 |
47 | // transpile: false,
48 |
49 | // Add dependencies for transpiling with Babel (Array of string/regex)
50 | // (from node_modules, which are by default not transpiled).
51 | // Applies only if "transpile" is set to true.
52 | // transpileDependencies: [],
53 |
54 | // rtl: false, // https://quasar.dev/options/rtl-support
55 | // preloadChunks: true,
56 | // showProgress: false,
57 | // gzip: true,
58 | // analyze: true,
59 |
60 | // Options below are automatically set depending on the env, set them if you want to override
61 | // extractCSS: false,
62 |
63 | // https://quasar.dev/quasar-cli/handling-webpack
64 | extendWebpack (cfg) {
65 | },
66 | },
67 |
68 | // Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
69 | devServer: {
70 | https: false,
71 | port: 8080,
72 | open: true // opens browser window automatically
73 | },
74 |
75 | // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
76 | framework: {
77 | iconSet: 'material-icons', // Quasar icon set
78 | lang: 'en-us', // Quasar language pack
79 | config: {},
80 |
81 | // Possible values for "importStrategy":
82 | // * 'auto' - (DEFAULT) Auto-import needed Quasar components & directives
83 | // * 'all' - Manually specify what to import
84 | importStrategy: 'auto',
85 |
86 | // For special cases outside of where "auto" importStrategy can have an impact
87 | // (like functional components as one of the examples),
88 | // you can manually specify Quasar components/directives to be available everywhere:
89 | //
90 | // components: [],
91 | // directives: [],
92 |
93 | // Quasar plugins
94 | plugins: []
95 | },
96 |
97 | // animations: 'all', // --- includes all animations
98 | // https://quasar.dev/options/animations
99 | animations: ['fadeIn', 'fadeOut'],
100 |
101 | // https://quasar.dev/quasar-cli/developing-ssr/configuring-ssr
102 | ssr: {
103 | pwa: false
104 | },
105 |
106 | // https://quasar.dev/quasar-cli/developing-pwa/configuring-pwa
107 | pwa: {
108 | workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
109 | workboxOptions: {}, // only for GenerateSW
110 | manifest: {
111 | name: `Qwitter`,
112 | short_name: `Qwitter`,
113 | description: `A Quasar Framework app`,
114 | display: 'standalone',
115 | orientation: 'portrait',
116 | background_color: '#ffffff',
117 | theme_color: '#027be3',
118 | icons: [
119 | {
120 | src: 'icons/icon-128x128.png',
121 | sizes: '128x128',
122 | type: 'image/png'
123 | },
124 | {
125 | src: 'icons/icon-192x192.png',
126 | sizes: '192x192',
127 | type: 'image/png'
128 | },
129 | {
130 | src: 'icons/icon-256x256.png',
131 | sizes: '256x256',
132 | type: 'image/png'
133 | },
134 | {
135 | src: 'icons/icon-384x384.png',
136 | sizes: '384x384',
137 | type: 'image/png'
138 | },
139 | {
140 | src: 'icons/icon-512x512.png',
141 | sizes: '512x512',
142 | type: 'image/png'
143 | }
144 | ]
145 | }
146 | },
147 |
148 | // Full list of options: https://quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
149 | cordova: {
150 | // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
151 | },
152 |
153 | // Full list of options: https://quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
154 | capacitor: {
155 | hideSplashscreen: true
156 | },
157 |
158 | // Full list of options: https://quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
159 | electron: {
160 | bundler: 'packager', // 'packager' or 'builder'
161 |
162 | packager: {
163 |
164 | // platform: 'win32'
165 |
166 | // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
167 |
168 | // OS X / Mac App Store
169 | // appBundleId: '',
170 | // appCategoryType: '',
171 | // osxSign: '',
172 | // protocol: 'myapp://path',
173 |
174 | // Windows only
175 | // win32metadata: { ... }
176 | },
177 |
178 | builder: {
179 | // https://www.electron.build/configuration/configuration
180 |
181 | appId: 'qwitter'
182 | },
183 |
184 | // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
185 | nodeIntegration: true,
186 |
187 | extendWebpack (/* cfg */) {
188 | // do something with Electron main process Webpack cfg
189 | // chainWebpack also available besides this extendWebpack
190 | }
191 | }
192 | }
193 | }
194 |
--------------------------------------------------------------------------------
/src-cordova/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | # Generated by package manager
4 | node_modules/
5 |
6 | # Generated by Cordova
7 | /plugins/
8 | /platforms/
9 |
--------------------------------------------------------------------------------
/src-cordova/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Qwitter
4 | A Quasar Framework app
5 |
6 | Apache Cordova Team
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src-cordova/cordova-flag.d.ts:
--------------------------------------------------------------------------------
1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED,
2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
3 | import "quasar/dist/types/feature-flag";
4 |
5 | declare module "quasar/dist/types/feature-flag" {
6 | interface QuasarFeatureFlags {
7 | cordova: true;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src-cordova/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.dannyconnell.qwitter",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@netflix/nerror": {
8 | "version": "1.1.3",
9 | "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz",
10 | "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==",
11 | "dev": true,
12 | "requires": {
13 | "assert-plus": "^1.0.0",
14 | "extsprintf": "^1.4.0",
15 | "lodash": "^4.17.15"
16 | }
17 | },
18 | "@nodelib/fs.scandir": {
19 | "version": "2.1.4",
20 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz",
21 | "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==",
22 | "dev": true,
23 | "requires": {
24 | "@nodelib/fs.stat": "2.0.4",
25 | "run-parallel": "^1.1.9"
26 | }
27 | },
28 | "@nodelib/fs.stat": {
29 | "version": "2.0.4",
30 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz",
31 | "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==",
32 | "dev": true
33 | },
34 | "@nodelib/fs.walk": {
35 | "version": "1.2.6",
36 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz",
37 | "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==",
38 | "dev": true,
39 | "requires": {
40 | "@nodelib/fs.scandir": "2.1.4",
41 | "fastq": "^1.6.0"
42 | }
43 | },
44 | "abbrev": {
45 | "version": "1.1.1",
46 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
47 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
48 | "dev": true
49 | },
50 | "android-versions": {
51 | "version": "1.6.0",
52 | "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.6.0.tgz",
53 | "integrity": "sha512-ojC2Ig7b/KJ6iNtR8e4bacmOsJyEkoERk3CKMIsnH7kJz5z6551NMbrVaRb7KXYavu1d74Uhml/bfcmqT3nAcg==",
54 | "dev": true,
55 | "requires": {
56 | "semver": "^5.7.1"
57 | },
58 | "dependencies": {
59 | "semver": {
60 | "version": "5.7.1",
61 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
62 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
63 | "dev": true
64 | }
65 | }
66 | },
67 | "ansi": {
68 | "version": "0.3.1",
69 | "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
70 | "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=",
71 | "dev": true
72 | },
73 | "assert-plus": {
74 | "version": "1.0.0",
75 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
76 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
77 | "dev": true
78 | },
79 | "at-least-node": {
80 | "version": "1.0.0",
81 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
82 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
83 | "dev": true
84 | },
85 | "balanced-match": {
86 | "version": "1.0.0",
87 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
88 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
89 | "dev": true
90 | },
91 | "base64-js": {
92 | "version": "1.5.1",
93 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
94 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
95 | "dev": true
96 | },
97 | "big-integer": {
98 | "version": "1.6.48",
99 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
100 | "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==",
101 | "dev": true
102 | },
103 | "bplist-creator": {
104 | "version": "0.0.8",
105 | "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
106 | "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
107 | "dev": true,
108 | "requires": {
109 | "stream-buffers": "~2.2.0"
110 | }
111 | },
112 | "bplist-parser": {
113 | "version": "0.2.0",
114 | "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
115 | "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
116 | "dev": true,
117 | "requires": {
118 | "big-integer": "^1.6.44"
119 | }
120 | },
121 | "brace-expansion": {
122 | "version": "1.1.11",
123 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
124 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
125 | "dev": true,
126 | "requires": {
127 | "balanced-match": "^1.0.0",
128 | "concat-map": "0.0.1"
129 | }
130 | },
131 | "braces": {
132 | "version": "3.0.2",
133 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
134 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
135 | "dev": true,
136 | "requires": {
137 | "fill-range": "^7.0.1"
138 | }
139 | },
140 | "concat-map": {
141 | "version": "0.0.1",
142 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
143 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
144 | "dev": true
145 | },
146 | "cordova-android": {
147 | "version": "9.0.0",
148 | "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-9.0.0.tgz",
149 | "integrity": "sha512-2ZEgApK4LPMYW0zh/mLAH3CabzCaKE0yxQTzA2wTf0Eo2HHTJnRtDCf9spGf3nPOkubyXS6+pvzz5QzNHpVTqQ==",
150 | "dev": true,
151 | "requires": {
152 | "android-versions": "^1.5.0",
153 | "cordova-common": "^4.0.1",
154 | "execa": "^4.0.2",
155 | "fs-extra": "^9.0.1",
156 | "nopt": "^4.0.3",
157 | "properties-parser": "^0.3.1",
158 | "which": "^2.0.2"
159 | }
160 | },
161 | "cordova-common": {
162 | "version": "4.0.2",
163 | "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz",
164 | "integrity": "sha512-od7aNShyuBajzPY83mUEO8tERwwWdFklXETHiXP5Ft87CWeo/tSuwNPFztyTy8XYc74yXdogXKPTJeUHuVzB8Q==",
165 | "dev": true,
166 | "requires": {
167 | "@netflix/nerror": "^1.1.3",
168 | "ansi": "^0.3.1",
169 | "bplist-parser": "^0.2.0",
170 | "cross-spawn": "^7.0.1",
171 | "elementtree": "^0.1.7",
172 | "endent": "^1.4.1",
173 | "fast-glob": "^3.2.2",
174 | "fs-extra": "^9.0.0",
175 | "glob": "^7.1.6",
176 | "plist": "^3.0.1",
177 | "q": "^1.5.1",
178 | "read-chunk": "^3.2.0",
179 | "strip-bom": "^4.0.0",
180 | "underscore": "^1.9.2"
181 | }
182 | },
183 | "cordova-ios": {
184 | "version": "6.1.1",
185 | "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-6.1.1.tgz",
186 | "integrity": "sha512-WHNvjVhkuwRpq95rISVXtcRyd6UGZapbmU+hO/CAn1c0AIT5WnO8mg2mOjv0WDNa0mt/V5P+N2Vig1UWwfxa5Q==",
187 | "dev": true,
188 | "requires": {
189 | "cordova-common": "^4.0.2",
190 | "fs-extra": "^9.0.0",
191 | "ios-sim": "^8.0.2",
192 | "nopt": "^4.0.3",
193 | "plist": "^3.0.1",
194 | "semver": "^7.3.2",
195 | "unorm": "^1.6.0",
196 | "which": "^2.0.2",
197 | "xcode": "^3.0.1",
198 | "xml-escape": "^1.1.0"
199 | }
200 | },
201 | "cordova-plugin-ionic-webview": {
202 | "version": "5.0.0",
203 | "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-5.0.0.tgz",
204 | "integrity": "sha512-Wq0kCanxubK/JroTW4Mp5soayScnRyiY1eCkbwiz1Dyt1xHOiOW/v+1miqtBHtnZhcXw25TulCKAVJzkNBdmyg==",
205 | "dev": true
206 | },
207 | "cordova-plugin-whitelist": {
208 | "version": "1.3.4",
209 | "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz",
210 | "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==",
211 | "dev": true
212 | },
213 | "cross-spawn": {
214 | "version": "7.0.3",
215 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
216 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
217 | "dev": true,
218 | "requires": {
219 | "path-key": "^3.1.0",
220 | "shebang-command": "^2.0.0",
221 | "which": "^2.0.1"
222 | }
223 | },
224 | "dedent": {
225 | "version": "0.7.0",
226 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
227 | "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
228 | "dev": true
229 | },
230 | "elementtree": {
231 | "version": "0.1.7",
232 | "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
233 | "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=",
234 | "dev": true,
235 | "requires": {
236 | "sax": "1.1.4"
237 | }
238 | },
239 | "end-of-stream": {
240 | "version": "1.4.4",
241 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
242 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
243 | "dev": true,
244 | "requires": {
245 | "once": "^1.4.0"
246 | }
247 | },
248 | "endent": {
249 | "version": "1.4.1",
250 | "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz",
251 | "integrity": "sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ==",
252 | "dev": true,
253 | "requires": {
254 | "dedent": "^0.7.0",
255 | "fast-json-parse": "^1.0.3",
256 | "objectorarray": "^1.0.4"
257 | }
258 | },
259 | "execa": {
260 | "version": "4.1.0",
261 | "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
262 | "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
263 | "dev": true,
264 | "requires": {
265 | "cross-spawn": "^7.0.0",
266 | "get-stream": "^5.0.0",
267 | "human-signals": "^1.1.1",
268 | "is-stream": "^2.0.0",
269 | "merge-stream": "^2.0.0",
270 | "npm-run-path": "^4.0.0",
271 | "onetime": "^5.1.0",
272 | "signal-exit": "^3.0.2",
273 | "strip-final-newline": "^2.0.0"
274 | }
275 | },
276 | "extsprintf": {
277 | "version": "1.4.0",
278 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz",
279 | "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=",
280 | "dev": true
281 | },
282 | "fast-glob": {
283 | "version": "3.2.5",
284 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
285 | "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
286 | "dev": true,
287 | "requires": {
288 | "@nodelib/fs.stat": "^2.0.2",
289 | "@nodelib/fs.walk": "^1.2.3",
290 | "glob-parent": "^5.1.0",
291 | "merge2": "^1.3.0",
292 | "micromatch": "^4.0.2",
293 | "picomatch": "^2.2.1"
294 | }
295 | },
296 | "fast-json-parse": {
297 | "version": "1.0.3",
298 | "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz",
299 | "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==",
300 | "dev": true
301 | },
302 | "fastq": {
303 | "version": "1.10.0",
304 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz",
305 | "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==",
306 | "dev": true,
307 | "requires": {
308 | "reusify": "^1.0.4"
309 | }
310 | },
311 | "fill-range": {
312 | "version": "7.0.1",
313 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
314 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
315 | "dev": true,
316 | "requires": {
317 | "to-regex-range": "^5.0.1"
318 | }
319 | },
320 | "fs-extra": {
321 | "version": "9.1.0",
322 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
323 | "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
324 | "dev": true,
325 | "requires": {
326 | "at-least-node": "^1.0.0",
327 | "graceful-fs": "^4.2.0",
328 | "jsonfile": "^6.0.1",
329 | "universalify": "^2.0.0"
330 | }
331 | },
332 | "fs.realpath": {
333 | "version": "1.0.0",
334 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
335 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
336 | "dev": true
337 | },
338 | "get-stream": {
339 | "version": "5.2.0",
340 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
341 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
342 | "dev": true,
343 | "requires": {
344 | "pump": "^3.0.0"
345 | }
346 | },
347 | "glob": {
348 | "version": "7.1.6",
349 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
350 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
351 | "dev": true,
352 | "requires": {
353 | "fs.realpath": "^1.0.0",
354 | "inflight": "^1.0.4",
355 | "inherits": "2",
356 | "minimatch": "^3.0.4",
357 | "once": "^1.3.0",
358 | "path-is-absolute": "^1.0.0"
359 | }
360 | },
361 | "glob-parent": {
362 | "version": "5.1.1",
363 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
364 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
365 | "dev": true,
366 | "requires": {
367 | "is-glob": "^4.0.1"
368 | }
369 | },
370 | "graceful-fs": {
371 | "version": "4.2.4",
372 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
373 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
374 | "dev": true
375 | },
376 | "human-signals": {
377 | "version": "1.1.1",
378 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
379 | "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
380 | "dev": true
381 | },
382 | "inflight": {
383 | "version": "1.0.6",
384 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
385 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
386 | "dev": true,
387 | "requires": {
388 | "once": "^1.3.0",
389 | "wrappy": "1"
390 | }
391 | },
392 | "inherits": {
393 | "version": "2.0.4",
394 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
395 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
396 | "dev": true
397 | },
398 | "ios-sim": {
399 | "version": "8.0.2",
400 | "resolved": "https://registry.npmjs.org/ios-sim/-/ios-sim-8.0.2.tgz",
401 | "integrity": "sha512-P7nEG771bfd+JoMRjnis1gpZOkjTUUxu+4Ek1Z+eoaEEoT9byllU9pxfQ8Df7hL3gSkIQxNwTSLhos2I8tWUQA==",
402 | "dev": true,
403 | "requires": {
404 | "bplist-parser": "^0.0.6",
405 | "nopt": "1.0.9",
406 | "plist": "^3.0.1",
407 | "simctl": "^2"
408 | },
409 | "dependencies": {
410 | "bplist-parser": {
411 | "version": "0.0.6",
412 | "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz",
413 | "integrity": "sha1-ONo0cYF9+dRKs4kuJ3B7u9daEbk=",
414 | "dev": true
415 | },
416 | "nopt": {
417 | "version": "1.0.9",
418 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.9.tgz",
419 | "integrity": "sha1-O8DXy6e/sNWmdtvtfA6+SKT9RU4=",
420 | "dev": true,
421 | "requires": {
422 | "abbrev": "1"
423 | }
424 | }
425 | }
426 | },
427 | "is-extglob": {
428 | "version": "2.1.1",
429 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
430 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
431 | "dev": true
432 | },
433 | "is-glob": {
434 | "version": "4.0.1",
435 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
436 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
437 | "dev": true,
438 | "requires": {
439 | "is-extglob": "^2.1.1"
440 | }
441 | },
442 | "is-number": {
443 | "version": "7.0.0",
444 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
445 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
446 | "dev": true
447 | },
448 | "is-stream": {
449 | "version": "2.0.0",
450 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
451 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
452 | "dev": true
453 | },
454 | "isexe": {
455 | "version": "2.0.0",
456 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
457 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
458 | "dev": true
459 | },
460 | "jsonfile": {
461 | "version": "6.1.0",
462 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
463 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
464 | "dev": true,
465 | "requires": {
466 | "graceful-fs": "^4.1.6",
467 | "universalify": "^2.0.0"
468 | }
469 | },
470 | "lodash": {
471 | "version": "4.17.20",
472 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
473 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
474 | "dev": true
475 | },
476 | "lru-cache": {
477 | "version": "6.0.0",
478 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
479 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
480 | "dev": true,
481 | "requires": {
482 | "yallist": "^4.0.0"
483 | }
484 | },
485 | "merge-stream": {
486 | "version": "2.0.0",
487 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
488 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
489 | "dev": true
490 | },
491 | "merge2": {
492 | "version": "1.4.1",
493 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
494 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
495 | "dev": true
496 | },
497 | "micromatch": {
498 | "version": "4.0.2",
499 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
500 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
501 | "dev": true,
502 | "requires": {
503 | "braces": "^3.0.1",
504 | "picomatch": "^2.0.5"
505 | }
506 | },
507 | "mimic-fn": {
508 | "version": "2.1.0",
509 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
510 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
511 | "dev": true
512 | },
513 | "minimatch": {
514 | "version": "3.0.4",
515 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
516 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
517 | "dev": true,
518 | "requires": {
519 | "brace-expansion": "^1.1.7"
520 | }
521 | },
522 | "nopt": {
523 | "version": "4.0.3",
524 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
525 | "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
526 | "dev": true,
527 | "requires": {
528 | "abbrev": "1",
529 | "osenv": "^0.1.4"
530 | }
531 | },
532 | "npm-run-path": {
533 | "version": "4.0.1",
534 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
535 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
536 | "dev": true,
537 | "requires": {
538 | "path-key": "^3.0.0"
539 | }
540 | },
541 | "objectorarray": {
542 | "version": "1.0.4",
543 | "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz",
544 | "integrity": "sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w==",
545 | "dev": true
546 | },
547 | "once": {
548 | "version": "1.4.0",
549 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
550 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
551 | "dev": true,
552 | "requires": {
553 | "wrappy": "1"
554 | }
555 | },
556 | "onetime": {
557 | "version": "5.1.2",
558 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
559 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
560 | "dev": true,
561 | "requires": {
562 | "mimic-fn": "^2.1.0"
563 | }
564 | },
565 | "os-homedir": {
566 | "version": "1.0.2",
567 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
568 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
569 | "dev": true
570 | },
571 | "os-tmpdir": {
572 | "version": "1.0.2",
573 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
574 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
575 | "dev": true
576 | },
577 | "osenv": {
578 | "version": "0.1.5",
579 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
580 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
581 | "dev": true,
582 | "requires": {
583 | "os-homedir": "^1.0.0",
584 | "os-tmpdir": "^1.0.0"
585 | }
586 | },
587 | "p-finally": {
588 | "version": "1.0.0",
589 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
590 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
591 | "dev": true
592 | },
593 | "p-try": {
594 | "version": "2.2.0",
595 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
596 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
597 | "dev": true
598 | },
599 | "path-is-absolute": {
600 | "version": "1.0.1",
601 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
602 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
603 | "dev": true
604 | },
605 | "path-key": {
606 | "version": "3.1.1",
607 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
608 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
609 | "dev": true
610 | },
611 | "picomatch": {
612 | "version": "2.2.2",
613 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
614 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
615 | "dev": true
616 | },
617 | "pify": {
618 | "version": "4.0.1",
619 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
620 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
621 | "dev": true
622 | },
623 | "plist": {
624 | "version": "3.0.1",
625 | "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
626 | "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
627 | "dev": true,
628 | "requires": {
629 | "base64-js": "^1.2.3",
630 | "xmlbuilder": "^9.0.7",
631 | "xmldom": "0.1.x"
632 | }
633 | },
634 | "properties-parser": {
635 | "version": "0.3.1",
636 | "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.3.1.tgz",
637 | "integrity": "sha1-ExbpU5/7/ZOEXjabIRAiq9R4dxo=",
638 | "dev": true,
639 | "requires": {
640 | "string.prototype.codepointat": "^0.2.0"
641 | }
642 | },
643 | "pump": {
644 | "version": "3.0.0",
645 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
646 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
647 | "dev": true,
648 | "requires": {
649 | "end-of-stream": "^1.1.0",
650 | "once": "^1.3.1"
651 | }
652 | },
653 | "q": {
654 | "version": "1.5.1",
655 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
656 | "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
657 | "dev": true
658 | },
659 | "read-chunk": {
660 | "version": "3.2.0",
661 | "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz",
662 | "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==",
663 | "dev": true,
664 | "requires": {
665 | "pify": "^4.0.1",
666 | "with-open-file": "^0.1.6"
667 | }
668 | },
669 | "reusify": {
670 | "version": "1.0.4",
671 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
672 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
673 | "dev": true
674 | },
675 | "run-parallel": {
676 | "version": "1.1.10",
677 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz",
678 | "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==",
679 | "dev": true
680 | },
681 | "sax": {
682 | "version": "1.1.4",
683 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
684 | "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=",
685 | "dev": true
686 | },
687 | "semver": {
688 | "version": "7.3.4",
689 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
690 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
691 | "dev": true,
692 | "requires": {
693 | "lru-cache": "^6.0.0"
694 | }
695 | },
696 | "shebang-command": {
697 | "version": "2.0.0",
698 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
699 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
700 | "dev": true,
701 | "requires": {
702 | "shebang-regex": "^3.0.0"
703 | }
704 | },
705 | "shebang-regex": {
706 | "version": "3.0.0",
707 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
708 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
709 | "dev": true
710 | },
711 | "shelljs": {
712 | "version": "0.2.6",
713 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz",
714 | "integrity": "sha1-kEktcv/MgVmXa6umL7D2iE8MM3g=",
715 | "dev": true
716 | },
717 | "signal-exit": {
718 | "version": "3.0.3",
719 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
720 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
721 | "dev": true
722 | },
723 | "simctl": {
724 | "version": "2.0.0",
725 | "resolved": "https://registry.npmjs.org/simctl/-/simctl-2.0.0.tgz",
726 | "integrity": "sha512-5rB7rN4N3b0z0nFdy9eczVssXqrv2aAgdVRksPVqVoiDtvXmfzNvebp3EMdId2sAUzXIflarQlx4P0hjVQEzKQ==",
727 | "dev": true,
728 | "requires": {
729 | "shelljs": "^0.2.6",
730 | "tail": "^0.4.0"
731 | }
732 | },
733 | "simple-plist": {
734 | "version": "1.1.1",
735 | "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz",
736 | "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==",
737 | "dev": true,
738 | "requires": {
739 | "bplist-creator": "0.0.8",
740 | "bplist-parser": "0.2.0",
741 | "plist": "^3.0.1"
742 | }
743 | },
744 | "stream-buffers": {
745 | "version": "2.2.0",
746 | "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
747 | "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=",
748 | "dev": true
749 | },
750 | "string.prototype.codepointat": {
751 | "version": "0.2.1",
752 | "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz",
753 | "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==",
754 | "dev": true
755 | },
756 | "strip-bom": {
757 | "version": "4.0.0",
758 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
759 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
760 | "dev": true
761 | },
762 | "strip-final-newline": {
763 | "version": "2.0.0",
764 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
765 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
766 | "dev": true
767 | },
768 | "tail": {
769 | "version": "0.4.0",
770 | "resolved": "https://registry.npmjs.org/tail/-/tail-0.4.0.tgz",
771 | "integrity": "sha1-0p3nJ1DMmdseBTr/E8NZ7PtxMAI=",
772 | "dev": true
773 | },
774 | "to-regex-range": {
775 | "version": "5.0.1",
776 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
777 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
778 | "dev": true,
779 | "requires": {
780 | "is-number": "^7.0.0"
781 | }
782 | },
783 | "underscore": {
784 | "version": "1.12.0",
785 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz",
786 | "integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ==",
787 | "dev": true
788 | },
789 | "universalify": {
790 | "version": "2.0.0",
791 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
792 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
793 | "dev": true
794 | },
795 | "unorm": {
796 | "version": "1.6.0",
797 | "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz",
798 | "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==",
799 | "dev": true
800 | },
801 | "uuid": {
802 | "version": "7.0.3",
803 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
804 | "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
805 | "dev": true
806 | },
807 | "which": {
808 | "version": "2.0.2",
809 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
810 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
811 | "dev": true,
812 | "requires": {
813 | "isexe": "^2.0.0"
814 | }
815 | },
816 | "with-open-file": {
817 | "version": "0.1.7",
818 | "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz",
819 | "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==",
820 | "dev": true,
821 | "requires": {
822 | "p-finally": "^1.0.0",
823 | "p-try": "^2.1.0",
824 | "pify": "^4.0.1"
825 | }
826 | },
827 | "wrappy": {
828 | "version": "1.0.2",
829 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
830 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
831 | "dev": true
832 | },
833 | "xcode": {
834 | "version": "3.0.1",
835 | "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
836 | "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
837 | "dev": true,
838 | "requires": {
839 | "simple-plist": "^1.1.0",
840 | "uuid": "^7.0.3"
841 | }
842 | },
843 | "xml-escape": {
844 | "version": "1.1.0",
845 | "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.1.0.tgz",
846 | "integrity": "sha1-OQTBQ/qOs6ADDsZG0pAqLxtwbEQ=",
847 | "dev": true
848 | },
849 | "xmlbuilder": {
850 | "version": "9.0.7",
851 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
852 | "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
853 | "dev": true
854 | },
855 | "xmldom": {
856 | "version": "0.1.31",
857 | "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
858 | "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
859 | "dev": true
860 | },
861 | "yallist": {
862 | "version": "4.0.0",
863 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
864 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
865 | "dev": true
866 | }
867 | }
868 | }
869 |
--------------------------------------------------------------------------------
/src-cordova/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.dannyconnell.qwitter",
3 | "displayName": "Qwitter",
4 | "version": "1.0.0",
5 | "description": "A sample Apache Cordova application that responds to the deviceready event.",
6 | "main": "index.js",
7 | "scripts": {
8 | "test": "echo \"Error: no test specified\" && exit 1"
9 | },
10 | "keywords": [
11 | "ecosystem:cordova"
12 | ],
13 | "author": "Apache Cordova Team",
14 | "license": "Apache-2.0",
15 | "devDependencies": {
16 | "cordova-android": "^9.0.0",
17 | "cordova-ios": "^6.1.1",
18 | "cordova-plugin-ionic-webview": "^5.0.0",
19 | "cordova-plugin-whitelist": "^1.3.4"
20 | },
21 | "cordova": {
22 | "plugins": {
23 | "cordova-plugin-whitelist": {},
24 | "cordova-plugin-ionic-webview": {}
25 | },
26 | "platforms": [
27 | "ios",
28 | "android"
29 | ]
30 | }
31 | }
--------------------------------------------------------------------------------
/src-electron/electron-flag.d.ts:
--------------------------------------------------------------------------------
1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED,
2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
3 | import "quasar/dist/types/feature-flag";
4 |
5 | declare module "quasar/dist/types/feature-flag" {
6 | interface QuasarFeatureFlags {
7 | electron: true;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src-electron/icons/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/src-electron/icons/icon.icns
--------------------------------------------------------------------------------
/src-electron/icons/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/src-electron/icons/icon.ico
--------------------------------------------------------------------------------
/src-electron/icons/linux-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/src-electron/icons/linux-512x512.png
--------------------------------------------------------------------------------
/src-electron/main-process/electron-main.dev.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This file is used specifically and only for development. It installs
3 | * `electron-debug` & `vue-devtools`. There shouldn't be any need to
4 | * modify this file, but it can be used to extend your development
5 | * environment.
6 | */
7 |
8 | import electronDebug from 'electron-debug'
9 | import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
10 | import { app, BrowserWindow } from 'electron'
11 |
12 | app.whenReady().then(() => {
13 | // allow for a small delay for mainWindow to be created
14 | setTimeout(() => {
15 | // Install `electron-debug` with `devtron`
16 | electronDebug({ showDevTools: false })
17 |
18 | // Install vuejs devtools
19 | installExtension(VUEJS_DEVTOOLS)
20 | .then(name => {
21 | console.log(`Added Extension: ${name}`)
22 | // get main window
23 | const win = BrowserWindow.getFocusedWindow()
24 | if (win) {
25 | win.webContents.on('did-frame-finish-load', () => {
26 | win.webContents.once('devtools-opened', () => {
27 | win.webContents.focus()
28 | })
29 | // open electron debug
30 | console.log('Opening dev tools')
31 | win.webContents.openDevTools()
32 | })
33 | }
34 | })
35 | .catch(err => {
36 | console.log('An error occurred: ', err)
37 | })
38 | }, 250)
39 | })
40 |
41 | import './electron-main'
42 |
--------------------------------------------------------------------------------
/src-electron/main-process/electron-main.js:
--------------------------------------------------------------------------------
1 | import { app, BrowserWindow, nativeTheme } from 'electron'
2 |
3 | try {
4 | if (process.platform === 'win32' && nativeTheme.shouldUseDarkColors === true) {
5 | require('fs').unlinkSync(require('path').join(app.getPath('userData'), 'DevTools Extensions'))
6 | }
7 | } catch (_) { }
8 |
9 | /**
10 | * Set `__statics` path to static files in production;
11 | * The reason we are setting it here is that the path needs to be evaluated at runtime
12 | */
13 | if (process.env.PROD) {
14 | global.__statics = __dirname
15 | }
16 |
17 | let mainWindow
18 |
19 | function createWindow () {
20 | /**
21 | * Initial window options
22 | */
23 | mainWindow = new BrowserWindow({
24 | width: 1024,
25 | minWidth: 1024,
26 | height: 600,
27 | useContentSize: true,
28 | webPreferences: {
29 | // Change from /quasar.conf.js > electron > nodeIntegration;
30 | // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
31 | nodeIntegration: process.env.QUASAR_NODE_INTEGRATION,
32 | nodeIntegrationInWorker: process.env.QUASAR_NODE_INTEGRATION,
33 |
34 | // More info: /quasar-cli/developing-electron-apps/electron-preload-script
35 | // preload: path.resolve(__dirname, 'electron-preload.js')
36 | }
37 | })
38 |
39 | mainWindow.loadURL(process.env.APP_URL)
40 |
41 | mainWindow.on('closed', () => {
42 | mainWindow = null
43 | })
44 | }
45 |
46 | app.on('ready', createWindow)
47 |
48 | app.on('window-all-closed', () => {
49 | if (process.platform !== 'darwin') {
50 | app.quit()
51 | }
52 | })
53 |
54 | app.on('activate', () => {
55 | if (mainWindow === null) {
56 | createWindow()
57 | }
58 | })
59 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
--------------------------------------------------------------------------------
/src/assets/quasar-logo-full.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
21 |
43 |
45 |
46 |
48 | image/svg+xml
49 |
51 |
52 |
53 |
54 |
55 |
60 |
63 |
66 |
69 |
75 |
79 |
83 |
87 |
91 |
95 |
99 |
103 |
104 |
105 |
106 |
107 |
113 |
118 |
126 |
133 |
142 |
151 |
160 |
169 |
178 |
187 |
188 |
189 |
190 |
191 |
192 |
--------------------------------------------------------------------------------
/src/boot/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannyconnell/qwitter/af8c2785caa7e8419f2cf21ec80d5c8330133a8f/src/boot/.gitkeep
--------------------------------------------------------------------------------
/src/boot/firebase.js:
--------------------------------------------------------------------------------
1 | import firebase from "firebase/app"
2 | import "firebase/firestore"
3 |
4 | const firebaseConfig = {
5 | // YOUR CONFIG HERE
6 | }
7 |
8 | firebase.initializeApp(firebaseConfig)
9 |
10 | let db = firebase.firestore()
11 |
12 | export default db
--------------------------------------------------------------------------------
/src/css/app.sass:
--------------------------------------------------------------------------------
1 | // app global css in Sass form
2 |
--------------------------------------------------------------------------------
/src/css/quasar.variables.sass:
--------------------------------------------------------------------------------
1 | // Quasar Sass (& SCSS) Variables
2 | // --------------------------------------------------
3 | // To customize the look and feel of this app, you can override
4 | // the Sass/SCSS variables found in Quasar's source Sass/SCSS files.
5 |
6 | // Check documentation for full list of Quasar variables
7 |
8 | // Your own variables (that are declared here) and Quasar's own
9 | // ones will be available out of the box in your .vue/.scss/.sass files
10 |
11 | // It's highly recommended to change the default colors
12 | // to match your app's branding.
13 | // Tip: Use the "Theme Builder" on Quasar's documentation website.
14 |
15 | $primary : #1da1f2
16 | $secondary : #26A69A
17 | $accent : #9C27B0
18 |
19 | $dark : #1D1D1D
20 |
21 | $positive : #21BA45
22 | $negative : #C10015
23 | $info : #31CCEC
24 | $warning : #F2C037
25 |
--------------------------------------------------------------------------------
/src/index.template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <%= productName %>
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/layouts/MainLayout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {{ $route.name }}
10 |
16 |
17 |
18 |
19 |
20 |
21 |
28 |
34 |
35 |
36 |
42 |
43 |
44 |
45 |
46 | Home
47 |
48 |
54 |
55 |
56 |
57 |
58 | About
59 |
60 |
61 |
62 |
63 |
64 |
65 |
72 |
73 |
74 |
75 |
76 |
77 |
81 |
82 |
83 | Education
84 | Something amazing happened!
85 | Secondary line text. Lorem ipsum dolor sit amet, consectetur adipiscit elit.
86 |
87 |
88 |
89 | 5 min ago
90 |
91 |
92 |
93 |
94 | Education
95 | Something amazing happened!
96 | Secondary line text. Lorem ipsum dolor sit amet, consectetur adipiscit elit.
97 |
98 |
99 |
100 | 5 min ago
101 |
102 |
103 |
104 |
105 | Education
106 | Something amazing happened!
107 | Secondary line text. Lorem ipsum dolor sit amet, consectetur adipiscit elit.
108 |
109 |
110 |
111 | 5 min ago
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
136 |
137 |
--------------------------------------------------------------------------------
/src/pages/Error404.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 404
6 |
7 |
8 |
9 | Oops. Nothing here...
10 |
11 |
12 |
21 |
22 |
23 |
24 |
25 |
30 |
--------------------------------------------------------------------------------
/src/pages/PageAbout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | About Qwitter
4 |
5 |
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sunt similique molestias dolore, ab libero eius? Voluptatum quaerat architecto ex blanditiis, perspiciatis dolor quisquam labore fuga repellendus minima! Maxime, provident est.
6 |
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sunt similique molestias dolore, ab libero eius? Voluptatum quaerat architecto ex blanditiis, perspiciatis dolor quisquam labore fuga repellendus minima! Maxime, provident est.
7 |
8 |
9 |
10 |
11 |
16 |
--------------------------------------------------------------------------------
/src/pages/PageHome.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
33 |
34 |
35 |
36 |
41 |
42 |
43 |
48 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | Danny Connell
62 |
63 | @danny__connell
64 | • {{ qweet.date | relativeDate }}
65 |
66 |
67 | {{ qweet.content }}
68 |
69 |
76 |
83 |
91 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
197 |
198 |
214 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | import routes from './routes'
5 |
6 | Vue.use(VueRouter)
7 |
8 | /*
9 | * If not building with SSR mode, you can
10 | * directly export the Router instantiation;
11 | *
12 | * The function below can be async too; either use
13 | * async/await or return a Promise which resolves
14 | * with the Router instance.
15 | */
16 |
17 | export default function (/* { store, ssrContext } */) {
18 | const Router = new VueRouter({
19 | scrollBehavior: () => ({ x: 0, y: 0 }),
20 | routes,
21 |
22 | // Leave these as they are and change in quasar.conf.js instead!
23 | // quasar.conf.js -> build -> vueRouterMode
24 | // quasar.conf.js -> build -> publicPath
25 | mode: process.env.VUE_ROUTER_MODE,
26 | base: process.env.VUE_ROUTER_BASE
27 | })
28 |
29 | return Router
30 | }
31 |
--------------------------------------------------------------------------------
/src/router/routes.js:
--------------------------------------------------------------------------------
1 |
2 | const routes = [
3 | {
4 | path: '/',
5 | component: () => import('layouts/MainLayout.vue'),
6 | children: [
7 | {
8 | path: '',
9 | component: () => import('pages/PageHome.vue'),
10 | name: 'Home'
11 | },
12 | {
13 | path: '/about',
14 | component: () => import('pages/PageAbout.vue'),
15 | name: 'About'
16 | }
17 | ]
18 | },
19 |
20 | // Always leave this as last one,
21 | // but you can also remove it
22 | {
23 | path: '*',
24 | component: () => import('pages/Error404.vue')
25 | }
26 | ]
27 |
28 | export default routes
29 |
--------------------------------------------------------------------------------