pre-hackmeeting
This commit is contained in:
parent
8d71666555
commit
af6794bdda
24 changed files with 369 additions and 228 deletions
|
@ -1,23 +1,24 @@
|
|||
<template>
|
||||
<a class='post' :href='post.URL' target='_blank'>
|
||||
<v-row class='mb-5'>
|
||||
<v-col cols=12 lg=4>
|
||||
<v-img class='rounded-lg' max-height="250" :src="post.image" alt=""></v-img>
|
||||
</v-col>
|
||||
<v-col cols=12 lg=8>
|
||||
<span>{{post.source.name}}</span>
|
||||
<h1 class='text-h5 font-weight-bold'>{{post.title}}</h1>
|
||||
<p class='font-weight-light'>{{new Date(post.date).toLocaleString('it-IT', { weekday: 'long', month: 'long', day: 'numeric'})}}</p>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</a>
|
||||
<!-- <div class='post p-2 mb-10 bg-white'>
|
||||
<div role='title' class="block pt-2 mb-3 border-b-2" >
|
||||
<a target="_blank" :href='post.URL' v-html='post.title' class='text-xl font-bold text-violet-500'></a>
|
||||
<span class="font-base text-base float-right">{{new Date(post.date).toLocaleString()}} - <b><a :href='post.source.link'>{{post.source.name}} <img class="inline h-5 w-5 rounded-full" :src="post.source.image || post.source.link + 'favicon.ico'" alt="" /></a></b></span>
|
||||
</div>
|
||||
<span class='text-xl' v-html='post.summary || post.content'></span>
|
||||
</div> -->
|
||||
<v-row class='post mb-8'>
|
||||
<v-col cols=12 lg=4 class='py-0 pa-md-2'>
|
||||
<a :href='post.URL' target='_blank'><v-img class='rounded-lg' max-height="250" :src="post.image" alt=""></v-img></a>
|
||||
</v-col>
|
||||
<v-col cols=12 lg=8 class='py-0 pl-md-3'>
|
||||
<div>{{post.source.name}}</div>
|
||||
<a class='text-h6 pa-1 font-weight-bold' :href='post.URL' target='_blank'>{{post.title}}</a>
|
||||
<p class='font-weight-light'>{{new Date(post.date).toLocaleString('it-IT', { weekday: 'long', month: 'long', day: 'numeric'})}}</p>
|
||||
<v-chip v-for='tag in post.tags' :key='tag.id' label small
|
||||
class='ma-1 yellow accent-1'
|
||||
v-text='`#${tag.name}`'></v-chip>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<!-- <div class='post p-2 mb-10 bg-white'>
|
||||
<div role='title' class="block pt-2 mb-3 border-b-2" >
|
||||
<a target="_blank" :href='post.URL' v-html='post.title' class='text-xl font-bold text-violet-500'></a>
|
||||
<span class="font-base text-base float-right">{{new Date(post.date).toLocaleString()}} - <b><a :href='post.source.link'>{{post.source.name}} <img class="inline h-5 w-5 rounded-full" :src="post.source.image || post.source.link + 'favicon.ico'" alt="" /></a></b></span>
|
||||
</div>
|
||||
<span class='text-xl' v-html='post.summary || post.content'></span>
|
||||
</div> -->
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
|
@ -36,13 +37,14 @@ export default {
|
|||
max-height: 400px;
|
||||
}
|
||||
|
||||
a.post{
|
||||
.post a{
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.post:hover {
|
||||
.post a:hover {
|
||||
background-color: #fff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
<v-app>
|
||||
<v-main light>
|
||||
<v-tabs centered>
|
||||
<v-tab to='/'>Home</v-tab>
|
||||
<v-tab to='/groups'>Groups</v-tab>
|
||||
<v-tab to='/add'>Add</v-tab>
|
||||
<v-tab to='/embed'>Widget</v-tab>
|
||||
</v-tabs>
|
||||
<v-tabs centered>
|
||||
<v-tab to='/'>Home</v-tab>
|
||||
<v-tab to='/groups'>Groups</v-tab>
|
||||
<v-tab to='/add'>Add</v-tab>
|
||||
<v-tab to='/embed'>Widget</v-tab>
|
||||
</v-tabs>
|
||||
<v-container>
|
||||
<Nuxt />
|
||||
</v-container>
|
||||
|
|
|
@ -8,7 +8,8 @@ export class DisplayFeed extends LitElement {
|
|||
return {
|
||||
max: { type: Boolean },
|
||||
posts: { type: Array, state: true },
|
||||
feed: { type: String },
|
||||
feed: { type: Object, state: true },
|
||||
url: { type: String },
|
||||
title: { type: String }
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +20,7 @@ export class DisplayFeed extends LitElement {
|
|||
}
|
||||
|
||||
_post (post) {
|
||||
return html`<div class="df-item"><h3 class="df-title">${post.title}</h3><div class="df-content">${unsafeHTML(post.content)}</div></div>`
|
||||
return html`<div class="df-item"><img src="${post.image}" /><a href="${post.url}"><h3 class="df-title">${post.title}</h3></a><div class="df-content">${unsafeHTML(post.content_html || post.content_text)}</div></div>`
|
||||
}
|
||||
|
||||
// connectedCallback () {
|
||||
|
@ -33,23 +34,21 @@ export class DisplayFeed extends LitElement {
|
|||
// }
|
||||
|
||||
updated (changedProperties) {
|
||||
console.error('dentro changed ', changedProperties)
|
||||
console.error(this.feed)
|
||||
console.error(changedProperties)
|
||||
if (changedProperties.has('feed')) {
|
||||
console.error('feed cambiato')
|
||||
this.posts = fetch(this.feed)
|
||||
.then(async res => {
|
||||
const posts = await res.json()
|
||||
return posts.posts.map(this._post)
|
||||
})
|
||||
if (changedProperties.has('url')) {
|
||||
this.feed = fetch(this.url)
|
||||
.then(async res => {
|
||||
const feed = await res.json()
|
||||
const head = html`<a href="${feed.home_page_url}"><h3>${feed.title}</h3></a><small>${feed.description}</small>`
|
||||
const posts = feed.items.map(this._post)
|
||||
return html`${head}${posts}`
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
// const loading = html`<span>Loading...</span>`
|
||||
// const title = html`<h2>${this.title}</h2>`
|
||||
return html`<h2>${this.title}</h2>${until(this.posts, 'Loading...')}`
|
||||
return html`${until(this.feed, 'Loading...')}`
|
||||
}
|
||||
|
||||
// do not create a shadowDOM (we want style pollution from outside)
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<script type="module" src="./dist/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<display-feed feed='http://localhost:3000/api/source/33'></display-feed>
|
||||
<display-feed url='https://radioblackout.org/feed/json'></display-feed>
|
||||
<display-feed url='https://circex.org/it/news.json'></display-feed>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
{
|
||||
"name": "chew",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
|
@ -20,7 +20,7 @@
|
|||
"feed": "^4.2.2",
|
||||
"feedparser": "^2.2.10",
|
||||
"jsdom": "^19.0.0",
|
||||
"linkedom": "^0.13.0",
|
||||
"linkedom": "^0.13.1",
|
||||
"lit": "^2.1.1",
|
||||
"nuxt": "^2.15.8",
|
||||
"vue": "^2.6.14",
|
||||
|
|
|
@ -1,8 +1,20 @@
|
|||
<template>
|
||||
<section>
|
||||
<h3 class="font-weight-bold text-h4 p-2 mt-10 rounded border-2 border-pink-500">Latest posts</h3>
|
||||
<section>
|
||||
<!-- <v-btn-toggle
|
||||
v-model="selectedCohorts"
|
||||
dense
|
||||
tile
|
||||
color="deep-purple accent-3"
|
||||
group> -->
|
||||
<v-tabs color='pink'>
|
||||
<v-tab class='font-weight-bold' v-for='cohort in cohorts' :key='cohort.id' @click='selectCohort(cohort.id)' v-text='cohort.name'></v-tab>
|
||||
</v-tabs>
|
||||
<!-- </v-btn-toggle> -->
|
||||
</section>
|
||||
<h3 class="font-weight-bold text-h4 p-2 mt-10 rounded border-2 border-pink-500">{{selectedCohort.name}}</h3>
|
||||
<v-container class='px-6 mx-6 max-w-80'>
|
||||
<Post v-for='post in lastPosts' :key='post.URL' :post='post'/>
|
||||
<Post v-for='post in posts' :key='post.URL' :post='post'/>
|
||||
</v-container>
|
||||
<!-- //- TextCohort.mt-1(v-for='cohort in cohorts' :key='cohort.id' :cohort='cohort')
|
||||
//- li(v-for='post, id in lastPosts' :key='id')
|
||||
|
@ -25,16 +37,26 @@
|
|||
|
||||
export default {
|
||||
// components: { AddCohort, Cohort, TextCohort, Post },
|
||||
data: () => ({ lastPosts: [], cohorts: [] }),
|
||||
data: () => ({ posts: [], cohorts: [], selectedCohort: {} }),
|
||||
async fetch() {
|
||||
this.lastPosts = await this.$http.$get(`${process.env.baseUrl}/api/posts`)
|
||||
// this.cohorts = await this.$http.$get('http://localhost:3000/api/cohorts')
|
||||
this.posts = await this.$http.$get(`${process.env.baseUrl}/api/posts`)
|
||||
this.cohorts = await this.$http.$get(`${process.env.baseUrl}/api/cohorts`)
|
||||
this.cohorts.unshift({ id: -1, name: 'Latest' })
|
||||
// const cohorts = []
|
||||
},
|
||||
methods: {
|
||||
addCohort (cohort) {
|
||||
console.error('dentro add cohort', cohort)
|
||||
this.cohorts.push(cohort)
|
||||
},
|
||||
async selectCohort (id) {
|
||||
this.selectedCohort = this.cohorts.find(c => c.id === id)
|
||||
if (id === -1) {
|
||||
this.posts = await this.$http.$get(`${process.env.baseUrl}/api/posts`)
|
||||
} else {
|
||||
const cohort = await this.$http.$get(`/api/cohort/${id}`)
|
||||
this.posts = cohort.posts
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- A unique constraint covering the columns `[name]` on the table `Cohort` will be added. If there are existing duplicate values, this will fail.
|
||||
|
||||
*/
|
||||
-- AlterTable
|
||||
ALTER TABLE `Cohort` ADD COLUMN `dailyView` INTEGER NOT NULL DEFAULT 0;
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX `Cohort_name_key` ON `Cohort`(`name`);
|
|
@ -1,2 +0,0 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE `Post` MODIFY `summary` TEXT NOT NULL;
|
|
@ -1,3 +0,0 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE `Post` MODIFY `updatedAt` DATETIME(3) NULL,
|
||||
MODIFY `summary` TEXT NULL;
|
|
@ -1,5 +0,0 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE `Post` ADD COLUMN `pippo` VARCHAR(191) NOT NULL DEFAULT '';
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE `Source` MODIFY `updatedAt` DATETIME(3) NULL DEFAULT CURRENT_TIMESTAMP(3);
|
|
@ -1,9 +0,0 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `pippo` on the `Post` table. All the data in the column will be lost.
|
||||
|
||||
*/
|
||||
-- AlterTable
|
||||
ALTER TABLE `Post` DROP COLUMN `pippo`,
|
||||
MODIFY `content` TEXT NULL;
|
|
@ -1,2 +0,0 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE `Cohort` ADD COLUMN `description` VARCHAR(191) NULL;
|
|
@ -1,17 +0,0 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE `Post` ADD COLUMN `image` VARCHAR(191) NULL;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `_CohortToTag` (
|
||||
`A` INTEGER NOT NULL,
|
||||
`B` VARCHAR(191) NOT NULL,
|
||||
|
||||
UNIQUE INDEX `_CohortToTag_AB_unique`(`A`, `B`),
|
||||
INDEX `_CohortToTag_B_index`(`B`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `_CohortToTag` ADD FOREIGN KEY (`A`) REFERENCES `Cohort`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `_CohortToTag` ADD FOREIGN KEY (`B`) REFERENCES `Tag`(`name`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@ -2,7 +2,10 @@
|
|||
CREATE TABLE `Cohort` (
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(191) NOT NULL,
|
||||
`dailyView` INTEGER NOT NULL DEFAULT 0,
|
||||
`description` VARCHAR(191) NULL,
|
||||
|
||||
UNIQUE INDEX `Cohort_name_key`(`name`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
|
@ -10,15 +13,15 @@ CREATE TABLE `Cohort` (
|
|||
CREATE TABLE `Post` (
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`date` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updatedAt` DATETIME(3) NOT NULL,
|
||||
`updatedAt` DATETIME(3) NULL,
|
||||
`title` VARCHAR(191) NOT NULL,
|
||||
`content` TEXT NOT NULL,
|
||||
`summary` VARCHAR(191) NOT NULL DEFAULT '',
|
||||
`content` TEXT NULL,
|
||||
`summary` TEXT NULL,
|
||||
`sourceId` INTEGER NOT NULL,
|
||||
`URL` VARCHAR(191) NOT NULL,
|
||||
`image` VARCHAR(191) NULL,
|
||||
|
||||
UNIQUE INDEX `Post_URL_key`(`URL`),
|
||||
INDEX `Post_sourceId_fkey`(`sourceId`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
|
@ -28,7 +31,7 @@ CREATE TABLE `Source` (
|
|||
`name` VARCHAR(191) NOT NULL,
|
||||
`type` ENUM('FEED') NOT NULL DEFAULT 'FEED',
|
||||
`URL` VARCHAR(191) NOT NULL,
|
||||
`updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updatedAt` DATETIME(3) NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`lastError` VARCHAR(191) NULL,
|
||||
`status` ENUM('OK', 'WARNING', 'ERROR') NOT NULL DEFAULT 'OK',
|
||||
|
@ -43,9 +46,11 @@ CREATE TABLE `Source` (
|
|||
|
||||
-- CreateTable
|
||||
CREATE TABLE `Tag` (
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(191) NOT NULL,
|
||||
|
||||
PRIMARY KEY (`name`)
|
||||
UNIQUE INDEX `Tag_name_key`(`name`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- CreateTable
|
||||
|
@ -60,7 +65,7 @@ CREATE TABLE `_CohortToSource` (
|
|||
-- CreateTable
|
||||
CREATE TABLE `_PostToTag` (
|
||||
`A` INTEGER NOT NULL,
|
||||
`B` VARCHAR(191) NOT NULL,
|
||||
`B` INTEGER NOT NULL,
|
||||
|
||||
UNIQUE INDEX `_PostToTag_AB_unique`(`A`, `B`),
|
||||
INDEX `_PostToTag_B_index`(`B`)
|
||||
|
@ -79,4 +84,4 @@ ALTER TABLE `_CohortToSource` ADD FOREIGN KEY (`B`) REFERENCES `Source`(`id`) ON
|
|||
ALTER TABLE `_PostToTag` ADD FOREIGN KEY (`A`) REFERENCES `Post`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `_PostToTag` ADD FOREIGN KEY (`B`) REFERENCES `Tag`(`name`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE `_PostToTag` ADD FOREIGN KEY (`B`) REFERENCES `Tag`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
25
prisma/migrations/20220211093400_oih/migration.sql
Normal file
25
prisma/migrations/20220211093400_oih/migration.sql
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `sourceId` on the `Post` table. All the data in the column will be lost.
|
||||
- You are about to drop the `Source` table. If the table is not empty, all the data it contains will be lost.
|
||||
- You are about to drop the `_CohortToSource` table. If the table is not empty, all the data it contains will be lost.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `Post` DROP FOREIGN KEY `Post_sourceId_fkey`;
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `_CohortToSource` DROP FOREIGN KEY `_CohortToSource_ibfk_1`;
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `_CohortToSource` DROP FOREIGN KEY `_CohortToSource_ibfk_2`;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE `Post` DROP COLUMN `sourceId`;
|
||||
|
||||
-- DropTable
|
||||
DROP TABLE `Source`;
|
||||
|
||||
-- DropTable
|
||||
DROP TABLE `_CohortToSource`;
|
30
prisma/migrations/20220211094118_iniini/migration.sql
Normal file
30
prisma/migrations/20220211094118_iniini/migration.sql
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- Added the required column `sourceId` to the `Post` table without a default value. This is not possible if the table is not empty.
|
||||
|
||||
*/
|
||||
-- AlterTable
|
||||
ALTER TABLE `Post` ADD COLUMN `sourceId` INTEGER NOT NULL;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `Source` (
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(191) NOT NULL,
|
||||
`type` ENUM('FEED') NOT NULL DEFAULT 'FEED',
|
||||
`URL` VARCHAR(191) NOT NULL,
|
||||
`updatedAt` DATETIME(3) NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`lastError` VARCHAR(191) NULL,
|
||||
`status` ENUM('OK', 'WARNING', 'ERROR') NOT NULL DEFAULT 'OK',
|
||||
`nErrors` INTEGER NOT NULL DEFAULT 0,
|
||||
`description` VARCHAR(191) NULL,
|
||||
`image` LONGTEXT NULL,
|
||||
`link` VARCHAR(191) NULL,
|
||||
|
||||
UNIQUE INDEX `Source_URL_key`(`URL`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `Post` ADD CONSTRAINT `Post_sourceId_fkey` FOREIGN KEY (`sourceId`) REFERENCES `Source`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
11
prisma/migrations/20220211094253_dzfdfg/migration.sql
Normal file
11
prisma/migrations/20220211094253_dzfdfg/migration.sql
Normal file
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `sourceId` on the `Post` table. All the data in the column will be lost.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `Post` DROP FOREIGN KEY `Post_sourceId_fkey`;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE `Post` DROP COLUMN `sourceId`;
|
50
prisma/migrations/20220211095230_dfgad/migration.sql
Normal file
50
prisma/migrations/20220211095230_dfgad/migration.sql
Normal file
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the `_PostToTag` table. If the table is not empty, all the data it contains will be lost.
|
||||
- Added the required column `sourceId` to the `Post` table without a default value. This is not possible if the table is not empty.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `_PostToTag` DROP FOREIGN KEY `_PostToTag_ibfk_1`;
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `_PostToTag` DROP FOREIGN KEY `_PostToTag_ibfk_2`;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE `Post` ADD COLUMN `sourceId` INTEGER NOT NULL;
|
||||
|
||||
-- DropTable
|
||||
DROP TABLE `_PostToTag`;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `TagsOnPosts` (
|
||||
`tagId` INTEGER NOT NULL,
|
||||
`postId` INTEGER NOT NULL,
|
||||
|
||||
PRIMARY KEY (`postId`, `tagId`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `_CohortToSource` (
|
||||
`A` INTEGER NOT NULL,
|
||||
`B` INTEGER NOT NULL,
|
||||
|
||||
UNIQUE INDEX `_CohortToSource_AB_unique`(`A`, `B`),
|
||||
INDEX `_CohortToSource_B_index`(`B`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `Post` ADD CONSTRAINT `Post_sourceId_fkey` FOREIGN KEY (`sourceId`) REFERENCES `Source`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `TagsOnPosts` ADD CONSTRAINT `TagsOnPosts_postId_fkey` FOREIGN KEY (`postId`) REFERENCES `Post`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `TagsOnPosts` ADD CONSTRAINT `TagsOnPosts_tagId_fkey` FOREIGN KEY (`tagId`) REFERENCES `Tag`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `_CohortToSource` ADD FOREIGN KEY (`A`) REFERENCES `Cohort`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `_CohortToSource` ADD FOREIGN KEY (`B`) REFERENCES `Source`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
32
prisma/migrations/20220211100420_sdgsdfg/migration.sql
Normal file
32
prisma/migrations/20220211100420_sdgsdfg/migration.sql
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the `TagsOnPosts` table. If the table is not empty, all the data it contains will be lost.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `TagsOnPosts` DROP FOREIGN KEY `TagsOnPosts_postId_fkey`;
|
||||
|
||||
-- DropForeignKey
|
||||
ALTER TABLE `TagsOnPosts` DROP FOREIGN KEY `TagsOnPosts_tagId_fkey`;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE `Post` MODIFY `title` VARCHAR(191) NOT NULL DEFAULT '';
|
||||
|
||||
-- DropTable
|
||||
DROP TABLE `TagsOnPosts`;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `_PostToTag` (
|
||||
`A` INTEGER NOT NULL,
|
||||
`B` INTEGER NOT NULL,
|
||||
|
||||
UNIQUE INDEX `_PostToTag_AB_unique`(`A`, `B`),
|
||||
INDEX `_PostToTag_B_index`(`B`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `_PostToTag` ADD FOREIGN KEY (`A`) REFERENCES `Post`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `_PostToTag` ADD FOREIGN KEY (`B`) REFERENCES `Tag`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@ -13,23 +13,28 @@ model Cohort {
|
|||
dailyView Int @default(0)
|
||||
description String?
|
||||
sources Source[]
|
||||
tags Tag[]
|
||||
}
|
||||
|
||||
model Post {
|
||||
id Int @id @default(autoincrement())
|
||||
date DateTime @default(now())
|
||||
updatedAt DateTime? @updatedAt
|
||||
title String
|
||||
content String? @db.Text
|
||||
summary String? @db.Text
|
||||
sourceId Int
|
||||
URL String @unique
|
||||
id Int @id @default(autoincrement())
|
||||
date DateTime @default(now())
|
||||
updatedAt DateTime? @updatedAt
|
||||
title String @default("")
|
||||
content String? @db.Text
|
||||
summary String? @db.Text
|
||||
URL String @unique
|
||||
image String?
|
||||
source Source @relation(fields: [sourceId], references: [id])
|
||||
sourceId Int
|
||||
tags Tag[]
|
||||
source Source @relation(fields: [sourceId], references: [id])
|
||||
|
||||
@@index([sourceId], map: "Post_sourceId_fkey")
|
||||
// @@index([sourceId], map: "Post_sourceId_fkey")
|
||||
}
|
||||
|
||||
model Tag {
|
||||
id Int @id @default(autoincrement())
|
||||
name String @unique
|
||||
posts Post[]
|
||||
}
|
||||
|
||||
model Source {
|
||||
|
@ -49,12 +54,6 @@ model Source {
|
|||
cohorts Cohort[]
|
||||
}
|
||||
|
||||
model Tag {
|
||||
name String @id
|
||||
cohorts Cohort[]
|
||||
posts Post[]
|
||||
}
|
||||
|
||||
enum Source_type {
|
||||
FEED
|
||||
}
|
||||
|
|
|
@ -72,23 +72,26 @@ const manager = {
|
|||
const enclosuresImages = post.enclosures.filter(e => e.type.includes('image'))
|
||||
image = enclosuresImages.length ? enclosuresImages[0].url : image
|
||||
|
||||
await prisma.post.create({ include: { tags: true }, data: {
|
||||
const data = {
|
||||
date: post.pubdate,
|
||||
title: post.title,
|
||||
URL: post.link,
|
||||
content: html,
|
||||
image,
|
||||
summary: post.summary,
|
||||
sourceId: source.id,
|
||||
// tags: {
|
||||
// connect: post.categories.map(name => ({ name })),
|
||||
// create: post.categories.map(name => ({ name }))
|
||||
// // create: { name },
|
||||
// // where: { name }
|
||||
// // }))
|
||||
// // // create: post.categories.map( name => ({ name }))
|
||||
// }
|
||||
}})
|
||||
source: { connect: { id: source.id } }
|
||||
}
|
||||
|
||||
if (post.categories.length) {
|
||||
data.tags = { connectOrCreate:
|
||||
post.categories.map(name => ({
|
||||
create: { name },
|
||||
where: { name }
|
||||
}))}
|
||||
}
|
||||
|
||||
await prisma.post.create({ include: { tags: true }, data })
|
||||
|
||||
} catch (e) { console.error(e) }
|
||||
// console.log(post.title)
|
||||
// console.log(JSON.stringify(post, ' ', 4))
|
||||
|
@ -127,7 +130,7 @@ const prisma = new PrismaClient()
|
|||
let queue
|
||||
|
||||
export async function add (s) {
|
||||
queue.add(s, { jobId: s.id, repeat: { every: 10000 } })
|
||||
queue.add(s, { jobId: s.id, repeat: { every: 100000 } })
|
||||
manager.get(s)
|
||||
}
|
||||
|
||||
|
@ -141,8 +144,7 @@ async function main () {
|
|||
const sources = await prisma.source.findMany()
|
||||
// sources.forEach(manager.get)
|
||||
// manager.get()
|
||||
// console.error(sources.map(s => s.URL))
|
||||
sources.forEach( s => queue.add(s, { jobId: s.id, repeat: { every: 10000 } }))
|
||||
sources.forEach( s => queue.add(s, { jobId: s.id, repeat: { every: 100000 } }))
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ export function parseContent (html) {
|
|||
attributeNameCheck: /(feed|id|theme)/,
|
||||
allowCustomizedBuiltInElements: true, // allow customized built-ins
|
||||
},
|
||||
ALLOWED_TAGS: ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'br', 'i', 'span', 'img', 'figure',
|
||||
ALLOWED_TAGS: ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'br', 'i', 'span', 'img', 'figure', 'picture', 'audio', 'iframe',
|
||||
'h6', 'b', 'a', 'li', 'ul', 'ol', 'code', 'blockquote', 'u', 's', 'strong'],
|
||||
ALLOWED_ATTR: ['href', 'target', 'src']
|
||||
})
|
||||
|
|
|
@ -4,7 +4,7 @@ import express from 'express'
|
|||
const app = express.Router()
|
||||
|
||||
app.get('/', async (req, res) => {
|
||||
res.json(await prisma.post.findMany({ take: 10, orderBy: { date: 'desc' }, include: { source: true }}))
|
||||
res.json(await prisma.post.findMany({ take: 10, orderBy: { date: 'desc' }, include: { tags: true, source: true }}))
|
||||
})
|
||||
|
||||
export default app
|
192
yarn.lock
192
yarn.lock
|
@ -1343,22 +1343,22 @@
|
|||
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1"
|
||||
integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
|
||||
|
||||
"@prisma/client@^3.8.1":
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.8.1.tgz#c11eda8e84760867552ffde4de7b48fb2cf1e1c0"
|
||||
integrity sha512-NxD1Xbkx1eT1mxSwo1RwZe665mqBETs0VxohuwNfFIxMqcp0g6d4TgugPxwZ4Jb4e5wCu8mQ9quMedhNWIWcZQ==
|
||||
"@prisma/client@^3.9.2":
|
||||
version "3.9.2"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.9.2.tgz#ad17dcfb702842573fe6ec3b7dc4615eff8d8fc6"
|
||||
integrity sha512-VlEIYVMyfFZHbVBOlunPl47gmP/Z0zzPjPj8I7uKEIaABqrUy50ru3XS0aZd8GFvevVwt7p91xxkUjNjrWhKAQ==
|
||||
dependencies:
|
||||
"@prisma/engines-version" "3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f"
|
||||
"@prisma/engines-version" "3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009"
|
||||
|
||||
"@prisma/engines-version@3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f":
|
||||
version "3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f.tgz#4c8d9744b5e54650a8ba5fde0a711399d6adba24"
|
||||
integrity sha512-G2JH6yWt6ixGKmsRmVgaQYahfwMopim0u/XLIZUo2o/mZ5jdu7+BL+2V5lZr7XiG1axhyrpvlyqE/c0OgYSl3g==
|
||||
"@prisma/engines-version@3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009":
|
||||
version "3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009.tgz#ea03ffa723382a526dc6625ce6eae9b6ad984400"
|
||||
integrity sha512-5Dh+qTDhpPR66w6NNAnPs+/W/Qt4r1DSd+qhfPFcDThUK4uxoZKGlPb2IYQn5LL+18aIGnmteDf7BnVMmvBNSQ==
|
||||
|
||||
"@prisma/engines@3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f":
|
||||
version "3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f.tgz#4479099b99f6a082ce5843ee7208943ccedd127f"
|
||||
integrity sha512-bHYubuItSN/DGYo36aDu7xJiJmK52JOSHs4MK+KbceAtwS20BCWadRgtpQ3iZ2EXfN/B1T0iCXlNraaNwnpU2w==
|
||||
"@prisma/engines@3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009":
|
||||
version "3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009.tgz#e5c345cdedb7be83d11c1e0c5ab61d866b411256"
|
||||
integrity sha512-qM+uJbkelB21bnK44gYE049YTHIjHysOuj0mj5U2gDGyNLfmiazlggzFPCgEjgme4U5YB2tYs6Z5Hq08Kl8pjA==
|
||||
|
||||
"@tootallnate/once@2":
|
||||
version "2.0.0"
|
||||
|
@ -1676,22 +1676,22 @@
|
|||
"@webassemblyjs/wast-parser" "1.9.0"
|
||||
"@xtuc/long" "4.2.2"
|
||||
|
||||
"@webpack-cli/configtest@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.0.tgz#8342bef0badfb7dfd3b576f2574ab80c725be043"
|
||||
integrity sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==
|
||||
"@webpack-cli/configtest@^1.1.1":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356"
|
||||
integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==
|
||||
|
||||
"@webpack-cli/info@^1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.0.tgz#b9179c3227ab09cbbb149aa733475fcf99430223"
|
||||
integrity sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==
|
||||
"@webpack-cli/info@^1.4.1":
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea"
|
||||
integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==
|
||||
dependencies:
|
||||
envinfo "^7.7.3"
|
||||
|
||||
"@webpack-cli/serve@^1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2"
|
||||
integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==
|
||||
"@webpack-cli/serve@^1.6.1":
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe"
|
||||
integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==
|
||||
|
||||
"@xtuc/ieee754@^1.2.0":
|
||||
version "1.2.0"
|
||||
|
@ -2259,16 +2259,17 @@ builtin-status-codes@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
||||
integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
|
||||
|
||||
bull@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/bull/-/bull-4.2.1.tgz#c5a7e1496c7903274ce90192e4e5cb18f6c866c0"
|
||||
integrity sha512-YkCQZMOub++siHw3SbYYXZ5xGEn6Tt3BPoCVq/irPNCxUqUYzta8yDlXyyAsfMKMVj0M7PcnynUabfMf9PFpOA==
|
||||
bull@^4.5.1:
|
||||
version "4.5.1"
|
||||
resolved "https://registry.yarnpkg.com/bull/-/bull-4.5.1.tgz#55a96837e95b0bde2ded835bcc3b2725b7f6367c"
|
||||
integrity sha512-tF47nzpjAbrvI6ef0dGfQLPthoFPwxSoqBG4jwvSYs5XZ7RRHDHlspjMMl6HOgbx/c9oDWN2AFFyaGMKSn+5yQ==
|
||||
dependencies:
|
||||
cron-parser "^2.13.0"
|
||||
cron-parser "^4.2.1"
|
||||
debuglog "^1.0.0"
|
||||
get-port "^5.1.1"
|
||||
ioredis "^4.27.0"
|
||||
lodash "^4.17.21"
|
||||
msgpackr "^1.5.2"
|
||||
p-timeout "^3.2.0"
|
||||
semver "^7.3.2"
|
||||
uuid "^8.3.0"
|
||||
|
@ -2806,10 +2807,10 @@ core-js@^2.6.5:
|
|||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
|
||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||
|
||||
core-js@^3.20.3:
|
||||
version "3.20.3"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a"
|
||||
integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==
|
||||
core-js@^3.21.0:
|
||||
version "3.21.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.0.tgz#f479dbfc3dffb035a0827602dd056839a774aa71"
|
||||
integrity sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.3"
|
||||
|
@ -2877,13 +2878,12 @@ create-require@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||
|
||||
cron-parser@^2.13.0:
|
||||
version "2.18.0"
|
||||
resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.18.0.tgz#de1bb0ad528c815548371993f81a54e5a089edcf"
|
||||
integrity sha512-s4odpheTyydAbTBQepsqd2rNWGa2iV3cyo8g7zbI2QQYGLVsfbhmwukayS1XHppe02Oy1fg7mg6xoaraVJeEcg==
|
||||
cron-parser@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.2.1.tgz#b43205d05ccd5c93b097dae64f3bd811f5993af3"
|
||||
integrity sha512-5sJBwDYyCp+0vU5b7POl8zLWfgV5fOHxlc45FWoWdHecGC7MQHCjx0CHivCMRnGFovghKhhyYM+Zm9DcY5qcHg==
|
||||
dependencies:
|
||||
is-nan "^1.3.0"
|
||||
moment-timezone "^0.5.31"
|
||||
luxon "^1.28.0"
|
||||
|
||||
cross-spawn@^7.0.3:
|
||||
version "7.0.3"
|
||||
|
@ -2979,7 +2979,7 @@ css-select@^2.0.0:
|
|||
domutils "^1.7.0"
|
||||
nth-check "^1.0.2"
|
||||
|
||||
css-select@^4.1.3:
|
||||
css-select@^4.1.3, css-select@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
|
||||
integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
|
||||
|
@ -3354,10 +3354,10 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.0:
|
|||
dependencies:
|
||||
domelementtype "^2.2.0"
|
||||
|
||||
dompurify@^2.3.4:
|
||||
version "2.3.4"
|
||||
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.4.tgz#1cf5cf0105ccb4debdf6db162525bd41e6ddacc6"
|
||||
integrity sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ==
|
||||
dompurify@^2.3.5:
|
||||
version "2.3.5"
|
||||
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.5.tgz#c83ed5a3ae5ce23e52efe654ea052ffb358dd7e3"
|
||||
integrity sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==
|
||||
|
||||
domutils@^1.7.0:
|
||||
version "1.7.0"
|
||||
|
@ -4377,7 +4377,7 @@ htmlparser2@^6.1.0:
|
|||
domutils "^2.5.2"
|
||||
entities "^2.0.0"
|
||||
|
||||
htmlparser2@^7.1.2:
|
||||
htmlparser2@^7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5"
|
||||
integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==
|
||||
|
@ -4791,14 +4791,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
|
|||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
is-nan@^1.3.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
|
||||
integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==
|
||||
dependencies:
|
||||
call-bind "^1.0.0"
|
||||
define-properties "^1.1.3"
|
||||
|
||||
is-negative-zero@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
|
||||
|
@ -5108,15 +5100,15 @@ levn@~0.3.0:
|
|||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
linkedom@^0.13.0:
|
||||
version "0.13.0"
|
||||
resolved "https://registry.yarnpkg.com/linkedom/-/linkedom-0.13.0.tgz#15ef2751ee8610a653ee9bb550907ed133bed0a5"
|
||||
integrity sha512-QwWqKvKeWKKQrmMX9JPGtCZ6gXatp1/eKoUPGx0CoXFL8iZAtc6+rMkz2zZuVSjJw7QCw1oj/VH978Zc6WQjfA==
|
||||
linkedom@^0.13.2:
|
||||
version "0.13.2"
|
||||
resolved "https://registry.yarnpkg.com/linkedom/-/linkedom-0.13.2.tgz#455187a4eb9a00f41e8a736c5d362ea7e1cafc05"
|
||||
integrity sha512-lQPdDnml1Rl/T8QW3j10jJ37LMRcZqryy5kwHDIw9AYMabeE4P6kMp2mqJXWjjeXxJ4ebJC05Qx9Xxs4jWhNMw==
|
||||
dependencies:
|
||||
css-select "^4.1.3"
|
||||
css-select "^4.2.1"
|
||||
cssom "^0.5.0"
|
||||
html-escaper "^3.0.3"
|
||||
htmlparser2 "^7.1.2"
|
||||
htmlparser2 "^7.2.0"
|
||||
uhyphen "^0.1.0"
|
||||
|
||||
lit-element@^3.1.0:
|
||||
|
@ -5134,10 +5126,10 @@ lit-html@^2.1.0:
|
|||
dependencies:
|
||||
"@types/trusted-types" "^2.0.2"
|
||||
|
||||
lit@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lit/-/lit-2.1.1.tgz#65f43abca945988f696391f762c645ba51966b0b"
|
||||
integrity sha512-yqDqf36IhXwOxIQSFqCMgpfvDCRdxLCLZl7m/+tO5C9W/OBHUj17qZpiMBT35v97QMVKcKEi1KZ3hZRyTwBNsQ==
|
||||
lit@^2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/lit/-/lit-2.1.3.tgz#b8a94ae2303eb6eb802a6f28cfdf3f288d4fa879"
|
||||
integrity sha512-46KtKy7iDoY3wZ5VSqBlXll6J/tli5gRMPFRWi5qQ01lvIqcO+dYQwb1l1NYZjbzcHnGnCKrMb8nDv7/ZE4Y4g==
|
||||
dependencies:
|
||||
"@lit/reactive-element" "^1.1.0"
|
||||
lit-element "^3.1.0"
|
||||
|
@ -5295,6 +5287,11 @@ lru-cache@^6.0.0:
|
|||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
luxon@^1.28.0:
|
||||
version "1.28.0"
|
||||
resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf"
|
||||
integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==
|
||||
|
||||
make-dir@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||
|
@ -5579,18 +5576,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
|
|||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
||||
moment-timezone@^0.5.31:
|
||||
version "0.5.34"
|
||||
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c"
|
||||
integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==
|
||||
dependencies:
|
||||
moment ">= 2.9.0"
|
||||
|
||||
"moment@>= 2.9.0":
|
||||
version "2.29.1"
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
|
||||
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
|
||||
|
||||
move-concurrently@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
|
||||
|
@ -5628,6 +5613,21 @@ ms@2.1.3:
|
|||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
msgpackr-extract@^1.0.14:
|
||||
version "1.0.16"
|
||||
resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-1.0.16.tgz#701c4f6e6f25c100ae84557092274e8fffeefe45"
|
||||
integrity sha512-fxdRfQUxPrL/TizyfYfMn09dK58e+d65bRD/fcaVH4052vj30QOzzqxcQIS7B0NsqlypEQ/6Du3QmP2DhWFfCA==
|
||||
dependencies:
|
||||
nan "^2.14.2"
|
||||
node-gyp-build "^4.2.3"
|
||||
|
||||
msgpackr@^1.5.2:
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.5.4.tgz#2b6ea6cb7d79c0ad98fc76c68163c48eda50cf0d"
|
||||
integrity sha512-Z7w5Jg+2Q9z9gJxeM68d7tSuWZZGnFIRhZnyqcZCa/1dKkhOCNvR1TUV3zzJ3+vj78vlwKRzUgVDlW4jiSOeDA==
|
||||
optionalDependencies:
|
||||
msgpackr-extract "^1.0.14"
|
||||
|
||||
mustache@^2.3.0:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5"
|
||||
|
@ -5638,7 +5638,7 @@ mute-stream@0.0.8:
|
|||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||
|
||||
nan@^2.12.1:
|
||||
nan@^2.12.1, nan@^2.14.2:
|
||||
version "2.15.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee"
|
||||
integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
|
||||
|
@ -5697,6 +5697,11 @@ node-fetch@^2.6.1:
|
|||
dependencies:
|
||||
whatwg-url "^5.0.0"
|
||||
|
||||
node-gyp-build@^4.2.3:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
|
||||
integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
|
||||
|
||||
node-html-parser@^3.2.0:
|
||||
version "3.3.6"
|
||||
resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-3.3.6.tgz#fdbb3ba16d1252d7197ec39f0260d9c10ef33590"
|
||||
|
@ -6926,12 +6931,12 @@ pretty-time@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e"
|
||||
integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==
|
||||
|
||||
prisma@^3.8.1:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.8.1.tgz#44395cef7cbb1ea86216cb84ee02f856c08a7873"
|
||||
integrity sha512-Q8zHwS9m70TaD7qI8u+8hTAmiTpK+IpvRYF3Rgb/OeWGQJOMgZCFFvNCiSfoLEQ95wilK7ctW3KOpc9AuYnRUA==
|
||||
prisma@^3.9.2:
|
||||
version "3.9.2"
|
||||
resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.9.2.tgz#cc2da4e8db91231dea7465adf9db6e19f11032a9"
|
||||
integrity sha512-i9eK6cexV74OgeWaH3+e6S07kvC9jEZTl6BqtBH398nlCU0tck7mE9dicY6YQd+euvMjjCtY89q4NgmaPnUsSg==
|
||||
dependencies:
|
||||
"@prisma/engines" "3.8.0-43.34df67547cf5598f5a6cd3eb45f14ee70c3fb86f"
|
||||
"@prisma/engines" "3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009"
|
||||
|
||||
process-nextick-args@~2.0.0:
|
||||
version "2.0.1"
|
||||
|
@ -8559,11 +8564,16 @@ vuetify-loader@^1.7.3:
|
|||
file-loader "^6.2.0"
|
||||
loader-utils "^2.0.0"
|
||||
|
||||
vuetify@^2.6, vuetify@^2.6.1:
|
||||
vuetify@^2.6:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.6.2.tgz#1ed4d3c9e734d55202bd566b789cce0e0013279a"
|
||||
integrity sha512-nx3uZkO8MZNMshUEh1xKaQ1hQYepNwWFn3FVxKt+XBVf7ZFscd0GS/a3KZo4B3baXQmziCQAZKNIQF5IWeaIUw==
|
||||
|
||||
vuetify@^2.6.3:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.6.3.tgz#b33ede2da958a40c6ced0ad1f4eda737984b3967"
|
||||
integrity sha512-Zfiz2DZnp1DvxqGaSCGqGjv4mPNAurJJ5Xwy7bzNzIySGLlRdlO8UH6aNWnSgfaAsLP3voxadSGDm6tKM8Ys7w==
|
||||
|
||||
vuex@^3.6.2:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71"
|
||||
|
@ -8595,8 +8605,10 @@ watchpack@^1.7.4:
|
|||
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
|
||||
integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
|
||||
dependencies:
|
||||
chokidar "^3.4.1"
|
||||
graceful-fs "^4.1.2"
|
||||
neo-async "^2.5.0"
|
||||
watchpack-chokidar2 "^2.0.1"
|
||||
optionalDependencies:
|
||||
chokidar "^3.4.1"
|
||||
watchpack-chokidar2 "^2.0.1"
|
||||
|
@ -8631,15 +8643,15 @@ webpack-bundle-analyzer@^4.4.1:
|
|||
sirv "^1.0.7"
|
||||
ws "^7.3.1"
|
||||
|
||||
webpack-cli@^4.9.1:
|
||||
version "4.9.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3"
|
||||
integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==
|
||||
webpack-cli@^4.9.2:
|
||||
version "4.9.2"
|
||||
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d"
|
||||
integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==
|
||||
dependencies:
|
||||
"@discoveryjs/json-ext" "^0.5.0"
|
||||
"@webpack-cli/configtest" "^1.1.0"
|
||||
"@webpack-cli/info" "^1.4.0"
|
||||
"@webpack-cli/serve" "^1.6.0"
|
||||
"@webpack-cli/configtest" "^1.1.1"
|
||||
"@webpack-cli/info" "^1.4.1"
|
||||
"@webpack-cli/serve" "^1.6.1"
|
||||
colorette "^2.0.14"
|
||||
commander "^7.0.0"
|
||||
execa "^5.0.0"
|
||||
|
|
Loading…
Reference in a new issue