Skip to content

Commit b85315c

Browse files
author
awstools
committed
feat(client-bedrock): API and Documentation for Bedrock Model Copy feature. This feature lets you share and copy a custom model from one region to another or one account to another.
1 parent b43bb89 commit b85315c

30 files changed

+1559
-70
lines changed

clients/client-bedrock/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,14 @@ CreateGuardrailVersion
226226

227227
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock/command/CreateGuardrailVersionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/CreateGuardrailVersionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/CreateGuardrailVersionCommandOutput/)
228228

229+
</details>
230+
<details>
231+
<summary>
232+
CreateModelCopyJob
233+
</summary>
234+
235+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock/command/CreateModelCopyJobCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/CreateModelCopyJobCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/CreateModelCopyJobCommandOutput/)
236+
229237
</details>
230238
<details>
231239
<summary>
@@ -306,6 +314,14 @@ GetGuardrail
306314

307315
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock/command/GetGuardrailCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/GetGuardrailCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/GetGuardrailCommandOutput/)
308316

317+
</details>
318+
<details>
319+
<summary>
320+
GetModelCopyJob
321+
</summary>
322+
323+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock/command/GetModelCopyJobCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/GetModelCopyJobCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/GetModelCopyJobCommandOutput/)
324+
309325
</details>
310326
<details>
311327
<summary>
@@ -362,6 +378,14 @@ ListGuardrails
362378

363379
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock/command/ListGuardrailsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/ListGuardrailsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/ListGuardrailsCommandOutput/)
364380

381+
</details>
382+
<details>
383+
<summary>
384+
ListModelCopyJobs
385+
</summary>
386+
387+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock/command/ListModelCopyJobsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/ListModelCopyJobsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-bedrock/Interface/ListModelCopyJobsCommandOutput/)
388+
365389
</details>
366390
<details>
367391
<summary>

clients/client-bedrock/src/Bedrock.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ import {
1818
CreateGuardrailVersionCommandInput,
1919
CreateGuardrailVersionCommandOutput,
2020
} from "./commands/CreateGuardrailVersionCommand";
21+
import {
22+
CreateModelCopyJobCommand,
23+
CreateModelCopyJobCommandInput,
24+
CreateModelCopyJobCommandOutput,
25+
} from "./commands/CreateModelCopyJobCommand";
2126
import {
2227
CreateModelCustomizationJobCommand,
2328
CreateModelCustomizationJobCommandInput,
@@ -68,6 +73,11 @@ import {
6873
GetGuardrailCommandInput,
6974
GetGuardrailCommandOutput,
7075
} from "./commands/GetGuardrailCommand";
76+
import {
77+
GetModelCopyJobCommand,
78+
GetModelCopyJobCommandInput,
79+
GetModelCopyJobCommandOutput,
80+
} from "./commands/GetModelCopyJobCommand";
7181
import {
7282
GetModelCustomizationJobCommand,
7383
GetModelCustomizationJobCommandInput,
@@ -103,6 +113,11 @@ import {
103113
ListGuardrailsCommandInput,
104114
ListGuardrailsCommandOutput,
105115
} from "./commands/ListGuardrailsCommand";
116+
import {
117+
ListModelCopyJobsCommand,
118+
ListModelCopyJobsCommandInput,
119+
ListModelCopyJobsCommandOutput,
120+
} from "./commands/ListModelCopyJobsCommand";
106121
import {
107122
ListModelCustomizationJobsCommand,
108123
ListModelCustomizationJobsCommandInput,
@@ -154,6 +169,7 @@ const commands = {
154169
CreateEvaluationJobCommand,
155170
CreateGuardrailCommand,
156171
CreateGuardrailVersionCommand,
172+
CreateModelCopyJobCommand,
157173
CreateModelCustomizationJobCommand,
158174
CreateProvisionedModelThroughputCommand,
159175
DeleteCustomModelCommand,
@@ -164,13 +180,15 @@ const commands = {
164180
GetEvaluationJobCommand,
165181
GetFoundationModelCommand,
166182
GetGuardrailCommand,
183+
GetModelCopyJobCommand,
167184
GetModelCustomizationJobCommand,
168185
GetModelInvocationLoggingConfigurationCommand,
169186
GetProvisionedModelThroughputCommand,
170187
ListCustomModelsCommand,
171188
ListEvaluationJobsCommand,
172189
ListFoundationModelsCommand,
173190
ListGuardrailsCommand,
191+
ListModelCopyJobsCommand,
174192
ListModelCustomizationJobsCommand,
175193
ListProvisionedModelThroughputsCommand,
176194
ListTagsForResourceCommand,
@@ -232,6 +250,23 @@ export interface Bedrock {
232250
cb: (err: any, data?: CreateGuardrailVersionCommandOutput) => void
233251
): void;
234252

253+
/**
254+
* @see {@link CreateModelCopyJobCommand}
255+
*/
256+
createModelCopyJob(
257+
args: CreateModelCopyJobCommandInput,
258+
options?: __HttpHandlerOptions
259+
): Promise<CreateModelCopyJobCommandOutput>;
260+
createModelCopyJob(
261+
args: CreateModelCopyJobCommandInput,
262+
cb: (err: any, data?: CreateModelCopyJobCommandOutput) => void
263+
): void;
264+
createModelCopyJob(
265+
args: CreateModelCopyJobCommandInput,
266+
options: __HttpHandlerOptions,
267+
cb: (err: any, data?: CreateModelCopyJobCommandOutput) => void
268+
): void;
269+
235270
/**
236271
* @see {@link CreateModelCustomizationJobCommand}
237272
*/
@@ -391,6 +426,20 @@ export interface Bedrock {
391426
cb: (err: any, data?: GetGuardrailCommandOutput) => void
392427
): void;
393428

429+
/**
430+
* @see {@link GetModelCopyJobCommand}
431+
*/
432+
getModelCopyJob(
433+
args: GetModelCopyJobCommandInput,
434+
options?: __HttpHandlerOptions
435+
): Promise<GetModelCopyJobCommandOutput>;
436+
getModelCopyJob(args: GetModelCopyJobCommandInput, cb: (err: any, data?: GetModelCopyJobCommandOutput) => void): void;
437+
getModelCopyJob(
438+
args: GetModelCopyJobCommandInput,
439+
options: __HttpHandlerOptions,
440+
cb: (err: any, data?: GetModelCopyJobCommandOutput) => void
441+
): void;
442+
394443
/**
395444
* @see {@link GetModelCustomizationJobCommand}
396445
*/
@@ -512,6 +561,24 @@ export interface Bedrock {
512561
cb: (err: any, data?: ListGuardrailsCommandOutput) => void
513562
): void;
514563

564+
/**
565+
* @see {@link ListModelCopyJobsCommand}
566+
*/
567+
listModelCopyJobs(): Promise<ListModelCopyJobsCommandOutput>;
568+
listModelCopyJobs(
569+
args: ListModelCopyJobsCommandInput,
570+
options?: __HttpHandlerOptions
571+
): Promise<ListModelCopyJobsCommandOutput>;
572+
listModelCopyJobs(
573+
args: ListModelCopyJobsCommandInput,
574+
cb: (err: any, data?: ListModelCopyJobsCommandOutput) => void
575+
): void;
576+
listModelCopyJobs(
577+
args: ListModelCopyJobsCommandInput,
578+
options: __HttpHandlerOptions,
579+
cb: (err: any, data?: ListModelCopyJobsCommandOutput) => void
580+
): void;
581+
515582
/**
516583
* @see {@link ListModelCustomizationJobsCommand}
517584
*/

clients/client-bedrock/src/BedrockClient.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ import {
6262
CreateGuardrailVersionCommandInput,
6363
CreateGuardrailVersionCommandOutput,
6464
} from "./commands/CreateGuardrailVersionCommand";
65+
import { CreateModelCopyJobCommandInput, CreateModelCopyJobCommandOutput } from "./commands/CreateModelCopyJobCommand";
6566
import {
6667
CreateModelCustomizationJobCommandInput,
6768
CreateModelCustomizationJobCommandOutput,
@@ -84,6 +85,7 @@ import { GetCustomModelCommandInput, GetCustomModelCommandOutput } from "./comma
8485
import { GetEvaluationJobCommandInput, GetEvaluationJobCommandOutput } from "./commands/GetEvaluationJobCommand";
8586
import { GetFoundationModelCommandInput, GetFoundationModelCommandOutput } from "./commands/GetFoundationModelCommand";
8687
import { GetGuardrailCommandInput, GetGuardrailCommandOutput } from "./commands/GetGuardrailCommand";
88+
import { GetModelCopyJobCommandInput, GetModelCopyJobCommandOutput } from "./commands/GetModelCopyJobCommand";
8789
import {
8890
GetModelCustomizationJobCommandInput,
8991
GetModelCustomizationJobCommandOutput,
@@ -103,6 +105,7 @@ import {
103105
ListFoundationModelsCommandOutput,
104106
} from "./commands/ListFoundationModelsCommand";
105107
import { ListGuardrailsCommandInput, ListGuardrailsCommandOutput } from "./commands/ListGuardrailsCommand";
108+
import { ListModelCopyJobsCommandInput, ListModelCopyJobsCommandOutput } from "./commands/ListModelCopyJobsCommand";
106109
import {
107110
ListModelCustomizationJobsCommandInput,
108111
ListModelCustomizationJobsCommandOutput,
@@ -149,6 +152,7 @@ export type ServiceInputTypes =
149152
| CreateEvaluationJobCommandInput
150153
| CreateGuardrailCommandInput
151154
| CreateGuardrailVersionCommandInput
155+
| CreateModelCopyJobCommandInput
152156
| CreateModelCustomizationJobCommandInput
153157
| CreateProvisionedModelThroughputCommandInput
154158
| DeleteCustomModelCommandInput
@@ -159,13 +163,15 @@ export type ServiceInputTypes =
159163
| GetEvaluationJobCommandInput
160164
| GetFoundationModelCommandInput
161165
| GetGuardrailCommandInput
166+
| GetModelCopyJobCommandInput
162167
| GetModelCustomizationJobCommandInput
163168
| GetModelInvocationLoggingConfigurationCommandInput
164169
| GetProvisionedModelThroughputCommandInput
165170
| ListCustomModelsCommandInput
166171
| ListEvaluationJobsCommandInput
167172
| ListFoundationModelsCommandInput
168173
| ListGuardrailsCommandInput
174+
| ListModelCopyJobsCommandInput
169175
| ListModelCustomizationJobsCommandInput
170176
| ListProvisionedModelThroughputsCommandInput
171177
| ListTagsForResourceCommandInput
@@ -184,6 +190,7 @@ export type ServiceOutputTypes =
184190
| CreateEvaluationJobCommandOutput
185191
| CreateGuardrailCommandOutput
186192
| CreateGuardrailVersionCommandOutput
193+
| CreateModelCopyJobCommandOutput
187194
| CreateModelCustomizationJobCommandOutput
188195
| CreateProvisionedModelThroughputCommandOutput
189196
| DeleteCustomModelCommandOutput
@@ -194,13 +201,15 @@ export type ServiceOutputTypes =
194201
| GetEvaluationJobCommandOutput
195202
| GetFoundationModelCommandOutput
196203
| GetGuardrailCommandOutput
204+
| GetModelCopyJobCommandOutput
197205
| GetModelCustomizationJobCommandOutput
198206
| GetModelInvocationLoggingConfigurationCommandOutput
199207
| GetProvisionedModelThroughputCommandOutput
200208
| ListCustomModelsCommandOutput
201209
| ListEvaluationJobsCommandOutput
202210
| ListFoundationModelsCommandOutput
203211
| ListGuardrailsCommandOutput
212+
| ListModelCopyJobsCommandOutput
204213
| ListModelCustomizationJobsCommandOutput
205214
| ListProvisionedModelThroughputsCommandOutput
206215
| ListTagsForResourceCommandOutput

clients/client-bedrock/src/commands/CreateEvaluationJobCommand.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export interface CreateEvaluationJobCommandInput extends CreateEvaluationJobRequ
3232
export interface CreateEvaluationJobCommandOutput extends CreateEvaluationJobResponse, __MetadataBearer {}
3333

3434
/**
35-
* <p>API operation for creating and managing Amazon Bedrock automatic model evaluation jobs and model evaluation jobs that use human workers. To learn more about the requirements for creating a model evaluation job see, <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation.html">Model evaluations</a>.</p>
35+
* <p>API operation for creating and managing Amazon Bedrock automatic model evaluation jobs and model evaluation jobs that use human workers. To learn more about the requirements for creating a model evaluation job see, <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation.html">Model evaluation</a>.</p>
3636
* @example
3737
* Use a bare-bones client and the command you need to make an API call.
3838
* ```javascript
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// smithy-typescript generated code
2+
import { getEndpointPlugin } from "@smithy/middleware-endpoint";
3+
import { getSerdePlugin } from "@smithy/middleware-serde";
4+
import { Command as $Command } from "@smithy/smithy-client";
5+
import { MetadataBearer as __MetadataBearer } from "@smithy/types";
6+
7+
import { BedrockClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../BedrockClient";
8+
import { commonParams } from "../endpoint/EndpointParameters";
9+
import { CreateModelCopyJobRequest, CreateModelCopyJobResponse } from "../models/models_0";
10+
import { de_CreateModelCopyJobCommand, se_CreateModelCopyJobCommand } from "../protocols/Aws_restJson1";
11+
12+
/**
13+
* @public
14+
*/
15+
export type { __MetadataBearer };
16+
export { $Command };
17+
/**
18+
* @public
19+
*
20+
* The input for {@link CreateModelCopyJobCommand}.
21+
*/
22+
export interface CreateModelCopyJobCommandInput extends CreateModelCopyJobRequest {}
23+
/**
24+
* @public
25+
*
26+
* The output of {@link CreateModelCopyJobCommand}.
27+
*/
28+
export interface CreateModelCopyJobCommandOutput extends CreateModelCopyJobResponse, __MetadataBearer {}
29+
30+
/**
31+
* <p>Copies a model to another region so that it can be used there. For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/copy-model.html">Copy models to be used in other regions</a> in the <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-service.html">Amazon Bedrock User Guide</a>.</p>
32+
* @example
33+
* Use a bare-bones client and the command you need to make an API call.
34+
* ```javascript
35+
* import { BedrockClient, CreateModelCopyJobCommand } from "@aws-sdk/client-bedrock"; // ES Modules import
36+
* // const { BedrockClient, CreateModelCopyJobCommand } = require("@aws-sdk/client-bedrock"); // CommonJS import
37+
* const client = new BedrockClient(config);
38+
* const input = { // CreateModelCopyJobRequest
39+
* sourceModelArn: "STRING_VALUE", // required
40+
* targetModelName: "STRING_VALUE", // required
41+
* modelKmsKeyId: "STRING_VALUE",
42+
* targetModelTags: [ // TagList
43+
* { // Tag
44+
* key: "STRING_VALUE", // required
45+
* value: "STRING_VALUE", // required
46+
* },
47+
* ],
48+
* clientRequestToken: "STRING_VALUE",
49+
* };
50+
* const command = new CreateModelCopyJobCommand(input);
51+
* const response = await client.send(command);
52+
* // { // CreateModelCopyJobResponse
53+
* // jobArn: "STRING_VALUE", // required
54+
* // };
55+
*
56+
* ```
57+
*
58+
* @param CreateModelCopyJobCommandInput - {@link CreateModelCopyJobCommandInput}
59+
* @returns {@link CreateModelCopyJobCommandOutput}
60+
* @see {@link CreateModelCopyJobCommandInput} for command's `input` shape.
61+
* @see {@link CreateModelCopyJobCommandOutput} for command's `response` shape.
62+
* @see {@link BedrockClientResolvedConfig | config} for BedrockClient's `config` shape.
63+
*
64+
* @throws {@link AccessDeniedException} (client fault)
65+
* <p>The request is denied because of missing access permissions.</p>
66+
*
67+
* @throws {@link InternalServerException} (server fault)
68+
* <p>An internal server error occurred. Retry your request.</p>
69+
*
70+
* @throws {@link ResourceNotFoundException} (client fault)
71+
* <p>The specified resource Amazon Resource Name (ARN) was not found. Check the Amazon Resource Name (ARN) and try your request again.</p>
72+
*
73+
* @throws {@link TooManyTagsException} (client fault)
74+
* <p>The request contains more tags than can be associated with a resource (50 tags per resource).
75+
* The maximum number of tags includes both existing tags and those included in your current request. </p>
76+
*
77+
* @throws {@link BedrockServiceException}
78+
* <p>Base exception class for all service exceptions from Bedrock service.</p>
79+
*
80+
* @public
81+
*/
82+
export class CreateModelCopyJobCommand extends $Command
83+
.classBuilder<
84+
CreateModelCopyJobCommandInput,
85+
CreateModelCopyJobCommandOutput,
86+
BedrockClientResolvedConfig,
87+
ServiceInputTypes,
88+
ServiceOutputTypes
89+
>()
90+
.ep({
91+
...commonParams,
92+
})
93+
.m(function (this: any, Command: any, cs: any, config: BedrockClientResolvedConfig, o: any) {
94+
return [
95+
getSerdePlugin(config, this.serialize, this.deserialize),
96+
getEndpointPlugin(config, Command.getEndpointParameterInstructions()),
97+
];
98+
})
99+
.s("AmazonBedrockControlPlaneService", "CreateModelCopyJob", {})
100+
.n("BedrockClient", "CreateModelCopyJobCommand")
101+
.f(void 0, void 0)
102+
.ser(se_CreateModelCopyJobCommand)
103+
.de(de_CreateModelCopyJobCommand)
104+
.build() {}

clients/client-bedrock/src/commands/CreateModelCustomizationJobCommand.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ export interface CreateModelCustomizationJobCommandOutput
3939
* </p>
4040
* <p>For information on the format of training and validation data, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-customization-prepare.html">Prepare the datasets</a>.</p>
4141
* <p>
42-
* Model-customization jobs are asynchronous and the completion time depends on the base model and the training/validation data size.
43-
* To monitor a job, use the <code>GetModelCustomizationJob</code> operation to retrieve the job status.</p>
44-
* <p>For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/custom-models.html">Custom models</a> in the Amazon Bedrock User Guide.</p>
42+
* Model-customization jobs are asynchronous and the completion time depends on the base model and the training/validation data size.
43+
* To monitor a job, use the <code>GetModelCustomizationJob</code> operation to retrieve the job status.</p>
44+
* <p>For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/custom-models.html">Custom models</a> in the <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-service.html">Amazon Bedrock User Guide</a>.</p>
4545
* @example
4646
* Use a bare-bones client and the command you need to make an API call.
4747
* ```javascript

clients/client-bedrock/src/commands/CreateProvisionedModelThroughputCommand.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export interface CreateProvisionedModelThroughputCommandOutput
3333
__MetadataBearer {}
3434

3535
/**
36-
* <p>Creates dedicated throughput for a base or custom model with the model units and for the duration that you specify. For pricing details, see <a href="http://aws.amazon.com/bedrock/pricing/">Amazon Bedrock Pricing</a>. For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html">Provisioned Throughput</a> in the Amazon Bedrock User Guide.</p>
36+
* <p>Creates dedicated throughput for a base or custom model with the model units and for the duration that you specify. For pricing details, see <a href="http://aws.amazon.com/bedrock/pricing/">Amazon Bedrock Pricing</a>. For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html">Provisioned Throughput</a> in the <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-service.html">Amazon Bedrock User Guide</a>.</p>
3737
* @example
3838
* Use a bare-bones client and the command you need to make an API call.
3939
* ```javascript

clients/client-bedrock/src/commands/DeleteCustomModelCommand.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export interface DeleteCustomModelCommandInput extends DeleteCustomModelRequest
2828
export interface DeleteCustomModelCommandOutput extends DeleteCustomModelResponse, __MetadataBearer {}
2929

3030
/**
31-
* <p>Deletes a custom model that you created earlier. For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/custom-models.html">Custom models</a> in the Amazon Bedrock User Guide.</p>
31+
* <p>Deletes a custom model that you created earlier. For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/custom-models.html">Custom models</a> in the <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-service.html">Amazon Bedrock User Guide</a>.</p>
3232
* @example
3333
* Use a bare-bones client and the command you need to make an API call.
3434
* ```javascript

0 commit comments

Comments
 (0)