@shware/http 1.0.8 → 1.1.1
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/error/parse.cjs +1 -1
- package/dist/error/parse.cjs.map +1 -1
- package/dist/error/parse.mjs +1 -1
- package/dist/error/parse.mjs.map +1 -1
- package/dist/hono/handler.cjs +1 -1
- package/dist/hono/handler.cjs.map +1 -1
- package/dist/hono/handler.d.cts +2 -2
- package/dist/hono/handler.d.ts +2 -2
- package/dist/hono/handler.mjs +1 -1
- package/dist/hono/handler.mjs.map +1 -1
- package/dist/hono/index.d.cts +1 -1
- package/dist/hono/index.d.ts +1 -1
- package/dist/hono/validator.cjs +3 -3
- package/dist/hono/validator.cjs.map +1 -1
- package/dist/hono/validator.mjs +3 -3
- package/dist/hono/validator.mjs.map +1 -1
- package/dist/index.cjs +12 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +12 -1
- package/dist/index.mjs.map +1 -1
- package/dist/response.cjs +14 -0
- package/dist/response.cjs.map +1 -1
- package/dist/response.d.cts +5 -2
- package/dist/response.d.ts +5 -2
- package/dist/response.mjs +11 -0
- package/dist/response.mjs.map +1 -1
- package/dist/vaild.cjs.map +1 -1
- package/dist/vaild.mjs.map +1 -1
- package/package.json +6 -2
package/dist/error/parse.cjs
CHANGED
|
@@ -23,8 +23,8 @@ __export(parse_exports, {
|
|
|
23
23
|
getErrorMessage: () => getErrorMessage
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(parse_exports);
|
|
26
|
-
var import_detail = require("./detail.cjs");
|
|
27
26
|
var import_string = require("../utils/string.cjs");
|
|
27
|
+
var import_detail = require("./detail.cjs");
|
|
28
28
|
function getErrorMessage(data, t) {
|
|
29
29
|
if (typeof data !== "object" || data === null || !("error" in data)) {
|
|
30
30
|
console.error("Unknown API error:", data);
|
package/dist/error/parse.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '../utils/string';\nimport { DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\n/**\n * @example For axios:\n *\n * const { t } = useTranslation('error');\n *\n * const { message } = getErrorMessage(error.response.data, t);\n * toast.error(message);\n */\nexport function getErrorMessage<Ns extends Namespace = DefaultNamespace, KPrefix = undefined>(\n data: unknown,\n t: TFunction<Ns, KPrefix>\n): { reason: string; message: string } {\n // 0. unknown error\n if (typeof data !== 'object' || data === null || !('error' in data)) {\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n }\n\n const { error } = data as ErrorBody;\n\n // 1. from server via Accept-Language header or lng param\n const localizedMessage = error.details.find((d) => d.type === DetailType.LOCALIZED_MESSAGE);\n if (localizedMessage) return { reason: 'LOCALIZED_MESSAGE', message: localizedMessage.message };\n\n // 2. from business logic error\n const errorInfo = error.details.find((d) => d.type === DetailType.ERROR_INFO);\n if (errorInfo) {\n return {\n reason: errorInfo.reason,\n message: t(errorInfo.reason, errorInfo.metadata),\n };\n }\n\n // 3. error message in english\n if (hasText(error.message)) return { reason: 'ERROR_MESSAGE', message: error.message };\n\n // 4. from server via status code\n if (error.status) return { reason: error.status, message: t(error.status) };\n\n // 5. unknown error\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AACxB,oBAA2B;AAYpB,SAAS,gBACd,MACA,GACqC;AAErC,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,OAAO;AACnE,YAAQ,MAAM,sBAAsB,IAAI;AACxC,WAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AAAA,EACpD;AAEA,QAAM,EAAE,MAAM,IAAI;AAGlB,QAAM,mBAAmB,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,yBAAW,iBAAiB;AAC1F,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,yBAAW,UAAU;AAC5E,MAAI,WAAW;AACb,WAAO;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,SAAS,EAAE,UAAU,QAAQ,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF;AAGA,UAAI,uBAAQ,MAAM,OAAO,EAAG,QAAO,EAAE,QAAQ,iBAAiB,SAAS,MAAM,QAAQ;AAGrF,MAAI,MAAM,OAAQ,QAAO,EAAE,QAAQ,MAAM,QAAQ,SAAS,EAAE,MAAM,MAAM,EAAE;AAG1E,UAAQ,MAAM,sBAAsB,IAAI;AACxC,SAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AACpD;","names":[]}
|
package/dist/error/parse.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/error/parse.ts
|
|
2
|
-
import { DetailType } from "./detail.mjs";
|
|
3
2
|
import { hasText } from "../utils/string.mjs";
|
|
3
|
+
import { DetailType } from "./detail.mjs";
|
|
4
4
|
function getErrorMessage(data, t) {
|
|
5
5
|
if (typeof data !== "object" || data === null || !("error" in data)) {
|
|
6
6
|
console.error("Unknown API error:", data);
|
package/dist/error/parse.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '../utils/string';\nimport { DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\n/**\n * @example For axios:\n *\n * const { t } = useTranslation('error');\n *\n * const { message } = getErrorMessage(error.response.data, t);\n * toast.error(message);\n */\nexport function getErrorMessage<Ns extends Namespace = DefaultNamespace, KPrefix = undefined>(\n data: unknown,\n t: TFunction<Ns, KPrefix>\n): { reason: string; message: string } {\n // 0. unknown error\n if (typeof data !== 'object' || data === null || !('error' in data)) {\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n }\n\n const { error } = data as ErrorBody;\n\n // 1. from server via Accept-Language header or lng param\n const localizedMessage = error.details.find((d) => d.type === DetailType.LOCALIZED_MESSAGE);\n if (localizedMessage) return { reason: 'LOCALIZED_MESSAGE', message: localizedMessage.message };\n\n // 2. from business logic error\n const errorInfo = error.details.find((d) => d.type === DetailType.ERROR_INFO);\n if (errorInfo) {\n return {\n reason: errorInfo.reason,\n message: t(errorInfo.reason, errorInfo.metadata),\n };\n }\n\n // 3. error message in english\n if (hasText(error.message)) return { reason: 'ERROR_MESSAGE', message: error.message };\n\n // 4. from server via status code\n if (error.status) return { reason: error.status, message: t(error.status) };\n\n // 5. unknown error\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n}\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAYpB,SAAS,gBACd,MACA,GACqC;AAErC,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,OAAO;AACnE,YAAQ,MAAM,sBAAsB,IAAI;AACxC,WAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AAAA,EACpD;AAEA,QAAM,EAAE,MAAM,IAAI;AAGlB,QAAM,mBAAmB,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,iBAAiB;AAC1F,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,UAAU;AAC5E,MAAI,WAAW;AACb,WAAO;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,SAAS,EAAE,UAAU,QAAQ,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF;AAGA,MAAI,QAAQ,MAAM,OAAO,EAAG,QAAO,EAAE,QAAQ,iBAAiB,SAAS,MAAM,QAAQ;AAGrF,MAAI,MAAM,OAAQ,QAAO,EAAE,QAAQ,MAAM,QAAQ,SAAS,EAAE,MAAM,MAAM,EAAE;AAG1E,UAAQ,MAAM,sBAAsB,IAAI;AACxC,SAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AACpD;","names":[]}
|
package/dist/hono/handler.cjs
CHANGED
|
@@ -24,8 +24,8 @@ __export(handler_exports, {
|
|
|
24
24
|
isAxiosError: () => isAxiosError
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(handler_exports);
|
|
27
|
-
var import_status = require("../error/status.cjs");
|
|
28
27
|
var import_detail = require("../error/detail.cjs");
|
|
28
|
+
var import_status = require("../error/status.cjs");
|
|
29
29
|
function isAxiosError(payload) {
|
|
30
30
|
return payload !== null && typeof payload === "object" && "isAxiosError" in payload && payload.isAxiosError === true;
|
|
31
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hono/handler.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/hono/handler.ts"],"sourcesContent":["import { Details } from '../error/detail';\nimport { Status, StatusError } from '../error/status';\nimport type { AxiosError } from 'axios';\nimport type { Context } from 'hono';\nimport type { RequestIdVariables } from 'hono/request-id';\nimport type { HTTPResponseError, Bindings } from 'hono/types';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\n\ntype Env = {\n Variables: RequestIdVariables;\n Bindings?: Bindings;\n};\n\nexport function isAxiosError(payload: any): payload is AxiosError {\n return (\n payload !== null &&\n typeof payload === 'object' &&\n 'isAxiosError' in payload &&\n payload.isAxiosError === true\n );\n}\n\nexport function errorHandler<E extends Env = any>(\n error: Error | HTTPResponseError,\n c: Context<E>\n): Response | Promise<Response> {\n const requestId = c.get('requestId');\n const servingData = `${c.req.method}: ${c.req.path}`;\n const details = Details.new().requestInfo({ requestId, servingData });\n\n if (error instanceof StatusError) {\n error.body?.error?.details?.push(...details.list);\n return c.json(error.body, error.status as ContentfulStatusCode);\n }\n\n if (error instanceof SyntaxError) {\n if (/^Cannot convert .* to a BigInt$/.test(error.message)) {\n return Status.invalidArgument(`Invalid number. ${error.message}`).response(details);\n }\n }\n\n if (isAxiosError(error)) {\n console.error({\n status: error.status,\n message: error.message,\n request: {\n method: error.config?.method,\n url: error.config?.url,\n data: error.config?.data,\n },\n response: { data: error.response?.data },\n });\n return Status.internal('Axios error').response(details);\n }\n\n console.error(error);\n return Status.internal('Unknown error').response(details);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AACxB,oBAAoC;AAY7B,SAAS,aAAa,SAAqC;AAChE,SACE,YAAY,QACZ,OAAO,YAAY,YACnB,kBAAkB,WAClB,QAAQ,iBAAiB;AAE7B;AAEO,SAAS,aACd,OACA,GAC8B;AAC9B,QAAM,YAAY,EAAE,IAAI,WAAW;AACnC,QAAM,cAAc,GAAG,EAAE,IAAI,MAAM,KAAK,EAAE,IAAI,IAAI;AAClD,QAAM,UAAU,sBAAQ,IAAI,EAAE,YAAY,EAAE,WAAW,YAAY,CAAC;AAEpE,MAAI,iBAAiB,2BAAa;AAChC,UAAM,MAAM,OAAO,SAAS,KAAK,GAAG,QAAQ,IAAI;AAChD,WAAO,EAAE,KAAK,MAAM,MAAM,MAAM,MAA8B;AAAA,EAChE;AAEA,MAAI,iBAAiB,aAAa;AAChC,QAAI,kCAAkC,KAAK,MAAM,OAAO,GAAG;AACzD,aAAO,qBAAO,gBAAgB,mBAAmB,MAAM,OAAO,EAAE,EAAE,SAAS,OAAO;AAAA,IACpF;AAAA,EACF;AAEA,MAAI,aAAa,KAAK,GAAG;AACvB,YAAQ,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,SAAS;AAAA,QACP,QAAQ,MAAM,QAAQ;AAAA,QACtB,KAAK,MAAM,QAAQ;AAAA,QACnB,MAAM,MAAM,QAAQ;AAAA,MACtB;AAAA,MACA,UAAU,EAAE,MAAM,MAAM,UAAU,KAAK;AAAA,IACzC,CAAC;AACD,WAAO,qBAAO,SAAS,aAAa,EAAE,SAAS,OAAO;AAAA,EACxD;AAEA,UAAQ,MAAM,KAAK;AACnB,SAAO,qBAAO,SAAS,eAAe,EAAE,SAAS,OAAO;AAC1D;","names":[]}
|
package/dist/hono/handler.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { AxiosError } from 'axios';
|
|
1
2
|
import { Context } from 'hono';
|
|
2
|
-
import { Bindings, HTTPResponseError } from 'hono/types';
|
|
3
3
|
import { RequestIdVariables } from 'hono/request-id';
|
|
4
|
-
import {
|
|
4
|
+
import { Bindings, HTTPResponseError } from 'hono/types';
|
|
5
5
|
|
|
6
6
|
type Env = {
|
|
7
7
|
Variables: RequestIdVariables;
|
package/dist/hono/handler.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { AxiosError } from 'axios';
|
|
1
2
|
import { Context } from 'hono';
|
|
2
|
-
import { Bindings, HTTPResponseError } from 'hono/types';
|
|
3
3
|
import { RequestIdVariables } from 'hono/request-id';
|
|
4
|
-
import {
|
|
4
|
+
import { Bindings, HTTPResponseError } from 'hono/types';
|
|
5
5
|
|
|
6
6
|
type Env = {
|
|
7
7
|
Variables: RequestIdVariables;
|
package/dist/hono/handler.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/hono/handler.ts
|
|
2
|
-
import { Status, StatusError } from "../error/status.mjs";
|
|
3
2
|
import { Details } from "../error/detail.mjs";
|
|
3
|
+
import { Status, StatusError } from "../error/status.mjs";
|
|
4
4
|
function isAxiosError(payload) {
|
|
5
5
|
return payload !== null && typeof payload === "object" && "isAxiosError" in payload && payload.isAxiosError === true;
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hono/handler.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/hono/handler.ts"],"sourcesContent":["import { Details } from '../error/detail';\nimport { Status, StatusError } from '../error/status';\nimport type { AxiosError } from 'axios';\nimport type { Context } from 'hono';\nimport type { RequestIdVariables } from 'hono/request-id';\nimport type { HTTPResponseError, Bindings } from 'hono/types';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\n\ntype Env = {\n Variables: RequestIdVariables;\n Bindings?: Bindings;\n};\n\nexport function isAxiosError(payload: any): payload is AxiosError {\n return (\n payload !== null &&\n typeof payload === 'object' &&\n 'isAxiosError' in payload &&\n payload.isAxiosError === true\n );\n}\n\nexport function errorHandler<E extends Env = any>(\n error: Error | HTTPResponseError,\n c: Context<E>\n): Response | Promise<Response> {\n const requestId = c.get('requestId');\n const servingData = `${c.req.method}: ${c.req.path}`;\n const details = Details.new().requestInfo({ requestId, servingData });\n\n if (error instanceof StatusError) {\n error.body?.error?.details?.push(...details.list);\n return c.json(error.body, error.status as ContentfulStatusCode);\n }\n\n if (error instanceof SyntaxError) {\n if (/^Cannot convert .* to a BigInt$/.test(error.message)) {\n return Status.invalidArgument(`Invalid number. ${error.message}`).response(details);\n }\n }\n\n if (isAxiosError(error)) {\n console.error({\n status: error.status,\n message: error.message,\n request: {\n method: error.config?.method,\n url: error.config?.url,\n data: error.config?.data,\n },\n response: { data: error.response?.data },\n });\n return Status.internal('Axios error').response(details);\n }\n\n console.error(error);\n return Status.internal('Unknown error').response(details);\n}\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAAS,QAAQ,mBAAmB;AAY7B,SAAS,aAAa,SAAqC;AAChE,SACE,YAAY,QACZ,OAAO,YAAY,YACnB,kBAAkB,WAClB,QAAQ,iBAAiB;AAE7B;AAEO,SAAS,aACd,OACA,GAC8B;AAC9B,QAAM,YAAY,EAAE,IAAI,WAAW;AACnC,QAAM,cAAc,GAAG,EAAE,IAAI,MAAM,KAAK,EAAE,IAAI,IAAI;AAClD,QAAM,UAAU,QAAQ,IAAI,EAAE,YAAY,EAAE,WAAW,YAAY,CAAC;AAEpE,MAAI,iBAAiB,aAAa;AAChC,UAAM,MAAM,OAAO,SAAS,KAAK,GAAG,QAAQ,IAAI;AAChD,WAAO,EAAE,KAAK,MAAM,MAAM,MAAM,MAA8B;AAAA,EAChE;AAEA,MAAI,iBAAiB,aAAa;AAChC,QAAI,kCAAkC,KAAK,MAAM,OAAO,GAAG;AACzD,aAAO,OAAO,gBAAgB,mBAAmB,MAAM,OAAO,EAAE,EAAE,SAAS,OAAO;AAAA,IACpF;AAAA,EACF;AAEA,MAAI,aAAa,KAAK,GAAG;AACvB,YAAQ,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,SAAS;AAAA,QACP,QAAQ,MAAM,QAAQ;AAAA,QACtB,KAAK,MAAM,QAAQ;AAAA,QACnB,MAAM,MAAM,QAAQ;AAAA,MACtB;AAAA,MACA,UAAU,EAAE,MAAM,MAAM,UAAU,KAAK;AAAA,IACzC,CAAC;AACD,WAAO,OAAO,SAAS,aAAa,EAAE,SAAS,OAAO;AAAA,EACxD;AAEA,UAAQ,MAAM,KAAK;AACnB,SAAO,OAAO,SAAS,eAAe,EAAE,SAAS,OAAO;AAC1D;","names":[]}
|
package/dist/hono/index.d.cts
CHANGED
package/dist/hono/index.d.ts
CHANGED
package/dist/hono/validator.cjs
CHANGED
|
@@ -24,10 +24,10 @@ __export(validator_exports, {
|
|
|
24
24
|
zValidator: () => zValidator
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(validator_exports);
|
|
27
|
-
var import_v4_mini = require("zod/v4-mini");
|
|
28
27
|
var import_validator = require("hono/validator");
|
|
29
|
-
var
|
|
28
|
+
var import_v4_mini = require("zod/v4-mini");
|
|
30
29
|
var import_detail = require("../error/detail.cjs");
|
|
30
|
+
var import_status = require("../error/status.cjs");
|
|
31
31
|
function zValidator(target, schema) {
|
|
32
32
|
return (0, import_validator.validator)(target, async (value) => {
|
|
33
33
|
const result = await schema.safeParseAsync(value);
|
|
@@ -49,7 +49,7 @@ var bigintId = (0, import_v4_mini.pipe)(
|
|
|
49
49
|
}
|
|
50
50
|
try {
|
|
51
51
|
return BigInt(input);
|
|
52
|
-
} catch
|
|
52
|
+
} catch {
|
|
53
53
|
const message = `Parse bigint id: ${input} failed`;
|
|
54
54
|
ctx.issues.push({ code: "custom", input, message });
|
|
55
55
|
return import_v4_mini.NEVER;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hono/validator.ts"],"sourcesContent":["import { transform, pipe, string, NEVER } from 'zod/v4-mini';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/hono/validator.ts"],"sourcesContent":["import { validator } from 'hono/validator';\nimport { transform, pipe, string, NEVER } from 'zod/v4-mini';\nimport { Details } from '../error/detail';\nimport { Status } from '../error/status';\nimport type { BadRequest } from '../error/detail';\nimport type { ValidationTargets } from 'hono';\nimport type { output as outputV4, ZodType } from 'zod/v4';\nimport type { output as outputMini, ZodMiniType } from 'zod/v4-mini';\n\nexport function zValidator<S extends ZodType | ZodMiniType>(\n target: keyof ValidationTargets,\n schema: S\n) {\n return validator(target, async (value) => {\n const result = await schema.safeParseAsync(value);\n if (result.success) return result.data as S extends ZodType ? outputV4<S> : outputMini<S>;\n\n const fieldViolations: BadRequest['fieldViolations'] = result.error.issues.map(\n ({ path, message }) => ({ field: path.join('.'), description: message })\n );\n const details = Details.new().badRequest({ fieldViolations });\n throw Status.invalidArgument().error(details);\n });\n}\n\nexport const bigintId = pipe(\n string(),\n transform((input, ctx) => {\n if (!/^(0|[1-9]\\d{0,19})$/.test(input)) {\n const message = `Invalid bigint id: ${input}`;\n ctx.issues.push({ code: 'custom', input, message });\n return NEVER;\n }\n try {\n return BigInt(input);\n } catch {\n const message = `Parse bigint id: ${input} failed`;\n ctx.issues.push({ code: 'custom', input, message });\n return NEVER;\n }\n })\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0B;AAC1B,qBAA+C;AAC/C,oBAAwB;AACxB,oBAAuB;AAMhB,SAAS,WACd,QACA,QACA;AACA,aAAO,4BAAU,QAAQ,OAAO,UAAU;AACxC,UAAM,SAAS,MAAM,OAAO,eAAe,KAAK;AAChD,QAAI,OAAO,QAAS,QAAO,OAAO;AAElC,UAAM,kBAAiD,OAAO,MAAM,OAAO;AAAA,MACzE,CAAC,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,KAAK,KAAK,GAAG,GAAG,aAAa,QAAQ;AAAA,IACxE;AACA,UAAM,UAAU,sBAAQ,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC;AAC5D,UAAM,qBAAO,gBAAgB,EAAE,MAAM,OAAO;AAAA,EAC9C,CAAC;AACH;AAEO,IAAM,eAAW;AAAA,MACtB,uBAAO;AAAA,MACP,0BAAU,CAAC,OAAO,QAAQ;AACxB,QAAI,CAAC,sBAAsB,KAAK,KAAK,GAAG;AACtC,YAAM,UAAU,sBAAsB,KAAK;AAC3C,UAAI,OAAO,KAAK,EAAE,MAAM,UAAU,OAAO,QAAQ,CAAC;AAClD,aAAO;AAAA,IACT;AACA,QAAI;AACF,aAAO,OAAO,KAAK;AAAA,IACrB,QAAQ;AACN,YAAM,UAAU,oBAAoB,KAAK;AACzC,UAAI,OAAO,KAAK,EAAE,MAAM,UAAU,OAAO,QAAQ,CAAC;AAClD,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]}
|
package/dist/hono/validator.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/hono/validator.ts
|
|
2
|
-
import { transform, pipe, string, NEVER } from "zod/v4-mini";
|
|
3
2
|
import { validator } from "hono/validator";
|
|
4
|
-
import {
|
|
3
|
+
import { transform, pipe, string, NEVER } from "zod/v4-mini";
|
|
5
4
|
import { Details } from "../error/detail.mjs";
|
|
5
|
+
import { Status } from "../error/status.mjs";
|
|
6
6
|
function zValidator(target, schema) {
|
|
7
7
|
return validator(target, async (value) => {
|
|
8
8
|
const result = await schema.safeParseAsync(value);
|
|
@@ -24,7 +24,7 @@ var bigintId = pipe(
|
|
|
24
24
|
}
|
|
25
25
|
try {
|
|
26
26
|
return BigInt(input);
|
|
27
|
-
} catch
|
|
27
|
+
} catch {
|
|
28
28
|
const message = `Parse bigint id: ${input} failed`;
|
|
29
29
|
ctx.issues.push({ code: "custom", input, message });
|
|
30
30
|
return NEVER;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hono/validator.ts"],"sourcesContent":["import { transform, pipe, string, NEVER } from 'zod/v4-mini';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/hono/validator.ts"],"sourcesContent":["import { validator } from 'hono/validator';\nimport { transform, pipe, string, NEVER } from 'zod/v4-mini';\nimport { Details } from '../error/detail';\nimport { Status } from '../error/status';\nimport type { BadRequest } from '../error/detail';\nimport type { ValidationTargets } from 'hono';\nimport type { output as outputV4, ZodType } from 'zod/v4';\nimport type { output as outputMini, ZodMiniType } from 'zod/v4-mini';\n\nexport function zValidator<S extends ZodType | ZodMiniType>(\n target: keyof ValidationTargets,\n schema: S\n) {\n return validator(target, async (value) => {\n const result = await schema.safeParseAsync(value);\n if (result.success) return result.data as S extends ZodType ? outputV4<S> : outputMini<S>;\n\n const fieldViolations: BadRequest['fieldViolations'] = result.error.issues.map(\n ({ path, message }) => ({ field: path.join('.'), description: message })\n );\n const details = Details.new().badRequest({ fieldViolations });\n throw Status.invalidArgument().error(details);\n });\n}\n\nexport const bigintId = pipe(\n string(),\n transform((input, ctx) => {\n if (!/^(0|[1-9]\\d{0,19})$/.test(input)) {\n const message = `Invalid bigint id: ${input}`;\n ctx.issues.push({ code: 'custom', input, message });\n return NEVER;\n }\n try {\n return BigInt(input);\n } catch {\n const message = `Parse bigint id: ${input} failed`;\n ctx.issues.push({ code: 'custom', input, message });\n return NEVER;\n }\n })\n);\n"],"mappings":";AAAA,SAAS,iBAAiB;AAC1B,SAAS,WAAW,MAAM,QAAQ,aAAa;AAC/C,SAAS,eAAe;AACxB,SAAS,cAAc;AAMhB,SAAS,WACd,QACA,QACA;AACA,SAAO,UAAU,QAAQ,OAAO,UAAU;AACxC,UAAM,SAAS,MAAM,OAAO,eAAe,KAAK;AAChD,QAAI,OAAO,QAAS,QAAO,OAAO;AAElC,UAAM,kBAAiD,OAAO,MAAM,OAAO;AAAA,MACzE,CAAC,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,KAAK,KAAK,GAAG,GAAG,aAAa,QAAQ;AAAA,IACxE;AACA,UAAM,UAAU,QAAQ,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC;AAC5D,UAAM,OAAO,gBAAgB,EAAE,MAAM,OAAO;AAAA,EAC9C,CAAC;AACH;AAEO,IAAM,WAAW;AAAA,EACtB,OAAO;AAAA,EACP,UAAU,CAAC,OAAO,QAAQ;AACxB,QAAI,CAAC,sBAAsB,KAAK,KAAK,GAAG;AACtC,YAAM,UAAU,sBAAsB,KAAK;AAC3C,UAAI,OAAO,KAAK,EAAE,MAAM,UAAU,OAAO,QAAQ,CAAC;AAClD,aAAO;AAAA,IACT;AACA,QAAI;AACF,aAAO,OAAO,KAAK;AAAA,IACrB,QAAQ;AACN,YAAM,UAAU,oBAAoB,KAAK;AACzC,UAAI,OAAO,KAAK,EAAE,MAAM,UAAU,OAAO,QAAQ,CAAC;AAClD,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -32,14 +32,19 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
32
32
|
var index_exports = {};
|
|
33
33
|
__export(index_exports, {
|
|
34
34
|
CheckoutCreateError: () => import_error.CheckoutCreateError,
|
|
35
|
+
Cursor: () => import_response.Cursor,
|
|
35
36
|
LoginCanceledError: () => import_error.LoginCanceledError,
|
|
36
37
|
LoginTimeoutError: () => import_error.LoginTimeoutError,
|
|
37
38
|
MAX_LENGTH: () => MAX_LENGTH,
|
|
38
39
|
PurchaseError: () => import_error.PurchaseError,
|
|
39
40
|
TokenBucket: () => import_token_bucket.TokenBucket,
|
|
40
41
|
getErrorMessage: () => import_parse.getErrorMessage,
|
|
42
|
+
getNextPageParam: () => import_response.getNextPageParam,
|
|
43
|
+
getPreviousPageParam: () => import_response.getPreviousPageParam,
|
|
41
44
|
hasText: () => import_string.hasText,
|
|
45
|
+
initialPageParam: () => import_response.initialPageParam,
|
|
42
46
|
invariant: () => import_invariant.invariant,
|
|
47
|
+
pageParamsSchema: () => import_response.pageParamsSchema,
|
|
43
48
|
timing: () => import_timing.timing
|
|
44
49
|
});
|
|
45
50
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -47,9 +52,9 @@ var import_error = require("./error/index.cjs");
|
|
|
47
52
|
__reExport(index_exports, require("./error/detail.cjs"), module.exports);
|
|
48
53
|
__reExport(index_exports, require("./error/status.cjs"), module.exports);
|
|
49
54
|
var import_parse = require("./error/parse.cjs");
|
|
55
|
+
var import_response = require("./response.cjs");
|
|
50
56
|
__reExport(index_exports, require("./vaild.cjs"), module.exports);
|
|
51
57
|
__reExport(index_exports, require("./snowflake.cjs"), module.exports);
|
|
52
|
-
__reExport(index_exports, require("./response.cjs"), module.exports);
|
|
53
58
|
var MAX_LENGTH = __toESM(require("./max-length/index.cjs"), 1);
|
|
54
59
|
var import_string = require("./utils/string.cjs");
|
|
55
60
|
var import_timing = require("./utils/timing.cjs");
|
|
@@ -58,19 +63,23 @@ var import_token_bucket = require("./utils/token-bucket.cjs");
|
|
|
58
63
|
// Annotate the CommonJS export names for ESM import in node:
|
|
59
64
|
0 && (module.exports = {
|
|
60
65
|
CheckoutCreateError,
|
|
66
|
+
Cursor,
|
|
61
67
|
LoginCanceledError,
|
|
62
68
|
LoginTimeoutError,
|
|
63
69
|
MAX_LENGTH,
|
|
64
70
|
PurchaseError,
|
|
65
71
|
TokenBucket,
|
|
66
72
|
getErrorMessage,
|
|
73
|
+
getNextPageParam,
|
|
74
|
+
getPreviousPageParam,
|
|
67
75
|
hasText,
|
|
76
|
+
initialPageParam,
|
|
68
77
|
invariant,
|
|
78
|
+
pageParamsSchema,
|
|
69
79
|
timing,
|
|
70
80
|
...require("./error/detail.cjs"),
|
|
71
81
|
...require("./error/status.cjs"),
|
|
72
82
|
...require("./vaild.cjs"),
|
|
73
|
-
...require("./snowflake.cjs")
|
|
74
|
-
...require("./response.cjs")
|
|
83
|
+
...require("./snowflake.cjs")
|
|
75
84
|
});
|
|
76
85
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @example\n * import { Details, Status } from '@repo/error';\n *\n * Status.adapter = () => new Error('Error');\n *\n * const details = Details.new()\n * .requestInfo({ requestId: '1234567890', servingData: '/v1/tests' })\n * .errorInfo({ reason: 'ACCOUNT_LOCKED' });\n *\n * throw Status.alreadyExists('xxx').error(details);\n */\n\nexport {\n LoginTimeoutError,\n LoginCanceledError,\n CheckoutCreateError,\n PurchaseError,\n} from './error/index';\nexport type {\n NetworkErrorReason,\n StatusErrorReason,\n AuthenticationErrorReason,\n ModerationErrorReason,\n MultipartErrorReason,\n AppErrorReason,\n ErrorReason,\n} from './error/reason';\nexport * from './error/detail';\nexport * from './error/status';\nexport { getErrorMessage } from './error/parse';\n
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @example\n * import { Details, Status } from '@repo/error';\n *\n * Status.adapter = () => new Error('Error');\n *\n * const details = Details.new()\n * .requestInfo({ requestId: '1234567890', servingData: '/v1/tests' })\n * .errorInfo({ reason: 'ACCOUNT_LOCKED' });\n *\n * throw Status.alreadyExists('xxx').error(details);\n */\n\nexport {\n LoginTimeoutError,\n LoginCanceledError,\n CheckoutCreateError,\n PurchaseError,\n} from './error/index';\nexport type {\n NetworkErrorReason,\n StatusErrorReason,\n AuthenticationErrorReason,\n ModerationErrorReason,\n MultipartErrorReason,\n AppErrorReason,\n ErrorReason,\n} from './error/reason';\nexport * from './error/detail';\nexport * from './error/status';\nexport { getErrorMessage } from './error/parse';\nexport {\n pageParamsSchema,\n Cursor,\n initialPageParam,\n getPreviousPageParam,\n getNextPageParam,\n} from './response';\nexport type {\n Empty,\n EntityId,\n Entity,\n Response,\n InitParams,\n NextParams,\n PrevParams,\n PageParams,\n ParentPageParams,\n Page,\n} from './response';\n\nexport * from './vaild';\nexport * from './snowflake';\n\nexport * as MAX_LENGTH from './max-length/index';\nexport { hasText } from './utils/string';\nexport { timing } from './utils/timing';\nexport { invariant } from './utils/invariant';\nexport { TokenBucket, type TokenBucketOptions } from './utils/token-bucket';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,mBAKO;AAUP,0BAAc,+BA5Bd;AA6BA,0BAAc,+BA7Bd;AA8BA,mBAAgC;AAChC,sBAMO;AAcP,0BAAc,wBAnDd;AAoDA,0BAAc,4BApDd;AAsDA,iBAA4B;AAC5B,oBAAwB;AACxB,oBAAuB;AACvB,uBAA0B;AAC1B,0BAAqD;","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -3,14 +3,14 @@ export { AppErrorReason, AuthenticationErrorReason, ErrorReason, ModerationError
|
|
|
3
3
|
export { BadRequest, DebugInfo, Detail, DetailType, Details, ErrorInfo, Help, LocalizedMessage, PreconditionFailure, QuotaFailure, RequestInfo, ResourceInfo, RetryInfo } from './error/detail.cjs';
|
|
4
4
|
export { Code, DEFAULT_MESSAGES, ErrorBody, Status, StatusCode, StatusError } from './error/status.cjs';
|
|
5
5
|
export { getErrorMessage } from './error/parse.cjs';
|
|
6
|
+
export { Cursor, Empty, Entity, EntityId, InitParams, NextParams, Page, PageParams, ParentPageParams, PrevParams, Response, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema } from './response.cjs';
|
|
6
7
|
export { Result, valid } from './vaild.cjs';
|
|
7
8
|
export { UidGenerator, uid } from './snowflake.cjs';
|
|
8
|
-
export { Cursor, Empty, Entity, EntityId, InitParams, NextParams, PageParams, PagedResponse, ParentPageParams, PrevParams, Response, pageParamsSchema } from './response.cjs';
|
|
9
9
|
export { i as MAX_LENGTH } from './index-BnPgRQDl.cjs';
|
|
10
10
|
export { hasText } from './utils/string.cjs';
|
|
11
11
|
export { timing } from './utils/timing.cjs';
|
|
12
12
|
export { invariant } from './utils/invariant.cjs';
|
|
13
13
|
export { TokenBucket, TokenBucketOptions } from './utils/token-bucket.cjs';
|
|
14
14
|
import 'i18next';
|
|
15
|
-
import 'zod/v4-mini';
|
|
16
15
|
import 'zod/v4/core';
|
|
16
|
+
import 'zod/v4-mini';
|
package/dist/index.d.ts
CHANGED
|
@@ -3,14 +3,14 @@ export { AppErrorReason, AuthenticationErrorReason, ErrorReason, ModerationError
|
|
|
3
3
|
export { BadRequest, DebugInfo, Detail, DetailType, Details, ErrorInfo, Help, LocalizedMessage, PreconditionFailure, QuotaFailure, RequestInfo, ResourceInfo, RetryInfo } from './error/detail.js';
|
|
4
4
|
export { Code, DEFAULT_MESSAGES, ErrorBody, Status, StatusCode, StatusError } from './error/status.js';
|
|
5
5
|
export { getErrorMessage } from './error/parse.js';
|
|
6
|
+
export { Cursor, Empty, Entity, EntityId, InitParams, NextParams, Page, PageParams, ParentPageParams, PrevParams, Response, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema } from './response.js';
|
|
6
7
|
export { Result, valid } from './vaild.js';
|
|
7
8
|
export { UidGenerator, uid } from './snowflake.js';
|
|
8
|
-
export { Cursor, Empty, Entity, EntityId, InitParams, NextParams, PageParams, PagedResponse, ParentPageParams, PrevParams, Response, pageParamsSchema } from './response.js';
|
|
9
9
|
export { i as MAX_LENGTH } from './index-BnPgRQDl.js';
|
|
10
10
|
export { hasText } from './utils/string.js';
|
|
11
11
|
export { timing } from './utils/timing.js';
|
|
12
12
|
export { invariant } from './utils/invariant.js';
|
|
13
13
|
export { TokenBucket, TokenBucketOptions } from './utils/token-bucket.js';
|
|
14
14
|
import 'i18next';
|
|
15
|
-
import 'zod/v4-mini';
|
|
16
15
|
import 'zod/v4/core';
|
|
16
|
+
import 'zod/v4-mini';
|
package/dist/index.mjs
CHANGED
|
@@ -8,9 +8,15 @@ import {
|
|
|
8
8
|
export * from "./error/detail.mjs";
|
|
9
9
|
export * from "./error/status.mjs";
|
|
10
10
|
import { getErrorMessage } from "./error/parse.mjs";
|
|
11
|
+
import {
|
|
12
|
+
pageParamsSchema,
|
|
13
|
+
Cursor,
|
|
14
|
+
initialPageParam,
|
|
15
|
+
getPreviousPageParam,
|
|
16
|
+
getNextPageParam
|
|
17
|
+
} from "./response.mjs";
|
|
11
18
|
export * from "./vaild.mjs";
|
|
12
19
|
export * from "./snowflake.mjs";
|
|
13
|
-
export * from "./response.mjs";
|
|
14
20
|
import * as MAX_LENGTH from "./max-length/index.mjs";
|
|
15
21
|
import { hasText } from "./utils/string.mjs";
|
|
16
22
|
import { timing } from "./utils/timing.mjs";
|
|
@@ -18,14 +24,19 @@ import { invariant } from "./utils/invariant.mjs";
|
|
|
18
24
|
import { TokenBucket } from "./utils/token-bucket.mjs";
|
|
19
25
|
export {
|
|
20
26
|
CheckoutCreateError,
|
|
27
|
+
Cursor,
|
|
21
28
|
LoginCanceledError,
|
|
22
29
|
LoginTimeoutError,
|
|
23
30
|
MAX_LENGTH,
|
|
24
31
|
PurchaseError,
|
|
25
32
|
TokenBucket,
|
|
26
33
|
getErrorMessage,
|
|
34
|
+
getNextPageParam,
|
|
35
|
+
getPreviousPageParam,
|
|
27
36
|
hasText,
|
|
37
|
+
initialPageParam,
|
|
28
38
|
invariant,
|
|
39
|
+
pageParamsSchema,
|
|
29
40
|
timing
|
|
30
41
|
};
|
|
31
42
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @example\n * import { Details, Status } from '@repo/error';\n *\n * Status.adapter = () => new Error('Error');\n *\n * const details = Details.new()\n * .requestInfo({ requestId: '1234567890', servingData: '/v1/tests' })\n * .errorInfo({ reason: 'ACCOUNT_LOCKED' });\n *\n * throw Status.alreadyExists('xxx').error(details);\n */\n\nexport {\n LoginTimeoutError,\n LoginCanceledError,\n CheckoutCreateError,\n PurchaseError,\n} from './error/index';\nexport type {\n NetworkErrorReason,\n StatusErrorReason,\n AuthenticationErrorReason,\n ModerationErrorReason,\n MultipartErrorReason,\n AppErrorReason,\n ErrorReason,\n} from './error/reason';\nexport * from './error/detail';\nexport * from './error/status';\nexport { getErrorMessage } from './error/parse';\n
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @example\n * import { Details, Status } from '@repo/error';\n *\n * Status.adapter = () => new Error('Error');\n *\n * const details = Details.new()\n * .requestInfo({ requestId: '1234567890', servingData: '/v1/tests' })\n * .errorInfo({ reason: 'ACCOUNT_LOCKED' });\n *\n * throw Status.alreadyExists('xxx').error(details);\n */\n\nexport {\n LoginTimeoutError,\n LoginCanceledError,\n CheckoutCreateError,\n PurchaseError,\n} from './error/index';\nexport type {\n NetworkErrorReason,\n StatusErrorReason,\n AuthenticationErrorReason,\n ModerationErrorReason,\n MultipartErrorReason,\n AppErrorReason,\n ErrorReason,\n} from './error/reason';\nexport * from './error/detail';\nexport * from './error/status';\nexport { getErrorMessage } from './error/parse';\nexport {\n pageParamsSchema,\n Cursor,\n initialPageParam,\n getPreviousPageParam,\n getNextPageParam,\n} from './response';\nexport type {\n Empty,\n EntityId,\n Entity,\n Response,\n InitParams,\n NextParams,\n PrevParams,\n PageParams,\n ParentPageParams,\n Page,\n} from './response';\n\nexport * from './vaild';\nexport * from './snowflake';\n\nexport * as MAX_LENGTH from './max-length/index';\nexport { hasText } from './utils/string';\nexport { timing } from './utils/timing';\nexport { invariant } from './utils/invariant';\nexport { TokenBucket, type TokenBucketOptions } from './utils/token-bucket';\n"],"mappings":";AAaA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP,cAAc;AACd,cAAc;AACd,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,cAAc;AACd,cAAc;AAEd,YAAY,gBAAgB;AAC5B,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,SAAS,mBAA4C;","names":[]}
|
package/dist/response.cjs
CHANGED
|
@@ -21,10 +21,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var response_exports = {};
|
|
22
22
|
__export(response_exports, {
|
|
23
23
|
Cursor: () => Cursor,
|
|
24
|
+
getNextPageParam: () => getNextPageParam,
|
|
25
|
+
getPreviousPageParam: () => getPreviousPageParam,
|
|
26
|
+
initialPageParam: () => initialPageParam,
|
|
24
27
|
pageParamsSchema: () => pageParamsSchema
|
|
25
28
|
});
|
|
26
29
|
module.exports = __toCommonJS(response_exports);
|
|
27
30
|
var import_v4_mini = require("zod/v4-mini");
|
|
31
|
+
var import_string = require("./utils/string.cjs");
|
|
28
32
|
function pageParamsSchema(max = 100, defaultLimit = 20) {
|
|
29
33
|
return (0, import_v4_mini.object)({
|
|
30
34
|
limit: (0, import_v4_mini._default)(import_v4_mini.coerce.number().check((0, import_v4_mini.int)(), (0, import_v4_mini.minimum)(1), (0, import_v4_mini.maximum)(max)), defaultLimit),
|
|
@@ -49,9 +53,19 @@ var Cursor = {
|
|
|
49
53
|
return value;
|
|
50
54
|
}
|
|
51
55
|
};
|
|
56
|
+
var initialPageParam = { next: "", prev: "" };
|
|
57
|
+
function getPreviousPageParam(first) {
|
|
58
|
+
return (0, import_string.hasText)(first.paging.prev) ? { next: "", prev: first.paging.prev } : null;
|
|
59
|
+
}
|
|
60
|
+
function getNextPageParam(last) {
|
|
61
|
+
return (0, import_string.hasText)(last.paging.next) ? { next: last.paging.next, prev: "" } : null;
|
|
62
|
+
}
|
|
52
63
|
// Annotate the CommonJS export names for ESM import in node:
|
|
53
64
|
0 && (module.exports = {
|
|
54
65
|
Cursor,
|
|
66
|
+
getNextPageParam,
|
|
67
|
+
getPreviousPageParam,
|
|
68
|
+
initialPageParam,
|
|
55
69
|
pageParamsSchema
|
|
56
70
|
});
|
|
57
71
|
//# sourceMappingURL=response.cjs.map
|
package/dist/response.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { object, string, coerce, optional, int, minimum, maximum, _default } from 'zod/v4-mini';\n\nexport type Empty = {};\nexport type EntityId = string | number;\nexport type Entity = { id: EntityId };\n\nexport type Response<T = never> = { data: T };\n\nexport type InitParams = { limit: number; parent?: string };\nexport type NextParams = { limit: number; parent?: string; next: string };\nexport type PrevParams = { limit: number; parent?: string; prev: string };\nexport type PageParams = { limit: number; prev?: string; next?: string };\nexport type ParentPageParams = { limit: number; parent: string; prev?: string; next?: string };\
|
|
1
|
+
{"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { object, string, coerce, optional, int, minimum, maximum, _default } from 'zod/v4-mini';\nimport { hasText } from './utils/string';\n\nexport type Empty = {};\nexport type EntityId = string | number;\nexport type Entity = { id: EntityId };\n\nexport type Response<T = never> = { data: T };\n\nexport type InitParams = { limit: number; parent?: string };\nexport type NextParams = { limit: number; parent?: string; next: string };\nexport type PrevParams = { limit: number; parent?: string; prev: string };\nexport type PageParams = { limit: number; prev?: string; next?: string };\nexport type ParentPageParams = { limit: number; parent: string; prev?: string; next?: string };\nexport type Page<T = never> = { data: T[]; paging: { next: string; prev: string } };\n\nexport function pageParamsSchema(max: number = 100, defaultLimit: number = 20) {\n return object({\n limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),\n prev: optional(string()),\n next: optional(string()),\n });\n}\n\nexport const Cursor = {\n of(prev: bigint | number | string | undefined, next: bigint | number | string | undefined) {\n return { prev: prev ? this.encode(prev) : '', next: next ? this.encode(next) : '' };\n },\n empty() {\n return { prev: '', next: '' };\n },\n encode(id: bigint | number | string): string {\n return Buffer.from(id.toString(), 'utf-8').toString('base64');\n },\n decode<T extends 'bigint' | 'number' | 'string' = 'bigint'>(\n token: string,\n type: T = 'bigint' as T\n ): T extends 'bigint' ? bigint : T extends 'number' ? number : string {\n const value = Buffer.from(token, 'base64').toString('utf-8');\n if (type === 'bigint') return BigInt(value) as any;\n if (type === 'number') return Number(value) as any;\n return value as any;\n },\n};\n\nexport const initialPageParam: Omit<PageParams, 'limit'> = { next: '', prev: '' };\n\nexport function getPreviousPageParam<T = never>(first: Page<T>): Omit<PageParams, 'limit'> | null {\n return hasText(first.paging.prev) ? { next: '', prev: first.paging.prev } : null;\n}\n\nexport function getNextPageParam<T = never>(last: Page<T>): Omit<PageParams, 'limit'> | null {\n return hasText(last.paging.next) ? { next: last.paging.next, prev: '' } : null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAkF;AAClF,oBAAwB;AAejB,SAAS,iBAAiB,MAAc,KAAK,eAAuB,IAAI;AAC7E,aAAO,uBAAO;AAAA,IACZ,WAAO,yBAAS,sBAAO,OAAO,EAAE,UAAM,oBAAI,OAAG,wBAAQ,CAAC,OAAG,wBAAQ,GAAG,CAAC,GAAG,YAAY;AAAA,IACpF,UAAM,6BAAS,uBAAO,CAAC;AAAA,IACvB,UAAM,6BAAS,uBAAO,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,IAAM,SAAS;AAAA,EACpB,GAAG,MAA4C,MAA4C;AACzF,WAAO,EAAE,MAAM,OAAO,KAAK,OAAO,IAAI,IAAI,IAAI,MAAM,OAAO,KAAK,OAAO,IAAI,IAAI,GAAG;AAAA,EACpF;AAAA,EACA,QAAQ;AACN,WAAO,EAAE,MAAM,IAAI,MAAM,GAAG;AAAA,EAC9B;AAAA,EACA,OAAO,IAAsC;AAC3C,WAAO,OAAO,KAAK,GAAG,SAAS,GAAG,OAAO,EAAE,SAAS,QAAQ;AAAA,EAC9D;AAAA,EACA,OACE,OACA,OAAU,UAC0D;AACpE,UAAM,QAAQ,OAAO,KAAK,OAAO,QAAQ,EAAE,SAAS,OAAO;AAC3D,QAAI,SAAS,SAAU,QAAO,OAAO,KAAK;AAC1C,QAAI,SAAS,SAAU,QAAO,OAAO,KAAK;AAC1C,WAAO;AAAA,EACT;AACF;AAEO,IAAM,mBAA8C,EAAE,MAAM,IAAI,MAAM,GAAG;AAEzE,SAAS,qBAAgC,OAAkD;AAChG,aAAO,uBAAQ,MAAM,OAAO,IAAI,IAAI,EAAE,MAAM,IAAI,MAAM,MAAM,OAAO,KAAK,IAAI;AAC9E;AAEO,SAAS,iBAA4B,MAAiD;AAC3F,aAAO,uBAAQ,KAAK,OAAO,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO,MAAM,MAAM,GAAG,IAAI;AAC5E;","names":[]}
|
package/dist/response.d.cts
CHANGED
|
@@ -34,7 +34,7 @@ type ParentPageParams = {
|
|
|
34
34
|
prev?: string;
|
|
35
35
|
next?: string;
|
|
36
36
|
};
|
|
37
|
-
type
|
|
37
|
+
type Page<T = never> = {
|
|
38
38
|
data: T[];
|
|
39
39
|
paging: {
|
|
40
40
|
next: string;
|
|
@@ -58,5 +58,8 @@ declare const Cursor: {
|
|
|
58
58
|
encode(id: bigint | number | string): string;
|
|
59
59
|
decode<T extends "bigint" | "number" | "string" = "bigint">(token: string, type?: T): T extends "bigint" ? bigint : T extends "number" ? number : string;
|
|
60
60
|
};
|
|
61
|
+
declare const initialPageParam: Omit<PageParams, 'limit'>;
|
|
62
|
+
declare function getPreviousPageParam<T = never>(first: Page<T>): Omit<PageParams, 'limit'> | null;
|
|
63
|
+
declare function getNextPageParam<T = never>(last: Page<T>): Omit<PageParams, 'limit'> | null;
|
|
61
64
|
|
|
62
|
-
export { Cursor, type Empty, type Entity, type EntityId, type InitParams, type NextParams, type
|
|
65
|
+
export { Cursor, type Empty, type Entity, type EntityId, type InitParams, type NextParams, type Page, type PageParams, type ParentPageParams, type PrevParams, type Response, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema };
|
package/dist/response.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ type ParentPageParams = {
|
|
|
34
34
|
prev?: string;
|
|
35
35
|
next?: string;
|
|
36
36
|
};
|
|
37
|
-
type
|
|
37
|
+
type Page<T = never> = {
|
|
38
38
|
data: T[];
|
|
39
39
|
paging: {
|
|
40
40
|
next: string;
|
|
@@ -58,5 +58,8 @@ declare const Cursor: {
|
|
|
58
58
|
encode(id: bigint | number | string): string;
|
|
59
59
|
decode<T extends "bigint" | "number" | "string" = "bigint">(token: string, type?: T): T extends "bigint" ? bigint : T extends "number" ? number : string;
|
|
60
60
|
};
|
|
61
|
+
declare const initialPageParam: Omit<PageParams, 'limit'>;
|
|
62
|
+
declare function getPreviousPageParam<T = never>(first: Page<T>): Omit<PageParams, 'limit'> | null;
|
|
63
|
+
declare function getNextPageParam<T = never>(last: Page<T>): Omit<PageParams, 'limit'> | null;
|
|
61
64
|
|
|
62
|
-
export { Cursor, type Empty, type Entity, type EntityId, type InitParams, type NextParams, type
|
|
65
|
+
export { Cursor, type Empty, type Entity, type EntityId, type InitParams, type NextParams, type Page, type PageParams, type ParentPageParams, type PrevParams, type Response, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema };
|
package/dist/response.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// src/response.ts
|
|
2
2
|
import { object, string, coerce, optional, int, minimum, maximum, _default } from "zod/v4-mini";
|
|
3
|
+
import { hasText } from "./utils/string.mjs";
|
|
3
4
|
function pageParamsSchema(max = 100, defaultLimit = 20) {
|
|
4
5
|
return object({
|
|
5
6
|
limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),
|
|
@@ -24,8 +25,18 @@ var Cursor = {
|
|
|
24
25
|
return value;
|
|
25
26
|
}
|
|
26
27
|
};
|
|
28
|
+
var initialPageParam = { next: "", prev: "" };
|
|
29
|
+
function getPreviousPageParam(first) {
|
|
30
|
+
return hasText(first.paging.prev) ? { next: "", prev: first.paging.prev } : null;
|
|
31
|
+
}
|
|
32
|
+
function getNextPageParam(last) {
|
|
33
|
+
return hasText(last.paging.next) ? { next: last.paging.next, prev: "" } : null;
|
|
34
|
+
}
|
|
27
35
|
export {
|
|
28
36
|
Cursor,
|
|
37
|
+
getNextPageParam,
|
|
38
|
+
getPreviousPageParam,
|
|
39
|
+
initialPageParam,
|
|
29
40
|
pageParamsSchema
|
|
30
41
|
};
|
|
31
42
|
//# sourceMappingURL=response.mjs.map
|
package/dist/response.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { object, string, coerce, optional, int, minimum, maximum, _default } from 'zod/v4-mini';\n\nexport type Empty = {};\nexport type EntityId = string | number;\nexport type Entity = { id: EntityId };\n\nexport type Response<T = never> = { data: T };\n\nexport type InitParams = { limit: number; parent?: string };\nexport type NextParams = { limit: number; parent?: string; next: string };\nexport type PrevParams = { limit: number; parent?: string; prev: string };\nexport type PageParams = { limit: number; prev?: string; next?: string };\nexport type ParentPageParams = { limit: number; parent: string; prev?: string; next?: string };\
|
|
1
|
+
{"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { object, string, coerce, optional, int, minimum, maximum, _default } from 'zod/v4-mini';\nimport { hasText } from './utils/string';\n\nexport type Empty = {};\nexport type EntityId = string | number;\nexport type Entity = { id: EntityId };\n\nexport type Response<T = never> = { data: T };\n\nexport type InitParams = { limit: number; parent?: string };\nexport type NextParams = { limit: number; parent?: string; next: string };\nexport type PrevParams = { limit: number; parent?: string; prev: string };\nexport type PageParams = { limit: number; prev?: string; next?: string };\nexport type ParentPageParams = { limit: number; parent: string; prev?: string; next?: string };\nexport type Page<T = never> = { data: T[]; paging: { next: string; prev: string } };\n\nexport function pageParamsSchema(max: number = 100, defaultLimit: number = 20) {\n return object({\n limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),\n prev: optional(string()),\n next: optional(string()),\n });\n}\n\nexport const Cursor = {\n of(prev: bigint | number | string | undefined, next: bigint | number | string | undefined) {\n return { prev: prev ? this.encode(prev) : '', next: next ? this.encode(next) : '' };\n },\n empty() {\n return { prev: '', next: '' };\n },\n encode(id: bigint | number | string): string {\n return Buffer.from(id.toString(), 'utf-8').toString('base64');\n },\n decode<T extends 'bigint' | 'number' | 'string' = 'bigint'>(\n token: string,\n type: T = 'bigint' as T\n ): T extends 'bigint' ? bigint : T extends 'number' ? number : string {\n const value = Buffer.from(token, 'base64').toString('utf-8');\n if (type === 'bigint') return BigInt(value) as any;\n if (type === 'number') return Number(value) as any;\n return value as any;\n },\n};\n\nexport const initialPageParam: Omit<PageParams, 'limit'> = { next: '', prev: '' };\n\nexport function getPreviousPageParam<T = never>(first: Page<T>): Omit<PageParams, 'limit'> | null {\n return hasText(first.paging.prev) ? { next: '', prev: first.paging.prev } : null;\n}\n\nexport function getNextPageParam<T = never>(last: Page<T>): Omit<PageParams, 'limit'> | null {\n return hasText(last.paging.next) ? { next: last.paging.next, prev: '' } : null;\n}\n"],"mappings":";AAAA,SAAS,QAAQ,QAAQ,QAAQ,UAAU,KAAK,SAAS,SAAS,gBAAgB;AAClF,SAAS,eAAe;AAejB,SAAS,iBAAiB,MAAc,KAAK,eAAuB,IAAI;AAC7E,SAAO,OAAO;AAAA,IACZ,OAAO,SAAS,OAAO,OAAO,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,YAAY;AAAA,IACpF,MAAM,SAAS,OAAO,CAAC;AAAA,IACvB,MAAM,SAAS,OAAO,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,IAAM,SAAS;AAAA,EACpB,GAAG,MAA4C,MAA4C;AACzF,WAAO,EAAE,MAAM,OAAO,KAAK,OAAO,IAAI,IAAI,IAAI,MAAM,OAAO,KAAK,OAAO,IAAI,IAAI,GAAG;AAAA,EACpF;AAAA,EACA,QAAQ;AACN,WAAO,EAAE,MAAM,IAAI,MAAM,GAAG;AAAA,EAC9B;AAAA,EACA,OAAO,IAAsC;AAC3C,WAAO,OAAO,KAAK,GAAG,SAAS,GAAG,OAAO,EAAE,SAAS,QAAQ;AAAA,EAC9D;AAAA,EACA,OACE,OACA,OAAU,UAC0D;AACpE,UAAM,QAAQ,OAAO,KAAK,OAAO,QAAQ,EAAE,SAAS,OAAO;AAC3D,QAAI,SAAS,SAAU,QAAO,OAAO,KAAK;AAC1C,QAAI,SAAS,SAAU,QAAO,OAAO,KAAK;AAC1C,WAAO;AAAA,EACT;AACF;AAEO,IAAM,mBAA8C,EAAE,MAAM,IAAI,MAAM,GAAG;AAEzE,SAAS,qBAAgC,OAAkD;AAChG,SAAO,QAAQ,MAAM,OAAO,IAAI,IAAI,EAAE,MAAM,IAAI,MAAM,MAAM,OAAO,KAAK,IAAI;AAC9E;AAEO,SAAS,iBAA4B,MAAiD;AAC3F,SAAO,QAAQ,KAAK,OAAO,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO,MAAM,MAAM,GAAG,IAAI;AAC5E;","names":[]}
|
package/dist/vaild.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/vaild.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../src/vaild.ts"],"sourcesContent":["import { Details, BadRequest } from './error/detail';\nimport { Status } from './error/status';\nimport type { z, ZodMiniType } from 'zod/v4-mini';\n\nexport type Result<S extends ZodMiniType> =\n | { data: z.infer<S>; error: null }\n | { data: null; error: Response };\n\ntype Target = 'json' | 'form' | 'query' | 'param' | 'header' | 'cookie';\n\nasync function getTarget(request: Request, target: Target): Promise<any> {\n switch (target) {\n case 'json':\n return request.json();\n default:\n throw new Error(`Unsupported target: ${target}`);\n }\n}\n\nexport async function valid<S extends ZodMiniType>(\n request: Request,\n target: Target,\n schema: S\n): Promise<Result<S>> {\n const value = await getTarget(request, target);\n const validator = await schema.safeParseAsync(value);\n if (validator.success) return { data: validator.data, error: null };\n const fieldViolations: BadRequest['fieldViolations'] = validator.error.issues.map(\n ({ path, message }) => ({ field: path.join('.'), description: message })\n );\n const details = Details.new().badRequest({ fieldViolations });\n const error = Status.invalidArgument().response(details);\n return { data: null, error };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoC;AACpC,oBAAuB;AASvB,eAAe,UAAU,SAAkB,QAA8B;AACvE,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,QAAQ,KAAK;AAAA,IACtB;AACE,YAAM,IAAI,MAAM,uBAAuB,MAAM,EAAE;AAAA,EACnD;AACF;AAEA,eAAsB,MACpB,SACA,QACA,QACoB;AACpB,QAAM,QAAQ,MAAM,UAAU,SAAS,MAAM;AAC7C,QAAM,YAAY,MAAM,OAAO,eAAe,KAAK;AACnD,MAAI,UAAU,QAAS,QAAO,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;AAClE,QAAM,kBAAiD,UAAU,MAAM,OAAO;AAAA,IAC5E,CAAC,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,KAAK,KAAK,GAAG,GAAG,aAAa,QAAQ;AAAA,EACxE;AACA,QAAM,UAAU,sBAAQ,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC;AAC5D,QAAM,QAAQ,qBAAO,gBAAgB,EAAE,SAAS,OAAO;AACvD,SAAO,EAAE,MAAM,MAAM,MAAM;AAC7B;","names":[]}
|
package/dist/vaild.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/vaild.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../src/vaild.ts"],"sourcesContent":["import { Details, BadRequest } from './error/detail';\nimport { Status } from './error/status';\nimport type { z, ZodMiniType } from 'zod/v4-mini';\n\nexport type Result<S extends ZodMiniType> =\n | { data: z.infer<S>; error: null }\n | { data: null; error: Response };\n\ntype Target = 'json' | 'form' | 'query' | 'param' | 'header' | 'cookie';\n\nasync function getTarget(request: Request, target: Target): Promise<any> {\n switch (target) {\n case 'json':\n return request.json();\n default:\n throw new Error(`Unsupported target: ${target}`);\n }\n}\n\nexport async function valid<S extends ZodMiniType>(\n request: Request,\n target: Target,\n schema: S\n): Promise<Result<S>> {\n const value = await getTarget(request, target);\n const validator = await schema.safeParseAsync(value);\n if (validator.success) return { data: validator.data, error: null };\n const fieldViolations: BadRequest['fieldViolations'] = validator.error.issues.map(\n ({ path, message }) => ({ field: path.join('.'), description: message })\n );\n const details = Details.new().badRequest({ fieldViolations });\n const error = Status.invalidArgument().response(details);\n return { data: null, error };\n}\n"],"mappings":";AAAA,SAAS,eAA2B;AACpC,SAAS,cAAc;AASvB,eAAe,UAAU,SAAkB,QAA8B;AACvE,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,QAAQ,KAAK;AAAA,IACtB;AACE,YAAM,IAAI,MAAM,uBAAuB,MAAM,EAAE;AAAA,EACnD;AACF;AAEA,eAAsB,MACpB,SACA,QACA,QACoB;AACpB,QAAM,QAAQ,MAAM,UAAU,SAAS,MAAM;AAC7C,QAAM,YAAY,MAAM,OAAO,eAAe,KAAK;AACnD,MAAI,UAAU,QAAS,QAAO,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;AAClE,QAAM,kBAAiD,UAAU,MAAM,OAAO;AAAA,IAC5E,CAAC,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,KAAK,KAAK,GAAG,GAAG,aAAa,QAAQ;AAAA,EACxE;AACA,QAAM,UAAU,QAAQ,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC;AAC5D,QAAM,QAAQ,OAAO,gBAAgB,EAAE,SAAS,OAAO;AACvD,SAAO,EAAE,MAAM,MAAM,MAAM;AAC7B;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shware/http",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "tsc --watch",
|
|
8
8
|
"build": "tsup",
|
|
9
|
-
"test": "jest"
|
|
9
|
+
"test": "jest",
|
|
10
|
+
"check-types": "tsc --noEmit",
|
|
11
|
+
"lint": "eslint . --fix --ext .js,.jsx,.ts,.tsx"
|
|
10
12
|
},
|
|
11
13
|
"repository": {
|
|
12
14
|
"type": "git",
|
|
@@ -43,6 +45,8 @@
|
|
|
43
45
|
"dist"
|
|
44
46
|
],
|
|
45
47
|
"devDependencies": {
|
|
48
|
+
"@repo/eslint-config": "workspace:*",
|
|
49
|
+
"@repo/typescript-config": "workspace:*",
|
|
46
50
|
"@types/jest": "^30.0.0",
|
|
47
51
|
"@types/node": "^24.0.10",
|
|
48
52
|
"@types/react": "^19.1.8",
|