@joedeanvapi/mail-service-sdk 0.1.0
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/dist/generated-contract.d.ts +4 -0
- package/dist/generated-contract.d.ts.map +1 -0
- package/dist/generated-contract.js +6 -0
- package/dist/generated-contract.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +211 -0
- package/dist/index.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const MAIL_SERVICE_ERROR_CODES: readonly ["INVALID_JSON", "MISSING_PROJECT_KEY", "UNAUTHORIZED", "MISSING_RECIPIENT", "MISSING_SUBJECT", "MISSING_CONTENT", "PROJECT_DISABLED", "SENDER_NOT_CONFIGURED", "SENDER_MIGRATION_REQUIRED", "UNSUPPORTED_RECIPIENT_SUFFIX", "MAIL_SERVICE_UNAVAILABLE", "UPSTREAM_SEND_FAILED", "INTERNAL_ERROR"];
|
|
2
|
+
export type MailServiceErrorCode = (typeof MAIL_SERVICE_ERROR_CODES)[number];
|
|
3
|
+
export declare function isMailServiceErrorCode(value: unknown): value is MailServiceErrorCode;
|
|
4
|
+
//# sourceMappingURL=generated-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-contract.d.ts","sourceRoot":"","sources":["../src/generated-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,6SAA8S,CAAC;AAEpV,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const MAIL_SERVICE_ERROR_CODES = ["INVALID_JSON", "MISSING_PROJECT_KEY", "UNAUTHORIZED", "MISSING_RECIPIENT", "MISSING_SUBJECT", "MISSING_CONTENT", "PROJECT_DISABLED", "SENDER_NOT_CONFIGURED", "SENDER_MIGRATION_REQUIRED", "UNSUPPORTED_RECIPIENT_SUFFIX", "MAIL_SERVICE_UNAVAILABLE", "UPSTREAM_SEND_FAILED", "INTERNAL_ERROR"];
|
|
2
|
+
// 判断传入值是否是 mail-service 公开发送接口的稳定错误码。
|
|
3
|
+
export function isMailServiceErrorCode(value) {
|
|
4
|
+
return typeof value === "string" && MAIL_SERVICE_ERROR_CODES.includes(value);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=generated-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-contract.js","sourceRoot":"","sources":["../src/generated-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,cAAc,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,gBAAgB,CAAU,CAAC;AAIpV,sCAAsC;AACtC,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,wBAAwB,CAAC,QAAQ,CAAC,KAA6B,CAAC,CAAC;AACvG,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export { isMailServiceErrorCode, MAIL_SERVICE_ERROR_CODES, type MailServiceErrorCode, } from "./generated-contract.js";
|
|
2
|
+
export type MailServiceMetadata = Record<string, unknown>;
|
|
3
|
+
export type MailServiceSendInput = {
|
|
4
|
+
to: string;
|
|
5
|
+
subject: string;
|
|
6
|
+
html?: string;
|
|
7
|
+
text?: string;
|
|
8
|
+
senderKey?: string;
|
|
9
|
+
messageType: string;
|
|
10
|
+
idempotencyKey?: string;
|
|
11
|
+
metadata?: MailServiceMetadata;
|
|
12
|
+
skipRecipientPolicies?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type MailServiceSendResult = {
|
|
15
|
+
ok: true;
|
|
16
|
+
projectKey?: string;
|
|
17
|
+
deliveryId: string;
|
|
18
|
+
idempotent?: boolean;
|
|
19
|
+
provider?: string;
|
|
20
|
+
providerInstanceKey?: string;
|
|
21
|
+
result?: unknown;
|
|
22
|
+
};
|
|
23
|
+
export type MailServiceFailureNotification = {
|
|
24
|
+
service: "mail-service";
|
|
25
|
+
operation: "sendMail";
|
|
26
|
+
method: "POST";
|
|
27
|
+
url: string;
|
|
28
|
+
status?: number;
|
|
29
|
+
code: string;
|
|
30
|
+
attempts: number;
|
|
31
|
+
message: string;
|
|
32
|
+
};
|
|
33
|
+
export type MailServiceLogEntry = {
|
|
34
|
+
msg: string;
|
|
35
|
+
data?: Record<string, unknown>;
|
|
36
|
+
error?: unknown;
|
|
37
|
+
};
|
|
38
|
+
export type MailServiceFetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
39
|
+
export type MailServiceSdkConfig = {
|
|
40
|
+
apiUrl: string;
|
|
41
|
+
apiKey: string;
|
|
42
|
+
projectKey: string;
|
|
43
|
+
defaultSenderKey?: string;
|
|
44
|
+
fetchImpl?: MailServiceFetch;
|
|
45
|
+
retryAttempts?: number;
|
|
46
|
+
onFailure?: (failure: MailServiceFailureNotification) => Promise<void> | void;
|
|
47
|
+
logInfo?: (entry: MailServiceLogEntry) => void;
|
|
48
|
+
logError?: (entry: MailServiceLogEntry) => void;
|
|
49
|
+
};
|
|
50
|
+
export declare function createMailServiceSdk(config: MailServiceSdkConfig): {
|
|
51
|
+
sendMail: (input: MailServiceSendInput) => Promise<MailServiceSendResult>;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAC7B,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACjD,CAAC;AAkQF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB;sBAEhC,oBAAoB,KAAG,OAAO,CAAC,qBAAqB,CAAC;EAOrF"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
export { isMailServiceErrorCode, MAIL_SERVICE_ERROR_CODES, } from "./generated-contract.js";
|
|
2
|
+
const MAIL_SERVICE_SEND_PATH = "/api/v1/messages/send";
|
|
3
|
+
const DEFAULT_RETRY_ATTEMPTS = 3;
|
|
4
|
+
const REDACT_KEY_PATTERN = /api[-_]?key|secret|token|password|authorization|cookie|signature|credential/i;
|
|
5
|
+
// 判断日志字段名是否属于敏感字段,输入对象 key,输出是否需要脱敏。
|
|
6
|
+
function shouldRedactKey(key) {
|
|
7
|
+
return REDACT_KEY_PATTERN.test(key);
|
|
8
|
+
}
|
|
9
|
+
// 递归脱敏日志对象,输入任意值,输出不包含密钥类字段明文的副本。
|
|
10
|
+
function redactForLog(value) {
|
|
11
|
+
if (Array.isArray(value)) {
|
|
12
|
+
return value.map((item) => redactForLog(item));
|
|
13
|
+
}
|
|
14
|
+
if (!value || typeof value !== "object") {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [
|
|
18
|
+
key,
|
|
19
|
+
shouldRedactKey(key) ? "[REDACTED]" : redactForLog(item),
|
|
20
|
+
]));
|
|
21
|
+
}
|
|
22
|
+
// 归一化 SDK API 地址,输入宿主注入的 base URL,输出无尾部斜杠的字符串。
|
|
23
|
+
function normalizeBaseUrl(value) {
|
|
24
|
+
return value.replace(/\/+$/, "");
|
|
25
|
+
}
|
|
26
|
+
// 拼接 mail-service 请求地址,输入 base URL 和路径,输出最终请求 URL。
|
|
27
|
+
function buildMailServiceUrl(apiUrl, path) {
|
|
28
|
+
return `${normalizeBaseUrl(apiUrl)}${path}`;
|
|
29
|
+
}
|
|
30
|
+
// 从未知 JSON 中读取字符串字段,输入对象和字段名,输出字符串或空字符串。
|
|
31
|
+
function readStringField(value, key) {
|
|
32
|
+
if (!value || typeof value !== "object")
|
|
33
|
+
return "";
|
|
34
|
+
const item = value[key];
|
|
35
|
+
return typeof item === "string" ? item : "";
|
|
36
|
+
}
|
|
37
|
+
// 从邮件服务失败响应体中提取兼容错误信息,输入原始文本或 JSON,输出可抛出的错误摘要。
|
|
38
|
+
function getMailServiceErrorMessage(responseBody) {
|
|
39
|
+
if (!responseBody) {
|
|
40
|
+
return "Unknown error";
|
|
41
|
+
}
|
|
42
|
+
if (typeof responseBody !== "string") {
|
|
43
|
+
const code = readStringField(responseBody, "code");
|
|
44
|
+
const error = readStringField(responseBody, "error") || readStringField(responseBody, "message");
|
|
45
|
+
if (code || error) {
|
|
46
|
+
return code ? `${code}: ${error || "Unknown error"}` : error;
|
|
47
|
+
}
|
|
48
|
+
return "Unknown error";
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const json = JSON.parse(responseBody);
|
|
52
|
+
const code = readStringField(json, "code");
|
|
53
|
+
const error = readStringField(json, "error") || readStringField(json, "message");
|
|
54
|
+
if (code || error) {
|
|
55
|
+
return code ? `${code}: ${error || "Unknown error"}` : error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return responseBody;
|
|
60
|
+
}
|
|
61
|
+
return responseBody;
|
|
62
|
+
}
|
|
63
|
+
// 解析邮件服务响应文本,输入 fetch response,输出原始文本和可选 JSON。
|
|
64
|
+
async function parseMailServiceResponse(response) {
|
|
65
|
+
const rawText = await response.text().catch(() => "");
|
|
66
|
+
if (!rawText) {
|
|
67
|
+
return { rawText, json: null };
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
return { rawText, json: JSON.parse(rawText) };
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return { rawText, json: null };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// 构造邮件服务请求体,输入 SDK 配置和发送参数,输出项目隔离后的协议 body。
|
|
77
|
+
function buildSendMailBody(config, input) {
|
|
78
|
+
const senderKey = input.senderKey?.trim() || config.defaultSenderKey?.trim() || undefined;
|
|
79
|
+
const { senderKey: _inputSenderKey, skipRecipientPolicies, ...safeInput } = input;
|
|
80
|
+
return {
|
|
81
|
+
...safeInput,
|
|
82
|
+
...(senderKey ? { senderKey } : {}),
|
|
83
|
+
...(skipRecipientPolicies === true ? { skipRecipientPolicies: true } : {}),
|
|
84
|
+
projectKey: config.projectKey,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// 调用一次 mail-service 发送接口,输入 SDK 配置和发送参数,输出单次尝试结构化结果。
|
|
88
|
+
async function runMailServiceAttempt(config, input) {
|
|
89
|
+
const url = buildMailServiceUrl(config.apiUrl, MAIL_SERVICE_SEND_PATH);
|
|
90
|
+
const body = buildSendMailBody(config, input);
|
|
91
|
+
const fetchImpl = config.fetchImpl ?? globalThis.fetch;
|
|
92
|
+
config.logInfo?.({
|
|
93
|
+
msg: "mail-service request",
|
|
94
|
+
data: {
|
|
95
|
+
operation: "sendMail",
|
|
96
|
+
method: "POST",
|
|
97
|
+
path: MAIL_SERVICE_SEND_PATH,
|
|
98
|
+
body: redactForLog(body),
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
try {
|
|
102
|
+
const response = await fetchImpl(url, {
|
|
103
|
+
method: "POST",
|
|
104
|
+
headers: {
|
|
105
|
+
"Content-Type": "application/json",
|
|
106
|
+
"x-mail-service-api-key": config.apiKey,
|
|
107
|
+
},
|
|
108
|
+
body: JSON.stringify(body),
|
|
109
|
+
});
|
|
110
|
+
const parsed = await parseMailServiceResponse(response);
|
|
111
|
+
if (!response.ok) {
|
|
112
|
+
return {
|
|
113
|
+
ok: false,
|
|
114
|
+
status: response.status,
|
|
115
|
+
url,
|
|
116
|
+
code: "HTTP_ERROR",
|
|
117
|
+
message: getMailServiceErrorMessage(parsed.json ?? parsed.rawText),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (!parsed.json || typeof parsed.json !== "object") {
|
|
121
|
+
return {
|
|
122
|
+
ok: false,
|
|
123
|
+
status: response.status,
|
|
124
|
+
url,
|
|
125
|
+
code: "PARSE_ERROR",
|
|
126
|
+
message: "sendMail response parse error",
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (parsed.json.ok !== true) {
|
|
130
|
+
return {
|
|
131
|
+
ok: false,
|
|
132
|
+
status: response.status,
|
|
133
|
+
url,
|
|
134
|
+
code: "MAIL_SERVICE_PROTOCOL_ERROR",
|
|
135
|
+
message: getMailServiceErrorMessage(parsed.json),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
ok: true,
|
|
140
|
+
data: parsed.json,
|
|
141
|
+
status: response.status,
|
|
142
|
+
url,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return {
|
|
147
|
+
ok: false,
|
|
148
|
+
url,
|
|
149
|
+
code: "NETWORK_ERROR",
|
|
150
|
+
message: error instanceof Error ? error.message : String(error),
|
|
151
|
+
error,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// 根据最终失败结果生成通知摘要,输入失败结果和尝试次数,输出宿主项目可转发的通知对象。
|
|
156
|
+
function createFailureNotification(result, attempts) {
|
|
157
|
+
return {
|
|
158
|
+
service: "mail-service",
|
|
159
|
+
operation: "sendMail",
|
|
160
|
+
method: "POST",
|
|
161
|
+
url: result.url,
|
|
162
|
+
status: result.status,
|
|
163
|
+
code: result.code,
|
|
164
|
+
attempts,
|
|
165
|
+
message: result.message,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// 记录 mail-service 单次失败摘要,输入失败结果和尝试次数,副作用是调用宿主错误日志钩子。
|
|
169
|
+
function logAttemptFailure(config, result, attempt) {
|
|
170
|
+
config.logError?.({
|
|
171
|
+
msg: "mail-service request failed",
|
|
172
|
+
data: {
|
|
173
|
+
service: "mail-service",
|
|
174
|
+
operation: "sendMail",
|
|
175
|
+
method: "POST",
|
|
176
|
+
url: result.url,
|
|
177
|
+
status: result.status,
|
|
178
|
+
code: result.code,
|
|
179
|
+
attempts: attempt,
|
|
180
|
+
message: result.message,
|
|
181
|
+
},
|
|
182
|
+
error: result.error,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
// 调用 mail-service 发送接口并按配置重试,输入发送参数,输出成功数据或最终抛错。
|
|
186
|
+
async function requestSendMail(config, input) {
|
|
187
|
+
const retryAttempts = Math.max(1, config.retryAttempts ?? DEFAULT_RETRY_ATTEMPTS);
|
|
188
|
+
let finalFailure = null;
|
|
189
|
+
for (let attempt = 1; attempt <= retryAttempts; attempt += 1) {
|
|
190
|
+
const result = await runMailServiceAttempt(config, input);
|
|
191
|
+
if (result.ok === true) {
|
|
192
|
+
return result.data;
|
|
193
|
+
}
|
|
194
|
+
finalFailure = result;
|
|
195
|
+
logAttemptFailure(config, result, attempt);
|
|
196
|
+
}
|
|
197
|
+
const failure = createFailureNotification(finalFailure, retryAttempts);
|
|
198
|
+
await config.onFailure?.(failure);
|
|
199
|
+
throw new Error(`mail-service send failed (${failure.status ?? "unknown"}): ${failure.message}`);
|
|
200
|
+
}
|
|
201
|
+
// 创建 mail-service SDK 实例,输入宿主项目注入配置,输出不依赖 process.env 的事务邮件方法。
|
|
202
|
+
export function createMailServiceSdk(config) {
|
|
203
|
+
// 发送事务邮件,输入收件人、内容、消息类型和可选幂等信息,输出 mail-service 投递结果。
|
|
204
|
+
async function sendMail(input) {
|
|
205
|
+
return requestSendMail(config, input);
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
sendMail,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@joedeanvapi/mail-service-sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Typed mail-service transactional send SDK generated from the mail-service contract.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"generate": "tsx scripts/generate-contract.ts",
|
|
20
|
+
"check:publish-safety": "tsx scripts/check-publish-safety.ts",
|
|
21
|
+
"pretest": "npm run build",
|
|
22
|
+
"test": "tsx --test tests/*.test.ts",
|
|
23
|
+
"prebuild": "npm run generate",
|
|
24
|
+
"build": "tsc -p tsconfig.build.json",
|
|
25
|
+
"typecheck": "npm run generate && tsc --noEmit",
|
|
26
|
+
"prepublishOnly": "npm run build && npm run check:publish-safety"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
}
|
|
31
|
+
}
|