@kalutskii/foundation 0.3.1 → 0.3.3
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.ts +9 -20
- package/dist/index.js +5 -13
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import * as zod from 'zod';
|
|
4
|
-
import zod__default, { z, ZodNumber, ZodType } from 'zod';
|
|
5
|
-
import * as hono_utils_types from 'hono/utils/types';
|
|
6
|
-
import * as zod_v4_core from 'zod/v4/core';
|
|
7
|
-
import * as zod_v3 from 'zod/v3';
|
|
1
|
+
import { ErrorHandler, MiddlewareHandler, Context, TypedResponse } from 'hono';
|
|
2
|
+
import z$1, { z, ZodNumber } from 'zod';
|
|
8
3
|
import { Locale } from 'date-fns';
|
|
9
4
|
import { SymmetricAlgorithm } from 'hono/utils/jwt/jwa';
|
|
10
5
|
|
|
@@ -92,12 +87,6 @@ declare function respond<T extends object = Record<string, never>, S extends Suc
|
|
|
92
87
|
data?: T;
|
|
93
88
|
}): Response & TypedResponse<APISuccess<SerializeDates<T>> | APIError, S, 'json'>;
|
|
94
89
|
|
|
95
|
-
/** Wrapper around the standard hono/zod-validator, throws HTTPException on validation failure. */
|
|
96
|
-
declare const zQuery: <T extends ZodType, Target extends keyof ValidationTargets>(target: Target, schema: T) => hono.MiddlewareHandler<hono.Env, string, {
|
|
97
|
-
in: (undefined extends (T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) ? true : false) extends true ? { [K in Target]?: ([T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never] extends [ValidationTargets[K]] ? ValidationTargets[K] & (T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) : [Exclude<T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never, undefined>] extends [never] ? {} : [Exclude<T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never, undefined>] extends [object] ? undefined extends (T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) ? ((T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) & undefined) | (((Exclude<T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never, (T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) & undefined> extends infer T_3 ? { [K_4 in keyof T_3]: ([Exclude<T_3[K_4], undefined>] extends [string] ? [string & Exclude<T_3[K_4], undefined>] extends [hono_utils_types.UnionToIntersection<string & Exclude<T_3[K_4], undefined>>] ? false : true : false) extends true ? T_3[K_4] : ([unknown] extends [T_3[K_4]] ? false : undefined extends T_3[K_4] ? true : false) extends true ? T_3[K_4] : Target_1 extends "form" ? T$1 | T$1[] : Target_1 extends "query" ? string | string[] : Target_1 extends "param" ? string : Target_1 extends "header" ? string : Target_1 extends "cookie" ? string : unknown; } : never) extends infer T_2 ? { [K_3 in keyof T_2]: T_2[K_3]; } : never) extends infer T_1 ? { [K_2 in keyof T_1]: T_1[K_2]; } : never) : (((T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) extends infer T_6 ? { [K_7 in keyof T_6]: ([Exclude<T_6[K_7], undefined>] extends [string] ? [string & Exclude<T_6[K_7], undefined>] extends [hono_utils_types.UnionToIntersection<string & Exclude<T_6[K_7], undefined>>] ? false : true : false) extends true ? T_6[K_7] : ([unknown] extends [T_6[K_7]] ? false : undefined extends T_6[K_7] ? true : false) extends true ? T_6[K_7] : Target_1 extends "form" ? T$1 | T$1[] : Target_1 extends "query" ? string | string[] : Target_1 extends "param" ? string : Target_1 extends "header" ? string : Target_1 extends "cookie" ? string : unknown; } : never) extends infer T_5 ? { [K_6 in keyof T_5]: T_5[K_6]; } : never) extends infer T_4 ? { [K_5 in keyof T_4]: T_4[K_5]; } : never : {}) | undefined; } : { [K_1 in Target]: [T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never] extends [ValidationTargets[K_1]] ? ValidationTargets[K_1] & (T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) : [Exclude<T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never, undefined>] extends [never] ? {} : [Exclude<T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never, undefined>] extends [object] ? undefined extends (T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) ? ((T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) & undefined) | (((Exclude<T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never, (T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) & undefined> extends infer T_3 ? { [K_5 in keyof T_3]: ([Exclude<T_3[K_5], undefined>] extends [string] ? [string & Exclude<T_3[K_5], undefined>] extends [hono_utils_types.UnionToIntersection<string & Exclude<T_3[K_5], undefined>>] ? false : true : false) extends true ? T_3[K_5] : ([unknown] extends [T_3[K_5]] ? false : undefined extends T_3[K_5] ? true : false) extends true ? T_3[K_5] : Target_1 extends "form" ? T$1 | T$1[] : Target_1 extends "query" ? string | string[] : Target_1 extends "param" ? string : Target_1 extends "header" ? string : Target_1 extends "cookie" ? string : unknown; } : never) extends infer T_2 ? { [K_4 in keyof T_2]: T_2[K_4]; } : never) extends infer T_1 ? { [K_3 in keyof T_1]: T_1[K_3]; } : never) : (((T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.input<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.input<T> : never) extends infer T_6 ? { [K_8 in keyof T_6]: ([Exclude<T_6[K_8], undefined>] extends [string] ? [string & Exclude<T_6[K_8], undefined>] extends [hono_utils_types.UnionToIntersection<string & Exclude<T_6[K_8], undefined>>] ? false : true : false) extends true ? T_6[K_8] : ([unknown] extends [T_6[K_8]] ? false : undefined extends T_6[K_8] ? true : false) extends true ? T_6[K_8] : Target_1 extends "form" ? T$1 | T$1[] : Target_1 extends "query" ? string | string[] : Target_1 extends "param" ? string : Target_1 extends "header" ? string : Target_1 extends "cookie" ? string : unknown; } : never) extends infer T_5 ? { [K_7 in keyof T_5]: T_5[K_7]; } : never) extends infer T_4 ? { [K_6 in keyof T_4]: T_4[K_6]; } : never : {}; };
|
|
98
|
-
out: { [K_2 in Target]: T extends zod_v3.ZodType<any, zod_v3.ZodTypeDef, any> ? zod_v3.output<T> : T extends zod_v4_core.$ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? zod.infer<T> : never; };
|
|
99
|
-
}, never>;
|
|
100
|
-
|
|
101
90
|
/**
|
|
102
91
|
* Returns the current time in the specified timezone.
|
|
103
92
|
* Example: getZonedTime({ tz: 'America/New_York' }) = new Date('2026-03-15T12:00:00Z')
|
|
@@ -175,26 +164,26 @@ type JWTSignOptions = {
|
|
|
175
164
|
expiresInSeconds?: number;
|
|
176
165
|
};
|
|
177
166
|
|
|
178
|
-
declare class ZodJWTService<TSchema extends
|
|
179
|
-
readonly payloadSchema: TSchema;
|
|
167
|
+
declare class ZodJWTService<TSchema extends z$1.ZodObject<z$1.ZodRawShape>> {
|
|
168
|
+
readonly payloadSchema: TSchema | undefined;
|
|
180
169
|
protected readonly algorithm: SymmetricAlgorithm;
|
|
181
170
|
protected readonly defaultExpirationSeconds: number;
|
|
182
|
-
constructor(payloadSchema
|
|
171
|
+
constructor(payloadSchema?: TSchema, options?: JWTServiceOptions);
|
|
183
172
|
/**
|
|
184
173
|
* Signs a JWT token with the provided payload and secret, using the configured algorithm and expiration settings.
|
|
185
174
|
* Example usage: `const accessToken = await JWTServiceInstance.sign({ userId: 123 }, 'my-secret', { expiresInSeconds: 300 });`
|
|
186
175
|
*/
|
|
187
|
-
sign(payload:
|
|
176
|
+
sign(payload: z$1.infer<TSchema>, secret: string, options?: JWTSignOptions): Promise<string>;
|
|
188
177
|
/**
|
|
189
178
|
* Decodes a JWT token, and validates the payload against the Zod schema.
|
|
190
179
|
* Note: This method does NOT verify the token's signature or check for expiration.
|
|
191
180
|
*/
|
|
192
|
-
decode(token: string): Promise<
|
|
181
|
+
decode(token: string): Promise<z$1.infer<TSchema> | null>;
|
|
193
182
|
/**
|
|
194
183
|
* Verifies and decodes a JWT token using the provided secret and configured algorithm,
|
|
195
184
|
* then validates the payload against the Zod schema, also throws on expired tokens.
|
|
196
185
|
*/
|
|
197
|
-
verifyOrThrow(token: string, secret: string): Promise<
|
|
186
|
+
verifyOrThrow(token: string, secret: string): Promise<z$1.infer<TSchema>>;
|
|
198
187
|
}
|
|
199
188
|
|
|
200
|
-
export { type APIContractData, type APIContractError, type APIContractResult, type APIError, type APISuccess, EXCEPTION_STATUS_CODES, type ExceptionStatusCode, type FetchResult, type JWTServiceOptions, type JWTSignOptions, SUCCESS_STATUS_CODES, type SerializeDates, type SuccessStatusCode, ZodJWTService, asQueryBoolean, asQueryNumber, failure, fetchAndThrow, fetchSafely, formatTime, generateRandomString, getColoredHTTPStatus, getFormattedDate, getFormattedTime, getUTCOffset, getZonedTime, honoLoggingHandler, log, onHandlerError, respond, safeExecute, success
|
|
189
|
+
export { type APIContractData, type APIContractError, type APIContractResult, type APIError, type APISuccess, EXCEPTION_STATUS_CODES, type ExceptionStatusCode, type FetchResult, type JWTServiceOptions, type JWTSignOptions, SUCCESS_STATUS_CODES, type SerializeDates, type SuccessStatusCode, ZodJWTService, asQueryBoolean, asQueryNumber, failure, fetchAndThrow, fetchSafely, formatTime, generateRandomString, getColoredHTTPStatus, getFormattedDate, getFormattedTime, getUTCOffset, getZonedTime, honoLoggingHandler, log, onHandlerError, respond, safeExecute, success };
|
package/dist/index.js
CHANGED
|
@@ -130,17 +130,6 @@ function respond(c, options) {
|
|
|
130
130
|
return c.json(success({ status: options.status, data: options.data ?? {} }), options.status);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
// src/hono/hono.validation.ts
|
|
134
|
-
import { zValidator as zv } from "@hono/zod-validator";
|
|
135
|
-
import { HTTPException as HTTPException2 } from "hono/http-exception";
|
|
136
|
-
var zQuery = (target, schema) => {
|
|
137
|
-
return zv(target, schema, (result, _c) => {
|
|
138
|
-
if (result.success)
|
|
139
|
-
return;
|
|
140
|
-
throw new HTTPException2(400, { message: result.error.message });
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
|
|
144
133
|
// src/utilities/execution.utilities.ts
|
|
145
134
|
async function safeExecute(fn, onError) {
|
|
146
135
|
try {
|
|
@@ -197,6 +186,8 @@ var ZodJWTService = class {
|
|
|
197
186
|
*/
|
|
198
187
|
async decode(token) {
|
|
199
188
|
const { payload } = decodeJWT(token);
|
|
189
|
+
if (!this.payloadSchema)
|
|
190
|
+
return payload;
|
|
200
191
|
const { success: success2, data } = await this.payloadSchema.safeParseAsync(payload);
|
|
201
192
|
return success2 ? data : null;
|
|
202
193
|
}
|
|
@@ -206,6 +197,8 @@ var ZodJWTService = class {
|
|
|
206
197
|
*/
|
|
207
198
|
async verifyOrThrow(token, secret) {
|
|
208
199
|
const payload = await verifyJWT(token, secret, this.algorithm);
|
|
200
|
+
if (!this.payloadSchema)
|
|
201
|
+
return payload;
|
|
209
202
|
return this.payloadSchema.parseAsync(payload);
|
|
210
203
|
}
|
|
211
204
|
};
|
|
@@ -230,6 +223,5 @@ export {
|
|
|
230
223
|
onHandlerError,
|
|
231
224
|
respond,
|
|
232
225
|
safeExecute,
|
|
233
|
-
success
|
|
234
|
-
zQuery
|
|
226
|
+
success
|
|
235
227
|
};
|