Incorporacion del servidor legacy. Terminada funcionalidad basica
This commit is contained in:
parent
23e9c9382d
commit
5fa3972c36
2
.gitignore
vendored
2
.gitignore
vendored
@ -23,3 +23,5 @@ yarn-error.log*
|
|||||||
# Archivos de desarrollo del servidor
|
# Archivos de desarrollo del servidor
|
||||||
/srv/*/**.js
|
/srv/*/**.js
|
||||||
/srv/*/**.js.map
|
/srv/*/**.js.map
|
||||||
|
deployarBackend.js
|
||||||
|
deployFrontEnd.js
|
34
app.js
Normal file
34
app.js
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
const fun = require("./srv/index").fun;
|
||||||
|
|
||||||
|
const SPAhistory = require('connect-history-api-fallback');
|
||||||
|
let express = require('express');
|
||||||
|
const compresion = require('compression');
|
||||||
|
const bodyParser = require('body-parser');
|
||||||
|
|
||||||
|
let app = express();
|
||||||
|
|
||||||
|
// History: Middleware para el routing de la SPA en modo history
|
||||||
|
// Por alguna razon solo funciona si lo uso antes de establecer el directorio estatico dist ...
|
||||||
|
app.use(SPAhistory());
|
||||||
|
/* Compresion gzip */
|
||||||
|
app.use(compresion());
|
||||||
|
|
||||||
|
app.use(express.static('dist'));
|
||||||
|
|
||||||
|
app.use(express.urlencoded());
|
||||||
|
app.use(express.json());
|
||||||
|
app.use(bodyParser.json());
|
||||||
|
|
||||||
|
/* CORS para localhost y beta.pseudosubs.com */
|
||||||
|
|
||||||
|
app.all("*", (req, res, next) => {
|
||||||
|
res.header("Access-Control-Allow-Origin", "*");
|
||||||
|
res.header('Access-Control-Allow-Headers', 'Content-Type');
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get("/");
|
||||||
|
|
||||||
|
fun(app);
|
||||||
|
|
||||||
|
app.listen(8080, () => console.log("Iniciado en 8080"));
|
94
package.json
94
package.json
@ -1,43 +1,55 @@
|
|||||||
{
|
{
|
||||||
"name": "pseudosubs5",
|
"name": "pseudosubs5",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve",
|
"start": "node app.js",
|
||||||
"build": "vue-cli-service build",
|
"serve": "vue-cli-service serve",
|
||||||
"express": "vue-cli-service express:watch",
|
"build": "vue-cli-service build",
|
||||||
"express:run": "vue-cli-service express:run"
|
"express": "vue-cli-service express:watch",
|
||||||
},
|
"express:run": "vue-cli-service express:run"
|
||||||
"dependencies": {
|
},
|
||||||
"mysql": "^2.16.0",
|
"dependencies": {
|
||||||
"register-service-worker": "^1.6.2",
|
"compression": "^1.7.4",
|
||||||
"vue": "^2.6.6",
|
"connect-history-api-fallback": "^1.6.0",
|
||||||
"vue-disqus": "^3.0.5",
|
"express": "^4.16.4",
|
||||||
"vue-router": "^3.0.1",
|
"mysql": "^2.17.1",
|
||||||
"vuex": "^3.0.1",
|
"register-service-worker": "^1.6.2",
|
||||||
"yaml": "^1.4.0"
|
"vue": "^2.6.6",
|
||||||
},
|
"vue-analytics": "^5.16.4",
|
||||||
"devDependencies": {
|
"vue-disqus": "^3.0.5",
|
||||||
"@vue/cli-plugin-babel": "^3.0.5",
|
"vue-google-signin-button": "^1.0.2",
|
||||||
"@vue/cli-plugin-pwa": "^3.0.5",
|
"vue-router": "^3.0.1",
|
||||||
"@vue/cli-service": "^3.0.5",
|
"vuex": "^3.0.1",
|
||||||
"coffee-loader": "^0.9.0",
|
"web-push": "^3.3.3",
|
||||||
"coffeescript": "^2.3.2",
|
"yaml": "^1.4.0"
|
||||||
"node-sass": "^4.9.0",
|
},
|
||||||
"pug": "^2.0.3",
|
"devDependencies": {
|
||||||
"pug-plain-loader": "^1.0.0",
|
"@types/express": "^4.16.1",
|
||||||
"sass-loader": "^7.1.0",
|
"@types/mysql": "^2.15.6",
|
||||||
"vue-cli-plugin-express": "^1.0.0",
|
"@vue/cli-plugin-babel": "^3.0.5",
|
||||||
"vue-template-compiler": "^2.5.21"
|
"@vue/cli-plugin-pwa": "^3.0.5",
|
||||||
},
|
"@vue/cli-service": "^3.0.5",
|
||||||
"postcss": {
|
"body-parser": "^1.19.0",
|
||||||
"plugins": {
|
"coffee-loader": "^0.9.0",
|
||||||
"autoprefixer": {}
|
"coffeescript": "^2.3.2",
|
||||||
}
|
"ftp-deploy": "^2.3.3",
|
||||||
},
|
"google-auth-library": "^3.1.2",
|
||||||
"browserslist": [
|
"node-sass": "^4.9.0",
|
||||||
"> 1%",
|
"pug": "^2.0.3",
|
||||||
"last 2 versions",
|
"pug-plain-loader": "^1.0.0",
|
||||||
"not ie <= 8"
|
"sass-loader": "^7.1.0",
|
||||||
]
|
"vue-cli-plugin-express": "^1.0.0",
|
||||||
|
"vue-template-compiler": "^2.5.21"
|
||||||
|
},
|
||||||
|
"postcss": {
|
||||||
|
"plugins": {
|
||||||
|
"autoprefixer": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"> 1%",
|
||||||
|
"last 2 versions",
|
||||||
|
"not ie <= 8"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
14
public/.htaccess
Normal file
14
public/.htaccess
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<IfModule mod_headers.c>
|
||||||
|
<FilesMatch "index.html$">
|
||||||
|
Header set Cache-Control "max-age=600, public"
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteBase /
|
||||||
|
RewriteRule ^index\.html$ - [L]
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule . /index.html [L]
|
||||||
|
</IfModule>
|
@ -8,6 +8,8 @@
|
|||||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
||||||
rel="stylesheet">
|
rel="stylesheet">
|
||||||
<title>PseudoSubs</title>
|
<title>PseudoSubs</title>
|
||||||
|
<script>const url = new URL(window.location.href);if (url.hostname.search("pseudosubs") !== -1 && (url.protocol === "http:" || url.hostname.search("www") !== -1)) {window.location.replace("https://beta.pseudosubs.com");}</script>
|
||||||
|
<script src="https://apis.google.com/js/api:client.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<noscript>
|
<noscript>
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
{
|
{
|
||||||
"name": "pseudosubs5",
|
"name": "pseudosubs5",
|
||||||
"short_name": "pseudosubs5",
|
"short_name": "pseudosubs5",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "./img/icons/android-chrome-192x192.png",
|
"src": "./img/icons/android-chrome-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "./img/icons/android-chrome-512x512.png",
|
"src": "./img/icons/android-chrome-512x512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"start_url": "./index.html",
|
"start_url": "./index.html",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"background_color": "#000000",
|
"background_color": "#ea486a",
|
||||||
"theme_color": "#4DBA87"
|
"theme_color": "#009961"
|
||||||
}
|
}
|
||||||
|
33
src/App.vue
33
src/App.vue
@ -2,7 +2,7 @@
|
|||||||
div#app
|
div#app
|
||||||
div.fondo.fondo2
|
div.fondo.fondo2
|
||||||
barra-lateral
|
barra-lateral
|
||||||
div.contenido(:class="$store.state.barraLateralOculta? 'contenido--barraOculta' : ''", :barra-oculta="$store.state.barraLateralOculta.toString()")
|
div.contenido.contenido--barraOculta
|
||||||
router-view
|
router-view
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
@ -22,24 +22,21 @@
|
|||||||
components:
|
components:
|
||||||
'barra-lateral': barraLateral
|
'barra-lateral': barraLateral
|
||||||
created: ->
|
created: ->
|
||||||
if @$store.state.animes[0]?
|
store = @$store
|
||||||
#
|
fetch("#{this.$store.state.servidor}/anime", {
|
||||||
else
|
method: "POST"
|
||||||
store = @$store
|
headers:
|
||||||
fetch("https://pseudosubs.com/anime", {
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
method: "POST"
|
})
|
||||||
headers:
|
.then (x) -> x.text()
|
||||||
"Content-Type": "application/x-www-form-urlencoded"
|
.then (res) ->
|
||||||
})
|
# if DEV then console.log res
|
||||||
.then((x) -> x.text())
|
resultado = YAML.parse res
|
||||||
.then (res) ->
|
|
||||||
# if DEV then console.log res
|
|
||||||
resultado = YAML.parse res
|
|
||||||
|
|
||||||
if resultado.exito
|
if resultado.exito
|
||||||
store.commit "establecerAnime", resultado.payload
|
store.commit "establecerAnime", resultado.payload
|
||||||
else
|
else
|
||||||
console.log "Error al obtener los animes.\n#{res}"
|
console.log "Error al obtener los animes.\n#{res}"
|
||||||
#
|
#
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
71
src/components/Admin/anime.vue
Normal file
71
src/components/Admin/anime.vue
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div
|
||||||
|
div.id {{ anime.anime_ID }}
|
||||||
|
div.nombre {{ anime.titulo }}
|
||||||
|
div.botones
|
||||||
|
span.boton op
|
||||||
|
span.boton ed
|
||||||
|
span.boton(@click="verVariantes") links
|
||||||
|
div(v-if="linksAbierto")
|
||||||
|
div(v-for="variante in variantes")
|
||||||
|
variante(:variante="variante")
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import YAML from "yaml"
|
||||||
|
import variante from "./variante.vue"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "anime"
|
||||||
|
props:
|
||||||
|
anime:
|
||||||
|
type: Object
|
||||||
|
required: true
|
||||||
|
data: ->
|
||||||
|
linksAbierto: false
|
||||||
|
variantes: []
|
||||||
|
components:
|
||||||
|
variante: variante
|
||||||
|
methods:
|
||||||
|
verVariantes: ->
|
||||||
|
if this.variantes.length == 0
|
||||||
|
res = await fetch "#{this.$store.state.servidor}/eps/variantes/#{this.anime.anime_ID}",
|
||||||
|
method: "POST"
|
||||||
|
headers:
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
|
data = await res.text()
|
||||||
|
this.variantes = YAML.parse data
|
||||||
|
this.linksAbierto = !this.linksAbierto
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
|
.id
|
||||||
|
float: left
|
||||||
|
width: 5%
|
||||||
|
|
||||||
|
.nombre
|
||||||
|
float: left
|
||||||
|
width: 20%
|
||||||
|
overflow: hidden
|
||||||
|
|
||||||
|
.botones
|
||||||
|
float: left
|
||||||
|
width: 75%
|
||||||
|
|
||||||
|
.boton
|
||||||
|
@extend %bordeRedondo-std
|
||||||
|
display: inline-block
|
||||||
|
padding: 10px 15px
|
||||||
|
background-color: $colorPrincipal
|
||||||
|
margin: 5px 15px
|
||||||
|
cursor: pointer
|
||||||
|
user-select: none
|
||||||
|
color: white
|
||||||
|
|
||||||
|
//
|
||||||
|
</style>
|
37
src/components/Admin/lista-animes.vue
Normal file
37
src/components/Admin/lista-animes.vue
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div.lista
|
||||||
|
div
|
||||||
|
anime.row(v-for="anime in animes" :anime="anime")
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import anime from "./anime.vue"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "lista-animes"
|
||||||
|
components:
|
||||||
|
anime: anime
|
||||||
|
data: ->
|
||||||
|
animes: this.$store.state.animes
|
||||||
|
linksAbierto: false
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
|
.row::after
|
||||||
|
content: ""
|
||||||
|
display: table
|
||||||
|
clear: both
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.lista
|
||||||
|
margin: 50px
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
</style>
|
107
src/components/Admin/variante.vue
Normal file
107
src/components/Admin/variante.vue
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div.variante
|
||||||
|
span.formato {{ variante.formato }}
|
||||||
|
span.res {{ variante.res }}
|
||||||
|
span.servidor {{ variante.servidor }}
|
||||||
|
span.boton(@click="abrirLinks") Abrir
|
||||||
|
div(v-if="linksAbiertos")
|
||||||
|
br
|
||||||
|
div.link
|
||||||
|
form(@submit="crearEp($event)")
|
||||||
|
input(placeholder="numEp" type="number" min="0" max="1000" name="numEp")
|
||||||
|
input(placeholder="peso" name="peso")
|
||||||
|
input(placeholder="link" name="link")
|
||||||
|
br
|
||||||
|
input(type="submit" value="Crear")
|
||||||
|
br
|
||||||
|
div.link(v-for="link in links")
|
||||||
|
span id: {{ link.ep_ID }} |
|
||||||
|
span Ep {{ link.num_ep }} |
|
||||||
|
span {{ link.visitas }} visitas |
|
||||||
|
span Peso: {{ link.peso }} |
|
||||||
|
span(style="word-wrap: break-word") link: {{ link.link }}
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import YAML from "yaml"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "variante"
|
||||||
|
props:
|
||||||
|
variante:
|
||||||
|
type: Object
|
||||||
|
required: true
|
||||||
|
data: ->
|
||||||
|
linksAbiertos: false
|
||||||
|
links: []
|
||||||
|
methods:
|
||||||
|
abrirLinks: ->
|
||||||
|
if this.links.length == 0
|
||||||
|
res = await fetch "#{this.$store.state.servidor}/eps/links/#{this.variante.opcion_ID}",
|
||||||
|
method: "POST"
|
||||||
|
headers:
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
|
data = await res.text()
|
||||||
|
this.links = YAML.parse data
|
||||||
|
this.linksAbiertos = !this.linksAbiertos
|
||||||
|
crearEp: (ev) ->
|
||||||
|
elem = ev.target
|
||||||
|
ev.preventDefault()
|
||||||
|
res = await fetch "#{this.$store.state.servidor}/eps/links/",
|
||||||
|
method: "POST"
|
||||||
|
headers:
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
|
body: "params=" + YAML.stringify {
|
||||||
|
opcion_ID: this.variante.opcion_ID
|
||||||
|
num_ep: elem.numEp.value
|
||||||
|
visitas: 0
|
||||||
|
link: elem.link.value
|
||||||
|
peso: elem.peso.value
|
||||||
|
}
|
||||||
|
data = JSON.parse(await res.text())
|
||||||
|
if data.error == false
|
||||||
|
console.log "Creado con exito"
|
||||||
|
this.links.push {
|
||||||
|
ep_ID: "?"
|
||||||
|
num_EP: elem.numEp.value
|
||||||
|
visitas: 0
|
||||||
|
peso: elem.peso.value
|
||||||
|
link: elem.link.value
|
||||||
|
}
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
|
.variante
|
||||||
|
margin: 10px
|
||||||
|
|
||||||
|
.link
|
||||||
|
margin-left: 25px
|
||||||
|
|
||||||
|
.formato, .res, .servidor, .boton
|
||||||
|
display: inline-block
|
||||||
|
padding: 10px 15px
|
||||||
|
border-radius: 5px
|
||||||
|
margin: 10px 5px
|
||||||
|
cursor: none
|
||||||
|
color: white
|
||||||
|
|
||||||
|
.formato
|
||||||
|
background-color: #7b0000
|
||||||
|
|
||||||
|
.res
|
||||||
|
background-color: #000072
|
||||||
|
|
||||||
|
.servidor
|
||||||
|
background-color: #007200
|
||||||
|
|
||||||
|
.boton
|
||||||
|
background-color: $colorSecundario
|
||||||
|
cursor: pointer
|
||||||
|
|
||||||
|
//
|
||||||
|
</style>
|
@ -19,9 +19,13 @@
|
|||||||
div.temporada Temporada: {{ anime.temporada + " " + anime.anio }}
|
div.temporada Temporada: {{ anime.temporada + " " + anime.anio }}
|
||||||
div.fuente Fuente: {{ anime.fuente }}
|
div.fuente Fuente: {{ anime.fuente }}
|
||||||
div.generos Generos: {{ anime.generos }}
|
div.generos Generos: {{ anime.generos }}
|
||||||
div.tarjeta.fondo1.op-ed ops y eds aqui. En construcción.
|
op-ed(:anime_ID="anime.anime_ID" :color="anime.color")
|
||||||
|
br
|
||||||
|
div.tarjeta.aviso(:style="colorBackground") {{ aviso }}
|
||||||
|
br
|
||||||
|
panel-de-descarga(:animeid="anime.anime_ID" :color="anime.color"
|
||||||
|
:cambiar-aviso="cambiarAviso")
|
||||||
br
|
br
|
||||||
panel-de-descarga(:animeid="anime.anime_ID" :color="anime.color")
|
|
||||||
div.tarjeta.background__disqus
|
div.tarjeta.background__disqus
|
||||||
vue-disqus(shortname="www-pseudosubs-com" :identifier="nombreCortoAnime"
|
vue-disqus(shortname="www-pseudosubs-com" :identifier="nombreCortoAnime"
|
||||||
:url="'https://pseudosubs.com/Anime/' + nombreCortoAnime")
|
:url="'https://pseudosubs.com/Anime/' + nombreCortoAnime")
|
||||||
@ -31,33 +35,41 @@
|
|||||||
|
|
||||||
<script lang="coffee">
|
<script lang="coffee">
|
||||||
import panelDescarga from "./panel-descarga.vue"
|
import panelDescarga from "./panel-descarga.vue"
|
||||||
|
import opEd from "./op-ed.vue"
|
||||||
|
import YAML from "yaml"
|
||||||
|
|
||||||
export default
|
export default
|
||||||
name: "Anime"
|
name: "Anime"
|
||||||
components:
|
components:
|
||||||
'panel-de-descarga': panelDescarga
|
"panel-de-descarga": panelDescarga
|
||||||
|
"op-ed": opEd
|
||||||
data: ->
|
data: ->
|
||||||
anime: {}
|
anime: {}
|
||||||
# -1 no encontrado, 0 cargando y 1 encontrado
|
# -1 no encontrado, 0 cargando y 1 encontrado
|
||||||
estadoAnime: 0
|
estadoAnime: 0
|
||||||
|
aviso: ""
|
||||||
computed:
|
computed:
|
||||||
nombreCortoAnime: ->
|
nombreCortoAnime: ->
|
||||||
@anime.link?.substr(7)
|
@anime.link?.substr(7)
|
||||||
|
colorBackground: -> "background-color: #{@anime.color};"
|
||||||
|
methods:
|
||||||
|
cambiarAviso: (aviso) -> @aviso = aviso
|
||||||
created: ->
|
created: ->
|
||||||
_ = this
|
vm = this
|
||||||
animes = @$store.state.animes
|
animes = @$store.state.animes
|
||||||
resultado = -1
|
resultado = -1
|
||||||
for anime in animes
|
for anime in animes
|
||||||
if anime.link is "/Anime/" + @$route.params.nombre
|
if anime.link is "/Anime/" + @$route.params.nombre
|
||||||
_.anime = anime
|
vm.anime = anime
|
||||||
resultado = 1
|
resultado = 1
|
||||||
break
|
break
|
||||||
@estadoAnime = resultado
|
vm.estadoAnime = resultado
|
||||||
if resultado is 1
|
if resultado is 1
|
||||||
@$store.commit "cambiarTituloAnime", "#{anime.titulo}"
|
@$store.commit "cambiarTituloAnime", "#{anime.titulo}"
|
||||||
@$store.commit "cambiarTxtAdicionalAnime", (if anime.comentario? then anime.comentario else "Sin comentarios.")
|
@$store.commit "cambiarTxtAdicionalAnime", (if anime.comentario? then anime.comentario else "Sin comentarios.")
|
||||||
@$store.commit "cambiarEstadoImgAnime", true
|
@$store.commit "cambiarEstadoImgAnime", true
|
||||||
@$store.commit "cambiarImgTituloAnime", @anime.titulo
|
@$store.commit "cambiarImgTituloAnime", @anime.titulo
|
||||||
|
|
||||||
else
|
else
|
||||||
@$store.commit "cambiarTxtAdicionalAnime", "?"
|
@$store.commit "cambiarTxtAdicionalAnime", "?"
|
||||||
|
|
||||||
@ -67,6 +79,8 @@
|
|||||||
{nombre: "_", ruta: "#"}
|
{nombre: "_", ruta: "#"}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@ -78,6 +92,13 @@
|
|||||||
background-color: #101010
|
background-color: #101010
|
||||||
padding: 15px
|
padding: 15px
|
||||||
|
|
||||||
|
.aviso
|
||||||
|
text-align: center
|
||||||
|
color: white
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: x-large
|
||||||
|
|
||||||
.contenedor
|
.contenedor
|
||||||
margin: 0 50px
|
margin: 0 50px
|
||||||
|
|
||||||
|
111
src/components/Anime/op-ed.vue
Normal file
111
src/components/Anime/op-ed.vue
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div.tarjeta.fondo1.op-ed
|
||||||
|
div.op
|
||||||
|
p(v-if="estadoOp === 0") Cargando OPs...
|
||||||
|
p(v-else-if="estadoOp === -1") Error al obtener los ops.
|
||||||
|
template(v-else)
|
||||||
|
div.titulo OPs:
|
||||||
|
div.cont(v-for="op in ops")
|
||||||
|
span.nombre {{ op.nombre }}
|
||||||
|
span por
|
||||||
|
span.nombre {{ op.artista }}
|
||||||
|
br
|
||||||
|
span.eps Eps {{ op.eps }} |
|
||||||
|
a(:href="obtenerLinkY(op.nombre, op.artista)" target="_blank"
|
||||||
|
:style="'color: ' + color") YouTube
|
||||||
|
br
|
||||||
|
div.ed
|
||||||
|
p(v-if="estadoEd === 0") Cargando EDs...
|
||||||
|
p(v-else-if="estadoEd === -1") Error al obtener los ops.
|
||||||
|
template(v-else)
|
||||||
|
div.titulo EDs:
|
||||||
|
div.cont(v-for="ed in eds")
|
||||||
|
span.nombre {{ ed.nombre }}
|
||||||
|
span por
|
||||||
|
span.nombre {{ ed.artista }}
|
||||||
|
br
|
||||||
|
span.eps Eps {{ ed.eps }} |
|
||||||
|
a(:href="obtenerLinkY(ed.nombre, ed.artista)" target="_blank"
|
||||||
|
:style="'color: ' + color") YouTube
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import YAML from "yaml"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "op-ed"
|
||||||
|
data: ->
|
||||||
|
ops: []
|
||||||
|
eds: []
|
||||||
|
estadoOp: 0
|
||||||
|
estadoEd: 0
|
||||||
|
props:
|
||||||
|
anime_ID:
|
||||||
|
type: Number,
|
||||||
|
required: true
|
||||||
|
color:
|
||||||
|
type: String
|
||||||
|
required: true
|
||||||
|
methods:
|
||||||
|
obtenerLinkY: (nombre, artista) ->
|
||||||
|
"https://www.youtube.com/results?search_query=" + (encodeURIComponent "#{nombre} - #{artista}")
|
||||||
|
mounted: ->
|
||||||
|
vm = this
|
||||||
|
fetch "#{this.$store.state.servidor}/op/#{this.anime_ID}",
|
||||||
|
method: "POST"
|
||||||
|
headers:
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
|
.then (res) ->
|
||||||
|
data = YAML.parse(await res.text())
|
||||||
|
vm.estadoOp =
|
||||||
|
if data.exito
|
||||||
|
vm.ops = data.payload
|
||||||
|
1
|
||||||
|
else
|
||||||
|
console.error data.error
|
||||||
|
-1
|
||||||
|
.catch (err) -> console.log "Error :c #{err}"
|
||||||
|
|
||||||
|
fetch "#{this.$store.state.servidor}/ed/#{this.anime_ID}",
|
||||||
|
method: "POST"
|
||||||
|
headers:
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
|
.then (res) ->
|
||||||
|
data = YAML.parse(await res.text())
|
||||||
|
vm.estadoEd =
|
||||||
|
if data.exito
|
||||||
|
vm.eds = data.payload
|
||||||
|
1
|
||||||
|
else
|
||||||
|
console.error data.error
|
||||||
|
-1
|
||||||
|
.catch (err) -> console.log "Error :c #{err}"
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
|
.titulo
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: xx-large
|
||||||
|
|
||||||
|
.cont
|
||||||
|
padding-left: 10px
|
||||||
|
padding-bottom: 15px
|
||||||
|
a
|
||||||
|
color: $colorPrincipal
|
||||||
|
|
||||||
|
.nombre
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: x-large
|
||||||
|
|
||||||
|
.eps
|
||||||
|
margin-left: 10px
|
||||||
|
|
||||||
|
//
|
||||||
|
</style>
|
@ -1,206 +1,217 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="panel" v-if="datosCorrectos">
|
<div class="panel tarjeta" v-if="datosCorrectos">
|
||||||
<div class="panel__titulo" :style="'background-color: ' + color">
|
<div class="panel__titulo" :style="'background-color: ' + color">
|
||||||
Descarga aquí.<br>
|
Descarga aquí.<br>
|
||||||
<div class="panel__titulo__variantes">
|
<div class="panel__titulo__variantes">
|
||||||
<template v-for="(opcion, indice) in datos">
|
<template v-for="(opcion, indice) in datos">
|
||||||
<div class="panel__titulo__variantes__variante hoverable"
|
<div class="panel__titulo__variantes__variante hoverable"
|
||||||
:style="indice === '1'? `background-color: ${opcion.color}` : ''"
|
:style="indice === '1'? `background-color: ${opcion.color}` : ''"
|
||||||
v-on:click="cambiarDescripcionDescarga(indice)" :color-min="opcion.color"
|
v-on:click="cambiarDescripcionDescarga(indice)" :color-min="opcion.color"
|
||||||
:id="`opcion${indice}`">
|
:id="`opcion${indice}`">
|
||||||
{{ opcion.formato }} {{ opcion.res }}<br>{{ opcion.servidor }}
|
{{ opcion.formato }} {{ opcion.res }}<br>{{ opcion.servidor }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel__descripcion fondo1">
|
||||||
|
|
||||||
|
<template v-for="(opcion, indice) in datos">
|
||||||
|
<div :id="`tarjeta${indice}`" :style="indice !== '1'? 'display: none' : ''">
|
||||||
|
<div class="panel__descripcion__titulo" :style="'color: ' + balancearColor">
|
||||||
|
Links<br>
|
||||||
|
</div>
|
||||||
|
Todos los links se abren en una pestaña nueva.<br>
|
||||||
|
<span v-for="(ep, num) in opcion.eps" class="panel__descripcion__link">
|
||||||
|
<br>
|
||||||
|
Episodio {{ num }} ->
|
||||||
|
<a :href="ep.link" target="_blank" :style="'color: ' + balancearColor"
|
||||||
|
@mousedown.stop="incrementarContador(ep.ep_ID, $event)">
|
||||||
|
{{ ep.peso }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div v-else>
|
||||||
<div class="panel__descripcion background__panel-descarga">
|
Recuperando los eps del servidor...
|
||||||
|
</div>
|
||||||
<template v-for="(opcion, indice) in datos">
|
|
||||||
<div :id="`tarjeta${indice}`" :style="indice !== '1'? 'display: none' : ''">
|
|
||||||
<div class="panel__descripcion__titulo" :style="'color: ' + balancearColor">
|
|
||||||
Links<br>
|
|
||||||
</div>
|
|
||||||
Todos los links se abren en una pestaña nueva.<br>
|
|
||||||
<span v-for="(ep, num) in opcion.eps" class="panel__descripcion__link">
|
|
||||||
<br>
|
|
||||||
Episodio {{ num }} ->
|
|
||||||
<a :href="ep.link" target="_blank" :style="'color: ' + balancearColor"
|
|
||||||
@mousedown.stop="incrementarContador(ep.ep_ID, $event)">
|
|
||||||
{{ ep.peso }}
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
|
||||||
Recuperando los eps del servidor...
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import YAML from "yaml"
|
import YAML from "yaml"
|
||||||
const esModoOscuro = false;
|
|
||||||
|
|
||||||
export default {
|
const esModoOscuro = false;
|
||||||
name: "panelDeDescarga",
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
posActual: '1',
|
|
||||||
datos: {},
|
|
||||||
datosCorrectos: false,
|
|
||||||
mostrarSpinnerParaCargaDeEps: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
animeid: {
|
|
||||||
type: Number,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
color: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
balancearColor () {
|
|
||||||
const color = this.color;
|
|
||||||
|
|
||||||
const R = parseInt(color.substring(1,3), 16);
|
export default {
|
||||||
const G = parseInt(color.substring(3,5), 16);
|
name: "panelDeDescarga",
|
||||||
const B = parseInt(color.substring(5,7), 16);
|
data: function () {
|
||||||
|
return {
|
||||||
|
posActual: '1',
|
||||||
|
datos: {},
|
||||||
|
datosCorrectos: false,
|
||||||
|
mostrarSpinnerParaCargaDeEps: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
animeid: {
|
||||||
|
type: Number,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
cambiarAviso: {
|
||||||
|
type: Function,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
balancearColor() {
|
||||||
|
const color = this.color;
|
||||||
|
|
||||||
const limiteOscuridad = 60;
|
const R = parseInt(color.substring(1, 3), 16);
|
||||||
if (esModoOscuro && R<limiteOscuridad && G<limiteOscuridad && B<limiteOscuridad ) {
|
const G = parseInt(color.substring(3, 5), 16);
|
||||||
return `#${(255-R).toString(16)}${(255-G).toString(16)}${(255-B).toString(16)}`;
|
const B = parseInt(color.substring(5, 7), 16);
|
||||||
} else {
|
|
||||||
return color;
|
const limiteOscuridad = 60;
|
||||||
|
if (esModoOscuro && R < limiteOscuridad && G < limiteOscuridad && B < limiteOscuridad) {
|
||||||
|
return `#${(255 - R).toString(16)}${(255 - G).toString(16)}${(255 - B).toString(16)}`;
|
||||||
|
} else {
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
cambiarDescripcionDescarga(idDestino) {
|
||||||
|
const quitarClase = (nombre, nombreClase) => {
|
||||||
|
const posInicial = nombre.indexOf(nombreClase);
|
||||||
|
if (posInicial !== -1)
|
||||||
|
return nombre.substring(0, posInicial - 1);
|
||||||
|
else
|
||||||
|
return nombre
|
||||||
|
};
|
||||||
|
|
||||||
|
const elemAnterior = document.getElementById(`tarjeta${this.posActual}`);
|
||||||
|
const elemNuevo = document.getElementById(`tarjeta${idDestino}`);
|
||||||
|
|
||||||
|
const opcionAnterior = document.getElementById(`opcion${this.posActual}`);
|
||||||
|
const opcionNueva = document.getElementById(`opcion${idDestino}`);
|
||||||
|
|
||||||
|
if (elemNuevo && elemAnterior && opcionAnterior && opcionNueva) {
|
||||||
|
this.posActual = idDestino;
|
||||||
|
|
||||||
|
elemAnterior.style.display = "none";
|
||||||
|
opcionAnterior.style.backgroundColor = "transparent";
|
||||||
|
opcionAnterior.className = quitarClase(opcionNueva.className, "panel__titulo__variantes__variante--activa");
|
||||||
|
|
||||||
|
elemNuevo.style.display = "block";
|
||||||
|
opcionNueva.style.backgroundColor = opcionNueva.getAttribute("color-min");
|
||||||
|
opcionNueva.className += " panel__titulo__variantes__variante--activa";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("Woah, elemNuevo && elemAnterior && opcionAnterior && opcionNueva no se cumple...\n" +
|
||||||
|
elemNuevo + " " + elemAnterior + " " + opcionAnterior + " " + opcionNueva);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
incrementarContador(ep_ID, evento) {
|
||||||
|
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("PUT", `${this.$store.state.servidor}/links`);
|
||||||
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
xhr.onload = () => {
|
||||||
|
console.log(xhr.responseText);
|
||||||
|
};
|
||||||
|
xhr.send(`ep_ID=${ep_ID}`);
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
const vm = this;
|
||||||
|
|
||||||
|
xhr.open("POST", `${this.$store.state.servidor}/links`);
|
||||||
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
xhr.onload = () => {
|
||||||
|
try {
|
||||||
|
const data = YAML.parse(xhr.responseText);
|
||||||
|
if (data.exito) {
|
||||||
|
vm.datos = data.payload["opciones"];
|
||||||
|
vm.datosCorrectos = true;
|
||||||
|
vm.cambiarAviso(data.payload.aviso);
|
||||||
|
} else {
|
||||||
|
vm.mostrarSpinnerParaCargaDeEps = false;
|
||||||
|
console.log("Error al recibir los eps del anime. resp:\n" + xhr.responseText);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
vm.mostrarSpinnerParaCargaDeEps = false;
|
||||||
|
console.log("Error al recibir los eps del anime:\n" + e + "\n" + xhr.responseText);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
xhr.send(`animeID=${this.animeid}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
cambiarDescripcionDescarga(idDestino) {
|
|
||||||
const quitarClase = (nombre, nombreClase) => {
|
|
||||||
const posInicial = nombre.indexOf(nombreClase);
|
|
||||||
if (posInicial !== -1)
|
|
||||||
return nombre.substring(0, posInicial-1);
|
|
||||||
else
|
|
||||||
return nombre
|
|
||||||
};
|
|
||||||
|
|
||||||
const elemAnterior = document.getElementById(`tarjeta${this.posActual}`);
|
|
||||||
const elemNuevo = document.getElementById(`tarjeta${idDestino}`);
|
|
||||||
|
|
||||||
const opcionAnterior = document.getElementById(`opcion${this.posActual}`);
|
|
||||||
const opcionNueva = document.getElementById(`opcion${idDestino}`);
|
|
||||||
|
|
||||||
if (elemNuevo && elemAnterior && opcionAnterior && opcionNueva) {
|
|
||||||
this.posActual = idDestino;
|
|
||||||
|
|
||||||
elemAnterior.style.display = "none";
|
|
||||||
opcionAnterior.style.backgroundColor = "transparent";
|
|
||||||
opcionAnterior.className = quitarClase(opcionNueva.className, "panel__titulo__variantes__variante--activa");
|
|
||||||
|
|
||||||
elemNuevo.style.display = "block";
|
|
||||||
opcionNueva.style.backgroundColor = opcionNueva.getAttribute("color-min");
|
|
||||||
opcionNueva.className += " panel__titulo__variantes__variante--activa";
|
|
||||||
|
|
||||||
} else {
|
|
||||||
console.log("Woah, elemNuevo && elemAnterior && opcionAnterior && opcionNueva no se cumple...\n" +
|
|
||||||
elemNuevo + " " + elemAnterior + " " + opcionAnterior + " " + opcionNueva);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
incrementarContador(ep_ID, evento) {
|
|
||||||
|
|
||||||
const xhr = new XMLHttpRequest();
|
|
||||||
xhr.open("PUT", "/links");
|
|
||||||
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
||||||
xhr.onload = () => {
|
|
||||||
console.log(xhr.responseText);
|
|
||||||
};
|
|
||||||
xhr.send(`ep_ID=${ ep_ID }`);
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created () {
|
|
||||||
const xhr = new XMLHttpRequest();
|
|
||||||
const vm = this;
|
|
||||||
|
|
||||||
xhr.open("POST","https://pseudosubs.com/links");
|
|
||||||
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
||||||
xhr.onload = () => {
|
|
||||||
try {
|
|
||||||
const data = YAML.parse(xhr.responseText);
|
|
||||||
if (data.opciones) {
|
|
||||||
vm.datos = data["opciones"];
|
|
||||||
vm.datosCorrectos = true;
|
|
||||||
} else {
|
|
||||||
vm.mostrarSpinnerParaCargaDeEps = false;
|
|
||||||
console.log("Error al recibir los eps del anime. resp:\n" + xhr.responseText);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
vm.mostrarSpinnerParaCargaDeEps = false;
|
|
||||||
console.log("Error al recibir los eps del anime:\n" + e + "\n" + xhr.responseText);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
console.log("Este es el query: " + `animeID=${ this.animeid }`);
|
|
||||||
xhr.send(`animeID=${ this.animeid }`);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="sass">
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
.icono-pequeno
|
.aviso
|
||||||
font-size: 15px
|
padding: 12px
|
||||||
padding: 0 5px
|
|
||||||
cursor: default
|
|
||||||
|
|
||||||
.panel__titulo
|
.icono-pequeno
|
||||||
font:
|
font-size: 15px
|
||||||
family: Muli, "Open Sans", sans-serif
|
padding: 0 5px
|
||||||
size: xx-large
|
cursor: default
|
||||||
weight: bold
|
|
||||||
color: white
|
|
||||||
text-align: center
|
|
||||||
|
|
||||||
.panel__titulo__variantes
|
.panel__titulo
|
||||||
text-align: left
|
border-radius: 10px 10px 0 0
|
||||||
|
font:
|
||||||
|
family: Muli, "Open Sans", sans-serif
|
||||||
|
size: xx-large
|
||||||
|
weight: bold
|
||||||
|
color: white
|
||||||
|
text-align: center
|
||||||
|
|
||||||
.panel__titulo__variantes__variante
|
.panel__titulo__variantes
|
||||||
padding: 10px 40px
|
text-align: left
|
||||||
user-select: none
|
|
||||||
cursor: pointer
|
|
||||||
display: inline-block
|
|
||||||
text-align: center
|
|
||||||
font:
|
|
||||||
size: large
|
|
||||||
weight: normal
|
|
||||||
|
|
||||||
.panel__titulo__variantes__variante--activa
|
.panel__titulo__variantes__variante
|
||||||
font-weight: bold
|
padding: 10px 40px
|
||||||
text-decoration: underline
|
user-select: none
|
||||||
|
cursor: pointer
|
||||||
|
display: inline-block
|
||||||
|
text-align: center
|
||||||
|
font:
|
||||||
|
size: large
|
||||||
|
weight: normal
|
||||||
|
|
||||||
.panel__descripcion
|
.panel__titulo__variantes__variante--activa
|
||||||
padding: 25px 15px
|
font-weight: bold
|
||||||
// background-color: #f2f2f2
|
text-decoration: underline
|
||||||
|
|
||||||
.panel__descripcion__titulo
|
.panel__descripcion
|
||||||
font:
|
padding: 25px 15px
|
||||||
family: Muli, "Open Sans", sans-serif
|
border-radius: 0 0 10px 10px
|
||||||
size: x-large
|
|
||||||
weight: bold
|
|
||||||
|
|
||||||
.panel__descripcion__link
|
.panel__descripcion__titulo
|
||||||
a
|
font:
|
||||||
font-weight: bold
|
family: Muli, "Open Sans", sans-serif
|
||||||
|
size: x-large
|
||||||
|
weight: bold
|
||||||
|
|
||||||
.panel
|
.panel__descripcion__link
|
||||||
border-radius: 3px
|
a
|
||||||
|
font-weight: bold
|
||||||
|
|
||||||
|
.panel
|
||||||
|
border-radius: 3px
|
||||||
</style>
|
</style>
|
@ -19,6 +19,8 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="sass">
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
.main
|
.main
|
||||||
margin: 50px 0
|
margin: 50px 0
|
||||||
|
|
||||||
@ -39,5 +41,12 @@
|
|||||||
family: Muli, "Open Sans", sans-serif
|
family: Muli, "Open Sans", sans-serif
|
||||||
size: x-large
|
size: x-large
|
||||||
|
|
||||||
|
@media only screen and (max-width: $movil)
|
||||||
|
.titulo
|
||||||
|
font-size: 2rem !important
|
||||||
|
|
||||||
|
.titulo__descr
|
||||||
|
font-size: large !important
|
||||||
|
|
||||||
//
|
//
|
||||||
</style>
|
</style>
|
@ -69,9 +69,17 @@
|
|||||||
font:
|
font:
|
||||||
family: Muli, "Open Sans", sans-serif
|
family: Muli, "Open Sans", sans-serif
|
||||||
size: 2.5rem
|
size: 2.5rem
|
||||||
//
|
|
||||||
|
|
||||||
.descripcion
|
.descripcion
|
||||||
padding: 50px 20px
|
padding: 50px 20px
|
||||||
|
|
||||||
|
@media only screen and (max-width: $movil)
|
||||||
|
.caracsCont
|
||||||
|
padding: 0
|
||||||
|
|
||||||
|
.titulo
|
||||||
|
font-size: 2rem
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
</style>
|
</style>
|
78
src/components/Inicio/notificaciones.vue
Normal file
78
src/components/Inicio/notificaciones.vue
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div.fondo1.ntf
|
||||||
|
div.titulo.texto1 Notificaciones
|
||||||
|
br
|
||||||
|
p.descr.texto1.
|
||||||
|
Inicia sesión con Google y recibe notificaciones cuando salgan eps nuevos.
|
||||||
|
Solo los animes que tú decidas.<br>
|
||||||
|
<br>
|
||||||
|
Muy pronto...
|
||||||
|
br
|
||||||
|
div(:class="(NODE_ENV === 'production')? 'pronto': ''")
|
||||||
|
router-link.mas(to="/cuenta") Aprender más
|
||||||
|
boton-inicio-sesion
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import botonInicioSesion from "../boton-inicio-sesion.vue"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "notificaciones"
|
||||||
|
components:
|
||||||
|
"boton-inicio-sesion": botonInicioSesion
|
||||||
|
data: ->
|
||||||
|
gSignInParams:
|
||||||
|
client_id: "27783367584-1hms6h62heplhlvsaihl8vqs7ho3o2b7.apps.googleusercontent.com"
|
||||||
|
NODE_ENV: process.env.NODE_ENV
|
||||||
|
methods:
|
||||||
|
alIniciarSesion: (googleUser) ->
|
||||||
|
token = googleUser.getAuthResponse().id_token
|
||||||
|
xhr = new XMLHttpRequest()
|
||||||
|
xhr.open "POST", "#{this.$store.state.servidor}/u/validar"
|
||||||
|
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
|
||||||
|
xhr.onload = ->
|
||||||
|
console.log xhr.responseText
|
||||||
|
xhr.send "idToken=#{token}"
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
|
.pronto
|
||||||
|
filter: opacity(15%)
|
||||||
|
|
||||||
|
.ntf
|
||||||
|
padding: 50px
|
||||||
|
|
||||||
|
.descr
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: x-large
|
||||||
|
opacity: 0.75
|
||||||
|
|
||||||
|
|
||||||
|
.titulo
|
||||||
|
font:
|
||||||
|
size: 3rem
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
|
||||||
|
.mas
|
||||||
|
padding: 10px 20px
|
||||||
|
display: inline-block
|
||||||
|
border-radius: 3px
|
||||||
|
color: white
|
||||||
|
cursor: pointer
|
||||||
|
text-decoration: none
|
||||||
|
margin: 0 10px
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: 1.3rem
|
||||||
|
background-color: $colorPrincipal
|
||||||
|
box-shadow: 0 3px 0 #00844c
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
</style>
|
@ -1,164 +1,187 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
div.texto2.fondo1.tarjeta
|
div.texto2.fondo1.tarjeta
|
||||||
div.anime(v-if="!errorAnimesNoEncontrados")
|
div.anime(v-if="!errorAnimesNoEncontrados")
|
||||||
div.fondo_1(:style="'background-color: ' + anime.color")
|
div.fondo_1(:style="'background-color: ' + anime.color")
|
||||||
div.fondo_texto(:class="'fondo_texto--' + $store.state.modoColor")
|
div.fondo_texto(:class="'fondo_texto--' + $store.state.modoColor")
|
||||||
div.cont
|
div.cont
|
||||||
router-link(:to="anime.link")
|
router-link(:to="anime.link")
|
||||||
div.titulo {{ anime.titulo }}
|
div.titulo {{ anime.titulo }}
|
||||||
|
|
||||||
router-link(:to="anime.link")
|
router-link(:to="anime.link")
|
||||||
img.imagen.tarjeta(:src="anime.imgUrl")
|
div.imgCont
|
||||||
div.animeCont
|
img.imagen.tarjeta(:src="anime.imgUrl")
|
||||||
div.descr {{ anime.descripcion }}
|
div.animeCont
|
||||||
br
|
div.descr {{ anime.descripcion }}
|
||||||
div.eps {{ anime.eps === 0? '?': anime.eps }} episodios.
|
br
|
||||||
br
|
div.eps {{ anime.eps === 0? '?': anime.eps }} episodios.
|
||||||
div.estudio Estudio: {{ anime.estudio }}
|
br
|
||||||
br
|
div.estudio Estudio: {{ anime.estudio }}
|
||||||
div.emision {{ anime.diaDeEmision? 'Nuevo ep los ' + anime.diaDeEmision : '' }}
|
br
|
||||||
br
|
div.emision {{ anime.diaDeEmision? 'Nuevo ep los ' + anime.diaDeEmision : '' }}
|
||||||
div.posActual
|
br
|
||||||
span.boton.fondo1.texto1(@click="cambiarAnime('ant')") ← ant
|
div.posActual
|
||||||
span.posicion {{ animeActual }} de {{ numAnimesRecientes }}
|
span.boton.fondo1.texto1(@click="cambiarAnime('ant')") ← ant
|
||||||
span.boton.fondo1.texto1(@click="cambiarAnime('sig')") sig →
|
span.posicion {{ animeActual }} de {{ numAnimesRecientes }}
|
||||||
div(v-else) Error. No hay animes que mostrar. Revisa tu conexión a internet.
|
span.boton.fondo1.texto1(@click="cambiarAnime('sig')") sig →
|
||||||
//
|
div(v-else) Error. No hay animes que mostrar. Revisa tu conexión a internet.
|
||||||
|
//
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="coffee">
|
<script lang="coffee">
|
||||||
|
|
||||||
DEV = process.env.NODE_ENV == "development"
|
DEV = process.env.NODE_ENV == "development"
|
||||||
|
|
||||||
export default
|
export default
|
||||||
name: "ultimos-eps"
|
name: "ultimos-eps"
|
||||||
data: ->
|
data: ->
|
||||||
numAnimesRecientes: 4
|
numAnimesRecientes: 5
|
||||||
animeActual: 0
|
animeActual: 0
|
||||||
anime: {}
|
anime: {}
|
||||||
intervalo: {}
|
intervalo: {}
|
||||||
cuentaAtrasCambio: {}
|
cuentaAtrasCambio: {}
|
||||||
primeraCarga: true
|
primeraCarga: true
|
||||||
computed:
|
computed:
|
||||||
ultimosAnimes: ->
|
ultimosAnimes: ->
|
||||||
animes = @$store.state.animes
|
animes = @$store.state.animes
|
||||||
contador = 0
|
contador = 0
|
||||||
resultado =
|
resultado =
|
||||||
for _anime in animes when contador < @numAnimesRecientes
|
for _anime in animes when contador < @numAnimesRecientes
|
||||||
contador = contador + 1
|
contador = contador + 1
|
||||||
_anime
|
_anime
|
||||||
errorAnimesNoEncontrados: ->
|
errorAnimesNoEncontrados: ->
|
||||||
if @$store.state.animes[0]?
|
if @$store.state.animes[0]?
|
||||||
if @primeraCarga
|
if @primeraCarga
|
||||||
|
|
||||||
@anime = @obtenerSigAnime()
|
@anime = @obtenerSigAnime()
|
||||||
@establecerIntervalo()
|
@establecerIntervalo()
|
||||||
@primeraCarga = false
|
@primeraCarga = false
|
||||||
false
|
false
|
||||||
else
|
else
|
||||||
true
|
true
|
||||||
methods:
|
methods:
|
||||||
obtenerSigAnime: ->
|
obtenerSigAnime: ->
|
||||||
if @animeActual is @numAnimesRecientes
|
if @animeActual is @numAnimesRecientes
|
||||||
@animeActual = 1
|
@animeActual = 1
|
||||||
else
|
else
|
||||||
@animeActual++
|
@animeActual++
|
||||||
@ultimosAnimes[@animeActual - 1]
|
@ultimosAnimes[@animeActual - 1]
|
||||||
obtenerAntAnime: ->
|
obtenerAntAnime: ->
|
||||||
if @animeActual is 1
|
if @animeActual is 1
|
||||||
@animeActual = @numAnimesRecientes
|
@animeActual = @numAnimesRecientes
|
||||||
else
|
else
|
||||||
@animeActual--
|
@animeActual--
|
||||||
@ultimosAnimes[@animeActual - 1]
|
@ultimosAnimes[@animeActual - 1]
|
||||||
cambiarAnime: (modo) ->
|
cambiarAnime: (modo) ->
|
||||||
_ = this
|
_ = this
|
||||||
clearInterval @intervalo
|
clearInterval @intervalo
|
||||||
clearTimeout @cuentaAtrasCambio
|
clearTimeout @cuentaAtrasCambio
|
||||||
@anime =
|
@anime =
|
||||||
if modo is "sig"
|
if modo is "sig"
|
||||||
@obtenerSigAnime()
|
@obtenerSigAnime()
|
||||||
else
|
else
|
||||||
@obtenerAntAnime()
|
@obtenerAntAnime()
|
||||||
@cuentaAtrasCambio = setTimeout (() ->
|
@cuentaAtrasCambio = setTimeout (() ->
|
||||||
_.establecerIntervalo()
|
_.establecerIntervalo()
|
||||||
), 5000
|
), 5000
|
||||||
establecerIntervalo: ->
|
establecerIntervalo: ->
|
||||||
_ = this
|
_ = this
|
||||||
@intervalo = setInterval (() ->
|
@intervalo = setInterval (() ->
|
||||||
_.anime = _.obtenerSigAnime()
|
_.anime = _.obtenerSigAnime()
|
||||||
), 5000
|
), 5000
|
||||||
beforeDestroy: ->
|
beforeDestroy: ->
|
||||||
clearInterval @intervalo
|
clearInterval @intervalo
|
||||||
#
|
#
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="sass">
|
<style scoped lang="sass">
|
||||||
@import "../../assets/sass/variables"
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
.anime
|
.anime
|
||||||
transition: background-color 250ms ease-out
|
transition: background-color 250ms ease-out
|
||||||
height: 580px
|
height: 580px
|
||||||
width: 100%
|
width: 100%
|
||||||
position: relative
|
position: relative
|
||||||
|
|
||||||
.titulo
|
.titulo
|
||||||
font:
|
font:
|
||||||
family: Muli, "Open Sans", sans-serif
|
family: Muli, "Open Sans", sans-serif
|
||||||
size: xx-large
|
size: xx-large
|
||||||
color: white
|
color: white
|
||||||
padding-bottom: 10px
|
padding-bottom: 10px
|
||||||
height: 54px
|
height: 54px
|
||||||
// position: relative
|
// position: relative
|
||||||
// width: 500px
|
// width: 500px
|
||||||
overflow: visible
|
overflow: visible
|
||||||
|
|
||||||
.fondo_1, .fondo_texto, .cont
|
.fondo_1, .fondo_texto, .cont
|
||||||
position: absolute
|
position: absolute
|
||||||
width: 100%
|
width: 100%
|
||||||
height: 580px
|
height: 580px
|
||||||
|
|
||||||
.fondo_1
|
.fondo_1
|
||||||
z-index: 1
|
z-index: 1
|
||||||
transition: background-color 500ms
|
transition: background-color 500ms
|
||||||
|
|
||||||
.fondo_texto
|
.fondo_texto
|
||||||
z-index: 3
|
z-index: 3
|
||||||
|
|
||||||
.fondo_texto--claro
|
.fondo_texto--claro
|
||||||
background: linear-gradient(to right, transparent, rgba(255,255,255,0.8) 40%, $fondo2--claro 70%)
|
background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.8) 40%, $fondo2--claro 70%)
|
||||||
|
|
||||||
.fondo_texto--oscuro
|
.fondo_texto--oscuro
|
||||||
background: linear-gradient(to right, transparent, rgba(0,0,0,0.8) 40%, $fondo2--oscuro 70%)
|
background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.8) 40%, $fondo2--oscuro 70%)
|
||||||
|
|
||||||
.animeCont
|
.animeCont
|
||||||
max-height: 500px
|
max-height: 500px
|
||||||
|
|
||||||
.posActual
|
.posActual
|
||||||
position: absolute
|
position: absolute
|
||||||
bottom: 15px
|
bottom: 15px
|
||||||
left: 440px
|
left: 440px
|
||||||
.boton
|
|
||||||
@extend %bordeRedondo-std
|
|
||||||
user-select: none
|
|
||||||
display: inline-block
|
|
||||||
padding: 5px 10px
|
|
||||||
margin: 0 10px
|
|
||||||
cursor: pointer
|
|
||||||
|
|
||||||
.cont
|
.boton
|
||||||
padding: 10px 40px
|
@extend %bordeRedondo-std
|
||||||
z-index: 4
|
user-select: none
|
||||||
a
|
display: inline-block
|
||||||
text-decoration: none
|
padding: 5px 10px
|
||||||
|
margin: 0 10px
|
||||||
|
cursor: pointer
|
||||||
|
|
||||||
.imagen
|
.cont
|
||||||
@extend %bordeRedondo-std
|
padding: 10px 40px
|
||||||
float: left
|
z-index: 4
|
||||||
height: 500px
|
|
||||||
width: 360px
|
|
||||||
margin-right: 40px
|
|
||||||
|
|
||||||
//
|
a
|
||||||
|
text-decoration: none
|
||||||
|
|
||||||
|
.imgCont
|
||||||
|
float: left
|
||||||
|
display: inline-block
|
||||||
|
text-align: center
|
||||||
|
|
||||||
|
.imagen
|
||||||
|
@extend %bordeRedondo-std
|
||||||
|
height: 500px
|
||||||
|
width: 360px
|
||||||
|
margin-right: 40px
|
||||||
|
|
||||||
|
@media only screen and (max-width: 900px)
|
||||||
|
.animeCont
|
||||||
|
display: none
|
||||||
|
|
||||||
|
.posActual
|
||||||
|
display: none
|
||||||
|
|
||||||
|
.imgCont
|
||||||
|
float: none
|
||||||
|
display: block
|
||||||
|
|
||||||
|
@media only screen and (max-width: 420px)
|
||||||
|
.imagen
|
||||||
|
height: auto
|
||||||
|
width: 100%
|
||||||
|
|
||||||
|
//
|
||||||
</style>
|
</style>
|
178
src/components/Usuario/ajustes-notificaciones.vue
Normal file
178
src/components/Usuario/ajustes-notificaciones.vue
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div
|
||||||
|
div.titulo Notificaciones (No disponible)
|
||||||
|
br
|
||||||
|
template(v-if="notf && serviceWorkers")
|
||||||
|
div.descr(v-if="estado === 0").
|
||||||
|
Registra tu navegador siguiendo estos pasos:
|
||||||
|
br
|
||||||
|
div.uno
|
||||||
|
span.num(:class="estadoNotificaciones === 'Permitido'? 'num--terminado': ''") 1
|
||||||
|
span.paso Permitir notificaciones
|
||||||
|
br
|
||||||
|
div.opc(v-if="estadoNotificaciones !== 'Permitido'")
|
||||||
|
p Estado de las notificaciones: {{ estadoNotificaciones }}
|
||||||
|
br
|
||||||
|
button.boton(v-if="estadoNotificaciones === 'No preguntado'"
|
||||||
|
@click="pedirNotificaciones()") Permitir notificaciones
|
||||||
|
div(v-if="estadoNotificaciones === 'Denegado'").
|
||||||
|
Tienes que permitir las notificaciones en los ajustes de tu navegador.
|
||||||
|
br
|
||||||
|
div.dos
|
||||||
|
span.num(:class="notificacionesProbadas? 'num--terminado': ''") 2
|
||||||
|
span.paso Probar notificaciones
|
||||||
|
br
|
||||||
|
div.opc(v-if="estadoNotificaciones === 'Permitido' && !notificacionesProbadas")
|
||||||
|
p.
|
||||||
|
Aceptaste las notificaciones, pero aun es posible que tu navegador no las
|
||||||
|
soporte. Haz click en el siguiente boton para probarlas:
|
||||||
|
br
|
||||||
|
button.boton(@click="probarNotificacion") Probar
|
||||||
|
br
|
||||||
|
br
|
||||||
|
span Ingresa el numero secreto:
|
||||||
|
input(type="number" min="0" max="100" v-model="numIngresado")
|
||||||
|
br
|
||||||
|
div.tres
|
||||||
|
span.num(:class="pushSuscrito? 'num--terminado': ''") 3
|
||||||
|
span.paso Suscribirse a las notificaciones
|
||||||
|
br
|
||||||
|
div.opc(v-if="estadoNotificaciones === 'Permitido' && notificacionesProbadas && !pushSuscrito")
|
||||||
|
button.boton(@click="suscribirse()") Suscribirse
|
||||||
|
div.fin(v-if="pushSuscrito")
|
||||||
|
p Tu navegador está listo.
|
||||||
|
template(v-else).
|
||||||
|
Lo sentimos, tu navegador no soporta notificaciones. Actualiza tu navegador.
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
|
||||||
|
publicVapidKey = "BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI"
|
||||||
|
|
||||||
|
urlBase64ToUint8Array = (base64String) ->
|
||||||
|
padding = '='.repeat((4 - base64String.length % 4) % 4);
|
||||||
|
base64 = (base64String + padding)
|
||||||
|
.replace(/-/g, '+')
|
||||||
|
.replace(/_/g, '/');
|
||||||
|
|
||||||
|
rawData = window.atob(base64);
|
||||||
|
outputArray = new Uint8Array(rawData.length);
|
||||||
|
|
||||||
|
`
|
||||||
|
for (let i = 0; i < rawData.length; ++i) {
|
||||||
|
outputArray[i] = rawData.charCodeAt(i)
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
outputArray
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "ajustes-notificaciones"
|
||||||
|
data: ->
|
||||||
|
estado: 0
|
||||||
|
estadoNotf: Notification.permission
|
||||||
|
notf: false
|
||||||
|
serviceWorkers: false
|
||||||
|
notificacionesProbadas: false
|
||||||
|
pushSuscrito: false
|
||||||
|
numAleatorio: Math.ceil Math.random() * 100
|
||||||
|
numIngresado: 0
|
||||||
|
watch:
|
||||||
|
numIngresado: (n, v) ->
|
||||||
|
if parseInt(n) is @numAleatorio
|
||||||
|
@notificacionesProbadas = true
|
||||||
|
computed:
|
||||||
|
estadoNotificaciones: ->
|
||||||
|
switch @estadoNotf
|
||||||
|
when "default" then "No preguntado"
|
||||||
|
when "granted" then "Permitido"
|
||||||
|
when "denied" then "Denegado"
|
||||||
|
methods:
|
||||||
|
pedirNotificaciones: ->
|
||||||
|
vm = this
|
||||||
|
Notification.requestPermission().then((res) ->
|
||||||
|
vm.estadoNotf = res
|
||||||
|
)
|
||||||
|
probarNotificacion: ->
|
||||||
|
vm = this
|
||||||
|
navigator.serviceWorker.getRegistration()
|
||||||
|
.then (reg) ->
|
||||||
|
reg?.showNotification "El numero secreto es #{vm.numAleatorio}"
|
||||||
|
suscribirse: ->
|
||||||
|
vm = this
|
||||||
|
navigator.serviceWorker.ready.then (reg) ->
|
||||||
|
try
|
||||||
|
subscripcion = await reg.pushManager.subscribe
|
||||||
|
userVisibleOnly: true
|
||||||
|
applicationServerKey: urlBase64ToUint8Array publicVapidKey
|
||||||
|
|
||||||
|
subsStr = JSON.stringify subscripcion
|
||||||
|
console.log subsStr
|
||||||
|
res = await fetch "#{vm.$store.state.servidor}/n/registrar", {
|
||||||
|
method: "POST"
|
||||||
|
body: "google_ID=#{vm.$store.state.usuarioActual.googleID}&subscripcion=#{subsStr}"
|
||||||
|
headers:
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
|
}
|
||||||
|
jsonRespuesta = await res.json()
|
||||||
|
console.log jsonRespuesta
|
||||||
|
if res.ok
|
||||||
|
vm.pushSuscrito = true
|
||||||
|
catch e
|
||||||
|
console.error e
|
||||||
|
|
||||||
|
mounted: ->
|
||||||
|
@notf = window.Notification?
|
||||||
|
@serviceWorkers = navigator.serviceWorker?
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
@import "../../assets/sass/variables"
|
||||||
|
|
||||||
|
.titulo
|
||||||
|
font:
|
||||||
|
family: Muli, "Open Sans", sans-serif
|
||||||
|
size: 2rem
|
||||||
|
|
||||||
|
.num
|
||||||
|
font:
|
||||||
|
family: "Product Sans"
|
||||||
|
weight: bold
|
||||||
|
size: 1.5rem
|
||||||
|
display: inline-block
|
||||||
|
background-color: $colorSecundario
|
||||||
|
height: 34px
|
||||||
|
width: 34px
|
||||||
|
text-align: center
|
||||||
|
border-radius: 17px
|
||||||
|
|
||||||
|
.num--terminado
|
||||||
|
background-color: $colorPrincipal
|
||||||
|
|
||||||
|
.paso
|
||||||
|
margin-left: 10px
|
||||||
|
font-family: "Product Sans", Muli, "Open Sans", sans-serif
|
||||||
|
font-size: 1.5rem
|
||||||
|
|
||||||
|
.boton
|
||||||
|
padding: 10px 20px
|
||||||
|
display: inline-block
|
||||||
|
border: none
|
||||||
|
border-radius: 3px
|
||||||
|
color: white
|
||||||
|
cursor: pointer
|
||||||
|
text-decoration: none
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: 1.3rem
|
||||||
|
background-color: $colorPrincipal
|
||||||
|
box-shadow: 0 3px 0 #00844c
|
||||||
|
|
||||||
|
.opc
|
||||||
|
margin-left: 45px
|
||||||
|
|
||||||
|
//
|
||||||
|
</style>
|
@ -2,8 +2,8 @@
|
|||||||
Barra Lateral. Responsivo hasta los 285px de ancho. -->
|
Barra Lateral. Responsivo hasta los 285px de ancho. -->
|
||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
div.barra
|
div.barra
|
||||||
div.lateral.fondo2.ocultarEnMovil(:class="$store.state.barraLateralOculta? 'barraOculta': ''")
|
div.lateral.fondo2.ocultarEnMovil.barraOculta
|
||||||
div.botonOcultar(@click="ocultarBarraLateral()" :style="'display: ' + (largoVentana < 1201? 'none': 'block')").
|
// div.botonOcultar(@click="ocultarBarraLateral()" :style="'display: ' + (largoVentana < 1201? 'none': 'block')").
|
||||||
{{ $store.state.barraLateralOculta? '>>': '<<' }}
|
{{ $store.state.barraLateralOculta? '>>': '<<' }}
|
||||||
|
|
||||||
router-link.linkImg(to="/" title="Ir al inicio")
|
router-link.linkImg(to="/" title="Ir al inicio")
|
||||||
@ -11,7 +11,6 @@
|
|||||||
|
|
||||||
div.items.tarjeta.fondo1.texto2
|
div.items.tarjeta.fondo1.texto2
|
||||||
div.cambiarModo(@click="cambiarModoColor()")
|
div.cambiarModo(@click="cambiarModoColor()")
|
||||||
span.ocultarEnTablet Cambiar a modo {{ modoSiguiente }}
|
|
||||||
i.material-icons.texto2.mostrarEnTablet.
|
i.material-icons.texto2.mostrarEnTablet.
|
||||||
{{ modoSiguiente === 'oscuro'? 'brightness_3': 'brightness_5' }}
|
{{ modoSiguiente === 'oscuro'? 'brightness_3': 'brightness_5' }}
|
||||||
br
|
br
|
||||||
@ -19,28 +18,19 @@
|
|||||||
br
|
br
|
||||||
|
|
||||||
router-link(to="/")
|
router-link(to="/")
|
||||||
span.ocultarEnTablet Nosotros
|
i.material-icons.texto2.mostrarEnTablet(title="Nosotros") group
|
||||||
i.material-icons.texto2.mostrarEnTablet group
|
|
||||||
br.mostrarEnTablet
|
br.mostrarEnTablet
|
||||||
|
|
||||||
router-link(to="/")
|
router-link(to="/")
|
||||||
span.ocultarEnTablet Cambios
|
i.material-icons.texto2.mostrarEnTablet(title="Ayuda") help
|
||||||
i.material-icons.texto2.mostrarEnTablet new_releases
|
|
||||||
br.mostrarEnTablet
|
|
||||||
|
|
||||||
router-link(to="/")
|
|
||||||
span.ocultarEnTablet Diseño
|
|
||||||
i.material-icons.texto2.mostrarEnTablet brush
|
|
||||||
br.mostrarEnTablet
|
br.mostrarEnTablet
|
||||||
|
|
||||||
a(href="https://github.com/Araozu/PseudoSubs_" target="_blank" title="GitHub")
|
a(href="https://github.com/Araozu/PseudoSubs_" target="_blank" title="GitHub")
|
||||||
span.ocultarEnTablet GitHub
|
|
||||||
img.imgGitHub.texto2.mostrarEnTablet(
|
img.imgGitHub.texto2.mostrarEnTablet(
|
||||||
:src="modoSiguiente === 'oscuro'? '/img/github.svg': '/img/githubOsc.svg' ")
|
:src="modoSiguiente === 'oscuro'? '/img/github.svg': '/img/githubOsc.svg' ")
|
||||||
br.mostrarEnTablet
|
br.mostrarEnTablet
|
||||||
|
|
||||||
router-link(to="/cuenta")
|
router-link(to="/cuenta")
|
||||||
span.ocultarEnTablet Ajustes
|
|
||||||
i.material-icons.texto2.mostrarEnTablet settings
|
i.material-icons.texto2.mostrarEnTablet settings
|
||||||
|
|
||||||
div.ocultarEnTablet
|
div.ocultarEnTablet
|
||||||
@ -97,11 +87,6 @@
|
|||||||
""
|
""
|
||||||
this.elemHtmlModoOscuro.innerHTML = resultado
|
this.elemHtmlModoOscuro.innerHTML = resultado
|
||||||
|
|
||||||
ocultarBarraLateral: ->
|
|
||||||
estadoActual = @$store.state.barraLateralOculta
|
|
||||||
console.log "Anuma v: #{estadoActual}"
|
|
||||||
@$store.commit "cambiarBarraLateral"
|
|
||||||
|
|
||||||
created: ->
|
created: ->
|
||||||
unless this.elemHtmlModoOscuro
|
unless this.elemHtmlModoOscuro
|
||||||
nuevoElem = document.createElement "style"
|
nuevoElem = document.createElement "style"
|
||||||
@ -114,8 +99,8 @@
|
|||||||
if Storage? and localStorage.getItem "modoColor"
|
if Storage? and localStorage.getItem "modoColor"
|
||||||
localStorage.getItem "modoColor"
|
localStorage.getItem "modoColor"
|
||||||
else if Storage?
|
else if Storage?
|
||||||
localStorage.setItem "modoColor", "oscuro"
|
localStorage.setItem "modoColor", "claro"
|
||||||
"oscuro"
|
"claro"
|
||||||
else
|
else
|
||||||
console.log "No hay soporte para LocalStorage"
|
console.log "No hay soporte para LocalStorage"
|
||||||
"claro"
|
"claro"
|
||||||
|
53
src/components/boton-inicio-sesion.vue
Normal file
53
src/components/boton-inicio-sesion.vue
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
span
|
||||||
|
g-signin-button(:params="gSignInParams" @success="alIniciarSesion"
|
||||||
|
v-if="!$store.state.usuarioActual.googleID") Inicia sesión con Google
|
||||||
|
div.g-signin-button(v-else) Iniciaste sesión como {{ $store.state.usuarioActual.nombre }}
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import YAML from "yaml"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "boton-inicio-sesion"
|
||||||
|
data: ->
|
||||||
|
gSignInParams:
|
||||||
|
client_id: "27783367584-1hms6h62heplhlvsaihl8vqs7ho3o2b7.apps.googleusercontent.com"
|
||||||
|
methods:
|
||||||
|
alIniciarSesion: (googleUser) ->
|
||||||
|
vm = this
|
||||||
|
token = googleUser.getAuthResponse().id_token
|
||||||
|
xhr = new XMLHttpRequest()
|
||||||
|
xhr.open "POST", "#{this.$store.state.servidor}/u/validar"
|
||||||
|
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
|
||||||
|
xhr.onload = ->
|
||||||
|
res = YAML.parse xhr.responseText
|
||||||
|
if res.exito
|
||||||
|
vm.$store.commit "cambiarUsuarioActual", res.payload
|
||||||
|
else
|
||||||
|
console.log xhr.responseText
|
||||||
|
alert "Error al iniciar sesion."
|
||||||
|
|
||||||
|
xhr.send "idToken=#{token}"
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
|
||||||
|
.g-signin-button
|
||||||
|
padding: 10px 20px
|
||||||
|
display: inline-block
|
||||||
|
border-radius: 3px
|
||||||
|
color: white
|
||||||
|
cursor: pointer
|
||||||
|
text-decoration: none
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: 1.3rem
|
||||||
|
background-color: #3c82f7
|
||||||
|
box-shadow: 0 3px 0 #0f69ff
|
||||||
|
|
||||||
|
//
|
||||||
|
</style>
|
@ -4,9 +4,16 @@ import router from './router.coffee'
|
|||||||
import store from './store.coffee'
|
import store from './store.coffee'
|
||||||
import './registerServiceWorker'
|
import './registerServiceWorker'
|
||||||
import VueDisqus from "vue-disqus"
|
import VueDisqus from "vue-disqus"
|
||||||
|
import VueAnalytics from "vue-analytics"
|
||||||
|
import VueGSignIn from "vue-google-signin-button"
|
||||||
|
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false;
|
||||||
Vue.use(VueDisqus);
|
Vue.use(VueDisqus);
|
||||||
|
Vue.use(VueGSignIn);
|
||||||
|
Vue.use(VueAnalytics, {
|
||||||
|
id: 'UA-113477820-1',
|
||||||
|
router
|
||||||
|
});
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
router,
|
router,
|
||||||
|
@ -2,31 +2,48 @@
|
|||||||
|
|
||||||
import { register } from 'register-service-worker'
|
import { register } from 'register-service-worker'
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Claves VAPID
|
||||||
|
* Publica: BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI
|
||||||
|
* Privada: 6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA
|
||||||
|
* */
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
if (process.env.NODE_ENV === 'production') {
|
||||||
register(`${process.env.BASE_URL}service-worker.js`, {
|
register(`${process.env.BASE_URL}service-worker.js`, {
|
||||||
ready () {
|
ready() {
|
||||||
console.log(
|
console.log(
|
||||||
'App is being served from cache by a service worker.\n' +
|
'PseudoSubs está siendo servida desde un service worker.\n' +
|
||||||
'For more details, visit https://goo.gl/AFskqB'
|
'Para saber más visita https://goo.gl/AFskqB'
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
registered () {
|
registered(registration) {
|
||||||
console.log('Service worker has been registered.')
|
console.log('Se ha registrado el Service worker.');
|
||||||
},
|
self.addEventListener("push", e => {
|
||||||
cached () {
|
const data = e.data.json();
|
||||||
console.log('Content has been cached for offline use.')
|
console.log("Recibi un push :D");
|
||||||
},
|
registration.showNotification(data.title, {
|
||||||
updatefound () {
|
body: "Notificacion de prueba",
|
||||||
console.log('New content is downloading.')
|
icon: "http://image.ibb.co/frYOFd/tmlogo.png"
|
||||||
},
|
});
|
||||||
updated () {
|
});
|
||||||
console.log('New content is available; please refresh.')
|
},
|
||||||
},
|
cached() {
|
||||||
offline () {
|
console.log('Se ha cacheado el contenido para su uso sin internet.')
|
||||||
console.log('No internet connection found. App is running in offline mode.')
|
},
|
||||||
},
|
updatefound() {
|
||||||
error (error) {
|
console.log('Descargando nuevo contenido.')
|
||||||
console.error('Error during service worker registration:', error)
|
},
|
||||||
}
|
updated() {
|
||||||
})
|
console.log('Hay nuevo contenido disponible, recarga la página.');
|
||||||
|
// window.location.reload(true);
|
||||||
|
},
|
||||||
|
offline() {
|
||||||
|
console.log('No hay conexion a internet. ' +
|
||||||
|
'PseudoSubs se está ejecutando en modo sin internet.')
|
||||||
|
},
|
||||||
|
error(error) {
|
||||||
|
console.error('Error al registrar el service worker:', error)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,40 +7,45 @@ import AnimeList from "./views/AnimeList.vue"
|
|||||||
import listaAnimes from "./components/AnimeList/lista-animes.vue"
|
import listaAnimes from "./components/AnimeList/lista-animes.vue"
|
||||||
import Anime from "./components/Anime/Anime.vue"
|
import Anime from "./components/Anime/Anime.vue"
|
||||||
import Error404 from "./views/Error404.vue"
|
import Error404 from "./views/Error404.vue"
|
||||||
|
import Admin from "./views/Admin.vue"
|
||||||
|
|
||||||
Vue.use Router
|
Vue.use Router
|
||||||
|
|
||||||
export default new Router
|
export default new Router
|
||||||
mode: "history"
|
mode: "history"
|
||||||
base: process.env.BASE_URL
|
base: process.env.BASE_URL
|
||||||
routes: [
|
routes: [
|
||||||
path: "/"
|
path: "/"
|
||||||
name: "Inicio"
|
name: "Inicio"
|
||||||
component: Inicio
|
component: Inicio
|
||||||
,
|
|
||||||
path: "/comparar"
|
|
||||||
name: "Comparar"
|
|
||||||
component: Comparar
|
|
||||||
,
|
|
||||||
path: "/Anime"
|
|
||||||
component: AnimeList
|
|
||||||
children: [
|
|
||||||
path: ":nombre"
|
|
||||||
component: Anime
|
|
||||||
,
|
,
|
||||||
path: ""
|
path: "/comparar"
|
||||||
name: "Anime"
|
name: "Comparar"
|
||||||
component: listaAnimes
|
component: Comparar
|
||||||
|
,
|
||||||
|
path: "/Anime"
|
||||||
|
component: AnimeList
|
||||||
|
children: [
|
||||||
|
path: ":nombre"
|
||||||
|
component: Anime
|
||||||
|
,
|
||||||
|
path: ""
|
||||||
|
name: "Anime"
|
||||||
|
component: listaAnimes
|
||||||
|
]
|
||||||
|
,
|
||||||
|
path: "/cuenta"
|
||||||
|
name: "Usuario"
|
||||||
|
component: Usuario
|
||||||
|
,
|
||||||
|
path: "/admin"
|
||||||
|
name: "Admin"
|
||||||
|
component: Admin
|
||||||
|
,
|
||||||
|
path: "*"
|
||||||
|
name: "404"
|
||||||
|
component: Error404
|
||||||
]
|
]
|
||||||
,
|
scrollBehavior: (to, from, savedPosition) ->
|
||||||
path: "/cuenta"
|
x: 0
|
||||||
name: "Usuario"
|
y: 0
|
||||||
component: Usuario
|
|
||||||
,
|
|
||||||
path: "*"
|
|
||||||
name: "404"
|
|
||||||
component: Error404
|
|
||||||
]
|
|
||||||
scrollBehavior: (to, from, savedPosition) ->
|
|
||||||
x: 0
|
|
||||||
y: 0
|
|
||||||
|
@ -8,30 +8,34 @@ DEV = process.env.NODE_ENV == "development"
|
|||||||
|
|
||||||
export default new Vuex.Store
|
export default new Vuex.Store
|
||||||
state:
|
state:
|
||||||
barraLateralOculta:
|
servidor: unless DEV then "" else ""
|
||||||
(localStorage?.getItem "barraLateralOculta") == "true" ? true
|
|
||||||
|
|
||||||
animes:
|
animes:
|
||||||
if localStorage?
|
if localStorage?
|
||||||
YAML.parse ((localStorage.getItem "animes") ? "[]")
|
YAML.parse ((localStorage.getItem "animes") ? "[]")
|
||||||
else
|
else []
|
||||||
[]
|
|
||||||
|
|
||||||
modoColor: localStorage?.getItem "modoColor" ? "claro"
|
modoColor: (localStorage?.getItem "modoColor") ? "claro"
|
||||||
tituloAnime: "Anime"
|
tituloAnime: "Anime"
|
||||||
txtAdicionalAnime: "Comprimido sin perder 1 solo pixel."
|
txtAdicionalAnime: "Comprimido sin perder 1 solo pixel."
|
||||||
mostrarImgAnime: false
|
mostrarImgAnime: false
|
||||||
imgTituloAnime: "19_2_fruits_basket"
|
imgTituloAnime: ""
|
||||||
rutaActual: [{nombre: "PseudoSubs", ruta: "/"}]
|
rutaActual: [{nombre: "PseudoSubs", ruta: "/"}]
|
||||||
|
usuarioActual:
|
||||||
|
if localStorage?
|
||||||
|
YAML.parse ((localStorage.getItem "usuario") ? "{}" )
|
||||||
|
else {}
|
||||||
|
|
||||||
mutations:
|
mutations:
|
||||||
cambiarBarraLateral: (state) ->
|
|
||||||
state.barraLateralOculta = !state.barraLateralOculta
|
|
||||||
localStorage?.setItem "barraLateralOculta", state.barraLateralOculta
|
|
||||||
|
|
||||||
establecerAnime: (state, animes) ->
|
establecerAnime: (state, animes) ->
|
||||||
localStorage?.setItem "animes", YAML.stringify animes
|
animesTxt = YAML.stringify animes
|
||||||
state.animes = animes
|
animesLocal = localStorage?.getItem "animes"
|
||||||
|
unless animesTxt is animesLocal
|
||||||
|
localStorage?.setItem "animes", animesTxt
|
||||||
|
state.animes = animes
|
||||||
|
if DEV then console.log "Actualicé los animes"
|
||||||
|
else
|
||||||
|
if DEV then console.log "Ahorré tener que actualizar todo v:"
|
||||||
|
|
||||||
cambiarModoColor: (state, color) ->
|
cambiarModoColor: (state, color) ->
|
||||||
state.modoColor = color
|
state.modoColor = color
|
||||||
@ -51,4 +55,8 @@ export default new Vuex.Store
|
|||||||
cambiarRutaActual: (state, valor) ->
|
cambiarRutaActual: (state, valor) ->
|
||||||
state.rutaActual = valor
|
state.rutaActual = valor
|
||||||
|
|
||||||
|
cambiarUsuarioActual: (state, valor) ->
|
||||||
|
state.usuarioActual = valor
|
||||||
|
if localStorage? then localStorage.setItem "usuario", YAML.stringify valor
|
||||||
|
|
||||||
actions: {}
|
actions: {}
|
33
src/views/Admin.vue
Normal file
33
src/views/Admin.vue
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div.texto1
|
||||||
|
div.titulo.fondo1 Administracion
|
||||||
|
br
|
||||||
|
div Animes
|
||||||
|
lista-anime
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import listaAnime from "../components/Admin/lista-animes.vue"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "Admin"
|
||||||
|
components:
|
||||||
|
"lista-anime": listaAnime
|
||||||
|
created: ->
|
||||||
|
unless this.$route.query.p == "xsakah4b"
|
||||||
|
this.$router.push "/"
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
|
||||||
|
.titulo
|
||||||
|
padding: 50px
|
||||||
|
font:
|
||||||
|
family: "Product Sans", "Open Sans", sans-serif
|
||||||
|
size: 3rem
|
||||||
|
|
||||||
|
//
|
||||||
|
</style>
|
@ -2,6 +2,7 @@
|
|||||||
div.inicio
|
div.inicio
|
||||||
ultimos-eps
|
ultimos-eps
|
||||||
animes-novelas
|
animes-novelas
|
||||||
|
notificaciones
|
||||||
br
|
br
|
||||||
caracteristicas
|
caracteristicas
|
||||||
y-notaras-la-diferencia
|
y-notaras-la-diferencia
|
||||||
@ -13,6 +14,7 @@
|
|||||||
import caracteristicas from "../components/Inicio/caracteristicas.vue"
|
import caracteristicas from "../components/Inicio/caracteristicas.vue"
|
||||||
import yNotarasLaDiferencia from "../components/Inicio/y-notaras-la-diferencia.vue"
|
import yNotarasLaDiferencia from "../components/Inicio/y-notaras-la-diferencia.vue"
|
||||||
import animesNovelas from "../components/Inicio/animes-novelas.vue"
|
import animesNovelas from "../components/Inicio/animes-novelas.vue"
|
||||||
|
import notificaciones from "../components/Inicio/notificaciones.vue"
|
||||||
|
|
||||||
export default
|
export default
|
||||||
name: "Inicio"
|
name: "Inicio"
|
||||||
@ -21,6 +23,7 @@
|
|||||||
'y-notaras-la-diferencia': yNotarasLaDiferencia
|
'y-notaras-la-diferencia': yNotarasLaDiferencia
|
||||||
'ultimos-eps': ultimosEps
|
'ultimos-eps': ultimosEps
|
||||||
'animes-novelas': animesNovelas
|
'animes-novelas': animesNovelas
|
||||||
|
notificaciones: notificaciones
|
||||||
created: ->
|
created: ->
|
||||||
@$store.commit "cambiarRutaActual", [{nombre: "PseudoSubs", ruta: "/"}]
|
@$store.commit "cambiarRutaActual", [{nombre: "PseudoSubs", ruta: "/"}]
|
||||||
#
|
#
|
||||||
|
@ -1,80 +1,105 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
div.texto1
|
div.texto1
|
||||||
div.tarjeta.fondo1.tituloC
|
div.tarjeta.fondo1.tituloC
|
||||||
div.titulo Ajustes
|
div.titulo Ajustes
|
||||||
div.titulo__descr Configura la página a tu gusto.
|
div.titulo__descr Configura la página a tu gusto.
|
||||||
br
|
br
|
||||||
div.row
|
div.row
|
||||||
div.usuario
|
div.usuario
|
||||||
div.usuario__cont.tarjeta.fondo1
|
div.usuario__cont.tarjeta.fondo1
|
||||||
div.usuario__titulo Mis Datos
|
div.usuario__titulo Mis Datos
|
||||||
br
|
br
|
||||||
img.usuario__img
|
template(v-if="$store.state.usuarioActual.googleID")
|
||||||
br
|
div.contImg
|
||||||
div.usuario__nombre Nombre:
|
img.usuario__img(:src="$store.state.usuarioActual.fotoPerfil")
|
||||||
div.usuario__correo Correo:
|
div.usuario__nombre Nombre: {{ $store.state.usuarioActual.nombre }}
|
||||||
br
|
div.usuario__correo Correo: {{ $store.state.usuarioActual.email }}
|
||||||
br
|
br
|
||||||
div.usuario__info Estos son todos los datos que almacenamos de ti.
|
div.usuario__info.
|
||||||
div.notificaciones
|
Eso es todo. Puedes cambiar tu nombre y correo sin afectar tu cuenta de Google.
|
||||||
div.notificaciones__cont.tarjeta.fondo1 Notificaciones
|
template(v-else)
|
||||||
//
|
div.
|
||||||
|
Inicia sesión* para poder recibir notificaciones en todos tus dispositivos.
|
||||||
|
br
|
||||||
|
boton-inicio-sesion
|
||||||
|
br
|
||||||
|
br
|
||||||
|
p.
|
||||||
|
* No necesitas iniciar sesión para tener notificaciones, solo para controlar
|
||||||
|
tus dispositivos.<br>
|
||||||
|
* Aun no disponible.
|
||||||
|
div.notificaciones
|
||||||
|
div.notificaciones__cont.tarjeta.fondo1
|
||||||
|
ajustes-notificaciones
|
||||||
|
//
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="coffee">
|
<script lang="coffee">
|
||||||
|
import botonInicioSesion from "../components/boton-inicio-sesion.vue"
|
||||||
|
import ajustesNotificaciones from "../components/Usuario/ajustes-notificaciones.vue"
|
||||||
|
|
||||||
export default
|
export default
|
||||||
name: "Usuario"
|
name: "Usuario"
|
||||||
|
components:
|
||||||
|
"boton-inicio-sesion": botonInicioSesion
|
||||||
|
"ajustes-notificaciones": ajustesNotificaciones
|
||||||
|
#
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="sass">
|
<style scoped lang="sass">
|
||||||
@import "../assets/sass/variables"
|
@import "../assets/sass/variables"
|
||||||
|
|
||||||
.tituloC
|
.tituloC
|
||||||
padding: 50px
|
padding: 50px
|
||||||
|
|
||||||
.titulo
|
.titulo
|
||||||
font:
|
font:
|
||||||
family: "Product Sans", Muli, "Open Sans", sans-serif
|
family: "Product Sans", Muli, "Open Sans", sans-serif
|
||||||
size: 4rem
|
size: 4rem
|
||||||
weight: bold
|
weight: bold
|
||||||
|
|
||||||
.titulo__descr
|
.titulo__descr
|
||||||
opacity: 0.5
|
opacity: 0.5
|
||||||
font:
|
font:
|
||||||
family: Muli, "Open Sans", sans-serif
|
family: Muli, "Open Sans", sans-serif
|
||||||
size: x-large
|
size: x-large
|
||||||
|
|
||||||
.row
|
.row
|
||||||
margin: 0 40px
|
margin: 0 40px
|
||||||
::after
|
|
||||||
content: ""
|
|
||||||
display: table
|
|
||||||
clear: both
|
|
||||||
|
|
||||||
.usuario, .notificaciones
|
::after
|
||||||
float: left
|
content: ""
|
||||||
|
display: table
|
||||||
|
clear: both
|
||||||
|
|
||||||
.usuario
|
.usuario, .notificaciones
|
||||||
width: 40%
|
float: left
|
||||||
|
|
||||||
.usuario__titulo
|
.usuario
|
||||||
font:
|
width: 40%
|
||||||
family: Muli, "Open Sans", sans-serif
|
|
||||||
size: 2rem
|
|
||||||
|
|
||||||
.usuario__img
|
.usuario__titulo
|
||||||
width: 200px
|
font:
|
||||||
height: 200px
|
family: Muli, "Open Sans", sans-serif
|
||||||
|
size: 2rem
|
||||||
|
|
||||||
.notificaciones
|
.contImg
|
||||||
width: 60%
|
text-align: center
|
||||||
|
|
||||||
.usuario__cont, .notificaciones__cont
|
.usuario__img
|
||||||
@extend %bordeRedondo-std
|
width: 200px
|
||||||
padding: 20px
|
height: 200px
|
||||||
margin: 20px
|
|
||||||
|
|
||||||
//
|
.notificaciones
|
||||||
|
width: 60%
|
||||||
|
|
||||||
|
.usuario__cont, .notificaciones__cont
|
||||||
|
@extend %bordeRedondo-std
|
||||||
|
padding: 20px
|
||||||
|
margin: 20px
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
</style>
|
</style>
|
3
srv/.babelrc
Normal file
3
srv/.babelrc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"presets": ["@babel/preset-env"]
|
||||||
|
}
|
41
srv/Admin/Eps/cambiarMensaje.ts
Normal file
41
srv/Admin/Eps/cambiarMensaje.ts
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import {MysqlError} from "mysql";
|
||||||
|
|
||||||
|
interface Datos {
|
||||||
|
aviso: string,
|
||||||
|
sigEp: number,
|
||||||
|
anime_ID: number
|
||||||
|
}
|
||||||
|
|
||||||
|
import {con} from "../../index";
|
||||||
|
|
||||||
|
const cambiarMensaje = (req: any, res: any) => {
|
||||||
|
|
||||||
|
const YAML = require('yaml');
|
||||||
|
|
||||||
|
const datosStr = req.body.datos;
|
||||||
|
|
||||||
|
if (datosStr) {
|
||||||
|
|
||||||
|
const data: Datos = YAML.parse(datosStr);
|
||||||
|
|
||||||
|
const sql = `UPDATE links SET aviso=?, sigEp=? WHERE anime_ID=?`;
|
||||||
|
const datosSQL = [data.aviso, data.sigEp, data.anime_ID];
|
||||||
|
con.query(sql, datosSQL,(err: MysqlError) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
res.send(`exito: true`);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log(`Error al ejecutar query en /Admin/Eps/cambiarMensaje.ts:\n${err}\n${err.sql}`);
|
||||||
|
res.send(`exito: false\nerror: Error de consulta(0)..`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log(`Error. Los datos no existen en /Admin/Eps/cambiarMensaje.ts`);
|
||||||
|
res.send(`exito: false\nerror: Los datos no existen.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.cambiarMensaje = cambiarMensaje;
|
40
srv/Admin/Eps/crearLink.ts
Normal file
40
srv/Admin/Eps/crearLink.ts
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
interface formatoDataARecibir {
|
||||||
|
opcion_ID: number,
|
||||||
|
num_ep: number,
|
||||||
|
visitas: number,
|
||||||
|
link: string,
|
||||||
|
peso: string
|
||||||
|
}
|
||||||
|
|
||||||
|
import {con} from "../../index";
|
||||||
|
|
||||||
|
const crearLink = (req: any, res: any) => {
|
||||||
|
|
||||||
|
const YAML = require('yaml');
|
||||||
|
|
||||||
|
const parametros: formatoDataARecibir = YAML.parse(req.body.params);
|
||||||
|
|
||||||
|
|
||||||
|
if (parametros) {
|
||||||
|
|
||||||
|
const query = `INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (${parametros.opcion_ID},
|
||||||
|
${parametros.num_ep}, ${parametros.visitas}, ${con.escape(parametros.link)}, ${con.escape(parametros.peso)} )`;
|
||||||
|
con.query(query, (err: Error) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
res.send("error: false");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("Error al ejecutar query en /Admin/Eps/crearEp -> con.query (linea 20). Query y error:\n" + query + "\n" + parametros);
|
||||||
|
res.send("error: true");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("Error. 'parametros' no existe en /Admin/Eps/crearEp -> con.connect (linea 16):\n" + parametros);
|
||||||
|
res.send("error: true");
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.crearLink = crearLink;
|
87
srv/Admin/Eps/crearVariante.ts
Normal file
87
srv/Admin/Eps/crearVariante.ts
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
import {MysqlError} from "mysql";
|
||||||
|
|
||||||
|
interface Datos {
|
||||||
|
num_opcion: number,
|
||||||
|
formato: string,
|
||||||
|
resolucion: string,
|
||||||
|
servidor: string,
|
||||||
|
anime_ID: number,
|
||||||
|
color: string
|
||||||
|
}
|
||||||
|
|
||||||
|
import {con} from "../../index";
|
||||||
|
|
||||||
|
const crearVariante = (req: any, res: any) => {
|
||||||
|
|
||||||
|
const YAML = require('yaml');
|
||||||
|
const mysql = require('mysql');
|
||||||
|
|
||||||
|
const datos: string = req.body.datos;
|
||||||
|
|
||||||
|
if (datos) {
|
||||||
|
|
||||||
|
const data: Datos = YAML.parse(datos);
|
||||||
|
const E = mysql.escape;
|
||||||
|
|
||||||
|
const crearEntrada = (respuesta: [{links_ID: number}]) => {
|
||||||
|
const links_ID = respuesta[0].links_ID;
|
||||||
|
const query = `INSERT INTO links_opciones (links_ID, num_opcion, formato, res, servidor, color)
|
||||||
|
VALUES(${links_ID}, ${data.num_opcion}, ${E(data.formato)}, ${E(data.resolucion)}, ${E(data.servidor)}, ${E(data.color)})`;
|
||||||
|
con.query(query,(err: MysqlError) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
res.send(`exito: true`);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
|
||||||
|
res.send(`exito: false\nerror: Consulta fallida(3).`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
con.query(
|
||||||
|
`SELECT links_ID FROM links WHERE anime_ID=${data.anime_ID}`,
|
||||||
|
(err: MysqlError, respuesta: [{links_ID: number}]) => {
|
||||||
|
// Ya existe el link en la base de datos
|
||||||
|
if (!err && respuesta[0]) {
|
||||||
|
crearEntrada(respuesta);
|
||||||
|
}
|
||||||
|
// No existe el link en la base de datos
|
||||||
|
else if (!err && !respuesta[0]) {
|
||||||
|
|
||||||
|
con.query(`INSERT INTO links (anime_ID, aviso, sigEp) VALUES (${data.anime_ID}, 'Patience from zhou', 0)`, (err: MysqlError) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
con.query(
|
||||||
|
`SELECT links_ID FROM links WHERE anime_ID=${data.anime_ID}`,
|
||||||
|
(err: MysqlError, respuesta: [{links_ID: number}]) => {
|
||||||
|
if (!err) {
|
||||||
|
crearEntrada(respuesta);
|
||||||
|
} else {
|
||||||
|
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
|
||||||
|
res.send(`exito: false\nerror: Consulta fallida(2).`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
|
||||||
|
res.send(`exito: false\nerror: Consulta fallida(1).`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
|
||||||
|
res.send(`exito: false\nerror: Consulta fallida(0).`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log(`Error. Los datos no existen en /Admin/Eps/crearVariante.ts`);
|
||||||
|
res.send(`exito: false\nerror: Los datos no existen.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.crearVariante = crearVariante;
|
35
srv/Admin/Eps/estadisticas.ts
Normal file
35
srv/Admin/Eps/estadisticas.ts
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import {Connection, MysqlError} from "mysql";
|
||||||
|
import * as core from "express-serve-static-core";
|
||||||
|
|
||||||
|
import {con} from "../../index";
|
||||||
|
|
||||||
|
const YAML = require('yaml');
|
||||||
|
|
||||||
|
interface respuesta {
|
||||||
|
peso: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const estadisticas = (req: core.Request, res: core.Response) => {
|
||||||
|
|
||||||
|
con.query(`SELECT peso FROM eps`,(err: MysqlError, respuestas: respuesta[]) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
let totalMB = 0;
|
||||||
|
let cantidadEps = 0;
|
||||||
|
respuestas.forEach(data => {
|
||||||
|
totalMB += parseInt(data.peso);
|
||||||
|
cantidadEps++;
|
||||||
|
});
|
||||||
|
|
||||||
|
const respuesta: any = {
|
||||||
|
episodios: cantidadEps,
|
||||||
|
gigas: (totalMB/1024).toFixed(2)
|
||||||
|
};
|
||||||
|
|
||||||
|
res.send(YAML.stringify(respuesta));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.estadisticas = estadisticas;
|
39
srv/Admin/Eps/obtenerLinks.ts
Normal file
39
srv/Admin/Eps/obtenerLinks.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
interface epsRespuesta {
|
||||||
|
ep_ID: number,
|
||||||
|
opcion_ID: number,
|
||||||
|
num_ep: number,
|
||||||
|
visitas: number,
|
||||||
|
link: string,
|
||||||
|
peso: string
|
||||||
|
}
|
||||||
|
|
||||||
|
import {con} from "../../index";
|
||||||
|
|
||||||
|
const obtenerLinks = (req: any, res: any) => {
|
||||||
|
|
||||||
|
const YAML = require('yaml');
|
||||||
|
|
||||||
|
const opcion_ID = req.params.opcion_ID;
|
||||||
|
|
||||||
|
if (opcion_ID) {
|
||||||
|
|
||||||
|
const query = `SELECT * FROM eps WHERE opcion_ID=${opcion_ID}`;
|
||||||
|
con.query(query, (err: Error, response: epsRespuesta[]) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
res.send(YAML.stringify(response));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("Error al ejecutar query en /Admin/Eps/obtenerEps con.query (linea 21). Query:\n" + query + "\nError: \n" + err);
|
||||||
|
res.send("error: true");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("Error. opcion_ID no existe en /Admin/Eps/obtenerEps con.connect (linea 8)");
|
||||||
|
res.send("error: true");
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.obtenerLinks = obtenerLinks;
|
41
srv/Admin/Eps/obtenerVariantes.ts
Normal file
41
srv/Admin/Eps/obtenerVariantes.ts
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
interface respuestaLinks {
|
||||||
|
opcion_ID: number,
|
||||||
|
links_ID: number,
|
||||||
|
num_opcion: number,
|
||||||
|
formato: string,
|
||||||
|
res: string,
|
||||||
|
servidor: string,
|
||||||
|
color: string
|
||||||
|
}
|
||||||
|
|
||||||
|
import {con} from "../../index";
|
||||||
|
|
||||||
|
const obtenerVariantes = (req: any, res: any) => {
|
||||||
|
|
||||||
|
const YAML = require('yaml');
|
||||||
|
|
||||||
|
const anime_ID: string = req.params.anime_ID;
|
||||||
|
|
||||||
|
if (anime_ID) {
|
||||||
|
|
||||||
|
const query = `SELECT * FROM links_opciones WHERE links_ID=(SELECT links_ID FROM links WHERE anime_ID=${anime_ID})`;
|
||||||
|
|
||||||
|
con.query (query, (err: Error, response: respuestaLinks[]) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
res.send(YAML.stringify(response));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("Error al ejecutar query sql. La query era:\n" + query + "\n y el error es:\n" + err);
|
||||||
|
res.send("error: true");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log("Error. anime_ID no existe en Admin/Eps/obtenerVariantes con.connect:\n" + anime_ID);
|
||||||
|
res.send("error: true");
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.obtenerVariantes = obtenerVariantes;
|
@ -1,22 +1,21 @@
|
|||||||
import { con } from "../index"
|
import {con} from "../index"
|
||||||
import YAML from "yaml"
|
import YAML from "yaml"
|
||||||
|
|
||||||
export default (req, res) ->
|
export default (req, res) ->
|
||||||
|
if req.params.id?
|
||||||
|
idAnime = req.params.id
|
||||||
|
|
||||||
if req.params.id?
|
query = "SELECT * FROM animes WHERE anime_ID=?"
|
||||||
idAnime = req.params.id
|
|
||||||
|
|
||||||
query = "SELECT * FROM animes WHERE anime_ID=?"
|
con.query query, [idAnime], (err, respuesta) ->
|
||||||
|
res.send do ->
|
||||||
con.query query, [idAnime], (err, respuesta) ->
|
unless err
|
||||||
res.send do ->
|
YAML.stringify
|
||||||
unless err
|
exito: true
|
||||||
YAML.stringify
|
payload: respuesta[0]
|
||||||
exito: true
|
error: {}
|
||||||
payload: respuesta[0]
|
else
|
||||||
error: {}
|
"""
|
||||||
else
|
|
||||||
"""
|
|
||||||
exito: false
|
exito: false
|
||||||
payload: {}
|
payload: {}
|
||||||
error:
|
error:
|
||||||
@ -25,8 +24,8 @@ export default (req, res) ->
|
|||||||
adicional: "Query: #{query}\nError:#{err}"
|
adicional: "Query: #{query}\nError:#{err}"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
else
|
else
|
||||||
res.send """
|
res.send """
|
||||||
exito: false
|
exito: false
|
||||||
payload: {}
|
payload: {}
|
||||||
error:
|
error:
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
import { con } from "../index"
|
import {con} from "../index"
|
||||||
import YAML from "yaml"
|
import YAML from "yaml"
|
||||||
|
|
||||||
export default (req, res) ->
|
export default (req, res) ->
|
||||||
|
query = "SELECT * FROM animes ORDER BY anime_ID DESC "
|
||||||
query = "SELECT * FROM animes ORDER BY anime_ID DESC "
|
con.query query, (err, respuesta) ->
|
||||||
con.query query, (err, respuesta) ->
|
res.send do ->
|
||||||
res.send do ->
|
unless err
|
||||||
unless err
|
YAML.stringify
|
||||||
YAML.stringify
|
exito: true
|
||||||
exito: true
|
payload: respuesta
|
||||||
payload: respuesta
|
error: {}
|
||||||
error: {}
|
else
|
||||||
else
|
"""
|
||||||
"""
|
|
||||||
exito: false
|
exito: false
|
||||||
payload: {}
|
payload: {}
|
||||||
error:
|
error:
|
||||||
|
24
srv/GestorDeTareas/GestorDeTareas.ts
Normal file
24
srv/GestorDeTareas/GestorDeTareas.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
class GestorDeTareas {
|
||||||
|
tareas: boolean[] = [];
|
||||||
|
alCompletar: (() => void);
|
||||||
|
|
||||||
|
constructor(alCompletar: (() => void)) {
|
||||||
|
this.alCompletar = alCompletar;
|
||||||
|
}
|
||||||
|
|
||||||
|
agregarTarea() {
|
||||||
|
return (this.tareas.push(false) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
terminarTarea() {
|
||||||
|
this.tareas.pop();
|
||||||
|
this.verificarTareas();
|
||||||
|
}
|
||||||
|
|
||||||
|
verificarTareas() {
|
||||||
|
if (this.tareas.length === 0)
|
||||||
|
this.alCompletar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.GestorDeTareas = GestorDeTareas;
|
33
srv/Links/crearLinks.coffee
Normal file
33
srv/Links/crearLinks.coffee
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import {con} from "../index"
|
||||||
|
import YAML from "yaml"
|
||||||
|
|
||||||
|
export fun = (req, res) ->
|
||||||
|
|
||||||
|
params = req.body.params
|
||||||
|
if params?
|
||||||
|
|
||||||
|
params = YAML.parse params
|
||||||
|
sql = "INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (?, ?, ?, ?, ?)"
|
||||||
|
datos = [params.opcion_ID, params.num_ep, params.visitas, params.link, params.peso]
|
||||||
|
con.query sql, datos, (err) ->
|
||||||
|
unless err?
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: true
|
||||||
|
payload: {}
|
||||||
|
error: {}
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "Error al ejecutar consulta a la base de datos."
|
||||||
|
ruta: "/Links/crearLinks"
|
||||||
|
adicional: "sql: \n#{err.sql}\nerr:\n#{err}"
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "No se pasaron los params."
|
||||||
|
ruta: "/Links/crearLinks"
|
||||||
|
adicional: ""
|
38
srv/LinksAnimes/modificarLink.ts
Normal file
38
srv/LinksAnimes/modificarLink.ts
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import {con} from "../index";
|
||||||
|
|
||||||
|
const modificarLink = (req: any, res: any) => {
|
||||||
|
|
||||||
|
const ep_ID = req.body.ep_ID;
|
||||||
|
|
||||||
|
const sql1= `SELECT visitas FROM eps WHERE ep_ID=${ep_ID}`;
|
||||||
|
const sql = `UPDATE eps SET visitas = visitas + 1 WHERE ep_ID=${ep_ID}`;
|
||||||
|
con.query(
|
||||||
|
sql1,
|
||||||
|
(err: Error, respuesta: {visitas: number}[]) => {
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
const nuevoNumVisitas = respuesta[0].visitas + 1;
|
||||||
|
const sql2 = `UPDATE eps SET visitas=${nuevoNumVisitas} WHERE ep_ID=${ep_ID}`;
|
||||||
|
|
||||||
|
con.query(sql2, (err: Error) => {
|
||||||
|
if (!err) {
|
||||||
|
res.send("Exito");
|
||||||
|
} else {
|
||||||
|
res.send("Error");
|
||||||
|
console.log(`Error al actualizar el contador de clicks del ep ${ep_ID} en \
|
||||||
|
LinksAnimes/modificarLinks:\n${err}\nSQL:\n${sql2}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.log(`Error al actualizar el contador de clicks del ep ${ep_ID} en \
|
||||||
|
LinksAnimes/modificarLinks:\n${err}\nSQL:\n${sql1}`);
|
||||||
|
res.send("Error :c");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.modificarLinks = modificarLink;
|
115
srv/LinksAnimes/obtenerLinks.coffee
Normal file
115
srv/LinksAnimes/obtenerLinks.coffee
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
YAML = require("yaml")
|
||||||
|
con = require("../index").con
|
||||||
|
|
||||||
|
class GestorDeTareas
|
||||||
|
constructor: (@alCompletar) ->
|
||||||
|
@tareas = []
|
||||||
|
|
||||||
|
agregarTarea: -> @tareas.push(false) - 1
|
||||||
|
|
||||||
|
terminarTarea: ->
|
||||||
|
@tareas.pop()
|
||||||
|
@verificarTareas()
|
||||||
|
|
||||||
|
verificarTareas: ->
|
||||||
|
if @tareas.length is 0 then @alCompletar()
|
||||||
|
|
||||||
|
export obtenerLinks = (req, res) ->
|
||||||
|
animeID = req.body.animeID
|
||||||
|
|
||||||
|
if animeID?
|
||||||
|
retorno =
|
||||||
|
aviso: ""
|
||||||
|
sigEp: ""
|
||||||
|
opciones: {}
|
||||||
|
sql = "SELECT * FROM links WHERE anime_ID=#{animeID}"
|
||||||
|
con.query sql, (err, response) ->
|
||||||
|
if not err? and response?.length isnt 0
|
||||||
|
|
||||||
|
link = response[0]
|
||||||
|
retorno.aviso = link.aviso
|
||||||
|
retorno.sigEp = link.sigEp
|
||||||
|
|
||||||
|
gestorOpciones = new GestorDeTareas () ->
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: true
|
||||||
|
payload: retorno
|
||||||
|
error: {}
|
||||||
|
|
||||||
|
sql2 = "SELECT * FROM links_opciones WHERE links_ID=#{link.links_ID}"
|
||||||
|
|
||||||
|
con.query sql2, (err, response2) ->
|
||||||
|
if not err? and response2?.length isnt 0
|
||||||
|
|
||||||
|
response2.forEach (opcion, pos) ->
|
||||||
|
|
||||||
|
gestorOpciones.agregarTarea()
|
||||||
|
|
||||||
|
retorno.opciones[opcion.num_opcion] =
|
||||||
|
formato: opcion.formato
|
||||||
|
res: opcion.res
|
||||||
|
servidor: opcion.res
|
||||||
|
color: opcion.color
|
||||||
|
eps: {}
|
||||||
|
|
||||||
|
sql3 = "SELECT * FROM eps WHERE opcion_ID=#{opcion.opcion_ID}"
|
||||||
|
con.query sql3, (err, response3) ->
|
||||||
|
if not err? and response3?.length isnt 0
|
||||||
|
|
||||||
|
response3.forEach (ep) ->
|
||||||
|
retorno.opciones[opcion.num_opcion].eps[ep.num_ep] =
|
||||||
|
ep_ID: ep.ep_ID
|
||||||
|
visitar: ep.visitas
|
||||||
|
peso: ep.peso
|
||||||
|
link: ep.link
|
||||||
|
|
||||||
|
else if response3?.length isnt 0
|
||||||
|
console.log "Error al consultar eps en /LinksAnimes/obtenerLinks.\n err: #{err}\n sql: #{sql3}"
|
||||||
|
|
||||||
|
gestorOpciones.terminarTarea()
|
||||||
|
|
||||||
|
else if response2?.length is 0
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error: {
|
||||||
|
razon: "La consulta no dió ningún resultado."
|
||||||
|
ruta: "/LinksAnimes/obtenerLinks"
|
||||||
|
adicional: "(response2) SQL: #{sql2}\nanimeID: #{animeID}"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error: {
|
||||||
|
razon: "Error al ejecutar consulta."
|
||||||
|
ruta: "/LinksAnimes/obtenerLinks"
|
||||||
|
adicional: "(response2) sql: #{sql2}"
|
||||||
|
}
|
||||||
|
|
||||||
|
else if response.length is 0
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error: {
|
||||||
|
razon: "La consulta no dió ningún resultado."
|
||||||
|
ruta: "/LinksAnimes/obtenerLinks"
|
||||||
|
adicional: "SQL: #{sql}\nanimeID: #{animeID}"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error: {
|
||||||
|
razon: "Error al ejecutar consulta."
|
||||||
|
ruta: "/LinksAnimes/obtenerLinks"
|
||||||
|
adicional: "sql: #{sql}"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "No se envió un animeID"
|
||||||
|
ruta: "/LinksAnimes/obtenerLinks"
|
||||||
|
adicional: "valor: #{animeID}"
|
14
srv/Notificaciones/RegistrarSubcripcion.coffee
Normal file
14
srv/Notificaciones/RegistrarSubcripcion.coffee
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
con = require("../index").con
|
||||||
|
|
||||||
|
export fun = (req, res) ->
|
||||||
|
|
||||||
|
google_ID = req.body.google_ID
|
||||||
|
subscripcion = req.body.subscripcion
|
||||||
|
|
||||||
|
query = "INSERT INTO navegadores (google_ID, animesSuscritos, susbscripcion) VALUES (?, ?, ?); SELECT LAST_INSERT_ID()"
|
||||||
|
datos = [google_ID, subscripcion, "{}"]
|
||||||
|
con.query query, datos, (err, respuesta) ->
|
||||||
|
unless err?
|
||||||
|
res.status(201).json {exito: true, payload: idInsertado: respuesta[1][0]}
|
||||||
|
else
|
||||||
|
res.status(400).json {exito: false, razon: err}
|
32
srv/OP-ED/obtenerED.coffee
Normal file
32
srv/OP-ED/obtenerED.coffee
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import {con} from "../index"
|
||||||
|
import YAML from "yaml"
|
||||||
|
|
||||||
|
export fun = (req, res) ->
|
||||||
|
anime_ID = req.params.anime_ID
|
||||||
|
|
||||||
|
if anime_ID?
|
||||||
|
sql = "SELECT * FROM ed WHERE anime_ID=? ORDER BY num_ED ASC "
|
||||||
|
datos = [anime_ID]
|
||||||
|
con.query sql, datos, (err, respuesta) ->
|
||||||
|
unless err?
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: true
|
||||||
|
payload: respuesta
|
||||||
|
error: {}
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "Error al ejecutar consulta a la base de datos."
|
||||||
|
ruta: "/Op-ED/obtenerED"
|
||||||
|
adicional: "Query: \n#{err.query}\nError: \n#{err}"
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "No se envio ningun anime_ID. Actual: #{anime_ID}"
|
||||||
|
ruta: "/Op-ED/obtenerED"
|
||||||
|
adicional: {}
|
||||||
|
#
|
32
srv/OP-ED/obtenerOP.coffee
Normal file
32
srv/OP-ED/obtenerOP.coffee
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import {con} from "../index"
|
||||||
|
import YAML from "yaml"
|
||||||
|
|
||||||
|
export fun = (req, res) ->
|
||||||
|
anime_ID = req.params.anime_ID
|
||||||
|
|
||||||
|
if anime_ID?
|
||||||
|
sql = "SELECT * FROM op WHERE anime_ID=? ORDER BY num_OP ASC"
|
||||||
|
datos = [anime_ID]
|
||||||
|
con.query sql, datos, (err, respuesta) ->
|
||||||
|
unless err?
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: true
|
||||||
|
payload: respuesta
|
||||||
|
error: {}
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "Error al ejecutar consulta a la base de datos."
|
||||||
|
ruta: "/Op-ED/obtenerOP"
|
||||||
|
adicional: "Query: \n#{err.query}\nError: \n#{err}"
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "No se envio ningun anime_ID. Actual: #{anime_ID}"
|
||||||
|
ruta: "/Op-ED/obtenerOP"
|
||||||
|
adicional: {}
|
||||||
|
#
|
84
srv/Usuarios/ValidarUsuario.coffee
Normal file
84
srv/Usuarios/ValidarUsuario.coffee
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
CLIENT_ID = "27783367584-1hms6h62heplhlvsaihl8vqs7ho3o2b7.apps.googleusercontent.com"
|
||||||
|
OAuth2Client = require("google-auth-library").OAuth2Client
|
||||||
|
cliente = new OAuth2Client CLIENT_ID
|
||||||
|
YAML = require("yaml")
|
||||||
|
con = require("../index").con
|
||||||
|
|
||||||
|
verificar = (token) ->
|
||||||
|
new Promise (resolve, reject) ->
|
||||||
|
cliente.verifyIdToken
|
||||||
|
idToken: token
|
||||||
|
audience: CLIENT_ID
|
||||||
|
.then (ticket) ->
|
||||||
|
ticket.getPayload()
|
||||||
|
.then (res) -> resolve res
|
||||||
|
.catch (err) -> reject err
|
||||||
|
|
||||||
|
export fun = (req, res) ->
|
||||||
|
idToken = req.body.idToken
|
||||||
|
if idToken?
|
||||||
|
verificar idToken
|
||||||
|
|
||||||
|
.then (payload) ->
|
||||||
|
sql1 = "SELECT * FROM usuarios WHERE google_ID=?"
|
||||||
|
datos = [payload.sub]
|
||||||
|
con.query sql1, datos, (err, resultadoQ) ->
|
||||||
|
unless err?
|
||||||
|
if resultadoQ[0]?
|
||||||
|
usuario = resultadoQ[0]
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: true
|
||||||
|
payload:
|
||||||
|
user_ID: usuario.user_ID
|
||||||
|
nombre: usuario.nombre
|
||||||
|
email: usuario.email
|
||||||
|
fotoPerfil: usuario.fotoPerfil
|
||||||
|
googleID: usuario.google_ID
|
||||||
|
error: {}
|
||||||
|
else
|
||||||
|
sql = "INSERT INTO usuarios (google_ID, email, fotoPerfil, nombre) VALUES (?, ?, ?, ?)"
|
||||||
|
datos2 = [payload.sub, payload.email, payload.picture, payload.name]
|
||||||
|
con.query sql, datos2, (err) ->
|
||||||
|
unless err?
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: true
|
||||||
|
payload:
|
||||||
|
nombre: payload.nombre
|
||||||
|
email: payload.email
|
||||||
|
fotoPerfil: payload.picture
|
||||||
|
googleID: payload.sub
|
||||||
|
error: {}
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "Error al ejecutar consulta a la base de datos.\n#{err}"
|
||||||
|
ruta: "/Usuarios/ValidarUsuario"
|
||||||
|
adicional: "query: #{err.sql}\ntoken Verificado: #{JSON.stringify payload}"
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "Error al ejecutar consulta a la base de datos.\n#{err}"
|
||||||
|
ruta: "/Usuarios/ValidarUsuario"
|
||||||
|
adicional: "query: #{err.sql}"
|
||||||
|
.catch (err) ->
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: err
|
||||||
|
ruta: "/Usuarios/ValidarUsuario"
|
||||||
|
adicional: ""
|
||||||
|
|
||||||
|
else
|
||||||
|
res.send YAML.stringify
|
||||||
|
exito: false
|
||||||
|
payload: {}
|
||||||
|
error:
|
||||||
|
razon: "No se envió el token: #{idToken}"
|
||||||
|
ruta: "/Usuarios/ValidarUsuario"
|
||||||
|
adicional: ""
|
||||||
|
#
|
81
srv/index.js
81
srv/index.js
@ -1,27 +1,70 @@
|
|||||||
import express from 'express';
|
"use strict";
|
||||||
import mysql from "mysql";
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var mysql = require("mysql");
|
||||||
import obtenerAnimes from "./Anime/obtenerAnime"
|
var obtenerAnime_1 = require("./Anime/obtenerAnime");
|
||||||
import obtenerTodosAnimes from "./Anime/obtenerTodosAnimes"
|
var obtenerTodosAnimes_1 = require("./Anime/obtenerTodosAnimes");
|
||||||
|
var webPush = require("web-push");
|
||||||
export const con = mysql.createConnection({
|
exports.con = mysql.createConnection({
|
||||||
host: "127.0.0.1",
|
host: "127.0.0.1",
|
||||||
user: "pseubntq_araozu",
|
user: "pseubntq_araozu",
|
||||||
password: "@Xsakah4b",
|
password: "@Xsakah4b",
|
||||||
database: "pseubntq_pseudosubs"
|
database: "pseubntq_pseudosubs",
|
||||||
|
multipleStatements: true
|
||||||
});
|
});
|
||||||
con.connect(err => {
|
exports.con.connect(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log("Error al conectarse a la base de datos :c\n" + err);
|
console.error("Error al conectarse a la base de datos :c\n" + err);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
console.log("Exito al conectarse a la base de datos :D");
|
console.log("Exito al conectarse a la base de datos :D");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
exports.fun = function (app) {
|
||||||
|
var bodyParser = require("body-parser");
|
||||||
export default (app, http) => {
|
app.use(bodyParser.urlencoded({ extended: true }));
|
||||||
|
// app.use(bodyParser.json);
|
||||||
app.get("/anime/:id", obtenerAnimes);
|
webPush.setVapidDetails("mailto:tbyuyfcjjll@gmail.com", "BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI", "6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA");
|
||||||
app.get("/anime", obtenerTodosAnimes);
|
app.post("/anime/:id", obtenerAnime_1.default);
|
||||||
|
app.post("/anime", obtenerTodosAnimes_1.default);
|
||||||
}
|
app.post("/u/validar", require("./Usuarios/ValidarUsuario").fun);
|
||||||
|
app.post("/n/registrar", require("./Notificaciones/RegistrarSubcripcion").fun);
|
||||||
|
app.post("/op/:anime_ID", require("./OP-ED/obtenerOP").fun);
|
||||||
|
app.post("/ed/:anime_ID", require("./OP-ED/obtenerED").fun);
|
||||||
|
app.post("/eps/links/", require("./Links/crearLinks").fun);
|
||||||
|
/**
|
||||||
|
* Rutas Legacy :c */
|
||||||
|
app.post('/links', require('./LinksAnimes/obtenerLinks').obtenerLinks);
|
||||||
|
app.put('/links', require('./LinksAnimes/modificarLink').modificarLinks);
|
||||||
|
app.post('/eps/variantes/:anime_ID', require('./Admin/Eps/obtenerVariantes').obtenerVariantes);
|
||||||
|
app.put('/eps/variantes/', require('./Admin/Eps/crearVariante').crearVariante);
|
||||||
|
app.put('/eps/mensaje/', require('./Admin/Eps/cambiarMensaje').cambiarMensaje);
|
||||||
|
app.post('/eps/links/:opcion_ID', require('./Admin/Eps/obtenerLinks').obtenerLinks);
|
||||||
|
app.post('/estadisticas', require('./Admin/Eps/estadisticas').estadisticas);
|
||||||
|
// Fin
|
||||||
|
/*
|
||||||
|
* Claves VAPID
|
||||||
|
* Publica: BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI
|
||||||
|
* Privada: 6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA
|
||||||
|
* */
|
||||||
|
app.get("/n/test", function (req, res) {
|
||||||
|
console.log("Deberia enviar push...");
|
||||||
|
var payload = JSON.stringify({
|
||||||
|
title: "Push de ejemplo :3"
|
||||||
|
});
|
||||||
|
var subscripcion = { "endpoint": "https://fcm.googleapis.com/fcm/send/e-n6_jndfTw:APA91bGQrFOYgICLRm-diDHwJnI4909TiQB_FqnffBd6PnyyoiB2rDqehn41KxXMyw5Upa0IqqDnlr58-n3B9w6WCN6xY-sluDk8fpya928S_NPgJyAvbhFERN3Gqqy36s4J4OVDz6qL", "expirationTime": null, "keys": { "p256dh": "BGNpJIqpEkJPjVZcccV42TdXQi-G3nt6gVWXIMkRs69fWyQeLN7K-sEBs7ffyCiosJm4ApwY9_ol2Q57Zv5fg08", "auth": "DzzSWijI-WfBPWrI6eGcuw" } };
|
||||||
|
webPush.sendNotification(subscripcion, payload)
|
||||||
|
.then(function (response) {
|
||||||
|
console.log(JSON.stringify(response));
|
||||||
|
res.status(200);
|
||||||
|
res.send("Exito :D");
|
||||||
|
})
|
||||||
|
.catch(function (err) {
|
||||||
|
console.log(JSON.stringify(err));
|
||||||
|
res.status(400);
|
||||||
|
res.send("Error al enviar push :c\n" + err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.default = (function (app, http) {
|
||||||
|
exports.fun(app);
|
||||||
|
});
|
||||||
|
94
srv/index.ts
Normal file
94
srv/index.ts
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
const mysql = require("mysql");
|
||||||
|
|
||||||
|
import obtenerAnimes from "./Anime/obtenerAnime"
|
||||||
|
import obtenerTodosAnimes from "./Anime/obtenerTodosAnimes"
|
||||||
|
|
||||||
|
const webPush = require("web-push");
|
||||||
|
|
||||||
|
export const con = mysql.createConnection({
|
||||||
|
host: "127.0.0.1",
|
||||||
|
user: "pseubntq_araozu",
|
||||||
|
password: "@Xsakah4b",
|
||||||
|
database: "pseubntq_pseudosubs",
|
||||||
|
multipleStatements: true
|
||||||
|
});
|
||||||
|
con.connect(err => {
|
||||||
|
if (err) {
|
||||||
|
console.error("Error al conectarse a la base de datos :c\n" + err);
|
||||||
|
} else {
|
||||||
|
console.log("Exito al conectarse a la base de datos :D");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export const fun = app => {
|
||||||
|
const bodyParser = require("body-parser");
|
||||||
|
app.use(bodyParser.urlencoded({ extended: true }));
|
||||||
|
// app.use(bodyParser.json);
|
||||||
|
|
||||||
|
webPush.setVapidDetails(
|
||||||
|
"mailto:tbyuyfcjjll@gmail.com",
|
||||||
|
"BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI",
|
||||||
|
"6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA"
|
||||||
|
);
|
||||||
|
|
||||||
|
app.post("/anime/:id", obtenerAnimes);
|
||||||
|
app.post("/anime", obtenerTodosAnimes);
|
||||||
|
|
||||||
|
app.post("/u/validar", require("./Usuarios/ValidarUsuario").fun);
|
||||||
|
|
||||||
|
app.post("/n/registrar", require("./Notificaciones/RegistrarSubcripcion").fun);
|
||||||
|
|
||||||
|
app.post("/op/:anime_ID", require("./OP-ED/obtenerOP").fun);
|
||||||
|
app.post("/ed/:anime_ID", require("./OP-ED/obtenerED").fun);
|
||||||
|
|
||||||
|
app.post("/eps/links/", require("./Links/crearLinks").fun);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rutas Legacy :c */
|
||||||
|
|
||||||
|
app.post('/links', require('./LinksAnimes/obtenerLinks').obtenerLinks);
|
||||||
|
app.put('/links', require('./LinksAnimes/modificarLink').modificarLinks);
|
||||||
|
|
||||||
|
app.post('/eps/variantes/:anime_ID', require('./Admin/Eps/obtenerVariantes').obtenerVariantes);
|
||||||
|
app.put('/eps/variantes/', require('./Admin/Eps/crearVariante').crearVariante);
|
||||||
|
app.put('/eps/mensaje/', require('./Admin/Eps/cambiarMensaje').cambiarMensaje);
|
||||||
|
app.post('/eps/links/:opcion_ID', require('./Admin/Eps/obtenerLinks').obtenerLinks);
|
||||||
|
|
||||||
|
app.post('/estadisticas', require('./Admin/Eps/estadisticas').estadisticas);
|
||||||
|
|
||||||
|
// Fin
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Claves VAPID
|
||||||
|
* Publica: BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI
|
||||||
|
* Privada: 6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA
|
||||||
|
* */
|
||||||
|
|
||||||
|
app.get("/n/test", (req, res) => {
|
||||||
|
|
||||||
|
console.log("Deberia enviar push...");
|
||||||
|
|
||||||
|
const payload = JSON.stringify({
|
||||||
|
title: "Push de ejemplo :3"
|
||||||
|
});
|
||||||
|
|
||||||
|
const subscripcion = {"endpoint":"https://fcm.googleapis.com/fcm/send/e-n6_jndfTw:APA91bGQrFOYgICLRm-diDHwJnI4909TiQB_FqnffBd6PnyyoiB2rDqehn41KxXMyw5Upa0IqqDnlr58-n3B9w6WCN6xY-sluDk8fpya928S_NPgJyAvbhFERN3Gqqy36s4J4OVDz6qL","expirationTime":null,"keys":{"p256dh":"BGNpJIqpEkJPjVZcccV42TdXQi-G3nt6gVWXIMkRs69fWyQeLN7K-sEBs7ffyCiosJm4ApwY9_ol2Q57Zv5fg08","auth":"DzzSWijI-WfBPWrI6eGcuw"}};
|
||||||
|
|
||||||
|
webPush.sendNotification(subscripcion, payload)
|
||||||
|
.then(response => {
|
||||||
|
console.log(JSON.stringify(response));
|
||||||
|
res.status(200);
|
||||||
|
res.send("Exito :D");
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log(JSON.stringify(err));
|
||||||
|
res.status(400);
|
||||||
|
res.send(`Error al enviar push :c\n${err}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export default (app, http) => {
|
||||||
|
fun(app);
|
||||||
|
}
|
43
srv/tsconfig.json
Normal file
43
srv/tsconfig.json
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"module": "commonjs",
|
||||||
|
"strict": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"importHelpers": true,
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"sourceMap": false,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"removeComments": true,
|
||||||
|
"types": [
|
||||||
|
"webpack-env"
|
||||||
|
],
|
||||||
|
"paths": {
|
||||||
|
"@/*": [
|
||||||
|
"src/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"scripthost"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts",
|
||||||
|
"src/**/*.tsx",
|
||||||
|
"src/**/*.vue",
|
||||||
|
"tests/**/*.ts",
|
||||||
|
"tests/**/*.tsx"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"dist",
|
||||||
|
"build",
|
||||||
|
"node.d.ts"
|
||||||
|
]
|
||||||
|
}
|
@ -1,24 +1,30 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
configureWebpack: {
|
configureWebpack: {
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{ test: /\.coffee$/, loader: "coffee-loader" }
|
{test: /\.coffee$/, loader: "coffee-loader"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
pluginOptions: {
|
pluginOptions: {
|
||||||
express: {
|
express: {
|
||||||
shouldServeApp: true,
|
shouldServeApp: true,
|
||||||
serverDir: './srv'
|
serverDir: './srv'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
baseUrl: undefined,
|
baseUrl: undefined,
|
||||||
outputDir: undefined,
|
outputDir: undefined,
|
||||||
assetsDir: undefined,
|
assetsDir: undefined,
|
||||||
runtimeCompiler: undefined,
|
runtimeCompiler: undefined,
|
||||||
productionSourceMap: false,
|
productionSourceMap: false,
|
||||||
parallel: undefined,
|
parallel: undefined,
|
||||||
css: undefined
|
css: undefined,
|
||||||
|
|
||||||
|
pwa: {
|
||||||
|
workboxOptions: {
|
||||||
|
skipWaiting: true
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
439
yarn.lock
439
yarn.lock
@ -669,6 +669,14 @@
|
|||||||
lodash "^4.17.11"
|
lodash "^4.17.11"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
|
"@icetee/ftp@^0.3.15":
|
||||||
|
version "0.3.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/@icetee/ftp/-/ftp-0.3.15.tgz#d32efd91ab7585f0a3b6cbed9ceffe2763b04ec6"
|
||||||
|
integrity sha512-RxSa9VjcDWgWCYsaLdZItdCnJj7p4LxggaEk+Y3MP0dHKoxez8ioG07DVekVbZZqccsrL+oPB/N9AzVPxj4blg==
|
||||||
|
dependencies:
|
||||||
|
readable-stream "1.1.x"
|
||||||
|
xregexp "2.0.0"
|
||||||
|
|
||||||
"@intervolga/optimize-cssnano-plugin@^1.0.5":
|
"@intervolga/optimize-cssnano-plugin@^1.0.5":
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8"
|
resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8"
|
||||||
@ -712,11 +720,43 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/babel-types" "*"
|
"@types/babel-types" "*"
|
||||||
|
|
||||||
|
"@types/body-parser@*":
|
||||||
|
version "1.17.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c"
|
||||||
|
integrity sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==
|
||||||
|
dependencies:
|
||||||
|
"@types/connect" "*"
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@types/connect@*":
|
||||||
|
version "3.4.32"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28"
|
||||||
|
integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/events@*":
|
"@types/events@*":
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
|
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
|
||||||
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
|
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
|
||||||
|
|
||||||
|
"@types/express-serve-static-core@*":
|
||||||
|
version "4.16.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.4.tgz#56bb8be4559401d68af4a3624ae9dd3166103e60"
|
||||||
|
integrity sha512-x/8h6FHm14rPWnW2HP5likD/rsqJ3t/77OWx2PLxym0hXbeBWQmcPyHmwX+CtCQpjIfgrUdEoDFcLPwPZWiqzQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
"@types/range-parser" "*"
|
||||||
|
|
||||||
|
"@types/express@^4.16.1":
|
||||||
|
version "4.16.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.1.tgz#d756bd1a85c34d87eaf44c888bad27ba8a4b7cf0"
|
||||||
|
integrity sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==
|
||||||
|
dependencies:
|
||||||
|
"@types/body-parser" "*"
|
||||||
|
"@types/express-serve-static-core" "*"
|
||||||
|
"@types/serve-static" "*"
|
||||||
|
|
||||||
"@types/glob@^7.1.1":
|
"@types/glob@^7.1.1":
|
||||||
version "7.1.1"
|
version "7.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
|
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
|
||||||
@ -726,11 +766,23 @@
|
|||||||
"@types/minimatch" "*"
|
"@types/minimatch" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@types/mime@*":
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
|
||||||
|
integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==
|
||||||
|
|
||||||
"@types/minimatch@*":
|
"@types/minimatch@*":
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
||||||
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
||||||
|
|
||||||
|
"@types/mysql@^2.15.6":
|
||||||
|
version "2.15.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.6.tgz#8718a66e362a4cfde73fe731792bdf453ef3a541"
|
||||||
|
integrity sha512-PJBY2R3jGJwGrmFgGAJ+1nj4S/PLkF6nT+HvUygniq9ZcVht0mTH1TLAjjyfIXf9FfrELs8mbqOrWa/Tn89NCA==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "11.11.8"
|
version "11.11.8"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.8.tgz#ff5e4e7896549e5725cf88d711e8c003984b2413"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.8.tgz#ff5e4e7896549e5725cf88d711e8c003984b2413"
|
||||||
@ -741,6 +793,19 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
|
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
|
||||||
integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
|
integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
|
||||||
|
|
||||||
|
"@types/range-parser@*":
|
||||||
|
version "1.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
|
||||||
|
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
|
||||||
|
|
||||||
|
"@types/serve-static@*":
|
||||||
|
version "1.13.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48"
|
||||||
|
integrity sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==
|
||||||
|
dependencies:
|
||||||
|
"@types/express-serve-static-core" "*"
|
||||||
|
"@types/mime" "*"
|
||||||
|
|
||||||
"@vue/babel-helper-vue-jsx-merge-props@^1.0.0-beta.3":
|
"@vue/babel-helper-vue-jsx-merge-props@^1.0.0-beta.3":
|
||||||
version "1.0.0-beta.3"
|
version "1.0.0-beta.3"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0-beta.3.tgz#e4c2e7125b3e0d2a9d493e457850b2abb0fd3cad"
|
resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0-beta.3.tgz#e4c2e7125b3e0d2a9d493e457850b2abb0fd3cad"
|
||||||
@ -1107,6 +1172,13 @@ abbrev@1:
|
|||||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||||
|
|
||||||
|
abort-controller@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
|
||||||
|
integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
|
||||||
|
dependencies:
|
||||||
|
event-target-shim "^5.0.0"
|
||||||
|
|
||||||
accepts@~1.3.4, accepts@~1.3.5:
|
accepts@~1.3.4, accepts@~1.3.5:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
|
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
|
||||||
@ -1159,6 +1231,13 @@ address@^1.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
|
resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
|
||||||
integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==
|
integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==
|
||||||
|
|
||||||
|
agent-base@^4.1.0:
|
||||||
|
version "4.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
|
||||||
|
integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
|
||||||
|
dependencies:
|
||||||
|
es6-promisify "^5.0.0"
|
||||||
|
|
||||||
ajv-errors@^1.0.0:
|
ajv-errors@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
|
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
|
||||||
@ -1356,6 +1435,15 @@ asn1.js@^4.0.0:
|
|||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
minimalistic-assert "^1.0.0"
|
minimalistic-assert "^1.0.0"
|
||||||
|
|
||||||
|
asn1.js@^5.0.0:
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.0.1.tgz#7668b56416953f0ce3421adbb3893ace59c96f59"
|
||||||
|
integrity sha512-aO8EaEgbgqq77IEw+1jfx5c9zTbzvkfuRBuZsSsPnTHMkmd5AI4J6OtITLZFa381jReeaQL67J0GBTUu0+ZTVw==
|
||||||
|
dependencies:
|
||||||
|
bn.js "^4.0.0"
|
||||||
|
inherits "^2.0.1"
|
||||||
|
minimalistic-assert "^1.0.0"
|
||||||
|
|
||||||
asn1@~0.2.3:
|
asn1@~0.2.3:
|
||||||
version "0.2.4"
|
version "0.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
|
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
|
||||||
@ -1506,7 +1594,7 @@ balanced-match@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||||
|
|
||||||
base64-js@^1.0.2:
|
base64-js@^1.0.2, base64-js@^1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
|
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
|
||||||
integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
|
integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
|
||||||
@ -1556,10 +1644,10 @@ big.js@^5.2.2:
|
|||||||
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
|
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
|
||||||
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
|
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
|
||||||
|
|
||||||
bignumber.js@4.1.0:
|
bignumber.js@7.2.1, bignumber.js@^7.0.0:
|
||||||
version "4.1.0"
|
version "7.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1"
|
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f"
|
||||||
integrity sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==
|
integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==
|
||||||
|
|
||||||
binary-extensions@^1.0.0:
|
binary-extensions@^1.0.0:
|
||||||
version "1.13.0"
|
version "1.13.0"
|
||||||
@ -1573,6 +1661,11 @@ block-stream@*:
|
|||||||
dependencies:
|
dependencies:
|
||||||
inherits "~2.0.0"
|
inherits "~2.0.0"
|
||||||
|
|
||||||
|
bluebird@2.x:
|
||||||
|
version "2.11.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
|
||||||
|
integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=
|
||||||
|
|
||||||
bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.3:
|
bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.3:
|
||||||
version "3.5.3"
|
version "3.5.3"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
|
||||||
@ -1599,6 +1692,22 @@ body-parser@1.18.3:
|
|||||||
raw-body "2.3.3"
|
raw-body "2.3.3"
|
||||||
type-is "~1.6.16"
|
type-is "~1.6.16"
|
||||||
|
|
||||||
|
body-parser@^1.19.0:
|
||||||
|
version "1.19.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
|
||||||
|
integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
|
||||||
|
dependencies:
|
||||||
|
bytes "3.1.0"
|
||||||
|
content-type "~1.0.4"
|
||||||
|
debug "2.6.9"
|
||||||
|
depd "~1.1.2"
|
||||||
|
http-errors "1.7.2"
|
||||||
|
iconv-lite "0.4.24"
|
||||||
|
on-finished "~2.3.0"
|
||||||
|
qs "6.7.0"
|
||||||
|
raw-body "2.4.0"
|
||||||
|
type-is "~1.6.17"
|
||||||
|
|
||||||
bonjour@^3.5.0:
|
bonjour@^3.5.0:
|
||||||
version "3.5.0"
|
version "3.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
|
resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
|
||||||
@ -1726,6 +1835,11 @@ browserslist@^4.0.0, browserslist@^4.4.2, browserslist@^4.5.1:
|
|||||||
electron-to-chromium "^1.3.116"
|
electron-to-chromium "^1.3.116"
|
||||||
node-releases "^1.1.11"
|
node-releases "^1.1.11"
|
||||||
|
|
||||||
|
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"
|
||||||
|
integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
|
||||||
|
|
||||||
buffer-from@^1.0.0, buffer-from@^1.1.0:
|
buffer-from@^1.0.0, buffer-from@^1.1.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
|
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
|
||||||
@ -1760,6 +1874,11 @@ bytes@3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||||
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
|
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
|
||||||
|
|
||||||
|
bytes@3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
|
||||||
|
integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
|
||||||
|
|
||||||
cacache@^10.0.4:
|
cacache@^10.0.4:
|
||||||
version "10.0.4"
|
version "10.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
|
resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
|
||||||
@ -2206,7 +2325,7 @@ compressible@~2.0.16:
|
|||||||
dependencies:
|
dependencies:
|
||||||
mime-db ">= 1.38.0 < 2"
|
mime-db ">= 1.38.0 < 2"
|
||||||
|
|
||||||
compression@^1.5.2:
|
compression@^1.5.2, compression@^1.7.4:
|
||||||
version "1.7.4"
|
version "1.7.4"
|
||||||
resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
|
resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
|
||||||
integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
|
integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
|
||||||
@ -2246,7 +2365,7 @@ configstore@^3.0.0:
|
|||||||
write-file-atomic "^2.0.0"
|
write-file-atomic "^2.0.0"
|
||||||
xdg-basedir "^3.0.0"
|
xdg-basedir "^3.0.0"
|
||||||
|
|
||||||
connect-history-api-fallback@^1.3.0, connect-history-api-fallback@^1.5.0:
|
connect-history-api-fallback@^1.3.0, connect-history-api-fallback@^1.5.0, connect-history-api-fallback@^1.6.0:
|
||||||
version "1.6.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
|
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
|
||||||
integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
|
integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
|
||||||
@ -2982,6 +3101,13 @@ ecc-jsbn@~0.1.1:
|
|||||||
jsbn "~0.1.0"
|
jsbn "~0.1.0"
|
||||||
safer-buffer "^2.1.0"
|
safer-buffer "^2.1.0"
|
||||||
|
|
||||||
|
ecdsa-sig-formatter@1.0.11:
|
||||||
|
version "1.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
|
||||||
|
integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
|
||||||
|
dependencies:
|
||||||
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
ee-first@1.1.1:
|
ee-first@1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
@ -3083,6 +3209,18 @@ es-to-primitive@^1.2.0:
|
|||||||
is-date-object "^1.0.1"
|
is-date-object "^1.0.1"
|
||||||
is-symbol "^1.0.2"
|
is-symbol "^1.0.2"
|
||||||
|
|
||||||
|
es6-promise@^4.0.3:
|
||||||
|
version "4.2.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f"
|
||||||
|
integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==
|
||||||
|
|
||||||
|
es6-promisify@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
|
||||||
|
integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
|
||||||
|
dependencies:
|
||||||
|
es6-promise "^4.0.3"
|
||||||
|
|
||||||
escape-html@~1.0.3:
|
escape-html@~1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||||
@ -3138,6 +3276,11 @@ event-pubsub@4.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e"
|
resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e"
|
||||||
integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
|
integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
|
||||||
|
|
||||||
|
event-target-shim@^5.0.0:
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
|
||||||
|
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
|
||||||
|
|
||||||
eventemitter3@^3.0.0:
|
eventemitter3@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
|
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
|
||||||
@ -3220,7 +3363,7 @@ express-list-endpoints@^3.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/express-list-endpoints/-/express-list-endpoints-3.0.1.tgz#d304fe9457ad14b8cf8692759398e3eea21abcb2"
|
resolved "https://registry.yarnpkg.com/express-list-endpoints/-/express-list-endpoints-3.0.1.tgz#d304fe9457ad14b8cf8692759398e3eea21abcb2"
|
||||||
integrity sha512-Ul3OY7r7Lc84R4z/xI5Jx6wbMzxg61SQh4BhVNDIPPtim6vHPjrKY+QhYYM8FdOswjHZstGK7J0I6HYf8FKtVA==
|
integrity sha512-Ul3OY7r7Lc84R4z/xI5Jx6wbMzxg61SQh4BhVNDIPPtim6vHPjrKY+QhYYM8FdOswjHZstGK7J0I6HYf8FKtVA==
|
||||||
|
|
||||||
express@^4.16.2, express@^4.16.3:
|
express@^4.16.2, express@^4.16.3, express@^4.16.4:
|
||||||
version "4.16.4"
|
version "4.16.4"
|
||||||
resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
|
resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
|
||||||
integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
|
integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
|
||||||
@ -3271,7 +3414,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
|
|||||||
assign-symbols "^1.0.0"
|
assign-symbols "^1.0.0"
|
||||||
is-extendable "^1.0.1"
|
is-extendable "^1.0.1"
|
||||||
|
|
||||||
extend@~3.0.2:
|
extend@^3.0.2, extend@~3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
||||||
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
||||||
@ -3322,6 +3465,11 @@ fast-json-stable-stringify@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||||
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
||||||
|
|
||||||
|
fast-text-encoding@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz#3e5ce8293409cfaa7177a71b9ca84e1b1e6f25ef"
|
||||||
|
integrity sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==
|
||||||
|
|
||||||
fastparse@^1.1.1:
|
fastparse@^1.1.1:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
|
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
|
||||||
@ -3551,6 +3699,17 @@ fstream@^1.0.0, fstream@^1.0.2:
|
|||||||
mkdirp ">=0.5 0"
|
mkdirp ">=0.5 0"
|
||||||
rimraf "2"
|
rimraf "2"
|
||||||
|
|
||||||
|
ftp-deploy@^2.3.3:
|
||||||
|
version "2.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ftp-deploy/-/ftp-deploy-2.3.3.tgz#ea1c3be19533bae49fd27d3983b8d7b7e2a4e812"
|
||||||
|
integrity sha512-JUpl90GX33q0QGfr8183EKhG00B+XI7HpdGrUPoV4izIxFUo7tQWeqmC7UyQZ3SrTSeO/+v47A8IlgolhSjSEQ==
|
||||||
|
dependencies:
|
||||||
|
bluebird "^3.5.1"
|
||||||
|
minimatch "3.0.4"
|
||||||
|
promise-ftp "^1.3.5"
|
||||||
|
read "^1.0.7"
|
||||||
|
upath "^1.0.5"
|
||||||
|
|
||||||
function-bind@^1.0.2, function-bind@^1.1.1:
|
function-bind@^1.0.2, function-bind@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
@ -3570,6 +3729,16 @@ gauge@~2.7.3:
|
|||||||
strip-ansi "^3.0.1"
|
strip-ansi "^3.0.1"
|
||||||
wide-align "^1.1.0"
|
wide-align "^1.1.0"
|
||||||
|
|
||||||
|
gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1:
|
||||||
|
version "1.8.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-1.8.4.tgz#e08c34fe93c0a9b67a52b7b9e7a64e6435f9a339"
|
||||||
|
integrity sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw==
|
||||||
|
dependencies:
|
||||||
|
abort-controller "^3.0.0"
|
||||||
|
extend "^3.0.2"
|
||||||
|
https-proxy-agent "^2.2.1"
|
||||||
|
node-fetch "^2.3.0"
|
||||||
|
|
||||||
gaze@^1.0.0:
|
gaze@^1.0.0:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
|
resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
|
||||||
@ -3577,6 +3746,14 @@ gaze@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
globule "^1.0.0"
|
globule "^1.0.0"
|
||||||
|
|
||||||
|
gcp-metadata@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-1.0.0.tgz#5212440229fa099fc2f7c2a5cdcb95575e9b2ca6"
|
||||||
|
integrity sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==
|
||||||
|
dependencies:
|
||||||
|
gaxios "^1.0.2"
|
||||||
|
json-bigint "^0.3.0"
|
||||||
|
|
||||||
get-caller-file@^1.0.1:
|
get-caller-file@^1.0.1:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
||||||
@ -3699,6 +3876,29 @@ globule@^1.0.0:
|
|||||||
lodash "~4.17.10"
|
lodash "~4.17.10"
|
||||||
minimatch "~3.0.2"
|
minimatch "~3.0.2"
|
||||||
|
|
||||||
|
google-auth-library@^3.1.2:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-3.1.2.tgz#ff2f88cd5cd2118a57bd3d5ad3c093c8837fc350"
|
||||||
|
integrity sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==
|
||||||
|
dependencies:
|
||||||
|
base64-js "^1.3.0"
|
||||||
|
fast-text-encoding "^1.0.0"
|
||||||
|
gaxios "^1.2.1"
|
||||||
|
gcp-metadata "^1.0.0"
|
||||||
|
gtoken "^2.3.2"
|
||||||
|
https-proxy-agent "^2.2.1"
|
||||||
|
jws "^3.1.5"
|
||||||
|
lru-cache "^5.0.0"
|
||||||
|
semver "^5.5.0"
|
||||||
|
|
||||||
|
google-p12-pem@^1.0.0:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-1.0.4.tgz#b77fb833a2eb9f7f3c689e2e54f095276f777605"
|
||||||
|
integrity sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA==
|
||||||
|
dependencies:
|
||||||
|
node-forge "^0.8.0"
|
||||||
|
pify "^4.0.0"
|
||||||
|
|
||||||
got@^6.7.1:
|
got@^6.7.1:
|
||||||
version "6.7.1"
|
version "6.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
|
resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
|
||||||
@ -3721,6 +3921,17 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
|
|||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
||||||
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
|
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
|
||||||
|
|
||||||
|
gtoken@^2.3.2:
|
||||||
|
version "2.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-2.3.3.tgz#8a7fe155c5ce0c4b71c886cfb282a9060d94a641"
|
||||||
|
integrity sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==
|
||||||
|
dependencies:
|
||||||
|
gaxios "^1.0.4"
|
||||||
|
google-p12-pem "^1.0.0"
|
||||||
|
jws "^3.1.5"
|
||||||
|
mime "^2.2.0"
|
||||||
|
pify "^4.0.0"
|
||||||
|
|
||||||
gzip-size@^5.0.0:
|
gzip-size@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80"
|
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80"
|
||||||
@ -3955,6 +4166,17 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
|
|||||||
setprototypeof "1.1.0"
|
setprototypeof "1.1.0"
|
||||||
statuses ">= 1.4.0 < 2"
|
statuses ">= 1.4.0 < 2"
|
||||||
|
|
||||||
|
http-errors@1.7.2:
|
||||||
|
version "1.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
|
||||||
|
integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
|
||||||
|
dependencies:
|
||||||
|
depd "~1.1.2"
|
||||||
|
inherits "2.0.3"
|
||||||
|
setprototypeof "1.1.1"
|
||||||
|
statuses ">= 1.5.0 < 2"
|
||||||
|
toidentifier "1.0.0"
|
||||||
|
|
||||||
http-parser-js@>=0.4.0:
|
http-parser-js@>=0.4.0:
|
||||||
version "0.5.0"
|
version "0.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8"
|
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8"
|
||||||
@ -3988,11 +4210,26 @@ http-signature@~1.2.0:
|
|||||||
jsprim "^1.2.2"
|
jsprim "^1.2.2"
|
||||||
sshpk "^1.7.0"
|
sshpk "^1.7.0"
|
||||||
|
|
||||||
|
http_ece@1.0.5:
|
||||||
|
version "1.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/http_ece/-/http_ece-1.0.5.tgz#b60660faaf14215102d1493ea720dcd92b53372f"
|
||||||
|
integrity sha1-tgZg+q8UIVEC0Uk+pyDc2StTNy8=
|
||||||
|
dependencies:
|
||||||
|
urlsafe-base64 "~1.0.0"
|
||||||
|
|
||||||
https-browserify@^1.0.0:
|
https-browserify@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
|
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
|
||||||
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
|
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
|
||||||
|
|
||||||
|
https-proxy-agent@^2.2.1:
|
||||||
|
version "2.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0"
|
||||||
|
integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==
|
||||||
|
dependencies:
|
||||||
|
agent-base "^4.1.0"
|
||||||
|
debug "^3.1.0"
|
||||||
|
|
||||||
iconv-lite@0.4.23:
|
iconv-lite@0.4.23:
|
||||||
version "0.4.23"
|
version "0.4.23"
|
||||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
|
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
|
||||||
@ -4000,7 +4237,7 @@ iconv-lite@0.4.23:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safer-buffer ">= 2.1.2 < 3"
|
safer-buffer ">= 2.1.2 < 3"
|
||||||
|
|
||||||
iconv-lite@^0.4.4:
|
iconv-lite@0.4.24, iconv-lite@^0.4.4:
|
||||||
version "0.4.24"
|
version "0.4.24"
|
||||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||||
@ -4468,6 +4705,11 @@ is-wsl@^1.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
||||||
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
|
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
|
||||||
|
|
||||||
|
isarray@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||||
|
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
|
||||||
|
|
||||||
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||||
@ -4585,6 +4827,13 @@ jsesc@~0.5.0:
|
|||||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
||||||
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
|
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
|
||||||
|
|
||||||
|
json-bigint@^0.3.0:
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.0.tgz#0ccd912c4b8270d05f056fbd13814b53d3825b1e"
|
||||||
|
integrity sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=
|
||||||
|
dependencies:
|
||||||
|
bignumber.js "^7.0.0"
|
||||||
|
|
||||||
json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
|
json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
|
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
|
||||||
@ -4666,6 +4915,23 @@ jstransformer@1.0.0:
|
|||||||
is-promise "^2.0.0"
|
is-promise "^2.0.0"
|
||||||
promise "^7.0.1"
|
promise "^7.0.1"
|
||||||
|
|
||||||
|
jwa@^1.4.1:
|
||||||
|
version "1.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
|
||||||
|
integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
|
||||||
|
dependencies:
|
||||||
|
buffer-equal-constant-time "1.0.1"
|
||||||
|
ecdsa-sig-formatter "1.0.11"
|
||||||
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
|
jws@^3.1.3, jws@^3.1.5:
|
||||||
|
version "3.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
|
||||||
|
integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
|
||||||
|
dependencies:
|
||||||
|
jwa "^1.4.1"
|
||||||
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
killable@^1.0.0:
|
killable@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
|
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
|
||||||
@ -4912,7 +5178,7 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2:
|
|||||||
pseudomap "^1.0.2"
|
pseudomap "^1.0.2"
|
||||||
yallist "^2.1.2"
|
yallist "^2.1.2"
|
||||||
|
|
||||||
lru-cache@^5.1.1:
|
lru-cache@^5.0.0, lru-cache@^5.1.1:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||||
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
|
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
|
||||||
@ -5064,6 +5330,11 @@ miller-rabin@^4.0.0:
|
|||||||
bn.js "^4.0.0"
|
bn.js "^4.0.0"
|
||||||
brorand "^1.0.1"
|
brorand "^1.0.1"
|
||||||
|
|
||||||
|
mime-db@1.40.0:
|
||||||
|
version "1.40.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
|
||||||
|
integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
|
||||||
|
|
||||||
"mime-db@>= 1.38.0 < 2", mime-db@~1.38.0:
|
"mime-db@>= 1.38.0 < 2", mime-db@~1.38.0:
|
||||||
version "1.38.0"
|
version "1.38.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad"
|
||||||
@ -5076,6 +5347,13 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19:
|
|||||||
dependencies:
|
dependencies:
|
||||||
mime-db "~1.38.0"
|
mime-db "~1.38.0"
|
||||||
|
|
||||||
|
mime-types@~2.1.24:
|
||||||
|
version "2.1.24"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
|
||||||
|
integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
|
||||||
|
dependencies:
|
||||||
|
mime-db "1.40.0"
|
||||||
|
|
||||||
mime@1.4.1:
|
mime@1.4.1:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
|
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
|
||||||
@ -5086,6 +5364,11 @@ mime@^2.0.3, mime@^2.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
|
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
|
||||||
integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
|
integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
|
||||||
|
|
||||||
|
mime@^2.2.0:
|
||||||
|
version "2.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78"
|
||||||
|
integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==
|
||||||
|
|
||||||
mimic-fn@^1.0.0:
|
mimic-fn@^1.0.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
|
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
|
||||||
@ -5115,7 +5398,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||||
|
|
||||||
minimatch@^3.0.4, minimatch@~3.0.2:
|
minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2:
|
||||||
version "3.0.4"
|
version "3.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||||
@ -5237,12 +5520,17 @@ multicast-dns@^6.0.1:
|
|||||||
dns-packet "^1.3.1"
|
dns-packet "^1.3.1"
|
||||||
thunky "^1.0.2"
|
thunky "^1.0.2"
|
||||||
|
|
||||||
mysql@^2.16.0:
|
mute-stream@~0.0.4:
|
||||||
version "2.16.0"
|
version "0.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.16.0.tgz#b23b22ab5de44fc2d5d32bd4f5af6653fc45e2ba"
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||||
integrity sha512-dPbN2LHonQp7D5ja5DJXNbCLe/HRdu+f3v61aguzNRQIrmZLOeRoymBYyeThrR6ug+FqzDL95Gc9maqZUJS+Gw==
|
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||||
|
|
||||||
|
mysql@^2.17.1:
|
||||||
|
version "2.17.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.17.1.tgz#62bba4a039a9b2f73638cd1652ce50fc6f682899"
|
||||||
|
integrity sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA==
|
||||||
dependencies:
|
dependencies:
|
||||||
bignumber.js "4.1.0"
|
bignumber.js "7.2.1"
|
||||||
readable-stream "2.3.6"
|
readable-stream "2.3.6"
|
||||||
safe-buffer "5.1.2"
|
safe-buffer "5.1.2"
|
||||||
sqlstring "2.3.1"
|
sqlstring "2.3.1"
|
||||||
@ -5300,11 +5588,21 @@ no-case@^2.2.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
lower-case "^1.1.1"
|
lower-case "^1.1.1"
|
||||||
|
|
||||||
|
node-fetch@^2.3.0:
|
||||||
|
version "2.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5"
|
||||||
|
integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==
|
||||||
|
|
||||||
node-forge@0.7.5:
|
node-forge@0.7.5:
|
||||||
version "0.7.5"
|
version "0.7.5"
|
||||||
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
|
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
|
||||||
integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==
|
integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==
|
||||||
|
|
||||||
|
node-forge@^0.8.0:
|
||||||
|
version "0.8.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.8.2.tgz#b4bcc59fb12ce77a8825fc6a783dfe3182499c5a"
|
||||||
|
integrity sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg==
|
||||||
|
|
||||||
node-gyp@^3.8.0:
|
node-gyp@^3.8.0:
|
||||||
version "3.8.0"
|
version "3.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
|
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
|
||||||
@ -5913,7 +6211,7 @@ pify@^3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
|
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
|
||||||
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
|
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
|
||||||
|
|
||||||
pify@^4.0.1:
|
pify@^4.0.0, pify@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
||||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||||
@ -6334,6 +6632,20 @@ process@^0.11.10:
|
|||||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||||
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
||||||
|
|
||||||
|
promise-ftp-common@^1.1.5:
|
||||||
|
version "1.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/promise-ftp-common/-/promise-ftp-common-1.1.5.tgz#b4f8082a74035647703506763edb14230d9865da"
|
||||||
|
integrity sha1-tPgIKnQDVkdwNQZ2PtsUIw2YZdo=
|
||||||
|
|
||||||
|
promise-ftp@^1.3.5:
|
||||||
|
version "1.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/promise-ftp/-/promise-ftp-1.3.5.tgz#ecfa4a5e5b779a6bfdd4dd3096957b58286f5104"
|
||||||
|
integrity sha512-v368jPSqzmjjKDIyggulC+dRFcpAOEX7aFdEWkFYQp8Ao3P2N4Y6XnFFdKgK7PtkylwvGQkZR/65HZuzmq0V7A==
|
||||||
|
dependencies:
|
||||||
|
"@icetee/ftp" "^0.3.15"
|
||||||
|
bluebird "2.x"
|
||||||
|
promise-ftp-common "^1.1.5"
|
||||||
|
|
||||||
promise-inflight@^1.0.1:
|
promise-inflight@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
||||||
@ -6548,6 +6860,11 @@ qs@6.5.2, qs@~6.5.2:
|
|||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||||
|
|
||||||
|
qs@6.7.0:
|
||||||
|
version "6.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
|
||||||
|
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
|
||||||
|
|
||||||
querystring-es3@^0.2.0:
|
querystring-es3@^0.2.0:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
|
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
|
||||||
@ -6593,6 +6910,16 @@ raw-body@2.3.3:
|
|||||||
iconv-lite "0.4.23"
|
iconv-lite "0.4.23"
|
||||||
unpipe "1.0.0"
|
unpipe "1.0.0"
|
||||||
|
|
||||||
|
raw-body@2.4.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
|
||||||
|
integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
|
||||||
|
dependencies:
|
||||||
|
bytes "3.1.0"
|
||||||
|
http-errors "1.7.2"
|
||||||
|
iconv-lite "0.4.24"
|
||||||
|
unpipe "1.0.0"
|
||||||
|
|
||||||
rc@^1.0.1, rc@^1.1.6, rc@^1.2.7:
|
rc@^1.0.1, rc@^1.1.6, rc@^1.2.7:
|
||||||
version "1.2.8"
|
version "1.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||||
@ -6629,6 +6956,13 @@ read-pkg@^4.0.1:
|
|||||||
parse-json "^4.0.0"
|
parse-json "^4.0.0"
|
||||||
pify "^3.0.0"
|
pify "^3.0.0"
|
||||||
|
|
||||||
|
read@^1.0.7:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
|
||||||
|
integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
|
||||||
|
dependencies:
|
||||||
|
mute-stream "~0.0.4"
|
||||||
|
|
||||||
"readable-stream@1 || 2", readable-stream@2.3.6, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
|
"readable-stream@1 || 2", readable-stream@2.3.6, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
|
||||||
version "2.3.6"
|
version "2.3.6"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
|
||||||
@ -6642,6 +6976,16 @@ read-pkg@^4.0.1:
|
|||||||
string_decoder "~1.1.1"
|
string_decoder "~1.1.1"
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
|
readable-stream@1.1.x:
|
||||||
|
version "1.1.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
|
||||||
|
integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
|
||||||
|
dependencies:
|
||||||
|
core-util-is "~1.0.0"
|
||||||
|
inherits "~2.0.1"
|
||||||
|
isarray "0.0.1"
|
||||||
|
string_decoder "~0.10.x"
|
||||||
|
|
||||||
readable-stream@^3.0.6, readable-stream@^3.1.1:
|
readable-stream@^3.0.6, readable-stream@^3.1.1:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.2.0.tgz#de17f229864c120a9f56945756e4f32c4045245d"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.2.0.tgz#de17f229864c120a9f56945756e4f32c4045245d"
|
||||||
@ -7131,6 +7475,11 @@ setprototypeof@1.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
|
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
|
||||||
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
|
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
|
||||||
|
|
||||||
|
setprototypeof@1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
|
||||||
|
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
|
||||||
|
|
||||||
sha.js@^2.4.0, sha.js@^2.4.8:
|
sha.js@^2.4.0, sha.js@^2.4.8:
|
||||||
version "2.4.11"
|
version "2.4.11"
|
||||||
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
|
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
|
||||||
@ -7401,7 +7750,7 @@ static-extend@^0.1.1:
|
|||||||
define-property "^0.2.5"
|
define-property "^0.2.5"
|
||||||
object-copy "^0.1.0"
|
object-copy "^0.1.0"
|
||||||
|
|
||||||
"statuses@>= 1.4.0 < 2":
|
"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2":
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
|
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
|
||||||
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
|
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
|
||||||
@ -7497,6 +7846,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "~5.1.0"
|
safe-buffer "~5.1.0"
|
||||||
|
|
||||||
|
string_decoder@~0.10.x:
|
||||||
|
version "0.10.31"
|
||||||
|
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
||||||
|
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
|
||||||
|
|
||||||
string_decoder@~1.1.1:
|
string_decoder@~1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
|
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
|
||||||
@ -7760,6 +8114,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
|
|||||||
regex-not "^1.0.2"
|
regex-not "^1.0.2"
|
||||||
safe-regex "^1.1.0"
|
safe-regex "^1.1.0"
|
||||||
|
|
||||||
|
toidentifier@1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||||
|
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
||||||
|
|
||||||
token-stream@0.0.1:
|
token-stream@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"
|
resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"
|
||||||
@ -7873,6 +8232,14 @@ type-is@~1.6.16:
|
|||||||
media-typer "0.3.0"
|
media-typer "0.3.0"
|
||||||
mime-types "~2.1.18"
|
mime-types "~2.1.18"
|
||||||
|
|
||||||
|
type-is@~1.6.17:
|
||||||
|
version "1.6.18"
|
||||||
|
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
|
||||||
|
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
|
||||||
|
dependencies:
|
||||||
|
media-typer "0.3.0"
|
||||||
|
mime-types "~2.1.24"
|
||||||
|
|
||||||
typedarray@^0.0.6:
|
typedarray@^0.0.6:
|
||||||
version "0.0.6"
|
version "0.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||||
@ -8000,7 +8367,7 @@ unzip-response@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
|
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
|
||||||
integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
|
integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
|
||||||
|
|
||||||
upath@^1.1.1:
|
upath@^1.0.5, upath@^1.1.1:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
|
resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
|
||||||
integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
|
integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
|
||||||
@ -8070,6 +8437,11 @@ url@^0.11.0:
|
|||||||
punycode "1.3.2"
|
punycode "1.3.2"
|
||||||
querystring "0.2.0"
|
querystring "0.2.0"
|
||||||
|
|
||||||
|
urlsafe-base64@^1.0.0, urlsafe-base64@~1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/urlsafe-base64/-/urlsafe-base64-1.0.0.tgz#23f89069a6c62f46cf3a1d3b00169cefb90be0c6"
|
||||||
|
integrity sha1-I/iQaabGL0bPOh07ABac77kL4MY=
|
||||||
|
|
||||||
use@^3.1.0:
|
use@^3.1.0:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
|
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
|
||||||
@ -8156,6 +8528,11 @@ void-elements@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
|
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
|
||||||
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
|
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
|
||||||
|
|
||||||
|
vue-analytics@^5.16.4:
|
||||||
|
version "5.16.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue-analytics/-/vue-analytics-5.16.4.tgz#7f9e197cbc64afac96884a05214b17efaf8e9d09"
|
||||||
|
integrity sha512-M67cUqpPeyk2rftrvlx2uU+BQ/C4E8SkF2Ct9LizOYUoTccZtCCJwhMJfQ3XL8xep6p3K8KYz58FzRWvx5zlPw==
|
||||||
|
|
||||||
vue-cli-plugin-express@^1.0.0:
|
vue-cli-plugin-express@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/vue-cli-plugin-express/-/vue-cli-plugin-express-1.0.0.tgz#6d016e979daca646c20039139d2e5bbbb984b7a9"
|
resolved "https://registry.yarnpkg.com/vue-cli-plugin-express/-/vue-cli-plugin-express-1.0.0.tgz#6d016e979daca646c20039139d2e5bbbb984b7a9"
|
||||||
@ -8176,6 +8553,11 @@ vue-disqus@^3.0.5:
|
|||||||
resolved "https://registry.yarnpkg.com/vue-disqus/-/vue-disqus-3.0.5.tgz#8d0dd5cabdba7c47f82d129d2907a64366842fa8"
|
resolved "https://registry.yarnpkg.com/vue-disqus/-/vue-disqus-3.0.5.tgz#8d0dd5cabdba7c47f82d129d2907a64366842fa8"
|
||||||
integrity sha512-T3Y68lXf5W2lYt6j4Y3kZ4opLPH0EAzqriy11MS4D4Q2+UN0tFuUXeYP1MxfvdyaCEboXSM6CUswxsULuNV70Q==
|
integrity sha512-T3Y68lXf5W2lYt6j4Y3kZ4opLPH0EAzqriy11MS4D4Q2+UN0tFuUXeYP1MxfvdyaCEboXSM6CUswxsULuNV70Q==
|
||||||
|
|
||||||
|
vue-google-signin-button@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue-google-signin-button/-/vue-google-signin-button-1.0.2.tgz#71389a1233ece20c06aace0870acf54794b3af3c"
|
||||||
|
integrity sha1-cTiaEjPs4gwGqs4IcKz1R5Szrzw=
|
||||||
|
|
||||||
vue-hot-reload-api@^2.3.0:
|
vue-hot-reload-api@^2.3.0:
|
||||||
version "2.3.3"
|
version "2.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
|
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
|
||||||
@ -8251,6 +8633,18 @@ wcwidth@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
defaults "^1.0.3"
|
defaults "^1.0.3"
|
||||||
|
|
||||||
|
web-push@^3.3.3:
|
||||||
|
version "3.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/web-push/-/web-push-3.3.3.tgz#8dc7c578dd1243ceb5a8377389424e87ea9b15cc"
|
||||||
|
integrity sha512-Om4CNZpyzHP3AtGZpbBavCO7I9oCS9CFY2VDfTj/cFx2gm+mAtyK2OlKd6qu9pwCdZTyYanUiyhT0JSrs0ypHQ==
|
||||||
|
dependencies:
|
||||||
|
asn1.js "^5.0.0"
|
||||||
|
http_ece "1.0.5"
|
||||||
|
https-proxy-agent "^2.2.1"
|
||||||
|
jws "^3.1.3"
|
||||||
|
minimist "^1.2.0"
|
||||||
|
urlsafe-base64 "^1.0.0"
|
||||||
|
|
||||||
webpack-bundle-analyzer@^3.0.4:
|
webpack-bundle-analyzer@^3.0.4:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.1.0.tgz#2f19cbb87bb6d4f3cb4e59cb67c837bd9436e89d"
|
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.1.0.tgz#2f19cbb87bb6d4f3cb4e59cb67c837bd9436e89d"
|
||||||
@ -8607,6 +9001,11 @@ xdg-basedir@^3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
||||||
integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
|
integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
|
||||||
|
|
||||||
|
xregexp@2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
|
||||||
|
integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=
|
||||||
|
|
||||||
xregexp@4.0.0:
|
xregexp@4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020"
|
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020"
|
||||||
|
Loading…
Reference in New Issue
Block a user