apify-cli 0.21.0-beta.9 → 0.21.0-beta.90

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 (268) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/README.md +631 -74
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/commands/actor/get-input.js +1 -6
  5. package/dist/commands/actor/get-input.js.map +1 -1
  6. package/dist/commands/actor/get-value.js +7 -17
  7. package/dist/commands/actor/get-value.js.map +1 -1
  8. package/dist/commands/actor/index.js +1 -6
  9. package/dist/commands/actor/index.js.map +1 -1
  10. package/dist/commands/actor/push-data.d.ts.map +1 -1
  11. package/dist/commands/actor/push-data.js +20 -24
  12. package/dist/commands/actor/push-data.js.map +1 -1
  13. package/dist/commands/actor/set-value.js +27 -50
  14. package/dist/commands/actor/set-value.js.map +1 -1
  15. package/dist/commands/actors/build.d.ts +4 -0
  16. package/dist/commands/actors/build.d.ts.map +1 -0
  17. package/dist/commands/actors/build.js +4 -0
  18. package/dist/commands/actors/build.js.map +1 -0
  19. package/dist/commands/actors/call.d.ts +30 -0
  20. package/dist/commands/actors/call.d.ts.map +1 -0
  21. package/dist/commands/actors/call.js +221 -0
  22. package/dist/commands/actors/call.js.map +1 -0
  23. package/dist/commands/actors/index.js +1 -6
  24. package/dist/commands/actors/index.js.map +1 -1
  25. package/dist/commands/actors/info.d.ts +22 -0
  26. package/dist/commands/actors/info.d.ts.map +1 -0
  27. package/dist/commands/actors/info.js +201 -0
  28. package/dist/commands/actors/info.js.map +1 -0
  29. package/dist/commands/actors/ls.d.ts +15 -0
  30. package/dist/commands/actors/ls.d.ts.map +1 -0
  31. package/dist/commands/actors/ls.js +224 -0
  32. package/dist/commands/actors/ls.js.map +1 -0
  33. package/dist/commands/actors/pull.d.ts +13 -0
  34. package/dist/commands/actors/pull.d.ts.map +1 -0
  35. package/dist/commands/actors/pull.js +151 -0
  36. package/dist/commands/actors/pull.js.map +1 -0
  37. package/dist/commands/actors/push.d.ts +18 -0
  38. package/dist/commands/actors/push.d.ts.map +1 -0
  39. package/dist/commands/actors/push.js +306 -0
  40. package/dist/commands/actors/push.js.map +1 -0
  41. package/dist/commands/actors/rm.js +7 -17
  42. package/dist/commands/actors/rm.js.map +1 -1
  43. package/dist/commands/actors/start.d.ts +18 -0
  44. package/dist/commands/actors/start.d.ts.map +1 -0
  45. package/dist/commands/actors/start.js +124 -0
  46. package/dist/commands/actors/start.js.map +1 -0
  47. package/dist/commands/builds/create.d.ts +3 -1
  48. package/dist/commands/builds/create.d.ts.map +1 -1
  49. package/dist/commands/builds/create.js +35 -37
  50. package/dist/commands/builds/create.js.map +1 -1
  51. package/dist/commands/builds/index.js +1 -6
  52. package/dist/commands/builds/index.js.map +1 -1
  53. package/dist/commands/builds/info.js +11 -26
  54. package/dist/commands/builds/info.js.map +1 -1
  55. package/dist/commands/builds/log.d.ts.map +1 -1
  56. package/dist/commands/builds/log.js +12 -19
  57. package/dist/commands/builds/log.js.map +1 -1
  58. package/dist/commands/builds/ls.d.ts +3 -1
  59. package/dist/commands/builds/ls.d.ts.map +1 -1
  60. package/dist/commands/builds/ls.js +40 -45
  61. package/dist/commands/builds/ls.js.map +1 -1
  62. package/dist/commands/builds/rm.d.ts.map +1 -1
  63. package/dist/commands/builds/rm.js +11 -19
  64. package/dist/commands/builds/rm.js.map +1 -1
  65. package/dist/commands/call.d.ts +2 -18
  66. package/dist/commands/call.d.ts.map +1 -1
  67. package/dist/commands/call.js +2 -181
  68. package/dist/commands/call.js.map +1 -1
  69. package/dist/commands/check-version.js +8 -28
  70. package/dist/commands/check-version.js.map +1 -1
  71. package/dist/commands/create.js +29 -44
  72. package/dist/commands/create.js.map +1 -1
  73. package/dist/commands/datasets/create.d.ts +10 -0
  74. package/dist/commands/datasets/create.d.ts.map +1 -0
  75. package/dist/commands/datasets/create.js +37 -0
  76. package/dist/commands/datasets/create.js.map +1 -0
  77. package/dist/commands/datasets/get-items.d.ts +17 -0
  78. package/dist/commands/datasets/get-items.d.ts.map +1 -0
  79. package/dist/commands/datasets/get-items.js +85 -0
  80. package/dist/commands/datasets/get-items.js.map +1 -0
  81. package/dist/commands/datasets/index.js +1 -6
  82. package/dist/commands/datasets/index.js.map +1 -1
  83. package/dist/commands/datasets/info.d.ts +29 -0
  84. package/dist/commands/datasets/info.d.ts.map +1 -0
  85. package/dist/commands/datasets/info.js +124 -0
  86. package/dist/commands/datasets/info.js.map +1 -0
  87. package/dist/commands/datasets/ls.d.ts +13 -0
  88. package/dist/commands/datasets/ls.d.ts.map +1 -0
  89. package/dist/commands/datasets/ls.js +72 -0
  90. package/dist/commands/datasets/ls.js.map +1 -0
  91. package/dist/commands/datasets/push-items.d.ts +10 -0
  92. package/dist/commands/datasets/push-items.d.ts.map +1 -0
  93. package/dist/commands/datasets/push-items.js +69 -0
  94. package/dist/commands/datasets/push-items.js.map +1 -0
  95. package/dist/commands/datasets/rename.d.ts +13 -0
  96. package/dist/commands/datasets/rename.d.ts.map +1 -0
  97. package/dist/commands/datasets/rename.js +69 -0
  98. package/dist/commands/datasets/rename.js.map +1 -0
  99. package/dist/commands/datasets/rm.d.ts +9 -0
  100. package/dist/commands/datasets/rm.d.ts.map +1 -0
  101. package/dist/commands/datasets/rm.js +47 -0
  102. package/dist/commands/datasets/rm.js.map +1 -0
  103. package/dist/commands/edit-input-schema.js +9 -29
  104. package/dist/commands/edit-input-schema.js.map +1 -1
  105. package/dist/commands/info.js +2 -7
  106. package/dist/commands/info.js.map +1 -1
  107. package/dist/commands/init-wrap-scrapy.js +9 -24
  108. package/dist/commands/init-wrap-scrapy.js.map +1 -1
  109. package/dist/commands/init.js +19 -34
  110. package/dist/commands/init.js.map +1 -1
  111. package/dist/commands/key-value-stores/create.d.ts +11 -0
  112. package/dist/commands/key-value-stores/create.d.ts.map +1 -0
  113. package/dist/commands/key-value-stores/create.js +38 -0
  114. package/dist/commands/key-value-stores/create.js.map +1 -0
  115. package/dist/commands/key-value-stores/delete-value.d.ts +11 -0
  116. package/dist/commands/key-value-stores/delete-value.d.ts.map +1 -0
  117. package/dist/commands/key-value-stores/delete-value.js +61 -0
  118. package/dist/commands/key-value-stores/delete-value.js.map +1 -0
  119. package/dist/commands/key-value-stores/get-value.d.ts +14 -0
  120. package/dist/commands/key-value-stores/get-value.d.ts.map +1 -0
  121. package/dist/commands/key-value-stores/get-value.js +69 -0
  122. package/dist/commands/key-value-stores/get-value.js.map +1 -0
  123. package/dist/commands/key-value-stores/index.d.ts +1 -0
  124. package/dist/commands/key-value-stores/index.d.ts.map +1 -1
  125. package/dist/commands/key-value-stores/index.js +2 -6
  126. package/dist/commands/key-value-stores/index.js.map +1 -1
  127. package/dist/commands/key-value-stores/info.d.ts +27 -0
  128. package/dist/commands/key-value-stores/info.d.ts.map +1 -0
  129. package/dist/commands/key-value-stores/info.js +127 -0
  130. package/dist/commands/key-value-stores/info.js.map +1 -0
  131. package/dist/commands/key-value-stores/keys.d.ts +15 -0
  132. package/dist/commands/key-value-stores/keys.d.ts.map +1 -0
  133. package/dist/commands/key-value-stores/keys.js +60 -0
  134. package/dist/commands/key-value-stores/keys.js.map +1 -0
  135. package/dist/commands/key-value-stores/ls.d.ts +14 -0
  136. package/dist/commands/key-value-stores/ls.d.ts.map +1 -0
  137. package/dist/commands/key-value-stores/ls.js +71 -0
  138. package/dist/commands/key-value-stores/ls.js.map +1 -0
  139. package/dist/commands/key-value-stores/rename.d.ts +14 -0
  140. package/dist/commands/key-value-stores/rename.d.ts.map +1 -0
  141. package/dist/commands/key-value-stores/rename.js +70 -0
  142. package/dist/commands/key-value-stores/rename.js.map +1 -0
  143. package/dist/commands/key-value-stores/rm.d.ts +10 -0
  144. package/dist/commands/key-value-stores/rm.d.ts.map +1 -0
  145. package/dist/commands/key-value-stores/rm.js +48 -0
  146. package/dist/commands/key-value-stores/rm.js.map +1 -0
  147. package/dist/commands/key-value-stores/set-value.d.ts +15 -0
  148. package/dist/commands/key-value-stores/set-value.d.ts.map +1 -0
  149. package/dist/commands/key-value-stores/set-value.js +59 -0
  150. package/dist/commands/key-value-stores/set-value.js.map +1 -0
  151. package/dist/commands/login.js +16 -26
  152. package/dist/commands/login.js.map +1 -1
  153. package/dist/commands/logout.js +2 -7
  154. package/dist/commands/logout.js.map +1 -1
  155. package/dist/commands/pull.d.ts +2 -10
  156. package/dist/commands/pull.d.ts.map +1 -1
  157. package/dist/commands/pull.js +2 -160
  158. package/dist/commands/pull.js.map +1 -1
  159. package/dist/commands/push.d.ts +2 -16
  160. package/dist/commands/push.d.ts.map +1 -1
  161. package/dist/commands/push.js +2 -323
  162. package/dist/commands/push.js.map +1 -1
  163. package/dist/commands/request-queues/index.js +1 -6
  164. package/dist/commands/request-queues/index.js.map +1 -1
  165. package/dist/commands/run.d.ts.map +1 -1
  166. package/dist/commands/run.js +67 -62
  167. package/dist/commands/run.js.map +1 -1
  168. package/dist/commands/runs/abort.d.ts.map +1 -1
  169. package/dist/commands/runs/abort.js +21 -39
  170. package/dist/commands/runs/abort.js.map +1 -1
  171. package/dist/commands/runs/index.js +1 -6
  172. package/dist/commands/runs/index.js.map +1 -1
  173. package/dist/commands/runs/info.d.ts +2 -0
  174. package/dist/commands/runs/info.d.ts.map +1 -1
  175. package/dist/commands/runs/info.js +21 -41
  176. package/dist/commands/runs/info.js.map +1 -1
  177. package/dist/commands/runs/log.js +9 -19
  178. package/dist/commands/runs/log.js.map +1 -1
  179. package/dist/commands/runs/ls.d.ts +3 -1
  180. package/dist/commands/runs/ls.d.ts.map +1 -1
  181. package/dist/commands/runs/ls.js +36 -49
  182. package/dist/commands/runs/ls.js.map +1 -1
  183. package/dist/commands/runs/resurrect.d.ts.map +1 -1
  184. package/dist/commands/runs/resurrect.js +12 -25
  185. package/dist/commands/runs/resurrect.js.map +1 -1
  186. package/dist/commands/runs/rm.js +7 -17
  187. package/dist/commands/runs/rm.js.map +1 -1
  188. package/dist/commands/secrets/add.js +7 -17
  189. package/dist/commands/secrets/add.js.map +1 -1
  190. package/dist/commands/secrets/index.js +6 -11
  191. package/dist/commands/secrets/index.js.map +1 -1
  192. package/dist/commands/secrets/rm.js +7 -17
  193. package/dist/commands/secrets/rm.js.map +1 -1
  194. package/dist/commands/task/index.js +1 -6
  195. package/dist/commands/task/index.js.map +1 -1
  196. package/dist/commands/task/run.d.ts +0 -1
  197. package/dist/commands/task/run.d.ts.map +1 -1
  198. package/dist/commands/task/run.js +30 -30
  199. package/dist/commands/task/run.js.map +1 -1
  200. package/dist/commands/validate-schema.js +17 -32
  201. package/dist/commands/validate-schema.js.map +1 -1
  202. package/dist/lib/apify_command.d.ts.map +1 -1
  203. package/dist/lib/apify_command.js +3 -21
  204. package/dist/lib/apify_command.js.map +1 -1
  205. package/dist/lib/commands/confirm.d.ts +2 -2
  206. package/dist/lib/commands/confirm.d.ts.map +1 -1
  207. package/dist/lib/commands/confirm.js +1 -1
  208. package/dist/lib/commands/confirm.js.map +1 -1
  209. package/dist/lib/commands/pretty-print-bytes.d.ts +6 -1
  210. package/dist/lib/commands/pretty-print-bytes.d.ts.map +1 -1
  211. package/dist/lib/commands/pretty-print-bytes.js +6 -5
  212. package/dist/lib/commands/pretty-print-bytes.js.map +1 -1
  213. package/dist/lib/commands/read-stdin.d.ts +1 -1
  214. package/dist/lib/commands/read-stdin.d.ts.map +1 -1
  215. package/dist/lib/commands/read-stdin.js +13 -1
  216. package/dist/lib/commands/read-stdin.js.map +1 -1
  217. package/dist/lib/commands/resolve-input.js +1 -1
  218. package/dist/lib/commands/resolve-input.js.map +1 -1
  219. package/dist/lib/commands/responsive-table.d.ts +45 -6
  220. package/dist/lib/commands/responsive-table.d.ts.map +1 -1
  221. package/dist/lib/commands/responsive-table.js +89 -18
  222. package/dist/lib/commands/responsive-table.js.map +1 -1
  223. package/dist/lib/commands/run-on-cloud.d.ts +3 -2
  224. package/dist/lib/commands/run-on-cloud.d.ts.map +1 -1
  225. package/dist/lib/commands/run-on-cloud.js +42 -18
  226. package/dist/lib/commands/run-on-cloud.js.map +1 -1
  227. package/dist/lib/commands/storage-size.d.ts +6 -0
  228. package/dist/lib/commands/storage-size.d.ts.map +1 -0
  229. package/dist/lib/commands/storage-size.js +8 -0
  230. package/dist/lib/commands/storage-size.js.map +1 -0
  231. package/dist/lib/commands/storages.d.ts +10 -0
  232. package/dist/lib/commands/storages.d.ts.map +1 -0
  233. package/dist/lib/commands/storages.js +30 -0
  234. package/dist/lib/commands/storages.js.map +1 -0
  235. package/dist/lib/consts.d.ts.map +1 -1
  236. package/dist/lib/consts.js +11 -1
  237. package/dist/lib/consts.js.map +1 -1
  238. package/dist/lib/create-utils.d.ts +1 -1
  239. package/dist/lib/create-utils.d.ts.map +1 -1
  240. package/dist/lib/create-utils.js +1 -2
  241. package/dist/lib/create-utils.js.map +1 -1
  242. package/dist/lib/exec.d.ts.map +1 -1
  243. package/dist/lib/exec.js +3 -1
  244. package/dist/lib/exec.js.map +1 -1
  245. package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.d.ts.map +1 -1
  246. package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.js +8 -22
  247. package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.js.map +1 -1
  248. package/dist/lib/projects/scrapy/Spider.js +4 -24
  249. package/dist/lib/projects/scrapy/Spider.js.map +1 -1
  250. package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js +1 -6
  251. package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js.map +1 -1
  252. package/dist/lib/projects/scrapy/wrapScrapyProject.d.ts.map +1 -1
  253. package/dist/lib/projects/scrapy/wrapScrapyProject.js +3 -2
  254. package/dist/lib/projects/scrapy/wrapScrapyProject.js.map +1 -1
  255. package/dist/lib/telemetry.d.ts.map +1 -1
  256. package/dist/lib/telemetry.js +1 -0
  257. package/dist/lib/telemetry.js.map +1 -1
  258. package/dist/lib/utils.d.ts +4 -2
  259. package/dist/lib/utils.d.ts.map +1 -1
  260. package/dist/lib/utils.js +3 -2
  261. package/dist/lib/utils.js.map +1 -1
  262. package/dist/lib/version_check.d.ts +1 -1
  263. package/dist/lib/version_check.d.ts.map +1 -1
  264. package/dist/lib/version_check.js +6 -0
  265. package/dist/lib/version_check.js.map +1 -1
  266. package/dist/typechecking.tsbuildinfo +1 -1
  267. package/oclif.manifest.json +1260 -148
  268. package/package.json +21 -20
@@ -0,0 +1,201 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import { ApifyCommand } from '../../lib/apify_command.js';
4
+ import { resolveActorContext } from '../../lib/commands/resolve-actor-context.js';
5
+ import { CompactMode, ResponsiveTable } from '../../lib/commands/responsive-table.js';
6
+ import { error, simpleLog } from '../../lib/outputs.js';
7
+ import { DurationFormatter, getLoggedClientOrThrow, TimestampFormatter } from '../../lib/utils.js';
8
+ const eventTitleColumn = '\u200b';
9
+ const eventPriceUsdColumn = '\u200b\u200b';
10
+ const payPerEventTable = new ResponsiveTable({
11
+ allColumns: [eventTitleColumn, eventPriceUsdColumn],
12
+ mandatoryColumns: [eventTitleColumn, eventPriceUsdColumn],
13
+ columnAlignments: {
14
+ [eventTitleColumn]: 'left',
15
+ [eventPriceUsdColumn]: 'right',
16
+ },
17
+ });
18
+ export class ActorsInfoCommand extends ApifyCommand {
19
+ static description = 'Get information about an Actor.';
20
+ static flags = {
21
+ readme: Flags.boolean({
22
+ description: 'Return the Actor README.',
23
+ exclusive: ['input'],
24
+ }),
25
+ input: Flags.boolean({
26
+ description: 'Return the Actor input schema.',
27
+ exclusive: ['readme'],
28
+ }),
29
+ };
30
+ static args = {
31
+ actorId: Args.string({
32
+ description: 'The ID of the Actor to return information about.',
33
+ required: true,
34
+ }),
35
+ };
36
+ static enableJsonFlag = true;
37
+ async run() {
38
+ const { actorId } = this.args;
39
+ const { readme, input, json } = this.flags;
40
+ const client = await getLoggedClientOrThrow();
41
+ const ctx = await resolveActorContext({ providedActorNameOrId: actorId, client });
42
+ if (!ctx.valid) {
43
+ error({
44
+ message: `${ctx.reason}. Please specify the Actor ID.`,
45
+ stdout: true,
46
+ });
47
+ return;
48
+ }
49
+ const actorInfo = (await client.actor(ctx.id).get());
50
+ const actorMaker = await client.user(actorInfo.userId).get();
51
+ actorInfo.actorMaker = actorMaker;
52
+ // Hydrate builds
53
+ for (const taggedBuild of Object.values(actorInfo.taggedBuilds ?? {})) {
54
+ if (!taggedBuild.buildId) {
55
+ continue;
56
+ }
57
+ const buildData = await client.build(taggedBuild.buildId).get();
58
+ taggedBuild.build = buildData;
59
+ }
60
+ if (json) {
61
+ return actorInfo;
62
+ }
63
+ const latest = actorInfo.taggedBuilds?.latest;
64
+ if (readme) {
65
+ if (!latest) {
66
+ error({
67
+ message: 'No README found for this Actor.',
68
+ stdout: true,
69
+ });
70
+ return;
71
+ }
72
+ if (!latest.build?.readme) {
73
+ error({
74
+ message: 'No README found for this Actor.',
75
+ stdout: true,
76
+ });
77
+ return;
78
+ }
79
+ simpleLog({ message: latest.build.readme, stdout: true });
80
+ }
81
+ if (input) {
82
+ if (!latest) {
83
+ error({
84
+ message: 'No input schema found for this Actor.',
85
+ stdout: true,
86
+ });
87
+ return;
88
+ }
89
+ if (!latest.build?.inputSchema) {
90
+ error({
91
+ message: 'No input schema found for this Actor.',
92
+ stdout: true,
93
+ });
94
+ return;
95
+ }
96
+ simpleLog({ message: latest.build.inputSchema, stdout: true });
97
+ }
98
+ const message = [
99
+ `Information about Actor ${chalk.yellow(`${actorInfo.username}/${actorInfo.name}`)} (${chalk.gray(actorInfo.id)})`,
100
+ '',
101
+ ];
102
+ if (actorInfo.title) {
103
+ message.push(`${chalk.yellow('Title:')} ${chalk.bold(actorInfo.title)}`);
104
+ }
105
+ if (actorInfo.description) {
106
+ message.push(`${chalk.yellow('Description:')} ${actorInfo.description}`);
107
+ }
108
+ message.push(`${chalk.yellow('Created at:')} ${chalk.cyan(TimestampFormatter.display(actorInfo.createdAt))} ${chalk.gray('|')} ${chalk.yellow('Updated at:')} ${chalk.cyan(TimestampFormatter.display(actorInfo.modifiedAt))}`);
109
+ if (actorInfo.actorMaker) {
110
+ message.push('', `${chalk.yellow('Made by:')} ${chalk.cyan(actorInfo.actorMaker.profile.name ?? actorInfo.actorMaker.username)}`);
111
+ // Missing types who?
112
+ if (Reflect.get(actorInfo, 'isCritical')) {
113
+ message[message.length - 1] += ` ${chalk.bgGray('Maintained by Apify')}`;
114
+ }
115
+ }
116
+ if (actorInfo.isPublic) {
117
+ message.push('', `${chalk.yellow('Actor is')} ${chalk.green('PUBLIC')}`);
118
+ }
119
+ else {
120
+ message.push('', `${chalk.yellow('Actor is')} ${chalk.cyan('PRIVATE')}`);
121
+ }
122
+ if (actorInfo.isDeprecated) {
123
+ message.push('', `${chalk.yellow('Actor is')} ${chalk.red('DEPRECATED')}`);
124
+ }
125
+ // Pricing info
126
+ const pricingInfo = Reflect.get(actorInfo, 'pricingInfos');
127
+ if (pricingInfo?.length) {
128
+ // We only print the latest pricing info
129
+ const latestPricingInfo = pricingInfo.at(-1);
130
+ switch (latestPricingInfo.pricingModel) {
131
+ case 'FLAT_PRICE_PER_MONTH': {
132
+ message.push(`${chalk.yellow('Pricing information:')} ${chalk.bgGray(`$${latestPricingInfo.pricePerUnitUsd}/month + usage`)}`);
133
+ if (latestPricingInfo.trialMinutes) {
134
+ const minutesToMs = latestPricingInfo.trialMinutes * 60 * 1000;
135
+ const duration = DurationFormatter.format(minutesToMs);
136
+ message.push(` ${chalk.yellow('Trial duration:')} ${chalk.bold(duration)}`);
137
+ }
138
+ break;
139
+ }
140
+ case 'PRICE_PER_DATASET_ITEM': {
141
+ const pricePerOneKItems = latestPricingInfo.pricePerUnitUsd * 1000;
142
+ message.push(`${chalk.yellow('Pricing information:')} ${chalk.bgGray(`$${pricePerOneKItems.toFixed(2)} / 1,000 results`)}`);
143
+ break;
144
+ }
145
+ case 'PAY_PER_EVENT': {
146
+ message.push(`${chalk.yellow('Pricing information:')} ${chalk.bgGray('Pay per event')}`);
147
+ const events = Object.values(latestPricingInfo.pricingPerEvent?.actorChargeEvents ?? {});
148
+ for (const eventInfo of events) {
149
+ payPerEventTable.pushRow({
150
+ [eventTitleColumn]: eventInfo.eventTitle,
151
+ [eventPriceUsdColumn]: chalk.bold(`$${eventInfo.eventPriceUsd.toFixed(2)}`),
152
+ });
153
+ }
154
+ const rendered = payPerEventTable.render(CompactMode.VeryCompact);
155
+ const split = rendered.split('\n');
156
+ // Remove the second line
157
+ split.splice(1, 1);
158
+ message.push(split.join('\n'));
159
+ break;
160
+ }
161
+ case 'FREE': {
162
+ message.push(`${chalk.yellow('Pricing information:')} ${chalk.bgGray('Pay for usage')}`);
163
+ break;
164
+ }
165
+ default: {
166
+ message.push(`${chalk.yellow('Pricing information:')} ${chalk.bgGray(`Unknown pricing model (${chalk.yellow(latestPricingInfo.pricingModel)})`)}`);
167
+ }
168
+ }
169
+ }
170
+ else {
171
+ message.push(`${chalk.yellow('Pricing information:')} ${chalk.bgGray('Pay for usage')}`);
172
+ }
173
+ // TODO: do we care about this information?
174
+ if (actorInfo.seoTitle || actorInfo.seoDescription) {
175
+ message.push('', chalk.yellow('SEO information:'));
176
+ if (actorInfo.seoTitle) {
177
+ message.push(` ${chalk.yellow('Title:')} ${actorInfo.seoTitle}`);
178
+ }
179
+ if (actorInfo.seoDescription) {
180
+ message.push(` ${chalk.yellow('Description:')} ${actorInfo.seoDescription}`);
181
+ }
182
+ }
183
+ if (actorInfo.taggedBuilds) {
184
+ message.push('', chalk.yellow('Builds:'));
185
+ // Handle latest first
186
+ const latestBuild = actorInfo.taggedBuilds.latest;
187
+ if (latestBuild) {
188
+ message.push(` ${chalk.yellow('-')} ${chalk.cyan(latestBuild.buildNumber)} ${chalk.gray('/')} ${chalk.yellow('latest')}`);
189
+ }
190
+ for (const [buildTag, build] of Object.entries(actorInfo.taggedBuilds)) {
191
+ if (buildTag === 'latest') {
192
+ continue;
193
+ }
194
+ message.push(` ${chalk.yellow('-')} ${chalk.cyan(build.buildNumber)} ${chalk.gray('/')} ${chalk.yellow(buildTag)}`);
195
+ }
196
+ }
197
+ simpleLog({ message: message.join('\n'), stdout: true });
198
+ return undefined;
199
+ }
200
+ }
201
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/actors/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ApifyCommand } from '../../lib/apify_command.js';
2
+ export declare class ActorsLsCommand extends ApifyCommand<typeof ActorsLsCommand> {
3
+ static description: string;
4
+ static flags: {
5
+ my: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
+ offset: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
7
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
8
+ desc: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ static enableJsonFlag: boolean;
11
+ run(): Promise<import("apify-client").ActorCollectionListResult | undefined>;
12
+ private sortByModifiedAt;
13
+ private sortByLastRun;
14
+ }
15
+ //# sourceMappingURL=ls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/actors/ls.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAwF1D,qBAAa,eAAgB,SAAQ,YAAY,CAAC,OAAO,eAAe,CAAC;IACxE,OAAgB,WAAW,SAAuD;IAElF,OAAgB,KAAK;;;;;MAiBnB;IAEF,OAAgB,cAAc,UAAQ;IAEhC,GAAG;IAuKT,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,aAAa;CAQrB"}
@@ -0,0 +1,224 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { Time } from '@sapphire/duration';
3
+ import chalk from 'chalk';
4
+ import { ApifyCommand } from '../../lib/apify_command.js';
5
+ import { prettyPrintStatus } from '../../lib/commands/pretty-print-status.js';
6
+ import { CompactMode, kSkipColumn, ResponsiveTable } from '../../lib/commands/responsive-table.js';
7
+ import { info, simpleLog } from '../../lib/outputs.js';
8
+ import { DateOnlyTimestampFormatter, getLoggedClientOrThrow, MultilineTimestampFormatter, ShortDurationFormatter, } from '../../lib/utils.js';
9
+ const statusMap = {
10
+ 'TIMED-OUT': chalk.gray('after'),
11
+ 'TIMING-OUT': chalk.gray('after'),
12
+ ABORTED: chalk.gray('after'),
13
+ ABORTING: chalk.gray('after'),
14
+ FAILED: chalk.gray('after'),
15
+ READY: chalk.gray('for'),
16
+ RUNNING: chalk.gray('for'),
17
+ SUCCEEDED: chalk.gray('after'),
18
+ };
19
+ const recentlyUsedTable = new ResponsiveTable({
20
+ allColumns: ['Name', 'Runs', 'Last run started at', 'Last run status', 'Last run duration', '_Small_LastRunText'],
21
+ mandatoryColumns: ['Name', 'Runs', 'Last run status', 'Last run duration'],
22
+ columnAlignments: {
23
+ 'Runs': 'right',
24
+ 'Last run duration': 'right',
25
+ Name: 'left',
26
+ 'Last run status': 'center',
27
+ },
28
+ hiddenColumns: ['_Small_LastRunText'],
29
+ breakpointOverrides: {
30
+ small: {
31
+ 'Last run status': {
32
+ label: 'Last run',
33
+ valueFrom: '_Small_LastRunText',
34
+ },
35
+ },
36
+ },
37
+ });
38
+ const myRecentlyUsedTable = new ResponsiveTable({
39
+ allColumns: [
40
+ 'Name',
41
+ 'Modified at',
42
+ 'Builds',
43
+ 'Default build',
44
+ 'Runs',
45
+ 'Last run',
46
+ 'Last run status',
47
+ 'Last run duration',
48
+ '_Small_LastRunText',
49
+ ],
50
+ mandatoryColumns: ['Name', 'Runs', 'Last run', 'Last run duration'],
51
+ hiddenColumns: ['_Small_LastRunText'],
52
+ columnAlignments: {
53
+ 'Builds': 'right',
54
+ 'Runs': 'right',
55
+ 'Last run duration': 'right',
56
+ Name: 'left',
57
+ 'Last run status': 'center',
58
+ },
59
+ breakpointOverrides: {
60
+ small: {
61
+ 'Last run': {
62
+ label: 'Last run',
63
+ valueFrom: '_Small_LastRunText',
64
+ },
65
+ },
66
+ },
67
+ });
68
+ export class ActorsLsCommand extends ApifyCommand {
69
+ static description = 'Lists all recently ran Actors or your own Actors.';
70
+ static flags = {
71
+ my: Flags.boolean({
72
+ description: 'Whether to list Actors made by the logged in user.',
73
+ default: false,
74
+ }),
75
+ offset: Flags.integer({
76
+ description: 'Number of Actors that will be skipped.',
77
+ default: 0,
78
+ }),
79
+ limit: Flags.integer({
80
+ description: 'Number of Actors that will be listed.',
81
+ default: 20,
82
+ }),
83
+ desc: Flags.boolean({
84
+ description: 'Sort Actors in descending order.',
85
+ default: false,
86
+ }),
87
+ };
88
+ static enableJsonFlag = true;
89
+ async run() {
90
+ const { desc, limit, offset, my, json } = this.flags;
91
+ const client = await getLoggedClientOrThrow();
92
+ const rawActorList = await client.actors().list({ limit, offset, desc, my });
93
+ if (rawActorList.count === 0) {
94
+ if (json) {
95
+ return rawActorList;
96
+ }
97
+ info({
98
+ message: my ? "You don't have any Actors yet!" : 'There are no recent Actors used by you.',
99
+ stdout: true,
100
+ });
101
+ return;
102
+ }
103
+ // Fetch the last run for actors
104
+ const actorList = {
105
+ ...rawActorList,
106
+ items: await Promise.all(rawActorList.items.map(async (actorData) => {
107
+ const actor = await client.actor(actorData.id).get();
108
+ const runs = await client
109
+ .actor(actorData.id)
110
+ .runs()
111
+ .list({ desc: true, limit: 1 })
112
+ // Throws an error if the returned actor changed publicity status
113
+ .catch(() => ({
114
+ count: 0,
115
+ desc: true,
116
+ items: [],
117
+ limit: 1,
118
+ offset: 0,
119
+ total: 0,
120
+ }));
121
+ return {
122
+ ...actorData,
123
+ actor: actor ?? null,
124
+ lastRun: (runs.items[0] ?? null),
125
+ };
126
+ })),
127
+ };
128
+ actorList.items = my ? this.sortByModifiedAt(actorList.items) : this.sortByLastRun(actorList.items);
129
+ if (json) {
130
+ return actorList;
131
+ }
132
+ const table = my ? myRecentlyUsedTable : recentlyUsedTable;
133
+ const longestActorTitleLength = actorList.items.reduce((acc, curr) => {
134
+ const title = `${curr.username}/${curr.name}`;
135
+ if (title.length > acc) {
136
+ return title.length;
137
+ }
138
+ return acc;
139
+ }, 0) +
140
+ // Padding left right of the name column
141
+ 2 +
142
+ // Runs column minimum size with padding
143
+ 6;
144
+ for (const item of actorList.items) {
145
+ const lastRunDisplayedTimestamp = item.stats.lastRunStartedAt
146
+ ? MultilineTimestampFormatter.display(item.stats.lastRunStartedAt)
147
+ : '';
148
+ const lastRunDuration = item.lastRun
149
+ ? (() => {
150
+ if (item.lastRun.finishedAt) {
151
+ return ShortDurationFormatter.format(item.lastRun.finishedAt.getTime() - item.lastRun.startedAt.getTime());
152
+ }
153
+ const duration = Date.now() - item.lastRun.startedAt.getTime();
154
+ return `${ShortDurationFormatter.format(duration)}…`;
155
+ })()
156
+ : '';
157
+ const defaultBuild = item.actor
158
+ ? (() => {
159
+ const buildVersionToTag = Object.entries((item.actor.taggedBuilds ?? {})).find(([tag, data]) => data.buildNumber === item.actor.defaultRunOptions.build ||
160
+ tag === item.actor.defaultRunOptions.build);
161
+ if (buildVersionToTag) {
162
+ return `${chalk.yellow(buildVersionToTag[0])} / ${chalk.cyan(buildVersionToTag[1].buildNumber ?? item.actor.defaultRunOptions.build)}`;
163
+ }
164
+ return chalk.gray('Unknown');
165
+ })()
166
+ : chalk.gray('Unknown');
167
+ const runStatus = (() => {
168
+ if (item.lastRun) {
169
+ const status = prettyPrintStatus(item.lastRun.status);
170
+ const stringParts = [status];
171
+ if (lastRunDuration) {
172
+ stringParts.push(statusMap[item.lastRun.status], chalk.cyan(lastRunDuration));
173
+ }
174
+ if (item.lastRun.finishedAt) {
175
+ const diff = Date.now() - item.lastRun.finishedAt.getTime();
176
+ if (diff < Time.Week) {
177
+ stringParts.push('\n', chalk.gray(`${ShortDurationFormatter.format(diff)} ago`));
178
+ }
179
+ else {
180
+ stringParts.push('\n', chalk.gray('On', DateOnlyTimestampFormatter.display(item.lastRun.finishedAt)));
181
+ }
182
+ }
183
+ return stringParts.join(' ');
184
+ }
185
+ return '';
186
+ })();
187
+ table.pushRow({
188
+ Name: `${item.title}\n${chalk.gray(`${item.username}/${item.name}`)}`,
189
+ // Completely arbitrary number, but its enough for a very specific edge case where a full actor identifier could be very long, but only on small terminals
190
+ Runs: ResponsiveTable.isSmallTerminal() && longestActorTitleLength >= 56
191
+ ? kSkipColumn
192
+ : chalk.cyan(`${item.stats?.totalRuns ?? 0}`),
193
+ 'Last run started at': lastRunDisplayedTimestamp,
194
+ 'Last run': lastRunDisplayedTimestamp,
195
+ 'Last run status': item.lastRun ? prettyPrintStatus(item.lastRun.status) : '',
196
+ 'Modified at': MultilineTimestampFormatter.display(item.modifiedAt),
197
+ Builds: item.actor ? chalk.cyan(item.actor.stats.totalBuilds) : chalk.gray('Unknown'),
198
+ 'Last run duration': ResponsiveTable.isSmallTerminal() ? kSkipColumn : chalk.cyan(lastRunDuration),
199
+ 'Default build': defaultBuild,
200
+ _Small_LastRunText: runStatus,
201
+ });
202
+ }
203
+ simpleLog({
204
+ message: table.render(CompactMode.WebLikeCompact),
205
+ stdout: true,
206
+ });
207
+ return undefined;
208
+ }
209
+ sortByModifiedAt(items) {
210
+ return items.sort((a, b) => {
211
+ const aDate = new Date(a.modifiedAt);
212
+ const bDate = new Date(b.modifiedAt);
213
+ return bDate.getTime() - aDate.getTime();
214
+ });
215
+ }
216
+ sortByLastRun(items) {
217
+ return items.sort((a, b) => {
218
+ const aDate = new Date(a.stats?.lastRunStartedAt ?? '1970-01-01T00:00Z');
219
+ const bDate = new Date(b.stats?.lastRunStartedAt ?? '1970-01-01T00:00Z');
220
+ return bDate.getTime() - aDate.getTime();
221
+ });
222
+ }
223
+ }
224
+ //# sourceMappingURL=ls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/commands/actors/ls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ApifyCommand } from '../../lib/apify_command.js';
2
+ export declare class ActorsPullCommand extends ApifyCommand<typeof ActorsPullCommand> {
3
+ static description: string;
4
+ static flags: {
5
+ version: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
+ dir: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ static args: {
9
+ actorId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/commands/actors/pull.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAa1D,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,OAAO,iBAAiB,CAAC;IAC5E,OAAgB,WAAW,SAEqF;IAEhH,OAAgB,KAAK;;;MAUnB;IAEF,OAAgB,IAAI;;MAOlB;IAEI,GAAG;CA8HT"}
@@ -0,0 +1,151 @@
1
+ import { mkdirSync, readdirSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import process from 'node:process';
4
+ import { Args, Flags } from '@oclif/core';
5
+ import AdmZip from 'adm-zip';
6
+ import axios from 'axios';
7
+ import jju from 'jju';
8
+ import { gt } from 'semver';
9
+ import tiged from 'tiged';
10
+ import { ApifyCommand } from '../../lib/apify_command.js';
11
+ import { CommandExitCodes, LOCAL_CONFIG_PATH } from '../../lib/consts.js';
12
+ import { error, success } from '../../lib/outputs.js';
13
+ import { getLocalConfigOrThrow, getLocalUserInfo, getLoggedClientOrThrow } from '../../lib/utils.js';
14
+ const extractGitHubZip = async (url, directoryPath) => {
15
+ const { data } = await axios.get(url, { responseType: 'arraybuffer' });
16
+ const zipFile = new AdmZip(Buffer.from(data, 'binary'));
17
+ zipFile.extractEntryTo(zipFile.getEntries()[0].entryName, directoryPath, false);
18
+ };
19
+ export class ActorsPullCommand extends ApifyCommand {
20
+ static description = 'Pulls an Actor from the Apify platform to the current directory. ' +
21
+ 'If it is defined as Git repository, it will be cloned. If it is defined as Web IDE, it will fetch the files.';
22
+ static flags = {
23
+ version: Flags.string({
24
+ char: 'v',
25
+ description: 'Actor version number which will be pulled, e.g. 1.2. Default: the highest version',
26
+ required: false,
27
+ }),
28
+ dir: Flags.string({
29
+ description: 'Directory where the Actor should be pulled to',
30
+ required: false,
31
+ }),
32
+ };
33
+ static args = {
34
+ actorId: Args.string({
35
+ required: false,
36
+ description: 'Name or ID of the Actor to run (e.g. "apify/hello-world" or "E2jjCZBezvAZnX8Rb"). ' +
37
+ 'If not provided, the command will update the Actor in the current directory based on its name in ".actor/actor.json" file.',
38
+ }),
39
+ };
40
+ async run() {
41
+ const cwd = process.cwd();
42
+ let localConfig;
43
+ try {
44
+ localConfig = (await getLocalConfigOrThrow(cwd));
45
+ }
46
+ catch (_error) {
47
+ const casted = _error;
48
+ const cause = casted.cause;
49
+ error({ message: `${casted.message}\n ${cause.message}` });
50
+ process.exitCode = CommandExitCodes.InvalidActorJson;
51
+ return;
52
+ }
53
+ const userInfo = await getLocalUserInfo();
54
+ const apifyClient = await getLoggedClientOrThrow();
55
+ const isActorAutomaticallyDetected = !this.args.actorId;
56
+ const usernameOrId = userInfo.username || userInfo.id;
57
+ const actorId = this.args?.actorId ||
58
+ localConfig?.id ||
59
+ (localConfig?.name ? `${usernameOrId}/${localConfig.name}` : undefined);
60
+ if (!actorId)
61
+ throw new Error('Cannot find Actor in this directory.');
62
+ let actor;
63
+ try {
64
+ actor = await apifyClient.actor(actorId).get();
65
+ }
66
+ catch {
67
+ throw new Error(`Cannot find Actor with ID/name '${actorId}' in your account.`);
68
+ }
69
+ if (!actor)
70
+ throw new Error(`Cannot find Actor with ID/name '${actorId}' in your account.`);
71
+ const { name, versions } = actor;
72
+ let correctVersion = null;
73
+ if (this.flags?.version) {
74
+ correctVersion = versions.find((version) => version.versionNumber === this.flags?.version);
75
+ if (!correctVersion) {
76
+ throw new Error(`Cannot find version ${this.flags?.version} of Actor ${actorId}.`);
77
+ }
78
+ }
79
+ if (!correctVersion) {
80
+ correctVersion = versions.reduce((match, curr) => {
81
+ if (gt(`${curr.versionNumber}.0`, `${match.versionNumber}.0`))
82
+ return curr;
83
+ return match;
84
+ });
85
+ }
86
+ const dirpath = isActorAutomaticallyDetected ? cwd : join(cwd, this.flags.dir ?? name);
87
+ mkdirSync(dirpath, { recursive: true });
88
+ if (!isActorAutomaticallyDetected && !(readdirSync(dirpath).length === 0)) {
89
+ error({ message: `Directory ${dirpath} is not empty. Please empty it or choose another directory.` });
90
+ return;
91
+ }
92
+ switch (correctVersion.sourceType) {
93
+ case 'TARBALL': {
94
+ await extractGitHubZip(correctVersion.tarballUrl, dirpath);
95
+ break;
96
+ }
97
+ case 'SOURCE_FILES': {
98
+ const { sourceFiles } = correctVersion;
99
+ for (const file of sourceFiles) {
100
+ const folderPath = dirname(file.name);
101
+ mkdirSync(`${dirpath}/${folderPath}`, { recursive: true });
102
+ // @ts-expect-error TODO: is this an actual field?
103
+ if (!file.folder) {
104
+ const fileContent = file.format === 'BASE64' ? Buffer.from(file.content, 'base64').toString() : file.content;
105
+ if (file.name === LOCAL_CONFIG_PATH) {
106
+ const actorJson = jju.parse(fileContent);
107
+ actorJson.name = actor.name;
108
+ writeFileSync(`${dirpath}/${file.name}`, jju.update(fileContent, actorJson));
109
+ }
110
+ else {
111
+ writeFileSync(`${dirpath}/${file.name}`, fileContent);
112
+ }
113
+ }
114
+ }
115
+ break;
116
+ }
117
+ case 'GIT_REPO': {
118
+ // e.g. https://github.com/jakubbalada/Datasety.git#master:RejstrikPolitickychStran
119
+ const { gitRepoUrl } = correctVersion;
120
+ const [repoUrl, branchDirPart] = gitRepoUrl.split('#');
121
+ let branch;
122
+ let dir;
123
+ if (branchDirPart)
124
+ [branch, dir] = branchDirPart.split(':');
125
+ let branchDirRepoUrl = repoUrl;
126
+ if (dir)
127
+ branchDirRepoUrl += `/${dir}`;
128
+ if (branch)
129
+ branchDirRepoUrl += `#${branch}`;
130
+ const emitter = tiged(branchDirRepoUrl);
131
+ try {
132
+ await emitter.clone(dirpath);
133
+ }
134
+ catch (err) {
135
+ throw new Error(`Failed to pull Actor from ${gitRepoUrl}. ${err.message}`);
136
+ }
137
+ break;
138
+ }
139
+ case 'GITHUB_GIST': {
140
+ await extractGitHubZip(`${correctVersion.gitHubGistUrl}/archive/master.zip`, dirpath);
141
+ break;
142
+ }
143
+ default:
144
+ throw new Error(`Unknown source type: ${correctVersion.sourceType}`);
145
+ }
146
+ success({
147
+ message: isActorAutomaticallyDetected ? `Actor ${name} updated at ${dirpath}/` : `Pulled to ${dirpath}/`,
148
+ });
149
+ }
150
+ }
151
+ //# sourceMappingURL=pull.js.map