Compare commits
No commits in common. 'd0a7281e7cd09261ff7032a0500a08b69287159a' and '1bdb4e8bbdf8263565064078e221202d2099e1dc' have entirely different histories.
d0a7281e7c
...
1bdb4e8bbd
@ -1,2 +0,0 @@
|
||||
DIRECTUS_API_URL=
|
||||
DIRECTUS_API_TOKEN=
|
@ -1,19 +1,9 @@
|
||||
MIT License Copyright (c) <year> <copyright holders>
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
Copyright (c) <year> <copyright holders>
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "lesson-learned",
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "yarn workspace server run build",
|
||||
"start": "yarn workspace server run start"
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
"name": "frontend",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@tiny-components/plain-ui": "^0.6.0",
|
||||
"riot": "^6.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@riotjs/webpack-loader": "^6.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"laravel-mix": "^6.0.49",
|
||||
"laravel-mix-purgecss": "^6.0.0",
|
||||
"sass": "^1.51.0",
|
||||
"sass-loader": "^12.2.0",
|
||||
"svg-spritemap-webpack-plugin": "^4.3.3"
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{% layout 'layout.liquid' %}
|
||||
|
||||
{% block siteHeader %}
|
||||
<h1 class="site-header__title">
|
||||
{ site.404_title }
|
||||
</h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block siteMain %}
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="content">
|
||||
{ marked.parse(site.404_message) }
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
@ -1,46 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en_EN">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>
|
||||
{{ page.data.title }}
|
||||
</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link href="/css/styles.css" rel="stylesheet" type="text/css">
|
||||
|
||||
{% block head %}{% endblock %}
|
||||
</head>
|
||||
<body class="site-body page-{ siteClass(page) (page.data.slug) ? slug : 'home' }">
|
||||
<header class="site-header">
|
||||
{% block siteHeader %}
|
||||
<h1 class="site-header__title">
|
||||
{{ page.data.title }}
|
||||
{{ options.data.title }}
|
||||
</h1>
|
||||
{% endblock %}
|
||||
</header>
|
||||
|
||||
<main class="site-main">
|
||||
{% block siteMain %}
|
||||
|
||||
{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer class="site-footer">
|
||||
{% block siteFooter %}
|
||||
<div class="">
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
<div class="site-footer__copyright">
|
||||
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
{% block script %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
@ -1,13 +0,0 @@
|
||||
{% layout 'layout.liquid' %}
|
||||
|
||||
{% block siteMain %}
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="content">
|
||||
{ marked.parse(page.data.content) }
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
@ -1,13 +0,0 @@
|
||||
{% layout 'layout.liquid' %}
|
||||
|
||||
{% block siteMain %}
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="content">
|
||||
{{ page.data.content }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
@ -1,66 +0,0 @@
|
||||
import fastify from 'fastify'
|
||||
import dotenv from 'dotenv'
|
||||
import path from 'path'
|
||||
|
||||
// getting .env
|
||||
dotenv.config({ path: path.join(path.resolve(), '/../../.env') })
|
||||
|
||||
// create server
|
||||
const server = fastify()
|
||||
|
||||
|
||||
/**
|
||||
* Add liquidjs
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
import { Liquid } from 'liquidjs'
|
||||
import view from '@fastify/view'
|
||||
|
||||
const engine = new Liquid({
|
||||
root: path.join(path.resolve(), '/../frontend/views'),
|
||||
extname: '.liquid',
|
||||
})
|
||||
|
||||
server.register(view, {
|
||||
engine: {
|
||||
liquid: engine
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* adding preHandler
|
||||
*
|
||||
*/
|
||||
|
||||
import OptionStore from './stores/Option.js'
|
||||
|
||||
// getting options from directus add to all views
|
||||
server.addHook('preHandler', async function (request, response) {
|
||||
const optionStore = new OptionStore()
|
||||
const options = await optionStore.find()
|
||||
|
||||
response.locals = {
|
||||
options: options
|
||||
}
|
||||
})
|
||||
|
||||
// routing
|
||||
import notfoundHttp from './http/notfound.js'
|
||||
import postHttp from './http/post.js'
|
||||
|
||||
// page and static has always the last routes, if no route before match, it try get a page
|
||||
import pageHttp from './http/page.js'
|
||||
import staticHttp from './http/static.js'
|
||||
|
||||
server
|
||||
.register(notfoundHttp)
|
||||
.register(postHttp, {
|
||||
'prefix': '/blog'
|
||||
})
|
||||
.register(pageHttp)
|
||||
.register(staticHttp)
|
||||
|
||||
export default server
|
@ -1,32 +0,0 @@
|
||||
/**
|
||||
* directusResponseHandler
|
||||
*
|
||||
* handle response from directus, for http of fastify
|
||||
*
|
||||
* @author Björn Hase <me@herr-hase.wtf>
|
||||
* @license http://opensource.org/licenses/MIT The MIT License
|
||||
* @link https://gitea.node001.net/HerrHase/super-fastify-directus.git
|
||||
*
|
||||
*/
|
||||
|
||||
const directusResponseHandler = {
|
||||
async one(entity, response) {
|
||||
|
||||
// if data is empty redirect to 404
|
||||
if (entity.data.length === 0) {
|
||||
return response.redirect('/404')
|
||||
}
|
||||
|
||||
// getting single
|
||||
entity.data = entity.data[0]
|
||||
|
||||
// adding default template for pages
|
||||
if (!entity.data.template) {
|
||||
entity.data.template = 'default'
|
||||
}
|
||||
|
||||
return entity
|
||||
}
|
||||
}
|
||||
|
||||
export default directusResponseHandler
|
@ -1,23 +0,0 @@
|
||||
/**
|
||||
* notfound
|
||||
*
|
||||
* @author Björn Hase <me@herr-hase.wtf>
|
||||
* @license http://opensource.org/licenses/MIT The MIT License
|
||||
* @link https://gitea.node001.net/HerrHase/super-fastify-directus.git
|
||||
*
|
||||
*/
|
||||
|
||||
export default async function(fastify, opts) {
|
||||
|
||||
/**
|
||||
* if found nothing
|
||||
*
|
||||
* @param {object} request
|
||||
* @param {object} response
|
||||
*
|
||||
*/
|
||||
fastify.get('/404', async function(request, response) {
|
||||
response.view('../frontend/views/404')
|
||||
})
|
||||
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
import path from 'path'
|
||||
|
||||
import PageStore from './../stores/Page.js'
|
||||
import directusResponseHandler from './../handlers/directusResponse.js'
|
||||
|
||||
|
||||
/**
|
||||
* page
|
||||
*
|
||||
* @author Björn Hase <me@herr-hase.wtf>
|
||||
* @license http://opensource.org/licenses/MIT The MIT License
|
||||
* @link https://gitea.node001.net/HerrHase/super-fastify-directus.git
|
||||
*
|
||||
*/
|
||||
|
||||
export default async function(fastify, opts) {
|
||||
|
||||
/**
|
||||
* prehandler for all routes
|
||||
*
|
||||
* @param {[type]} request
|
||||
* @param {[type]} reponse
|
||||
* @param {Function} done
|
||||
* @return {[type]}
|
||||
*/
|
||||
fastify.addHook('preHandler', async function(request, response) {
|
||||
|
||||
const pageStore = new PageStore()
|
||||
|
||||
// getting single page
|
||||
let page = await pageStore.findOneByPermalink(request.url)
|
||||
directusResponseHandler.getOne(page, response)
|
||||
|
||||
})
|
||||
|
||||
/**
|
||||
* handle single page
|
||||
*
|
||||
* @param {object} request
|
||||
* @param {object} response
|
||||
*
|
||||
*/
|
||||
fastify.get('/*', async function(request, response) {
|
||||
return response.view('../frontend/views/templates/page/' + response.page.data.template, {
|
||||
'page' : page
|
||||
})
|
||||
})
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
import PageStore from './../stores/Post.js'
|
||||
import path from 'path'
|
||||
|
||||
/**
|
||||
* post
|
||||
*
|
||||
* @author Björn Hase <me@herr-hase.wtf>
|
||||
* @license http://opensource.org/licenses/MIT The MIT License
|
||||
* @link https://gitea.node001.net/HerrHase/super-fastify-directus.git
|
||||
*
|
||||
*/
|
||||
|
||||
export default async function(fastify, opts) {
|
||||
|
||||
/**
|
||||
* prehandler for all routes
|
||||
*
|
||||
* @param {[type]} request
|
||||
* @param {[type]} reponse
|
||||
* @param {Function} done
|
||||
* @return {[type]}
|
||||
*/
|
||||
fastify.addHook('preHandler', async function(request, response) {
|
||||
|
||||
const postStore = new PostStore()
|
||||
|
||||
// getting single page
|
||||
let post = await store.findOneBySlug(request.params.slug)
|
||||
directusResponseHandler.one(post, response)
|
||||
|
||||
})
|
||||
|
||||
/**
|
||||
* handle single post
|
||||
*
|
||||
* @param {object} request
|
||||
* @param {object} response
|
||||
*
|
||||
*/
|
||||
fastify.get('/:slug([-a-zA-Z0-9]{0,255})', async function(request, response) {
|
||||
response.view('../frontend/views/templates/post/' + response.post.data..template, {
|
||||
'page' : post
|
||||
})
|
||||
})
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
import fastifyStatic from '@fastify/static'
|
||||
import path from 'path'
|
||||
|
||||
/**
|
||||
* handle static files that are created by frontend package
|
||||
*
|
||||
* @author Björn Hase
|
||||
* @license http://opensource.org/licenses/MIT The MIT License
|
||||
* @link https://github.com/tentakelfabrik/fastify-lowdb-riotjs-lessons-learned
|
||||
*
|
||||
*/
|
||||
|
||||
export default async function(fastify, opts) {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
fastify.register(fastifyStatic, {
|
||||
root: path.join(path.resolve(), '/../../public'),
|
||||
prefix: '/static',
|
||||
preCompressed: true
|
||||
})
|
||||
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
import server from './_bootstrap.js'
|
||||
|
||||
// let it rain
|
||||
const start = async () => {
|
||||
try {
|
||||
await server.listen({
|
||||
port: process.env.APP_PORT
|
||||
})
|
||||
console.log('Server is running on port ' + process.env.APP_PORT)
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
start()
|
@ -1,694 +0,0 @@
|
||||
{
|
||||
"name": "server",
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"@directus/sdk": {
|
||||
"version": "9.14.2",
|
||||
"resolved": "https://registry.npmjs.org/@directus/sdk/-/sdk-9.14.2.tgz",
|
||||
"integrity": "sha512-GHLT0qSNt+Lt3/DoOQ3UqPlNyvRB+5mat/bAD6bnWoQF3fDc/3bGgMnfbXHKOBIk43FIzp+JJYpkErkIWRgHFQ==",
|
||||
"requires": {
|
||||
"axios": "^0.24.0"
|
||||
}
|
||||
},
|
||||
"@fastify/ajv-compiler": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.1.2.tgz",
|
||||
"integrity": "sha512-m2nzzQJeuVmeGOB9rnII9sZiY8AZ02a9WMQfMBfK1jxdFnxm3FPYKGbYpPjODj4halNogwpolyugbTNpnDCi0A==",
|
||||
"requires": {
|
||||
"ajv": "^8.10.0",
|
||||
"ajv-formats": "^2.1.1",
|
||||
"fast-uri": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"@fastify/deepmerge": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz",
|
||||
"integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g=="
|
||||
},
|
||||
"@fastify/error": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz",
|
||||
"integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg=="
|
||||
},
|
||||
"@fastify/fast-json-stringify-compiler": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.0.0.tgz",
|
||||
"integrity": "sha512-9pCi6c6tmGt/qfuf2koZQuSIG6ckP9q3mz+JoMmAq9eQ4EtA92sWoK7E0LJUn2FFTS/hp5kag+4+dWsV5ZfcXg==",
|
||||
"requires": {
|
||||
"fast-json-stringify": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"@fastify/static": {
|
||||
"version": "6.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.4.0.tgz",
|
||||
"integrity": "sha512-1GFNBKh4ArUpHMCwPUILurpfV3+mTvn+6r6aOQUwP8KKqWJtEAQ1blIwjE16JetmgpIYYamcBUUmojjHDfhgKA==",
|
||||
"requires": {
|
||||
"content-disposition": "^0.5.3",
|
||||
"encoding-negotiator": "^2.0.1",
|
||||
"fastify-plugin": "^3.0.0",
|
||||
"glob": "^8.0.1",
|
||||
"p-limit": "^3.1.0",
|
||||
"readable-stream": "^3.4.0",
|
||||
"send": "^0.18.0"
|
||||
}
|
||||
},
|
||||
"@fastify/view": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/view/-/view-7.0.0.tgz",
|
||||
"integrity": "sha512-IEs4qUHtDto9KmaXXhGZsJlM95HXziOdcOxv0bqhhAp6sSTu1SHj7D0XJoMO6nh+c7pBgpTDeiius9dQfbUq6Q==",
|
||||
"requires": {
|
||||
"fastify-plugin": "^3.0.0",
|
||||
"hashlru": "^2.3.0"
|
||||
}
|
||||
},
|
||||
"abort-controller": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
|
||||
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
|
||||
"requires": {
|
||||
"event-target-shim": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"abstract-logging": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
|
||||
"integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA=="
|
||||
},
|
||||
"ajv": {
|
||||
"version": "8.11.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
|
||||
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"ajv-formats": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
|
||||
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
|
||||
"requires": {
|
||||
"ajv": "^8.0.0"
|
||||
}
|
||||
},
|
||||
"archy": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
|
||||
"integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw=="
|
||||
},
|
||||
"atomic-sleep": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
|
||||
"integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="
|
||||
},
|
||||
"avvio": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz",
|
||||
"integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==",
|
||||
"requires": {
|
||||
"archy": "^1.0.0",
|
||||
"debug": "^4.0.0",
|
||||
"fastq": "^1.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"axios": {
|
||||
"version": "0.24.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
|
||||
"integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
|
||||
"requires": {
|
||||
"follow-redirects": "^1.14.4"
|
||||
}
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
|
||||
"requires": {
|
||||
"safe-buffer": "5.2.1"
|
||||
}
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
|
||||
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
|
||||
},
|
||||
"dayjs": {
|
||||
"version": "1.11.4",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz",
|
||||
"integrity": "sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
|
||||
},
|
||||
"destroy": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
|
||||
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
|
||||
},
|
||||
"dompurify": {
|
||||
"version": "2.3.10",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz",
|
||||
"integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g=="
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
|
||||
"integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q=="
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
|
||||
},
|
||||
"encoding-negotiator": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/encoding-negotiator/-/encoding-negotiator-2.0.1.tgz",
|
||||
"integrity": "sha512-GSK7qphNR4iPcejfAlZxKDoz3xMhnspwImK+Af5WhePS9jUpK/Oh7rUdyENWu+9rgDflOCTmAojBsgsvM8neAQ=="
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
|
||||
},
|
||||
"event-target-shim": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
|
||||
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"fast-json-stringify": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.1.0.tgz",
|
||||
"integrity": "sha512-IybGfbUc1DQgyrp9Myhwlr1Z5vjV37mBkdgcbuvsvUxv5fayG+cHlTQQpXH9nMwUPgp+5Y3RT7QDgx5zJ9NS3A==",
|
||||
"requires": {
|
||||
"@fastify/deepmerge": "^1.0.0",
|
||||
"ajv": "^8.10.0",
|
||||
"ajv-formats": "^2.1.1",
|
||||
"fast-uri": "^2.1.0",
|
||||
"rfdc": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"fast-redact": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz",
|
||||
"integrity": "sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A=="
|
||||
},
|
||||
"fast-uri": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz",
|
||||
"integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA=="
|
||||
},
|
||||
"fastify": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/fastify/-/fastify-4.2.1.tgz",
|
||||
"integrity": "sha512-eyAWHN9+8IPTnhvGz+leseASGV/JZ75Y+jXXV7tid4awUjCMInY1gazZXuTD95xUW+Ve5vfgLjQ2i1i0/XJjdw==",
|
||||
"requires": {
|
||||
"@fastify/ajv-compiler": "^3.1.1",
|
||||
"@fastify/error": "^3.0.0",
|
||||
"@fastify/fast-json-stringify-compiler": "^4.0.0",
|
||||
"abstract-logging": "^2.0.1",
|
||||
"avvio": "^8.1.3",
|
||||
"find-my-way": "^7.0.0",
|
||||
"light-my-request": "^5.0.0",
|
||||
"pino": "^8.0.0",
|
||||
"process-warning": "^2.0.0",
|
||||
"proxy-addr": "^2.0.7",
|
||||
"rfdc": "^1.3.0",
|
||||
"secure-json-parse": "^2.4.0",
|
||||
"semver": "^7.3.7",
|
||||
"tiny-lru": "^8.0.2"
|
||||
}
|
||||
},
|
||||
"fastify-plugin": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz",
|
||||
"integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA=="
|
||||
},
|
||||
"fastq": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
||||
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
||||
"requires": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"find-my-way": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.0.0.tgz",
|
||||
"integrity": "sha512-NHVohYPYRXgj6jxXVRwm4iMQjA2ggJpyewHz7Nq7hvBnHoYJJIyHuxNzs8QLPTLQfoqxZzls2g6Zm79XMbhXjA==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"safe-regex2": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"follow-redirects": {
|
||||
"version": "1.15.1",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
|
||||
"integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
|
||||
},
|
||||
"fresh": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
||||
},
|
||||
"glob": {
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
|
||||
"integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^5.0.1",
|
||||
"once": "^1.3.0"
|
||||
}
|
||||
},
|
||||
"hashlru": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz",
|
||||
"integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A=="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
||||
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
|
||||
"requires": {
|
||||
"depd": "2.0.0",
|
||||
"inherits": "2.0.4",
|
||||
"setprototypeof": "1.2.0",
|
||||
"statuses": "2.0.1",
|
||||
"toidentifier": "1.0.1"
|
||||
}
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"ipaddr.js": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
||||
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
||||
},
|
||||
"light-my-request": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.2.0.tgz",
|
||||
"integrity": "sha512-U5Dga8U59VKydIAnHt2XvPVyDfaHsDIpoO+/FPrm4Qnn1tHeczNnLrGjI1bko6BFWgFwTXjTiQN6PkohWiwwcA==",
|
||||
"requires": {
|
||||
"cookie": "^0.5.0",
|
||||
"process-warning": "^2.0.0",
|
||||
"set-cookie-parser": "^2.4.1"
|
||||
}
|
||||
},
|
||||
"liquidjs": {
|
||||
"version": "9.39.1",
|
||||
"resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.39.1.tgz",
|
||||
"integrity": "sha512-TFu19Cml0K2T34UY50ZKUApHgiiEaayqNW9J3o3ubLQCuhMFhY7jqwNpY1oVvvAJxCCxVqL6bJnGc1Fktth0Fw=="
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"marked": {
|
||||
"version": "4.0.18",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz",
|
||||
"integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw=="
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
|
||||
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
|
||||
"requires": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||
},
|
||||
"on-exit-leak-free": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz",
|
||||
"integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w=="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
||||
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
||||
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
||||
"requires": {
|
||||
"yocto-queue": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"pino": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pino/-/pino-8.2.0.tgz",
|
||||
"integrity": "sha512-HS7+vUpOYEJcNZkyb2ujN2sSayXLyz5XEvDZw4vrxlxHDe34qIDiNf2s+0dD/q/eqEubfxwAItYhY6zCNVZBVw==",
|
||||
"requires": {
|
||||
"atomic-sleep": "^1.0.0",
|
||||
"fast-redact": "^3.1.1",
|
||||
"on-exit-leak-free": "^2.1.0",
|
||||
"pino-abstract-transport": "v1.0.0",
|
||||
"pino-std-serializers": "^6.0.0",
|
||||
"process-warning": "^2.0.0",
|
||||
"quick-format-unescaped": "^4.0.3",
|
||||
"real-require": "^0.1.0",
|
||||
"safe-stable-stringify": "^2.3.1",
|
||||
"sonic-boom": "^3.0.0",
|
||||
"thread-stream": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pino-abstract-transport": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz",
|
||||
"integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==",
|
||||
"requires": {
|
||||
"readable-stream": "^4.0.0",
|
||||
"split2": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz",
|
||||
"integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"pino-std-serializers": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz",
|
||||
"integrity": "sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ=="
|
||||
},
|
||||
"process-warning": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz",
|
||||
"integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww=="
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
||||
"requires": {
|
||||
"forwarded": "0.2.0",
|
||||
"ipaddr.js": "1.9.1"
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||
},
|
||||
"quick-format-unescaped": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
|
||||
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"real-require": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz",
|
||||
"integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg=="
|
||||
},
|
||||
"require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
|
||||
},
|
||||
"ret": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz",
|
||||
"integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ=="
|
||||
},
|
||||
"reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
|
||||
},
|
||||
"rfdc": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
|
||||
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||
},
|
||||
"safe-regex2": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz",
|
||||
"integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==",
|
||||
"requires": {
|
||||
"ret": "~0.2.0"
|
||||
}
|
||||
},
|
||||
"safe-stable-stringify": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz",
|
||||
"integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg=="
|
||||
},
|
||||
"secure-json-parse": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz",
|
||||
"integrity": "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg=="
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.7",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
|
||||
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"send": {
|
||||
"version": "0.18.0",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
|
||||
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"mime": "1.6.0",
|
||||
"ms": "2.1.3",
|
||||
"on-finished": "2.4.1",
|
||||
"range-parser": "~1.2.1",
|
||||
"statuses": "2.0.1"
|
||||
}
|
||||
},
|
||||
"set-cookie-parser": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.0.tgz",
|
||||
"integrity": "sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w=="
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
||||
},
|
||||
"sonic-boom": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.0.0.tgz",
|
||||
"integrity": "sha512-p5DiZOZHbJ2ZO5MADczp5qrfOd3W5Vr2vHxfCpe7G4AzPwVOweIjbfgku8wSQUuk+Y5Yuo8W7JqRe6XKmKistg==",
|
||||
"requires": {
|
||||
"atomic-sleep": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"split2": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz",
|
||||
"integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ=="
|
||||
},
|
||||
"statuses": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
|
||||
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
}
|
||||
},
|
||||
"thread-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-tnbzCbIrA4Khq5SJt/Fyz5DlE8pUnPR3//nWv+cqdRktvAl2NuC9O08HHq2Ifa10bhkvHLuzcesNjaH15EgTXA==",
|
||||
"requires": {
|
||||
"real-require": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"tiny-lru": {
|
||||
"version": "8.0.2",
|
||||
"resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-8.0.2.tgz",
|
||||
"integrity": "sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg=="
|
||||
},
|
||||
"toidentifier": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
|
||||
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||
"requires": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"yocto-queue": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{
|
||||
"name": "server",
|
||||
"version": "0.1.0",
|
||||
"scripts": {
|
||||
"start": "node index.js"
|
||||
},
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@directus/sdk": "^9.14.2",
|
||||
"@fastify/static": "^6.4.0",
|
||||
"@fastify/view": "^7.0.0",
|
||||
"dayjs": "^1.11.4",
|
||||
"dompurify": "^2.3.10",
|
||||
"dotenv": "^10.0.0",
|
||||
"fastify": "^4.2.1",
|
||||
"liquidjs": "^9.39.1",
|
||||
"marked": "^4.0.18"
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
import DirectusAbstractStore from './DirectusAbstract.js'
|
||||
|
||||
/**
|
||||
* Comments
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
class CommentStore extends DirectusAbstractStore {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param {string} endpoint
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
super('comments')
|
||||
}
|
||||
|
||||
/**
|
||||
* getting page by permalink
|
||||
*
|
||||
* @param {string} permalink
|
||||
* @return {object}
|
||||
*/
|
||||
find(page, uuid, limit = 20) {
|
||||
return this.items.readByQuery({
|
||||
fields: [
|
||||
'name',
|
||||
'content',
|
||||
'approved',
|
||||
'belongs_to.comments_id'
|
||||
],
|
||||
filter: {
|
||||
approved : true,
|
||||
belongs_to : {
|
||||
comments_id: uuid
|
||||
}
|
||||
},
|
||||
limit : limit,
|
||||
offset : ((page - 1) * limit)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default PageStore
|
@ -1,37 +0,0 @@
|
||||
import { Directus } from '@directus/sdk';
|
||||
|
||||
/**
|
||||
* Abstract Class for handling Directus Api
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
class DirectusAbstractStore {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param {string} endpoint
|
||||
*
|
||||
*/
|
||||
constructor(endpoint) {
|
||||
this.endpoint = endpoint
|
||||
|
||||
this.directus = new Directus(process.env.DIRECTUS_API_URL, {
|
||||
auth: {
|
||||
staticToken: process.env.DIRECTUS_API_TOKEN
|
||||
}
|
||||
})
|
||||
|
||||
// if endpoint not set throw Error
|
||||
if (!this.endpoint) {
|
||||
throw new Error('Endpoint in ' + this.constructor.name + ' missing!')
|
||||
}
|
||||
|
||||
// create items
|
||||
this.items = this.directus.items(this.endpoint)
|
||||
}
|
||||
}
|
||||
|
||||
export default DirectusAbstractStore
|
@ -1,48 +0,0 @@
|
||||
import DirectusAbstractStore from './DirectusAbstract.js'
|
||||
|
||||
/**
|
||||
* Pages from Directus
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
class PageStore extends DirectusAbstractStore {
|
||||
|
||||
/**
|
||||
* init PageStore
|
||||
*
|
||||
*
|
||||
* @param {string} endpoint
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
super('pages')
|
||||
}
|
||||
|
||||
/**
|
||||
* getting page by permalink
|
||||
*
|
||||
*
|
||||
* @param {string} permalink
|
||||
* @return {object}
|
||||
*/
|
||||
findOneByPermalink(permalink) {
|
||||
return this.items.readByQuery({
|
||||
fields: [
|
||||
'title',
|
||||
'status',
|
||||
'permalink',
|
||||
'meta',
|
||||
'content'
|
||||
],
|
||||
filter: {
|
||||
permalink : permalink,
|
||||
status : 'published'
|
||||
},
|
||||
limit: 1
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default PageStore
|
@ -1,93 +0,0 @@
|
||||
import DirectusAbstractStore from './DirectusAbstract.js'
|
||||
|
||||
/**
|
||||
* Posts from Directus
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
class PostStore extends DirectusAbstractStore {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param {string} endpoint
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
super('posts')
|
||||
}
|
||||
|
||||
/**
|
||||
* getting posts
|
||||
*
|
||||
* @param {page}
|
||||
* @param {limit}
|
||||
* @return {object}
|
||||
*/
|
||||
find(page = 1, limit = 20) {
|
||||
return this.items.readOne({
|
||||
fields: [
|
||||
'title',
|
||||
'slug',
|
||||
|
||||
'user_created.first_name',
|
||||
'user_created.last_name',
|
||||
'user_created.avatar.id',
|
||||
|
||||
'teaser_content',
|
||||
'teaser_media.id',
|
||||
'teaser_media.description',
|
||||
],
|
||||
filter: {
|
||||
slug : slug,
|
||||
status : 'published',
|
||||
published_at : {
|
||||
'_nnull': true
|
||||
}
|
||||
},
|
||||
limit : limit,
|
||||
offset : ((page - 1) * limit),
|
||||
sort : '-published_at'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* getting single post
|
||||
*
|
||||
* @param {string} slug
|
||||
* @return {object}
|
||||
*/
|
||||
findOneBySlug(slug) {
|
||||
return this.items.readOne({
|
||||
fields: [
|
||||
'title',
|
||||
'slug',
|
||||
'meta',
|
||||
|
||||
'user_created.first_name',
|
||||
'user_created.last_name',
|
||||
'user_created.avatar.id',
|
||||
|
||||
'header_media.id',
|
||||
'header_media.description',
|
||||
|
||||
'content_blocks.blocks_id.title',
|
||||
'content_blocks.blocks_id.content',
|
||||
'content_blocks.blocks_id.styles',
|
||||
'content_blocks.blocks_id.media.directus_files_id.id',
|
||||
'content_blocks.blocks_id.media.directus_files_id.description'
|
||||
],
|
||||
filter: {
|
||||
slug : slug,
|
||||
status : 'published',
|
||||
published_at : {
|
||||
'_nnull': true
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default PostStore
|
@ -1,35 +0,0 @@
|
||||
import DirectusAbstractStore from './DirectusAbstract.js'
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
class SettingsStore extends DirectusAbstractStore {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param {string} endpoint
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
super('directus_settings')
|
||||
}
|
||||
|
||||
find() {
|
||||
return this.items.readByQuery({
|
||||
fields: [
|
||||
'project_name',
|
||||
'project_descriptor',
|
||||
'project_url',
|
||||
'project_logo.id',
|
||||
'default_language'
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default OptionStore
|
Loading…
Reference in new issue