@shware/http 1.2.0 → 1.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 (207) hide show
  1. package/dist/__tests__/index.test.cjs +27 -0
  2. package/dist/__tests__/index.test.cjs.map +1 -0
  3. package/dist/__tests__/index.test.d.cts +2 -0
  4. package/dist/__tests__/index.test.d.ts +2 -0
  5. package/dist/__tests__/index.test.mjs +25 -0
  6. package/dist/__tests__/index.test.mjs.map +1 -0
  7. package/dist/cache/index.cjs +32 -0
  8. package/dist/cache/index.cjs.map +1 -0
  9. package/dist/cache/index.d.cts +9 -0
  10. package/dist/cache/index.d.ts +9 -0
  11. package/dist/cache/index.mjs +7 -0
  12. package/dist/cache/index.mjs.map +1 -0
  13. package/dist/error/detail.cjs +93 -0
  14. package/dist/error/detail.cjs.map +1 -0
  15. package/dist/error/detail.d.cts +99 -0
  16. package/dist/error/detail.d.ts +99 -0
  17. package/dist/error/detail.mjs +67 -0
  18. package/dist/error/detail.mjs.map +1 -0
  19. package/dist/error/i18n/en-us.cjs +31 -0
  20. package/dist/error/i18n/en-us.cjs.map +1 -0
  21. package/dist/error/i18n/en-us.d.cts +3 -0
  22. package/dist/error/i18n/en-us.d.ts +3 -0
  23. package/dist/error/i18n/en-us.mjs +6 -0
  24. package/dist/error/i18n/en-us.mjs.map +1 -0
  25. package/dist/error/index.cjs +63 -0
  26. package/dist/error/index.cjs.map +1 -0
  27. package/dist/error/index.d.cts +19 -0
  28. package/dist/error/index.d.ts +19 -0
  29. package/dist/error/index.mjs +35 -0
  30. package/dist/error/index.mjs.map +1 -0
  31. package/dist/error/parse.cjs +52 -0
  32. package/dist/error/parse.cjs.map +1 -0
  33. package/dist/error/parse.d.cts +16 -0
  34. package/dist/error/parse.d.ts +16 -0
  35. package/dist/error/parse.mjs +27 -0
  36. package/dist/error/parse.mjs.map +1 -0
  37. package/dist/error/reason.cjs +19 -0
  38. package/dist/error/reason.cjs.map +1 -0
  39. package/dist/error/reason.d.cts +66 -0
  40. package/dist/error/reason.d.ts +66 -0
  41. package/dist/error/reason.mjs +1 -0
  42. package/dist/error/reason.mjs.map +1 -0
  43. package/dist/error/status.cjs +266 -0
  44. package/dist/error/status.cjs.map +1 -0
  45. package/dist/error/status.d.cts +69 -0
  46. package/dist/error/status.d.ts +69 -0
  47. package/dist/error/status.mjs +237 -0
  48. package/dist/error/status.mjs.map +1 -0
  49. package/dist/google-one-tap/index.cjs +51 -0
  50. package/dist/google-one-tap/index.cjs.map +1 -0
  51. package/dist/google-one-tap/index.d.cts +17 -0
  52. package/dist/google-one-tap/index.d.ts +17 -0
  53. package/dist/google-one-tap/index.mjs +26 -0
  54. package/dist/google-one-tap/index.mjs.map +1 -0
  55. package/dist/google-one-tap/types.cjs +19 -0
  56. package/dist/google-one-tap/types.cjs.map +1 -0
  57. package/dist/google-one-tap/types.d.cts +155 -0
  58. package/dist/google-one-tap/types.d.ts +155 -0
  59. package/dist/google-one-tap/types.mjs +1 -0
  60. package/dist/google-one-tap/types.mjs.map +1 -0
  61. package/dist/hono/__tests__/authorizer.test.cjs +483 -0
  62. package/dist/hono/__tests__/authorizer.test.cjs.map +1 -0
  63. package/dist/hono/__tests__/authorizer.test.d.cts +2 -0
  64. package/dist/hono/__tests__/authorizer.test.d.ts +2 -0
  65. package/dist/hono/__tests__/authorizer.test.mjs +481 -0
  66. package/dist/hono/__tests__/authorizer.test.mjs.map +1 -0
  67. package/dist/hono/__tests__/csrf.test.cjs +162 -0
  68. package/dist/hono/__tests__/csrf.test.cjs.map +1 -0
  69. package/dist/hono/__tests__/csrf.test.d.cts +2 -0
  70. package/dist/hono/__tests__/csrf.test.d.ts +2 -0
  71. package/dist/hono/__tests__/csrf.test.mjs +160 -0
  72. package/dist/hono/__tests__/csrf.test.mjs.map +1 -0
  73. package/dist/hono/authorizer.cjs +67 -0
  74. package/dist/hono/authorizer.cjs.map +1 -0
  75. package/dist/hono/authorizer.d.cts +18 -0
  76. package/dist/hono/authorizer.d.ts +18 -0
  77. package/dist/hono/authorizer.mjs +42 -0
  78. package/dist/hono/authorizer.mjs.map +1 -0
  79. package/dist/hono/csrf.cjs +95 -0
  80. package/dist/hono/csrf.cjs.map +1 -0
  81. package/dist/hono/csrf.d.cts +65 -0
  82. package/dist/hono/csrf.d.ts +65 -0
  83. package/dist/hono/csrf.mjs +70 -0
  84. package/dist/hono/csrf.mjs.map +1 -0
  85. package/dist/hono/geolocation.cjs +75 -0
  86. package/dist/hono/geolocation.cjs.map +1 -0
  87. package/dist/hono/geolocation.d.cts +17 -0
  88. package/dist/hono/geolocation.d.ts +17 -0
  89. package/dist/hono/geolocation.mjs +50 -0
  90. package/dist/hono/geolocation.mjs.map +1 -0
  91. package/dist/hono/handler.cjs +68 -0
  92. package/dist/hono/handler.cjs.map +1 -0
  93. package/dist/hono/handler.d.cts +13 -0
  94. package/dist/hono/handler.d.ts +13 -0
  95. package/dist/hono/handler.mjs +42 -0
  96. package/dist/hono/handler.mjs.map +1 -0
  97. package/dist/hono/index.cjs +45 -0
  98. package/dist/hono/index.cjs.map +1 -0
  99. package/dist/hono/index.d.cts +12 -0
  100. package/dist/hono/index.d.ts +12 -0
  101. package/dist/hono/index.mjs +15 -0
  102. package/dist/hono/index.mjs.map +1 -0
  103. package/dist/hono/validator.cjs +64 -0
  104. package/dist/hono/validator.cjs.map +1 -0
  105. package/dist/hono/validator.d.cts +28 -0
  106. package/dist/hono/validator.d.ts +28 -0
  107. package/dist/hono/validator.mjs +38 -0
  108. package/dist/hono/validator.mjs.map +1 -0
  109. package/dist/index-BnPgRQDl.d.cts +129 -0
  110. package/dist/index-BnPgRQDl.d.ts +129 -0
  111. package/dist/index.cjs +91 -0
  112. package/dist/index.cjs.map +1 -0
  113. package/dist/index.d.cts +18 -0
  114. package/dist/index.d.ts +18 -0
  115. package/dist/index.mjs +46 -0
  116. package/dist/index.mjs.map +1 -0
  117. package/dist/iso/iso_3601_1.cjs +292 -0
  118. package/dist/iso/iso_3601_1.cjs.map +1 -0
  119. package/dist/iso/iso_3601_1.d.cts +9 -0
  120. package/dist/iso/iso_3601_1.d.ts +9 -0
  121. package/dist/iso/iso_3601_1.mjs +267 -0
  122. package/dist/iso/iso_3601_1.mjs.map +1 -0
  123. package/dist/max-length/index.cjs +94 -0
  124. package/dist/max-length/index.cjs.map +1 -0
  125. package/dist/max-length/index.d.cts +1 -0
  126. package/dist/max-length/index.d.ts +1 -0
  127. package/dist/max-length/index.mjs +48 -0
  128. package/dist/max-length/index.mjs.map +1 -0
  129. package/dist/message.cjs +32 -0
  130. package/dist/message.cjs.map +1 -0
  131. package/dist/message.d.cts +3 -0
  132. package/dist/message.d.ts +3 -0
  133. package/dist/message.mjs +7 -0
  134. package/dist/message.mjs.map +1 -0
  135. package/dist/polyfills/index.cjs +7 -0
  136. package/dist/polyfills/index.cjs.map +1 -0
  137. package/dist/polyfills/index.d.cts +2 -0
  138. package/dist/polyfills/index.d.ts +2 -0
  139. package/dist/polyfills/index.mjs +5 -0
  140. package/dist/polyfills/index.mjs.map +1 -0
  141. package/dist/response.cjs +73 -0
  142. package/dist/response.cjs.map +1 -0
  143. package/dist/response.d.cts +65 -0
  144. package/dist/response.d.ts +65 -0
  145. package/dist/response.mjs +44 -0
  146. package/dist/response.mjs.map +1 -0
  147. package/dist/snowflake.cjs +75 -0
  148. package/dist/snowflake.cjs.map +1 -0
  149. package/dist/snowflake.d.cts +29 -0
  150. package/dist/snowflake.d.ts +29 -0
  151. package/dist/snowflake.mjs +49 -0
  152. package/dist/snowflake.mjs.map +1 -0
  153. package/dist/utils/__tests__/ip.test.cjs +38 -0
  154. package/dist/utils/__tests__/ip.test.cjs.map +1 -0
  155. package/dist/utils/__tests__/ip.test.d.cts +2 -0
  156. package/dist/utils/__tests__/ip.test.d.ts +2 -0
  157. package/dist/utils/__tests__/ip.test.mjs +36 -0
  158. package/dist/utils/__tests__/ip.test.mjs.map +1 -0
  159. package/dist/utils/invariant.cjs +37 -0
  160. package/dist/utils/invariant.cjs.map +1 -0
  161. package/dist/utils/invariant.d.cts +3 -0
  162. package/dist/utils/invariant.d.ts +3 -0
  163. package/dist/utils/invariant.mjs +12 -0
  164. package/dist/utils/invariant.mjs.map +1 -0
  165. package/dist/utils/ip.cjs +53 -0
  166. package/dist/utils/ip.cjs.map +1 -0
  167. package/dist/utils/ip.d.cts +3 -0
  168. package/dist/utils/ip.d.ts +3 -0
  169. package/dist/utils/ip.mjs +28 -0
  170. package/dist/utils/ip.mjs.map +1 -0
  171. package/dist/utils/promise.cjs +47 -0
  172. package/dist/utils/promise.cjs.map +1 -0
  173. package/dist/utils/promise.d.cts +3 -0
  174. package/dist/utils/promise.d.ts +3 -0
  175. package/dist/utils/promise.mjs +22 -0
  176. package/dist/utils/promise.mjs.map +1 -0
  177. package/dist/utils/string.cjs +33 -0
  178. package/dist/utils/string.cjs.map +1 -0
  179. package/dist/utils/string.d.cts +6 -0
  180. package/dist/utils/string.d.ts +6 -0
  181. package/dist/utils/string.mjs +8 -0
  182. package/dist/utils/string.mjs.map +1 -0
  183. package/dist/utils/timing.cjs +74 -0
  184. package/dist/utils/timing.cjs.map +1 -0
  185. package/dist/utils/timing.d.cts +13 -0
  186. package/dist/utils/timing.d.ts +13 -0
  187. package/dist/utils/timing.mjs +49 -0
  188. package/dist/utils/timing.mjs.map +1 -0
  189. package/dist/utils/token-bucket.cjs +73 -0
  190. package/dist/utils/token-bucket.cjs.map +1 -0
  191. package/dist/utils/token-bucket.d.cts +20 -0
  192. package/dist/utils/token-bucket.d.ts +20 -0
  193. package/dist/utils/token-bucket.mjs +48 -0
  194. package/dist/utils/token-bucket.mjs.map +1 -0
  195. package/dist/vaild.cjs +51 -0
  196. package/dist/vaild.cjs.map +1 -0
  197. package/dist/vaild.d.cts +13 -0
  198. package/dist/vaild.d.ts +13 -0
  199. package/dist/vaild.mjs +26 -0
  200. package/dist/vaild.mjs.map +1 -0
  201. package/dist/webhook/index.cjs +77 -0
  202. package/dist/webhook/index.cjs.map +1 -0
  203. package/dist/webhook/index.d.cts +10 -0
  204. package/dist/webhook/index.d.ts +10 -0
  205. package/dist/webhook/index.mjs +52 -0
  206. package/dist/webhook/index.mjs.map +1 -0
  207. package/package.json +3 -3
@@ -0,0 +1,19 @@
1
+ declare class LoginTimeoutError extends Error {
2
+ constructor(timeout: number);
3
+ }
4
+ declare class LoginCanceledError extends Error {
5
+ constructor();
6
+ }
7
+ declare class CheckoutCreateError extends Error {
8
+ constructor();
9
+ }
10
+ declare enum PurchaseError {
11
+ LOGIN_TIMEOUT = "LOGIN_TIMEOUT",
12
+ LOGIN_CANCELED = "LOGIN_CANCELED",
13
+ CHECKOUT_CANCELED = "CHECKOUT_CANCELED",
14
+ CHECKOUT_CREATE_FAILED = "CHECKOUT_CREATE_FAILED",
15
+ CHECKOUT_SESSION_ID_NOT_FOUND = "CHECKOUT_SESSION_ID_NOT_FOUND",
16
+ UNKNOWN = "UNKNOWN"
17
+ }
18
+
19
+ export { CheckoutCreateError, LoginCanceledError, LoginTimeoutError, PurchaseError };
@@ -0,0 +1,19 @@
1
+ declare class LoginTimeoutError extends Error {
2
+ constructor(timeout: number);
3
+ }
4
+ declare class LoginCanceledError extends Error {
5
+ constructor();
6
+ }
7
+ declare class CheckoutCreateError extends Error {
8
+ constructor();
9
+ }
10
+ declare enum PurchaseError {
11
+ LOGIN_TIMEOUT = "LOGIN_TIMEOUT",
12
+ LOGIN_CANCELED = "LOGIN_CANCELED",
13
+ CHECKOUT_CANCELED = "CHECKOUT_CANCELED",
14
+ CHECKOUT_CREATE_FAILED = "CHECKOUT_CREATE_FAILED",
15
+ CHECKOUT_SESSION_ID_NOT_FOUND = "CHECKOUT_SESSION_ID_NOT_FOUND",
16
+ UNKNOWN = "UNKNOWN"
17
+ }
18
+
19
+ export { CheckoutCreateError, LoginCanceledError, LoginTimeoutError, PurchaseError };
@@ -0,0 +1,35 @@
1
+ // src/error/index.ts
2
+ var LoginTimeoutError = class extends Error {
3
+ constructor(timeout) {
4
+ super(`Login timeout after ${timeout}ms`);
5
+ this.name = "LoginTimeoutError";
6
+ }
7
+ };
8
+ var LoginCanceledError = class extends Error {
9
+ constructor() {
10
+ super("Login canceled by user");
11
+ this.name = "LoginCanceledError";
12
+ }
13
+ };
14
+ var CheckoutCreateError = class extends Error {
15
+ constructor() {
16
+ super("Failed to create checkout session");
17
+ this.name = "SessionCreateError";
18
+ }
19
+ };
20
+ var PurchaseError = /* @__PURE__ */ ((PurchaseError2) => {
21
+ PurchaseError2["LOGIN_TIMEOUT"] = "LOGIN_TIMEOUT";
22
+ PurchaseError2["LOGIN_CANCELED"] = "LOGIN_CANCELED";
23
+ PurchaseError2["CHECKOUT_CANCELED"] = "CHECKOUT_CANCELED";
24
+ PurchaseError2["CHECKOUT_CREATE_FAILED"] = "CHECKOUT_CREATE_FAILED";
25
+ PurchaseError2["CHECKOUT_SESSION_ID_NOT_FOUND"] = "CHECKOUT_SESSION_ID_NOT_FOUND";
26
+ PurchaseError2["UNKNOWN"] = "UNKNOWN";
27
+ return PurchaseError2;
28
+ })(PurchaseError || {});
29
+ export {
30
+ CheckoutCreateError,
31
+ LoginCanceledError,
32
+ LoginTimeoutError,
33
+ PurchaseError
34
+ };
35
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/index.ts"],"sourcesContent":["export class LoginTimeoutError extends Error {\n constructor(timeout: number) {\n super(`Login timeout after ${timeout}ms`);\n this.name = 'LoginTimeoutError';\n }\n}\n\nexport class LoginCanceledError extends Error {\n constructor() {\n super('Login canceled by user');\n this.name = 'LoginCanceledError';\n }\n}\n\nexport class CheckoutCreateError extends Error {\n constructor() {\n super('Failed to create checkout session');\n this.name = 'SessionCreateError';\n }\n}\n\nexport enum PurchaseError {\n LOGIN_TIMEOUT = 'LOGIN_TIMEOUT',\n LOGIN_CANCELED = 'LOGIN_CANCELED',\n CHECKOUT_CANCELED = 'CHECKOUT_CANCELED',\n CHECKOUT_CREATE_FAILED = 'CHECKOUT_CREATE_FAILED',\n CHECKOUT_SESSION_ID_NOT_FOUND = 'CHECKOUT_SESSION_ID_NOT_FOUND',\n UNKNOWN = 'UNKNOWN',\n}\n"],"mappings":";AAAO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAC3C,YAAY,SAAiB;AAC3B,UAAM,uBAAuB,OAAO,IAAI;AACxC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,cAAc;AACZ,UAAM,wBAAwB;AAC9B,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAC7C,cAAc;AACZ,UAAM,mCAAmC;AACzC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAK,gBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,oBAAiB;AACjB,EAAAA,eAAA,uBAAoB;AACpB,EAAAA,eAAA,4BAAyB;AACzB,EAAAA,eAAA,mCAAgC;AAChC,EAAAA,eAAA,aAAU;AANA,SAAAA;AAAA,GAAA;","names":["PurchaseError"]}
@@ -0,0 +1,52 @@
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/error/parse.ts
21
+ var parse_exports = {};
22
+ __export(parse_exports, {
23
+ getErrorMessage: () => getErrorMessage
24
+ });
25
+ module.exports = __toCommonJS(parse_exports);
26
+ var import_string = require("../utils/string.cjs");
27
+ var import_detail = require("./detail.cjs");
28
+ function getErrorMessage(data, t) {
29
+ if (typeof data !== "object" || data === null || !("error" in data)) {
30
+ console.error("Unknown API error:", data);
31
+ return { reason: "UNKNOWN", message: t("UNKNOWN") };
32
+ }
33
+ const { error } = data;
34
+ const localizedMessage = error.details.find((d) => d.type === import_detail.DetailType.LOCALIZED_MESSAGE);
35
+ if (localizedMessage) return { reason: "LOCALIZED_MESSAGE", message: localizedMessage.message };
36
+ const errorInfo = error.details.find((d) => d.type === import_detail.DetailType.ERROR_INFO);
37
+ if (errorInfo) {
38
+ return {
39
+ reason: errorInfo.reason,
40
+ message: t(errorInfo.reason, errorInfo.metadata)
41
+ };
42
+ }
43
+ if ((0, import_string.hasText)(error.message)) return { reason: "ERROR_MESSAGE", message: error.message };
44
+ if (error.status) return { reason: error.status, message: t(error.status) };
45
+ console.error("Unknown API error:", data);
46
+ return { reason: "UNKNOWN", message: t("UNKNOWN") };
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ getErrorMessage
51
+ });
52
+ //# sourceMappingURL=parse.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '../utils/string';\nimport { DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\n/**\n * @example For axios:\n *\n * const { t } = useTranslation('error');\n *\n * const { message } = getErrorMessage(error.response.data, t);\n * toast.error(message);\n */\nexport function getErrorMessage<Ns extends Namespace = DefaultNamespace, KPrefix = undefined>(\n data: unknown,\n t: TFunction<Ns, KPrefix>\n): { reason: string; message: string } {\n // 0. unknown error\n if (typeof data !== 'object' || data === null || !('error' in data)) {\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n }\n\n const { error } = data as ErrorBody;\n\n // 1. from server via Accept-Language header or lng param\n const localizedMessage = error.details.find((d) => d.type === DetailType.LOCALIZED_MESSAGE);\n if (localizedMessage) return { reason: 'LOCALIZED_MESSAGE', message: localizedMessage.message };\n\n // 2. from business logic error\n const errorInfo = error.details.find((d) => d.type === DetailType.ERROR_INFO);\n if (errorInfo) {\n return {\n reason: errorInfo.reason,\n message: t(errorInfo.reason, errorInfo.metadata),\n };\n }\n\n // 3. error message in english\n if (hasText(error.message)) return { reason: 'ERROR_MESSAGE', message: error.message };\n\n // 4. from server via status code\n if (error.status) return { reason: error.status, message: t(error.status) };\n\n // 5. unknown error\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AACxB,oBAA2B;AAYpB,SAAS,gBACd,MACA,GACqC;AAErC,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,OAAO;AACnE,YAAQ,MAAM,sBAAsB,IAAI;AACxC,WAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AAAA,EACpD;AAEA,QAAM,EAAE,MAAM,IAAI;AAGlB,QAAM,mBAAmB,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,yBAAW,iBAAiB;AAC1F,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,yBAAW,UAAU;AAC5E,MAAI,WAAW;AACb,WAAO;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,SAAS,EAAE,UAAU,QAAQ,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF;AAGA,UAAI,uBAAQ,MAAM,OAAO,EAAG,QAAO,EAAE,QAAQ,iBAAiB,SAAS,MAAM,QAAQ;AAGrF,MAAI,MAAM,OAAQ,QAAO,EAAE,QAAQ,MAAM,QAAQ,SAAS,EAAE,MAAM,MAAM,EAAE;AAG1E,UAAQ,MAAM,sBAAsB,IAAI;AACxC,SAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AACpD;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { Namespace, DefaultNamespace, TFunction } from 'i18next';
2
+
3
+ /**
4
+ * @example For axios:
5
+ *
6
+ * const { t } = useTranslation('error');
7
+ *
8
+ * const { message } = getErrorMessage(error.response.data, t);
9
+ * toast.error(message);
10
+ */
11
+ declare function getErrorMessage<Ns extends Namespace = DefaultNamespace, KPrefix = undefined>(data: unknown, t: TFunction<Ns, KPrefix>): {
12
+ reason: string;
13
+ message: string;
14
+ };
15
+
16
+ export { getErrorMessage };
@@ -0,0 +1,16 @@
1
+ import { Namespace, DefaultNamespace, TFunction } from 'i18next';
2
+
3
+ /**
4
+ * @example For axios:
5
+ *
6
+ * const { t } = useTranslation('error');
7
+ *
8
+ * const { message } = getErrorMessage(error.response.data, t);
9
+ * toast.error(message);
10
+ */
11
+ declare function getErrorMessage<Ns extends Namespace = DefaultNamespace, KPrefix = undefined>(data: unknown, t: TFunction<Ns, KPrefix>): {
12
+ reason: string;
13
+ message: string;
14
+ };
15
+
16
+ export { getErrorMessage };
@@ -0,0 +1,27 @@
1
+ // src/error/parse.ts
2
+ import { hasText } from "../utils/string.mjs";
3
+ import { DetailType } from "./detail.mjs";
4
+ function getErrorMessage(data, t) {
5
+ if (typeof data !== "object" || data === null || !("error" in data)) {
6
+ console.error("Unknown API error:", data);
7
+ return { reason: "UNKNOWN", message: t("UNKNOWN") };
8
+ }
9
+ const { error } = data;
10
+ const localizedMessage = error.details.find((d) => d.type === DetailType.LOCALIZED_MESSAGE);
11
+ if (localizedMessage) return { reason: "LOCALIZED_MESSAGE", message: localizedMessage.message };
12
+ const errorInfo = error.details.find((d) => d.type === DetailType.ERROR_INFO);
13
+ if (errorInfo) {
14
+ return {
15
+ reason: errorInfo.reason,
16
+ message: t(errorInfo.reason, errorInfo.metadata)
17
+ };
18
+ }
19
+ if (hasText(error.message)) return { reason: "ERROR_MESSAGE", message: error.message };
20
+ if (error.status) return { reason: error.status, message: t(error.status) };
21
+ console.error("Unknown API error:", data);
22
+ return { reason: "UNKNOWN", message: t("UNKNOWN") };
23
+ }
24
+ export {
25
+ getErrorMessage
26
+ };
27
+ //# sourceMappingURL=parse.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/parse.ts"],"sourcesContent":["import { hasText } from '../utils/string';\nimport { DetailType } from './detail';\nimport type { ErrorBody } from './status';\nimport type { DefaultNamespace, Namespace, TFunction } from 'i18next';\n\n/**\n * @example For axios:\n *\n * const { t } = useTranslation('error');\n *\n * const { message } = getErrorMessage(error.response.data, t);\n * toast.error(message);\n */\nexport function getErrorMessage<Ns extends Namespace = DefaultNamespace, KPrefix = undefined>(\n data: unknown,\n t: TFunction<Ns, KPrefix>\n): { reason: string; message: string } {\n // 0. unknown error\n if (typeof data !== 'object' || data === null || !('error' in data)) {\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n }\n\n const { error } = data as ErrorBody;\n\n // 1. from server via Accept-Language header or lng param\n const localizedMessage = error.details.find((d) => d.type === DetailType.LOCALIZED_MESSAGE);\n if (localizedMessage) return { reason: 'LOCALIZED_MESSAGE', message: localizedMessage.message };\n\n // 2. from business logic error\n const errorInfo = error.details.find((d) => d.type === DetailType.ERROR_INFO);\n if (errorInfo) {\n return {\n reason: errorInfo.reason,\n message: t(errorInfo.reason, errorInfo.metadata),\n };\n }\n\n // 3. error message in english\n if (hasText(error.message)) return { reason: 'ERROR_MESSAGE', message: error.message };\n\n // 4. from server via status code\n if (error.status) return { reason: error.status, message: t(error.status) };\n\n // 5. unknown error\n console.error('Unknown API error:', data);\n return { reason: 'UNKNOWN', message: t('UNKNOWN') };\n}\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAYpB,SAAS,gBACd,MACA,GACqC;AAErC,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,EAAE,WAAW,OAAO;AACnE,YAAQ,MAAM,sBAAsB,IAAI;AACxC,WAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AAAA,EACpD;AAEA,QAAM,EAAE,MAAM,IAAI;AAGlB,QAAM,mBAAmB,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,iBAAiB;AAC1F,MAAI,iBAAkB,QAAO,EAAE,QAAQ,qBAAqB,SAAS,iBAAiB,QAAQ;AAG9F,QAAM,YAAY,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,UAAU;AAC5E,MAAI,WAAW;AACb,WAAO;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,SAAS,EAAE,UAAU,QAAQ,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF;AAGA,MAAI,QAAQ,MAAM,OAAO,EAAG,QAAO,EAAE,QAAQ,iBAAiB,SAAS,MAAM,QAAQ;AAGrF,MAAI,MAAM,OAAQ,QAAO,EAAE,QAAQ,MAAM,QAAQ,SAAS,EAAE,MAAM,MAAM,EAAE;AAG1E,UAAQ,MAAM,sBAAsB,IAAI;AACxC,SAAO,EAAE,QAAQ,WAAW,SAAS,EAAE,SAAS,EAAE;AACpD;","names":[]}
@@ -0,0 +1,19 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/error/reason.ts
17
+ var reason_exports = {};
18
+ module.exports = __toCommonJS(reason_exports);
19
+ //# sourceMappingURL=reason.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/reason.ts"],"sourcesContent":["export interface NetworkErrorReason {\n DNS_ERROR: string;\n MISCONFIGURATION: string;\n CONNECTION_ERROR: string;\n}\n\nexport interface StatusErrorReason {\n OK: string;\n CANCELLED: string;\n UNKNOWN: string;\n INVALID_ARGUMENT: string;\n DEADLINE_EXCEEDED: string;\n NOT_FOUND: string;\n ALREADY_EXISTS: string;\n PERMISSION_DENIED: string;\n RESOURCE_EXHAUSTED: string;\n FAILED_PRECONDITION: string;\n ABORTED: string;\n OUT_OF_RANGE: string;\n UNIMPLEMENTED: string;\n INTERNAL: string;\n UNAVAILABLE: string;\n DATA_LOSS: string;\n UNAUTHENTICATED: string;\n // other http status code\n}\n\nexport interface AuthenticationErrorReason {\n ACCOUNT_LOCKED: string;\n ACCOUNT_EXPIRED: string;\n ACCOUNT_INACTIVE: string;\n ACCOUNT_DISABLED: string;\n ACCOUNT_SUSPENDED: string;\n ACCESS_DENIED: string;\n ACCESS_TOKEN_REQUIRED: string;\n PASSWORD_MISMATCH: string;\n USERNAME_ALREADY_EXISTS: string;\n VERIFICATION_CODE_MISMATCH: string;\n VERIFICATION_CODE_SEND_FAILED: string;\n}\n\nexport interface ModerationErrorReason {\n POSSIBLY_SENSITIVE: string;\n ADULT_CONTENT: string;\n NUDITY_CONTENT: string;\n SEXUAL_CONTENT: string;\n BLOODY_CONTENT: string;\n WEAPON_CONTENT: string;\n POLITICS_CONTENT: string;\n VIOLENCE_CONTENT: string;\n ABUSE_CONTENT: string;\n ADVERTISEMENT_CONTENT: string;\n CONTRABAND_CONTENT: string;\n SPAM_CONTENT: string;\n MEANINGLESS_CONTENT: string;\n UNSAFE_TEXT_DETECTED: string;\n}\n\nexport interface MultipartErrorReason {\n MAX_UPLOAD_SIZE_EXCEEDED: string;\n MEDIA_TYPE_NOT_SUPPORTED: string;\n MEDIA_TYPE_NOT_ACCEPTABLE: string;\n}\n\nexport interface AppErrorReason {\n RATE_LIMIT_EXCEEDED: string;\n INSUFFICIENT_CREDITS: string;\n ALREADY_SUBSCRIBED_AT_OTHER_PLATFORM: string;\n}\n\nexport type ErrorReason = NetworkErrorReason &\n StatusErrorReason &\n AuthenticationErrorReason &\n ModerationErrorReason &\n MultipartErrorReason &\n AppErrorReason;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,66 @@
1
+ interface NetworkErrorReason {
2
+ DNS_ERROR: string;
3
+ MISCONFIGURATION: string;
4
+ CONNECTION_ERROR: string;
5
+ }
6
+ interface StatusErrorReason {
7
+ OK: string;
8
+ CANCELLED: string;
9
+ UNKNOWN: string;
10
+ INVALID_ARGUMENT: string;
11
+ DEADLINE_EXCEEDED: string;
12
+ NOT_FOUND: string;
13
+ ALREADY_EXISTS: string;
14
+ PERMISSION_DENIED: string;
15
+ RESOURCE_EXHAUSTED: string;
16
+ FAILED_PRECONDITION: string;
17
+ ABORTED: string;
18
+ OUT_OF_RANGE: string;
19
+ UNIMPLEMENTED: string;
20
+ INTERNAL: string;
21
+ UNAVAILABLE: string;
22
+ DATA_LOSS: string;
23
+ UNAUTHENTICATED: string;
24
+ }
25
+ interface AuthenticationErrorReason {
26
+ ACCOUNT_LOCKED: string;
27
+ ACCOUNT_EXPIRED: string;
28
+ ACCOUNT_INACTIVE: string;
29
+ ACCOUNT_DISABLED: string;
30
+ ACCOUNT_SUSPENDED: string;
31
+ ACCESS_DENIED: string;
32
+ ACCESS_TOKEN_REQUIRED: string;
33
+ PASSWORD_MISMATCH: string;
34
+ USERNAME_ALREADY_EXISTS: string;
35
+ VERIFICATION_CODE_MISMATCH: string;
36
+ VERIFICATION_CODE_SEND_FAILED: string;
37
+ }
38
+ interface ModerationErrorReason {
39
+ POSSIBLY_SENSITIVE: string;
40
+ ADULT_CONTENT: string;
41
+ NUDITY_CONTENT: string;
42
+ SEXUAL_CONTENT: string;
43
+ BLOODY_CONTENT: string;
44
+ WEAPON_CONTENT: string;
45
+ POLITICS_CONTENT: string;
46
+ VIOLENCE_CONTENT: string;
47
+ ABUSE_CONTENT: string;
48
+ ADVERTISEMENT_CONTENT: string;
49
+ CONTRABAND_CONTENT: string;
50
+ SPAM_CONTENT: string;
51
+ MEANINGLESS_CONTENT: string;
52
+ UNSAFE_TEXT_DETECTED: string;
53
+ }
54
+ interface MultipartErrorReason {
55
+ MAX_UPLOAD_SIZE_EXCEEDED: string;
56
+ MEDIA_TYPE_NOT_SUPPORTED: string;
57
+ MEDIA_TYPE_NOT_ACCEPTABLE: string;
58
+ }
59
+ interface AppErrorReason {
60
+ RATE_LIMIT_EXCEEDED: string;
61
+ INSUFFICIENT_CREDITS: string;
62
+ ALREADY_SUBSCRIBED_AT_OTHER_PLATFORM: string;
63
+ }
64
+ type ErrorReason = NetworkErrorReason & StatusErrorReason & AuthenticationErrorReason & ModerationErrorReason & MultipartErrorReason & AppErrorReason;
65
+
66
+ export type { AppErrorReason, AuthenticationErrorReason, ErrorReason, ModerationErrorReason, MultipartErrorReason, NetworkErrorReason, StatusErrorReason };
@@ -0,0 +1,66 @@
1
+ interface NetworkErrorReason {
2
+ DNS_ERROR: string;
3
+ MISCONFIGURATION: string;
4
+ CONNECTION_ERROR: string;
5
+ }
6
+ interface StatusErrorReason {
7
+ OK: string;
8
+ CANCELLED: string;
9
+ UNKNOWN: string;
10
+ INVALID_ARGUMENT: string;
11
+ DEADLINE_EXCEEDED: string;
12
+ NOT_FOUND: string;
13
+ ALREADY_EXISTS: string;
14
+ PERMISSION_DENIED: string;
15
+ RESOURCE_EXHAUSTED: string;
16
+ FAILED_PRECONDITION: string;
17
+ ABORTED: string;
18
+ OUT_OF_RANGE: string;
19
+ UNIMPLEMENTED: string;
20
+ INTERNAL: string;
21
+ UNAVAILABLE: string;
22
+ DATA_LOSS: string;
23
+ UNAUTHENTICATED: string;
24
+ }
25
+ interface AuthenticationErrorReason {
26
+ ACCOUNT_LOCKED: string;
27
+ ACCOUNT_EXPIRED: string;
28
+ ACCOUNT_INACTIVE: string;
29
+ ACCOUNT_DISABLED: string;
30
+ ACCOUNT_SUSPENDED: string;
31
+ ACCESS_DENIED: string;
32
+ ACCESS_TOKEN_REQUIRED: string;
33
+ PASSWORD_MISMATCH: string;
34
+ USERNAME_ALREADY_EXISTS: string;
35
+ VERIFICATION_CODE_MISMATCH: string;
36
+ VERIFICATION_CODE_SEND_FAILED: string;
37
+ }
38
+ interface ModerationErrorReason {
39
+ POSSIBLY_SENSITIVE: string;
40
+ ADULT_CONTENT: string;
41
+ NUDITY_CONTENT: string;
42
+ SEXUAL_CONTENT: string;
43
+ BLOODY_CONTENT: string;
44
+ WEAPON_CONTENT: string;
45
+ POLITICS_CONTENT: string;
46
+ VIOLENCE_CONTENT: string;
47
+ ABUSE_CONTENT: string;
48
+ ADVERTISEMENT_CONTENT: string;
49
+ CONTRABAND_CONTENT: string;
50
+ SPAM_CONTENT: string;
51
+ MEANINGLESS_CONTENT: string;
52
+ UNSAFE_TEXT_DETECTED: string;
53
+ }
54
+ interface MultipartErrorReason {
55
+ MAX_UPLOAD_SIZE_EXCEEDED: string;
56
+ MEDIA_TYPE_NOT_SUPPORTED: string;
57
+ MEDIA_TYPE_NOT_ACCEPTABLE: string;
58
+ }
59
+ interface AppErrorReason {
60
+ RATE_LIMIT_EXCEEDED: string;
61
+ INSUFFICIENT_CREDITS: string;
62
+ ALREADY_SUBSCRIBED_AT_OTHER_PLATFORM: string;
63
+ }
64
+ type ErrorReason = NetworkErrorReason & StatusErrorReason & AuthenticationErrorReason & ModerationErrorReason & MultipartErrorReason & AppErrorReason;
65
+
66
+ export type { AppErrorReason, AuthenticationErrorReason, ErrorReason, ModerationErrorReason, MultipartErrorReason, NetworkErrorReason, StatusErrorReason };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=reason.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,266 @@
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/error/status.ts
21
+ var status_exports = {};
22
+ __export(status_exports, {
23
+ Code: () => Code,
24
+ DEFAULT_MESSAGES: () => DEFAULT_MESSAGES,
25
+ Status: () => Status,
26
+ StatusCode: () => StatusCode,
27
+ StatusError: () => StatusError
28
+ });
29
+ module.exports = __toCommonJS(status_exports);
30
+ var Code = {
31
+ // Not an error; returned on success
32
+ //
33
+ // HTTP Mapping: 200 OK
34
+ OK: 200,
35
+ // The operation was cancelled, typically by the caller.
36
+ //
37
+ // HTTP Mapping: 499 Client Closed Request
38
+ CANCELLED: 499,
39
+ // Unknown error. For example, this error may be returned when
40
+ // a `Status` value received from another address space belongs to
41
+ // an error space that is not known in this address space. Also,
42
+ // errors raised by APIs that do not return enough error information
43
+ // may be converted to this error.
44
+ //
45
+ // HTTP Mapping: 500 Internal Server Error
46
+ UNKNOWN: 500,
47
+ // The client specified an invalid argument. Note that this differs
48
+ // from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments
49
+ // that are problematic regardless of the state of the system
50
+ // (e.g., a malformed file name).
51
+ //
52
+ // HTTP Mapping: 400 Bad Request
53
+ INVALID_ARGUMENT: 400,
54
+ // The deadline expired before the operation could complete. For operations
55
+ // that change the state of the system, this error may be returned
56
+ // even if the operation has completed successfully. For example, a
57
+ // successful response from a server could have been delayed long
58
+ // enough for the deadline to expire.
59
+ //
60
+ // HTTP Mapping: 504 Gateway Timeout
61
+ DEADLINE_EXCEEDED: 504,
62
+ // Some requested entity (e.g., file or directory) was not found.
63
+ //
64
+ // Note to server developers: if a request is denied for an entire class
65
+ // of users, such as gradual feature rollout or undocumented whitelist,
66
+ // `NOT_FOUND` may be used. If a request is denied for some users within
67
+ // a class of users, such as user-based access control, `PERMISSION_DENIED`
68
+ // must be used.
69
+ //
70
+ // HTTP Mapping: 404 Not Found
71
+ NOT_FOUND: 404,
72
+ // The entity that a client attempted to create (e.g., file or directory)
73
+ // already exists.
74
+ //
75
+ // HTTP Mapping: 409 Conflict
76
+ ALREADY_EXISTS: 409,
77
+ // The caller does not have permission to execute the specified
78
+ // operation. `PERMISSION_DENIED` must not be used for rejections
79
+ // caused by exhausting some resource (use `RESOURCE_EXHAUSTED`
80
+ // instead for those errors). `PERMISSION_DENIED` must not be
81
+ // used if the caller can not be identified (use `UNAUTHENTICATED`
82
+ // instead for those errors). This error code does not imply the
83
+ // request is valid or the requested entity exists or satisfies
84
+ // other pre-conditions.
85
+ //
86
+ // HTTP Mapping: 403 Forbidden
87
+ PERMISSION_DENIED: 403,
88
+ // Some resource has been exhausted, perhaps a per-user quota, or
89
+ // perhaps the entire file system is out of space.
90
+ //
91
+ // HTTP Mapping: 429 Too Many Requests
92
+ RESOURCE_EXHAUSTED: 429,
93
+ // The operation was rejected because the system is not in a state
94
+ // required for the operation's execution. For example, the directory
95
+ // to be deleted is non-empty, a rmdir operation is applied to
96
+ // a non-directory, etc.
97
+ //
98
+ // Service implementors can use the following guidelines to decide
99
+ // between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:
100
+ // (a) Use `UNAVAILABLE` if the client can retry just the failing call.
101
+ // (b) Use `ABORTED` if the client should retry at a higher level
102
+ // (e.g., when a client-specified test-and-set fails, indicating the
103
+ // client should restart a read-modify-write sequence).
104
+ // (c) Use `FAILED_PRECONDITION` if the client should not retry until
105
+ // the system state has been explicitly fixed. E.g., if a "rmdir"
106
+ // fails because the directory is non-empty, `FAILED_PRECONDITION`
107
+ // should be returned since the client should not retry unless
108
+ // the files are deleted from the directory.
109
+ //
110
+ // HTTP Mapping: 400 Bad Request
111
+ FAILED_PRECONDITION: 400,
112
+ // The operation was aborted, typically due to a concurrency issue such as
113
+ // a sequencer check failure or transaction abort.
114
+ //
115
+ // See the guidelines above for deciding between `FAILED_PRECONDITION`,
116
+ // `ABORTED`, and `UNAVAILABLE`.
117
+ //
118
+ // HTTP Mapping: 409 Conflict
119
+ ABORTED: 409,
120
+ // The operation was attempted past the valid range. E.g., seeking or
121
+ // reading past end-of-file.
122
+ //
123
+ // Unlike `INVALID_ARGUMENT`, this error indicates a problem that may
124
+ // be fixed if the system state changes. For example, a 32-bit file
125
+ // system will generate `INVALID_ARGUMENT` if asked to read at an
126
+ // offset that is not in the range [0,2^32-1], but it will generate
127
+ // `OUT_OF_RANGE` if asked to read from an offset past the current
128
+ // file size.
129
+ //
130
+ // There is a fair bit of overlap between `FAILED_PRECONDITION` and
131
+ // `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific
132
+ // error) when it applies so that callers who are iterating through
133
+ // a space can easily look for an `OUT_OF_RANGE` error to detect when
134
+ // they are done.
135
+ //
136
+ // HTTP Mapping: 400 Bad Request
137
+ OUT_OF_RANGE: 400,
138
+ // The operation is not implemented or is not supported/enabled in this
139
+ // service.
140
+ //
141
+ // HTTP Mapping: 501 Not Implemented
142
+ UNIMPLEMENTED: 501,
143
+ // Internal errors. This means that some invariants expected by the
144
+ // underlying system have been broken. This error code is reserved
145
+ // for serious errors.
146
+ //
147
+ // HTTP Mapping: 500 Internal Server Error
148
+ INTERNAL: 500,
149
+ // The service is currently unavailable. This is most likely a
150
+ // transient condition, which can be corrected by retrying with
151
+ // a backoff. Note that it is not always safe to retry
152
+ // non-idempotent operations.
153
+ //
154
+ // See the guidelines above for deciding between `FAILED_PRECONDITION`,
155
+ // `ABORTED`, and `UNAVAILABLE`.
156
+ //
157
+ // HTTP Mapping: 503 Service Unavailable
158
+ UNAVAILABLE: 503,
159
+ // Unrecoverable data loss or corruption.
160
+ //
161
+ // HTTP Mapping: 500 Internal Server Error
162
+ DATA_LOSS: 500,
163
+ // The request does not have valid authentication credentials for the
164
+ // operation.
165
+ //
166
+ // HTTP Mapping: 401 Unauthorized
167
+ UNAUTHENTICATED: 401,
168
+ // The request method is not supported by the server and cannot be handled.
169
+ //
170
+ // HTTP Mapping: 405 Method Not Allowed
171
+ METHOD_NOT_ALLOWED: 405
172
+ };
173
+ var DEFAULT_MESSAGES = {
174
+ OK: "OK",
175
+ CANCELLED: "The operation was cancelled",
176
+ UNKNOWN: "Unknown error",
177
+ INVALID_ARGUMENT: "The client specified an invalid argument",
178
+ DEADLINE_EXCEEDED: "The deadline expired before the operation could complete",
179
+ NOT_FOUND: "Some requested entity was not found",
180
+ ALREADY_EXISTS: "The entity that a client attempted to create already exists",
181
+ PERMISSION_DENIED: "The caller does not have permission to execute the specified operation",
182
+ RESOURCE_EXHAUSTED: "Some resource has been exhausted",
183
+ FAILED_PRECONDITION: "The operation was rejected because the system is not in a state required for the operation's execution",
184
+ ABORTED: "The operation was aborted",
185
+ OUT_OF_RANGE: "The operation was attempted past the valid range",
186
+ UNIMPLEMENTED: "The operation is not implemented or is not supported/enabled in this service",
187
+ INTERNAL: "Internal errors",
188
+ UNAVAILABLE: "The service is currently unavailable",
189
+ DATA_LOSS: "Unrecoverable data loss or corruption",
190
+ UNAUTHENTICATED: "The request does not have valid authentication credentials for the operation",
191
+ METHOD_NOT_ALLOWED: "The request method is not supported by the server and cannot be handled"
192
+ };
193
+ var StatusError = class _StatusError extends Error {
194
+ status;
195
+ body;
196
+ constructor(status, body) {
197
+ super(body?.error?.message ?? `Status Error: ${status}`);
198
+ this.name = "StatusError";
199
+ this.status = status;
200
+ this.body = body;
201
+ if (Error.captureStackTrace) {
202
+ Error.captureStackTrace(this, _StatusError);
203
+ }
204
+ Object.setPrototypeOf(this, _StatusError.prototype);
205
+ }
206
+ };
207
+ var StatusCode = class _StatusCode {
208
+ code;
209
+ message;
210
+ constructor(code, message) {
211
+ this.code = code;
212
+ this.message = message;
213
+ }
214
+ static of(code, message) {
215
+ return new _StatusCode(code, message ?? DEFAULT_MESSAGES[code]);
216
+ }
217
+ body(details) {
218
+ return {
219
+ error: {
220
+ code: Code[this.code],
221
+ status: this.code,
222
+ message: this.message ?? "",
223
+ details: details?.list ?? []
224
+ }
225
+ };
226
+ }
227
+ error(details) {
228
+ const body = this.body(details);
229
+ if (Status.adapter) return Status.adapter(Code[this.code], body);
230
+ return new StatusError(Code[this.code], body);
231
+ }
232
+ response(details) {
233
+ const body = this.body(details);
234
+ return Response.json(body, { status: body.error.code });
235
+ }
236
+ };
237
+ var Status = class {
238
+ static adapter;
239
+ static ok = (message) => StatusCode.of("OK", message);
240
+ static cancelled = (message) => StatusCode.of("CANCELLED", message);
241
+ static unknown = (message) => StatusCode.of("UNKNOWN", message);
242
+ static invalidArgument = (message) => StatusCode.of("INVALID_ARGUMENT", message);
243
+ static deadlineExceeded = (message) => StatusCode.of("DEADLINE_EXCEEDED", message);
244
+ static notFound = (message) => StatusCode.of("NOT_FOUND", message);
245
+ static alreadyExists = (message) => StatusCode.of("ALREADY_EXISTS", message);
246
+ static permissionDenied = (message) => StatusCode.of("PERMISSION_DENIED", message);
247
+ static unauthorized = (message) => StatusCode.of("UNAUTHENTICATED", message);
248
+ static resourceExhausted = (message) => StatusCode.of("RESOURCE_EXHAUSTED", message);
249
+ static failedPrecondition = (message) => StatusCode.of("FAILED_PRECONDITION", message);
250
+ static aborted = (message) => StatusCode.of("ABORTED", message);
251
+ static outOfRange = (message) => StatusCode.of("OUT_OF_RANGE", message);
252
+ static unimplemented = (message) => StatusCode.of("UNIMPLEMENTED", message);
253
+ static internal = (message) => StatusCode.of("INTERNAL", message);
254
+ static unavailable = (message) => StatusCode.of("UNAVAILABLE", message);
255
+ static dataLoss = (message) => StatusCode.of("DATA_LOSS", message);
256
+ static methodNotAllowed = (message) => StatusCode.of("METHOD_NOT_ALLOWED", message);
257
+ };
258
+ // Annotate the CommonJS export names for ESM import in node:
259
+ 0 && (module.exports = {
260
+ Code,
261
+ DEFAULT_MESSAGES,
262
+ Status,
263
+ StatusCode,
264
+ StatusError
265
+ });
266
+ //# sourceMappingURL=status.cjs.map