beatsaber-bot-core 0.2.0-rc.13 → 0.2.0-rc.14

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.
Files changed (144) hide show
  1. package/dist/cjs/cmd/bind/bind-id-beatleader.js +1 -1
  2. package/dist/cjs/cmd/bind/bind-id-beatsaver.js +1 -1
  3. package/dist/cjs/cmd/bind/bind-scoresaber.js +1 -1
  4. package/dist/cjs/cmd/bind/index.js +4 -4
  5. package/dist/cjs/cmd/bsmap/id-search.js +2 -2
  6. package/dist/cjs/cmd/bsmap/key-search.js +1 -1
  7. package/dist/cjs/cmd/bsmap/latest.js +1 -1
  8. package/dist/cjs/cmd/deprecated/tmp.js +1 -1
  9. package/dist/cjs/cmd/index.js +11 -11
  10. package/dist/cjs/cmd/index.js.map +1 -1
  11. package/dist/cjs/cmd/rank.js +3 -3
  12. package/dist/cjs/cmd/score.js +5 -5
  13. package/dist/cjs/cmd/subscribe/beatleader.js +1 -1
  14. package/dist/cjs/cmd/subscribe/beatsaver.js +1 -1
  15. package/dist/cjs/cmd/subscribe/id-beatleader-score.js +1 -1
  16. package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  17. package/dist/cjs/cmd/subscribe/index.js +5 -5
  18. package/dist/cjs/cmd/subscribe/subjoin.js +2 -2
  19. package/dist/cjs/cmd/subscribe/subleave.js +1 -1
  20. package/dist/cjs/cmd/subscribe/unsubscribe.js +2 -2
  21. package/dist/cjs/components/components/RankDifficulty.js +1 -1
  22. package/dist/cjs/components/components/bl-rank-score-item.js +3 -3
  23. package/dist/cjs/components/components/bl-score-item.js +1 -1
  24. package/dist/cjs/components/components/bl-score-item.js.map +1 -1
  25. package/dist/cjs/components/components/flag.js +1 -1
  26. package/dist/cjs/components/components/icons/RankIcon.js +2 -2
  27. package/dist/cjs/components/components/scoreItem.js +1 -1
  28. package/dist/cjs/components/components/scoreItem.js.map +1 -1
  29. package/dist/cjs/components/components/scoregraph.js +2 -2
  30. package/dist/cjs/components/components/ss-rank-score-item.js +3 -3
  31. package/dist/cjs/components/components/ss-score-item.js +1 -1
  32. package/dist/cjs/components/components/ss-score-item.js.map +1 -1
  33. package/dist/cjs/components/index.js +1 -1
  34. package/dist/cjs/components/pages/bl-player.js +5 -5
  35. package/dist/cjs/components/pages/bl-score-with-rank.js +6 -6
  36. package/dist/cjs/components/pages/bl-score.js +2 -2
  37. package/dist/cjs/components/pages/bs-map.js +3 -3
  38. package/dist/cjs/components/pages/index.js +4 -4
  39. package/dist/cjs/components/pages/ss-player.js +2 -2
  40. package/dist/cjs/components/utils/format.js +4 -4
  41. package/dist/cjs/components/utils/format.js.map +1 -1
  42. package/dist/cjs/config.js +39 -0
  43. package/dist/cjs/config.js.map +1 -1
  44. package/dist/cjs/index.js.map +1 -1
  45. package/dist/cjs/infra/index.js +3 -3
  46. package/dist/cjs/infra/index.js.map +1 -1
  47. package/dist/cjs/infra/s3/index.js +34 -3
  48. package/dist/cjs/infra/s3/index.js.map +1 -1
  49. package/dist/cjs/infra/support/fetch/index.js +13 -4
  50. package/dist/cjs/infra/support/fetch/index.js.map +1 -1
  51. package/dist/cjs/infra/support/fetch/ofetch.js +5 -12
  52. package/dist/cjs/infra/support/fetch/ofetch.js.map +1 -1
  53. package/dist/cjs/infra/support/render/index.js +48 -14
  54. package/dist/cjs/infra/support/render/index.js.map +1 -1
  55. package/dist/cjs/interface/cmd/builder.js +1 -1
  56. package/dist/cjs/schedules/index.js +3 -2
  57. package/dist/cjs/schedules/index.js.map +1 -1
  58. package/dist/cjs/service/api/base/aioclient.js +1 -1
  59. package/dist/cjs/service/api/base/blclient.js +1 -1
  60. package/dist/cjs/service/api/base/bsclient.js +2 -2
  61. package/dist/cjs/service/api/base/ssclient.js +2 -2
  62. package/dist/cjs/service/api/index.js +14 -5
  63. package/dist/cjs/service/api/index.js.map +1 -1
  64. package/dist/cjs/service/render/index.js +21 -8
  65. package/dist/cjs/service/render/index.js.map +1 -1
  66. package/dist/cjs/ws/beatsaver.js +1 -1
  67. package/dist/esm/cmd/bind/bind-id-beatleader.js +1 -1
  68. package/dist/esm/cmd/bind/bind-id-beatsaver.js +1 -1
  69. package/dist/esm/cmd/bind/bind-scoresaber.js +1 -1
  70. package/dist/esm/cmd/bind/index.js +5 -5
  71. package/dist/esm/cmd/bsmap/id-search.js +2 -2
  72. package/dist/esm/cmd/bsmap/key-search.js +1 -1
  73. package/dist/esm/cmd/bsmap/latest.js +1 -1
  74. package/dist/esm/cmd/deprecated/tmp.js +1 -1
  75. package/dist/esm/cmd/index.js +11 -11
  76. package/dist/esm/cmd/index.js.map +1 -1
  77. package/dist/esm/cmd/rank.js +3 -3
  78. package/dist/esm/cmd/score.js +5 -5
  79. package/dist/esm/cmd/subscribe/beatleader.js +1 -1
  80. package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
  81. package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
  82. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  83. package/dist/esm/cmd/subscribe/index.js +5 -5
  84. package/dist/esm/cmd/subscribe/subjoin.js +2 -2
  85. package/dist/esm/cmd/subscribe/subleave.js +1 -1
  86. package/dist/esm/cmd/subscribe/unsubscribe.js +2 -2
  87. package/dist/esm/components/components/RankDifficulty.js +1 -1
  88. package/dist/esm/components/components/bl-rank-score-item.js +2 -2
  89. package/dist/esm/components/components/bl-score-item.js +2 -2
  90. package/dist/esm/components/components/bl-score-item.js.map +1 -1
  91. package/dist/esm/components/components/icons/RankIcon.js +2 -2
  92. package/dist/esm/components/components/scoreItem.js +1 -1
  93. package/dist/esm/components/components/scoreItem.js.map +1 -1
  94. package/dist/esm/components/components/scoregraph.js +3 -3
  95. package/dist/esm/components/components/socre-badge.js +1 -1
  96. package/dist/esm/components/components/ss-rank-score-item.js +2 -2
  97. package/dist/esm/components/components/ss-score-item.js +2 -2
  98. package/dist/esm/components/components/ss-score-item.js.map +1 -1
  99. package/dist/esm/components/pages/bl-player.js +7 -7
  100. package/dist/esm/components/pages/bl-score-with-rank.js +6 -6
  101. package/dist/esm/components/pages/bl-score.js +3 -3
  102. package/dist/esm/components/pages/bs-map.js +5 -5
  103. package/dist/esm/components/pages/index.js +5 -5
  104. package/dist/esm/components/pages/ss-player.js +3 -3
  105. package/dist/esm/components/utils/bl/bsorReplayAcc.js +2 -2
  106. package/dist/esm/components/utils/format.js +3 -3
  107. package/dist/esm/components/utils/format.js.map +1 -1
  108. package/dist/esm/components/utils/index.js +2 -2
  109. package/dist/esm/config.js +31 -0
  110. package/dist/esm/config.js.map +1 -1
  111. package/dist/esm/index.js +10 -10
  112. package/dist/esm/index.js.map +1 -1
  113. package/dist/esm/infra/i18n/index.js +2 -2
  114. package/dist/esm/infra/index.js +5 -5
  115. package/dist/esm/infra/index.js.map +1 -1
  116. package/dist/esm/infra/s3/index.js +31 -1
  117. package/dist/esm/infra/s3/index.js.map +1 -1
  118. package/dist/esm/infra/support/fetch/index.js +16 -7
  119. package/dist/esm/infra/support/fetch/index.js.map +1 -1
  120. package/dist/esm/infra/support/fetch/ofetch.js +4 -10
  121. package/dist/esm/infra/support/fetch/ofetch.js.map +1 -1
  122. package/dist/esm/infra/support/render/index.js +47 -13
  123. package/dist/esm/infra/support/render/index.js.map +1 -1
  124. package/dist/esm/interface/cmd/builder.js +1 -1
  125. package/dist/esm/interface/index.js +4 -4
  126. package/dist/esm/schedules/index.js +4 -3
  127. package/dist/esm/schedules/index.js.map +1 -1
  128. package/dist/esm/service/api/base/aioclient.js +1 -1
  129. package/dist/esm/service/api/base/blclient.js +1 -1
  130. package/dist/esm/service/api/base/bsclient.js +2 -2
  131. package/dist/esm/service/api/base/index.js +4 -4
  132. package/dist/esm/service/api/base/ssclient.js +2 -2
  133. package/dist/esm/service/api/index.js +16 -7
  134. package/dist/esm/service/api/index.js.map +1 -1
  135. package/dist/esm/service/api/interfaces/beatleader/index.js +5 -5
  136. package/dist/esm/service/api/interfaces/beatsaver/index.js +5 -5
  137. package/dist/esm/service/api/interfaces/scoresaber/index.js +3 -3
  138. package/dist/esm/service/index.js +2 -2
  139. package/dist/esm/service/render/index.js +22 -9
  140. package/dist/esm/service/render/index.js.map +1 -1
  141. package/dist/esm/ws/beatsaver.js +1 -1
  142. package/dist/esm/ws/index.js +3 -3
  143. package/dist/types/index.d.ts +205 -123
  144. package/package.json +17 -7
@@ -1,46 +1,61 @@
1
- import { ScreenshotOptions, Viewport, Browser } from 'puppeteer-core';
1
+ import { z } from 'zod/v4';
2
2
  import * as ofetch from 'ofetch';
3
3
  import { $Fetch, FetchOptions, ResponseType } from 'ofetch';
4
+ import { ScreenshotOptions, Viewport, Browser } from 'puppeteer-core';
4
5
 
5
- /**
6
- * Extends Puppeteer's ScreenshotOptions to include an optional viewport setting
7
- * and a selector for element-specific screenshots.
8
- */
9
- interface RenderOptions$1 extends ScreenshotOptions {
10
- /**
11
- * Sets the viewport of the page.
12
- */
13
- viewport?: Viewport;
14
- /**
15
- * A CSS selector for an element to screenshot. If provided, the output
16
- * will be a screenshot of just this element.
17
- */
18
- selector?: string;
19
- /**
20
- * The maximum time in milliseconds to wait for the selector to appear.
21
- * If the element is not found within this time, an error will be thrown.
22
- * Defaults to Puppeteer's default (usually 30000ms).
23
- */
24
- timeout?: number;
25
- }
26
-
27
- type ExtendFetchOptions<R extends ResponseType = ResponseType, T = any> = {
28
- form?: Record<string, any>;
29
- } & FetchOptions<R, T>;
30
- declare class Fetch {
31
- private options?;
32
- private ofetchInstance;
33
- constructor(fetchInstance?: $Fetch, options?: FetchOptions);
34
- fetch<T, R extends ResponseType>(request: string, options?: ExtendFetchOptions<R, T>): Promise<ofetch.MappedResponseType<R, T>>;
35
- get<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, T>>;
36
- post<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, T>>;
37
- put<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, any>>;
38
- patch<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, any>>;
39
- delete<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, any>>;
40
- head(request: string, options?: FetchOptions): Promise<any>;
41
- extend(options: FetchOptions): Fetch;
42
- baseUrl(url: string): Fetch;
43
- }
6
+ declare const configSchema: z.ZodObject<{
7
+ s3: z.ZodOptional<z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
8
+ s3AccessKey: z.ZodString;
9
+ s3SecretKey: z.ZodString;
10
+ endpoint: z.ZodString;
11
+ baseURL: z.ZodString;
12
+ bucketName: z.ZodString;
13
+ region: z.ZodOptional<z.ZodString>;
14
+ keyPrefix: z.ZodOptional<z.ZodString>;
15
+ enabled: z.ZodLiteral<true>;
16
+ }, z.core.$strip>, z.ZodObject<{
17
+ enabled: z.ZodLiteral<false>;
18
+ }, z.core.$strip>]>>>;
19
+ render: z.ZodIntersection<z.ZodDiscriminatedUnion<[z.ZodObject<{
20
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
21
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
22
+ cfAccountId: z.ZodString;
23
+ cfAPIKey: z.ZodString;
24
+ mode: z.ZodLiteral<"cf">;
25
+ }, z.core.$strip>, z.ZodObject<{
26
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
27
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
28
+ puppeteerURL: z.ZodOptional<z.ZodString>;
29
+ mode: z.ZodLiteral<"puppeteer">;
30
+ }, z.core.$strip>, z.ZodObject<{
31
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
32
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
33
+ mode: z.ZodLiteral<"custom">;
34
+ }, z.core.$strip>]>, z.ZodObject<{
35
+ defaultWaitTimeout: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
36
+ waitTimeout: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
37
+ puppeteerURL: z.ZodOptional<z.ZodOptional<z.ZodString>>;
38
+ cfAccountId: z.ZodOptional<z.ZodString>;
39
+ cfAPIKey: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strip>>;
41
+ beatsaver: z.ZodOptional<z.ZodDefault<z.ZodObject<{
42
+ host: z.ZodOptional<z.ZodDefault<z.ZodString>>;
43
+ wsURL: z.ZodOptional<z.ZodDefault<z.ZodString>>;
44
+ oauthClientId: z.ZodOptional<z.ZodString>;
45
+ oauthClientSecret: z.ZodOptional<z.ZodString>;
46
+ }, z.core.$strip>>>;
47
+ beatleader: z.ZodOptional<z.ZodDefault<z.ZodObject<{
48
+ oauthClientId: z.ZodOptional<z.ZodString>;
49
+ oauthClientSecret: z.ZodOptional<z.ZodString>;
50
+ }, z.core.$strip>>>;
51
+ cron: z.ZodOptional<z.ZodDefault<z.ZodObject<{
52
+ temp: z.ZodDefault<z.ZodOptional<z.ZodObject<{
53
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
+ cron: z.ZodOptional<z.ZodString>;
55
+ }, z.core.$strip>>>;
56
+ }, z.core.$strip>>>;
57
+ }, z.core.$strip>;
58
+ type Config = z.infer<typeof configSchema>;
44
59
 
45
60
  interface ScoreSaberItem {
46
61
  score: SSScore;
@@ -487,6 +502,24 @@ interface BLSocial {
487
502
  [property: string]: any;
488
503
  }
489
504
 
505
+ type ExtendFetchOptions<R extends ResponseType = ResponseType, T = any> = {
506
+ form?: Record<string, any>;
507
+ } & FetchOptions<R, T>;
508
+ declare class Fetch {
509
+ private options?;
510
+ private ofetchInstance;
511
+ constructor(fetchInstance?: $Fetch, options?: FetchOptions);
512
+ fetch<T, R extends ResponseType>(request: string, options?: ExtendFetchOptions<R, T>): Promise<ofetch.MappedResponseType<R, T>>;
513
+ get<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, T>>;
514
+ post<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, T>>;
515
+ put<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, any>>;
516
+ patch<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, any>>;
517
+ delete<T = any, R extends ResponseType = 'json'>(request: string, options?: ExtendFetchOptions<R>): Promise<ofetch.MappedResponseType<R, any>>;
518
+ head(request: string, options?: FetchOptions): Promise<any>;
519
+ extend(options: FetchOptions): Fetch;
520
+ baseUrl(url: string): Fetch;
521
+ }
522
+
490
523
  interface ScoresaberLeaderboardResp {
491
524
  scores: SSScore[];
492
525
  metadata: Metadata;
@@ -709,6 +742,94 @@ declare class UserPreferenceStore {
709
742
  configEntries(): Promise<Record<string, any>>;
710
743
  }
711
744
 
745
+ /**
746
+ * Extends Puppeteer's ScreenshotOptions to include an optional viewport setting
747
+ * and a selector for element-specific screenshots.
748
+ */
749
+ interface RenderOptions$1 extends ScreenshotOptions {
750
+ /**
751
+ * Sets the viewport of the page.
752
+ */
753
+ viewport?: Viewport;
754
+ /**
755
+ * A CSS selector for an element to screenshot. If provided, the output
756
+ * will be a screenshot of just this element.
757
+ */
758
+ selector?: string;
759
+ /**
760
+ * The maximum time in milliseconds to wait for the selector to appear.
761
+ * If the element is not found within this time, an error will be thrown.
762
+ * Defaults to Puppeteer's default (usually 30000ms).
763
+ */
764
+ timeout?: number;
765
+ }
766
+
767
+ interface ImageRender {
768
+ html2img: (html: string, opt: RenderOptions$1) => Promise<Buffer>;
769
+ url2img: (url: string, opt: RenderOptions$1) => Promise<Buffer>;
770
+ }
771
+ declare const strictRenderConfig: z.ZodDiscriminatedUnion<[z.ZodObject<{
772
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
773
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
774
+ cfAccountId: z.ZodString;
775
+ cfAPIKey: z.ZodString;
776
+ mode: z.ZodLiteral<"cf">;
777
+ }, z.core.$strip>, z.ZodObject<{
778
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
779
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
780
+ puppeteerURL: z.ZodOptional<z.ZodString>;
781
+ mode: z.ZodLiteral<"puppeteer">;
782
+ }, z.core.$strip>, z.ZodObject<{
783
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
784
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
785
+ mode: z.ZodLiteral<"custom">;
786
+ }, z.core.$strip>]>;
787
+ declare const renderSchema: z.ZodIntersection<z.ZodDiscriminatedUnion<[z.ZodObject<{
788
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
789
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
790
+ cfAccountId: z.ZodString;
791
+ cfAPIKey: z.ZodString;
792
+ mode: z.ZodLiteral<"cf">;
793
+ }, z.core.$strip>, z.ZodObject<{
794
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
795
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
796
+ puppeteerURL: z.ZodOptional<z.ZodString>;
797
+ mode: z.ZodLiteral<"puppeteer">;
798
+ }, z.core.$strip>, z.ZodObject<{
799
+ defaultWaitTimeout: z.ZodOptional<z.ZodNumber>;
800
+ waitTimeout: z.ZodOptional<z.ZodNumber>;
801
+ mode: z.ZodLiteral<"custom">;
802
+ }, z.core.$strip>]>, z.ZodObject<{
803
+ defaultWaitTimeout: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
804
+ waitTimeout: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
805
+ puppeteerURL: z.ZodOptional<z.ZodOptional<z.ZodString>>;
806
+ cfAccountId: z.ZodOptional<z.ZodString>;
807
+ cfAPIKey: z.ZodOptional<z.ZodString>;
808
+ }, z.core.$strip>>;
809
+ type RenderConfig = z.infer<typeof renderSchema>;
810
+ type StrictRenderConfig = z.infer<typeof strictRenderConfig>;
811
+ declare class CFBrowserRendering implements ImageRender {
812
+ f: Fetch;
813
+ constructor(accountId: string, cfAPIKey: string, logger: Logger);
814
+ private post;
815
+ html2img(html: string, opt: RenderOptions$1): Promise<Buffer>;
816
+ url2img(url: string, opt: RenderOptions$1): Promise<Buffer>;
817
+ }
818
+ declare class PuppeteerRendering implements ImageRender {
819
+ private browserGetter;
820
+ constructor(browserGetter: () => Promise<Browser>);
821
+ html2img(html: string, opt: RenderOptions$1): Promise<Buffer>;
822
+ url2img(html: string, opt: RenderOptions$1): Promise<Buffer>;
823
+ }
824
+ declare const RemoteBrowserGetter: (addr: string) => () => Promise<Browser>;
825
+ type ImageRenderCreateOptions = StrictRenderConfig & {
826
+ logger: Logger;
827
+ render?: ImageRender;
828
+ browserGetter?: () => Promise<Browser>;
829
+ };
830
+ declare const getImageRender: (config: ImageRenderCreateOptions) => ImageRender;
831
+ type CreateImageRenderOption = Parameters<typeof getImageRender>[0];
832
+
712
833
  type RenderOption = RenderOptions & RenderOptions$1;
713
834
  type RenderOptions = {
714
835
  userPreference?: UserPreferenceStore;
@@ -726,8 +847,10 @@ interface IRenderService {
726
847
  declare class RenderService implements IRenderService {
727
848
  private api;
728
849
  private imageRender;
729
- constructor(api: APIService, imageRender: ImageRender);
730
- static create(imgRenderConfig: CreateImageRenderOption, api: APIService): RenderService;
850
+ private constructor();
851
+ static create(imgRenderConfig: CreateImageRenderOption & {
852
+ api: APIService;
853
+ }): RenderService;
731
854
  renderRank(accountId: string, platform: Platform, renderOpts?: RenderOption): Promise<Buffer>;
732
855
  renderScore(scoreId: string, renderOpts?: RenderOption): Promise<Buffer>;
733
856
  renderMapById(mapId: string, renderOption: RenderOption): Promise<Buffer>;
@@ -890,86 +1013,6 @@ type Services<T> = {
890
1013
  db: DB<T>;
891
1014
  };
892
1015
 
893
- interface ImageRender {
894
- html2img: (html: string, opt: RenderOptions$1) => Promise<Buffer>;
895
- url2img: (url: string, opt: RenderOptions$1) => Promise<Buffer>;
896
- }
897
- type RenderConfig = {
898
- mode: 'cf' | 'puppeteer' | 'custom';
899
- puppeteerURL?: string;
900
- defaultWaitTimeout?: number;
901
- waitTimeout?: number;
902
- cfAccountId?: string;
903
- cfAPIKey?: string;
904
- };
905
- declare class CFBrowserRendering implements ImageRender {
906
- f: Fetch;
907
- constructor(accountId: string, cfAPIKey: string);
908
- private post;
909
- html2img(html: string, opt: RenderOptions$1): Promise<Buffer>;
910
- url2img(url: string, opt: RenderOptions$1): Promise<Buffer>;
911
- }
912
- declare class PuppeteerRendering implements ImageRender {
913
- private browserGetter;
914
- constructor(browserGetter: () => Promise<Browser>);
915
- html2img(html: string, opt: RenderOptions$1): Promise<Buffer>;
916
- url2img(html: string, opt: RenderOptions$1): Promise<Buffer>;
917
- }
918
- declare const RemoteBrowserGetter: (addr: string) => () => Promise<Browser>;
919
- declare const getImageRender: (cfg: RenderConfig & {
920
- render?: ImageRender;
921
- browserGetter?: () => Promise<Browser>;
922
- }) => ImageRender;
923
- type CreateImageRenderOption = Parameters<typeof getImageRender>[0];
924
-
925
- declare class I18nService {
926
- obj: any;
927
- constructor(config?: any);
928
- mergeConfig(lang: string, obj: any): void;
929
- loadLang(lang: string): void;
930
- tran(path: string, params?: {}, lang?: string): string;
931
- }
932
-
933
- interface S3Config {
934
- s3AccessKey: string;
935
- s3SecretKey: string;
936
- endpoint: string;
937
- region: string | undefined;
938
- bucketName: string;
939
- keyPrefix: string;
940
- baseURL: string;
941
- }
942
- declare class S3Service {
943
- private s3Client;
944
- private readonly bucket;
945
- private readonly keyPrefix;
946
- private readonly baseURL;
947
- constructor(config: S3Config);
948
- uploadImgWithUrl(url: string, mimeType?: string): Promise<string>;
949
- uploadImg(buffer: Buffer, mimeType?: string): Promise<string>;
950
- }
951
-
952
- interface Config {
953
- s3: {
954
- enabled: boolean;
955
- } & S3Config;
956
- render: RenderConfig;
957
- minRawMatchMapIdLength: number;
958
- beatSaverHost: string;
959
- beatSaverWSURL: string;
960
- bsOauthClientId: string;
961
- bsOauthClientSecret: string;
962
- blOauthClientId: string;
963
- blOauthClientSecret: string;
964
- bsNotifyMonitorCron: ScheduleTaskConfig;
965
- tokenRefreshCron: ScheduleTaskConfig;
966
- tempCron: ScheduleTaskConfig;
967
- }
968
- interface ScheduleTaskConfig {
969
- cron: string;
970
- enabled: boolean;
971
- }
972
-
973
1016
  type ScheduleTaskCtx<T> = {
974
1017
  config: Config;
975
1018
  logger: Logger;
@@ -1027,6 +1070,45 @@ declare const handleWSEventWithCache: (fnThat: any, fn: any, ttl: any, eventPars
1027
1070
  declare const sleep: (millsec?: number) => Promise<void>;
1028
1071
  declare const convertDiff: (diff: string | null) => any;
1029
1072
 
1073
+ declare class I18nService {
1074
+ obj: any;
1075
+ constructor(config?: any);
1076
+ mergeConfig(lang: string, obj: any): void;
1077
+ loadLang(lang: string): void;
1078
+ tran(path: string, params?: {}, lang?: string): string;
1079
+ }
1080
+
1081
+ interface S3Config {
1082
+ s3AccessKey: string;
1083
+ s3SecretKey: string;
1084
+ endpoint: string;
1085
+ region?: string;
1086
+ bucketName: string;
1087
+ keyPrefix?: string;
1088
+ baseURL: string;
1089
+ }
1090
+ declare const s3ConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1091
+ s3AccessKey: z.ZodString;
1092
+ s3SecretKey: z.ZodString;
1093
+ endpoint: z.ZodString;
1094
+ baseURL: z.ZodString;
1095
+ bucketName: z.ZodString;
1096
+ region: z.ZodOptional<z.ZodString>;
1097
+ keyPrefix: z.ZodOptional<z.ZodString>;
1098
+ enabled: z.ZodLiteral<true>;
1099
+ }, z.core.$strip>, z.ZodObject<{
1100
+ enabled: z.ZodLiteral<false>;
1101
+ }, z.core.$strip>]>;
1102
+ declare class S3Service {
1103
+ private s3Client;
1104
+ private readonly bucket;
1105
+ private readonly keyPrefix;
1106
+ private readonly baseURL;
1107
+ constructor(config: S3Config);
1108
+ uploadImgWithUrl(url: string, mimeType?: string): Promise<string>;
1109
+ uploadImg(buffer: Buffer, mimeType?: string): Promise<string>;
1110
+ }
1111
+
1030
1112
  declare const getBot: <T>(config: Config) => {
1031
1113
  commands: Command<T>[];
1032
1114
  schedule: {
@@ -1037,4 +1119,4 @@ declare const getBot: <T>(config: Config) => {
1037
1119
  }[];
1038
1120
  };
1039
1121
 
1040
- export { APIService, BeatSaverWSHandler, BeatleaderWSHandler, type BotService, CFBrowserRendering, type CmdAlias, type CmdContext, type CmdExecutor, type CmdOption, type Command, type Config, type CreateImageRenderOption, type DB, type Extend, I18nService, type ImageRender, type Logger, type OptionType, Platform, type RenderOptions$1 as PuppeteerOptions, PuppeteerRendering, type RelateAccount, type RelateChannelInfo, RemoteBrowserGetter, type RenderConfig, RenderService, type S3Config, S3Service, type Services, type Session, type SubDetailWithGroupRes, type SubInfoRes, type SubWithGroupRes, type Subscribe, type SubscribeMember, type UserPreference, type WSHandler, botCommands, convertDiff, getBot, getImageRender, getScheduleTasks, handleWSEventWithCache, parsePlatform, sleep };
1122
+ export { APIService, BeatSaverWSHandler, BeatleaderWSHandler, type BotService, CFBrowserRendering, type CmdAlias, type CmdContext, type CmdExecutor, type CmdOption, type Command, type Config, type CreateImageRenderOption, type DB, type Extend, I18nService, type ImageRender, type Logger, type OptionType, Platform, type RenderOptions$1 as PuppeteerOptions, PuppeteerRendering, type RelateAccount, type RelateChannelInfo, RemoteBrowserGetter, type RenderConfig, RenderService, type S3Config, S3Service, type Services, type Session, type SubDetailWithGroupRes, type SubInfoRes, type SubWithGroupRes, type Subscribe, type SubscribeMember, type UserPreference, type WSHandler, botCommands, configSchema, convertDiff, getBot, getImageRender, getScheduleTasks, handleWSEventWithCache, parsePlatform, renderSchema, s3ConfigSchema, sleep };
package/package.json CHANGED
@@ -1,42 +1,50 @@
1
1
  {
2
2
  "name": "beatsaber-bot-core",
3
3
  "description": "Beatsaber bot",
4
- "version": "0.2.0-rc.13",
4
+ "version": "0.2.0-rc.14",
5
5
  "files": [
6
6
  "dist"
7
7
  ],
8
8
  "license": "MIT",
9
+ "type": "module",
9
10
  "author": {
10
11
  "name": "ktKongTong",
11
12
  "email": "kt@ktlab.io"
12
13
  },
13
14
  "exports": {
14
15
  ".": {
16
+ "types": "./dist/types/index.d.ts",
15
17
  "require": "./dist/cjs/index.js",
16
- "types": "./dist/types/index.d.ts"
18
+ "import": "./dist/esm/index.js"
17
19
  },
18
20
  "./interface": {
21
+ "types": "./dist/types/index.d.ts",
19
22
  "require": "./dist/cjs/interface/index.js",
20
- "types": "./dist/types/index.d.ts"
23
+ "import": "./dist/esm/interface/index.js"
21
24
  },
22
25
  "./interface/*": {
26
+ "types": "./dist/types/index.d.ts",
23
27
  "require": "./dist/cjs/interface/**/*.js",
24
- "types": "./dist/types/index.d.ts"
28
+ "import": "./dist/esm/interface/**/*.js"
25
29
  },
26
30
  "./service": {
31
+ "types": "./dist/types/index.d.ts",
27
32
  "require": "./dist/cjs/service/*.js",
28
- "types": "./dist/types/index.d.ts"
33
+ "import": "./dist/esm/service/*.js"
29
34
  },
30
35
  "./service/*": {
31
36
  "require": "./dist/cjs/service/*/index.js",
37
+ "import": "./dist/esm/service/*/index.js",
32
38
  "types": "./dist/types/index.d.ts"
33
39
  },
34
40
  "./infra": {
35
41
  "require": "./dist/cjs/infra/index.js",
42
+ "import": "./dist/esm/infra/index.js",
36
43
  "types": "./dist/types/index.d.ts"
37
44
  },
38
45
  "./infra/*": {
39
46
  "require": "./dist/cjs/infra/*/index.js",
47
+ "import": "./dist/esm/infra/*/index.js",
40
48
  "types": "./dist/types/index.d.ts"
41
49
  }
42
50
  },
@@ -60,11 +68,13 @@
60
68
  "puppeteer-core": "^24.11.2",
61
69
  "react": "^19",
62
70
  "react-dom": "^19",
63
- "@napi-rs/canvas": "^0.1.73"
71
+ "@napi-rs/canvas": "^0.1.73",
72
+ "zod": "^3.25.71"
64
73
  },
65
74
  "scripts": {
66
- "fix-path-alias": "tsc-alias --outDir dist/cjs && tsc-alias --outDir dist/esm",
75
+ "fix-path-alias": " tsc-alias --outDir dist/esm",
67
76
  "copy-yml-resource": "node scripts/build.mjs",
77
+ "up": "tsup",
68
78
  "build": "tsup && pnpm run copy-yml-resource && pnpm run fix-path-alias",
69
79
  "pub": "pnpm run build && pnpm publish"
70
80
  }