@t4h.framework/smtp 0.7.5 → 0.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/skills/framework-smtp/SKILL.md +22 -21
- package/CHANGELOG.md +25 -0
- package/README.md +15 -2
- package/dist/activities/SmtpSendEmailActivity.d.ts.map +1 -1
- package/dist/activities/SmtpSendEmailActivity.js +8 -11
- package/dist/activities/SmtpSendEmailActivity.js.map +1 -1
- package/package.json +4 -2
|
@@ -13,7 +13,7 @@ description: >-
|
|
|
13
13
|
|
|
14
14
|
SMTP activity, claim, and a reconciler-aware client for sending email inside workflows. Package path: `framework/packages/smtp`. Peer dependency: `@t4h.framework/core` (for `SyncActivity`, `Claim`, `History`, `Binary`, `SerializableClass`).
|
|
15
15
|
|
|
16
|
-
Import surface (
|
|
16
|
+
Import surface (the package entry; its `exports` map has only `.`, so `tsc` rejects a deep import):
|
|
17
17
|
|
|
18
18
|
```typescript
|
|
19
19
|
import {
|
|
@@ -44,7 +44,7 @@ Node `>=22`. See [README.md](../../../README.md) for a short overview (note: REA
|
|
|
44
44
|
└─────────────┘ └────────────────────────┘ └─────────────────────┘
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
`@t4h.framework/core/no-io-in-workflow` rejects `nodemailer` and raw sockets in a workflow. Use `Smtp`.
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
@@ -121,7 +121,7 @@ Use framework `Binary` instances (e.g. from an HTTP `response.body`).
|
|
|
121
121
|
|
|
122
122
|
## Smtp client
|
|
123
123
|
|
|
124
|
-
High-level API: holds `connectionString`
|
|
124
|
+
High-level API: holds `connectionString` and optional default `from`, extends `SerializableClass` for workflow persistence. `connectionString` is typed `Secret` (a string is a `tsc` error): pass the `EnvDesign` entry declared `type: Secret`, because the URL `smtp://user:pass@host:587` carries the password.
|
|
125
125
|
|
|
126
126
|
```typescript
|
|
127
127
|
const smtp = new Smtp(environments.SMTP_URL, {
|
|
@@ -157,7 +157,7 @@ await smtp.send({
|
|
|
157
157
|
|
|
158
158
|
Prefer `smtp.send` in workflows. When you need the exported activity directly,
|
|
159
159
|
drive the **shipped** `SmtpSendEmailActivity` through `History.reconciler` — a
|
|
160
|
-
ready, replay-safe helper.
|
|
160
|
+
ready, replay-safe helper. `@t4h.framework/core/no-framework-activity-in-app` rejects `new` and `extends` on it:
|
|
161
161
|
|
|
162
162
|
```typescript
|
|
163
163
|
import { History } from '@t4h.framework/core'
|
|
@@ -171,8 +171,6 @@ const result = await History.reconciler(SmtpSendEmailActivity, smtp, {
|
|
|
171
171
|
})
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
Runs inside a workflow (the runtime, or `TestWorkflowEnvironment` in tests, provides the reconciler context).
|
|
175
|
-
|
|
176
174
|
---
|
|
177
175
|
|
|
178
176
|
## SmtpSendEmailOutput
|
|
@@ -191,17 +189,24 @@ Activity and `Smtp.send` surface this type, not the raw `{ messageId }` object.
|
|
|
191
189
|
## Workflow example
|
|
192
190
|
|
|
193
191
|
```typescript
|
|
194
|
-
|
|
195
|
-
import {
|
|
196
|
-
import { Smtp } from '@t4h.framework/smtp'
|
|
197
|
-
import Type from 'typebox'
|
|
192
|
+
// src/constants/environments.ts
|
|
193
|
+
import { EnvDesign, Secret } from '@t4h.framework/core'
|
|
198
194
|
|
|
199
|
-
const
|
|
195
|
+
export const environments = EnvDesign({
|
|
200
196
|
SMTP_CONNECTION_STRING: { type: Secret }, // carries the password
|
|
201
197
|
SMTP_FROM: { type: String },
|
|
202
198
|
})
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
import { App, Workflow } from '@t4h.framework/core'
|
|
203
|
+
import { http } from '@t4h.framework/http'
|
|
204
|
+
import { Smtp } from '@t4h.framework/smtp'
|
|
205
|
+
import Type from 'typebox'
|
|
206
|
+
|
|
207
|
+
import { environments } from './constants/environments.js'
|
|
203
208
|
|
|
204
|
-
const smtp = new Smtp(
|
|
209
|
+
const smtp = new Smtp(environments.SMTP_CONNECTION_STRING)
|
|
205
210
|
|
|
206
211
|
export default new App({
|
|
207
212
|
id: 'email',
|
|
@@ -210,7 +215,7 @@ export default new App({
|
|
|
210
215
|
const response = await http.get('https://picsum.photos/300/200')
|
|
211
216
|
|
|
212
217
|
await smtp.send({
|
|
213
|
-
from:
|
|
218
|
+
from: environments.SMTP_FROM,
|
|
214
219
|
to: input,
|
|
215
220
|
subject: 'Hello World!',
|
|
216
221
|
html: '<p>...</p>',
|
|
@@ -269,14 +274,10 @@ expect(mockSend.mock.calls[0][0]).toMatchObject({
|
|
|
269
274
|
|
|
270
275
|
## Checklist for agents
|
|
271
276
|
|
|
272
|
-
1. In workflows, use **`Smtp` + `smtp.send()`** (or `History.reconciler` with the exported `SmtpSendEmailActivity`)
|
|
277
|
+
1. In workflows, use **`Smtp` + `smtp.send()`** (or `History.reconciler` with the exported `SmtpSendEmailActivity`).
|
|
273
278
|
2. Ensure runtime provides **`SmtpSendEmailClaim`** (or a mock in tests).
|
|
274
|
-
3.
|
|
275
|
-
4.
|
|
276
|
-
5.
|
|
277
|
-
6. Expect **`SmtpSendEmailOutput`** from `send`, not a plain object — use `.messageId`.
|
|
278
|
-
7. Test workflows with **`TestWorkflowEnvironment`** + **`mockClaim(SmtpSendEmailClaim, { send })`**; assert on the mock's `mock.calls`.
|
|
279
|
-
8. Do not document or import APIs not exported from `@t4h.framework/smtp`.
|
|
280
|
-
9. For core workflow/reconciler concepts, use the **framework-core** skill (`@t4h.framework/core`).
|
|
279
|
+
3. Set default **`from`** on `new Smtp(connectionString, { from })` or per-send; per-send wins.
|
|
280
|
+
4. Test workflows with **`TestWorkflowEnvironment`** + **`mockClaim(SmtpSendEmailClaim, { send })`**; assert on the mock's `mock.calls`.
|
|
281
|
+
5. For core workflow/reconciler concepts, use the **framework-core** skill (`@t4h.framework/core`).
|
|
281
282
|
|
|
282
283
|
See also: `packages/smtp/README.md`; **framework-workflow-testing** for the test harness.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @t4h.framework/smtp
|
|
2
2
|
|
|
3
|
+
## 0.7.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#241](https://github.com/tech4humans-brasil/framework/pull/241) [`f6b8454`](https://github.com/tech4humans-brasil/framework/commit/f6b845484d22e7c8e7240fe2e113f1cdea7c8ce3) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Adds seven rules to `@t4h.framework/core/eslint` and turns them on in `configs.recommended`:
|
|
8
|
+
- `no-io-in-workflow` reports `fetch` and calls to network, file, database and mail modules in a workflow and in the `constructor`, `toInput` and `toOutput` of an activity. It also reports `zlib` and `stream` calls there, because they work on the content in memory on each replay.
|
|
9
|
+
- `no-binary-subclass` reports a class that extends `Binary`.
|
|
10
|
+
- `no-framework-activity-in-app` reports `new` and `extends` on an activity of a framework package other than the core.
|
|
11
|
+
- `no-testing-import-in-source` reports an import of a `@t4h.framework/<package>/testing` entry out of a test file.
|
|
12
|
+
- `require-workflow-id` reports a `Workflow` with no `id`.
|
|
13
|
+
- `no-secret-to-string` reports a `Secret` that becomes a string.
|
|
14
|
+
- `no-literal-secret-in-authorization` reports a string literal in the `secret` or `clientSecret` field of an `Authorization`.
|
|
15
|
+
|
|
16
|
+
The package skills now name these rules in place of the text that the rules enforce. The docs and skills give each `Workflow` an `id`, read the HMAC secret from `EnvDesign`, and do not document a custom HTTP activity.
|
|
17
|
+
|
|
18
|
+
- [#243](https://github.com/tech4humans-brasil/framework/pull/243) [`0ffd663`](https://github.com/tech4humans-brasil/framework/commit/0ffd663ce8369edd7b54206cb3216568ad1de471) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - The README examples read each value from `environments`, an `EnvDesign` in `src/constants/environments.ts`, and pass each credential as a `Secret`. They no longer use `process.env`, the raw `env` from the core or a literal in a `Secret` field. The jwks README describes the real context fields (`signature`, `rawPayload`) and says that a token that `jwt.verify` rejects throws.
|
|
19
|
+
|
|
20
|
+
- [#240](https://github.com/tech4humans-brasil/framework/pull/240) [`0606115`](https://github.com/tech4humans-brasil/framework/commit/0606115e2e0baa994e9f0ed3559ee54ecac88e44) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - The skills do not repeat a rule that a lint rule, `tsc` or a runtime error already enforces. Each such rule is now one line that names the gate. The examples that broke a gate (`process.env`, `as any`, an inline secret, an `EnvDesign` in a workflow file, `ref.output` before `wait()`) are correct now.
|
|
21
|
+
|
|
22
|
+
- [#228](https://github.com/tech4humans-brasil/framework/pull/228) [`d29e1ab`](https://github.com/tech4humans-brasil/framework/commit/d29e1ab29a039b13c3e4b075472bd615566ae75e) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Uses exact types and `unknown` in place of `any`, and checks external data with guards.
|
|
23
|
+
- harness: the fix-issues prompt lists each sensor as `- checkTypes: PASS`. Before, it printed `- 0: [object Object]`.
|
|
24
|
+
- hmac: an algorithm name such as `constructor` throws `Unsupported algorithm`.
|
|
25
|
+
- oidc: a discovery response with no `introspection_endpoint`, or a null introspection body, throws a clear error.
|
|
26
|
+
- `HttpRequestActivity.toOutput` takes `HttpRequestActivityOutput` in place of `any`.
|
|
27
|
+
|
|
3
28
|
## 0.7.5
|
|
4
29
|
|
|
5
30
|
## 0.7.4
|
package/README.md
CHANGED
|
@@ -41,10 +41,23 @@ High-level SMTP client that wraps `SmtpSendEmailActivity` behind a simple API. I
|
|
|
41
41
|
|
|
42
42
|
### Basic usage
|
|
43
43
|
|
|
44
|
+
The connection string `smtp://user:pass@host:587` carries the password, so the constructor takes a `Secret` and `tsc` rejects a string. Declare it with `type: Secret` in the `EnvDesign` in `src/constants/environments.ts`:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// src/constants/environments.ts
|
|
48
|
+
import { EnvDesign, Secret } from '@t4h.framework/core'
|
|
49
|
+
|
|
50
|
+
export const environments = EnvDesign({
|
|
51
|
+
SMTP_URL: { type: Secret },
|
|
52
|
+
})
|
|
53
|
+
```
|
|
54
|
+
|
|
44
55
|
```typescript
|
|
45
56
|
import { Smtp } from '@t4h.framework/smtp'
|
|
46
57
|
|
|
47
|
-
|
|
58
|
+
import { environments } from './constants/environments.js'
|
|
59
|
+
|
|
60
|
+
const smtp = new Smtp(environments.SMTP_URL)
|
|
48
61
|
|
|
49
62
|
const result = await smtp.send({
|
|
50
63
|
from: 'noreply@example.com',
|
|
@@ -59,7 +72,7 @@ result.messageId // string
|
|
|
59
72
|
### Default sender
|
|
60
73
|
|
|
61
74
|
```typescript
|
|
62
|
-
const smtp = new Smtp(
|
|
75
|
+
const smtp = new Smtp(environments.SMTP_URL, {
|
|
63
76
|
from: 'noreply@example.com',
|
|
64
77
|
})
|
|
65
78
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmtpSendEmailActivity.d.ts","sourceRoot":"","sources":["../../src/activities/SmtpSendEmailActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAS,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE9E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EAC1B,MAAM,kCAAkC,CAAA;AAEzC,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAA;CACzD,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,gBAAgB,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,SAAS,MAAM,EAAE,CAAA;IACrB,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtB,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAA;CACzD,CAAA;
|
|
1
|
+
{"version":3,"file":"SmtpSendEmailActivity.d.ts","sourceRoot":"","sources":["../../src/activities/SmtpSendEmailActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAS,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE9E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EAC1B,MAAM,kCAAkC,CAAA;AAEzC,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAA;CACzD,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,gBAAgB,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,SAAS,MAAM,EAAE,CAAA;IACrB,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtB,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAA;CACzD,CAAA;AAUD,QAAA,MAAM,+BAA+B,eAEpC,CAAA;AAED,qBAAa,qBAAsB,SAAQ,YAAY,CACrD,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,CAAC,EAC5D,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,CACpB;IACC,OAAO,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,CAEhD;IAEK,OAAO,CACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,4BAA4B,GACpC,0BAA0B;IAqBtB,GAAG,CAAC,OAAO,EAAE,0BAA0B;IAIvC,QAAQ,CAAC,MAAM,EAAE,oBAAoB;CAG7C"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { Binary, Claim, SyncActivity } from '@t4h.framework/core';
|
|
2
2
|
import { SmtpSendEmailClaim } from '../models/SmtpSendEmailClaim.js';
|
|
3
3
|
import { SmtpSendEmailOutput, } from '../models/SmtpSendEmailOutput.js';
|
|
4
|
+
function toOptionalRecipients(recipients) {
|
|
5
|
+
if (!recipients)
|
|
6
|
+
return undefined;
|
|
7
|
+
return typeof recipients === 'string' ? [recipients] : recipients;
|
|
8
|
+
}
|
|
4
9
|
const SMTP_SEND_EMAIL_ACTIVITY_CLAIMS = Symbol('smtp-send-email-activity-claims');
|
|
5
10
|
export class SmtpSendEmailActivity extends SyncActivity {
|
|
6
11
|
[SMTP_SEND_EMAIL_ACTIVITY_CLAIMS] = new Claim({
|
|
@@ -8,17 +13,9 @@ export class SmtpSendEmailActivity extends SyncActivity {
|
|
|
8
13
|
});
|
|
9
14
|
toInput(smtp, content) {
|
|
10
15
|
const from = content.from ?? smtp.options.from;
|
|
11
|
-
const to =
|
|
12
|
-
const cc = content.cc
|
|
13
|
-
|
|
14
|
-
? content.cc
|
|
15
|
-
: [content.cc]
|
|
16
|
-
: undefined;
|
|
17
|
-
const bcc = content.bcc
|
|
18
|
-
? Array.isArray(content.bcc)
|
|
19
|
-
? content.bcc
|
|
20
|
-
: [content.bcc]
|
|
21
|
-
: undefined;
|
|
16
|
+
const to = typeof content.to === 'string' ? [content.to] : content.to;
|
|
17
|
+
const cc = toOptionalRecipients(content.cc);
|
|
18
|
+
const bcc = toOptionalRecipients(content.bcc);
|
|
22
19
|
return {
|
|
23
20
|
connectionString: smtp.connectionString,
|
|
24
21
|
from,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmtpSendEmailActivity.js","sourceRoot":"","sources":["../../src/activities/SmtpSendEmailActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAA;AAG9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EACL,mBAAmB,GAEpB,MAAM,kCAAkC,CAAA;AA4BzC,MAAM,+BAA+B,GAAG,MAAM,CAC5C,iCAAiC,CAClC,CAAA;AAED,MAAM,OAAO,qBAAsB,SAAQ,YAK1C;IACkB,CAAC,+BAA+B,CAAC,GAAG,IAAI,KAAK,CAAC;QAC7D,IAAI,EAAE,kBAAkB;KACzB,CAAC,CAAA;IAEK,OAAO,CACZ,IAAU,EACV,OAAqC;QAErC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;QAE9C,MAAM,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"SmtpSendEmailActivity.js","sourceRoot":"","sources":["../../src/activities/SmtpSendEmailActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAA;AAG9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EACL,mBAAmB,GAEpB,MAAM,kCAAkC,CAAA;AA4BzC,SAAS,oBAAoB,CAC3B,UAAkD;IAElD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAA;IAEjC,OAAO,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;AACnE,CAAC;AAED,MAAM,+BAA+B,GAAG,MAAM,CAC5C,iCAAiC,CAClC,CAAA;AAED,MAAM,OAAO,qBAAsB,SAAQ,YAK1C;IACkB,CAAC,+BAA+B,CAAC,GAAG,IAAI,KAAK,CAAC;QAC7D,IAAI,EAAE,kBAAkB;KACzB,CAAC,CAAA;IAEK,OAAO,CACZ,IAAU,EACV,OAAqC;QAErC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;QAE9C,MAAM,EAAE,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAA;QAErE,MAAM,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAE3C,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAE7C,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE;YACF,EAAE;YACF,GAAG;YACH,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAA;IACH,CAAC;IAEM,GAAG,CAAC,OAAmC;QAC5C,OAAO,IAAI,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjE,CAAC;IAEM,QAAQ,CAAC,MAA4B;QAC1C,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t4h.framework/smtp",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.6",
|
|
4
4
|
"description": "SMTP module for the T4H Framework",
|
|
5
5
|
"homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/smtp",
|
|
6
6
|
"bugs": "https://github.com/tech4humans-brasil/framework/issues",
|
|
@@ -26,12 +26,14 @@
|
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "tsc --project tsconfig.build.json",
|
|
28
28
|
"check-types": "tsc --noEmit",
|
|
29
|
+
"check-package": "publint --strict && attw --pack . --profile esm-only",
|
|
30
|
+
"lint": "eslint . --max-warnings 0",
|
|
29
31
|
"prepublishOnly": "yarn build",
|
|
30
32
|
"test": "vitest run",
|
|
31
33
|
"test:watch": "vitest"
|
|
32
34
|
},
|
|
33
35
|
"devDependencies": {
|
|
34
|
-
"@t4h.framework/core": "^0.
|
|
36
|
+
"@t4h.framework/core": "^0.20.0",
|
|
35
37
|
"typescript": "^5.9.3",
|
|
36
38
|
"vitest": "^4.0.18"
|
|
37
39
|
},
|