@shware/http 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/error/parse.cjs +13 -1
- package/dist/error/parse.cjs.map +1 -1
- package/dist/error/parse.mjs +11 -1
- package/dist/error/parse.mjs.map +1 -1
- package/dist/index.cjs +0 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -6
- package/dist/index.d.ts +0 -6
- package/dist/index.mjs +0 -12
- package/dist/index.mjs.map +1 -1
- package/dist/response.cjs +13 -1
- package/dist/response.cjs.map +1 -1
- package/dist/response.mjs +11 -1
- package/dist/response.mjs.map +1 -1
- package/package.json +3 -2
- package/dist/utils/__tests__/base62.test.cjs +0 -29
- package/dist/utils/__tests__/base62.test.cjs.map +0 -1
- package/dist/utils/__tests__/base62.test.d.cts +0 -2
- package/dist/utils/__tests__/base62.test.d.ts +0 -2
- package/dist/utils/__tests__/base62.test.mjs +0 -27
- package/dist/utils/__tests__/base62.test.mjs.map +0 -1
- package/dist/utils/__tests__/ip.test.cjs +0 -38
- package/dist/utils/__tests__/ip.test.cjs.map +0 -1
- package/dist/utils/__tests__/ip.test.d.cts +0 -2
- package/dist/utils/__tests__/ip.test.d.ts +0 -2
- package/dist/utils/__tests__/ip.test.mjs +0 -36
- package/dist/utils/__tests__/ip.test.mjs.map +0 -1
- package/dist/utils/base62.cjs +0 -85
- package/dist/utils/base62.cjs.map +0 -1
- package/dist/utils/base62.d.cts +0 -6
- package/dist/utils/base62.d.ts +0 -6
- package/dist/utils/base62.mjs +0 -60
- package/dist/utils/base62.mjs.map +0 -1
- package/dist/utils/fetch.cjs +0 -78
- package/dist/utils/fetch.cjs.map +0 -1
- package/dist/utils/fetch.d.cts +0 -16
- package/dist/utils/fetch.d.ts +0 -16
- package/dist/utils/fetch.mjs +0 -53
- package/dist/utils/fetch.mjs.map +0 -1
- package/dist/utils/invariant.cjs +0 -37
- package/dist/utils/invariant.cjs.map +0 -1
- package/dist/utils/invariant.d.cts +0 -3
- package/dist/utils/invariant.d.ts +0 -3
- package/dist/utils/invariant.mjs +0 -12
- package/dist/utils/invariant.mjs.map +0 -1
- package/dist/utils/promise.cjs +0 -47
- package/dist/utils/promise.cjs.map +0 -1
- package/dist/utils/promise.d.cts +0 -3
- package/dist/utils/promise.d.ts +0 -3
- package/dist/utils/promise.mjs +0 -22
- package/dist/utils/promise.mjs.map +0 -1
- package/dist/utils/string.cjs +0 -33
- package/dist/utils/string.cjs.map +0 -1
- package/dist/utils/string.d.cts +0 -6
- package/dist/utils/string.d.ts +0 -6
- package/dist/utils/string.mjs +0 -8
- package/dist/utils/string.mjs.map +0 -1
- package/dist/utils/token-bucket.cjs +0 -73
- package/dist/utils/token-bucket.cjs.map +0 -1
- package/dist/utils/token-bucket.d.cts +0 -20
- package/dist/utils/token-bucket.d.ts +0 -20
- package/dist/utils/token-bucket.mjs +0 -48
- package/dist/utils/token-bucket.mjs.map +0 -1
package/dist/error/parse.cjs
CHANGED
|
@@ -25,7 +25,19 @@ __export(parse_exports, {
|
|
|
25
25
|
getFieldViolations: () => getFieldViolations
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(parse_exports);
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
// ../utils/dist/index.mjs
|
|
30
|
+
var import_token_bucket = require("./token-bucket.mjs.cjs");
|
|
31
|
+
var import_fetch = require("./fetch.mjs.cjs");
|
|
32
|
+
var import_base62 = require("./base62.mjs.cjs");
|
|
33
|
+
var import_string = require("./string.mjs.cjs");
|
|
34
|
+
var import_promise = require("./promise.mjs.cjs");
|
|
35
|
+
var import_invariant = require("./invariant.mjs.cjs");
|
|
36
|
+
var import_throttle = require("./throttle.mjs.cjs");
|
|
37
|
+
var import_storage = require("./storage.mjs.cjs");
|
|
38
|
+
var import_stripe = require("./stripe.mjs.cjs");
|
|
39
|
+
|
|
40
|
+
// src/error/parse.ts
|
|
29
41
|
var import_detail = require("./detail.cjs");
|
|
30
42
|
function getErrorReason(data) {
|
|
31
43
|
if (typeof data !== "object" || data === null || !("error" in data)) return "UNKNOWN";
|
package/dist/error/parse.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '
|
|
1
|
+
{"version":3,"sources":["../../src/error/parse.ts","../../../utils/src/index.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","export { TokenBucket, type TokenBucketOptions } from './token-bucket';\nexport { fetch, type RetryOptions } from './fetch';\nexport { base62 } from './base62';\nexport { hasText } from './string';\nexport { once } from './promise';\nexport { invariant } from './invariant';\nexport { throttle } from './throttle';\nexport { expiringStorage } from './storage';\nexport { stripeMinorUnits, ZERO_DECIMAL_CURRENCIES } from './stripe';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,0BAAqD;AACrD,mBAAyC;AACzC,oBAAuB;AACvB,oBAAwB;AACxB,qBAAqB;AACrB,uBAA0B;AAC1B,sBAAyB;AACzB,qBAAgC;AAChC,oBAA0D;;;ADP1D,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":[]}
|
package/dist/error/parse.mjs
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
// ../utils/dist/index.mjs
|
|
2
|
+
import { TokenBucket } from "./token-bucket.mjs.mjs";
|
|
3
|
+
import { fetch } from "./fetch.mjs.mjs";
|
|
4
|
+
import { base62 } from "./base62.mjs.mjs";
|
|
5
|
+
import { hasText } from "./string.mjs.mjs";
|
|
6
|
+
import { once } from "./promise.mjs.mjs";
|
|
7
|
+
import { invariant } from "./invariant.mjs.mjs";
|
|
8
|
+
import { throttle } from "./throttle.mjs.mjs";
|
|
9
|
+
import { expiringStorage } from "./storage.mjs.mjs";
|
|
10
|
+
import { stripeMinorUnits, ZERO_DECIMAL_CURRENCIES } from "./stripe.mjs.mjs";
|
|
11
|
+
|
|
1
12
|
// src/error/parse.ts
|
|
2
|
-
import { hasText } from "../utils/string.mjs";
|
|
3
13
|
import { DetailType } from "./detail.mjs";
|
|
4
14
|
function getErrorReason(data) {
|
|
5
15
|
if (typeof data !== "object" || data === null || !("error" in data)) return "UNKNOWN";
|
package/dist/error/parse.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '
|
|
1
|
+
{"version":3,"sources":["../../../utils/src/index.ts","../../src/error/parse.ts"],"sourcesContent":["export { TokenBucket, type TokenBucketOptions } from './token-bucket';\nexport { fetch, type RetryOptions } from './fetch';\nexport { base62 } from './base62';\nexport { hasText } from './string';\nexport { once } from './promise';\nexport { invariant } from './invariant';\nexport { throttle } from './throttle';\nexport { expiringStorage } from './storage';\nexport { stripeMinorUnits, ZERO_DECIMAL_CURRENCIES } from './stripe';\n","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,mBAA4C;AACrD,SAAS,aAAgC;AACzC,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC,SAAS,kBAAkB,+BAA+B;;;ACP1D,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":[]}
|
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
|
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 {\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 {
|
|
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
|
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 {\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 {
|
|
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,20 @@ __export(response_exports, {
|
|
|
27
27
|
pageParamsSchema: () => pageParamsSchema
|
|
28
28
|
});
|
|
29
29
|
module.exports = __toCommonJS(response_exports);
|
|
30
|
+
|
|
31
|
+
// ../utils/dist/index.mjs
|
|
32
|
+
var import_token_bucket = require("./token-bucket.mjs.cjs");
|
|
33
|
+
var import_fetch = require("./fetch.mjs.cjs");
|
|
34
|
+
var import_base62 = require("./base62.mjs.cjs");
|
|
35
|
+
var import_string = require("./string.mjs.cjs");
|
|
36
|
+
var import_promise = require("./promise.mjs.cjs");
|
|
37
|
+
var import_invariant = require("./invariant.mjs.cjs");
|
|
38
|
+
var import_throttle = require("./throttle.mjs.cjs");
|
|
39
|
+
var import_storage = require("./storage.mjs.cjs");
|
|
40
|
+
var import_stripe = require("./stripe.mjs.cjs");
|
|
41
|
+
|
|
42
|
+
// src/response.ts
|
|
30
43
|
var import_mini = require("zod/mini");
|
|
31
|
-
var import_string = require("./utils/string.cjs");
|
|
32
44
|
function pageParamsSchema(max = 100, defaultLimit = 20) {
|
|
33
45
|
return (0, import_mini.object)({
|
|
34
46
|
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),
|
package/dist/response.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\
|
|
1
|
+
{"version":3,"sources":["../src/response.ts","../../utils/src/index.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","export { TokenBucket, type TokenBucketOptions } from './token-bucket';\nexport { fetch, type RetryOptions } from './fetch';\nexport { base62 } from './base62';\nexport { hasText } from './string';\nexport { once } from './promise';\nexport { invariant } from './invariant';\nexport { throttle } from './throttle';\nexport { expiringStorage } from './storage';\nexport { stripeMinorUnits, ZERO_DECIMAL_CURRENCIES } from './stripe';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,0BAAqD;AACrD,mBAAyC;AACzC,oBAAuB;AACvB,oBAAwB;AACxB,qBAAqB;AACrB,uBAA0B;AAC1B,sBAAyB;AACzB,qBAAgC;AAChC,oBAA0D;;;ADP1D,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,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.mjs
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
+
// ../utils/dist/index.mjs
|
|
2
|
+
import { TokenBucket } from "./token-bucket.mjs.mjs";
|
|
3
|
+
import { fetch } from "./fetch.mjs.mjs";
|
|
4
|
+
import { base62 } from "./base62.mjs.mjs";
|
|
5
|
+
import { hasText } from "./string.mjs.mjs";
|
|
6
|
+
import { once } from "./promise.mjs.mjs";
|
|
7
|
+
import { invariant } from "./invariant.mjs.mjs";
|
|
8
|
+
import { throttle } from "./throttle.mjs.mjs";
|
|
9
|
+
import { expiringStorage } from "./storage.mjs.mjs";
|
|
10
|
+
import { stripeMinorUnits, ZERO_DECIMAL_CURRENCIES } from "./stripe.mjs.mjs";
|
|
11
|
+
|
|
1
12
|
// src/response.ts
|
|
2
13
|
import { _default, coerce, int, maximum, minimum, object, optional, string } from "zod/mini";
|
|
3
|
-
import { hasText } from "./utils/string.mjs";
|
|
4
14
|
function pageParamsSchema(max = 100, defaultLimit = 20) {
|
|
5
15
|
return object({
|
|
6
16
|
limit: _default(coerce.number().check(int(), minimum(1), maximum(max)), defaultLimit),
|
package/dist/response.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/response.ts"],"sourcesContent":["import { _default, coerce, int, maximum, minimum, object, optional, string } from 'zod/mini';\
|
|
1
|
+
{"version":3,"sources":["../../utils/src/index.ts","../src/response.ts"],"sourcesContent":["export { TokenBucket, type TokenBucketOptions } from './token-bucket';\nexport { fetch, type RetryOptions } from './fetch';\nexport { base62 } from './base62';\nexport { hasText } from './string';\nexport { once } from './promise';\nexport { invariant } from './invariant';\nexport { throttle } from './throttle';\nexport { expiringStorage } from './storage';\nexport { stripeMinorUnits, ZERO_DECIMAL_CURRENCIES } from './stripe';\n","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,mBAA4C;AACrD,SAAS,aAAgC;AACzC,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC,SAAS,kBAAkB,+BAA+B;;;ACP1D,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.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"ts-jest": "^29.4.6",
|
|
46
46
|
"typescript": "^5.9.3",
|
|
47
47
|
"@repo/eslint-config": "0.0.10",
|
|
48
|
-
"@repo/typescript-config": "0.0.0"
|
|
48
|
+
"@repo/typescript-config": "0.0.0",
|
|
49
|
+
"@shware/utils": "^1.0.1"
|
|
49
50
|
},
|
|
50
51
|
"dependencies": {
|
|
51
52
|
"zod": "^4.1.13"
|
|
@@ -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,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,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":[]}
|
package/dist/utils/base62.cjs
DELETED
|
@@ -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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/base62.ts"],"sourcesContent":["export const base62 = {\n encode: (buffer: Buffer): string => {\n const base = 62n;\n const charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n let leadingZeros = 0;\n for (const byte of buffer) {\n if (byte === 0) leadingZeros++;\n else break;\n }\n\n let num = BigInt('0x' + buffer.toString('hex'));\n if (num === 0n) return '0'.repeat(buffer.length);\n\n const chars: string[] = [];\n while (num > 0n) {\n const remainder = num % base;\n chars.push(charset[Number(remainder)]!);\n num /= base;\n }\n\n return '0'.repeat(leadingZeros) + chars.reverse().join('');\n },\n decode: (string: string, expectedLength?: number): Buffer => {\n const base = 62n;\n const charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n\n let leadingZeros = 0;\n for (const ch of string) {\n if (ch === '0') leadingZeros++;\n else break;\n }\n\n if (leadingZeros === string.length) {\n return Buffer.alloc(expectedLength ?? leadingZeros);\n }\n\n let num = 0n;\n for (let i = leadingZeros; i < string.length; i++) {\n const ch = string[i];\n const idx = charset.indexOf(ch);\n if (idx === -1) {\n throw new Error(`Invalid base62 character: ${ch}`);\n }\n num = num * base + BigInt(idx);\n }\n\n let hex = num.toString(16);\n if (hex.length % 2 !== 0) hex = '0' + hex;\n let buf = Buffer.from(hex, 'hex');\n\n if (leadingZeros > 0) {\n buf = Buffer.concat([Buffer.alloc(leadingZeros), buf]);\n }\n\n if (expectedLength !== undefined) {\n if (buf.length < expectedLength) {\n buf = Buffer.concat([Buffer.alloc(expectedLength - buf.length), buf]);\n } else if (buf.length > expectedLength) {\n buf = buf.subarray(buf.length - expectedLength);\n }\n }\n\n return buf;\n },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,SAAS;AAAA,EACpB,QAAQ,CAAC,WAA2B;AAClC,UAAM,OAAO;AACb,UAAM,UAAU;AAChB,QAAI,eAAe;AACnB,eAAW,QAAQ,QAAQ;AACzB,UAAI,SAAS,EAAG;AAAA,UACX;AAAA,IACP;AAEA,QAAI,MAAM,OAAO,OAAO,OAAO,SAAS,KAAK,CAAC;AAC9C,QAAI,QAAQ,GAAI,QAAO,IAAI,OAAO,OAAO,MAAM;AAE/C,UAAM,QAAkB,CAAC;AACzB,WAAO,MAAM,IAAI;AACf,YAAM,YAAY,MAAM;AACxB,YAAM,KAAK,QAAQ,OAAO,SAAS,CAAC,CAAE;AACtC,aAAO;AAAA,IACT;AAEA,WAAO,IAAI,OAAO,YAAY,IAAI,MAAM,QAAQ,EAAE,KAAK,EAAE;AAAA,EAC3D;AAAA,EACA,QAAQ,CAAC,QAAgB,mBAAoC;AAC3D,UAAM,OAAO;AACb,UAAM,UAAU;AAEhB,QAAI,eAAe;AACnB,eAAW,MAAM,QAAQ;AACvB,UAAI,OAAO,IAAK;AAAA,UACX;AAAA,IACP;AAEA,QAAI,iBAAiB,OAAO,QAAQ;AAClC,aAAO,OAAO,MAAM,kBAAkB,YAAY;AAAA,IACpD;AAEA,QAAI,MAAM;AACV,aAAS,IAAI,cAAc,IAAI,OAAO,QAAQ,KAAK;AACjD,YAAM,KAAK,OAAO,CAAC;AACnB,YAAM,MAAM,QAAQ,QAAQ,EAAE;AAC9B,UAAI,QAAQ,IAAI;AACd,cAAM,IAAI,MAAM,6BAA6B,EAAE,EAAE;AAAA,MACnD;AACA,YAAM,MAAM,OAAO,OAAO,GAAG;AAAA,IAC/B;AAEA,QAAI,MAAM,IAAI,SAAS,EAAE;AACzB,QAAI,IAAI,SAAS,MAAM,EAAG,OAAM,MAAM;AACtC,QAAI,MAAM,OAAO,KAAK,KAAK,KAAK;AAEhC,QAAI,eAAe,GAAG;AACpB,YAAM,OAAO,OAAO,CAAC,OAAO,MAAM,YAAY,GAAG,GAAG,CAAC;AAAA,IACvD;AAEA,QAAI,mBAAmB,QAAW;AAChC,UAAI,IAAI,SAAS,gBAAgB;AAC/B,cAAM,OAAO,OAAO,CAAC,OAAO,MAAM,iBAAiB,IAAI,MAAM,GAAG,GAAG,CAAC;AAAA,MACtE,WAAW,IAAI,SAAS,gBAAgB;AACtC,cAAM,IAAI,SAAS,IAAI,SAAS,cAAc;AAAA,MAChD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
|