twitter-snap 0.0.60 → 0.0.62

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 (143) hide show
  1. package/LICENSE +1 -3
  2. package/README.md +190 -178
  3. package/bin/dev.cmd +3 -3
  4. package/bin/dev.js +6 -5
  5. package/bin/run.cmd +3 -3
  6. package/bin/run.js +5 -5
  7. package/dist/app.d.ts +81 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/app.js +230 -0
  10. package/dist/app.js.map +1 -0
  11. package/dist/commands/index.d.ts +7 -12
  12. package/dist/commands/index.d.ts.map +1 -1
  13. package/dist/commands/index.js +89 -27
  14. package/dist/commands/index.js.map +1 -1
  15. package/dist/config.d.ts +44 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +26 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/hooks/interactive.d.ts.map +1 -1
  20. package/dist/hooks/interactive.js +93 -86
  21. package/dist/hooks/interactive.js.map +1 -1
  22. package/dist/main.d.ts +1 -3
  23. package/dist/main.d.ts.map +1 -1
  24. package/dist/main.js +1 -3
  25. package/dist/main.js.map +1 -1
  26. package/dist/service/core.d.ts +34 -0
  27. package/dist/service/core.d.ts.map +1 -0
  28. package/dist/service/core.js +58 -0
  29. package/dist/service/core.js.map +1 -0
  30. package/dist/service/pixiv/app.d.ts +5 -0
  31. package/dist/service/pixiv/app.d.ts.map +1 -0
  32. package/dist/service/pixiv/app.js +141 -0
  33. package/dist/service/pixiv/app.js.map +1 -0
  34. package/dist/service/pixiv/render/image.d.ts +4 -0
  35. package/dist/service/pixiv/render/image.d.ts.map +1 -0
  36. package/dist/service/pixiv/render/image.js +186 -0
  37. package/dist/service/pixiv/render/image.js.map +1 -0
  38. package/dist/service/pixiv/render/video.d.ts +6 -0
  39. package/dist/service/pixiv/render/video.d.ts.map +1 -0
  40. package/dist/service/pixiv/render/video.js +65 -0
  41. package/dist/service/pixiv/render/video.js.map +1 -0
  42. package/dist/service/pixiv/type.d.ts +164 -0
  43. package/dist/service/pixiv/type.d.ts.map +1 -0
  44. package/dist/service/pixiv/type.js +2 -0
  45. package/dist/service/pixiv/type.js.map +1 -0
  46. package/dist/service/twitter/app.d.ts +4 -0
  47. package/dist/service/twitter/app.d.ts.map +1 -0
  48. package/dist/service/twitter/app.js +204 -0
  49. package/dist/service/twitter/app.js.map +1 -0
  50. package/dist/service/twitter/render/basic/image.d.ts +59 -0
  51. package/dist/service/twitter/render/basic/image.d.ts.map +1 -0
  52. package/dist/service/twitter/render/basic/image.js +698 -0
  53. package/dist/service/twitter/render/basic/image.js.map +1 -0
  54. package/dist/service/twitter/render/basic/video.d.ts +17 -0
  55. package/dist/service/twitter/render/basic/video.d.ts.map +1 -0
  56. package/dist/service/twitter/render/basic/video.js +95 -0
  57. package/dist/service/twitter/render/basic/video.js.map +1 -0
  58. package/dist/service/twitter/render/makeItAQuote/image.d.ts +16 -0
  59. package/dist/service/twitter/render/makeItAQuote/image.d.ts.map +1 -0
  60. package/dist/service/twitter/render/makeItAQuote/image.js +99 -0
  61. package/dist/service/twitter/render/makeItAQuote/image.js.map +1 -0
  62. package/dist/service/twitter/render/utils/utils.d.ts +8 -0
  63. package/dist/service/twitter/render/utils/utils.d.ts.map +1 -0
  64. package/dist/service/twitter/render/utils/utils.js +43 -0
  65. package/dist/service/twitter/render/utils/utils.js.map +1 -0
  66. package/dist/service/twitter/utils.d.ts +9 -0
  67. package/dist/service/twitter/utils.d.ts.map +1 -0
  68. package/dist/service/twitter/utils.js +27 -0
  69. package/dist/service/twitter/utils.js.map +1 -0
  70. package/dist/tsconfig.build.tsbuildinfo +1 -1
  71. package/dist/utils/cookies.d.ts +15 -0
  72. package/dist/utils/cookies.d.ts.map +1 -0
  73. package/dist/utils/cookies.js +24 -0
  74. package/dist/utils/cookies.js.map +1 -0
  75. package/dist/utils/element.d.ts +26 -0
  76. package/dist/utils/element.d.ts.map +1 -0
  77. package/dist/utils/element.js +186 -0
  78. package/dist/utils/element.js.map +1 -0
  79. package/dist/utils/file.d.ts +25 -0
  80. package/dist/utils/file.d.ts.map +1 -0
  81. package/dist/utils/file.js +51 -0
  82. package/dist/utils/file.js.map +1 -0
  83. package/dist/utils/font.d.ts +14 -0
  84. package/dist/utils/font.d.ts.map +1 -0
  85. package/dist/utils/font.js +19 -0
  86. package/dist/utils/font.js.map +1 -0
  87. package/dist/utils/logger.d.ts +53 -26
  88. package/dist/utils/logger.d.ts.map +1 -1
  89. package/dist/utils/logger.js +120 -111
  90. package/dist/utils/logger.js.map +1 -1
  91. package/dist/utils/login.d.ts +16 -0
  92. package/dist/utils/login.d.ts.map +1 -0
  93. package/dist/utils/login.js +55 -0
  94. package/dist/utils/login.js.map +1 -0
  95. package/dist/utils/path.d.ts +34 -1
  96. package/dist/utils/path.d.ts.map +1 -1
  97. package/dist/utils/path.js +100 -5
  98. package/dist/utils/path.js.map +1 -1
  99. package/dist/utils/render.d.ts +27 -0
  100. package/dist/utils/render.d.ts.map +1 -0
  101. package/dist/utils/render.js +48 -0
  102. package/dist/utils/render.js.map +1 -0
  103. package/dist/utils/replace.d.ts +4 -0
  104. package/dist/utils/replace.d.ts.map +1 -0
  105. package/dist/utils/replace.js +43 -0
  106. package/dist/utils/replace.js.map +1 -0
  107. package/dist/utils/sleep.d.ts.map +1 -1
  108. package/dist/utils/sleep.js +4 -2
  109. package/dist/utils/sleep.js.map +1 -1
  110. package/dist/utils/video.d.ts +28 -0
  111. package/dist/utils/video.d.ts.map +1 -0
  112. package/dist/utils/video.js +84 -0
  113. package/dist/utils/video.js.map +1 -0
  114. package/oclif.manifest.json +10 -30
  115. package/package.json +43 -31
  116. package/dist/core/core.d.ts +0 -42
  117. package/dist/core/core.d.ts.map +0 -1
  118. package/dist/core/core.js +0 -314
  119. package/dist/core/core.js.map +0 -1
  120. package/dist/core/main.d.ts +0 -15
  121. package/dist/core/main.d.ts.map +0 -1
  122. package/dist/core/main.js +0 -143
  123. package/dist/core/main.js.map +0 -1
  124. package/dist/utils/fonts.d.ts +0 -5
  125. package/dist/utils/fonts.d.ts.map +0 -1
  126. package/dist/utils/fonts.js +0 -11
  127. package/dist/utils/fonts.js.map +0 -1
  128. package/dist/utils/node.d.ts +0 -6
  129. package/dist/utils/node.d.ts.map +0 -1
  130. package/dist/utils/node.js +0 -15
  131. package/dist/utils/node.js.map +0 -1
  132. package/dist/utils/oclif.d.ts +0 -2
  133. package/dist/utils/oclif.d.ts.map +0 -1
  134. package/dist/utils/oclif.js +0 -6
  135. package/dist/utils/oclif.js.map +0 -1
  136. package/dist/utils/types.d.ts +0 -8
  137. package/dist/utils/types.d.ts.map +0 -1
  138. package/dist/utils/types.js +0 -4
  139. package/dist/utils/types.js.map +0 -1
  140. package/dist/utils/url.d.ts +0 -12
  141. package/dist/utils/url.d.ts.map +0 -1
  142. package/dist/utils/url.js +0 -74
  143. package/dist/utils/url.js.map +0 -1
package/LICENSE CHANGED
@@ -1,8 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 yuki
4
-
5
- <https://yuki0311.com/>
3
+ Copyright (c) 2023 [yuki](https://yuki0311.com/)
6
4
 
7
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
8
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,179 +1,191 @@
1
- # twitter-snap
2
-
3
- Create beautiful Tweet images fast.
4
- Fast, good design, Browser is not a dependency.
5
-
6
- ```shell
7
- npx twitter-snap@latest https://twitter.com/elonmusk/status/1770222178279252062
8
- ```
9
-
10
- <p float="left">
11
- <img src="./docs/img/output-1.png" width="49%" />
12
- <img src="./docs/img/output-2.png" width="49%" />
13
- <img src="./docs/img/output-3.png" width="49%" />
14
- <img src="./docs/img/output-4.png" width="49%" />
15
- </p>
16
-
17
- [More Samples](https://github.com/fa0311/twitter-snap/issues/47)
18
-
19
- ```shell
20
- # Interactive mode
21
- npx twitter-snap@latest -i
22
- ```
23
-
24
- <img src="./docs/img/input-1.png" width="49%" />
25
-
26
- ```shell
27
- # Output the API response directly to a file in raw JSON format.
28
- npx twitter-snap@latest --theme Json https://x.com/elonmusk/status/1349129669258448897
29
- # Download the media file and save it directly to a file in its raw format.
30
- npx twitter-snap@latest --theme MediaOnly https://x.com/elonmusk/status/1349129669258448897
31
- ```
32
-
33
- ## Install
34
-
35
- `npm -g i twitter-snap@latest`
36
-
37
- ## Docker
38
-
39
- ```shell
40
- docker run -it --rm -v $(pwd)/output:/app/output ghcr.io/fa0311/twitter-snap/twitter-snap-docker:latest https://x.com/elonmusk/status/1349129669258448897
41
- ```
42
-
43
- ```shell
44
- docker run -it --rm -v $(pwd)/output:/app/output -v $(pwd)/cookies.json:/app/cookies.json twitter-snap https://x.com/elonmusk/status/1349129669258448897 --session-type file
45
- ```
46
-
47
- `--session-type=browser` is not supported.
48
-
49
- `GPU` is not supported.
50
-
51
- # Use as a package
52
-
53
- ```shell
54
- npm i twitter-snap
55
- ```
56
-
57
- ```typescript
58
- const url = 'https://twitter.com/elonmusk/status/1349129669258448897'
59
- const [client, api] = await twitterSnapGuest() // or twitterSnapCookies, twitterSnapPuppeteer
60
- const fonts = await getFonts('temp/fonts')
61
- const [id, type] = await twitterUrlConvert({url: url, api: api})
62
- await client({id: id, limit: 1, type: type, startId: id}, async (render) => {
63
- const finalize = await render({
64
- output: `temp/${id}.{if-photo:png:mp4}`,
65
- themeName: 'RenderOceanBlueColor',
66
- themeParam: {
67
- fonts: fonts,
68
- width: 1440,
69
- },
70
- })
71
- await finalize({cleanup: true})
72
- })
73
- ```
74
-
75
- Also, if you use advanced customization, please use [twitter-snap-core](https://github.com/fa0311/twitter-snap-core).
76
-
77
- ## Arguments
78
-
79
- ```shell
80
- $ twitter-snap --help
81
- Create beautiful Tweet images fast
82
-
83
- USAGE
84
- $ twitter-snap ID [--api
85
- getTweetResultByRestId|getTweetDetail|getSearchTimeline|getHomeTimeline|getHomeLatestTimeline|getListLatestTweetsTim
86
- eline|getUserTweets|getUserTweetsAndReplies|getUserMedia|getLikes|getBookmarks] [--browserHeadless]
87
- [--browserProfile <value>] [--cookiesFile <value>] [--debug] [--interactive] [--ffmpegAdditonalOption <value>]
88
- [--ffmpegPath <value>] [--ffprobePath <value>] [--fontPath <value>] [--limit <value>] [--noCleanup] [-o <value>]
89
- [--sessionType <value>] [--simpleLog] [--sleep <value>] [--theme
90
- RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenColor|RenderSunsetGardenDarkColor|RenderDawnBlossomC
91
- olor|RenderDawnBlossomDarkColor|RenderFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyColor|RenderTwili
92
- ghtSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTransparent|RenderTransparentDark|RenderTransparentShado
93
- w|RenderTransparentDarkShadow|RenderMakeItAQuote|MediaOnly|Json] [--width <value>] [--scale <value>]
94
-
95
- ARGUMENTS
96
- ID Twitter status id
97
-
98
- FLAGS
99
- -o, --output=<value>
100
- [default: {if-media-only:{id}-{media-id}:{id}}.{if-photo:png:mp4}] Output file name
101
-
102
- --api=<option>
103
- [default: getTweetResultByRestId] API type
104
- <options: getTweetResultByRestId|getTweetDetail|getSearchTimeline|getHomeTimeline|getHomeLatestTimeline|getListLates
105
- tTweetsTimeline|getUserTweets|getUserTweetsAndReplies|getUserMedia|getLikes|getBookmarks>
106
-
107
- --browserHeadless
108
- Browser headless
109
-
110
- --browserProfile=<value>
111
- [default: ~/.cache/twitter-snap/profiles] Browser profile
112
-
113
- --cookiesFile=<value>
114
- [default: cookies.json] Cookies file
115
-
116
- --debug
117
- Debug
118
-
119
- --ffmpegAdditonalOption=<value>
120
- FFmpeg additonal option
121
-
122
- --ffmpegPath=<value>
123
- [default: ffmpeg] FFmpeg path
124
-
125
- --ffprobePath=<value>
126
- [default: ffprobe] FFprobe path
127
-
128
- --fontPath=<value>
129
- [default: ~/.cache/twitter-snap/fonts] Font path
130
-
131
- --interactive
132
- Enable interactive mode
133
-
134
- --limit=<value>
135
- [default: 30] Limit count
136
-
137
- --noCleanup
138
- Cleanup
139
-
140
- --scale=<value>
141
- [default: 1] Scale
142
-
143
- --sessionType=<value>
144
- [default: guest] Session type
145
-
146
- --simpleLog
147
- Simple log
148
-
149
- --sleep=<value>
150
- Sleep (ms)
151
-
152
- --theme=<option>
153
- [default: RenderOceanBlueColor] Theme type
154
- <options: RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenColor|RenderSunsetGardenDarkColor|RenderDa
155
- wnBlossomColor|RenderDawnBlossomDarkColor|RenderFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyColor|R
156
- enderTwilightSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTransparent|RenderTransparentDark|RenderTransp
157
- arentShadow|RenderTransparentDarkShadow|RenderMakeItAQuote|MediaOnly|Json>
158
-
159
- --width=<value>
160
- [default: 650] Width
161
-
162
- DESCRIPTION
163
- Create beautiful Tweet images fast
164
- https://github.com/fa0311/twitter-snap
165
-
166
- EXAMPLES
167
- Create a snap from tweet id with minimal commands.
168
-
169
- $ twitter-snap https://twitter.com/elonmusk/status/1349129669258448897
170
-
171
- Enable interactive mode.
172
-
173
- $ twitter-snap --interactive
174
-
175
- ```
176
-
177
- ## Dependence
178
-
1
+ # twitter-snap
2
+
3
+ Create beautiful Tweet images fast.
4
+ Fast, good design, Browser is not a dependency.
5
+
6
+ ```shell
7
+ npx twitter-snap@latest https://twitter.com/elonmusk/status/1770222178279252062
8
+ ```
9
+
10
+ <p float="left">
11
+ <img src="./docs/img/output-1.png" width="49%" />
12
+ <img src="./docs/img/output-2.png" width="49%" />
13
+ <img src="./docs/img/output-3.png" width="49%" />
14
+ <img src="./docs/img/output-4.png" width="49%" />
15
+ </p>
16
+
17
+ [More Samples](https://github.com/fa0311/twitter-snap/issues/47)
18
+
19
+ ```shell
20
+ # Interactive mode
21
+ npx twitter-snap@latest -i
22
+ ```
23
+
24
+ <img src="./docs/img/input-1.png" width="49%" />
25
+
26
+ ---
27
+
28
+ ```shell
29
+ # Login with cookies
30
+ npx twitter-snap@latest https://twitter.com/elonmusk/status/1349129669258448897 --session-type file --cookies-file cookies.json
31
+ # Login with puppeteer
32
+ npx twitter-snap@latest https://twitter.com/elonmusk/status/1349129669258448897 --session-type browser
33
+
34
+ # Output the API response directly to a file in raw JSON format.
35
+ npx twitter-snap@latest --theme Json https://x.com/elonmusk/status/1349129669258448897 -o output/data.json
36
+ # Download the media file and save it directly to a file in its raw format.
37
+ npx twitter-snap@latest --theme Media https://x.com/elonmusk/status/1349129669258448897 -o output/{count}
38
+ # Use chatgpt to summarize the data in this tweet.
39
+ npx twitter-snap@latest --theme LiteJson -o {stdout} https://x.com/elonmusk | chatgpt -p 'Summarize the data in this tweet.'
40
+ ```
41
+
42
+ ## Install
43
+
44
+ `npm -g i twitter-snap@latest`
45
+
46
+ ## Docker
47
+
48
+ ```shell
49
+ docker run -it --rm -v $(pwd)/output:/app/output ghcr.io/fa0311/twitter-snap/twitter-snap-docker:latest https://x.com/elonmusk/status/1349129669258448897
50
+ ```
51
+
52
+ ```shell
53
+ docker run -it --rm -v $(pwd)/output:/app/output -v $(pwd)/cookies.json:/app/cookies.json twitter-snap https://x.com/elonmusk/status/1349129669258448897 --session-type file
54
+ ```
55
+
56
+ `--session-type=browser` is not supported.
57
+
58
+ `GPU` is not supported.
59
+
60
+ # Use as a package
61
+
62
+ ```shell
63
+ npm i twitter-snap
64
+ ```
65
+
66
+ ```typescript
67
+ const snap = getSnapAppRender({url: 'https://x.com/elonmusk/status/1349129669258448897'})
68
+ const font = await snap.getFont()
69
+ const session = await snap.login({sessionType: 'guest'})
70
+ const render = await snap.getRender({limit: 1, session})
71
+
72
+ await snap.run(render, async (run) => {
73
+ const res = await run({
74
+ width: 650,
75
+ theme: 'RenderOceanBlueColor',
76
+ font,
77
+ output: 'temp/{id}-{count}.{if-type:png:mp4:json:}',
78
+ })
79
+ await res.file.tempCleanup()
80
+ })
81
+ ```
82
+
83
+ Also, if you use advanced customization, please use [twitter-snap-core](https://github.com/fa0311/twitter-snap-core).
84
+
85
+ # Usage
86
+
87
+ <!-- COMMANDS_PLACEHOLDER_START -->
88
+
89
+ ```shell
90
+ $ node bin/run.js --help
91
+ Create beautiful Tweet images fast
92
+
93
+ USAGE
94
+ $ twitter-snap URL [--browserHeadless] [--browserProfile
95
+ <value>] [--cookiesFile <value>] [--debug] [--interactive]
96
+ [--ffmpegAdditonalOption <value>] [--ffmpegPath <value>] [--ffprobePath
97
+ <value>] [--fontPath <value>] [--limit <value>] [--noCleanup] [-o <value>]
98
+ [--sessionType browser|file|guest] [--simpleLog] [--sleep <value>] [--theme
99
+ RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenColor|Render
100
+ SunsetGardenDarkColor|RenderDawnBlossomColor|RenderDawnBlossomDarkColor|Rend
101
+ erFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyColor|RenderT
102
+ wilightSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTransparent|
103
+ RenderTransparentDark|RenderTransparentShadow|RenderTransparentShadowDark|Js
104
+ on|LiteJson|Media|RenderMakeItAQuote] [--width <value>] [--scale <value>]
105
+
106
+ ARGUMENTS
107
+ URL Twitter url
108
+
109
+ FLAGS
110
+ -o, --output=<value>
111
+ [default: {id}-{count}.{if-type:png:mp4:json:}] Output file name
112
+
113
+ --browserHeadless
114
+ Browser headless
115
+
116
+ --browserProfile=<value>
117
+ [default: ~/.cache/twitter-snap/profiles] Browser profile
118
+
119
+ --cookiesFile=<value>
120
+ [default: cookies.json] Cookies file
121
+
122
+ --debug
123
+ Debug
124
+
125
+ --ffmpegAdditonalOption=<value>
126
+ FFmpeg additonal option
127
+
128
+ --ffmpegPath=<value>
129
+ [default: ffmpeg] FFmpeg path
130
+
131
+ --ffprobePath=<value>
132
+ [default: ffprobe] FFprobe path
133
+
134
+ --fontPath=<value>
135
+ [default: ~/.cache/twitter-snap/fonts] Font path
136
+
137
+ --interactive
138
+ Enable interactive mode
139
+
140
+ --limit=<value>
141
+ [default: 20] Limit count
142
+
143
+ --noCleanup
144
+ Cleanup
145
+
146
+ --scale=<value>
147
+ [default: 1] Scale
148
+
149
+ --sessionType=<option>
150
+ [default: guest] Session type
151
+ <options: browser|file|guest>
152
+
153
+ --simpleLog
154
+ Simple log
155
+
156
+ --sleep=<value>
157
+ Sleep (ms)
158
+
159
+ --theme=<option>
160
+ [default: RenderOceanBlueColor] Theme type
161
+ <options: RenderOceanBlueColor|RenderOceanBlueDarkColor|RenderSunsetGardenCo
162
+ lor|RenderSunsetGardenDarkColor|RenderDawnBlossomColor|RenderDawnBlossomDark
163
+ Color|RenderFierySunsetColor|RenderFierySunsetDarkColor|RenderTwilightSkyCol
164
+ or|RenderTwilightSkyDarkColor|RenderPlainColor|RenderPlainDarkColor|RenderTr
165
+ ansparent|RenderTransparentDark|RenderTransparentShadow|RenderTransparentSha
166
+ dowDark|Json|LiteJson|Media|RenderMakeItAQuote>
167
+
168
+ --width=<value>
169
+ [default: 650] Width
170
+
171
+ DESCRIPTION
172
+ Create beautiful Tweet images fast
173
+ https://github.com/fa0311/twitter-snap
174
+
175
+ EXAMPLES
176
+ Create a snap from tweet id with minimal commands.
177
+
178
+ $ twitter-snap https://twitter.com/elonmusk/status/1349129669258448897
179
+
180
+ Enable interactive mode.
181
+
182
+ $ twitter-snap --interactive
183
+
184
+
185
+ ```
186
+
187
+ <!-- COMMANDS_PLACEHOLDER_END -->
188
+
189
+ ## Dependence
190
+
179
191
  - [ffmpeg](https://ffmpeg.org/) (for video)
package/bin/dev.cmd CHANGED
@@ -1,3 +1,3 @@
1
- @echo off
2
-
3
- node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
1
+ @echo off
2
+
3
+ node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
package/bin/dev.js CHANGED
@@ -1,5 +1,6 @@
1
- #!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
2
-
3
- import {execute} from '@oclif/core'
4
-
5
- await execute({development: true, dir: import.meta.url})
1
+ #!/usr/bin/env -S node --loader ts-node/esm --disable-warning=ExperimentalWarning
2
+
3
+ // eslint-disable-next-line n/shebang
4
+ import {execute} from '@oclif/core'
5
+
6
+ await execute({development: true, dir: import.meta.url})
package/bin/run.cmd CHANGED
@@ -1,3 +1,3 @@
1
- @echo off
2
-
3
- node "%~dp0\run" %*
1
+ @echo off
2
+
3
+ node "%~dp0\run" %*
package/bin/run.js CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env node
2
-
3
- import {execute} from '@oclif/core'
4
-
5
- await execute({dir: import.meta.url})
1
+ #!/usr/bin/env node
2
+
3
+ import {execute} from '@oclif/core'
4
+
5
+ await execute({dir: import.meta.url})
package/dist/app.d.ts ADDED
@@ -0,0 +1,81 @@
1
+ import { ColorThemeType, themeList } from './config.js';
2
+ import { FontOptions, FontUtils } from './utils/font.js';
3
+ import { Logger } from './utils/logger.js';
4
+ import { SnapAppBrowserUtils } from './utils/login.js';
5
+ import { SnapRenderBaseUtils, SnapRenderColorUtils, SnapRenderUtils } from './utils/render.js';
6
+ import { FileReplace } from './utils/replace.js';
7
+ export declare const includeColorTheme: (theme: string) => theme is ColorThemeType;
8
+ export declare const includeTheme: (theme: string) => theme is keyof typeof themeList;
9
+ type ExtractGroups<T extends string> = T extends `${infer _Start}(?<${infer GroupName}>${infer _Rest})${infer Tail}` ? {
10
+ [K in GroupName | keyof ExtractGroups<Tail>]: string;
11
+ } : {};
12
+ type SnapAppCallback<T1, V1 extends string, V2> = (utils: {
13
+ limit: number;
14
+ }, api: T1, match: ExtractGroups<V1>) => Promise<SnapRenderChild<V2>>;
15
+ export declare class Session<T1> {
16
+ api: T1;
17
+ constructor(api: T1);
18
+ }
19
+ export declare class SnapApp<T1> {
20
+ name: string;
21
+ callback: (util: SnapAppBrowserUtils) => Promise<Session<T1>>;
22
+ fonts: (utils: FontUtils) => Promise<FontOptions>;
23
+ init: ({ logger }: {
24
+ logger: Logger;
25
+ }) => Promise<void>;
26
+ pattern: RegExp;
27
+ callbackList: [RegExp, SnapAppCallback<T1, string, any>][];
28
+ constructor(name: string, pattern: string, callback: (util: SnapAppBrowserUtils) => Promise<Session<T1>>, fonts: (utils: FontUtils) => Promise<FontOptions>, init: ({ logger }: {
29
+ logger: Logger;
30
+ }) => Promise<void>);
31
+ call<V1 extends string, V2>(pattern: V1, callback: SnapAppCallback<T1, V1, V2>): void;
32
+ }
33
+ type CallbackImage<T1> = (data: T1, utils: SnapRenderColorUtils) => Promise<React.ReactElement>;
34
+ type CallbackVideo<T1> = (data: T1, utils: SnapRenderColorUtils) => Promise<void>;
35
+ type CallbackOther<T1> = (data: T1, utils: SnapRenderUtils, placeholder: FileReplace[], output: string) => Promise<void>;
36
+ type CallbackJson<T1> = (data: T1, utils: SnapRenderUtils) => Promise<any>;
37
+ type CallbackMedia<T1> = (data: T1, utils: SnapRenderUtils) => Promise<void>;
38
+ export declare class SnapRender<T1> {
39
+ isImage: (data: T1) => boolean;
40
+ placeholder: (data: T1) => FileReplace[];
41
+ imageCallback: [string, CallbackImage<T1>][];
42
+ videoCallback: [string, CallbackVideo<T1>][];
43
+ otherCallback: [string, CallbackOther<T1>][];
44
+ jsonCallback: [string, CallbackJson<T1>][];
45
+ constructor(isImage: (data: T1) => boolean, placeholder: (data: T1) => FileReplace[], image: CallbackImage<T1>, video: CallbackVideo<T1>);
46
+ run: (data: AsyncGenerator<T1, any, any>) => SnapRenderChild<T1>;
47
+ add: (theme: string, image: CallbackImage<T1>, video: CallbackVideo<T1>) => void;
48
+ other: (theme: string, callback: CallbackOther<T1>) => void;
49
+ json: (theme: string, json: CallbackJson<T1>) => void;
50
+ media: <T2>(theme: string, media: (data: T1) => T2[], mediaPlaceholder: (data: T2) => FileReplace[], callback: CallbackMedia<T2>) => void;
51
+ }
52
+ export type SnapRenderChildNextParam<T1> = {
53
+ data: T1;
54
+ ffmpegAdditonalOption?: string[];
55
+ ffmpegPath?: string;
56
+ ffprobePath?: string;
57
+ font: FontOptions;
58
+ logger: Logger;
59
+ output: string;
60
+ scale: number;
61
+ theme: string;
62
+ width: number;
63
+ };
64
+ export declare class SnapRenderChild<T1> {
65
+ isImage: (data: T1) => boolean;
66
+ placeholder: (data: T1) => FileReplace[];
67
+ imageCallback: [string, CallbackImage<T1>][];
68
+ videoCallback: [string, CallbackVideo<T1>][];
69
+ otherCallback: [string, CallbackOther<T1>][];
70
+ jsonCallback: [string, CallbackJson<T1>][];
71
+ data: AsyncGenerator<T1, any, any>;
72
+ count: number;
73
+ constructor(isImage: (data: T1) => boolean, placeholder: (data: T1) => FileReplace[], imageCallback: [string, CallbackImage<T1>][], videoCallback: [string, CallbackVideo<T1>][], otherCallback: [string, CallbackOther<T1>][], jsonCallback: [string, CallbackJson<T1>][], data: AsyncGenerator<T1, any, any>);
74
+ image: (theme: string) => CallbackImage<T1>;
75
+ video: (theme: string) => CallbackVideo<T1>;
76
+ other: (theme: string) => CallbackOther<T1>;
77
+ json: (theme: string) => CallbackJson<T1>;
78
+ next: (flag: SnapRenderChildNextParam<T1>) => Promise<SnapRenderBaseUtils>;
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}