@riffyh/adapter-niyaniya 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +27 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/dist/index.mjs
CHANGED
|
@@ -43,59 +43,43 @@ const getBookImage = async (size, bookId, bookKey, dataId, dataKey, crt, userAge
|
|
|
43
43
|
};
|
|
44
44
|
//#endregion
|
|
45
45
|
//#region src/constants/namespace.ts
|
|
46
|
-
let Namespace = /* @__PURE__ */ function(Namespace) {
|
|
47
|
-
Namespace[Namespace["Artist"] = 1] = "Artist";
|
|
48
|
-
Namespace[Namespace["Circle"] = 2] = "Circle";
|
|
49
|
-
Namespace[Namespace["Parody"] = 3] = "Parody";
|
|
50
|
-
Namespace[Namespace["Magazine"] = 4] = "Magazine";
|
|
51
|
-
Namespace[Namespace["Character"] = 5] = "Character";
|
|
52
|
-
Namespace[Namespace["Cosplayer"] = 6] = "Cosplayer";
|
|
53
|
-
Namespace[Namespace["Uploader"] = 7] = "Uploader";
|
|
54
|
-
Namespace[Namespace["Male"] = 8] = "Male";
|
|
55
|
-
Namespace[Namespace["Female"] = 9] = "Female";
|
|
56
|
-
Namespace[Namespace["Mixed"] = 10] = "Mixed";
|
|
57
|
-
Namespace[Namespace["Language"] = 11] = "Language";
|
|
58
|
-
Namespace[Namespace["Other"] = 12] = "Other";
|
|
59
|
-
Namespace[Namespace["Reclass"] = 13] = "Reclass";
|
|
60
|
-
return Namespace;
|
|
61
|
-
}({});
|
|
62
46
|
const namespace = {
|
|
63
|
-
[
|
|
64
|
-
[
|
|
65
|
-
[
|
|
66
|
-
[
|
|
67
|
-
[
|
|
68
|
-
[
|
|
69
|
-
[
|
|
70
|
-
[
|
|
71
|
-
[
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
47
|
+
[1]: "artist",
|
|
48
|
+
[2]: "circle",
|
|
49
|
+
[3]: "parody",
|
|
50
|
+
[4]: "magazine",
|
|
51
|
+
[5]: "character",
|
|
52
|
+
[6]: "cosplayer",
|
|
53
|
+
[7]: "uploader",
|
|
54
|
+
[8]: "male",
|
|
55
|
+
[9]: "female",
|
|
56
|
+
[10]: "mixed",
|
|
57
|
+
[11]: "language",
|
|
58
|
+
[12]: "other",
|
|
59
|
+
[13]: "reclass"
|
|
76
60
|
};
|
|
77
61
|
//#endregion
|
|
78
62
|
//#region src/constants/tagTypeMap.ts
|
|
79
63
|
const tagTypeMap = {
|
|
80
|
-
[
|
|
81
|
-
[
|
|
82
|
-
[
|
|
83
|
-
[
|
|
84
|
-
[
|
|
85
|
-
[
|
|
86
|
-
[
|
|
87
|
-
[
|
|
88
|
-
[
|
|
89
|
-
[
|
|
90
|
-
[
|
|
91
|
-
[
|
|
92
|
-
[
|
|
64
|
+
[1]: TagType.Artist,
|
|
65
|
+
[2]: TagType.Artist,
|
|
66
|
+
[3]: TagType.Parody,
|
|
67
|
+
[4]: TagType.Group,
|
|
68
|
+
[5]: TagType.Character,
|
|
69
|
+
[6]: TagType.Character,
|
|
70
|
+
[7]: TagType.Tag,
|
|
71
|
+
[8]: TagType.Tag,
|
|
72
|
+
[9]: TagType.Tag,
|
|
73
|
+
[10]: TagType.Tag,
|
|
74
|
+
[11]: TagType.Language,
|
|
75
|
+
[12]: TagType.Tag,
|
|
76
|
+
[13]: TagType.Tag
|
|
93
77
|
};
|
|
94
78
|
//#endregion
|
|
95
79
|
//#region src/getGalery.ts
|
|
96
80
|
const getGallery = async ({ id }, options) => {
|
|
97
81
|
const [bookId, bookKey] = id.split(".");
|
|
98
|
-
if (!bookId || !bookKey) throw new Error("
|
|
82
|
+
if (!bookId || !bookKey) throw new Error("unable to parse ids");
|
|
99
83
|
const [bookDetail, bookData] = await Promise.all([getBookDetail(bookId, bookKey, options.userAgent), getBookData(bookId, bookKey, options.crt, options.userAgent)]);
|
|
100
84
|
const maxSize = Math.max(...Object.keys(bookData.data).map((v) => Number(v)));
|
|
101
85
|
const bookImages = await getBookImage(maxSize, bookId, bookKey, bookData.data[maxSize].id.toString(), bookData.data[maxSize].key, options.crt, options.userAgent);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/headers.ts","../src/functions/getBookData.ts","../src/functions/getBookDetail.ts","../src/functions/getBookImages.ts","../src/constants/namespace.ts","../src/constants/tagTypeMap.ts","../src/getGalery.ts","../src/getListing.ts","../src/getImage.ts","../src/index.ts"],"sourcesContent":["export const headers = {\n Accept: \"*/*\",\n Origin: \"https://niyaniya.moe\",\n Referer: \"https://niyaniya.moe/\",\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaData } from \"../types/NiyaData\";\n\nexport const getBookData = async (\n bookId: string,\n bookKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/detail/${bookId}/${bookKey}?${new URLSearchParams({\n crt,\n }).toString()}`,\n {\n method: \"POST\",\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaData>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaGallery } from \"../types/NiyaGallery\";\n\nexport const getBookDetail = async (bookId: string, bookKey: string, userAgent: string) => {\n const data = await fetch(`https://api.schale.network/books/detail/${bookId}/${bookKey}`, {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaGallery>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaImages } from \"../types/NiyaImages\";\n\nexport const getBookImage = async (\n size: number,\n bookId: string,\n bookKey: string,\n dataId: string,\n dataKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/data/${bookId}/${bookKey}/${dataId}/${dataKey}/${size}?${new URLSearchParams(\n {\n crt,\n },\n ).toString()}`,\n {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaImages>;\n else throw o;\n });\n\n return data;\n};\n","export enum Namespace {\n Artist = 1,\n Circle = 2,\n Parody = 3,\n Magazine = 4,\n Character = 5,\n Cosplayer = 6,\n Uploader = 7,\n Male = 8,\n Female = 9,\n Mixed = 10,\n Language = 11,\n Other = 12,\n Reclass = 13,\n}\n\nexport const namespace: Record<number, string> = {\n [Namespace.Artist]: \"artist\",\n [Namespace.Circle]: \"circle\",\n [Namespace.Parody]: \"parody\",\n [Namespace.Magazine]: \"magazine\",\n [Namespace.Character]: \"character\",\n [Namespace.Cosplayer]: \"cosplayer\",\n [Namespace.Uploader]: \"uploader\",\n [Namespace.Male]: \"male\",\n [Namespace.Female]: \"female\",\n [Namespace.Mixed]: \"mixed\",\n [Namespace.Language]: \"language\",\n [Namespace.Other]: \"other\",\n [Namespace.Reclass]: \"reclass\",\n};\n","import { TagType } from \"@riffyh/commons\";\nimport { Namespace } from \"./namespace\";\n\nexport const tagTypeMap: Record<number, TagType> = {\n [Namespace.Artist]: TagType.Artist,\n [Namespace.Circle]: TagType.Artist,\n [Namespace.Parody]: TagType.Parody,\n [Namespace.Magazine]: TagType.Group,\n [Namespace.Character]: TagType.Character,\n [Namespace.Cosplayer]: TagType.Character,\n [Namespace.Uploader]: TagType.Tag,\n [Namespace.Male]: TagType.Tag,\n [Namespace.Female]: TagType.Tag,\n [Namespace.Mixed]: TagType.Tag,\n [Namespace.Language]: TagType.Language,\n [Namespace.Other]: TagType.Tag,\n [Namespace.Reclass]: TagType.Tag,\n};\n","import { getBookData } from \"./functions/getBookData\";\nimport { getBookDetail } from \"./functions/getBookDetail\";\nimport { getBookImage } from \"./functions/getBookImages\";\nimport { key } from \"./key\";\n\nimport { TagType, type DataSource, type Gallery } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { namespace } from \"./constants/namespace\";\nimport { tagTypeMap } from \"./constants/tagTypeMap\";\n\nexport const getGallery = async (\n { id }: Parameters<DataSource[\"getGallery\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getGallery\"]> => {\n const [bookId, bookKey] = id.split(\".\");\n\n if (!bookId || !bookKey) throw new Error(\"unalbe to parse ids\");\n\n const [bookDetail, bookData] = await Promise.all([\n getBookDetail(bookId, bookKey, options.userAgent),\n getBookData(bookId, bookKey, options.crt, options.userAgent),\n ]);\n\n // pick data in bookData that has biggest integer\n const maxSize = Math.max(...Object.keys(bookData.data).map((v) => Number(v)));\n\n const bookImages = await getBookImage(\n maxSize,\n bookId,\n bookKey,\n bookData.data[maxSize]!.id.toString(),\n bookData.data[maxSize]!.key,\n options.crt,\n options.userAgent,\n );\n\n const gallery: Gallery = {\n id: bookDetail.id.toString() + \".\" + bookDetail.key,\n key,\n title: {\n display: bookDetail.title,\n original: null,\n },\n cover: {\n src: bookDetail.thumbnails.base + bookDetail.thumbnails.main.path,\n width: bookDetail.thumbnails.main.dimensions[0],\n height: bookDetail.thumbnails.main.dimensions[1],\n },\n pages: bookImages.entries.map((page, i) => ({\n order: i + 1,\n src: bookImages.base + page.path,\n width: page.dimensions[0],\n height: page.dimensions[1],\n })),\n tags: bookDetail.tags.map((tag) => {\n return {\n id: tag.namespace ? namespace[tag.namespace]! : \"tag\" + \":\" + tag.name.replace(/\\s+/g, \"+\"),\n key,\n slug: tag.name,\n name: tag.name,\n type: tag.namespace ? tagTypeMap[tag.namespace]! : TagType.Tag,\n };\n }),\n };\n\n return gallery;\n};\n","import { headers } from \"./constants/headers\";\nimport { key } from \"./key\";\n\nimport type { DataSource, ListingResult } from \"@riffyh/commons\";\nimport type { NiyaSearchResult } from \"./types/NiyaSearchResult\";\nimport type { Options } from \"./types/Options\";\n\nexport const getListing = async (\n { searchQuery, page }: Parameters<DataSource[\"getListing\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getListing\"]> => {\n const payload = new URLSearchParams();\n\n if (searchQuery !== null && searchQuery !== \"\") payload.append(\"s\", searchQuery);\n if (page !== 1) payload.append(\"page\", page.toString());\n\n const data = await fetch(`https://api.schale.network/books?${payload.toString()}`, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaSearchResult>;\n else throw o;\n });\n\n const result: ListingResult = {\n galleries: data.entries.map((result) => ({\n id: result.id.toString() + \".\" + result.key,\n key,\n title: {\n display: result.title,\n original: null,\n },\n cover: {\n src: result.thumbnail.path,\n width: result.thumbnail.dimensions[0],\n height: result.thumbnail.dimensions[1],\n },\n })),\n currentPage: page,\n maximumPages: Math.ceil(data.total / data.limit),\n };\n\n return result;\n};\n","import type { DataSource } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { headers } from \"./constants/headers\";\n\nexport const getImage = async (\n { url }: Parameters<DataSource[\"getImage\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getImage\"]> =>\n fetch(url, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).then(async (o) => {\n if (o.ok) return Buffer.from(await o.arrayBuffer());\n else throw o;\n });\n","import type { DataSource } from \"@riffyh/commons\";\nimport { getGallery } from \"./getGalery\";\nimport { getListing } from \"./getListing\";\nimport { getImage } from \"./getImage\";\nimport { key } from \"./key\";\n\nimport type { Options } from \"./types/Options\";\n\nexport const niyaniya = (options: Options): DataSource => {\n return {\n key,\n name: \"niyaniya\",\n iconUrl: \"https://niyaniya.moe/favicon.ico\",\n getGallery: (payload) => getGallery(payload, options),\n getListing: (payload) => getListing(payload, options),\n getImage: (payload) => getImage(payload, options),\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/headers.ts","../src/functions/getBookData.ts","../src/functions/getBookDetail.ts","../src/functions/getBookImages.ts","../src/constants/namespace.ts","../src/constants/tagTypeMap.ts","../src/getGalery.ts","../src/getListing.ts","../src/getImage.ts","../src/index.ts"],"sourcesContent":["export const headers = {\n Accept: \"*/*\",\n Origin: \"https://niyaniya.moe\",\n Referer: \"https://niyaniya.moe/\",\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaData } from \"../types/NiyaData\";\n\nexport const getBookData = async (\n bookId: string,\n bookKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/detail/${bookId}/${bookKey}?${new URLSearchParams({\n crt,\n }).toString()}`,\n {\n method: \"POST\",\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaData>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaGallery } from \"../types/NiyaGallery\";\n\nexport const getBookDetail = async (bookId: string, bookKey: string, userAgent: string) => {\n const data = await fetch(`https://api.schale.network/books/detail/${bookId}/${bookKey}`, {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaGallery>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaImages } from \"../types/NiyaImages\";\n\nexport const getBookImage = async (\n size: number,\n bookId: string,\n bookKey: string,\n dataId: string,\n dataKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/data/${bookId}/${bookKey}/${dataId}/${dataKey}/${size}?${new URLSearchParams(\n {\n crt,\n },\n ).toString()}`,\n {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaImages>;\n else throw o;\n });\n\n return data;\n};\n","export enum Namespace {\n Artist = 1,\n Circle = 2,\n Parody = 3,\n Magazine = 4,\n Character = 5,\n Cosplayer = 6,\n Uploader = 7,\n Male = 8,\n Female = 9,\n Mixed = 10,\n Language = 11,\n Other = 12,\n Reclass = 13,\n}\n\nexport const namespace: Record<number, string> = {\n [Namespace.Artist]: \"artist\",\n [Namespace.Circle]: \"circle\",\n [Namespace.Parody]: \"parody\",\n [Namespace.Magazine]: \"magazine\",\n [Namespace.Character]: \"character\",\n [Namespace.Cosplayer]: \"cosplayer\",\n [Namespace.Uploader]: \"uploader\",\n [Namespace.Male]: \"male\",\n [Namespace.Female]: \"female\",\n [Namespace.Mixed]: \"mixed\",\n [Namespace.Language]: \"language\",\n [Namespace.Other]: \"other\",\n [Namespace.Reclass]: \"reclass\",\n};\n","import { TagType } from \"@riffyh/commons\";\nimport { Namespace } from \"./namespace\";\n\nexport const tagTypeMap: Record<number, TagType> = {\n [Namespace.Artist]: TagType.Artist,\n [Namespace.Circle]: TagType.Artist,\n [Namespace.Parody]: TagType.Parody,\n [Namespace.Magazine]: TagType.Group,\n [Namespace.Character]: TagType.Character,\n [Namespace.Cosplayer]: TagType.Character,\n [Namespace.Uploader]: TagType.Tag,\n [Namespace.Male]: TagType.Tag,\n [Namespace.Female]: TagType.Tag,\n [Namespace.Mixed]: TagType.Tag,\n [Namespace.Language]: TagType.Language,\n [Namespace.Other]: TagType.Tag,\n [Namespace.Reclass]: TagType.Tag,\n};\n","import { getBookData } from \"./functions/getBookData\";\nimport { getBookDetail } from \"./functions/getBookDetail\";\nimport { getBookImage } from \"./functions/getBookImages\";\nimport { key } from \"./key\";\n\nimport { TagType, type DataSource, type Gallery } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { namespace } from \"./constants/namespace\";\nimport { tagTypeMap } from \"./constants/tagTypeMap\";\n\nexport const getGallery = async (\n { id }: Parameters<DataSource[\"getGallery\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getGallery\"]> => {\n const [bookId, bookKey] = id.split(\".\");\n\n if (!bookId || !bookKey) throw new Error(\"unable to parse ids\");\n\n const [bookDetail, bookData] = await Promise.all([\n getBookDetail(bookId, bookKey, options.userAgent),\n getBookData(bookId, bookKey, options.crt, options.userAgent),\n ]);\n\n // pick data in bookData that has biggest integer\n const maxSize = Math.max(...Object.keys(bookData.data).map((v) => Number(v)));\n\n const bookImages = await getBookImage(\n maxSize,\n bookId,\n bookKey,\n bookData.data[maxSize]!.id.toString(),\n bookData.data[maxSize]!.key,\n options.crt,\n options.userAgent,\n );\n\n const gallery: Gallery = {\n id: bookDetail.id.toString() + \".\" + bookDetail.key,\n key,\n title: {\n display: bookDetail.title,\n original: null,\n },\n cover: {\n src: bookDetail.thumbnails.base + bookDetail.thumbnails.main.path,\n width: bookDetail.thumbnails.main.dimensions[0],\n height: bookDetail.thumbnails.main.dimensions[1],\n },\n pages: bookImages.entries.map((page, i) => ({\n order: i + 1,\n src: bookImages.base + page.path,\n width: page.dimensions[0],\n height: page.dimensions[1],\n })),\n tags: bookDetail.tags.map((tag) => {\n return {\n id: tag.namespace ? namespace[tag.namespace]! : \"tag\" + \":\" + tag.name.replace(/\\s+/g, \"+\"),\n key,\n slug: tag.name,\n name: tag.name,\n type: tag.namespace ? tagTypeMap[tag.namespace]! : TagType.Tag,\n };\n }),\n };\n\n return gallery;\n};\n","import { headers } from \"./constants/headers\";\nimport { key } from \"./key\";\n\nimport type { DataSource, ListingResult } from \"@riffyh/commons\";\nimport type { NiyaSearchResult } from \"./types/NiyaSearchResult\";\nimport type { Options } from \"./types/Options\";\n\nexport const getListing = async (\n { searchQuery, page }: Parameters<DataSource[\"getListing\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getListing\"]> => {\n const payload = new URLSearchParams();\n\n if (searchQuery !== null && searchQuery !== \"\") payload.append(\"s\", searchQuery);\n if (page !== 1) payload.append(\"page\", page.toString());\n\n const data = await fetch(`https://api.schale.network/books?${payload.toString()}`, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaSearchResult>;\n else throw o;\n });\n\n const result: ListingResult = {\n galleries: data.entries.map((result) => ({\n id: result.id.toString() + \".\" + result.key,\n key,\n title: {\n display: result.title,\n original: null,\n },\n cover: {\n src: result.thumbnail.path,\n width: result.thumbnail.dimensions[0],\n height: result.thumbnail.dimensions[1],\n },\n })),\n currentPage: page,\n maximumPages: Math.ceil(data.total / data.limit),\n };\n\n return result;\n};\n","import type { DataSource } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { headers } from \"./constants/headers\";\n\nexport const getImage = async (\n { url }: Parameters<DataSource[\"getImage\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getImage\"]> =>\n fetch(url, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).then(async (o) => {\n if (o.ok) return Buffer.from(await o.arrayBuffer());\n else throw o;\n });\n","import type { DataSource } from \"@riffyh/commons\";\nimport { getGallery } from \"./getGalery\";\nimport { getListing } from \"./getListing\";\nimport { getImage } from \"./getImage\";\nimport { key } from \"./key\";\n\nimport type { Options } from \"./types/Options\";\n\nexport const niyaniya = (options: Options): DataSource => {\n return {\n key,\n name: \"niyaniya\",\n iconUrl: \"https://niyaniya.moe/favicon.ico\",\n getGallery: (payload) => getGallery(payload, options),\n getListing: (payload) => getListing(payload, options),\n getImage: (payload) => getImage(payload, options),\n };\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riffyh/adapter-niyaniya",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/rayriffy/rayriffy-h.git"
|
|
@@ -16,12 +16,13 @@
|
|
|
16
16
|
"registry": "https://registry.npmjs.org"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@riffyh/commons": "2.1.
|
|
19
|
+
"@riffyh/commons": "2.1.2"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"tsdown": "0.
|
|
22
|
+
"tsdown": "0.22.3"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
|
+
"dev": "tsdown --watch",
|
|
25
26
|
"build": "tsdown"
|
|
26
27
|
}
|
|
27
28
|
}
|