apify-cli 0.21.0-beta.55 → 0.21.0-beta.57

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.
@@ -0,0 +1,22 @@
1
+ import type { Actor, ActorTaggedBuild, Build, User } from 'apify-client';
2
+ import { ApifyCommand } from '../../lib/apify_command.js';
3
+ interface HydratedActorInfo extends Omit<Actor, 'taggedBuilds'> {
4
+ taggedBuilds?: Record<string, ActorTaggedBuild & {
5
+ build?: Build;
6
+ }>;
7
+ actorMaker?: User;
8
+ }
9
+ export declare class ActorsInfoCommand extends ApifyCommand<typeof ActorsInfoCommand> {
10
+ static description: string;
11
+ static flags: {
12
+ readme: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ input: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ static args: {
16
+ actorId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
17
+ };
18
+ static enableJsonFlag: boolean;
19
+ run(): Promise<HydratedActorInfo | undefined>;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/actors/info.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM1D,UAAU,iBAAkB,SAAQ,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,IAAI,CAAC;CAClB;AA6BD,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,OAAO,iBAAiB,CAAC;IAC5E,OAAgB,WAAW,SAAqC;IAEhE,OAAgB,KAAK;;;MASnB;IAEF,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,cAAc,UAAQ;IAEhC,GAAG;CAwOT"}
@@ -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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"}