From b321259837b574e4de138985e69cf5aef54eb8ef Mon Sep 17 00:00:00 2001 From: Yotam Ishak Date: Tue, 21 Apr 2026 13:13:05 +0300 Subject: [PATCH 1/3] Add CloudFront signer package --- .changeset/add-cloudfront-signer.md | 5 + .projenrc.ts | 9 + packages/cloudfront-signer/.gitattributes | 21 ++ packages/cloudfront-signer/.gitignore | 44 +++ packages/cloudfront-signer/.npmignore | 19 ++ packages/cloudfront-signer/.projen/deps.json | 29 ++ packages/cloudfront-signer/.projen/files.json | 19 ++ packages/cloudfront-signer/.projen/tasks.json | 120 ++++++++ packages/cloudfront-signer/LICENSE | 19 ++ packages/cloudfront-signer/README.md | 90 ++++++ packages/cloudfront-signer/docgen.json | 8 + packages/cloudfront-signer/package.json | 51 ++++ .../cloudfront-signer/src/CloudFrontSigner.ts | 115 ++++++++ packages/cloudfront-signer/src/index.ts | 4 + .../test/CloudFrontSigner.test.ts | 205 ++++++++++++++ packages/cloudfront-signer/tsconfig.cjs.json | 10 + packages/cloudfront-signer/tsconfig.dev.json | 20 ++ packages/cloudfront-signer/tsconfig.esm.json | 10 + packages/cloudfront-signer/tsconfig.json | 13 + packages/cloudfront-signer/tsconfig.src.json | 12 + packages/cloudfront-signer/vitest.config.ts | 6 + pnpm-lock.yaml | 258 ++++++++++-------- pnpm-workspace.yaml | 1 + tsconfig.base.json | 9 + tsconfig.build.json | 3 + tsconfig.json | 3 + vitest.shared.ts | 1 + 27 files changed, 989 insertions(+), 115 deletions(-) create mode 100644 .changeset/add-cloudfront-signer.md create mode 100644 packages/cloudfront-signer/.gitattributes create mode 100644 packages/cloudfront-signer/.gitignore create mode 100644 packages/cloudfront-signer/.npmignore create mode 100644 packages/cloudfront-signer/.projen/deps.json create mode 100644 packages/cloudfront-signer/.projen/files.json create mode 100644 packages/cloudfront-signer/.projen/tasks.json create mode 100644 packages/cloudfront-signer/LICENSE create mode 100644 packages/cloudfront-signer/README.md create mode 100644 packages/cloudfront-signer/docgen.json create mode 100644 packages/cloudfront-signer/package.json create mode 100644 packages/cloudfront-signer/src/CloudFrontSigner.ts create mode 100644 packages/cloudfront-signer/src/index.ts create mode 100644 packages/cloudfront-signer/test/CloudFrontSigner.test.ts create mode 100644 packages/cloudfront-signer/tsconfig.cjs.json create mode 100644 packages/cloudfront-signer/tsconfig.dev.json create mode 100644 packages/cloudfront-signer/tsconfig.esm.json create mode 100644 packages/cloudfront-signer/tsconfig.json create mode 100644 packages/cloudfront-signer/tsconfig.src.json create mode 100644 packages/cloudfront-signer/vitest.config.ts diff --git a/.changeset/add-cloudfront-signer.md b/.changeset/add-cloudfront-signer.md new file mode 100644 index 00000000..f95e7a1c --- /dev/null +++ b/.changeset/add-cloudfront-signer.md @@ -0,0 +1,5 @@ +--- +"@effect-aws/cloudfront-signer": minor +--- + +Add the `@effect-aws/cloudfront-signer` package with a Layer-based Effect wrapper around the AWS CloudFront signing helpers. diff --git a/.projenrc.ts b/.projenrc.ts index d367ad1f..1bcaf1bc 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -218,6 +218,15 @@ new TypeScriptLibProject({ peerDeps: ["effect@>=3.15.5 <4.0.0"], }); +new TypeScriptLibProject({ + parent: project, + name: "cloudfront-signer", + description: "Effectful AWS CloudFront Signer", + deps: ["@aws-sdk/cloudfront-signer@^3"], + devDeps: [...effectDeps], + peerDeps: ["effect@>=3.15.5 <4.0.0"], +}); + project.addGitIgnore("/.direnv"); // flake environment creates .direnv folder project.addGitIgnore("/docs"); // docs are generated project.addGitIgnore(".idea"); diff --git a/packages/cloudfront-signer/.gitattributes b/packages/cloudfront-signer/.gitattributes new file mode 100644 index 00000000..44ee1f36 --- /dev/null +++ b/packages/cloudfront-signer/.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/cloudfront-signer/.gitignore b/packages/cloudfront-signer/.gitignore new file mode 100644 index 00000000..9b3e7285 --- /dev/null +++ b/packages/cloudfront-signer/.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/cloudfront-signer/.npmignore b/packages/cloudfront-signer/.npmignore new file mode 100644 index 00000000..fe4e41d6 --- /dev/null +++ b/packages/cloudfront-signer/.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/cloudfront-signer/.projen/deps.json b/packages/cloudfront-signer/.projen/deps.json new file mode 100644 index 00000000..db56617c --- /dev/null +++ b/packages/cloudfront-signer/.projen/deps.json @@ -0,0 +1,29 @@ +{ + "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.15.5 <4.0.0", + "type": "peer" + }, + { + "name": "@aws-sdk/cloudfront-signer", + "version": "^3", + "type": "runtime" + } + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/cloudfront-signer/.projen/files.json b/packages/cloudfront-signer/.projen/files.json new file mode 100644 index 00000000..e57ad5f8 --- /dev/null +++ b/packages/cloudfront-signer/.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/cloudfront-signer/.projen/tasks.json b/packages/cloudfront-signer/.projen/tasks.json new file mode 100644 index 00000000..ad983f13 --- /dev/null +++ b/packages/cloudfront-signer/.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/cloudfront-signer/LICENSE b/packages/cloudfront-signer/LICENSE new file mode 100644 index 00000000..dc1bf0b6 --- /dev/null +++ b/packages/cloudfront-signer/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2026 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/cloudfront-signer/README.md b/packages/cloudfront-signer/README.md new file mode 100644 index 00000000..3ca3d44f --- /dev/null +++ b/packages/cloudfront-signer/README.md @@ -0,0 +1,90 @@ +# @effect-aws/cloudfront-signer + +[![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fcloudfront-signer?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/cloudfront-signer) +[![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fcloudfront-signer)](https://www.npmjs.com/package/@effect-aws/cloudfront-signer) + +This package provides a Layer-based Effect wrapper around the AWS SDK CloudFront signing helpers. + +## Installation + +```bash +npm install --save @effect-aws/cloudfront-signer +``` + +## Usage + +### Signed URL + +```ts +import { CloudFrontSigner } from "@effect-aws/cloudfront-signer" +import { Effect } from "effect" + +const program = CloudFrontSigner.getSignedUrl({ + url: "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg", + dateLessThan: new Date(Date.now() + 60 * 60 * 1000) +}) + +const result = program.pipe( + Effect.provide( + CloudFrontSigner.layer({ + keyPairId: "K2JCJMDEHXQW5F", + privateKey: "CONTENTS-OF-PRIVATE-KEY" + }) + ), + Effect.runPromise +) +``` + +### Signed Cookies + +```ts +import { CloudFrontSigner } from "@effect-aws/cloudfront-signer" +import { Effect } from "effect" + +const program = CloudFrontSigner.getSignedCookies({ + url: "https://d111111abcdef8.cloudfront.net/private-content/*", + dateLessThan: new Date(Date.now() + 60 * 60 * 1000) +}) + +const result = program.pipe( + Effect.provide( + CloudFrontSigner.layer({ + keyPairId: "K2JCJMDEHXQW5F", + privateKey: "CONTENTS-OF-PRIVATE-KEY" + }) + ), + Effect.runPromise +) +``` + +### Custom Policy + +```ts +import { CloudFrontSigner } from "@effect-aws/cloudfront-signer" +import { Effect } from "effect" + +const policy = JSON.stringify({ + Statement: [ + { + Resource: "https://d111111abcdef8.cloudfront.net/private-content/*", + Condition: { + DateLessThan: { + "AWS:EpochTime": Math.floor(Date.now() / 1000) + 3600 + } + } + } + ] +}) + +const program = CloudFrontSigner.getSignedUrl({ policy }) + +const result = program.pipe( + Effect.provide( + CloudFrontSigner.layer({ + keyPairId: "K2JCJMDEHXQW5F", + privateKey: "CONTENTS-OF-PRIVATE-KEY" + }) + ), + Effect.runPromise +) +``` diff --git a/packages/cloudfront-signer/docgen.json b/packages/cloudfront-signer/docgen.json new file mode 100644 index 00000000..cc12dbc6 --- /dev/null +++ b/packages/cloudfront-signer/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/cloudfront-signer/package.json b/packages/cloudfront-signer/package.json new file mode 100644 index 00000000..e84db390 --- /dev/null +++ b/packages/cloudfront-signer/package.json @@ -0,0 +1,51 @@ +{ + "name": "@effect-aws/cloudfront-signer", + "description": "Effectful AWS CloudFront Signer", + "repository": { + "type": "git", + "url": "github:floydspace/effect-aws", + "directory": "packages/cloudfront-signer" + }, + "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.15.5 <4.0.0" + }, + "dependencies": { + "@aws-sdk/cloudfront-signer": "^3" + }, + "main": "build/cjs/index.js", + "license": "MIT", + "homepage": "https://floydspace.github.io/effect-aws/docs/cloudfront-signer", + "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/cloudfront-signer/src/CloudFrontSigner.ts b/packages/cloudfront-signer/src/CloudFrontSigner.ts new file mode 100644 index 00000000..b38c6bb5 --- /dev/null +++ b/packages/cloudfront-signer/src/CloudFrontSigner.ts @@ -0,0 +1,115 @@ +/** + * @since 0.1.0 + */ +import type { + CloudfrontSignedCookiesOutput, + CloudfrontSignerCredentials, + CloudfrontSignInput, + CloudfrontSignInputWithParameters, + CloudfrontSignInputWithPolicy, +} from "@aws-sdk/cloudfront-signer"; +import { getSignedCookies as awsGetSignedCookies, getSignedUrl as awsGetSignedUrl } from "@aws-sdk/cloudfront-signer"; +import * as Effect from "effect/Effect"; +import * as Layer from "effect/Layer"; + +/** + * @since 0.1.0 + * @category models + */ +export type CloudFrontSignerCredentials = CloudfrontSignerCredentials; + +/** + * @since 0.1.0 + * @category models + */ +export type GetSignedUrlInput = + | Omit + | Omit; + +/** + * @since 0.1.0 + * @category models + */ +export type GetSignedCookiesInput = + | Omit + | Omit; + +interface CloudFrontSigner$ { + readonly _: unique symbol; + + /** + * Creates a signed URL string using a canned or custom policy. + * + * When using a custom policy, `url` may be omitted and the policy resource + * will be used as the signed URL. + * + * Errors thrown by the underlying AWS signer are surfaced as defects. + * @returns the input URL with signature attached as query parameters. + */ + getSignedUrl(input: GetSignedUrlInput): Effect.Effect; + + /** + * Creates signed cookies using a canned or custom policy. + * + * Errors thrown by the underlying AWS signer are surfaced as defects. + * @returns an object with keys/values that can be added to cookies. + */ + getSignedCookies( + input: GetSignedCookiesInput, + ): Effect.Effect; +} + +const makeCloudFrontSigner = ( + credentials: CloudFrontSignerCredentials, +): CloudFrontSigner$ => { + const withCredentials = ( + input: GetSignedUrlInput | GetSignedCookiesInput, + ): CloudfrontSignInput => ({ ...credentials, ...input }); + + return { + getSignedUrl: (input) => Effect.sync(() => awsGetSignedUrl(withCredentials(input))), + getSignedCookies: (input) => Effect.sync(() => awsGetSignedCookies(withCredentials(input))), + } as CloudFrontSigner$; +}; + +/** + * @since 0.1.0 + * @category models + */ +export class CloudFrontSigner extends Effect.Tag( + "@effect-aws/cloudfront-signer/CloudFrontSigner", +)() { + /** + * @since 0.1.0 + * + * @example + * import { Effect, Layer } from "effect"; + * import { CloudFrontSigner } from "@effect-aws/cloudfront-signer"; + * + * const signedUrl = CloudFrontSigner.getSignedUrl({ + * url: "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg", + * dateLessThan: "2024-01-01", + * }).pipe( + * Effect.provide(CloudFrontSigner.layer({ + * keyPairId: "K2JCJMDEHXQW5F", + * privateKey: "CONTENTS-OF-PRIVATE-KEY", + * })) + * ); + */ + static readonly layer = (config: CloudFrontSigner.Config) => Layer.succeed(this, makeCloudFrontSigner(config)); +} + +/** + * @since 0.1.0 + */ +export declare namespace CloudFrontSigner { + /** + * @since 0.1.0 + */ + export type Config = CloudFrontSignerCredentials; + + /** + * @since 0.1.0 + */ + export type Type = CloudFrontSigner$; +} diff --git a/packages/cloudfront-signer/src/index.ts b/packages/cloudfront-signer/src/index.ts new file mode 100644 index 00000000..dc8347da --- /dev/null +++ b/packages/cloudfront-signer/src/index.ts @@ -0,0 +1,4 @@ +/** + * @since 0.1.0 + */ +export * from "./CloudFrontSigner.js"; diff --git a/packages/cloudfront-signer/test/CloudFrontSigner.test.ts b/packages/cloudfront-signer/test/CloudFrontSigner.test.ts new file mode 100644 index 00000000..25d66d21 --- /dev/null +++ b/packages/cloudfront-signer/test/CloudFrontSigner.test.ts @@ -0,0 +1,205 @@ +import { CloudFrontSigner } from "@effect-aws/cloudfront-signer"; +import { Cause, Effect, Exit } from "effect"; +import { pipe } from "effect/Function"; +import { describe, expect, it } from "vitest"; + +const testPrivateKey = `-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDIkujotZTYElMo +Gd4lVpikdunqOFWBRBYDvkI3AHCmh6nTzZZY4OBInqpgWyVMyUKxp9TxGvENsDeR +5AWCmlKepRmoQkw+jE6jKVOjIrxBgBxO1yDlusbvktmOA72q6cGRGnnC6oIIk3u1 +UsBN7fy9Uj/AfbyEAMdylqIHKj2TQVQSSx1DPd2461g+beyyv5FRuJTH9i3gNqKg +4f6n4IFeVpmQnSvyuPApOT9GRFCDXrwhAWI0aDsR70EsvQ7rX5orY/VsP6WZnt3K ++5DRCFNiGL+JfAitoBgr4s2jaNImnbgz4dhGHoefz2WmnrVW5gtiist6r5u/eAlc +QxK8UTFNAgMBAAECggEAAI4LfLO35P5T+/a3J+iv6zb0mbQsysenie+2Ti5ybiHo +JRDBO2vpb7n+Par/roRmBCJmbLS6Evzrgm9PjP3Xs0TaQWsBiMpcxodgPSf+iyEL +TJqJJqmLUFfAwbhRh4E2PfkFRwLc3jo0nuexZkwwvuaIP535bgh0hMtVSNDKMwSV +F1dV3MDl5v0FuN8goVicRxL/VWCHYVwmnEiQbJO+0y5iO8wZB8K28MQ5/BHaf9AQ +JeSuBG6gDcxreH1b6843KD6X2FCuSHVUScw8L8xjBPiyVey3A+Lov+ci7RBNgsOl +8NeetxYb5lgtDcPIwI8/CounPsQ87LbzrV+B2C0JHwKBgQDyvm3EdcMwXyi93CO/ +yREuUuNN/7bkDcIRP/MGh7I8HBiWEchhtLZPZcOhDOzceB8GWBCbhJxzFNxUirT2 +s13oZvr0F0L6LUBo2qL7yi8833zh8Jl2SWuI76+fypPKgdJgI0AfXPvKHcvdxL2h +8kq2CdS/aU9axNR6jZpAA9G59wKBgQDThvFAY+puQJdhWMJWCj3QlxWnZpaclSEo +swIFVybIrj/4OeFRboU9GewDwPu3KakaPdEhvtg6C+/zHWaLNSGEf26rC6qiMJ98 +PkG6rjXVMUDr1B5iqcihSsNyeKHzW21LyzcssA5JFOYFotltRvTay2ARZ9DN90h+ +ZH9I7lL92wKBgQDW7Hhv2/yoVXjTMZiNdE87/rO3GdQq82uCrmZUv8y1oAK8zJ3o +tII+plGhxLnrMof1q/94Ut/anPu/9tfnHkTlQliryfTJYUuICx0HZqqQcSg3PDoE +G1mU8vNCvbBBOtSzvkJGAqQE/oDEqC9mtgokR2wQ1gMm0ON4ZuvOBhOpXQKBgEg2 +CAQIWA6dZFBqQaWnx2R/P3gvcHkx++jt+2GhV+8odVQjRkVLapbqU4UQi54CzeTU +d6GCikR+sMKZJdmeILwf2MLxr6XA3aFHi57UPDJ0pwobFuhtt71ATaq1fewbKRu3 +2zUZQTc3uDLyXjGNCKfsx/YJL+IwagIkAsP+AD0DAoGAK2dtCpMI3DbPHxdOLKcS +0guCZtNlxBnC8uVCPBh6f6dYF4leREMl34mTv0zvS3S6IvHLUUJVJPzpMz6yoof5 +a4rvL+vauvR8bKtsUMcoaTLXgqZeo22evsJLWFAwUJ4lK8i+3MXvTQUKTIlVjkMu +dltFF4PcpRyh00WqTLx6i9o= +-----END PRIVATE KEY-----`; + +describe("CloudFrontSigner", () => { + const layer = CloudFrontSigner.layer({ + keyPairId: "K2JCJMDEHXQW5F", + privateKey: testPrivateKey, + }); + + describe("getSignedUrl", () => { + it("should generate a signed URL with canned policy", async () => { + const result = await pipe( + CloudFrontSigner.getSignedUrl({ + url: "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg", + dateLessThan: new Date(Date.now() + 60 * 60 * 1000), + }), + Effect.provide(layer), + Effect.runPromiseExit, + ); + + expect(result).satisfies(Exit.isSuccess); + if (Exit.isSuccess(result)) { + expect(result.value).toContain( + "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg", + ); + expect(result.value).toContain("Expires="); + expect(result.value).toContain("Signature="); + expect(result.value).toContain("Key-Pair-Id=K2JCJMDEHXQW5F"); + } + }); + + it("should generate a signed URL with custom policy", async () => { + const url = "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg"; + const policy = JSON.stringify({ + Statement: [ + { + Resource: url, + Condition: { + DateLessThan: { + "AWS:EpochTime": Math.floor(Date.now() / 1000) + 3600, + }, + }, + }, + ], + }); + + const result = await pipe( + CloudFrontSigner.getSignedUrl({ + url, + policy, + }), + Effect.provide(layer), + Effect.runPromiseExit, + ); + + expect(result).satisfies(Exit.isSuccess); + if (Exit.isSuccess(result)) { + expect(result.value).toContain(url); + expect(result.value).toContain("Policy="); + expect(result.value).toContain("Signature="); + expect(result.value).toContain("Key-Pair-Id=K2JCJMDEHXQW5F"); + } + }); + + it("should use the policy resource when url is omitted", async () => { + const url = "https://d111111abcdef8.cloudfront.net/private-content/*"; + const policy = JSON.stringify({ + Statement: [ + { + Resource: url, + Condition: { + DateLessThan: { + "AWS:EpochTime": Math.floor(Date.now() / 1000) + 3600, + }, + }, + }, + ], + }); + + const result = await pipe( + CloudFrontSigner.getSignedUrl({ + policy, + }), + Effect.provide(layer), + Effect.runPromiseExit, + ); + + expect(result).satisfies(Exit.isSuccess); + if (Exit.isSuccess(result)) { + expect(result.value).toContain(url); + expect(result.value).toContain("Policy="); + expect(result.value).toContain("Key-Pair-Id=K2JCJMDEHXQW5F"); + } + }); + + it("should fail when the private key is invalid", async () => { + const invalidLayer = CloudFrontSigner.layer({ + keyPairId: "K2JCJMDEHXQW5F", + privateKey: "not-a-private-key", + }); + + const result = await pipe( + CloudFrontSigner.getSignedUrl({ + url: "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg", + dateLessThan: new Date(Date.now() + 60 * 60 * 1000), + }), + Effect.provide(invalidLayer), + Effect.runPromiseExit, + ); + + expect(result).satisfies(Exit.isFailure); + if (Exit.isFailure(result)) { + expect(Cause.squash(result.cause)).toBeInstanceOf(Error); + } + }); + }); + + describe("getSignedCookies", () => { + it("should generate signed cookies with canned policy", async () => { + const result = await pipe( + CloudFrontSigner.getSignedCookies({ + url: "https://d111111abcdef8.cloudfront.net/private-content/*", + dateLessThan: new Date(Date.now() + 60 * 60 * 1000), + }), + Effect.provide(layer), + Effect.runPromiseExit, + ); + + expect(result).satisfies(Exit.isSuccess); + if (Exit.isSuccess(result)) { + expect(result.value).toHaveProperty( + "CloudFront-Key-Pair-Id", + "K2JCJMDEHXQW5F", + ); + expect(result.value).toHaveProperty("CloudFront-Signature"); + expect(result.value).toHaveProperty("CloudFront-Expires"); + } + }); + + it("should generate signed cookies with custom policy", async () => { + const url = "https://d111111abcdef8.cloudfront.net/private-content/*"; + const policy = JSON.stringify({ + Statement: [ + { + Resource: url, + Condition: { + DateLessThan: { + "AWS:EpochTime": Math.floor(Date.now() / 1000) + 3600, + }, + }, + }, + ], + }); + + const result = await pipe( + CloudFrontSigner.getSignedCookies({ + policy, + }), + Effect.provide(layer), + Effect.runPromiseExit, + ); + + expect(result).satisfies(Exit.isSuccess); + if (Exit.isSuccess(result)) { + expect(result.value).toHaveProperty( + "CloudFront-Key-Pair-Id", + "K2JCJMDEHXQW5F", + ); + expect(result.value).toHaveProperty("CloudFront-Signature"); + expect(result.value).toHaveProperty("CloudFront-Policy"); + } + }); + }); +}); diff --git a/packages/cloudfront-signer/tsconfig.cjs.json b/packages/cloudfront-signer/tsconfig.cjs.json new file mode 100644 index 00000000..5d9330be --- /dev/null +++ b/packages/cloudfront-signer/tsconfig.cjs.json @@ -0,0 +1,10 @@ +// ~~ 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" + } +} diff --git a/packages/cloudfront-signer/tsconfig.dev.json b/packages/cloudfront-signer/tsconfig.dev.json new file mode 100644 index 00000000..f97384ef --- /dev/null +++ b/packages/cloudfront-signer/tsconfig.dev.json @@ -0,0 +1,20 @@ +// ~~ 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" + } + ] +} diff --git a/packages/cloudfront-signer/tsconfig.esm.json b/packages/cloudfront-signer/tsconfig.esm.json new file mode 100644 index 00000000..0725cdeb --- /dev/null +++ b/packages/cloudfront-signer/tsconfig.esm.json @@ -0,0 +1,10 @@ +// ~~ 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 + } +} diff --git a/packages/cloudfront-signer/tsconfig.json b/packages/cloudfront-signer/tsconfig.json new file mode 100644 index 00000000..c1c93439 --- /dev/null +++ b/packages/cloudfront-signer/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/cloudfront-signer/tsconfig.src.json b/packages/cloudfront-signer/tsconfig.src.json new file mode 100644 index 00000000..dd8b4304 --- /dev/null +++ b/packages/cloudfront-signer/tsconfig.src.json @@ -0,0 +1,12 @@ +// ~~ 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" + ] +} diff --git a/packages/cloudfront-signer/vitest.config.ts b/packages/cloudfront-signer/vitest.config.ts new file mode 100644 index 00000000..2cf045fa --- /dev/null +++ b/packages/cloudfront-signer/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 8838e18f..5d44975c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: version: 0.19.0 '@effect/vitest': specifier: ^0.23.4 - version: 0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.6.0)) + version: 0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.7.0)) '@eslint/compat': specifier: ^1.2.5 version: 1.2.5(eslint@9.19.0) @@ -61,7 +61,7 @@ importers: version: 1.0.1(projen@0.91.6(constructs@10.4.2)) '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 '@typescript-eslint/eslint-plugin': specifier: ^8.21.0 version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.4.5))(eslint@9.19.0)(typescript@5.4.5) @@ -70,7 +70,7 @@ importers: version: 8.21.0(eslint@9.19.0)(typescript@5.4.5) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@25.6.0)) + version: 3.2.4(vitest@3.2.4(@types/node@25.7.0)) aws-sdk-client-mock: specifier: ^4.1.0 version: 4.1.0 @@ -103,7 +103,7 @@ importers: version: 0.91.6(constructs@10.4.2) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@25.6.0)(typescript@5.4.5) + version: 10.9.1(@types/node@25.7.0)(typescript@5.4.5) tsx: specifier: ^4.16.5 version: 4.19.3 @@ -112,16 +112,16 @@ importers: version: 5.4.5 vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.33.0)(@types/node@25.6.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5) + version: 1.6.3(@algolia/client-search@5.33.0)(@types/node@25.7.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5) vitepress-plugin-group-icons: specifier: ^1.6.1 - version: 1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.6.0)) + version: 1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.7.0)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@25.6.0) + version: 3.2.4(@types/node@25.7.0) vitest-mock-extended: specifier: ^3.1.0 - version: 3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.6.0)) + version: 3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.7.0)) packages/client-account: dependencies: @@ -134,7 +134,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -154,7 +154,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -174,7 +174,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -194,7 +194,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -214,7 +214,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -234,7 +234,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -254,7 +254,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -274,7 +274,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -294,7 +294,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -314,7 +314,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -334,7 +334,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -354,7 +354,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -374,7 +374,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -394,7 +394,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -414,7 +414,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -434,7 +434,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -454,7 +454,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -474,7 +474,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -494,7 +494,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -514,7 +514,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -534,7 +534,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -554,7 +554,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -574,7 +574,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -594,7 +594,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -614,7 +614,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -634,7 +634,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -654,7 +654,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -674,7 +674,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -694,7 +694,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -714,7 +714,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -734,7 +734,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -754,7 +754,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -774,7 +774,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -794,7 +794,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -814,7 +814,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -834,7 +834,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -854,7 +854,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -874,7 +874,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -894,7 +894,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -914,7 +914,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -934,7 +934,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -954,7 +954,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -974,7 +974,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -994,7 +994,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1014,7 +1014,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1040,7 +1040,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1060,7 +1060,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1080,7 +1080,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1100,7 +1100,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1120,7 +1120,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1140,7 +1140,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1160,7 +1160,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1180,7 +1180,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1200,7 +1200,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1220,7 +1220,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1240,7 +1240,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1260,7 +1260,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1280,7 +1280,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1300,7 +1300,24 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 + effect: + specifier: ^3.16.4 + version: 3.16.4 + typescript: + specifier: ^5.4.2 + version: 5.4.5 + publishDirectory: dist + + packages/cloudfront-signer: + dependencies: + '@aws-sdk/cloudfront-signer': + specifier: ^3 + version: 3.1036.0 + devDependencies: + '@types/node': + specifier: ts5.4 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1329,7 +1346,7 @@ importers: version: 3.23.17 '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1346,7 +1363,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1372,7 +1389,7 @@ importers: version: link:../client-dynamodb/dist '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1401,7 +1418,7 @@ importers: version: 0.84.8(effect@3.16.4) '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1423,7 +1440,7 @@ importers: version: 8.10.159 '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1446,7 +1463,7 @@ importers: version: 3.1037.0(@aws-sdk/client-dynamodb@3.1037.0) '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 typescript: specifier: ^5.4.2 version: 5.4.5 @@ -1462,7 +1479,7 @@ importers: version: 2.0.0 '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1491,7 +1508,7 @@ importers: version: 8.10.159 '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1513,7 +1530,7 @@ importers: version: 0.84.8(effect@3.16.4) '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1535,7 +1552,7 @@ importers: version: 1.208.0 '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1557,7 +1574,7 @@ importers: version: 1.208.0 '@types/node': specifier: ts5.4 - version: 25.6.0 + version: 25.7.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1928,6 +1945,10 @@ packages: resolution: {integrity: sha512-4Ak1LqNLskcc/aMthXM6exlmajsfMiz5qotGTVFYGL/i/abRHSStGyC4GqILCD3eXiuhTXSWm6gkFVoTwJfz+g==} engines: {node: '>=20.0.0'} + '@aws-sdk/cloudfront-signer@3.1036.0': + resolution: {integrity: sha512-AXEl7lGvlbWbN0Xi0dd0XVfzVnA39dUyMILPcTk6Q5DkwmPgp6M/K6A6Ejbjajhoe8C1AUF4O1+hDc7DPxnBxg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.974.5': resolution: {integrity: sha512-lMPlYlYfQdNZhlkJgnkmESwrY+hNh3PljmZ+37oAqLNdJ6rnILAwFSyc6B3bJeDOtMORNnMQIej0aTRuOlDyhQ==} engines: {node: '>=20.0.0'} @@ -3446,8 +3467,8 @@ packages: '@types/node@20.17.16': resolution: {integrity: sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==} - '@types/node@25.6.0': - resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + '@types/node@25.7.0': + resolution: {integrity: sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -3525,6 +3546,7 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@vitejs/plugin-vue@5.2.4': resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} @@ -5724,8 +5746,8 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@7.19.2: - resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + undici-types@7.21.0: + resolution: {integrity: sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==} undici@7.10.0: resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} @@ -8800,6 +8822,12 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/cloudfront-signer@3.1036.0': + dependencies: + '@smithy/core': 3.23.17 + '@smithy/url-parser': 4.2.14 + tslib: 2.8.1 + '@aws-sdk/core@3.974.5': dependencies: '@aws-sdk/types': 3.973.8 @@ -9713,10 +9741,10 @@ snapshots: dependencies: effect: 3.16.4 - '@effect/vitest@0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.6.0))': + '@effect/vitest@0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.7.0))': dependencies: effect: 3.16.4 - vitest: 3.2.4(@types/node@25.6.0) + vitest: 3.2.4(@types/node@25.7.0) '@effect/workflow@0.1.5(@effect/platform@0.84.8(effect@3.16.4))(@effect/rpc@0.61.8(@effect/platform@0.84.8(effect@3.16.4))(effect@3.16.4))(effect@3.16.4)': dependencies: @@ -9984,7 +10012,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.6.0 + '@types/node': 25.7.0 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -10621,7 +10649,7 @@ snapshots: '@types/cls-hooked@4.3.9': dependencies: - '@types/node': 25.6.0 + '@types/node': 25.7.0 '@types/dedent@0.7.0': {} @@ -10637,7 +10665,7 @@ snapshots: '@types/glob@7.1.3': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 25.6.0 + '@types/node': 25.7.0 '@types/hast@3.0.4': dependencies: @@ -10686,9 +10714,9 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@25.6.0': + '@types/node@25.7.0': dependencies: - undici-types: 7.19.2 + undici-types: 7.21.0 '@types/normalize-package-data@2.4.4': {} @@ -10791,12 +10819,12 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@25.6.0))(vue@3.5.17(typescript@5.4.5))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@25.7.0))(vue@3.5.17(typescript@5.4.5))': dependencies: - vite: 5.4.19(@types/node@25.6.0) + vite: 5.4.19(@types/node@25.7.0) vue: 3.5.17(typescript@5.4.5) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@25.6.0))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@25.7.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -10811,7 +10839,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@25.6.0) + vitest: 3.2.4(@types/node@25.7.0) transitivePeerDependencies: - supports-color @@ -10823,13 +10851,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@5.4.19(@types/node@25.6.0))': + '@vitest/mocker@3.2.4(vite@5.4.19(@types/node@25.7.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.19(@types/node@25.6.0) + vite: 5.4.19(@types/node@25.7.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -12222,7 +12250,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 25.6.0 + '@types/node': 25.7.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -13145,14 +13173,14 @@ snapshots: optionalDependencies: typescript: 5.4.5 - ts-node@10.9.1(@types/node@25.6.0)(typescript@5.4.5): + ts-node@10.9.1(@types/node@25.7.0)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 25.6.0 + '@types/node': 25.7.0 acorn: 8.14.0 acorn-walk: 8.3.2 arg: 4.1.3 @@ -13241,7 +13269,7 @@ snapshots: undici-types@6.19.8: {} - undici-types@7.19.2: {} + undici-types@7.21.0: {} undici@7.10.0: {} @@ -13305,13 +13333,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@25.6.0): + vite-node@3.2.4(@types/node@25.7.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 5.4.19(@types/node@25.6.0) + vite: 5.4.19(@types/node@25.7.0) transitivePeerDependencies: - '@types/node' - less @@ -13323,26 +13351,26 @@ snapshots: - supports-color - terser - vite@5.4.19(@types/node@25.6.0): + vite@5.4.19(@types/node@25.7.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.40.0 optionalDependencies: - '@types/node': 25.6.0 + '@types/node': 25.7.0 fsevents: 2.3.3 - vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.6.0)): + vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.7.0)): dependencies: '@iconify-json/logos': 1.2.4 '@iconify-json/vscode-icons': 1.2.23 '@iconify/utils': 2.3.0 markdown-it: 14.1.0 - vite: 5.4.19(@types/node@25.6.0) + vite: 5.4.19(@types/node@25.7.0) transitivePeerDependencies: - supports-color - vitepress@1.6.3(@algolia/client-search@5.33.0)(@types/node@25.6.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5): + vitepress@1.6.3(@algolia/client-search@5.33.0)(@types/node@25.7.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.33.0)(search-insights@2.17.3) @@ -13351,7 +13379,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@25.6.0))(vue@3.5.17(typescript@5.4.5)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@25.7.0))(vue@3.5.17(typescript@5.4.5)) '@vue/devtools-api': 7.7.7 '@vue/shared': 3.5.17 '@vueuse/core': 12.8.2(typescript@5.4.5) @@ -13360,7 +13388,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@25.6.0) + vite: 5.4.19(@types/node@25.7.0) vue: 3.5.17(typescript@5.4.5) optionalDependencies: postcss: 8.5.6 @@ -13391,17 +13419,17 @@ snapshots: - typescript - universal-cookie - vitest-mock-extended@3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.6.0)): + vitest-mock-extended@3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.7.0)): dependencies: ts-essentials: 10.0.4(typescript@5.4.5) typescript: 5.4.5 - vitest: 3.2.4(@types/node@25.6.0) + vitest: 3.2.4(@types/node@25.7.0) - vitest@3.2.4(@types/node@25.6.0): + vitest@3.2.4(@types/node@25.7.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@5.4.19(@types/node@25.6.0)) + '@vitest/mocker': 3.2.4(vite@5.4.19(@types/node@25.7.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -13419,11 +13447,11 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 5.4.19(@types/node@25.6.0) - vite-node: 3.2.4(@types/node@25.6.0) + vite: 5.4.19(@types/node@25.7.0) + vite-node: 3.2.4(@types/node@25.7.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.6.0 + '@types/node': 25.7.0 transitivePeerDependencies: - less - lightningcss diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 01d06a45..736f0591 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -60,6 +60,7 @@ packages: - packages/client-timestream-influxdb - packages/client-timestream-query - packages/client-timestream-write + - packages/cloudfront-signer - packages/commons - packages/dsql - packages/dynamodb diff --git a/tsconfig.base.json b/tsconfig.base.json index cd2b56eb..868936b2 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -677,6 +677,15 @@ ], "@effect-aws/dsql/test/*": [ "./packages/dsql/test/*.js" + ], + "@effect-aws/cloudfront-signer": [ + "./packages/cloudfront-signer/src/index.js" + ], + "@effect-aws/cloudfront-signer/*": [ + "./packages/cloudfront-signer/src/*.js" + ], + "@effect-aws/cloudfront-signer/test/*": [ + "./packages/cloudfront-signer/test/*.js" ] } } diff --git a/tsconfig.build.json b/tsconfig.build.json index 136dd510..0db62dbb 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -212,6 +212,9 @@ }, { "path": "packages/dsql/tsconfig.esm.json" + }, + { + "path": "packages/cloudfront-signer/tsconfig.esm.json" } ] } diff --git a/tsconfig.json b/tsconfig.json index ba01e398..718863c0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -217,6 +217,9 @@ }, { "path": "packages/dsql" + }, + { + "path": "packages/cloudfront-signer" } ] } diff --git a/vitest.shared.ts b/vitest.shared.ts index 507478e3..c135da33 100644 --- a/vitest.shared.ts +++ b/vitest.shared.ts @@ -88,6 +88,7 @@ const config: UserConfig = { ...alias("s3"), ...alias("http-handler"), ...alias("dsql"), + ...alias("cloudfront-signer"), } } } From d08bb126fae1934664b08b8786fd2b6187bb665d Mon Sep 17 00:00:00 2001 From: Yotam Ishak Date: Tue, 12 May 2026 12:50:52 +0300 Subject: [PATCH 2/3] change to cloudfront module --- .changeset/add-cloudfront-signer.md | 5 ----- .changeset/add-cloudfront.md | 5 +++++ .projenrc.ts | 4 ++-- .../.gitattributes | 0 .../{cloudfront-signer => cloudfront}/.gitignore | 0 .../{cloudfront-signer => cloudfront}/.npmignore | 0 .../.projen/deps.json | 0 .../.projen/files.json | 0 .../.projen/tasks.json | 0 .../{cloudfront-signer => cloudfront}/LICENSE | 0 .../{cloudfront-signer => cloudfront}/README.md | 16 ++++++++-------- .../docgen.json | 0 .../package.json | 8 ++++---- .../src/CloudFrontSigner.ts | 4 ++-- .../src/index.ts | 0 .../test/CloudFrontSigner.test.ts | 2 +- .../tsconfig.cjs.json | 0 .../tsconfig.dev.json | 0 .../tsconfig.esm.json | 0 .../tsconfig.json | 0 .../tsconfig.src.json | 0 .../vitest.config.ts | 0 pnpm-lock.yaml | 2 +- pnpm-workspace.yaml | 2 +- tsconfig.base.json | 12 ++++++------ tsconfig.build.json | 2 +- tsconfig.json | 2 +- vitest.shared.ts | 2 +- 28 files changed, 33 insertions(+), 33 deletions(-) delete mode 100644 .changeset/add-cloudfront-signer.md create mode 100644 .changeset/add-cloudfront.md rename packages/{cloudfront-signer => cloudfront}/.gitattributes (100%) rename packages/{cloudfront-signer => cloudfront}/.gitignore (100%) rename packages/{cloudfront-signer => cloudfront}/.npmignore (100%) rename packages/{cloudfront-signer => cloudfront}/.projen/deps.json (100%) rename packages/{cloudfront-signer => cloudfront}/.projen/files.json (100%) rename packages/{cloudfront-signer => cloudfront}/.projen/tasks.json (100%) rename packages/{cloudfront-signer => cloudfront}/LICENSE (100%) rename packages/{cloudfront-signer => cloudfront}/README.md (73%) rename packages/{cloudfront-signer => cloudfront}/docgen.json (100%) rename packages/{cloudfront-signer => cloudfront}/package.json (88%) rename packages/{cloudfront-signer => cloudfront}/src/CloudFrontSigner.ts (96%) rename packages/{cloudfront-signer => cloudfront}/src/index.ts (100%) rename packages/{cloudfront-signer => cloudfront}/test/CloudFrontSigner.test.ts (99%) rename packages/{cloudfront-signer => cloudfront}/tsconfig.cjs.json (100%) rename packages/{cloudfront-signer => cloudfront}/tsconfig.dev.json (100%) rename packages/{cloudfront-signer => cloudfront}/tsconfig.esm.json (100%) rename packages/{cloudfront-signer => cloudfront}/tsconfig.json (100%) rename packages/{cloudfront-signer => cloudfront}/tsconfig.src.json (100%) rename packages/{cloudfront-signer => cloudfront}/vitest.config.ts (100%) diff --git a/.changeset/add-cloudfront-signer.md b/.changeset/add-cloudfront-signer.md deleted file mode 100644 index f95e7a1c..00000000 --- a/.changeset/add-cloudfront-signer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@effect-aws/cloudfront-signer": minor ---- - -Add the `@effect-aws/cloudfront-signer` package with a Layer-based Effect wrapper around the AWS CloudFront signing helpers. diff --git a/.changeset/add-cloudfront.md b/.changeset/add-cloudfront.md new file mode 100644 index 00000000..8b5cf6f5 --- /dev/null +++ b/.changeset/add-cloudfront.md @@ -0,0 +1,5 @@ +--- +"@effect-aws/cloudfront": minor +--- + +Add the `@effect-aws/cloudfront` package with a Layer-based Effect wrapper around the AWS CloudFront signing helpers. diff --git a/.projenrc.ts b/.projenrc.ts index 1bcaf1bc..2c81f43f 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -220,8 +220,8 @@ new TypeScriptLibProject({ new TypeScriptLibProject({ parent: project, - name: "cloudfront-signer", - description: "Effectful AWS CloudFront Signer", + name: "cloudfront", + description: "Effectful AWS CloudFront modules", deps: ["@aws-sdk/cloudfront-signer@^3"], devDeps: [...effectDeps], peerDeps: ["effect@>=3.15.5 <4.0.0"], diff --git a/packages/cloudfront-signer/.gitattributes b/packages/cloudfront/.gitattributes similarity index 100% rename from packages/cloudfront-signer/.gitattributes rename to packages/cloudfront/.gitattributes diff --git a/packages/cloudfront-signer/.gitignore b/packages/cloudfront/.gitignore similarity index 100% rename from packages/cloudfront-signer/.gitignore rename to packages/cloudfront/.gitignore diff --git a/packages/cloudfront-signer/.npmignore b/packages/cloudfront/.npmignore similarity index 100% rename from packages/cloudfront-signer/.npmignore rename to packages/cloudfront/.npmignore diff --git a/packages/cloudfront-signer/.projen/deps.json b/packages/cloudfront/.projen/deps.json similarity index 100% rename from packages/cloudfront-signer/.projen/deps.json rename to packages/cloudfront/.projen/deps.json diff --git a/packages/cloudfront-signer/.projen/files.json b/packages/cloudfront/.projen/files.json similarity index 100% rename from packages/cloudfront-signer/.projen/files.json rename to packages/cloudfront/.projen/files.json diff --git a/packages/cloudfront-signer/.projen/tasks.json b/packages/cloudfront/.projen/tasks.json similarity index 100% rename from packages/cloudfront-signer/.projen/tasks.json rename to packages/cloudfront/.projen/tasks.json diff --git a/packages/cloudfront-signer/LICENSE b/packages/cloudfront/LICENSE similarity index 100% rename from packages/cloudfront-signer/LICENSE rename to packages/cloudfront/LICENSE diff --git a/packages/cloudfront-signer/README.md b/packages/cloudfront/README.md similarity index 73% rename from packages/cloudfront-signer/README.md rename to packages/cloudfront/README.md index 3ca3d44f..af18ccc9 100644 --- a/packages/cloudfront-signer/README.md +++ b/packages/cloudfront/README.md @@ -1,14 +1,14 @@ -# @effect-aws/cloudfront-signer +# @effect-aws/cloudfront -[![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fcloudfront-signer?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/cloudfront-signer) -[![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fcloudfront-signer)](https://www.npmjs.com/package/@effect-aws/cloudfront-signer) +[![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fcloudfront?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/cloudfront) +[![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fcloudfront)](https://www.npmjs.com/package/@effect-aws/cloudfront) -This package provides a Layer-based Effect wrapper around the AWS SDK CloudFront signing helpers. +This package provides Effect modules for AWS CloudFront utilities. ## Installation ```bash -npm install --save @effect-aws/cloudfront-signer +npm install --save @effect-aws/cloudfront ``` ## Usage @@ -16,7 +16,7 @@ npm install --save @effect-aws/cloudfront-signer ### Signed URL ```ts -import { CloudFrontSigner } from "@effect-aws/cloudfront-signer" +import { CloudFrontSigner } from "@effect-aws/cloudfront" import { Effect } from "effect" const program = CloudFrontSigner.getSignedUrl({ @@ -38,7 +38,7 @@ const result = program.pipe( ### Signed Cookies ```ts -import { CloudFrontSigner } from "@effect-aws/cloudfront-signer" +import { CloudFrontSigner } from "@effect-aws/cloudfront" import { Effect } from "effect" const program = CloudFrontSigner.getSignedCookies({ @@ -60,7 +60,7 @@ const result = program.pipe( ### Custom Policy ```ts -import { CloudFrontSigner } from "@effect-aws/cloudfront-signer" +import { CloudFrontSigner } from "@effect-aws/cloudfront" import { Effect } from "effect" const policy = JSON.stringify({ diff --git a/packages/cloudfront-signer/docgen.json b/packages/cloudfront/docgen.json similarity index 100% rename from packages/cloudfront-signer/docgen.json rename to packages/cloudfront/docgen.json diff --git a/packages/cloudfront-signer/package.json b/packages/cloudfront/package.json similarity index 88% rename from packages/cloudfront-signer/package.json rename to packages/cloudfront/package.json index e84db390..b2562133 100644 --- a/packages/cloudfront-signer/package.json +++ b/packages/cloudfront/package.json @@ -1,10 +1,10 @@ { - "name": "@effect-aws/cloudfront-signer", - "description": "Effectful AWS CloudFront Signer", + "name": "@effect-aws/cloudfront", + "description": "Effectful AWS CloudFront modules", "repository": { "type": "git", "url": "github:floydspace/effect-aws", - "directory": "packages/cloudfront-signer" + "directory": "packages/cloudfront" }, "scripts": { "build": "npx projen build", @@ -37,7 +37,7 @@ }, "main": "build/cjs/index.js", "license": "MIT", - "homepage": "https://floydspace.github.io/effect-aws/docs/cloudfront-signer", + "homepage": "https://floydspace.github.io/effect-aws/docs/cloudfront", "publishConfig": { "access": "public", "directory": "dist" diff --git a/packages/cloudfront-signer/src/CloudFrontSigner.ts b/packages/cloudfront/src/CloudFrontSigner.ts similarity index 96% rename from packages/cloudfront-signer/src/CloudFrontSigner.ts rename to packages/cloudfront/src/CloudFrontSigner.ts index b38c6bb5..608334af 100644 --- a/packages/cloudfront-signer/src/CloudFrontSigner.ts +++ b/packages/cloudfront/src/CloudFrontSigner.ts @@ -77,14 +77,14 @@ const makeCloudFrontSigner = ( * @category models */ export class CloudFrontSigner extends Effect.Tag( - "@effect-aws/cloudfront-signer/CloudFrontSigner", + "@effect-aws/cloudfront/CloudFrontSigner", )() { /** * @since 0.1.0 * * @example * import { Effect, Layer } from "effect"; - * import { CloudFrontSigner } from "@effect-aws/cloudfront-signer"; + * import { CloudFrontSigner } from "@effect-aws/cloudfront"; * * const signedUrl = CloudFrontSigner.getSignedUrl({ * url: "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg", diff --git a/packages/cloudfront-signer/src/index.ts b/packages/cloudfront/src/index.ts similarity index 100% rename from packages/cloudfront-signer/src/index.ts rename to packages/cloudfront/src/index.ts diff --git a/packages/cloudfront-signer/test/CloudFrontSigner.test.ts b/packages/cloudfront/test/CloudFrontSigner.test.ts similarity index 99% rename from packages/cloudfront-signer/test/CloudFrontSigner.test.ts rename to packages/cloudfront/test/CloudFrontSigner.test.ts index 25d66d21..93db8387 100644 --- a/packages/cloudfront-signer/test/CloudFrontSigner.test.ts +++ b/packages/cloudfront/test/CloudFrontSigner.test.ts @@ -1,4 +1,4 @@ -import { CloudFrontSigner } from "@effect-aws/cloudfront-signer"; +import { CloudFrontSigner } from "@effect-aws/cloudfront"; import { Cause, Effect, Exit } from "effect"; import { pipe } from "effect/Function"; import { describe, expect, it } from "vitest"; diff --git a/packages/cloudfront-signer/tsconfig.cjs.json b/packages/cloudfront/tsconfig.cjs.json similarity index 100% rename from packages/cloudfront-signer/tsconfig.cjs.json rename to packages/cloudfront/tsconfig.cjs.json diff --git a/packages/cloudfront-signer/tsconfig.dev.json b/packages/cloudfront/tsconfig.dev.json similarity index 100% rename from packages/cloudfront-signer/tsconfig.dev.json rename to packages/cloudfront/tsconfig.dev.json diff --git a/packages/cloudfront-signer/tsconfig.esm.json b/packages/cloudfront/tsconfig.esm.json similarity index 100% rename from packages/cloudfront-signer/tsconfig.esm.json rename to packages/cloudfront/tsconfig.esm.json diff --git a/packages/cloudfront-signer/tsconfig.json b/packages/cloudfront/tsconfig.json similarity index 100% rename from packages/cloudfront-signer/tsconfig.json rename to packages/cloudfront/tsconfig.json diff --git a/packages/cloudfront-signer/tsconfig.src.json b/packages/cloudfront/tsconfig.src.json similarity index 100% rename from packages/cloudfront-signer/tsconfig.src.json rename to packages/cloudfront/tsconfig.src.json diff --git a/packages/cloudfront-signer/vitest.config.ts b/packages/cloudfront/vitest.config.ts similarity index 100% rename from packages/cloudfront-signer/vitest.config.ts rename to packages/cloudfront/vitest.config.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d44975c..44bb4dba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1309,7 +1309,7 @@ importers: version: 5.4.5 publishDirectory: dist - packages/cloudfront-signer: + packages/cloudfront: dependencies: '@aws-sdk/cloudfront-signer': specifier: ^3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 736f0591..4a80e9af 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -60,7 +60,7 @@ packages: - packages/client-timestream-influxdb - packages/client-timestream-query - packages/client-timestream-write - - packages/cloudfront-signer + - packages/cloudfront - packages/commons - packages/dsql - packages/dynamodb diff --git a/tsconfig.base.json b/tsconfig.base.json index 868936b2..c28d61ec 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -678,14 +678,14 @@ "@effect-aws/dsql/test/*": [ "./packages/dsql/test/*.js" ], - "@effect-aws/cloudfront-signer": [ - "./packages/cloudfront-signer/src/index.js" + "@effect-aws/cloudfront": [ + "./packages/cloudfront/src/index.js" ], - "@effect-aws/cloudfront-signer/*": [ - "./packages/cloudfront-signer/src/*.js" + "@effect-aws/cloudfront/*": [ + "./packages/cloudfront/src/*.js" ], - "@effect-aws/cloudfront-signer/test/*": [ - "./packages/cloudfront-signer/test/*.js" + "@effect-aws/cloudfront/test/*": [ + "./packages/cloudfront/test/*.js" ] } } diff --git a/tsconfig.build.json b/tsconfig.build.json index 0db62dbb..55ba4340 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -214,7 +214,7 @@ "path": "packages/dsql/tsconfig.esm.json" }, { - "path": "packages/cloudfront-signer/tsconfig.esm.json" + "path": "packages/cloudfront/tsconfig.esm.json" } ] } diff --git a/tsconfig.json b/tsconfig.json index 718863c0..3104e5ab 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -219,7 +219,7 @@ "path": "packages/dsql" }, { - "path": "packages/cloudfront-signer" + "path": "packages/cloudfront" } ] } diff --git a/vitest.shared.ts b/vitest.shared.ts index c135da33..f88023ab 100644 --- a/vitest.shared.ts +++ b/vitest.shared.ts @@ -88,7 +88,7 @@ const config: UserConfig = { ...alias("s3"), ...alias("http-handler"), ...alias("dsql"), - ...alias("cloudfront-signer"), + ...alias("cloudfront"), } } } From 1ad377e3f1a3bd71354ad54a91d90eb3c00df644 Mon Sep 17 00:00:00 2001 From: Yotam Ishak Date: Tue, 12 May 2026 13:08:57 +0300 Subject: [PATCH 3/3] lockfile --- pnpm-lock.yaml | 233 ++++++++++++++++++++++++------------------------- 1 file changed, 116 insertions(+), 117 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44bb4dba..39abf52d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: version: 0.19.0 '@effect/vitest': specifier: ^0.23.4 - version: 0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.7.0)) + version: 0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.6.0)) '@eslint/compat': specifier: ^1.2.5 version: 1.2.5(eslint@9.19.0) @@ -61,7 +61,7 @@ importers: version: 1.0.1(projen@0.91.6(constructs@10.4.2)) '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 '@typescript-eslint/eslint-plugin': specifier: ^8.21.0 version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.4.5))(eslint@9.19.0)(typescript@5.4.5) @@ -70,7 +70,7 @@ importers: version: 8.21.0(eslint@9.19.0)(typescript@5.4.5) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@25.7.0)) + version: 3.2.4(vitest@3.2.4(@types/node@25.6.0)) aws-sdk-client-mock: specifier: ^4.1.0 version: 4.1.0 @@ -103,7 +103,7 @@ importers: version: 0.91.6(constructs@10.4.2) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@25.7.0)(typescript@5.4.5) + version: 10.9.1(@types/node@25.6.0)(typescript@5.4.5) tsx: specifier: ^4.16.5 version: 4.19.3 @@ -112,16 +112,16 @@ importers: version: 5.4.5 vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.33.0)(@types/node@25.7.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5) + version: 1.6.3(@algolia/client-search@5.33.0)(@types/node@25.6.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5) vitepress-plugin-group-icons: specifier: ^1.6.1 - version: 1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.7.0)) + version: 1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.6.0)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@25.7.0) + version: 3.2.4(@types/node@25.6.0) vitest-mock-extended: specifier: ^3.1.0 - version: 3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.7.0)) + version: 3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.6.0)) packages/client-account: dependencies: @@ -134,7 +134,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -154,7 +154,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -174,7 +174,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -194,7 +194,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -214,7 +214,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -234,7 +234,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -254,7 +254,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -274,7 +274,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -294,7 +294,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -314,7 +314,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -334,7 +334,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -354,7 +354,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -374,7 +374,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -394,7 +394,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -414,7 +414,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -434,7 +434,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -454,7 +454,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -474,7 +474,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -494,7 +494,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -514,7 +514,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -534,7 +534,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -554,7 +554,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -574,7 +574,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -594,7 +594,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -614,7 +614,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -634,7 +634,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -654,7 +654,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -674,7 +674,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -694,7 +694,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -714,7 +714,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -734,7 +734,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -754,7 +754,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -774,7 +774,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -794,7 +794,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -814,7 +814,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -834,7 +834,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -854,7 +854,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -874,7 +874,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -894,7 +894,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -914,7 +914,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -934,7 +934,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -954,7 +954,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -974,7 +974,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -994,7 +994,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1014,7 +1014,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1040,7 +1040,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1060,7 +1060,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1080,7 +1080,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1100,7 +1100,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1120,7 +1120,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1140,7 +1140,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1160,7 +1160,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1180,7 +1180,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1200,7 +1200,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1220,7 +1220,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1240,7 +1240,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1260,7 +1260,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1280,7 +1280,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1300,7 +1300,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1317,7 +1317,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1346,7 +1346,7 @@ importers: version: 3.23.17 '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1363,7 +1363,7 @@ importers: devDependencies: '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1389,7 +1389,7 @@ importers: version: link:../client-dynamodb/dist '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1418,7 +1418,7 @@ importers: version: 0.84.8(effect@3.16.4) '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1440,7 +1440,7 @@ importers: version: 8.10.159 '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1463,7 +1463,7 @@ importers: version: 3.1037.0(@aws-sdk/client-dynamodb@3.1037.0) '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 typescript: specifier: ^5.4.2 version: 5.4.5 @@ -1479,7 +1479,7 @@ importers: version: 2.0.0 '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1508,7 +1508,7 @@ importers: version: 8.10.159 '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1530,7 +1530,7 @@ importers: version: 0.84.8(effect@3.16.4) '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1552,7 +1552,7 @@ importers: version: 1.208.0 '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -1574,7 +1574,7 @@ importers: version: 1.208.0 '@types/node': specifier: ts5.4 - version: 25.7.0 + version: 25.6.0 effect: specifier: ^3.16.4 version: 3.16.4 @@ -3467,8 +3467,8 @@ packages: '@types/node@20.17.16': resolution: {integrity: sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==} - '@types/node@25.7.0': - resolution: {integrity: sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==} + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -3546,7 +3546,6 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@vitejs/plugin-vue@5.2.4': resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} @@ -5746,8 +5745,8 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@7.21.0: - resolution: {integrity: sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==} + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} undici@7.10.0: resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} @@ -9741,10 +9740,10 @@ snapshots: dependencies: effect: 3.16.4 - '@effect/vitest@0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.7.0))': + '@effect/vitest@0.23.4(effect@3.16.4)(vitest@3.2.4(@types/node@25.6.0))': dependencies: effect: 3.16.4 - vitest: 3.2.4(@types/node@25.7.0) + vitest: 3.2.4(@types/node@25.6.0) '@effect/workflow@0.1.5(@effect/platform@0.84.8(effect@3.16.4))(@effect/rpc@0.61.8(@effect/platform@0.84.8(effect@3.16.4))(effect@3.16.4))(effect@3.16.4)': dependencies: @@ -10012,7 +10011,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.7.0 + '@types/node': 25.6.0 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -10649,7 +10648,7 @@ snapshots: '@types/cls-hooked@4.3.9': dependencies: - '@types/node': 25.7.0 + '@types/node': 25.6.0 '@types/dedent@0.7.0': {} @@ -10665,7 +10664,7 @@ snapshots: '@types/glob@7.1.3': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 25.7.0 + '@types/node': 25.6.0 '@types/hast@3.0.4': dependencies: @@ -10714,9 +10713,9 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@25.7.0': + '@types/node@25.6.0': dependencies: - undici-types: 7.21.0 + undici-types: 7.19.2 '@types/normalize-package-data@2.4.4': {} @@ -10819,12 +10818,12 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@25.7.0))(vue@3.5.17(typescript@5.4.5))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@25.6.0))(vue@3.5.17(typescript@5.4.5))': dependencies: - vite: 5.4.19(@types/node@25.7.0) + vite: 5.4.19(@types/node@25.6.0) vue: 3.5.17(typescript@5.4.5) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@25.7.0))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@25.6.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -10839,7 +10838,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@25.7.0) + vitest: 3.2.4(@types/node@25.6.0) transitivePeerDependencies: - supports-color @@ -10851,13 +10850,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@5.4.19(@types/node@25.7.0))': + '@vitest/mocker@3.2.4(vite@5.4.19(@types/node@25.6.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.19(@types/node@25.7.0) + vite: 5.4.19(@types/node@25.6.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -12250,7 +12249,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 25.7.0 + '@types/node': 25.6.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -13173,14 +13172,14 @@ snapshots: optionalDependencies: typescript: 5.4.5 - ts-node@10.9.1(@types/node@25.7.0)(typescript@5.4.5): + ts-node@10.9.1(@types/node@25.6.0)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 25.7.0 + '@types/node': 25.6.0 acorn: 8.14.0 acorn-walk: 8.3.2 arg: 4.1.3 @@ -13269,7 +13268,7 @@ snapshots: undici-types@6.19.8: {} - undici-types@7.21.0: {} + undici-types@7.19.2: {} undici@7.10.0: {} @@ -13333,13 +13332,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@25.7.0): + vite-node@3.2.4(@types/node@25.6.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 5.4.19(@types/node@25.7.0) + vite: 5.4.19(@types/node@25.6.0) transitivePeerDependencies: - '@types/node' - less @@ -13351,26 +13350,26 @@ snapshots: - supports-color - terser - vite@5.4.19(@types/node@25.7.0): + vite@5.4.19(@types/node@25.6.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.40.0 optionalDependencies: - '@types/node': 25.7.0 + '@types/node': 25.6.0 fsevents: 2.3.3 - vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.7.0)): + vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@5.4.19(@types/node@25.6.0)): dependencies: '@iconify-json/logos': 1.2.4 '@iconify-json/vscode-icons': 1.2.23 '@iconify/utils': 2.3.0 markdown-it: 14.1.0 - vite: 5.4.19(@types/node@25.7.0) + vite: 5.4.19(@types/node@25.6.0) transitivePeerDependencies: - supports-color - vitepress@1.6.3(@algolia/client-search@5.33.0)(@types/node@25.7.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5): + vitepress@1.6.3(@algolia/client-search@5.33.0)(@types/node@25.6.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.4.5): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.33.0)(search-insights@2.17.3) @@ -13379,7 +13378,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@25.7.0))(vue@3.5.17(typescript@5.4.5)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@25.6.0))(vue@3.5.17(typescript@5.4.5)) '@vue/devtools-api': 7.7.7 '@vue/shared': 3.5.17 '@vueuse/core': 12.8.2(typescript@5.4.5) @@ -13388,7 +13387,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@25.7.0) + vite: 5.4.19(@types/node@25.6.0) vue: 3.5.17(typescript@5.4.5) optionalDependencies: postcss: 8.5.6 @@ -13419,17 +13418,17 @@ snapshots: - typescript - universal-cookie - vitest-mock-extended@3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.7.0)): + vitest-mock-extended@3.1.0(typescript@5.4.5)(vitest@3.2.4(@types/node@25.6.0)): dependencies: ts-essentials: 10.0.4(typescript@5.4.5) typescript: 5.4.5 - vitest: 3.2.4(@types/node@25.7.0) + vitest: 3.2.4(@types/node@25.6.0) - vitest@3.2.4(@types/node@25.7.0): + vitest@3.2.4(@types/node@25.6.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@5.4.19(@types/node@25.7.0)) + '@vitest/mocker': 3.2.4(vite@5.4.19(@types/node@25.6.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -13447,11 +13446,11 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 5.4.19(@types/node@25.7.0) - vite-node: 3.2.4(@types/node@25.7.0) + vite: 5.4.19(@types/node@25.6.0) + vite-node: 3.2.4(@types/node@25.6.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.7.0 + '@types/node': 25.6.0 transitivePeerDependencies: - less - lightningcss