@shware/http 2.1.0 → 2.2.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.
Files changed (65) hide show
  1. package/dist/error/parse.cjs +2 -2
  2. package/dist/error/parse.cjs.map +1 -1
  3. package/dist/error/parse.mjs +1 -1
  4. package/dist/error/parse.mjs.map +1 -1
  5. package/dist/hono/validator.d.cts +1 -1
  6. package/dist/hono/validator.d.ts +1 -1
  7. package/dist/index.cjs +0 -18
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +0 -6
  10. package/dist/index.d.ts +0 -6
  11. package/dist/index.mjs +0 -12
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/response.cjs +3 -3
  14. package/dist/response.cjs.map +1 -1
  15. package/dist/response.mjs +1 -1
  16. package/dist/response.mjs.map +1 -1
  17. package/package.json +3 -2
  18. package/dist/utils/__tests__/base62.test.cjs +0 -29
  19. package/dist/utils/__tests__/base62.test.cjs.map +0 -1
  20. package/dist/utils/__tests__/base62.test.d.cts +0 -2
  21. package/dist/utils/__tests__/base62.test.d.ts +0 -2
  22. package/dist/utils/__tests__/base62.test.mjs +0 -27
  23. package/dist/utils/__tests__/base62.test.mjs.map +0 -1
  24. package/dist/utils/__tests__/ip.test.cjs +0 -38
  25. package/dist/utils/__tests__/ip.test.cjs.map +0 -1
  26. package/dist/utils/__tests__/ip.test.d.cts +0 -2
  27. package/dist/utils/__tests__/ip.test.d.ts +0 -2
  28. package/dist/utils/__tests__/ip.test.mjs +0 -36
  29. package/dist/utils/__tests__/ip.test.mjs.map +0 -1
  30. package/dist/utils/base62.cjs +0 -85
  31. package/dist/utils/base62.cjs.map +0 -1
  32. package/dist/utils/base62.d.cts +0 -6
  33. package/dist/utils/base62.d.ts +0 -6
  34. package/dist/utils/base62.mjs +0 -60
  35. package/dist/utils/base62.mjs.map +0 -1
  36. package/dist/utils/fetch.cjs +0 -78
  37. package/dist/utils/fetch.cjs.map +0 -1
  38. package/dist/utils/fetch.d.cts +0 -16
  39. package/dist/utils/fetch.d.ts +0 -16
  40. package/dist/utils/fetch.mjs +0 -53
  41. package/dist/utils/fetch.mjs.map +0 -1
  42. package/dist/utils/invariant.cjs +0 -37
  43. package/dist/utils/invariant.cjs.map +0 -1
  44. package/dist/utils/invariant.d.cts +0 -3
  45. package/dist/utils/invariant.d.ts +0 -3
  46. package/dist/utils/invariant.mjs +0 -12
  47. package/dist/utils/invariant.mjs.map +0 -1
  48. package/dist/utils/promise.cjs +0 -47
  49. package/dist/utils/promise.cjs.map +0 -1
  50. package/dist/utils/promise.d.cts +0 -3
  51. package/dist/utils/promise.d.ts +0 -3
  52. package/dist/utils/promise.mjs +0 -22
  53. package/dist/utils/promise.mjs.map +0 -1
  54. package/dist/utils/string.cjs +0 -33
  55. package/dist/utils/string.cjs.map +0 -1
  56. package/dist/utils/string.d.cts +0 -6
  57. package/dist/utils/string.d.ts +0 -6
  58. package/dist/utils/string.mjs +0 -8
  59. package/dist/utils/string.mjs.map +0 -1
  60. package/dist/utils/token-bucket.cjs +0 -73
  61. package/dist/utils/token-bucket.cjs.map +0 -1
  62. package/dist/utils/token-bucket.d.cts +0 -20
  63. package/dist/utils/token-bucket.d.ts +0 -20
  64. package/dist/utils/token-bucket.mjs +0 -48
  65. package/dist/utils/token-bucket.mjs.map +0 -1
@@ -25,7 +25,7 @@ __export(parse_exports, {
25
25
  getFieldViolations: () => getFieldViolations
26
26
  });
27
27
  module.exports = __toCommonJS(parse_exports);
28
- var import_string = require("../utils/string.cjs");
28
+ var import_utils = require("@shware/utils");
29
29
  var import_detail = require("./detail.cjs");
30
30
  function getErrorReason(data) {
31
31
  if (typeof data !== "object" || data === null || !("error" in data)) return "UNKNOWN";
@@ -48,7 +48,7 @@ function getErrorMessage(data, t) {
48
48
  message: t(errorInfo.reason, errorInfo.metadata)
49
49
  };
50
50
  }
51
- if ((0, import_string.hasText)(error.message)) return { reason: "ERROR_MESSAGE", message: error.message };
51
+ if ((0, import_utils.hasText)(error.message)) return { reason: "ERROR_MESSAGE", message: error.message };
52
52
  if (error.status) return { reason: error.status, message: t(error.status) };
53
53
  console.error("Unknown API error:", data);
54
54
  return { reason: "UNKNOWN", message: t("UNKNOWN") };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '../utils/string';\nimport { type BadRequest, DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\nexport function getErrorReason(data: unknown) {\n if (typeof data !== 'object' || data === null || !('error' in data)) return 'UNKNOWN';\n const { error } = data as ErrorBody;\n const errorInfo = error?.details?.find((d) => d['@type'] === DetailType.ERROR_INFO);\n return errorInfo?.reason ?? 'UNKNOWN';\n}\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\n/**\n * @example For react-hook-form:\n *\n * const { setError } = useForm();\n * const fieldViolations = getFieldViolations(error.response.data);\n * fieldViolations.forEach((violation) => {\n * setError(violation.field, { message: violation.description });\n * });\n */\nexport function getFieldViolations(data: unknown): BadRequest['fieldViolations'] {\n if (typeof data !== 'object' || data === null || !('error' in data)) return [];\n const { error } = data as ErrorBody;\n const badRequest = error?.details?.find((d) => d['@type'] === DetailType.BAD_REQUEST);\n return badRequest?.fieldViolations ?? [];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AACxB,oBAA4C;AAIrC,SAAS,eAAe,MAAe;AAC5C,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO;AAC5E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,UAAU;AAClF,SAAO,WAAW,UAAU;AAC9B;AAUO,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,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,iBAAiB;AAChG,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,UAAU;AAClF,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;AAWO,SAAS,mBAAmB,MAA8C;AAC/E,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO,CAAC;AAC7E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,aAAa,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,WAAW;AACpF,SAAO,YAAY,mBAAmB,CAAC;AACzC;","names":[]}
1
+ {"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '@shware/utils';\nimport { type BadRequest, DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\nexport function getErrorReason(data: unknown) {\n if (typeof data !== 'object' || data === null || !('error' in data)) return 'UNKNOWN';\n const { error } = data as ErrorBody;\n const errorInfo = error?.details?.find((d) => d['@type'] === DetailType.ERROR_INFO);\n return errorInfo?.reason ?? 'UNKNOWN';\n}\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\n/**\n * @example For react-hook-form:\n *\n * const { setError } = useForm();\n * const fieldViolations = getFieldViolations(error.response.data);\n * fieldViolations.forEach((violation) => {\n * setError(violation.field, { message: violation.description });\n * });\n */\nexport function getFieldViolations(data: unknown): BadRequest['fieldViolations'] {\n if (typeof data !== 'object' || data === null || !('error' in data)) return [];\n const { error } = data as ErrorBody;\n const badRequest = error?.details?.find((d) => d['@type'] === DetailType.BAD_REQUEST);\n return badRequest?.fieldViolations ?? [];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAwB;AACxB,oBAA4C;AAIrC,SAAS,eAAe,MAAe;AAC5C,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO;AAC5E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,UAAU;AAClF,SAAO,WAAW,UAAU;AAC9B;AAUO,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,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,iBAAiB;AAChG,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,UAAU;AAClF,MAAI,WAAW;AACb,WAAO;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,SAAS,EAAE,UAAU,QAAQ,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF;AAGA,UAAI,sBAAQ,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;AAWO,SAAS,mBAAmB,MAA8C;AAC/E,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO,CAAC;AAC7E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,aAAa,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,yBAAW,WAAW;AACpF,SAAO,YAAY,mBAAmB,CAAC;AACzC;","names":[]}
@@ -1,5 +1,5 @@
1
1
  // src/error/parse.ts
2
- import { hasText } from "../utils/string.mjs";
2
+ import { hasText } from "@shware/utils";
3
3
  import { DetailType } from "./detail.mjs";
4
4
  function getErrorReason(data) {
5
5
  if (typeof data !== "object" || data === null || !("error" in data)) return "UNKNOWN";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '../utils/string';\nimport { type BadRequest, DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\nexport function getErrorReason(data: unknown) {\n if (typeof data !== 'object' || data === null || !('error' in data)) return 'UNKNOWN';\n const { error } = data as ErrorBody;\n const errorInfo = error?.details?.find((d) => d['@type'] === DetailType.ERROR_INFO);\n return errorInfo?.reason ?? 'UNKNOWN';\n}\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\n/**\n * @example For react-hook-form:\n *\n * const { setError } = useForm();\n * const fieldViolations = getFieldViolations(error.response.data);\n * fieldViolations.forEach((violation) => {\n * setError(violation.field, { message: violation.description });\n * });\n */\nexport function getFieldViolations(data: unknown): BadRequest['fieldViolations'] {\n if (typeof data !== 'object' || data === null || !('error' in data)) return [];\n const { error } = data as ErrorBody;\n const badRequest = error?.details?.find((d) => d['@type'] === DetailType.BAD_REQUEST);\n return badRequest?.fieldViolations ?? [];\n}\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAA0B,kBAAkB;AAIrC,SAAS,eAAe,MAAe;AAC5C,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO;AAC5E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,UAAU;AAClF,SAAO,WAAW,UAAU;AAC9B;AAUO,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,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,iBAAiB;AAChG,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,UAAU;AAClF,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;AAWO,SAAS,mBAAmB,MAA8C;AAC/E,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO,CAAC;AAC7E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,aAAa,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,WAAW;AACpF,SAAO,YAAY,mBAAmB,CAAC;AACzC;","names":[]}
1
+ {"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '@shware/utils';\nimport { type BadRequest, DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\nexport function getErrorReason(data: unknown) {\n if (typeof data !== 'object' || data === null || !('error' in data)) return 'UNKNOWN';\n const { error } = data as ErrorBody;\n const errorInfo = error?.details?.find((d) => d['@type'] === DetailType.ERROR_INFO);\n return errorInfo?.reason ?? 'UNKNOWN';\n}\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\n/**\n * @example For react-hook-form:\n *\n * const { setError } = useForm();\n * const fieldViolations = getFieldViolations(error.response.data);\n * fieldViolations.forEach((violation) => {\n * setError(violation.field, { message: violation.description });\n * });\n */\nexport function getFieldViolations(data: unknown): BadRequest['fieldViolations'] {\n if (typeof data !== 'object' || data === null || !('error' in data)) return [];\n const { error } = data as ErrorBody;\n const badRequest = error?.details?.find((d) => d['@type'] === DetailType.BAD_REQUEST);\n return badRequest?.fieldViolations ?? [];\n}\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAA0B,kBAAkB;AAIrC,SAAS,eAAe,MAAe;AAC5C,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO;AAC5E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,UAAU;AAClF,SAAO,WAAW,UAAU;AAC9B;AAUO,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,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,iBAAiB;AAChG,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,UAAU;AAClF,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;AAWO,SAAS,mBAAmB,MAA8C;AAC/E,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,MAAO,QAAO,CAAC;AAC7E,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,aAAa,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,WAAW,WAAW;AACpF,SAAO,YAAY,mBAAmB,CAAC;AACzC;","names":[]}
@@ -11,7 +11,7 @@ import { ZodType, output } from 'zod';
11
11
  declare function zValidator<S extends ZodType | ZodMiniType>(target: keyof ValidationTargets, schema: S): hono.MiddlewareHandler<any, string, {
12
12
  in: {
13
13
  json: (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T ? T extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T extends Response | hono.TypedResponse<any, any, any> ? never : T : never : never;
14
- form: { [K2 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_1 ? T_1 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_1 extends Response | hono.TypedResponse<any, any, any> ? never : T_1 : never : never)]: Record<string, hono_types.ParsedFormValue | hono_types.ParsedFormValue[]>[K2]; };
14
+ form: { [K2 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_1 ? T_1 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_1 extends Response | hono.TypedResponse<any, any, any> ? never : T_1 : never : never)]: Record<string, hono_types.FormValue | hono_types.FormValue[]>[K2]; };
15
15
  query: { [K2_1 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_2 ? T_2 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_2 extends Response | hono.TypedResponse<any, any, any> ? never : T_2 : never : never)]: Record<string, string | string[]>[K2_1]; };
16
16
  param: { [K2_2 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_3 ? T_3 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_3 extends Response | hono.TypedResponse<any, any, any> ? never : T_3 : never : never)]: Record<string, string>[K2_2]; };
17
17
  header: { [K2_3 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_4 ? T_4 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_4 extends Response | hono.TypedResponse<any, any, any> ? never : T_4 : never : never)]: Record<hono_utils_headers.RequestHeader | hono_utils_headers.CustomHeader, string>[K2_3]; };
@@ -11,7 +11,7 @@ import { ZodType, output } from 'zod';
11
11
  declare function zValidator<S extends ZodType | ZodMiniType>(target: keyof ValidationTargets, schema: S): hono.MiddlewareHandler<any, string, {
12
12
  in: {
13
13
  json: (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T ? T extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T extends Response | hono.TypedResponse<any, any, any> ? never : T : never : never;
14
- form: { [K2 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_1 ? T_1 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_1 extends Response | hono.TypedResponse<any, any, any> ? never : T_1 : never : never)]: Record<string, hono_types.ParsedFormValue | hono_types.ParsedFormValue[]>[K2]; };
14
+ form: { [K2 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_1 ? T_1 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_1 extends Response | hono.TypedResponse<any, any, any> ? never : T_1 : never : never)]: Record<string, hono_types.FormValue | hono_types.FormValue[]>[K2]; };
15
15
  query: { [K2_1 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_2 ? T_2 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_2 extends Response | hono.TypedResponse<any, any, any> ? never : T_2 : never : never)]: Record<string, string | string[]>[K2_1]; };
16
16
  param: { [K2_2 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_3 ? T_3 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_3 extends Response | hono.TypedResponse<any, any, any> ? never : T_3 : never : never)]: Record<string, string>[K2_2]; };
17
17
  header: { [K2_3 in keyof ((S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) extends infer T_4 ? T_4 extends (S extends ZodType<unknown, unknown, zod_v4_core.$ZodTypeInternals<unknown, unknown>> ? output<S> : output<S>) ? T_4 extends Response | hono.TypedResponse<any, any, any> ? never : T_4 : never : never)]: Record<hono_utils_headers.RequestHeader | hono_utils_headers.CustomHeader, string>[K2_3]; };
package/dist/index.cjs CHANGED
@@ -41,19 +41,13 @@ __export(index_exports, {
41
41
  PurchaseError: () => import_error.PurchaseError,
42
42
  Status: () => import_status.Status,
43
43
  StatusError: () => import_status.StatusError,
44
- TokenBucket: () => import_token_bucket.TokenBucket,
45
44
  UidGenerator: () => import_snowflake.UidGenerator,
46
- base62: () => import_base62.base62,
47
- fetch: () => import_fetch.fetch,
48
45
  getErrorMessage: () => import_parse.getErrorMessage,
49
46
  getErrorReason: () => import_parse.getErrorReason,
50
47
  getFieldViolations: () => import_parse.getFieldViolations,
51
48
  getNextPageParam: () => import_response.getNextPageParam,
52
49
  getPreviousPageParam: () => import_response.getPreviousPageParam,
53
- hasText: () => import_string.hasText,
54
50
  initialPageParam: () => import_response.initialPageParam,
55
- invariant: () => import_invariant.invariant,
56
- once: () => import_promise.once,
57
51
  pageParamsSchema: () => import_response.pageParamsSchema,
58
52
  timing: () => import_timing.timing,
59
53
  uid: () => import_snowflake.uid
@@ -66,13 +60,7 @@ var import_parse = require("./error/parse.cjs");
66
60
  var import_response = require("./response.cjs");
67
61
  var import_snowflake = require("./snowflake.cjs");
68
62
  var MAX_LENGTH = __toESM(require("./max-length/index.cjs"), 1);
69
- var import_base62 = require("./utils/base62.cjs");
70
- var import_string = require("./utils/string.cjs");
71
63
  var import_timing = require("./utils/timing.cjs");
72
- var import_promise = require("./utils/promise.cjs");
73
- var import_invariant = require("./utils/invariant.cjs");
74
- var import_token_bucket = require("./utils/token-bucket.cjs");
75
- var import_fetch = require("./utils/fetch.cjs");
76
64
  var import_iso_3601_1 = require("./iso/iso_3601_1.cjs");
77
65
  // Annotate the CommonJS export names for ESM import in node:
78
66
  0 && (module.exports = {
@@ -87,19 +75,13 @@ var import_iso_3601_1 = require("./iso/iso_3601_1.cjs");
87
75
  PurchaseError,
88
76
  Status,
89
77
  StatusError,
90
- TokenBucket,
91
78
  UidGenerator,
92
- base62,
93
- fetch,
94
79
  getErrorMessage,
95
80
  getErrorReason,
96
81
  getFieldViolations,
97
82
  getNextPageParam,
98
83
  getPreviousPageParam,
99
- hasText,
100
84
  initialPageParam,
101
- invariant,
102
- once,
103
85
  pageParamsSchema,
104
86
  timing,
105
87
  uid
@@ -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 {\n DetailType,\n Details,\n type ErrorInfo,\n type RetryInfo,\n type DebugInfo,\n type QuotaFailure,\n type PreconditionFailure,\n type BadRequest,\n type RequestInfo,\n type ResourceInfo,\n type Help,\n type LocalizedMessage,\n type Detail,\n} from './error/detail';\nexport { Status, StatusError, type ErrorBody } from './error/status';\nexport { getErrorReason, getErrorMessage, getFieldViolations } 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 { UidGenerator, uid } from './snowflake';\n\nexport * as MAX_LENGTH from './max-length/index';\nexport { base62 } from './utils/base62';\nexport { hasText } from './utils/string';\nexport { timing } from './utils/timing';\nexport { once } from './utils/promise';\nexport { invariant } from './utils/invariant';\nexport { TokenBucket, type TokenBucketOptions } from './utils/token-bucket';\nexport { fetch, type RetryOptions } from './utils/fetch';\nexport { ISO_3601_1, type ISO3166CountryCode } from './iso/iso_3601_1';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,mBAKO;AAUP,oBAcO;AACP,oBAAoD;AACpD,mBAAoE;AACpE,sBAMO;AAcP,uBAAkC;AAElC,iBAA4B;AAC5B,oBAAuB;AACvB,oBAAwB;AACxB,oBAAuB;AACvB,qBAAqB;AACrB,uBAA0B;AAC1B,0BAAqD;AACrD,mBAAyC;AACzC,wBAAoD;","names":[]}
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 {\n DetailType,\n Details,\n type ErrorInfo,\n type RetryInfo,\n type DebugInfo,\n type QuotaFailure,\n type PreconditionFailure,\n type BadRequest,\n type RequestInfo,\n type ResourceInfo,\n type Help,\n type LocalizedMessage,\n type Detail,\n} from './error/detail';\nexport { Status, StatusError, type ErrorBody } from './error/status';\nexport { getErrorReason, getErrorMessage, getFieldViolations } 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 { UidGenerator, uid } from './snowflake';\n\nexport * as MAX_LENGTH from './max-length/index';\nexport { timing } from './utils/timing';\nexport { ISO_3601_1, type ISO3166CountryCode } from './iso/iso_3601_1';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,mBAKO;AAUP,oBAcO;AACP,oBAAoD;AACpD,mBAAoE;AACpE,sBAMO;AAcP,uBAAkC;AAElC,iBAA4B;AAC5B,oBAAuB;AACvB,wBAAoD;","names":[]}
package/dist/index.d.cts CHANGED
@@ -6,13 +6,7 @@ export { getErrorMessage, getErrorReason, getFieldViolations } from './error/par
6
6
  export { Cursor, Empty, Entity, EntityId, InitParams, NextParams, Page, PageParams, ParentPageParams, PrevParams, Response, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema } from './response.cjs';
7
7
  export { UidGenerator, uid } from './snowflake.cjs';
8
8
  export { i as MAX_LENGTH } from './index-BnPgRQDl.cjs';
9
- export { base62 } from './utils/base62.cjs';
10
- export { hasText } from './utils/string.cjs';
11
9
  export { timing } from './utils/timing.cjs';
12
- export { once } from './utils/promise.cjs';
13
- export { invariant } from './utils/invariant.cjs';
14
- export { TokenBucket, TokenBucketOptions } from './utils/token-bucket.cjs';
15
- export { RetryOptions, fetch } from './utils/fetch.cjs';
16
10
  export { ISO3166CountryCode, ISO_3601_1 } from './iso/iso_3601_1.cjs';
17
11
  import 'i18next';
18
12
  import 'zod/v4/core';
package/dist/index.d.ts CHANGED
@@ -6,13 +6,7 @@ export { getErrorMessage, getErrorReason, getFieldViolations } from './error/par
6
6
  export { Cursor, Empty, Entity, EntityId, InitParams, NextParams, Page, PageParams, ParentPageParams, PrevParams, Response, getNextPageParam, getPreviousPageParam, initialPageParam, pageParamsSchema } from './response.js';
7
7
  export { UidGenerator, uid } from './snowflake.js';
8
8
  export { i as MAX_LENGTH } from './index-BnPgRQDl.js';
9
- export { base62 } from './utils/base62.js';
10
- export { hasText } from './utils/string.js';
11
9
  export { timing } from './utils/timing.js';
12
- export { once } from './utils/promise.js';
13
- export { invariant } from './utils/invariant.js';
14
- export { TokenBucket, TokenBucketOptions } from './utils/token-bucket.js';
15
- export { RetryOptions, fetch } from './utils/fetch.js';
16
10
  export { ISO3166CountryCode, ISO_3601_1 } from './iso/iso_3601_1.js';
17
11
  import 'i18next';
18
12
  import 'zod/v4/core';
package/dist/index.mjs CHANGED
@@ -20,13 +20,7 @@ import {
20
20
  } from "./response.mjs";
21
21
  import { UidGenerator, uid } from "./snowflake.mjs";
22
22
  import * as MAX_LENGTH from "./max-length/index.mjs";
23
- import { base62 } from "./utils/base62.mjs";
24
- import { hasText } from "./utils/string.mjs";
25
23
  import { timing } from "./utils/timing.mjs";
26
- import { once } from "./utils/promise.mjs";
27
- import { invariant } from "./utils/invariant.mjs";
28
- import { TokenBucket } from "./utils/token-bucket.mjs";
29
- import { fetch } from "./utils/fetch.mjs";
30
24
  import { ISO_3601_1 } from "./iso/iso_3601_1.mjs";
31
25
  export {
32
26
  CheckoutCreateError,
@@ -40,19 +34,13 @@ export {
40
34
  PurchaseError,
41
35
  Status,
42
36
  StatusError,
43
- TokenBucket,
44
37
  UidGenerator,
45
- base62,
46
- fetch,
47
38
  getErrorMessage,
48
39
  getErrorReason,
49
40
  getFieldViolations,
50
41
  getNextPageParam,
51
42
  getPreviousPageParam,
52
- hasText,
53
43
  initialPageParam,
54
- invariant,
55
- once,
56
44
  pageParamsSchema,
57
45
  timing,
58
46
  uid
@@ -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 {\n DetailType,\n Details,\n type ErrorInfo,\n type RetryInfo,\n type DebugInfo,\n type QuotaFailure,\n type PreconditionFailure,\n type BadRequest,\n type RequestInfo,\n type ResourceInfo,\n type Help,\n type LocalizedMessage,\n type Detail,\n} from './error/detail';\nexport { Status, StatusError, type ErrorBody } from './error/status';\nexport { getErrorReason, getErrorMessage, getFieldViolations } 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 { UidGenerator, uid } from './snowflake';\n\nexport * as MAX_LENGTH from './max-length/index';\nexport { base62 } from './utils/base62';\nexport { hasText } from './utils/string';\nexport { timing } from './utils/timing';\nexport { once } from './utils/promise';\nexport { invariant } from './utils/invariant';\nexport { TokenBucket, type TokenBucketOptions } from './utils/token-bucket';\nexport { fetch, type RetryOptions } from './utils/fetch';\nexport { ISO_3601_1, type ISO3166CountryCode } from './iso/iso_3601_1';\n"],"mappings":";AAaA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP;AAAA,EACE;AAAA,EACA;AAAA,OAYK;AACP,SAAS,QAAQ,mBAAmC;AACpD,SAAS,gBAAgB,iBAAiB,0BAA0B;AACpE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,SAAS,cAAc,WAAW;AAElC,YAAY,gBAAgB;AAC5B,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,mBAA4C;AACrD,SAAS,aAAgC;AACzC,SAAS,kBAA2C;","names":[]}
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 {\n DetailType,\n Details,\n type ErrorInfo,\n type RetryInfo,\n type DebugInfo,\n type QuotaFailure,\n type PreconditionFailure,\n type BadRequest,\n type RequestInfo,\n type ResourceInfo,\n type Help,\n type LocalizedMessage,\n type Detail,\n} from './error/detail';\nexport { Status, StatusError, type ErrorBody } from './error/status';\nexport { getErrorReason, getErrorMessage, getFieldViolations } 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 { UidGenerator, uid } from './snowflake';\n\nexport * as MAX_LENGTH from './max-length/index';\nexport { timing } from './utils/timing';\nexport { ISO_3601_1, type ISO3166CountryCode } from './iso/iso_3601_1';\n"],"mappings":";AAaA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP;AAAA,EACE;AAAA,EACA;AAAA,OAYK;AACP,SAAS,QAAQ,mBAAmC;AACpD,SAAS,gBAAgB,iBAAiB,0BAA0B;AACpE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,SAAS,cAAc,WAAW;AAElC,YAAY,gBAAgB;AAC5B,SAAS,cAAc;AACvB,SAAS,kBAA2C;","names":[]}
package/dist/response.cjs CHANGED
@@ -27,8 +27,8 @@ __export(response_exports, {
27
27
  pageParamsSchema: () => pageParamsSchema
28
28
  });
29
29
  module.exports = __toCommonJS(response_exports);
30
+ var import_utils = require("@shware/utils");
30
31
  var import_mini = require("zod/mini");
31
- var import_string = require("./utils/string.cjs");
32
32
  function pageParamsSchema(max = 100, defaultLimit = 20) {
33
33
  return (0, import_mini.object)({
34
34
  limit: (0, import_mini._default)(import_mini.coerce.number().check((0, import_mini.int)(), (0, import_mini.minimum)(1), (0, import_mini.maximum)(max)), defaultLimit),
@@ -57,10 +57,10 @@ var Cursor = {
57
57
  };
58
58
  var initialPageParam = { next: "", prev: "" };
59
59
  function getPreviousPageParam(first) {
60
- return (0, import_string.hasText)(first.paging.prev) ? { next: "", prev: first.paging.prev } : null;
60
+ return (0, import_utils.hasText)(first.paging.prev) ? { next: "", prev: first.paging.prev } : null;
61
61
  }
62
62
  function getNextPageParam(last) {
63
- return (0, import_string.hasText)(last.paging.next) ? { next: last.paging.next, prev: "" } : null;
63
+ return (0, import_utils.hasText)(last.paging.next) ? { next: last.paging.next, prev: "" } : null;
64
64
  }
65
65
  // Annotate the CommonJS export names for ESM import in node:
66
66
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\nimport { hasText } from './utils/string';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\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')\n return BigInt(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n if (type === 'number')\n return Number(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n return value as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\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,kBAAkF;AAClF,oBAAwB;AAgBjB,SAAS,iBAAiB,MAAc,KAAK,eAAuB,IAAI;AAC7E,aAAO,oBAAO;AAAA,IACZ,WAAO,sBAAS,mBAAO,OAAO,EAAE,UAAM,iBAAI,OAAG,qBAAQ,CAAC,OAAG,qBAAQ,GAAG,CAAC,GAAG,YAAY;AAAA,IACpF,UAAM,0BAAS,oBAAO,CAAC;AAAA,IACvB,UAAM,0BAAS,oBAAO,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;AACX,aAAO,OAAO,KAAK;AACrB,QAAI,SAAS;AACX,aAAO,OAAO,KAAK;AACrB,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":[]}
1
+ {"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { hasText } from '@shware/utils';\nimport { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\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')\n return BigInt(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n if (type === 'number')\n return Number(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n return value as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\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,mBAAwB;AACxB,kBAAkF;AAgB3E,SAAS,iBAAiB,MAAc,KAAK,eAAuB,IAAI;AAC7E,aAAO,oBAAO;AAAA,IACZ,WAAO,sBAAS,mBAAO,OAAO,EAAE,UAAM,iBAAI,OAAG,qBAAQ,CAAC,OAAG,qBAAQ,GAAG,CAAC,GAAG,YAAY;AAAA,IACpF,UAAM,0BAAS,oBAAO,CAAC;AAAA,IACvB,UAAM,0BAAS,oBAAO,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;AACX,aAAO,OAAO,KAAK;AACrB,QAAI,SAAS;AACX,aAAO,OAAO,KAAK;AACrB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,mBAA8C,EAAE,MAAM,IAAI,MAAM,GAAG;AAEzE,SAAS,qBAAgC,OAAkD;AAChG,aAAO,sBAAQ,MAAM,OAAO,IAAI,IAAI,EAAE,MAAM,IAAI,MAAM,MAAM,OAAO,KAAK,IAAI;AAC9E;AAEO,SAAS,iBAA4B,MAAiD;AAC3F,aAAO,sBAAQ,KAAK,OAAO,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO,MAAM,MAAM,GAAG,IAAI;AAC5E;","names":[]}
package/dist/response.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/response.ts
2
+ import { hasText } from "@shware/utils";
2
3
  import { _default, coerce, int, maximum, minimum, object, optional, string } from "zod/mini";
3
- import { hasText } from "./utils/string.mjs";
4
4
  function pageParamsSchema(max = 100, defaultLimit = 20) {
5
5
  return object({
6
6
  limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\nimport { hasText } from './utils/string';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\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')\n return BigInt(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n if (type === 'number')\n return Number(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n return value as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\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,UAAU,QAAQ,KAAK,SAAS,SAAS,QAAQ,UAAU,cAAc;AAClF,SAAS,eAAe;AAgBjB,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;AACX,aAAO,OAAO,KAAK;AACrB,QAAI,SAAS;AACX,aAAO,OAAO,KAAK;AACrB,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":[]}
1
+ {"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { hasText } from '@shware/utils';\nimport { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\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')\n return BigInt(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n if (type === 'number')\n return Number(value) as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\n return value as T extends 'bigint' ? bigint : T extends 'number' ? number : string;\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,eAAe;AACxB,SAAS,UAAU,QAAQ,KAAK,SAAS,SAAS,QAAQ,UAAU,cAAc;AAgB3E,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;AACX,aAAO,OAAO,KAAK;AACrB,QAAI,SAAS;AACX,aAAO,OAAO,KAAK;AACrB,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shware/http",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "repository": {
@@ -48,7 +48,8 @@
48
48
  "@repo/typescript-config": "0.0.0"
49
49
  },
50
50
  "dependencies": {
51
- "zod": "^4.1.13"
51
+ "zod": "^4.1.13",
52
+ "@shware/utils": "^1.0.1"
52
53
  },
53
54
  "peerDependencies": {
54
55
  "hono": "^4.10.4",
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- // src/utils/__tests__/base62.test.ts
4
- var import_base62 = require("../base62.cjs");
5
- describe("base62", () => {
6
- it("should encode", () => {
7
- const buffer = Buffer.from([1]);
8
- const encoded = import_base62.base62.encode(buffer);
9
- expect(encoded).toEqual("1");
10
- });
11
- it("should decode", () => {
12
- const encoded = "1";
13
- const decoded = import_base62.base62.decode(encoded);
14
- expect(decoded).toEqual(Buffer.from([1]));
15
- });
16
- it("should encode and decode", () => {
17
- const buffer = Buffer.from("hello", "utf-8");
18
- const encoded = import_base62.base62.encode(buffer);
19
- const decoded = import_base62.base62.decode(encoded, buffer.length);
20
- expect(decoded).toEqual(buffer);
21
- });
22
- it("should encode and decode with leading zeros", () => {
23
- const buffer = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
24
- const encoded = import_base62.base62.encode(buffer);
25
- const decoded = import_base62.base62.decode(encoded, buffer.length);
26
- expect(decoded).toEqual(buffer);
27
- });
28
- });
29
- //# sourceMappingURL=base62.test.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/__tests__/base62.test.ts"],"sourcesContent":["import { base62 } from '../base62';\n\ndescribe('base62', () => {\n it('should encode', () => {\n const buffer = Buffer.from([1]);\n const encoded = base62.encode(buffer);\n expect(encoded).toEqual('1');\n });\n\n it('should decode', () => {\n const encoded = '1';\n const decoded = base62.decode(encoded);\n expect(decoded).toEqual(Buffer.from([1]));\n });\n\n it('should encode and decode', () => {\n const buffer = Buffer.from('hello', 'utf-8');\n const encoded = base62.encode(buffer);\n const decoded = base62.decode(encoded, buffer.length);\n expect(decoded).toEqual(buffer);\n });\n\n it('should encode and decode with leading zeros', () => {\n const buffer = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n const encoded = base62.encode(buffer);\n const decoded = base62.decode(encoded, buffer.length);\n expect(decoded).toEqual(buffer);\n });\n});\n"],"mappings":";;;AAAA,oBAAuB;AAEvB,SAAS,UAAU,MAAM;AACvB,KAAG,iBAAiB,MAAM;AACxB,UAAM,SAAS,OAAO,KAAK,CAAC,CAAC,CAAC;AAC9B,UAAM,UAAU,qBAAO,OAAO,MAAM;AACpC,WAAO,OAAO,EAAE,QAAQ,GAAG;AAAA,EAC7B,CAAC;AAED,KAAG,iBAAiB,MAAM;AACxB,UAAM,UAAU;AAChB,UAAM,UAAU,qBAAO,OAAO,OAAO;AACrC,WAAO,OAAO,EAAE,QAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EAC1C,CAAC;AAED,KAAG,4BAA4B,MAAM;AACnC,UAAM,SAAS,OAAO,KAAK,SAAS,OAAO;AAC3C,UAAM,UAAU,qBAAO,OAAO,MAAM;AACpC,UAAM,UAAU,qBAAO,OAAO,SAAS,OAAO,MAAM;AACpD,WAAO,OAAO,EAAE,QAAQ,MAAM;AAAA,EAChC,CAAC;AAED,KAAG,+CAA+C,MAAM;AACtD,UAAM,SAAS,OAAO,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3E,UAAM,UAAU,qBAAO,OAAO,MAAM;AACpC,UAAM,UAAU,qBAAO,OAAO,SAAS,OAAO,MAAM;AACpD,WAAO,OAAO,EAAE,QAAQ,MAAM;AAAA,EAChC,CAAC;AACH,CAAC;","names":[]}
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,27 +0,0 @@
1
- // src/utils/__tests__/base62.test.ts
2
- import { base62 } from "../base62.mjs";
3
- describe("base62", () => {
4
- it("should encode", () => {
5
- const buffer = Buffer.from([1]);
6
- const encoded = base62.encode(buffer);
7
- expect(encoded).toEqual("1");
8
- });
9
- it("should decode", () => {
10
- const encoded = "1";
11
- const decoded = base62.decode(encoded);
12
- expect(decoded).toEqual(Buffer.from([1]));
13
- });
14
- it("should encode and decode", () => {
15
- const buffer = Buffer.from("hello", "utf-8");
16
- const encoded = base62.encode(buffer);
17
- const decoded = base62.decode(encoded, buffer.length);
18
- expect(decoded).toEqual(buffer);
19
- });
20
- it("should encode and decode with leading zeros", () => {
21
- const buffer = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
22
- const encoded = base62.encode(buffer);
23
- const decoded = base62.decode(encoded, buffer.length);
24
- expect(decoded).toEqual(buffer);
25
- });
26
- });
27
- //# sourceMappingURL=base62.test.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/__tests__/base62.test.ts"],"sourcesContent":["import { base62 } from '../base62';\n\ndescribe('base62', () => {\n it('should encode', () => {\n const buffer = Buffer.from([1]);\n const encoded = base62.encode(buffer);\n expect(encoded).toEqual('1');\n });\n\n it('should decode', () => {\n const encoded = '1';\n const decoded = base62.decode(encoded);\n expect(decoded).toEqual(Buffer.from([1]));\n });\n\n it('should encode and decode', () => {\n const buffer = Buffer.from('hello', 'utf-8');\n const encoded = base62.encode(buffer);\n const decoded = base62.decode(encoded, buffer.length);\n expect(decoded).toEqual(buffer);\n });\n\n it('should encode and decode with leading zeros', () => {\n const buffer = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n const encoded = base62.encode(buffer);\n const decoded = base62.decode(encoded, buffer.length);\n expect(decoded).toEqual(buffer);\n });\n});\n"],"mappings":";AAAA,SAAS,cAAc;AAEvB,SAAS,UAAU,MAAM;AACvB,KAAG,iBAAiB,MAAM;AACxB,UAAM,SAAS,OAAO,KAAK,CAAC,CAAC,CAAC;AAC9B,UAAM,UAAU,OAAO,OAAO,MAAM;AACpC,WAAO,OAAO,EAAE,QAAQ,GAAG;AAAA,EAC7B,CAAC;AAED,KAAG,iBAAiB,MAAM;AACxB,UAAM,UAAU;AAChB,UAAM,UAAU,OAAO,OAAO,OAAO;AACrC,WAAO,OAAO,EAAE,QAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EAC1C,CAAC;AAED,KAAG,4BAA4B,MAAM;AACnC,UAAM,SAAS,OAAO,KAAK,SAAS,OAAO;AAC3C,UAAM,UAAU,OAAO,OAAO,MAAM;AACpC,UAAM,UAAU,OAAO,OAAO,SAAS,OAAO,MAAM;AACpD,WAAO,OAAO,EAAE,QAAQ,MAAM;AAAA,EAChC,CAAC;AAED,KAAG,+CAA+C,MAAM;AACtD,UAAM,SAAS,OAAO,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3E,UAAM,UAAU,OAAO,OAAO,MAAM;AACpC,UAAM,UAAU,OAAO,OAAO,SAAS,OAAO,MAAM;AACpD,WAAO,OAAO,EAAE,QAAQ,MAAM;AAAA,EAChC,CAAC;AACH,CAAC;","names":[]}
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- // src/utils/__tests__/ip.test.ts
4
- var import_ip = require("../ip.cjs");
5
- describe("extractIpAddress", () => {
6
- it("should extract the ipv4 address from the request", () => {
7
- expect((0, import_ip.extractIpAddress)("127.0.0.1")).toBe("127.0.0.1");
8
- expect((0, import_ip.extractIpAddress)("192.168.0.1")).toBe("192.168.0.1");
9
- expect((0, import_ip.extractIpAddress)("127.0.0.1:8080")).toBe("127.0.0.1");
10
- expect((0, import_ip.extractIpAddress)("192.168.0.1:8080")).toBe("192.168.0.1");
11
- expect((0, import_ip.extractIpAddress)("127.0.0.1:8080/path")).toBe("127.0.0.1");
12
- });
13
- it("should extract the ipv6 address from the request", () => {
14
- expect((0, import_ip.extractIpAddress)("::1")).toBe("::1");
15
- expect((0, import_ip.extractIpAddress)("[::1]:8080")).toBe("::1");
16
- expect((0, import_ip.extractIpAddress)("2001:0db8:85a3:0000:0000:8a2e:0370:7334")).toBe(
17
- "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
18
- );
19
- expect((0, import_ip.extractIpAddress)("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80")).toBe(
20
- "2001:db8:85a3::8a2e:370:7334"
21
- // remove leading zeros
22
- );
23
- expect((0, import_ip.extractIpAddress)("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80/path")).toBe(
24
- "2001:db8:85a3::8a2e:370:7334"
25
- // remove leading zeros
26
- );
27
- expect((0, import_ip.extractIpAddress)("2404:7ac0:614d:bba7:cf41:992e:98e:9186:60704")).toBe(
28
- "2404:7ac0:614d:bba7:cf41:992e:98e:9186"
29
- );
30
- });
31
- it("should return null if the ip address is not valid", () => {
32
- expect((0, import_ip.extractIpAddress)(null)).toBeNull();
33
- expect((0, import_ip.extractIpAddress)(void 0)).toBeNull();
34
- expect((0, import_ip.extractIpAddress)("invalid")).toBeNull();
35
- expect((0, import_ip.extractIpAddress)("example.com")).toBeNull();
36
- });
37
- });
38
- //# sourceMappingURL=ip.test.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/__tests__/ip.test.ts"],"sourcesContent":["import { extractIpAddress } from '../ip';\n\ndescribe('extractIpAddress', () => {\n it('should extract the ipv4 address from the request', () => {\n expect(extractIpAddress('127.0.0.1')).toBe('127.0.0.1');\n expect(extractIpAddress('192.168.0.1')).toBe('192.168.0.1');\n expect(extractIpAddress('127.0.0.1:8080')).toBe('127.0.0.1');\n expect(extractIpAddress('192.168.0.1:8080')).toBe('192.168.0.1');\n expect(extractIpAddress('127.0.0.1:8080/path')).toBe('127.0.0.1');\n });\n\n it('should extract the ipv6 address from the request', () => {\n expect(extractIpAddress('::1')).toBe('::1');\n expect(extractIpAddress('[::1]:8080')).toBe('::1');\n\n expect(extractIpAddress('2001:0db8:85a3:0000:0000:8a2e:0370:7334')).toBe(\n '2001:0db8:85a3:0000:0000:8a2e:0370:7334'\n );\n expect(extractIpAddress('[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80')).toBe(\n '2001:db8:85a3::8a2e:370:7334' // remove leading zeros\n );\n expect(extractIpAddress('[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80/path')).toBe(\n '2001:db8:85a3::8a2e:370:7334' // remove leading zeros\n );\n\n expect(extractIpAddress('2404:7ac0:614d:bba7:cf41:992e:98e:9186:60704')).toBe(\n '2404:7ac0:614d:bba7:cf41:992e:98e:9186'\n );\n });\n\n it('should return null if the ip address is not valid', () => {\n expect(extractIpAddress(null)).toBeNull();\n expect(extractIpAddress(undefined)).toBeNull();\n expect(extractIpAddress('invalid')).toBeNull();\n expect(extractIpAddress('example.com')).toBeNull();\n });\n});\n"],"mappings":";;;AAAA,gBAAiC;AAEjC,SAAS,oBAAoB,MAAM;AACjC,KAAG,oDAAoD,MAAM;AAC3D,eAAO,4BAAiB,WAAW,CAAC,EAAE,KAAK,WAAW;AACtD,eAAO,4BAAiB,aAAa,CAAC,EAAE,KAAK,aAAa;AAC1D,eAAO,4BAAiB,gBAAgB,CAAC,EAAE,KAAK,WAAW;AAC3D,eAAO,4BAAiB,kBAAkB,CAAC,EAAE,KAAK,aAAa;AAC/D,eAAO,4BAAiB,qBAAqB,CAAC,EAAE,KAAK,WAAW;AAAA,EAClE,CAAC;AAED,KAAG,oDAAoD,MAAM;AAC3D,eAAO,4BAAiB,KAAK,CAAC,EAAE,KAAK,KAAK;AAC1C,eAAO,4BAAiB,YAAY,CAAC,EAAE,KAAK,KAAK;AAEjD,eAAO,4BAAiB,yCAAyC,CAAC,EAAE;AAAA,MAClE;AAAA,IACF;AACA,eAAO,4BAAiB,8CAA8C,CAAC,EAAE;AAAA,MACvE;AAAA;AAAA,IACF;AACA,eAAO,4BAAiB,mDAAmD,CAAC,EAAE;AAAA,MAC5E;AAAA;AAAA,IACF;AAEA,eAAO,4BAAiB,8CAA8C,CAAC,EAAE;AAAA,MACvE;AAAA,IACF;AAAA,EACF,CAAC;AAED,KAAG,qDAAqD,MAAM;AAC5D,eAAO,4BAAiB,IAAI,CAAC,EAAE,SAAS;AACxC,eAAO,4BAAiB,MAAS,CAAC,EAAE,SAAS;AAC7C,eAAO,4BAAiB,SAAS,CAAC,EAAE,SAAS;AAC7C,eAAO,4BAAiB,aAAa,CAAC,EAAE,SAAS;AAAA,EACnD,CAAC;AACH,CAAC;","names":[]}
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,36 +0,0 @@
1
- // src/utils/__tests__/ip.test.ts
2
- import { extractIpAddress } from "../ip.mjs";
3
- describe("extractIpAddress", () => {
4
- it("should extract the ipv4 address from the request", () => {
5
- expect(extractIpAddress("127.0.0.1")).toBe("127.0.0.1");
6
- expect(extractIpAddress("192.168.0.1")).toBe("192.168.0.1");
7
- expect(extractIpAddress("127.0.0.1:8080")).toBe("127.0.0.1");
8
- expect(extractIpAddress("192.168.0.1:8080")).toBe("192.168.0.1");
9
- expect(extractIpAddress("127.0.0.1:8080/path")).toBe("127.0.0.1");
10
- });
11
- it("should extract the ipv6 address from the request", () => {
12
- expect(extractIpAddress("::1")).toBe("::1");
13
- expect(extractIpAddress("[::1]:8080")).toBe("::1");
14
- expect(extractIpAddress("2001:0db8:85a3:0000:0000:8a2e:0370:7334")).toBe(
15
- "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
16
- );
17
- expect(extractIpAddress("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80")).toBe(
18
- "2001:db8:85a3::8a2e:370:7334"
19
- // remove leading zeros
20
- );
21
- expect(extractIpAddress("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80/path")).toBe(
22
- "2001:db8:85a3::8a2e:370:7334"
23
- // remove leading zeros
24
- );
25
- expect(extractIpAddress("2404:7ac0:614d:bba7:cf41:992e:98e:9186:60704")).toBe(
26
- "2404:7ac0:614d:bba7:cf41:992e:98e:9186"
27
- );
28
- });
29
- it("should return null if the ip address is not valid", () => {
30
- expect(extractIpAddress(null)).toBeNull();
31
- expect(extractIpAddress(void 0)).toBeNull();
32
- expect(extractIpAddress("invalid")).toBeNull();
33
- expect(extractIpAddress("example.com")).toBeNull();
34
- });
35
- });
36
- //# sourceMappingURL=ip.test.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/__tests__/ip.test.ts"],"sourcesContent":["import { extractIpAddress } from '../ip';\n\ndescribe('extractIpAddress', () => {\n it('should extract the ipv4 address from the request', () => {\n expect(extractIpAddress('127.0.0.1')).toBe('127.0.0.1');\n expect(extractIpAddress('192.168.0.1')).toBe('192.168.0.1');\n expect(extractIpAddress('127.0.0.1:8080')).toBe('127.0.0.1');\n expect(extractIpAddress('192.168.0.1:8080')).toBe('192.168.0.1');\n expect(extractIpAddress('127.0.0.1:8080/path')).toBe('127.0.0.1');\n });\n\n it('should extract the ipv6 address from the request', () => {\n expect(extractIpAddress('::1')).toBe('::1');\n expect(extractIpAddress('[::1]:8080')).toBe('::1');\n\n expect(extractIpAddress('2001:0db8:85a3:0000:0000:8a2e:0370:7334')).toBe(\n '2001:0db8:85a3:0000:0000:8a2e:0370:7334'\n );\n expect(extractIpAddress('[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80')).toBe(\n '2001:db8:85a3::8a2e:370:7334' // remove leading zeros\n );\n expect(extractIpAddress('[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:80/path')).toBe(\n '2001:db8:85a3::8a2e:370:7334' // remove leading zeros\n );\n\n expect(extractIpAddress('2404:7ac0:614d:bba7:cf41:992e:98e:9186:60704')).toBe(\n '2404:7ac0:614d:bba7:cf41:992e:98e:9186'\n );\n });\n\n it('should return null if the ip address is not valid', () => {\n expect(extractIpAddress(null)).toBeNull();\n expect(extractIpAddress(undefined)).toBeNull();\n expect(extractIpAddress('invalid')).toBeNull();\n expect(extractIpAddress('example.com')).toBeNull();\n });\n});\n"],"mappings":";AAAA,SAAS,wBAAwB;AAEjC,SAAS,oBAAoB,MAAM;AACjC,KAAG,oDAAoD,MAAM;AAC3D,WAAO,iBAAiB,WAAW,CAAC,EAAE,KAAK,WAAW;AACtD,WAAO,iBAAiB,aAAa,CAAC,EAAE,KAAK,aAAa;AAC1D,WAAO,iBAAiB,gBAAgB,CAAC,EAAE,KAAK,WAAW;AAC3D,WAAO,iBAAiB,kBAAkB,CAAC,EAAE,KAAK,aAAa;AAC/D,WAAO,iBAAiB,qBAAqB,CAAC,EAAE,KAAK,WAAW;AAAA,EAClE,CAAC;AAED,KAAG,oDAAoD,MAAM;AAC3D,WAAO,iBAAiB,KAAK,CAAC,EAAE,KAAK,KAAK;AAC1C,WAAO,iBAAiB,YAAY,CAAC,EAAE,KAAK,KAAK;AAEjD,WAAO,iBAAiB,yCAAyC,CAAC,EAAE;AAAA,MAClE;AAAA,IACF;AACA,WAAO,iBAAiB,8CAA8C,CAAC,EAAE;AAAA,MACvE;AAAA;AAAA,IACF;AACA,WAAO,iBAAiB,mDAAmD,CAAC,EAAE;AAAA,MAC5E;AAAA;AAAA,IACF;AAEA,WAAO,iBAAiB,8CAA8C,CAAC,EAAE;AAAA,MACvE;AAAA,IACF;AAAA,EACF,CAAC;AAED,KAAG,qDAAqD,MAAM;AAC5D,WAAO,iBAAiB,IAAI,CAAC,EAAE,SAAS;AACxC,WAAO,iBAAiB,MAAS,CAAC,EAAE,SAAS;AAC7C,WAAO,iBAAiB,SAAS,CAAC,EAAE,SAAS;AAC7C,WAAO,iBAAiB,aAAa,CAAC,EAAE,SAAS;AAAA,EACnD,CAAC;AACH,CAAC;","names":[]}
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/utils/base62.ts
21
- var base62_exports = {};
22
- __export(base62_exports, {
23
- base62: () => base62
24
- });
25
- module.exports = __toCommonJS(base62_exports);
26
- var base62 = {
27
- encode: (buffer) => {
28
- const base = 62n;
29
- const charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
30
- let leadingZeros = 0;
31
- for (const byte of buffer) {
32
- if (byte === 0) leadingZeros++;
33
- else break;
34
- }
35
- let num = BigInt("0x" + buffer.toString("hex"));
36
- if (num === 0n) return "0".repeat(buffer.length);
37
- const chars = [];
38
- while (num > 0n) {
39
- const remainder = num % base;
40
- chars.push(charset[Number(remainder)]);
41
- num /= base;
42
- }
43
- return "0".repeat(leadingZeros) + chars.reverse().join("");
44
- },
45
- decode: (string, expectedLength) => {
46
- const base = 62n;
47
- const charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
48
- let leadingZeros = 0;
49
- for (const ch of string) {
50
- if (ch === "0") leadingZeros++;
51
- else break;
52
- }
53
- if (leadingZeros === string.length) {
54
- return Buffer.alloc(expectedLength ?? leadingZeros);
55
- }
56
- let num = 0n;
57
- for (let i = leadingZeros; i < string.length; i++) {
58
- const ch = string[i];
59
- const idx = charset.indexOf(ch);
60
- if (idx === -1) {
61
- throw new Error(`Invalid base62 character: ${ch}`);
62
- }
63
- num = num * base + BigInt(idx);
64
- }
65
- let hex = num.toString(16);
66
- if (hex.length % 2 !== 0) hex = "0" + hex;
67
- let buf = Buffer.from(hex, "hex");
68
- if (leadingZeros > 0) {
69
- buf = Buffer.concat([Buffer.alloc(leadingZeros), buf]);
70
- }
71
- if (expectedLength !== void 0) {
72
- if (buf.length < expectedLength) {
73
- buf = Buffer.concat([Buffer.alloc(expectedLength - buf.length), buf]);
74
- } else if (buf.length > expectedLength) {
75
- buf = buf.subarray(buf.length - expectedLength);
76
- }
77
- }
78
- return buf;
79
- }
80
- };
81
- // Annotate the CommonJS export names for ESM import in node:
82
- 0 && (module.exports = {
83
- base62
84
- });
85
- //# sourceMappingURL=base62.cjs.map