@phosart/common 0.4.53 → 0.4.55

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.
@@ -3,4 +3,5 @@ export declare function filter(gallery: ArtPiece[] | Record<string, ArtPiece>, b
3
3
  negated?: boolean;
4
4
  sorted?: boolean;
5
5
  }): ArtPiece[];
6
+ export declare function defaultPieceSort(a: ArtPiece, b: ArtPiece): number;
6
7
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/lib/server/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,MAAM,gBAAgB,CAAC;AAgDxB,wBAAgB,MAAM,CACrB,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9C,EAAE,CAAC,EAAE,WAAW,EAChB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/D,QAAQ,EAAE,CAaZ"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/lib/server/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,MAAM,gBAAgB,CAAC;AAgDxB,wBAAgB,MAAM,CACrB,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9C,EAAE,CAAC,EAAE,WAAW,EAChB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/D,QAAQ,EAAE,CAaZ;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,UA4BxD"}
@@ -49,5 +49,36 @@ export function filter(gallery, by, { negated, sorted } = {}) {
49
49
  if (!sorted) {
50
50
  return results;
51
51
  }
52
- return results.sort((a, b) => b.date.getTime() - a.date.getTime());
52
+ return results.sort(defaultPieceSort);
53
+ }
54
+ export function defaultPieceSort(a, b) {
55
+ if (a.sort_key && !b.sort_key) {
56
+ return -1;
57
+ }
58
+ else if (b.sort_key && !a.sort_key) {
59
+ return 1;
60
+ }
61
+ else if (b.sort_key && a.sort_key) {
62
+ let aNum = null;
63
+ let bNum = null;
64
+ aNum = Number(a.sort_key);
65
+ if (!Number.isFinite(aNum)) {
66
+ aNum = null;
67
+ }
68
+ bNum = Number(b.sort_key);
69
+ if (!Number.isFinite(bNum)) {
70
+ bNum = null;
71
+ }
72
+ if (aNum !== null && bNum === null) {
73
+ return -1;
74
+ }
75
+ else if (bNum !== null && aNum === null) {
76
+ return 1;
77
+ }
78
+ else if (bNum !== null && aNum !== null) {
79
+ return aNum - bNum;
80
+ }
81
+ return a.sort_key.localeCompare(b.sort_key);
82
+ }
83
+ return b.date.getTime() - a.date.getTime();
53
84
  }
@@ -1,7 +1,7 @@
1
1
  export { type ArtistCache, artists, getAllArtists } from './artist.ts';
2
2
  export { type CharacterCache, characters, type RawCharacterCache, rawCharacters, getAllCharacters } from './character.ts';
3
3
  export { $DATA as $ART, $PUBLIC, $ROOT } from './directories.ts';
4
- export { filter } from './filter.ts';
4
+ export { filter, defaultPieceSort } from './filter.ts';
5
5
  export { type GalleryCache, type RawGalleryCache, galleries, rawGalleries, allPieces, getPieceBySlug } from './gallery.ts';
6
6
  export { processImage, processVideo, processImageFastcache, processVideoFastcache, clearProcessedHashes, cleanUnusedHashes } from './imageprocess.ts';
7
7
  export { Artist } from './models/Artist.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACN,KAAK,cAAc,EACnB,UAAU,EACV,KAAK,iBAAiB,EACtB,aAAa,EACb,gBAAgB,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACN,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,KAAK,EACL,UAAU,EACV,eAAe,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7F,OAAO,EACN,eAAe,EACf,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACN,KAAK,cAAc,EACnB,UAAU,EACV,KAAK,iBAAiB,EACtB,aAAa,EACb,gBAAgB,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACN,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,KAAK,EACL,UAAU,EACV,eAAe,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7F,OAAO,EACN,eAAe,EACf,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
@@ -2,7 +2,7 @@
2
2
  export { artists, getAllArtists } from "./artist.js";
3
3
  export { characters, rawCharacters, getAllCharacters } from "./character.js";
4
4
  export { $DATA as $ART, $PUBLIC, $ROOT } from "./directories.js";
5
- export { filter } from "./filter.js";
5
+ export { filter, defaultPieceSort } from "./filter.js";
6
6
  export { galleries, rawGalleries, allPieces, getPieceBySlug } from "./gallery.js";
7
7
  export { processImage, processVideo, processImageFastcache, processVideoFastcache, clearProcessedHashes, cleanUnusedHashes } from "./imageprocess.js";
8
8
  export { Artist } from "./models/Artist.js";
@@ -51,6 +51,7 @@ export declare const BaseGallery: z.ZodObject<{
51
51
  slug: z.ZodString;
52
52
  deindexed: z.ZodOptional<z.ZodBoolean>;
53
53
  nsfw: z.ZodOptional<z.ZodBoolean>;
54
+ sort_key: z.ZodOptional<z.ZodString>;
54
55
  }, z.core.$strip>>;
55
56
  }, z.core.$strip>;
56
57
  export declare const RawGallery: z.ZodUnion<readonly [z.ZodObject<{
@@ -96,6 +97,7 @@ export declare const RawGallery: z.ZodUnion<readonly [z.ZodObject<{
96
97
  slug: z.ZodString;
97
98
  deindexed: z.ZodOptional<z.ZodBoolean>;
98
99
  nsfw: z.ZodOptional<z.ZodBoolean>;
100
+ sort_key: z.ZodOptional<z.ZodString>;
99
101
  }, z.core.$strip>>;
100
102
  }, z.core.$strip>]>;
101
103
  export declare const FullGallery: z.ZodObject<{
@@ -215,6 +217,7 @@ export declare const FullGallery: z.ZodObject<{
215
217
  slug: z.ZodString;
216
218
  deindexed: z.ZodOptional<z.ZodBoolean>;
217
219
  nsfw: z.ZodOptional<z.ZodBoolean>;
220
+ sort_key: z.ZodOptional<z.ZodString>;
218
221
  }, z.core.$strip>>;
219
222
  }, z.core.$strip>;
220
223
  export declare const BaseArtPiece: z.ZodObject<{
@@ -257,6 +260,7 @@ export declare const BaseArtPiece: z.ZodObject<{
257
260
  slug: z.ZodString;
258
261
  deindexed: z.ZodOptional<z.ZodBoolean>;
259
262
  nsfw: z.ZodOptional<z.ZodBoolean>;
263
+ sort_key: z.ZodOptional<z.ZodString>;
260
264
  }, z.core.$strip>;
261
265
  export declare const FullArtPiece: z.ZodObject<{
262
266
  id: z.ZodOptional<z.ZodString>;
@@ -374,5 +378,6 @@ export declare const FullArtPiece: z.ZodObject<{
374
378
  slug: z.ZodString;
375
379
  deindexed: z.ZodOptional<z.ZodBoolean>;
376
380
  nsfw: z.ZodOptional<z.ZodBoolean>;
381
+ sort_key: z.ZodOptional<z.ZodString>;
377
382
  }, z.core.$strip>;
378
383
  //# sourceMappingURL=Gallery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../../src/lib/server/models/Gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH,eAAO,MAAM,KAAK;;;iBAGhB,CAAC;AAEH,eAAO,MAAM,UAAU;;;mBAGrB,CAAC;AAmDH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAsB,CAAC;AAC/C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAA0C,CAAC;AAClE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmB,CAAC;AAC5C,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAuB,CAAC;AACjD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAoB,CAAC"}
1
+ {"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../../src/lib/server/models/Gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH,eAAO,MAAM,KAAK;;;iBAGhB,CAAC;AAEH,eAAO,MAAM,UAAU;;;mBAGrB,CAAC;AAoDH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAsB,CAAC;AAC/C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAA0C,CAAC;AAClE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmB,CAAC;AAC5C,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAuB,CAAC;AACjD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAoB,CAAC"}
@@ -46,7 +46,8 @@ function ArtPiece(imageType) {
46
46
  video: Video.optional(),
47
47
  slug: z.string(),
48
48
  deindexed: z.boolean().optional(),
49
- nsfw: z.boolean().optional()
49
+ nsfw: z.boolean().optional(),
50
+ sort_key: z.string().optional()
50
51
  });
51
52
  }
52
53
  function Gallery(imageType) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phosart/common",
3
- "version": "0.4.53",
3
+ "version": "0.4.55",
4
4
  "files": [
5
5
  "dist",
6
6
  "!dist/**/*.test.*",
@@ -67,5 +67,35 @@ export function filter(
67
67
  if (!sorted) {
68
68
  return results;
69
69
  }
70
- return results.sort((a, b) => b.date.getTime() - a.date.getTime());
70
+ return results.sort(defaultPieceSort);
71
+ }
72
+
73
+ export function defaultPieceSort(a: ArtPiece, b: ArtPiece) {
74
+ if (a.sort_key && !b.sort_key) {
75
+ return -1;
76
+ } else if (b.sort_key && !a.sort_key) {
77
+ return 1;
78
+ } else if (b.sort_key && a.sort_key) {
79
+ let aNum: number | null = null;
80
+ let bNum: number | null = null;
81
+ aNum = Number(a.sort_key);
82
+ if (!Number.isFinite(aNum)) {
83
+ aNum = null;
84
+ }
85
+ bNum = Number(b.sort_key);
86
+ if (!Number.isFinite(bNum)) {
87
+ bNum = null;
88
+ }
89
+
90
+ if (aNum !== null && bNum === null) {
91
+ return -1;
92
+ } else if (bNum !== null && aNum === null) {
93
+ return 1;
94
+ } else if (bNum !== null && aNum !== null) {
95
+ return aNum - bNum;
96
+ }
97
+
98
+ return a.sort_key.localeCompare(b.sort_key);
99
+ }
100
+ return b.date.getTime() - a.date.getTime();
71
101
  }
@@ -8,7 +8,7 @@ export {
8
8
  getAllCharacters
9
9
  } from './character.ts';
10
10
  export { $DATA as $ART, $PUBLIC, $ROOT } from './directories.ts';
11
- export { filter } from './filter.ts';
11
+ export { filter, defaultPieceSort } from './filter.ts';
12
12
  export {
13
13
  type GalleryCache,
14
14
  type RawGalleryCache,
@@ -54,7 +54,8 @@ function ArtPiece<T extends z.ZodTypeAny>(imageType: T) {
54
54
  video: Video.optional(),
55
55
  slug: z.string(),
56
56
  deindexed: z.boolean().optional(),
57
- nsfw: z.boolean().optional()
57
+ nsfw: z.boolean().optional(),
58
+ sort_key: z.string().optional()
58
59
  });
59
60
  }
60
61