diff --git a/README.md b/README.md new file mode 100644 index 0000000..40c0fde --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Ionian + +내가 쓸려고 만든 거. \ No newline at end of file diff --git a/plan.md b/plan.md index 05e7ccb..ef4f063 100644 --- a/plan.md +++ b/plan.md @@ -5,7 +5,7 @@ ### server routing - content - \d+ - - manga + - comic - (?P<page>\d+) - video - diff @@ -34,7 +34,7 @@ - server push - ~~permission~~ - diff - - ~~manga~~ + - ~~comic~~ - video - html - ~~hash~~ diff --git a/src/client/component/contentinfo.tsx b/src/client/component/contentinfo.tsx index 12a45c9..4c42665 100644 --- a/src/client/component/contentinfo.tsx +++ b/src/client/component/contentinfo.tsx @@ -5,7 +5,7 @@ import { LoadingCircle } from '../component/loading'; import { Link, Paper, makeStyles, Theme, Box, useTheme, Typography } from '@material-ui/core'; import { ThumbnailContainer } from '../page/reader/reader'; import { TagChip } from '../component/tagchip'; -import { MangaReader } from '../page/reader/manga'; +import { ComicReader } from '../page/reader/comic'; export const makeContentInfoUrl = (id: number) => `/doc/${id}`; export const makeContentReaderUrl = (id: number) => `/doc/${id}/reader`; @@ -117,14 +117,14 @@ export const ContentInfo = (props: { {props.short ? ({document.tags.map(x => () )}) : ( - ) + ) } ); } -function MangaDetailTag(prop:{tags:string[],classes:{ +function ComicDetailTag(prop:{tags:string[],classes:{ tag_list:string }}){ let allTag = prop.tags; diff --git a/src/client/component/navlist.tsx b/src/client/component/navlist.tsx index 6879d77..8ca037a 100644 --- a/src/client/component/navlist.tsx +++ b/src/client/component/navlist.tsx @@ -32,7 +32,7 @@ export function CommonMenuList(props?:{url?:string}) { return ( {url !== "" && <> } } /> - }> + }> } /> }> diff --git a/src/client/page/contentinfo.tsx b/src/client/page/contentinfo.tsx index 2c201c1..84dd8c1 100644 --- a/src/client/page/contentinfo.tsx +++ b/src/client/page/contentinfo.tsx @@ -9,7 +9,7 @@ import { BackItem, CommonMenuList, ContentInfo, Headline, NavItem, NavList } fro import {NotFoundPage} from './404'; export const makeContentInfoUrl = (id: number) => `/doc/${id}`; -export const makeMangaReaderUrl = (id: number) => `/doc/${id}/reader`; +export const makeComicReaderUrl = (id: number) => `/doc/${id}/reader`; type DocumentState = { doc: Document | undefined, diff --git a/src/client/page/reader/manga.tsx b/src/client/page/reader/comic.tsx similarity index 88% rename from src/client/page/reader/manga.tsx rename to src/client/page/reader/comic.tsx index 631fd83..953e227 100644 --- a/src/client/page/reader/manga.tsx +++ b/src/client/page/reader/comic.tsx @@ -2,18 +2,18 @@ import React, {useState, useEffect} from 'react'; import { Typography, useTheme } from '@material-ui/core'; import { Document } from '../../accessor/document'; -type MangaType = "manga"|"artist cg"|"donjinshi"|"western" +type ComicType = "comic"|"artist cg"|"donjinshi"|"western" export type PresentableTag = { artist:string[], group: string[], series: string[], - type: MangaType, + type: ComicType, character: string[], tags: string[], } -export const MangaReader = (props:{doc:Document})=>{ +export const ComicReader = (props:{doc:Document})=>{ const theme = useTheme(); const additional = props.doc.additional; const [curPage,setCurPage] = useState(0); @@ -40,9 +40,9 @@ export const MangaReader = (props:{doc:Document})=>{ }); //theme.mixins.toolbar.minHeight; return (
-
); } -export default MangaReader; \ No newline at end of file +export default ComicReader; \ No newline at end of file diff --git a/src/client/page/reader/reader.tsx b/src/client/page/reader/reader.tsx index 71601b1..800247c 100644 --- a/src/client/page/reader/reader.tsx +++ b/src/client/page/reader/reader.tsx @@ -1,7 +1,7 @@ import { Typography } from '@material-ui/core'; import React from 'react'; import { Document, makeThumbnailUrl } from '../../accessor/document'; -import {MangaReader} from './manga'; +import {ComicReader} from './comic'; import {VideoReader} from './video' export interface PagePresenterProp{ @@ -14,8 +14,8 @@ interface PagePresenter{ export const getPresenter = (content:Document):PagePresenter => { switch (content.content_type) { - case "manga": - return MangaReader; + case "comic": + return ComicReader; case "video": return VideoReader; } diff --git a/src/content/manga.ts b/src/content/comic.ts similarity index 89% rename from src/content/manga.ts rename to src/content/comic.ts index d9bbc2f..e245954 100644 --- a/src/content/manga.ts +++ b/src/content/comic.ts @@ -3,19 +3,19 @@ import {readZip, readAllFromZip} from '../util/zipwrap'; import { DocumentBody } from '../model/doc'; import {extname} from 'path'; -type MangaType = "doujinshi"|"artist cg"|"manga"|"western"; -interface MangaDesc{ +type ComicType = "doujinshi"|"artist cg"|"manga"|"western"; +interface ComicDesc{ title:string, artist?:string[], group?:string[], series?:string[], - type:MangaType|[MangaType], + type:ComicType|[ComicType], character?:string[], tags?:string[] } const ImageExt = ['.gif', '.png', '.jpeg', '.bmp', '.webp', '.jpg']; -export class MangaReferrer extends createDefaultClass("manga"){ - desc: MangaDesc|undefined; +export class ComicReferrer extends createDefaultClass("comic"){ + desc: ComicDesc|undefined; pagenum: number; additional: ContentConstructOption| undefined; constructor(path:string,option?:ContentConstructOption){ @@ -62,4 +62,4 @@ export class MangaReferrer extends createDefaultClass("manga"){ }; } }; -registerContentReferrer(MangaReferrer); \ No newline at end of file +registerContentReferrer(ComicReferrer); \ No newline at end of file diff --git a/src/content/mod.ts b/src/content/mod.ts index df6fe69..0956d33 100644 --- a/src/content/mod.ts +++ b/src/content/mod.ts @@ -1,3 +1,3 @@ -import './manga'; +import './comic'; import './video'; export {ContentFile, createContentFile} from './file'; \ No newline at end of file diff --git a/src/diff/watcher/MangaConfig.schema.json b/src/diff/watcher/ComicConfig.schema.json similarity index 68% rename from src/diff/watcher/MangaConfig.schema.json rename to src/diff/watcher/ComicConfig.schema.json index 0e9bb2f..c2b29af 100644 --- a/src/diff/watcher/MangaConfig.schema.json +++ b/src/diff/watcher/ComicConfig.schema.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-07/schema#","$ref":"#/definitions/MangaConfig","definitions":{"MangaConfig":{"type":"object","properties":{"watch":{"type":"array","items":{"type":"string"}},"$schema":{"type":"string"}},"required":["watch"],"additionalProperties":false}}} \ No newline at end of file +{"$schema":"http://json-schema.org/draft-07/schema#","$ref":"#/definitions/ComicConfig","definitions":{"ComicConfig":{"type":"object","properties":{"watch":{"type":"array","items":{"type":"string"}},"$schema":{"type":"string"}},"required":["watch"],"additionalProperties":false}}} \ No newline at end of file diff --git a/src/diff/watcher/ComicConfig.ts b/src/diff/watcher/ComicConfig.ts new file mode 100644 index 0000000..ea34493 --- /dev/null +++ b/src/diff/watcher/ComicConfig.ts @@ -0,0 +1,8 @@ +import {ConfigManager} from '../../util/configRW'; +import ComicSchema from "./ComicConfig.schema.json" +export interface ComicConfig{ + watch:string[] +} + +export const ComicConfig = new ConfigManager("comic_config.json",{watch:[]},ComicSchema); + diff --git a/src/diff/watcher/MangaConfig.ts b/src/diff/watcher/MangaConfig.ts deleted file mode 100644 index dad7876..0000000 --- a/src/diff/watcher/MangaConfig.ts +++ /dev/null @@ -1,8 +0,0 @@ -import {ConfigManager} from '../../util/configRW'; -import MangaSchema from "./MangaConfig.schema.json" -export interface MangaConfig{ - watch:string[] -} - -export const MangaConfig = new ConfigManager("manga_config.json",{watch:[]},MangaSchema); - diff --git a/src/diff/watcher/manga_watcher.ts b/src/diff/watcher/comic_watcher.ts similarity index 54% rename from src/diff/watcher/manga_watcher.ts rename to src/diff/watcher/comic_watcher.ts index 0e48ebc..e8fbee8 100644 --- a/src/diff/watcher/manga_watcher.ts +++ b/src/diff/watcher/comic_watcher.ts @@ -3,15 +3,15 @@ import {EventEmitter} from 'events'; import { DocumentAccessor } from '../../model/doc'; import { WatcherFilter } from './watcher_filter'; import { RecursiveWatcher } from './recursive_watcher'; -import { MangaConfig } from './MangaConfig'; +import { ComicConfig } from './ComicConfig'; import {WatcherCompositer} from './compositer' -const createMangaWatcherBase = (path:string)=> { +const createComicWatcherBase = (path:string)=> { return new WatcherFilter(new RecursiveWatcher(path),(x)=>x.endsWith(".zip")); } -export const createMangaWatcher = ()=>{ - const file = MangaConfig.get_config_file(); - console.log(`register manga ${file.watch.join(",")}`) - return new WatcherCompositer(file.watch.map(path=>createMangaWatcherBase(path))); +export const createComicWatcher = ()=>{ + const file = ComicConfig.get_config_file(); + console.log(`register comic ${file.watch.join(",")}`) + return new WatcherCompositer(file.watch.map(path=>createComicWatcherBase(path))); } \ No newline at end of file diff --git a/src/route/all.ts b/src/route/all.ts index 9591cec..d99c3f7 100644 --- a/src/route/all.ts +++ b/src/route/all.ts @@ -2,11 +2,11 @@ import { DefaultContext, Middleware, Next, ParameterizedContext } from 'koa'; import compose from 'koa-compose'; import Router, { IParamMiddleware } from 'koa-router'; import { ContentContext } from './context'; -import MangaRouter from './manga'; +import ComicRouter from './comic'; import VideoRouter from './video'; const table:{[s:string]:Router|undefined} = { - "manga": new MangaRouter, + "comic": new ComicRouter, "video": new VideoRouter } const all_middleware = (cont: string|undefined, restarg: string|undefined)=>async (ctx:ParameterizedContext,next:Next)=>{ diff --git a/src/route/manga.ts b/src/route/comic.ts similarity index 97% rename from src/route/manga.ts rename to src/route/comic.ts index 04117e4..bb03f1e 100644 --- a/src/route/manga.ts +++ b/src/route/comic.ts @@ -84,7 +84,7 @@ async function renderZipImage(ctx: Context, path: string, page: number) { } } -export class MangaRouter extends Router { +export class ComicRouter extends Router { constructor() { super(); this.get("/", async (ctx, next) => { @@ -100,4 +100,4 @@ export class MangaRouter extends Router { } } -export default MangaRouter; +export default ComicRouter; diff --git a/src/server.ts b/src/server.ts index a9d95fb..bcd806f 100644 --- a/src/server.ts +++ b/src/server.ts @@ -14,7 +14,7 @@ import {createUserMiddleWare, createLoginRouter, isAdminFirst, getAdmin} from '. import {createInterface as createReadlineInterface} from 'readline'; import { DocumentAccessor, UserAccessor } from './model/mod'; -import { createMangaWatcher } from './diff/watcher/manga_watcher'; +import { createComicWatcher } from './diff/watcher/comic_watcher'; class ServerApplication{ readonly userController: UserAccessor; @@ -50,7 +50,7 @@ class ServerApplication{ app.use(createUserMiddleWare(this.userController)); let diff_router = createDiffRouter(this.diffManger); - this.diffManger.register("manga",createMangaWatcher()); + this.diffManger.register("comic",createComicWatcher()); let router = new Router(); router.use('/api/diff',diff_router.routes());