Run a model and await the result.
(
key: IntegrationTaskKey,
params: {
identifier: Parameters<ReplicateClient["run"]>[0];
} & Omit<
Parameters<ReplicateClient["run"]>[1],
"webhook" | "webhook_events_filter" | "wait" | "signal"
>
)
| 178 | |
| 179 | /** Run a model and await the result. */ |
| 180 | run( |
| 181 | key: IntegrationTaskKey, |
| 182 | params: { |
| 183 | identifier: Parameters<ReplicateClient["run"]>[0]; |
| 184 | } & Omit< |
| 185 | Parameters<ReplicateClient["run"]>[1], |
| 186 | "webhook" | "webhook_events_filter" | "wait" | "signal" |
| 187 | > |
| 188 | ): ReplicateReturnType<Prediction> { |
| 189 | const { identifier, ...paramsWithoutIdentifier } = params; |
| 190 | |
| 191 | // see: https://github.com/replicate/replicate-javascript/blob/4b0d9cb0e226fab3d3d31de5b32261485acf5626/index.js#L102 |
| 192 | |
| 193 | const namePattern = /[a-zA-Z0-9]+(?:(?:[._]|__|[-]*)[a-zA-Z0-9]+)*/; |
| 194 | const pattern = new RegExp( |
| 195 | `^(?<owner>${namePattern.source})/(?<name>${namePattern.source}):(?<version>[0-9a-fA-F]+)$` |
| 196 | ); |
| 197 | |
| 198 | const match = identifier.match(pattern); |
| 199 | |
| 200 | if (!match || !match.groups) { |
| 201 | throw new Error('Invalid version. It must be in the format "owner/name:version"'); |
| 202 | } |
| 203 | |
| 204 | const { version } = match.groups; |
| 205 | |
| 206 | return this.predictions.createAndAwait(key, { ...paramsWithoutIdentifier, version }); |
| 207 | } |
| 208 | |
| 209 | // TODO: wait(prediction) - needs polling |
| 210 | } |
no test coverage detected