@develit-io/backend-sdk 12.4.0 → 12.5.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/index.d.mts +28 -13
- package/dist/index.d.ts +28 -13
- package/dist/index.mjs +24 -12
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -40,6 +40,7 @@ declare const structuredAddressSchema: z$1.ZodObject<{
|
|
|
40
40
|
city: z$1.ZodOptional<z$1.ZodString>;
|
|
41
41
|
postalCode: z$1.ZodOptional<z$1.ZodString>;
|
|
42
42
|
countryCode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
43
|
+
IM: "IM";
|
|
43
44
|
AF: "AF";
|
|
44
45
|
AL: "AL";
|
|
45
46
|
DZ: "DZ";
|
|
@@ -129,7 +130,6 @@ declare const structuredAddressSchema: z$1.ZodObject<{
|
|
|
129
130
|
IR: "IR";
|
|
130
131
|
IQ: "IQ";
|
|
131
132
|
IE: "IE";
|
|
132
|
-
IM: "IM";
|
|
133
133
|
IL: "IL";
|
|
134
134
|
IT: "IT";
|
|
135
135
|
CI: "CI";
|
|
@@ -330,6 +330,7 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
330
330
|
city: z$1.ZodOptional<z$1.ZodString>;
|
|
331
331
|
postalCode: z$1.ZodOptional<z$1.ZodString>;
|
|
332
332
|
countryCode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
333
|
+
IM: "IM";
|
|
333
334
|
AF: "AF";
|
|
334
335
|
AL: "AL";
|
|
335
336
|
DZ: "DZ";
|
|
@@ -419,7 +420,6 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
419
420
|
IR: "IR";
|
|
420
421
|
IQ: "IQ";
|
|
421
422
|
IE: "IE";
|
|
422
|
-
IM: "IM";
|
|
423
423
|
IL: "IL";
|
|
424
424
|
IT: "IT";
|
|
425
425
|
CI: "CI";
|
|
@@ -602,6 +602,7 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
602
602
|
AVAX: "AVAX";
|
|
603
603
|
}>>;
|
|
604
604
|
countryCode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
605
|
+
IM: "IM";
|
|
605
606
|
AF: "AF";
|
|
606
607
|
AL: "AL";
|
|
607
608
|
DZ: "DZ";
|
|
@@ -691,7 +692,6 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
691
692
|
IR: "IR";
|
|
692
693
|
IQ: "IQ";
|
|
693
694
|
IE: "IE";
|
|
694
|
-
IM: "IM";
|
|
695
695
|
IL: "IL";
|
|
696
696
|
IT: "IT";
|
|
697
697
|
CI: "CI";
|
|
@@ -833,7 +833,7 @@ declare const bankAccount: {
|
|
|
833
833
|
swiftBic: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
834
834
|
bicCor: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
835
835
|
currency: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilder<["CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX", ...("CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX")[]]>>;
|
|
836
|
-
countryCode: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilder<["AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HK" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "
|
|
836
|
+
countryCode: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilder<["IM" | "AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HK" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "US" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW", ...("IM" | "AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HK" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "US" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW")[]]>>;
|
|
837
837
|
routingNumber: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
838
838
|
sortCode: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
839
839
|
clabe: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
@@ -1267,8 +1267,10 @@ declare class DatabaseTransaction<TAuditAction = string> {
|
|
|
1267
1267
|
declare const DLQ_ALERT_DEFAULT_MIN_SIZE = 50;
|
|
1268
1268
|
declare const DLQ_ALERT_DEFAULT_MAX_INTERVAL = 21600;
|
|
1269
1269
|
/**
|
|
1270
|
-
* A DLQ is any queue whose name
|
|
1271
|
-
* suffix Cloudflare appends
|
|
1270
|
+
* A DLQ is any queue whose name ends in `-dlq` or carries `-dlq` as a token
|
|
1271
|
+
* before the environment suffix Cloudflare appends (e.g. `...-dlq-production`).
|
|
1272
|
+
* Matches `-dlq` as a token rather than a bare substring, so names that merely
|
|
1273
|
+
* contain it (e.g. `orders-dlqx`) are not misclassified as DLQs.
|
|
1272
1274
|
*/
|
|
1273
1275
|
declare function isDlqQueue(queueName: string): boolean;
|
|
1274
1276
|
/**
|
|
@@ -1290,14 +1292,21 @@ type DlqAlert = {
|
|
|
1290
1292
|
subject: string;
|
|
1291
1293
|
text: string;
|
|
1292
1294
|
};
|
|
1295
|
+
/** Minimal shape of a dead-lettered message used to build a safe alert. */
|
|
1296
|
+
type DlqMessageInfo = {
|
|
1297
|
+
id?: string;
|
|
1298
|
+
attempts?: number;
|
|
1299
|
+
body: unknown;
|
|
1300
|
+
};
|
|
1293
1301
|
/**
|
|
1294
|
-
* Builds the alert subject + plain-text body
|
|
1295
|
-
*
|
|
1296
|
-
*
|
|
1302
|
+
* Builds the alert subject + plain-text body for dead-lettered messages.
|
|
1303
|
+
*
|
|
1304
|
+
* SAFETY: emits only non-sensitive identifiers (`eventType`, `eventSignal`,
|
|
1305
|
+
* `metadata.entityId`/`correlationId`, message `id`, `attempts`) — never the
|
|
1306
|
+
* raw payload, which for FX/payment events holds PII and financial data. Use
|
|
1307
|
+
* the identifiers to look the full record up via access-controlled tooling.
|
|
1297
1308
|
*/
|
|
1298
|
-
declare function buildDlqAlert(queueName: string, messages: ReadonlyArray<
|
|
1299
|
-
body: unknown;
|
|
1300
|
-
}>): DlqAlert;
|
|
1309
|
+
declare function buildDlqAlert(queueName: string, messages: ReadonlyArray<DlqMessageInfo>): DlqAlert;
|
|
1301
1310
|
type HandleDlqBatchOptions = {
|
|
1302
1311
|
/** Comma-separated recipient list (e.g. from an env var). */
|
|
1303
1312
|
recipientsRaw: string | undefined;
|
|
@@ -1313,6 +1322,12 @@ type HandleDlqBatchOptions = {
|
|
|
1313
1322
|
}) => Promise<{
|
|
1314
1323
|
error?: unknown;
|
|
1315
1324
|
}>;
|
|
1325
|
+
/**
|
|
1326
|
+
* Optional custom alert formatter. Defaults to `buildDlqAlert` (safe —
|
|
1327
|
+
* identifiers only). Override only if you deliberately need a different
|
|
1328
|
+
* format; take care not to include sensitive payload.
|
|
1329
|
+
*/
|
|
1330
|
+
formatAlert?: (queueName: string, messages: ReadonlyArray<DlqMessageInfo>) => DlqAlert;
|
|
1316
1331
|
/** Alert immediately once a batch reaches this size. Default 50. */
|
|
1317
1332
|
minSize?: number;
|
|
1318
1333
|
/** Min seconds between alerts for the same queue while batches are small. Default 21600. */
|
|
@@ -1487,4 +1502,4 @@ type AsyncMethod<TArgs extends unknown[] = unknown[], TResult = unknown> = (...a
|
|
|
1487
1502
|
declare function cloudflareQueue<TArgs extends unknown[] = unknown[], TResult = unknown>(options: WithRetryCounterOptions): (target: unknown, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<AsyncMethod<TArgs, TResult>>) => void;
|
|
1488
1503
|
|
|
1489
1504
|
export { DLQ_ALERT_DEFAULT_MAX_INTERVAL, DLQ_ALERT_DEFAULT_MIN_SIZE, DatabaseTransaction, ENVIRONMENT, RPCResponse, USER_ROLES, action, asNonEmpty, bankAccount, bankAccountMetadataSchema, base, bicSchema, buildDlqAlert, buildMultiFilterConditions, buildRangeFilterConditions, buildSearchConditions, calculateExponentialBackoff, chunkQueueMessages, cloudflareQueue, composeWranglerBase, createAuditLogWriter, createInsertSchema, createInternalError, createPatchSchema, createSelectSchema, createUpdateSchema, defineCommand, derivePortFromId, develitWorker, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getDrizzleD1Config, getLocalD1DatabaseIdFromWrangler, getSecret, handleAction, handleDlqBatch, ibanSchema, isDlqQueue, isInternalError, nullToOptional, optionalToNull, paginationQuerySchema, paginationSchema, parseDlqAlertRecipients, pushToQueue, queryInChunks, redact, resolveColumn, service, shouldAlertDlq, structuredAddressSchema, useFetch, useResult, useResultSync, uuidv4, uuidv5, workflowInstanceStatusSchema };
|
|
1490
|
-
export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, BankAccountMetadata, BaseEvent, BuildSearchOptions, Command, CommandLogPayload, DevelitWorkerMethods, DlqAlert, Environment, GatewayResponse, HandleDlqBatchOptions, IRPCResponse, IdempotencyContextVariables, IdentityContextVariables, InternalError, InternalErrorResponseStatus, Project, RequestLog, ResponseLog, ShouldAlertDlqParams, StructuredAddress, UserRole, ValidatedInput, WorkflowInstanceStatus };
|
|
1505
|
+
export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, BankAccountMetadata, BaseEvent, BuildSearchOptions, Command, CommandLogPayload, DevelitWorkerMethods, DlqAlert, DlqMessageInfo, Environment, GatewayResponse, HandleDlqBatchOptions, IRPCResponse, IdempotencyContextVariables, IdentityContextVariables, InternalError, InternalErrorResponseStatus, Project, RequestLog, ResponseLog, ShouldAlertDlqParams, StructuredAddress, UserRole, ValidatedInput, WorkflowInstanceStatus };
|
package/dist/index.d.ts
CHANGED
|
@@ -40,6 +40,7 @@ declare const structuredAddressSchema: z$1.ZodObject<{
|
|
|
40
40
|
city: z$1.ZodOptional<z$1.ZodString>;
|
|
41
41
|
postalCode: z$1.ZodOptional<z$1.ZodString>;
|
|
42
42
|
countryCode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
43
|
+
IM: "IM";
|
|
43
44
|
AF: "AF";
|
|
44
45
|
AL: "AL";
|
|
45
46
|
DZ: "DZ";
|
|
@@ -129,7 +130,6 @@ declare const structuredAddressSchema: z$1.ZodObject<{
|
|
|
129
130
|
IR: "IR";
|
|
130
131
|
IQ: "IQ";
|
|
131
132
|
IE: "IE";
|
|
132
|
-
IM: "IM";
|
|
133
133
|
IL: "IL";
|
|
134
134
|
IT: "IT";
|
|
135
135
|
CI: "CI";
|
|
@@ -330,6 +330,7 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
330
330
|
city: z$1.ZodOptional<z$1.ZodString>;
|
|
331
331
|
postalCode: z$1.ZodOptional<z$1.ZodString>;
|
|
332
332
|
countryCode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
333
|
+
IM: "IM";
|
|
333
334
|
AF: "AF";
|
|
334
335
|
AL: "AL";
|
|
335
336
|
DZ: "DZ";
|
|
@@ -419,7 +420,6 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
419
420
|
IR: "IR";
|
|
420
421
|
IQ: "IQ";
|
|
421
422
|
IE: "IE";
|
|
422
|
-
IM: "IM";
|
|
423
423
|
IL: "IL";
|
|
424
424
|
IT: "IT";
|
|
425
425
|
CI: "CI";
|
|
@@ -602,6 +602,7 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
602
602
|
AVAX: "AVAX";
|
|
603
603
|
}>>;
|
|
604
604
|
countryCode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
605
|
+
IM: "IM";
|
|
605
606
|
AF: "AF";
|
|
606
607
|
AL: "AL";
|
|
607
608
|
DZ: "DZ";
|
|
@@ -691,7 +692,6 @@ declare const bankAccountMetadataSchema: z$1.ZodObject<{
|
|
|
691
692
|
IR: "IR";
|
|
692
693
|
IQ: "IQ";
|
|
693
694
|
IE: "IE";
|
|
694
|
-
IM: "IM";
|
|
695
695
|
IL: "IL";
|
|
696
696
|
IT: "IT";
|
|
697
697
|
CI: "CI";
|
|
@@ -833,7 +833,7 @@ declare const bankAccount: {
|
|
|
833
833
|
swiftBic: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
834
834
|
bicCor: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
835
835
|
currency: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilder<["CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX", ...("CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX")[]]>>;
|
|
836
|
-
countryCode: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilder<["AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HK" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "
|
|
836
|
+
countryCode: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilder<["IM" | "AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HK" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "US" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW", ...("IM" | "AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HK" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "US" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW")[]]>>;
|
|
837
837
|
routingNumber: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
838
838
|
sortCode: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
839
839
|
clabe: drizzle_orm_sqlite_core.SQLiteTextBuilder<[string, ...string[]]>;
|
|
@@ -1267,8 +1267,10 @@ declare class DatabaseTransaction<TAuditAction = string> {
|
|
|
1267
1267
|
declare const DLQ_ALERT_DEFAULT_MIN_SIZE = 50;
|
|
1268
1268
|
declare const DLQ_ALERT_DEFAULT_MAX_INTERVAL = 21600;
|
|
1269
1269
|
/**
|
|
1270
|
-
* A DLQ is any queue whose name
|
|
1271
|
-
* suffix Cloudflare appends
|
|
1270
|
+
* A DLQ is any queue whose name ends in `-dlq` or carries `-dlq` as a token
|
|
1271
|
+
* before the environment suffix Cloudflare appends (e.g. `...-dlq-production`).
|
|
1272
|
+
* Matches `-dlq` as a token rather than a bare substring, so names that merely
|
|
1273
|
+
* contain it (e.g. `orders-dlqx`) are not misclassified as DLQs.
|
|
1272
1274
|
*/
|
|
1273
1275
|
declare function isDlqQueue(queueName: string): boolean;
|
|
1274
1276
|
/**
|
|
@@ -1290,14 +1292,21 @@ type DlqAlert = {
|
|
|
1290
1292
|
subject: string;
|
|
1291
1293
|
text: string;
|
|
1292
1294
|
};
|
|
1295
|
+
/** Minimal shape of a dead-lettered message used to build a safe alert. */
|
|
1296
|
+
type DlqMessageInfo = {
|
|
1297
|
+
id?: string;
|
|
1298
|
+
attempts?: number;
|
|
1299
|
+
body: unknown;
|
|
1300
|
+
};
|
|
1293
1301
|
/**
|
|
1294
|
-
* Builds the alert subject + plain-text body
|
|
1295
|
-
*
|
|
1296
|
-
*
|
|
1302
|
+
* Builds the alert subject + plain-text body for dead-lettered messages.
|
|
1303
|
+
*
|
|
1304
|
+
* SAFETY: emits only non-sensitive identifiers (`eventType`, `eventSignal`,
|
|
1305
|
+
* `metadata.entityId`/`correlationId`, message `id`, `attempts`) — never the
|
|
1306
|
+
* raw payload, which for FX/payment events holds PII and financial data. Use
|
|
1307
|
+
* the identifiers to look the full record up via access-controlled tooling.
|
|
1297
1308
|
*/
|
|
1298
|
-
declare function buildDlqAlert(queueName: string, messages: ReadonlyArray<
|
|
1299
|
-
body: unknown;
|
|
1300
|
-
}>): DlqAlert;
|
|
1309
|
+
declare function buildDlqAlert(queueName: string, messages: ReadonlyArray<DlqMessageInfo>): DlqAlert;
|
|
1301
1310
|
type HandleDlqBatchOptions = {
|
|
1302
1311
|
/** Comma-separated recipient list (e.g. from an env var). */
|
|
1303
1312
|
recipientsRaw: string | undefined;
|
|
@@ -1313,6 +1322,12 @@ type HandleDlqBatchOptions = {
|
|
|
1313
1322
|
}) => Promise<{
|
|
1314
1323
|
error?: unknown;
|
|
1315
1324
|
}>;
|
|
1325
|
+
/**
|
|
1326
|
+
* Optional custom alert formatter. Defaults to `buildDlqAlert` (safe —
|
|
1327
|
+
* identifiers only). Override only if you deliberately need a different
|
|
1328
|
+
* format; take care not to include sensitive payload.
|
|
1329
|
+
*/
|
|
1330
|
+
formatAlert?: (queueName: string, messages: ReadonlyArray<DlqMessageInfo>) => DlqAlert;
|
|
1316
1331
|
/** Alert immediately once a batch reaches this size. Default 50. */
|
|
1317
1332
|
minSize?: number;
|
|
1318
1333
|
/** Min seconds between alerts for the same queue while batches are small. Default 21600. */
|
|
@@ -1487,4 +1502,4 @@ type AsyncMethod<TArgs extends unknown[] = unknown[], TResult = unknown> = (...a
|
|
|
1487
1502
|
declare function cloudflareQueue<TArgs extends unknown[] = unknown[], TResult = unknown>(options: WithRetryCounterOptions): (target: unknown, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<AsyncMethod<TArgs, TResult>>) => void;
|
|
1488
1503
|
|
|
1489
1504
|
export { DLQ_ALERT_DEFAULT_MAX_INTERVAL, DLQ_ALERT_DEFAULT_MIN_SIZE, DatabaseTransaction, ENVIRONMENT, RPCResponse, USER_ROLES, action, asNonEmpty, bankAccount, bankAccountMetadataSchema, base, bicSchema, buildDlqAlert, buildMultiFilterConditions, buildRangeFilterConditions, buildSearchConditions, calculateExponentialBackoff, chunkQueueMessages, cloudflareQueue, composeWranglerBase, createAuditLogWriter, createInsertSchema, createInternalError, createPatchSchema, createSelectSchema, createUpdateSchema, defineCommand, derivePortFromId, develitWorker, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getDrizzleD1Config, getLocalD1DatabaseIdFromWrangler, getSecret, handleAction, handleDlqBatch, ibanSchema, isDlqQueue, isInternalError, nullToOptional, optionalToNull, paginationQuerySchema, paginationSchema, parseDlqAlertRecipients, pushToQueue, queryInChunks, redact, resolveColumn, service, shouldAlertDlq, structuredAddressSchema, useFetch, useResult, useResultSync, uuidv4, uuidv5, workflowInstanceStatusSchema };
|
|
1490
|
-
export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, BankAccountMetadata, BaseEvent, BuildSearchOptions, Command, CommandLogPayload, DevelitWorkerMethods, DlqAlert, Environment, GatewayResponse, HandleDlqBatchOptions, IRPCResponse, IdempotencyContextVariables, IdentityContextVariables, InternalError, InternalErrorResponseStatus, Project, RequestLog, ResponseLog, ShouldAlertDlqParams, StructuredAddress, UserRole, ValidatedInput, WorkflowInstanceStatus };
|
|
1505
|
+
export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, BankAccountMetadata, BaseEvent, BuildSearchOptions, Command, CommandLogPayload, DevelitWorkerMethods, DlqAlert, DlqMessageInfo, Environment, GatewayResponse, HandleDlqBatchOptions, IRPCResponse, IdempotencyContextVariables, IdentityContextVariables, InternalError, InternalErrorResponseStatus, Project, RequestLog, ResponseLog, ShouldAlertDlqParams, StructuredAddress, UserRole, ValidatedInput, WorkflowInstanceStatus };
|
package/dist/index.mjs
CHANGED
|
@@ -700,7 +700,7 @@ const defineCommand = (handler) => {
|
|
|
700
700
|
const DLQ_ALERT_DEFAULT_MIN_SIZE = 50;
|
|
701
701
|
const DLQ_ALERT_DEFAULT_MAX_INTERVAL = 21600;
|
|
702
702
|
function isDlqQueue(queueName) {
|
|
703
|
-
return
|
|
703
|
+
return /-dlq(?:-|$)/.test(queueName);
|
|
704
704
|
}
|
|
705
705
|
function parseDlqAlertRecipients(raw) {
|
|
706
706
|
if (!raw) return [];
|
|
@@ -719,20 +719,29 @@ function shouldAlertDlq({
|
|
|
719
719
|
const suppress = batchSize < minSize && secondsSinceLastAlert < maxInterval;
|
|
720
720
|
return !suppress;
|
|
721
721
|
}
|
|
722
|
+
const asString = (value) => typeof value === "string" ? value : void 0;
|
|
722
723
|
function buildDlqAlert(queueName, messages) {
|
|
723
724
|
const summary = messages.map((message, index) => {
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
725
|
+
const body = typeof message.body === "object" && message.body !== null ? message.body : void 0;
|
|
726
|
+
const metadata = body && typeof body.metadata === "object" && body.metadata !== null ? body.metadata : void 0;
|
|
727
|
+
const fields = [
|
|
728
|
+
["eventType", asString(body?.eventType)],
|
|
729
|
+
["eventSignal", asString(body?.eventSignal)],
|
|
730
|
+
["entityId", asString(metadata?.entityId)],
|
|
731
|
+
["correlationId", asString(metadata?.correlationId)],
|
|
732
|
+
["id", message.id],
|
|
733
|
+
[
|
|
734
|
+
"attempts",
|
|
735
|
+
message.attempts === void 0 ? void 0 : String(message.attempts)
|
|
736
|
+
]
|
|
737
|
+
];
|
|
738
|
+
const known = fields.filter(([, value]) => value !== void 0);
|
|
739
|
+
const label = known.length ? known.map(([key, value]) => `${key}=${value}`).join(" ") : "(no safe identifiers available)";
|
|
740
|
+
return `#${index + 1} ${label}`;
|
|
741
|
+
}).join("\n");
|
|
733
742
|
return {
|
|
734
743
|
subject: `\u{1F534} DLQ events in ${queueName} (${messages.length})`,
|
|
735
|
-
text: `${messages.length} dead-lettered message(s) on queue "${queueName}".
|
|
744
|
+
text: `${messages.length} dead-lettered message(s) on queue "${queueName}". Identifiers only \u2014 no payload.
|
|
736
745
|
|
|
737
746
|
${summary}`
|
|
738
747
|
};
|
|
@@ -765,7 +774,10 @@ async function handleDlqBatch(batch, opts) {
|
|
|
765
774
|
batch.ackAll();
|
|
766
775
|
return;
|
|
767
776
|
}
|
|
768
|
-
const { subject, text } =
|
|
777
|
+
const { subject, text } = (opts.formatAlert ?? buildDlqAlert)(
|
|
778
|
+
queueName,
|
|
779
|
+
batch.messages
|
|
780
|
+
);
|
|
769
781
|
try {
|
|
770
782
|
const { error } = await opts.sendAlert({ recipients, subject, text });
|
|
771
783
|
if (error) throw error;
|