diff --git a/.changeset/yellow-candles-invent.md b/.changeset/yellow-candles-invent.md new file mode 100644 index 00000000..fe2d4cc2 --- /dev/null +++ b/.changeset/yellow-candles-invent.md @@ -0,0 +1,5 @@ +--- +"@effect-aws/client-data-pipeline": major +--- + +data-pipeline client diff --git a/README.md b/README.md index d20e06b6..34d681d4 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ The Effect AWS monorepo is organized into clients (having same name as native AW | `@effect-aws/client-cloudwatch-events` | Effectful [AWS CloudWatch Events client](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudwatch-events) | [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-cloudwatch-events?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-cloudwatch-events) [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-cloudwatch-events)](https://www.npmjs.com/package/@effect-aws/client-cloudwatch-events) | [README](https://github.com/floydspace/effect-aws/blob/main/packages/client-cloudwatch-events/README.md) | | `@effect-aws/client-cloudwatch-logs` | Effectful [AWS CloudWatch Logs client](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudwatch-logs) | [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-cloudwatch-logs?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-cloudwatch-logs) [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-cloudwatch-logs)](https://www.npmjs.com/package/@effect-aws/client-cloudwatch-logs) | [README](https://github.com/floydspace/effect-aws/blob/main/packages/client-cloudwatch-logs/README.md) | | `@effect-aws/client-codedeploy` | Effectful [AWS CodeDeploy client](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codedeploy) | [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-codedeploy?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-codedeploy) [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-codedeploy)](https://www.npmjs.com/package/@effect-aws/client-codedeploy) | [README](https://github.com/floydspace/effect-aws/blob/main/packages/client-codedeploy/README.md) | +| `@effect-aws/client-data-pipeline` | Effectful [AWS Data Pipeline client](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/data-pipeline) | [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-data-pipeline?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-data-pipeline) [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-data-pipeline)](https://www.npmjs.com/package/@effect-aws/client-data-pipeline) | [README](https://github.com/floydspace/effect-aws/blob/main/packages/client-data-pipeline/README.md) | | `@effect-aws/client-cognito-identity-provider` | Effectful [AWS Cognito Identity Provider client](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity-provider) | [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-cognito-identity-provider?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-cognito-identity-provider) [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-cognito-identity-provider)](https://www.npmjs.com/package/@effect-aws/client-cognito-identity-provider) | [README](https://github.com/floydspace/effect-aws/blob/main/packages/client-cognito-identity-provider/README.md) | | `@effect-aws/client-dsql` | Effectful [AWS DSQL client](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/dsql) | [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-dsql?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-dsql) [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-dsql)](https://www.npmjs.com/package/@effect-aws/client-dsql) | [README](https://github.com/floydspace/effect-aws/blob/main/packages/client-dsql/README.md) | | `@effect-aws/client-dynamodb` | Effectful [AWS DynamoDB client](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/dynamodb) | [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-dynamodb?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-dynamodb) [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-dynamodb)](https://www.npmjs.com/package/@effect-aws/client-dynamodb) | [README](https://github.com/floydspace/effect-aws/blob/main/packages/client-dynamodb/README.md) | diff --git a/packages/client-data-pipeline/.gitattributes b/packages/client-data-pipeline/.gitattributes new file mode 100644 index 00000000..44ee1f36 --- /dev/null +++ b/packages/client-data-pipeline/.gitattributes @@ -0,0 +1,21 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". + +* text=auto eol=lf +/.gitattributes linguist-generated +/.gitignore linguist-generated +/.npmignore linguist-generated +/.npmrc linguist-generated +/.projen/** linguist-generated +/.projen/deps.json linguist-generated +/.projen/files.json linguist-generated +/.projen/tasks.json linguist-generated +/docgen.json linguist-generated +/LICENSE linguist-generated +/package.json linguist-generated +/pnpm-lock.yaml linguist-generated +/tsconfig.cjs.json linguist-generated +/tsconfig.dev.json linguist-generated +/tsconfig.esm.json linguist-generated +/tsconfig.json linguist-generated +/tsconfig.src.json linguist-generated +/vitest.config.ts linguist-generated \ No newline at end of file diff --git a/packages/client-data-pipeline/.gitignore b/packages/client-data-pipeline/.gitignore new file mode 100644 index 00000000..9b3e7285 --- /dev/null +++ b/packages/client-data-pipeline/.gitignore @@ -0,0 +1,44 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +!/.gitattributes +!/.projen/tasks.json +!/.projen/deps.json +!/.projen/files.json +!/package.json +!/LICENSE +!/.npmignore +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json +pids +*.pid +*.seed +*.pid.lock +lib-cov +coverage +*.lcov +.nyc_output +build/Release +node_modules/ +jspm_packages/ +*.tsbuildinfo +.eslintcache +*.tgz +.yarn-integrity +.cache +!/.npmrc +!/test/ +!/tsconfig.json +!/src/ +/build +/dist/ +!/tsconfig.src.json +!/tsconfig.dev.json +!/tsconfig.esm.json +!/tsconfig.cjs.json +!/docgen.json +docs/ +!/vitest.config.ts diff --git a/packages/client-data-pipeline/.npmignore b/packages/client-data-pipeline/.npmignore new file mode 100644 index 00000000..fe4e41d6 --- /dev/null +++ b/packages/client-data-pipeline/.npmignore @@ -0,0 +1,19 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +/.projen/ +/test/ +/src/ +!/build/ +!/build/**/*.js +!/build/**/*.d.ts +dist +/tsconfig.json +/.github/ +/.vscode/ +/.idea/ +/.projenrc.js +tsconfig.tsbuildinfo +/tsconfig.src.json +/tsconfig.dev.json +/tsconfig.esm.json +/tsconfig.cjs.json +/.gitattributes diff --git a/packages/client-data-pipeline/.projen/deps.json b/packages/client-data-pipeline/.projen/deps.json new file mode 100644 index 00000000..e3da5033 --- /dev/null +++ b/packages/client-data-pipeline/.projen/deps.json @@ -0,0 +1,34 @@ +{ + "dependencies": [ + { + "name": "@types/node", + "version": "ts5.4", + "type": "build" + }, + { + "name": "effect", + "type": "build" + }, + { + "name": "typescript", + "version": "^5.4.2", + "type": "build" + }, + { + "name": "effect", + "version": ">=3.0.4 <4.0.0", + "type": "peer" + }, + { + "name": "@aws-sdk/client-data-pipeline", + "version": "^3", + "type": "runtime" + }, + { + "name": "@effect-aws/commons", + "version": "workspace:^", + "type": "runtime" + } + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-data-pipeline/.projen/files.json b/packages/client-data-pipeline/.projen/files.json new file mode 100644 index 00000000..e57ad5f8 --- /dev/null +++ b/packages/client-data-pipeline/.projen/files.json @@ -0,0 +1,19 @@ +{ + "files": [ + ".gitattributes", + ".gitignore", + ".npmignore", + ".projen/deps.json", + ".projen/files.json", + ".projen/tasks.json", + "docgen.json", + "LICENSE", + "tsconfig.cjs.json", + "tsconfig.dev.json", + "tsconfig.esm.json", + "tsconfig.json", + "tsconfig.src.json", + "vitest.config.ts" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-data-pipeline/.projen/tasks.json b/packages/client-data-pipeline/.projen/tasks.json new file mode 100644 index 00000000..ad983f13 --- /dev/null +++ b/packages/client-data-pipeline/.projen/tasks.json @@ -0,0 +1,120 @@ +{ + "tasks": { + "build": { + "name": "build", + "description": "Full release build", + "steps": [ + { + "spawn": "pre-compile" + }, + { + "spawn": "compile" + }, + { + "spawn": "post-compile" + }, + { + "spawn": "test" + }, + { + "spawn": "package" + } + ] + }, + "compile": { + "name": "compile", + "description": "Only compile", + "steps": [ + { + "exec": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json" + } + ] + }, + "default": { + "name": "default", + "description": "Synthesize project files" + }, + "eslint": { + "name": "eslint", + "description": "Runs eslint against the codebase", + "steps": [ + { + "exec": "eslint $@ src test", + "receiveArgs": true + } + ] + }, + "install": { + "name": "install", + "description": "Install project dependencies and update lockfile (non-frozen)", + "steps": [ + { + "exec": "pnpm i --no-frozen-lockfile" + } + ] + }, + "install:ci": { + "name": "install:ci", + "description": "Install project dependencies using frozen lockfile", + "steps": [ + { + "exec": "pnpm i --frozen-lockfile" + } + ] + }, + "package": { + "name": "package", + "description": "Creates the distribution package", + "steps": [ + { + "exec": "build-utils pack-v2" + } + ] + }, + "post-compile": { + "name": "post-compile", + "description": "Runs after successful compilation" + }, + "pre-compile": { + "name": "pre-compile", + "description": "Prepare the project for compilation", + "steps": [ + { + "spawn": "eslint" + } + ] + }, + "test": { + "name": "test", + "description": "Run tests", + "steps": [ + { + "exec": "vitest run --reporter verbose", + "receiveArgs": true + } + ] + }, + "test:watch": { + "name": "test:watch", + "description": "Run tests in watch mode", + "steps": [ + { + "exec": "vitest --reporter verbose" + } + ] + }, + "watch": { + "name": "watch", + "description": "Watch & compile in the background", + "steps": [ + { + "exec": "tsc --build -w" + } + ] + } + }, + "env": { + "PATH": "$(pnpm -c exec \"node --print process.env.PATH\")" + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-data-pipeline/LICENSE b/packages/client-data-pipeline/LICENSE new file mode 100644 index 00000000..ced0788c --- /dev/null +++ b/packages/client-data-pipeline/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2025 Victor Korzunin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/client-data-pipeline/README.md b/packages/client-data-pipeline/README.md new file mode 100644 index 00000000..f1c0473c --- /dev/null +++ b/packages/client-data-pipeline/README.md @@ -0,0 +1,58 @@ +# @effect-aws/client-data-pipeline + +[![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-data-pipeline?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-data-pipeline) +[![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-data-pipeline)](https://www.npmjs.com/package/@effect-aws/client-data-pipeline) + +## Installation + +```bash +npm install --save @effect-aws/client-data-pipeline +``` + +## Usage + +With default DataPipelineClient instance: + +```typescript +import { DataPipeline } from "@effect-aws/client-data-pipeline"; + +const program = DataPipeline.listPipelines(args); + +const result = pipe( + program, + Effect.provide(DataPipeline.defaultLayer), + Effect.runPromise, +); +``` + +With custom DataPipelineClient instance: + +```typescript +import { DataPipeline } from "@effect-aws/client-data-pipeline"; + +const program = DataPipeline.listPipelines(args); + +const result = await pipe( + program, + Effect.provide( + DataPipeline.baseLayer(() => new DataPipelineClient({ region: "eu-central-1" })), + ), + Effect.runPromise, +); +``` + +With custom DataPipelineClient configuration: + +```typescript +import { DataPipeline } from "@effect-aws/client-data-pipeline"; + +const program = DataPipeline.listPipelines(args); + +const result = await pipe( + program, + Effect.provide(DataPipeline.layer({ region: "eu-central-1" })), + Effect.runPromiseExit, +); +``` + +or use `DataPipeline.baseLayer((default) => new DataPipelineClient({ ...default, region: "eu-central-1" }))` diff --git a/packages/client-data-pipeline/docgen.json b/packages/client-data-pipeline/docgen.json new file mode 100644 index 00000000..cc12dbc6 --- /dev/null +++ b/packages/client-data-pipeline/docgen.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/@effect/docgen/schema.json", + "exclude": [ + "src/internal/**/*.ts", + "src/Errors.ts" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-data-pipeline/package.json b/packages/client-data-pipeline/package.json new file mode 100644 index 00000000..562f7a7d --- /dev/null +++ b/packages/client-data-pipeline/package.json @@ -0,0 +1,52 @@ +{ + "name": "@effect-aws/client-data-pipeline", + "description": "Effectful AWS Data Pipeline client", + "repository": { + "type": "git", + "url": "github:floydspace/effect-aws", + "directory": "packages/client-data-pipeline" + }, + "scripts": { + "build": "npx projen build", + "compile": "npx projen compile", + "default": "npx projen default", + "eslint": "npx projen eslint", + "package": "npx projen package", + "post-compile": "npx projen post-compile", + "pre-compile": "npx projen pre-compile", + "test": "npx projen test", + "test:watch": "npx projen test:watch", + "watch": "npx projen watch", + "docgen": "docgen" + }, + "author": { + "name": "Victor Korzunin", + "email": "ifloydrose@gmail.com", + "organization": false + }, + "devDependencies": { + "@types/node": "ts5.4", + "effect": "^3.16.4", + "typescript": "^5.4.2" + }, + "peerDependencies": { + "effect": ">=3.0.4 <4.0.0" + }, + "dependencies": { + "@aws-sdk/client-data-pipeline": "^3", + "@effect-aws/commons": "workspace:^" + }, + "main": "build/cjs/index.js", + "license": "MIT", + "homepage": "https://floydspace.github.io/effect-aws/docs/client-data-pipeline", + "publishConfig": { + "access": "public", + "directory": "dist" + }, + "version": "0.0.0", + "types": "build/dts/index.d.ts", + "type": "module", + "module": "build/esm/index.js", + "sideEffects": [], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-data-pipeline/src/DataPipelineClientInstance.ts b/packages/client-data-pipeline/src/DataPipelineClientInstance.ts new file mode 100644 index 00000000..6010f6b4 --- /dev/null +++ b/packages/client-data-pipeline/src/DataPipelineClientInstance.ts @@ -0,0 +1,33 @@ +/** + * @since 1.0.0 + */ +import { DataPipelineClient } from "@aws-sdk/client-data-pipeline"; +import { Context, Effect, Layer } from "effect"; +import * as DataPipelineServiceConfig from "./DataPipelineServiceConfig.js"; + +/** + * @since 1.0.0 + * @category tags + */ +export class DataPipelineClientInstance extends Context.Tag( + "@effect-aws/client-data-pipeline/DataPipelineClientInstance", +)() {} + +/** + * @since 1.0.0 + * @category constructors + */ +export const make = Effect.flatMap( + DataPipelineServiceConfig.toDataPipelineClientConfig, + (config) => + Effect.acquireRelease( + Effect.sync(() => new DataPipelineClient(config)), + (client) => Effect.sync(() => client.destroy()), + ), +); + +/** + * @since 1.0.0 + * @category layers + */ +export const layer = Layer.scoped(DataPipelineClientInstance, make); diff --git a/packages/client-data-pipeline/src/DataPipelineService.ts b/packages/client-data-pipeline/src/DataPipelineService.ts new file mode 100644 index 00000000..4a918c7a --- /dev/null +++ b/packages/client-data-pipeline/src/DataPipelineService.ts @@ -0,0 +1,448 @@ +/** + * @since 1.0.0 + */ +import { + ActivatePipelineCommand, + type ActivatePipelineCommandInput, + type ActivatePipelineCommandOutput, + AddTagsCommand, + type AddTagsCommandInput, + type AddTagsCommandOutput, + CreatePipelineCommand, + type CreatePipelineCommandInput, + type CreatePipelineCommandOutput, + type DataPipelineClient, + type DataPipelineClientConfig, + DeactivatePipelineCommand, + type DeactivatePipelineCommandInput, + type DeactivatePipelineCommandOutput, + DeletePipelineCommand, + type DeletePipelineCommandInput, + type DeletePipelineCommandOutput, + DescribeObjectsCommand, + type DescribeObjectsCommandInput, + type DescribeObjectsCommandOutput, + DescribePipelinesCommand, + type DescribePipelinesCommandInput, + type DescribePipelinesCommandOutput, + EvaluateExpressionCommand, + type EvaluateExpressionCommandInput, + type EvaluateExpressionCommandOutput, + GetPipelineDefinitionCommand, + type GetPipelineDefinitionCommandInput, + type GetPipelineDefinitionCommandOutput, + ListPipelinesCommand, + type ListPipelinesCommandInput, + type ListPipelinesCommandOutput, + PollForTaskCommand, + type PollForTaskCommandInput, + type PollForTaskCommandOutput, + PutPipelineDefinitionCommand, + type PutPipelineDefinitionCommandInput, + type PutPipelineDefinitionCommandOutput, + QueryObjectsCommand, + type QueryObjectsCommandInput, + type QueryObjectsCommandOutput, + RemoveTagsCommand, + type RemoveTagsCommandInput, + type RemoveTagsCommandOutput, + ReportTaskProgressCommand, + type ReportTaskProgressCommandInput, + type ReportTaskProgressCommandOutput, + ReportTaskRunnerHeartbeatCommand, + type ReportTaskRunnerHeartbeatCommandInput, + type ReportTaskRunnerHeartbeatCommandOutput, + SetStatusCommand, + type SetStatusCommandInput, + type SetStatusCommandOutput, + SetTaskStatusCommand, + type SetTaskStatusCommandInput, + type SetTaskStatusCommandOutput, + ValidatePipelineDefinitionCommand, + type ValidatePipelineDefinitionCommandInput, + type ValidatePipelineDefinitionCommandOutput, +} from "@aws-sdk/client-data-pipeline"; +import type { HttpHandlerOptions, ServiceLogger } from "@effect-aws/commons"; +import { Service } from "@effect-aws/commons"; +import type { Cause } from "effect"; +import { Effect, Layer } from "effect"; +import * as Instance from "./DataPipelineClientInstance.js"; +import * as DataPipelineServiceConfig from "./DataPipelineServiceConfig.js"; +import type { + InternalServiceError, + InvalidRequestError, + PipelineDeletedError, + PipelineNotFoundError, + SdkError, + TaskNotFoundError, +} from "./Errors.js"; +import { AllServiceErrors } from "./Errors.js"; + +const commands = { + ActivatePipelineCommand, + AddTagsCommand, + CreatePipelineCommand, + DeactivatePipelineCommand, + DeletePipelineCommand, + DescribeObjectsCommand, + DescribePipelinesCommand, + EvaluateExpressionCommand, + GetPipelineDefinitionCommand, + ListPipelinesCommand, + PollForTaskCommand, + PutPipelineDefinitionCommand, + QueryObjectsCommand, + RemoveTagsCommand, + ReportTaskProgressCommand, + ReportTaskRunnerHeartbeatCommand, + SetStatusCommand, + SetTaskStatusCommand, + ValidatePipelineDefinitionCommand, +}; + +interface DataPipelineService$ { + readonly _: unique symbol; + + /** + * @see {@link ActivatePipelineCommand} + */ + activatePipeline( + args: ActivatePipelineCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + ActivatePipelineCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link AddTagsCommand} + */ + addTags( + args: AddTagsCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + AddTagsCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link CreatePipelineCommand} + */ + createPipeline( + args: CreatePipelineCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + CreatePipelineCommandOutput, + Cause.TimeoutException | SdkError | InternalServiceError | InvalidRequestError + >; + + /** + * @see {@link DeactivatePipelineCommand} + */ + deactivatePipeline( + args: DeactivatePipelineCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + DeactivatePipelineCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link DeletePipelineCommand} + */ + deletePipeline( + args: DeletePipelineCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + DeletePipelineCommandOutput, + Cause.TimeoutException | SdkError | InternalServiceError | InvalidRequestError | PipelineNotFoundError + >; + + /** + * @see {@link DescribeObjectsCommand} + */ + describeObjects( + args: DescribeObjectsCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + DescribeObjectsCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link DescribePipelinesCommand} + */ + describePipelines( + args: DescribePipelinesCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + DescribePipelinesCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link EvaluateExpressionCommand} + */ + evaluateExpression( + args: EvaluateExpressionCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + EvaluateExpressionCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + | TaskNotFoundError + >; + + /** + * @see {@link GetPipelineDefinitionCommand} + */ + getPipelineDefinition( + args: GetPipelineDefinitionCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + GetPipelineDefinitionCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link ListPipelinesCommand} + */ + listPipelines( + args: ListPipelinesCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + ListPipelinesCommandOutput, + Cause.TimeoutException | SdkError | InternalServiceError | InvalidRequestError + >; + + /** + * @see {@link PollForTaskCommand} + */ + pollForTask( + args: PollForTaskCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + PollForTaskCommandOutput, + Cause.TimeoutException | SdkError | InternalServiceError | InvalidRequestError | TaskNotFoundError + >; + + /** + * @see {@link PutPipelineDefinitionCommand} + */ + putPipelineDefinition( + args: PutPipelineDefinitionCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + PutPipelineDefinitionCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link QueryObjectsCommand} + */ + queryObjects( + args: QueryObjectsCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + QueryObjectsCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link RemoveTagsCommand} + */ + removeTags( + args: RemoveTagsCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + RemoveTagsCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link ReportTaskProgressCommand} + */ + reportTaskProgress( + args: ReportTaskProgressCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + ReportTaskProgressCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + | TaskNotFoundError + >; + + /** + * @see {@link ReportTaskRunnerHeartbeatCommand} + */ + reportTaskRunnerHeartbeat( + args: ReportTaskRunnerHeartbeatCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + ReportTaskRunnerHeartbeatCommandOutput, + Cause.TimeoutException | SdkError | InternalServiceError | InvalidRequestError + >; + + /** + * @see {@link SetStatusCommand} + */ + setStatus( + args: SetStatusCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + SetStatusCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; + + /** + * @see {@link SetTaskStatusCommand} + */ + setTaskStatus( + args: SetTaskStatusCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + SetTaskStatusCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + | TaskNotFoundError + >; + + /** + * @see {@link ValidatePipelineDefinitionCommand} + */ + validatePipelineDefinition( + args: ValidatePipelineDefinitionCommandInput, + options?: HttpHandlerOptions, + ): Effect.Effect< + ValidatePipelineDefinitionCommandOutput, + | Cause.TimeoutException + | SdkError + | InternalServiceError + | InvalidRequestError + | PipelineDeletedError + | PipelineNotFoundError + >; +} + +/** + * @since 1.0.0 + * @category constructors + */ +export const makeDataPipelineService = Effect.gen(function*() { + const client = yield* Instance.DataPipelineClientInstance; + + return yield* Service.fromClientAndCommands( + client, + commands, + { + errorTags: AllServiceErrors, + resolveClientConfig: DataPipelineServiceConfig.toDataPipelineClientConfig, + }, + ); +}); + +/** + * @since 1.0.0 + * @category models + */ +export class DataPipelineService extends Effect.Tag("@effect-aws/client-data-pipeline/DataPipelineService")< + DataPipelineService, + DataPipelineService$ +>() { + static readonly defaultLayer = Layer.effect(this, makeDataPipelineService).pipe(Layer.provide(Instance.layer)); + static readonly layer = (config: DataPipelineService.Config) => + Layer.effect(this, makeDataPipelineService).pipe( + Layer.provide(Instance.layer), + Layer.provide(DataPipelineServiceConfig.setDataPipelineServiceConfig(config)), + ); + static readonly baseLayer = ( + evaluate: (defaultConfig: DataPipelineClientConfig) => DataPipelineClient, + ) => + Layer.effect(this, makeDataPipelineService).pipe( + Layer.provide( + Layer.effect( + Instance.DataPipelineClientInstance, + Effect.map(DataPipelineServiceConfig.toDataPipelineClientConfig, evaluate), + ), + ), + ); +} + +/** + * @since 1.0.0 + */ +export declare namespace DataPipelineService { + /** + * @since 1.0.0 + */ + export interface Config extends Omit { + readonly logger?: ServiceLogger.ServiceLoggerConstructorProps | true; + } + + /** + * @since 1.0.0 + */ + export type Type = DataPipelineService$; +} diff --git a/packages/client-data-pipeline/src/DataPipelineServiceConfig.ts b/packages/client-data-pipeline/src/DataPipelineServiceConfig.ts new file mode 100644 index 00000000..ed7d9583 --- /dev/null +++ b/packages/client-data-pipeline/src/DataPipelineServiceConfig.ts @@ -0,0 +1,52 @@ +/** + * @since 1.0.0 + */ +import type { DataPipelineClientConfig } from "@aws-sdk/client-data-pipeline"; +import { ServiceLogger } from "@effect-aws/commons"; +import { Effect, FiberRef, Layer } from "effect"; +import { dual } from "effect/Function"; +import { globalValue } from "effect/GlobalValue"; +import type { DataPipelineService } from "./DataPipelineService.js"; + +/** + * @since 1.0.0 + * @category data-pipeline service config + */ +const currentDataPipelineServiceConfig = globalValue( + "@effect-aws/client-data-pipeline/currentDataPipelineServiceConfig", + () => FiberRef.unsafeMake({}), +); + +/** + * @since 1.0.0 + * @category data-pipeline service config + */ +export const withDataPipelineServiceConfig: { + (config: DataPipelineService.Config): (effect: Effect.Effect) => Effect.Effect; + (effect: Effect.Effect, config: DataPipelineService.Config): Effect.Effect; +} = dual( + 2, + (effect: Effect.Effect, config: DataPipelineService.Config): Effect.Effect => + Effect.locally(effect, currentDataPipelineServiceConfig, config), +); + +/** + * @since 1.0.0 + * @category data-pipeline service config + */ +export const setDataPipelineServiceConfig = (config: DataPipelineService.Config) => + Layer.locallyScoped(currentDataPipelineServiceConfig, config); + +/** + * @since 1.0.0 + * @category adapters + */ +export const toDataPipelineClientConfig: Effect.Effect = Effect.gen(function*() { + const { logger: serviceLogger, ...config } = yield* FiberRef.get(currentDataPipelineServiceConfig); + + const logger = serviceLogger === true + ? yield* ServiceLogger.toClientLogger(ServiceLogger.defaultServiceLogger) + : (serviceLogger ? yield* ServiceLogger.toClientLogger(ServiceLogger.make(serviceLogger)) : undefined); + + return { logger, ...config }; +}); diff --git a/packages/client-data-pipeline/src/Errors.ts b/packages/client-data-pipeline/src/Errors.ts new file mode 100644 index 00000000..05eab660 --- /dev/null +++ b/packages/client-data-pipeline/src/Errors.ts @@ -0,0 +1,23 @@ +import type { + InternalServiceError as InternalServiceException, + InvalidRequestException, + PipelineDeletedException, + PipelineNotFoundException, + TaskNotFoundException, +} from "@aws-sdk/client-data-pipeline"; +import type { TaggedException } from "@effect-aws/commons"; + +export const AllServiceErrors = [ + "InternalServiceError", + "InvalidRequestException", + "PipelineDeletedException", + "PipelineNotFoundException", + "TaskNotFoundException", +] as const; + +export type InternalServiceError = TaggedException; +export type InvalidRequestError = TaggedException; +export type PipelineDeletedError = TaggedException; +export type PipelineNotFoundError = TaggedException; +export type TaskNotFoundError = TaggedException; +export type SdkError = TaggedException; diff --git a/packages/client-data-pipeline/src/index.ts b/packages/client-data-pipeline/src/index.ts new file mode 100644 index 00000000..e2aa5172 --- /dev/null +++ b/packages/client-data-pipeline/src/index.ts @@ -0,0 +1,50 @@ +/** + * @since 1.0.0 + */ +import { DataPipelineService } from "./DataPipelineService.js"; + +/** + * @since 1.0.0 + */ +export * from "./Errors.js"; + +/** + * @since 1.0.0 + */ +export * as DataPipelineClientInstance from "./DataPipelineClientInstance.js"; + +/** + * @since 1.0.0 + */ +export * as DataPipelineServiceConfig from "./DataPipelineServiceConfig.js"; + +/** + * @since 1.0.0 + */ +export * from "./DataPipelineService.js"; + +/** + * @since 1.0.0 + * @category exports + * @alias DataPipelineService + */ +export declare namespace DataPipeline { + /** + * @since 1.0.0 + * @alias DataPipelineService.Config + */ + export type Config = DataPipelineService.Config; + + /** + * @since 1.0.0 + * @alias DataPipelineService.Type + */ + export type Type = DataPipelineService.Type; +} + +/** + * @since 1.0.0 + * @category exports + * @alias DataPipelineService + */ +export const DataPipeline = DataPipelineService; diff --git a/packages/client-data-pipeline/test/DataPipeline.test.ts b/packages/client-data-pipeline/test/DataPipeline.test.ts new file mode 100644 index 00000000..cba4eb6a --- /dev/null +++ b/packages/client-data-pipeline/test/DataPipeline.test.ts @@ -0,0 +1,182 @@ +import { + DataPipelineClient, + DataPipelineServiceException, + ListPipelinesCommand, + type ListPipelinesCommandInput, +} from "@aws-sdk/client-data-pipeline"; +// @ts-ignore +import * as runtimeConfig from "@aws-sdk/client-data-pipeline/dist-cjs/runtimeConfig"; +import { DataPipeline, DataPipelineServiceConfig } from "@effect-aws/client-data-pipeline"; +import { SdkError } from "@effect-aws/commons"; +import { mockClient } from "aws-sdk-client-mock"; +import { Effect, Exit } from "effect"; +import { pipe } from "effect/Function"; +import { afterEach, describe, expect, it, vi } from "vitest"; + +const getRuntimeConfig = vi.spyOn(runtimeConfig, "getRuntimeConfig"); +const clientMock = mockClient(DataPipelineClient); + +describe("DataPipelineClientImpl", () => { + afterEach(() => { + getRuntimeConfig.mockClear(); + }); + + it("default", async () => { + clientMock.reset().on(ListPipelinesCommand).resolves({}); + + const args = {} as unknown as ListPipelinesCommandInput; + + const program = DataPipeline.listPipelines(args); + + const result = await pipe( + program, + Effect.provide(DataPipeline.defaultLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(getRuntimeConfig).toHaveBeenCalledTimes(1); + expect(getRuntimeConfig).toHaveBeenCalledWith({}); + expect(clientMock).toHaveReceivedCommandTimes(ListPipelinesCommand, 1); + expect(clientMock).toHaveReceivedCommandWith(ListPipelinesCommand, args); + }); + + it("configurable", async () => { + clientMock.reset().on(ListPipelinesCommand).resolves({}); + + const args = {} as unknown as ListPipelinesCommandInput; + + const program = DataPipeline.listPipelines(args); + + const result = await pipe( + program, + Effect.provide(DataPipeline.layer({ region: "eu-central-1", logger: true })), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(getRuntimeConfig).toHaveBeenCalledTimes(1); + expect(getRuntimeConfig).toHaveBeenCalledWith({ + region: "eu-central-1", + logger: expect.any(Object), + }); + expect(clientMock).toHaveReceivedCommandTimes(ListPipelinesCommand, 1); + expect(clientMock).toHaveReceivedCommandWith(ListPipelinesCommand, args); + }); + + it("base", async () => { + clientMock.reset().on(ListPipelinesCommand).resolves({}); + + const args = {} as unknown as ListPipelinesCommandInput; + + const program = DataPipeline.listPipelines(args); + + const result = await pipe( + program, + Effect.provide( + DataPipeline.baseLayer(() => new DataPipelineClient({ region: "eu-central-1" })), + ), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(getRuntimeConfig).toHaveBeenCalledTimes(1); + expect(getRuntimeConfig).toHaveBeenCalledWith({ + region: "eu-central-1", + }); + expect(clientMock).toHaveReceivedCommandTimes(ListPipelinesCommand, 1); + expect(clientMock).toHaveReceivedCommandWith(ListPipelinesCommand, args); + }); + + it("extended", async () => { + clientMock.reset().on(ListPipelinesCommand).resolves({}); + + const args = {} as unknown as ListPipelinesCommandInput; + + const program = DataPipeline.listPipelines(args); + + const result = await pipe( + program, + Effect.provide( + DataPipeline.baseLayer( + (config) => new DataPipelineClient({ ...config, region: "eu-central-1" }), + ), + ), + DataPipelineServiceConfig.withDataPipelineServiceConfig({ logger: true }), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(getRuntimeConfig).toHaveBeenCalledTimes(1); + expect(getRuntimeConfig).toHaveBeenCalledWith({ + region: "eu-central-1", + logger: expect.any(Object), + }); + expect(clientMock).toHaveReceivedCommandTimes(ListPipelinesCommand, 1); + expect(clientMock).toHaveReceivedCommandWith(ListPipelinesCommand, args); + }); + + it("fail", async () => { + clientMock.reset().on(ListPipelinesCommand).rejects(new Error("test")); + + const args = {} as unknown as ListPipelinesCommandInput; + + const program = DataPipeline.listPipelines(args); + + const result = await pipe( + program, + Effect.provide(DataPipeline.defaultLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual( + Exit.fail( + SdkError({ + ...new Error("test"), + name: "SdkError", + message: "test", + stack: expect.any(String), + }), + ), + ); + expect(clientMock).toHaveReceivedCommandTimes(ListPipelinesCommand, 1); + expect(clientMock).toHaveReceivedCommandWith(ListPipelinesCommand, args); + }); + + it("should not catch unexpected error as expected", async () => { + clientMock + .reset() + .on(ListPipelinesCommand) + .rejects( + new DataPipelineServiceException({ + name: "NotHandledException", + message: "test", + } as any), + ); + + const args = {} as unknown as ListPipelinesCommandInput; + + const program = DataPipeline.listPipelines(args).pipe( + Effect.catchTag("NotHandledException" as any, () => Effect.succeed(null)), + ); + + const result = await pipe( + program, + Effect.provide(DataPipeline.defaultLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual( + Exit.fail( + SdkError({ + ...new Error("test"), + name: "SdkError", + message: "test", + stack: expect.any(String), + }), + ), + ); + expect(clientMock).toHaveReceivedCommandTimes(ListPipelinesCommand, 1); + expect(clientMock).toHaveReceivedCommandWith(ListPipelinesCommand, args); + }); +}); diff --git a/packages/client-data-pipeline/tsconfig.cjs.json b/packages/client-data-pipeline/tsconfig.cjs.json new file mode 100644 index 00000000..dc7413de --- /dev/null +++ b/packages/client-data-pipeline/tsconfig.cjs.json @@ -0,0 +1,15 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "extends": "./tsconfig.src.json", + "compilerOptions": { + "tsBuildInfoFile": ".tsbuildinfo/cjs.tsbuildinfo", + "outDir": "build/cjs", + "moduleResolution": "node", + "module": "CommonJS" + }, + "references": [ + { + "path": "../commons/tsconfig.cjs.json" + } + ] +} diff --git a/packages/client-data-pipeline/tsconfig.dev.json b/packages/client-data-pipeline/tsconfig.dev.json new file mode 100644 index 00000000..126621a9 --- /dev/null +++ b/packages/client-data-pipeline/tsconfig.dev.json @@ -0,0 +1,23 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "tsBuildInfoFile": ".tsbuildinfo/test.tsbuildinfo", + "noEmit": true, + "rootDir": "test", + "types": [ + "../../vitest.d.ts" + ] + }, + "include": [ + "test" + ], + "references": [ + { + "path": "tsconfig.src.json" + }, + { + "path": "../commons" + } + ] +} diff --git a/packages/client-data-pipeline/tsconfig.esm.json b/packages/client-data-pipeline/tsconfig.esm.json new file mode 100644 index 00000000..3d28d9be --- /dev/null +++ b/packages/client-data-pipeline/tsconfig.esm.json @@ -0,0 +1,15 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "extends": "./tsconfig.src.json", + "compilerOptions": { + "tsBuildInfoFile": ".tsbuildinfo/esm.tsbuildinfo", + "outDir": "build/esm", + "declarationDir": "build/dts", + "stripInternal": true + }, + "references": [ + { + "path": "../commons/tsconfig.esm.json" + } + ] +} diff --git a/packages/client-data-pipeline/tsconfig.json b/packages/client-data-pipeline/tsconfig.json new file mode 100644 index 00000000..c1c93439 --- /dev/null +++ b/packages/client-data-pipeline/tsconfig.json @@ -0,0 +1,13 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "extends": "../../tsconfig.base.json", + "include": [], + "references": [ + { + "path": "tsconfig.src.json" + }, + { + "path": "tsconfig.dev.json" + } + ] +} diff --git a/packages/client-data-pipeline/tsconfig.src.json b/packages/client-data-pipeline/tsconfig.src.json new file mode 100644 index 00000000..5e765113 --- /dev/null +++ b/packages/client-data-pipeline/tsconfig.src.json @@ -0,0 +1,17 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "tsBuildInfoFile": ".tsbuildinfo/src.tsbuildinfo", + "outDir": "build/src", + "rootDir": "src" + }, + "include": [ + "src" + ], + "references": [ + { + "path": "../commons" + } + ] +} diff --git a/packages/client-data-pipeline/vitest.config.ts b/packages/client-data-pipeline/vitest.config.ts new file mode 100644 index 00000000..2cf045fa --- /dev/null +++ b/packages/client-data-pipeline/vitest.config.ts @@ -0,0 +1,6 @@ +import { mergeConfig, type UserConfigExport } from "vitest/config"; +import configShared from "../../vitest.shared.js"; + +const config: UserConfigExport = {}; + +export default mergeConfig(configShared, config); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9b501be..86e214bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -443,6 +443,26 @@ importers: version: 5.4.5 publishDirectory: dist + packages/client-data-pipeline: + dependencies: + '@aws-sdk/client-data-pipeline': + specifier: ^3 + version: 3.943.0 + '@effect-aws/commons': + specifier: workspace:^ + version: link:../commons/dist + devDependencies: + '@types/node': + specifier: ts5.4 + version: 24.10.1 + effect: + specifier: ^3.16.4 + version: 3.16.4 + typescript: + specifier: ^5.4.2 + version: 5.4.5 + publishDirectory: dist + packages/client-dsql: dependencies: '@aws-sdk/client-dsql': @@ -1697,6 +1717,10 @@ packages: resolution: {integrity: sha512-XkuokRF2IQ+VLBn0AwrwfFOkZ2c1IXACwQdn3CDnpBZpT1s2hgH3MX0DoH9+41w4ar2QCSI09uAJiv9PX4DLoQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-data-pipeline@3.943.0': + resolution: {integrity: sha512-fTV2dgFYycZGkhbzID6bpYRYOpEKKHyNnSKXFMtIXXwrgO/Baasveyr0QiSsdbeXdlLJBamufv7T1Gqpbi/1AA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-dsql@3.943.0': resolution: {integrity: sha512-C+5s49xnmfJ2imo0hZ9h78aUnyI/fXfeXLlvbgVOaTXEUT3jADRJftmtovshIbP99jWUYNWFwsjlkf/egZ1YWw==} engines: {node: '>=18.0.0'} @@ -6833,6 +6857,50 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-data-pipeline@3.943.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.943.0 + '@aws-sdk/credential-provider-node': 3.943.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.943.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.943.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.6 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.13 + '@smithy/middleware-retry': 4.4.13 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.9 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.12 + '@smithy/util-defaults-mode-node': 4.2.15 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-dsql@3.943.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b221257d..d5ac0ebb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -17,6 +17,7 @@ packages: - packages/client-cloudwatch-logs - packages/client-codedeploy - packages/client-cognito-identity-provider + - packages/client-data-pipeline - packages/client-dsql - packages/client-dynamodb - packages/client-ec2 diff --git a/scripts/client-singularities.ts b/scripts/client-singularities.ts index cbf1bf84..59654525 100644 --- a/scripts/client-singularities.ts +++ b/scripts/client-singularities.ts @@ -89,6 +89,11 @@ export default { commandToTest: "ListApplications", inputToTest: null, }, + "client-data-pipeline": { + description: "Effectful AWS Data Pipeline client", + commandToTest: "ListPipelines", + inputToTest: null, + }, "client-cognito-identity-provider": { description: "Effectful AWS Cognito Identity Provider client", commandToTest: "ListUserPools", diff --git a/tsconfig.base.json b/tsconfig.base.json index ca6caec0..71e70501 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -201,6 +201,15 @@ "@effect-aws/client-codedeploy/test/*": [ "./packages/client-codedeploy/test/*.js" ], + "@effect-aws/client-data-pipeline": [ + "./packages/client-data-pipeline/src/index.js" + ], + "@effect-aws/client-data-pipeline/*": [ + "./packages/client-data-pipeline/src/*.js" + ], + "@effect-aws/client-data-pipeline/test/*": [ + "./packages/client-data-pipeline/test/*.js" + ], "@effect-aws/client-cognito-identity-provider": [ "./packages/client-cognito-identity-provider/src/index.js" ], diff --git a/tsconfig.build.json b/tsconfig.build.json index 0a3d1a3a..a459c723 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -54,6 +54,9 @@ { "path": "packages/client-codedeploy/tsconfig.esm.json" }, + { + "path": "packages/client-data-pipeline/tsconfig.esm.json" + }, { "path": "packages/client-cognito-identity-provider/tsconfig.esm.json" }, diff --git a/tsconfig.json b/tsconfig.json index 2772e93a..7f547162 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -59,6 +59,9 @@ { "path": "packages/client-codedeploy" }, + { + "path": "packages/client-data-pipeline" + }, { "path": "packages/client-cognito-identity-provider" }, diff --git a/vitest.shared.ts b/vitest.shared.ts index 94f597ac..c7aa5e64 100644 --- a/vitest.shared.ts +++ b/vitest.shared.ts @@ -35,6 +35,7 @@ const config: UserConfig = { ...alias("client-cloudwatch-events"), ...alias("client-cloudwatch-logs"), ...alias("client-codedeploy"), + ...alias("client-data-pipeline"), ...alias("client-cognito-identity-provider"), ...alias("client-dsql"), ...alias("client-dynamodb"),