sdf
2
.gitignore
vendored
@@ -4,7 +4,7 @@
|
|||||||
/node_modules
|
/node_modules
|
||||||
/.pnp
|
/.pnp
|
||||||
.pnp.js
|
.pnp.js
|
||||||
|
/copy
|
||||||
# testing
|
# testing
|
||||||
/coverage
|
/coverage
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
import React from "react";
|
|
||||||
import { Image } from "@prisma/client";
|
|
||||||
import { Image as GalleryImage } from "react-grid-gallery";
|
|
||||||
import urlJoin from "url-join";
|
|
||||||
import { apiUrl } from "../../../global";
|
|
||||||
import Gallery from "./Gallery";
|
|
||||||
|
|
||||||
async function getImages(): Promise<GalleryImage[]> {
|
|
||||||
const result = await fetch(urlJoin(apiUrl, `images`), {
|
|
||||||
cache: "no-cache",
|
|
||||||
});
|
|
||||||
const imageData: Image[] = await result.json();
|
|
||||||
|
|
||||||
return imageData.map((img, i) => ({
|
|
||||||
width: img.width,
|
|
||||||
height: img.height,
|
|
||||||
src: img.url,
|
|
||||||
caption: img.name,
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function AdminImagesPage() {
|
|
||||||
return <Gallery images={await getImages()} />;
|
|
||||||
}
|
|
||||||
@@ -1,53 +1,15 @@
|
|||||||
import styles from "../../../styles/modules/Category.module.scss";
|
import styles from "../../../styles/modules/Category.module.scss";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { apiUrl } from "../../../global";
|
import { ArticleWithIncludes, CategoryWithIncludes, FetchManager } from "../../../manager/fetchManager";
|
||||||
import { Article, Category } from "@prisma/client";
|
import { formatTextToUrlName } from "../../../utils";
|
||||||
import urlJoin from "url-join";
|
|
||||||
|
|
||||||
async function GetAllArticles(categoryName: string): Promise<any> {
|
|
||||||
const result: Response = await fetch(urlJoin(apiUrl, `articles?categoryName=${categoryName}`), {
|
|
||||||
cache: "force-cache",
|
|
||||||
next: { revalidate: 3600 },
|
|
||||||
});
|
|
||||||
return result.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function GetPopularArticles(categoryName: string): Promise<any> {
|
|
||||||
const result: Response = await fetch(
|
|
||||||
urlJoin(apiUrl, `articles?categoryName=${categoryName}&limit=6&orderBy=popularity`),
|
|
||||||
{
|
|
||||||
cache: "force-cache",
|
|
||||||
next: { revalidate: 3600 },
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return result.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function GetRecentArticles(categoryName: string): Promise<any> {
|
|
||||||
const result: Response = await fetch(
|
|
||||||
urlJoin(apiUrl, `articles?categoryName=${categoryName}&limit=6&orderBy=recent`),
|
|
||||||
{
|
|
||||||
cache: "force-cache",
|
|
||||||
next: { revalidate: 3600 },
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return result.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function GetCategory(categoryName: string): Promise<any> {
|
|
||||||
const result: Response = await fetch(urlJoin(apiUrl, `categories/name/${categoryName}`), {
|
|
||||||
cache: "force-cache",
|
|
||||||
next: { revalidate: 3600 },
|
|
||||||
});
|
|
||||||
return result.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function CategoryPage({ params }: { params: { categoryName: string } }) {
|
export default async function CategoryPage({ params }: { params: { categoryName: string } }) {
|
||||||
const categoryName = params.categoryName.toLowerCase().replaceAll("%20", " ");
|
const categoryName = formatTextToUrlName(params.categoryName);
|
||||||
const category: Category = await GetCategory(categoryName);
|
const category: CategoryWithIncludes = await FetchManager.Category.get(categoryName);
|
||||||
const allArticles: Article[] = await GetAllArticles(categoryName);
|
|
||||||
const popularArticles: Article[] = await GetPopularArticles(categoryName);
|
const allArticles: ArticleWithIncludes[] = await FetchManager.Article.getByCategory(categoryName);
|
||||||
const recentArticles: Article[] = await GetRecentArticles(categoryName);
|
// const popularArticles: Article[] = await GetPopularArticles(categoryName);
|
||||||
|
// const recentArticles: Article[] = await GetRecentArticles(categoryName);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.category}>
|
<div className={styles.category}>
|
||||||
@@ -55,7 +17,7 @@ export default async function CategoryPage({ params }: { params: { categoryName:
|
|||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
<div className={`${styles.showcase} ${styles.smallShowcase}`}>
|
<div className={`${styles.showcase} ${styles.smallShowcase}`}>
|
||||||
<h2>Most popular articles</h2>
|
<h2>Most popular articles</h2>
|
||||||
{popularArticles?.map((a, i) => {
|
{/* {popularArticles?.map((a, i) => {
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
<Link key={i} href={`/articles/${category.name}/${a.name}`}>
|
<Link key={i} href={`/articles/${category.name}/${a.name}`}>
|
||||||
@@ -63,7 +25,7 @@ export default async function CategoryPage({ params }: { params: { categoryName:
|
|||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
})}
|
})} */}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* <div className={`${styles.showcase} ${styles.smallShowcase}`}>
|
{/* <div className={`${styles.showcase} ${styles.smallShowcase}`}>
|
||||||
@@ -81,15 +43,17 @@ export default async function CategoryPage({ params }: { params: { categoryName:
|
|||||||
|
|
||||||
<div className={styles.showcase}>
|
<div className={styles.showcase}>
|
||||||
<h2>All articles</h2>
|
<h2>All articles</h2>
|
||||||
{allArticles?.map((a, i) => {
|
{allArticles
|
||||||
{
|
? Array.from(allArticles).map((a, i) => {
|
||||||
return (
|
{
|
||||||
<Link key={i} href={`/articles/${category.name}/${a.name}`}>
|
return (
|
||||||
{a.title}
|
<Link key={i} href={`/articles/${category.name}/${a.name}`}>
|
||||||
</Link>
|
{a.title}
|
||||||
);
|
</Link>
|
||||||
}
|
);
|
||||||
})}
|
}
|
||||||
|
})
|
||||||
|
: ""}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Gallery as ReactGridGallery, Image as ImageType, ThumbnailImageProps } from "react-grid-gallery";
|
import { Gallery as ReactGridGallery, Image as ImageType, ThumbnailImageProps } from "react-grid-gallery";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
32
components/ImageUpload.tsx
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/* eslint-disable @next/next/no-img-element */
|
||||||
|
"use client";
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import { useRef } from "react";
|
||||||
|
export default function ImageUpload() {
|
||||||
|
const [selectedImage, setSelectedImage] = useState(null);
|
||||||
|
const inputRef = useRef<HTMLInputElement>(null);
|
||||||
|
|
||||||
|
const handleImageChange = (event) => {
|
||||||
|
setSelectedImage(URL.createObjectURL(event.target.files[0]));
|
||||||
|
};
|
||||||
|
|
||||||
|
async function uploadImage() {
|
||||||
|
if (selectedImage) {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append("image", selectedImage);
|
||||||
|
const response = await fetch("/api/images/", {
|
||||||
|
method: "POST",
|
||||||
|
body: formData,
|
||||||
|
});
|
||||||
|
console.log(await response.json());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<input onChange={handleImageChange} ref={inputRef} type="file" name="image" accept="image/*" />
|
||||||
|
{selectedImage && <img src={selectedImage} alt="Selected" />}
|
||||||
|
<button onClick={uploadImage}>Upload</button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -18,6 +18,7 @@ export class FetchManager {
|
|||||||
|
|
||||||
static Article = class {
|
static Article = class {
|
||||||
static async list(noCache: boolean = false): Promise<ArticleWithIncludes[]> {
|
static async list(noCache: boolean = false): Promise<ArticleWithIncludes[]> {
|
||||||
|
console.log(urlJoin(apiUrl, `articles`))
|
||||||
const response = await fetch(urlJoin(apiUrl, `articles`), {
|
const response = await fetch(urlJoin(apiUrl, `articles`), {
|
||||||
cache: GLOBAL_NO_CACHE || noCache ? "no-cache" : "force-cache",
|
cache: GLOBAL_NO_CACHE || noCache ? "no-cache" : "force-cache",
|
||||||
next: { revalidate: 60 * 10 },
|
next: { revalidate: 60 * 10 },
|
||||||
@@ -26,6 +27,7 @@ export class FetchManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static async get(id: string, noCache: boolean = false): Promise<ArticleWithIncludes> {
|
static async get(id: string, noCache: boolean = false): Promise<ArticleWithIncludes> {
|
||||||
|
urlJoin(apiUrl, `articles/${id}`)
|
||||||
const response = await fetch(urlJoin(apiUrl, `articles/${id}`), {
|
const response = await fetch(urlJoin(apiUrl, `articles/${id}`), {
|
||||||
cache: GLOBAL_NO_CACHE || noCache ? "no-cache" : "force-cache",
|
cache: GLOBAL_NO_CACHE || noCache ? "no-cache" : "force-cache",
|
||||||
next: { revalidate: 60 * 10 },
|
next: { revalidate: 60 * 10 },
|
||||||
@@ -42,6 +44,15 @@ export class FetchManager {
|
|||||||
})
|
})
|
||||||
return await response.json()
|
return await response.json()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async getByCategory(name: string, noCache: boolean = false): Promise<ArticleWithIncludes[]> {
|
||||||
|
|
||||||
|
const response = await fetch(urlJoin(apiUrl, `articles?categoryName=${name}`), {
|
||||||
|
cache: GLOBAL_NO_CACHE || noCache ? "no-cache" : "force-cache",
|
||||||
|
next: { revalidate: 60 * 10 },
|
||||||
|
})
|
||||||
|
return await response.json()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
265
package-lock.json
generated
@@ -11,13 +11,16 @@
|
|||||||
"@next/font": "13.0.7",
|
"@next/font": "13.0.7",
|
||||||
"@prisma/client": "^4.9.0",
|
"@prisma/client": "^4.9.0",
|
||||||
"@types/express": "^4.17.15",
|
"@types/express": "^4.17.15",
|
||||||
|
"@types/formidable": "^2.0.5",
|
||||||
"@types/marked": "^4.0.8",
|
"@types/marked": "^4.0.8",
|
||||||
"@types/react": "18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"@types/react-dom": "18.0.9",
|
"@types/react-dom": "18.0.9",
|
||||||
"encoding": "^0.1.13",
|
"encoding": "^0.1.13",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.30.0",
|
||||||
"eslint-config-next": "13.0.7",
|
"eslint-config-next": "13.0.7",
|
||||||
|
"formidable": "^2.1.1",
|
||||||
"marked": "^4.2.4",
|
"marked": "^4.2.4",
|
||||||
|
"multer": "^1.4.5-lts.1",
|
||||||
"next": "^13.1.6",
|
"next": "^13.1.6",
|
||||||
"prismjs": "^1.29.0",
|
"prismjs": "^1.29.0",
|
||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
@@ -40,6 +43,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@fec/remark-a11y-emoji": "^3.1.0",
|
"@fec/remark-a11y-emoji": "^3.1.0",
|
||||||
|
"@types/multer": "^1.4.7",
|
||||||
"@types/node": "^18.11.17",
|
"@types/node": "^18.11.17",
|
||||||
"@types/prismjs": "^1.26.0",
|
"@types/prismjs": "^1.26.0",
|
||||||
"prisma": "^4.9.0"
|
"prisma": "^4.9.0"
|
||||||
@@ -1109,6 +1113,14 @@
|
|||||||
"@types/range-parser": "*"
|
"@types/range-parser": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/formidable": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-uvMcdn/KK3maPOaVUAc3HEYbCEhjaGFwww4EsX6IJfWIJ1tzHtDHczuImH3GKdusPnAAmzB07St90uabZeCKPA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/hast": {
|
"node_modules/@types/hast": {
|
||||||
"version": "2.3.4",
|
"version": "2.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
|
||||||
@@ -1145,6 +1157,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
|
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
|
||||||
"integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
|
"integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/multer": {
|
||||||
|
"version": "1.4.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.7.tgz",
|
||||||
|
"integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/express": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.11.18",
|
"version": "18.11.18",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
|
||||||
@@ -1423,6 +1444,11 @@
|
|||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/append-field": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
|
||||||
|
},
|
||||||
"node_modules/aproba": {
|
"node_modules/aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
||||||
@@ -1513,6 +1539,11 @@
|
|||||||
"get-intrinsic": "^1.1.3"
|
"get-intrinsic": "^1.1.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/asap": {
|
||||||
|
"version": "2.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||||
|
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
|
||||||
|
},
|
||||||
"node_modules/ast-types-flow": {
|
"node_modules/ast-types-flow": {
|
||||||
"version": "0.0.7",
|
"version": "0.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
|
||||||
@@ -1794,6 +1825,17 @@
|
|||||||
"resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
|
||||||
"integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
|
"integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/busboy": {
|
||||||
|
"version": "1.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
||||||
|
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
||||||
|
"dependencies": {
|
||||||
|
"streamsearch": "^1.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.16.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/cacache": {
|
"node_modules/cacache": {
|
||||||
"version": "9.3.0",
|
"version": "9.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-9.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/cacache/-/cacache-9.3.0.tgz",
|
||||||
@@ -2488,6 +2530,15 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/dezalgo": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
|
||||||
|
"dependencies": {
|
||||||
|
"asap": "^2.0.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/diff": {
|
"node_modules/diff": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
|
||||||
@@ -3573,6 +3624,20 @@
|
|||||||
"node": ">=0.4.x"
|
"node": ">=0.4.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/formidable": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"dezalgo": "^1.0.4",
|
||||||
|
"hexoid": "^1.0.0",
|
||||||
|
"once": "^1.4.0",
|
||||||
|
"qs": "^6.11.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://ko-fi.com/tunnckoCore/commissions"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/from2": {
|
"node_modules/from2": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
|
||||||
@@ -4124,6 +4189,14 @@
|
|||||||
"url": "https://github.com/sponsors/wooorm"
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/hexoid": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/highlight.js": {
|
"node_modules/highlight.js": {
|
||||||
"version": "10.7.3",
|
"version": "10.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
|
||||||
@@ -5794,6 +5867,14 @@
|
|||||||
"url": "https://opencollective.com/unified"
|
"url": "https://opencollective.com/unified"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/media-typer": {
|
||||||
|
"version": "0.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||||
|
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/memoize-one": {
|
"node_modules/memoize-one": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||||
@@ -6356,6 +6437,25 @@
|
|||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/mime-db": {
|
||||||
|
"version": "1.52.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||||
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-types": {
|
||||||
|
"version": "2.1.35",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||||
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||||
|
"dependencies": {
|
||||||
|
"mime-db": "1.52.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/mimer": {
|
"node_modules/mimer": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/mimer/-/mimer-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/mimer/-/mimer-1.1.0.tgz",
|
||||||
@@ -6459,6 +6559,23 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||||
},
|
},
|
||||||
|
"node_modules/multer": {
|
||||||
|
"version": "1.4.5-lts.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
|
||||||
|
"integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"append-field": "^1.0.0",
|
||||||
|
"busboy": "^1.0.0",
|
||||||
|
"concat-stream": "^1.5.2",
|
||||||
|
"mkdirp": "^0.5.4",
|
||||||
|
"object-assign": "^4.1.1",
|
||||||
|
"type-is": "^1.6.4",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/mute-stream": {
|
"node_modules/mute-stream": {
|
||||||
"version": "0.0.7",
|
"version": "0.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
||||||
@@ -7333,6 +7450,20 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/qs": {
|
||||||
|
"version": "6.11.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
||||||
|
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"side-channel": "^1.0.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/queue": {
|
"node_modules/queue": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz",
|
||||||
@@ -8446,6 +8577,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
|
||||||
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
|
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/streamsearch": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/string_decoder": {
|
"node_modules/string_decoder": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
@@ -8980,6 +9119,18 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/type-is": {
|
||||||
|
"version": "1.6.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
|
||||||
|
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
|
||||||
|
"dependencies": {
|
||||||
|
"media-typer": "0.3.0",
|
||||||
|
"mime-types": "~2.1.24"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/typed-array-length": {
|
"node_modules/typed-array-length": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
|
||||||
@@ -10297,6 +10448,14 @@
|
|||||||
"@types/range-parser": "*"
|
"@types/range-parser": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/formidable": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-uvMcdn/KK3maPOaVUAc3HEYbCEhjaGFwww4EsX6IJfWIJ1tzHtDHczuImH3GKdusPnAAmzB07St90uabZeCKPA==",
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/hast": {
|
"@types/hast": {
|
||||||
"version": "2.3.4",
|
"version": "2.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
|
||||||
@@ -10333,6 +10492,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
|
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
|
||||||
"integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
|
"integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
|
||||||
},
|
},
|
||||||
|
"@types/multer": {
|
||||||
|
"version": "1.4.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.7.tgz",
|
||||||
|
"integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/express": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.11.18",
|
"version": "18.11.18",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
|
||||||
@@ -10530,6 +10698,11 @@
|
|||||||
"picomatch": "^2.0.4"
|
"picomatch": "^2.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"append-field": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
|
||||||
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
||||||
@@ -10599,6 +10772,11 @@
|
|||||||
"get-intrinsic": "^1.1.3"
|
"get-intrinsic": "^1.1.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"asap": {
|
||||||
|
"version": "2.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||||
|
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
|
||||||
|
},
|
||||||
"ast-types-flow": {
|
"ast-types-flow": {
|
||||||
"version": "0.0.7",
|
"version": "0.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
|
||||||
@@ -10815,6 +10993,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
|
||||||
"integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
|
"integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
|
||||||
},
|
},
|
||||||
|
"busboy": {
|
||||||
|
"version": "1.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
||||||
|
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
||||||
|
"requires": {
|
||||||
|
"streamsearch": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cacache": {
|
"cacache": {
|
||||||
"version": "9.3.0",
|
"version": "9.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-9.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/cacache/-/cacache-9.3.0.tgz",
|
||||||
@@ -11354,6 +11540,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
|
||||||
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
|
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
|
||||||
},
|
},
|
||||||
|
"dezalgo": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
|
||||||
|
"requires": {
|
||||||
|
"asap": "^2.0.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"diff": {
|
"diff": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
|
||||||
@@ -12203,6 +12398,17 @@
|
|||||||
"resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
|
||||||
"integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="
|
"integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="
|
||||||
},
|
},
|
||||||
|
"formidable": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==",
|
||||||
|
"requires": {
|
||||||
|
"dezalgo": "^1.0.4",
|
||||||
|
"hexoid": "^1.0.0",
|
||||||
|
"once": "^1.4.0",
|
||||||
|
"qs": "^6.11.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"from2": {
|
"from2": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
|
||||||
@@ -12602,6 +12808,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hexoid": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g=="
|
||||||
|
},
|
||||||
"highlight.js": {
|
"highlight.js": {
|
||||||
"version": "10.7.3",
|
"version": "10.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
|
||||||
@@ -13827,6 +14038,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
|
||||||
"integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A=="
|
"integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A=="
|
||||||
},
|
},
|
||||||
|
"media-typer": {
|
||||||
|
"version": "0.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||||
|
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
|
||||||
|
},
|
||||||
"memoize-one": {
|
"memoize-one": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||||
@@ -14145,6 +14361,19 @@
|
|||||||
"picomatch": "^2.3.1"
|
"picomatch": "^2.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"mime-db": {
|
||||||
|
"version": "1.52.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||||
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
|
||||||
|
},
|
||||||
|
"mime-types": {
|
||||||
|
"version": "2.1.35",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||||
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||||
|
"requires": {
|
||||||
|
"mime-db": "1.52.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"mimer": {
|
"mimer": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/mimer/-/mimer-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/mimer/-/mimer-1.1.0.tgz",
|
||||||
@@ -14226,6 +14455,20 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||||
},
|
},
|
||||||
|
"multer": {
|
||||||
|
"version": "1.4.5-lts.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
|
||||||
|
"integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
|
||||||
|
"requires": {
|
||||||
|
"append-field": "^1.0.0",
|
||||||
|
"busboy": "^1.0.0",
|
||||||
|
"concat-stream": "^1.5.2",
|
||||||
|
"mkdirp": "^0.5.4",
|
||||||
|
"object-assign": "^4.1.1",
|
||||||
|
"type-is": "^1.6.4",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"mute-stream": {
|
"mute-stream": {
|
||||||
"version": "0.0.7",
|
"version": "0.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
||||||
@@ -14883,6 +15126,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
||||||
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
|
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
|
||||||
},
|
},
|
||||||
|
"qs": {
|
||||||
|
"version": "6.11.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
||||||
|
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
|
||||||
|
"requires": {
|
||||||
|
"side-channel": "^1.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"queue": {
|
"queue": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz",
|
||||||
@@ -15715,6 +15966,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
|
||||||
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
|
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
|
||||||
},
|
},
|
||||||
|
"streamsearch": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
|
||||||
|
},
|
||||||
"string_decoder": {
|
"string_decoder": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
@@ -16111,6 +16367,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
|
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
|
||||||
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
|
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
|
||||||
},
|
},
|
||||||
|
"type-is": {
|
||||||
|
"version": "1.6.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
|
||||||
|
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
|
||||||
|
"requires": {
|
||||||
|
"media-typer": "0.3.0",
|
||||||
|
"mime-types": "~2.1.24"
|
||||||
|
}
|
||||||
|
},
|
||||||
"typed-array-length": {
|
"typed-array-length": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
|
||||||
|
|||||||
@@ -15,13 +15,16 @@
|
|||||||
"@next/font": "13.0.7",
|
"@next/font": "13.0.7",
|
||||||
"@prisma/client": "^4.9.0",
|
"@prisma/client": "^4.9.0",
|
||||||
"@types/express": "^4.17.15",
|
"@types/express": "^4.17.15",
|
||||||
|
"@types/formidable": "^2.0.5",
|
||||||
"@types/marked": "^4.0.8",
|
"@types/marked": "^4.0.8",
|
||||||
"@types/react": "18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"@types/react-dom": "18.0.9",
|
"@types/react-dom": "18.0.9",
|
||||||
"encoding": "^0.1.13",
|
"encoding": "^0.1.13",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.30.0",
|
||||||
"eslint-config-next": "13.0.7",
|
"eslint-config-next": "13.0.7",
|
||||||
|
"formidable": "^2.1.1",
|
||||||
"marked": "^4.2.4",
|
"marked": "^4.2.4",
|
||||||
|
"multer": "^1.4.5-lts.1",
|
||||||
"next": "^13.1.6",
|
"next": "^13.1.6",
|
||||||
"prismjs": "^1.29.0",
|
"prismjs": "^1.29.0",
|
||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
@@ -44,6 +47,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@fec/remark-a11y-emoji": "^3.1.0",
|
"@fec/remark-a11y-emoji": "^3.1.0",
|
||||||
|
"@types/multer": "^1.4.7",
|
||||||
"@types/node": "^18.11.17",
|
"@types/node": "^18.11.17",
|
||||||
"@types/prismjs": "^1.26.0",
|
"@types/prismjs": "^1.26.0",
|
||||||
"prisma": "^4.9.0"
|
"prisma": "^4.9.0"
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
import { Request, Response } from "express";
|
|
||||||
import prisma from "../../../lib/prisma";
|
|
||||||
import { Prisma } from "@prisma/client";
|
|
||||||
|
|
||||||
export default async function handler(req: Request, res: Response) {
|
|
||||||
res.setHeader("Content-Type", "application/json");
|
|
||||||
|
|
||||||
if (req.method == "GET") {
|
|
||||||
res.send(await prisma.image.findMany())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1
storage/backup/serial
Normal file
@@ -0,0 +1 @@
|
|||||||
|
zrpmayg1wugrgxpm
|
||||||
26
storage/cache/json/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_exiftool.json
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
[{
|
||||||
|
"SourceFile": "/photoprism/storage/users/urpmb0z2xmpahuqx/upload/sesssmy6hfc1umzov2/Berlin_Brandenburger_Tor_im_Sonnenuntergang_Leitmotiv_German_Summer_Cities.jpg",
|
||||||
|
"ExifToolVersion": 12.40,
|
||||||
|
"FileName": "Berlin_Brandenburger_Tor_im_Sonnenuntergang_Leitmotiv_German_Summer_Cities.jpg",
|
||||||
|
"Directory": "/photoprism/storage/users/urpmb0z2xmpahuqx/upload/sesssmy6hfc1umzov2",
|
||||||
|
"FileSize": 246578,
|
||||||
|
"FileModifyDate": "2023:02:05 17:25:02+00:00",
|
||||||
|
"FileAccessDate": "2023:02:05 17:25:02+00:00",
|
||||||
|
"FileInodeChangeDate": "2023:02:05 17:25:02+00:00",
|
||||||
|
"FilePermissions": 100664,
|
||||||
|
"FileType": "JPEG",
|
||||||
|
"FileTypeExtension": "JPG",
|
||||||
|
"MIMEType": "image/jpeg",
|
||||||
|
"JFIFVersion": "1 1",
|
||||||
|
"ResolutionUnit": 0,
|
||||||
|
"XResolution": 1,
|
||||||
|
"YResolution": 1,
|
||||||
|
"ImageWidth": 1600,
|
||||||
|
"ImageHeight": 900,
|
||||||
|
"EncodingProcess": 2,
|
||||||
|
"BitsPerSample": 8,
|
||||||
|
"ColorComponents": 3,
|
||||||
|
"YCbCrSubSampling": "1 1",
|
||||||
|
"ImageSize": "1600 900",
|
||||||
|
"Megapixels": 1.44
|
||||||
|
}]
|
||||||
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_100x100_center.jpg
vendored
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_1280x1024_fit.jpg
vendored
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_1920x1200_fit.jpg
vendored
Normal file
|
After Width: | Height: | Size: 264 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_224x224_center.jpg
vendored
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_224x224_left.jpg
vendored
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_224x224_right.jpg
vendored
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_3x3_resize.png
vendored
Normal file
|
After Width: | Height: | Size: 102 B |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_500x500_center.jpg
vendored
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_50x50_center.jpg
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
storage/cache/thumbnails/d/0/3/d036a457124b1e5d95754125963f16653b5f6650_720x720_fit.jpg
vendored
Normal file
|
After Width: | Height: | Size: 71 KiB |
6
storage/config/hub.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Version: 221118-e58fee0fb-Linux-AMD64
|
||||||
|
Key: 0427e51091ac43eaaa55978febab4e2112bad60c
|
||||||
|
Secret: be0711bf10f092235e039884f0039400
|
||||||
|
Session: 54a3619247ffec19480e915f526d69bfd3b82297b3d722fafafe9b60b897e45fe90bc57a500989ca4aa5baef53f1063b5fa5dc45ebeb864f575005341e9186832bd2915f576fb192223ca304c439313aba793c82faae63402518682510396386b8
|
||||||
|
Status: ce
|
||||||
|
Serial: zrpmayg1wugrgxpm
|
||||||
62
storage/config/settings.yml
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
UI:
|
||||||
|
Scrollbar: true
|
||||||
|
Zoom: false
|
||||||
|
Theme: default
|
||||||
|
Language: en
|
||||||
|
TimeZone: ""
|
||||||
|
Search:
|
||||||
|
BatchSize: 0
|
||||||
|
Maps:
|
||||||
|
Animate: 0
|
||||||
|
Style: ""
|
||||||
|
Features:
|
||||||
|
Account: true
|
||||||
|
Advanced: false
|
||||||
|
Albums: true
|
||||||
|
Archive: true
|
||||||
|
Delete: false
|
||||||
|
Download: true
|
||||||
|
Edit: true
|
||||||
|
Estimates: false
|
||||||
|
Favorites: true
|
||||||
|
Files: true
|
||||||
|
Folders: true
|
||||||
|
Import: true
|
||||||
|
Labels: false
|
||||||
|
Library: false
|
||||||
|
Logs: true
|
||||||
|
Moments: false
|
||||||
|
People: false
|
||||||
|
Places: false
|
||||||
|
Private: true
|
||||||
|
Ratings: true
|
||||||
|
Reactions: true
|
||||||
|
Review: false
|
||||||
|
Search: true
|
||||||
|
Services: true
|
||||||
|
Settings: true
|
||||||
|
Share: true
|
||||||
|
Upload: true
|
||||||
|
Videos: true
|
||||||
|
Import:
|
||||||
|
Path: /
|
||||||
|
Move: false
|
||||||
|
Index:
|
||||||
|
Path: /
|
||||||
|
Convert: true
|
||||||
|
Rescan: false
|
||||||
|
SkipArchived: false
|
||||||
|
Stack:
|
||||||
|
UUID: true
|
||||||
|
Meta: true
|
||||||
|
Name: false
|
||||||
|
Share:
|
||||||
|
Title: ""
|
||||||
|
Download:
|
||||||
|
Name: file
|
||||||
|
Disabled: false
|
||||||
|
Originals: true
|
||||||
|
MediaRaw: false
|
||||||
|
MediaSidecar: false
|
||||||
|
Templates:
|
||||||
|
Default: index.gohtml
|
||||||
1
storage/serial
Normal file
@@ -0,0 +1 @@
|
|||||||
|
zrpmayg1wugrgxpm
|
||||||
16
storage/sidecar/2023/02/20230205_172502_28541355.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
TakenAt: 2023-02-05T17:25:04Z
|
||||||
|
UID: prpmb1v3h8wlphpy
|
||||||
|
Type: image
|
||||||
|
Title: Berlin Brandenburger Tor Im Sonnenuntergang Leitmotiv German Summer Cities
|
||||||
|
OriginalName: Berlin_Brandenburger_Tor_im_Sonnenuntergang_Leitmotiv_German_Summer_Cities
|
||||||
|
TimeZone: UTC
|
||||||
|
Year: -1
|
||||||
|
Month: -1
|
||||||
|
Day: -1
|
||||||
|
Quality: 1
|
||||||
|
Details:
|
||||||
|
Keywords: berlin, brandenburger, cities, german, gold, historic, leitmotiv, sonnenuntergang,
|
||||||
|
summer, tor
|
||||||
|
CreatedBy: urpmb0z2xmpahuqx
|
||||||
|
CreatedAt: 2023-02-05T17:25:07.100920585Z
|
||||||
|
UpdatedAt: 2023-02-05T17:25:07.254378706Z
|
||||||