{"_id":"@aletso/effect-resend","_rev":"2-e8d947ac13d7bac3e6e3f9465bdc57e4","name":"@aletso/effect-resend","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.1":{"name":"@aletso/effect-resend","version":"0.1.1","license":"MIT","_id":"@aletso/effect-resend@0.1.1","maintainers":[{"name":"gbartman","email":"g.bartman@aletso.com"}],"dist":{"shasum":"3ee816dc22a3c00f0c1a5af1ef1ffd12bc137842","tarball":"https://registry.npmjs.org/@aletso/effect-resend/-/effect-resend-0.1.1.tgz","fileCount":6,"integrity":"sha512-BJ3Lmub43m+SjgvOPxBkHTIysIxtJGePgMhJEQ7jR8UTJPgAEg5GB+TmmIvx+UMOeRl+VE47fBIguVoDqkj3JQ==","signatures":[{"sig":"MEYCIQC1mBogpvGngjtD8CZareKkeHnUz2Phzs9IA52yIgBvuQIhAOUuUB0dBA0rw9WBa5YzEVQweY8xneEa5r6X8IiRg4D3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6628},"type":"module","_from":"file:aletso-effect-resend-0.1.1.tgz","exports":{"./*":"./dist/*.js"},"scripts":{"build":"tsc -b tsconfig.json","type-check":"tsc -b tsconfig.json"},"_npmUser":{"name":"gbartman","email":"g.bartman@aletso.com"},"_resolved":"/tmp/38f1d50c8ee07ccbcd281d5f1551dbb8/aletso-effect-resend-0.1.1.tgz","_integrity":"sha512-BJ3Lmub43m+SjgvOPxBkHTIysIxtJGePgMhJEQ7jR8UTJPgAEg5GB+TmmIvx+UMOeRl+VE47fBIguVoDqkj3JQ==","_npmVersion":"11.12.1","description":"Effect wrapper for the Resend email API","directories":{},"_nodeVersion":"24.11.1","dependencies":{"resend":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@effect/language-service":"^0.62.3"},"peerDependencies":{"effect":"^3.19.12"},"_npmOperationalInternal":{"tmp":"tmp/effect-resend_0.1.1_1776189554639_0.24334445144343309","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aletso/effect-resend","version":"0.1.2","type":"module","description":"Effect wrapper for the Resend email API","license":"MIT","exports":{"./*":"./dist/*.js"},"publishConfig":{"access":"public"},"dependencies":{"resend":"*"},"peerDependencies":{"effect":"^3.19.12"},"devDependencies":{"@effect/language-service":"^0.62.3","typescript":"^5.9.3"},"scripts":{"build":"tsc -b tsconfig.json","type-check":"tsc -b tsconfig.json"},"_id":"@aletso/effect-resend@0.1.2","_integrity":"sha512-ZmrkJa323NUYplWvhS8n2hwaH8S31e5C0KdtVRN048KCjnWjU9/rWMM9PoRtD4W6xzMJkECGFb4OLHG6Q2SlRg==","_resolved":"/tmp/780d35d90b0206b40a66b6d416d29551/aletso-effect-resend-0.1.2.tgz","_from":"file:aletso-effect-resend-0.1.2.tgz","_nodeVersion":"24.11.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-ZmrkJa323NUYplWvhS8n2hwaH8S31e5C0KdtVRN048KCjnWjU9/rWMM9PoRtD4W6xzMJkECGFb4OLHG6Q2SlRg==","shasum":"9e60b73fddfbd1c51f128ffd2c4d53b522e289cf","tarball":"https://registry.npmjs.org/@aletso/effect-resend/-/effect-resend-0.1.2.tgz","fileCount":7,"unpackedSize":8747,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA3f/hmBcgc6B1ojRxMxzSfMoZy03DP79Xq3Yx+oqP6PAiAd2rYa5I1Y9LtKRIZtrbeUyUdg2cAyeWXQ5rC1x1+eWg=="}]},"_npmUser":{"name":"gbartman","email":"g.bartman@aletso.com"},"directories":{},"maintainers":[{"name":"gbartman","email":"g.bartman@aletso.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/effect-resend_0.1.2_1776190710775_0.6142233721828312"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T17:59:14.521Z","modified":"2026-04-14T18:18:31.061Z","0.1.1":"2026-04-14T17:59:14.788Z","0.1.2":"2026-04-14T18:18:30.917Z"},"license":"MIT","description":"Effect wrapper for the Resend email API","maintainers":[{"name":"gbartman","email":"g.bartman@aletso.com"}],"readme":"# @aletso/effect-resend\n\nEffect service wrapper for the Resend email API.\n\nThe package provides:\n\n- `Resend` service tag\n- `Resend.layer(config)` for dependency injection\n- `ResendError` for typed failures\n\n## Install\n\n```bash\npnpm add @aletso/effect-resend resend effect\n```\n\n## Provide the layer\n\n```ts\nimport * as Resend from \"@aletso/effect-resend/Resend\";\nimport * as Layer from \"effect/Layer\";\nimport * as Redacted from \"effect/Redacted\";\n\nexport const ResendLive: Layer.Layer<Resend.Resend> = Resend.layer({\n  apiKey: Redacted.make(process.env.RESEND_API_KEY ?? \"\"),\n});\n```\n\nExample environment-driven layer wiring:\n\n```ts\nimport { EnvVars } from \"./env\";\nimport * as Resend from \"@aletso/effect-resend/Resend\";\nimport { Effect, Layer } from \"effect\";\n\nexport const ResendLive = Layer.unwrapEffect(\n  EnvVars.pipe(\n    Effect.map((env) =>\n      Resend.layer({\n        apiKey: env.RESEND_API_KEY,\n      }),\n    ),\n  ),\n).pipe(Layer.provide(EnvVars.Live));\n```\n\n## Send email from an Effect service\n\n```ts\nimport { Resend, ResendError } from \"@aletso/effect-resend/Resend\";\nimport * as Effect from \"effect/Effect\";\n\nexport const sendWelcomeEmail = (to: string) =>\n  Effect.gen(function* () {\n    const resend = yield* Resend;\n    return yield* resend.sendEmail({\n      from: \"Acme <hello@acme.dev>\",\n      to: [to],\n      subject: \"Welcome\",\n      html: \"<p>Thanks for joining Acme.</p>\",\n    });\n  }).pipe(\n    Effect.catchTag(\"ResendError\", (error: ResendError) =>\n      Effect.zipRight(\n        Effect.logError(`Resend sendEmail failed: ${error.message}`),\n        Effect.fail(error),\n      ),\n    ),\n  );\n```\n\n## Composition example\n\n```ts\nimport * as Layer from \"effect/Layer\";\nimport * as Resend from \"@aletso/effect-resend/Resend\";\nimport * as Redacted from \"effect/Redacted\";\nimport { NewsletterService } from \"./newsletter/service\";\n\nexport const AppLive = Layer.mergeAll(\n  Resend.layer({ apiKey: Redacted.make(process.env.RESEND_API_KEY ?? \"\") }),\n  NewsletterService.Default,\n);\n```\n\n## API surface\n\n- `ResendConfig`\n- `ResendError`\n- `ResendService`\n- `make(config)`\n- `Resend` tag\n- `layer(config)`\n","readmeFilename":"README.md"}