@adgytec/adgytec-web-utils 0.0.4 → 0.0.6

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 (52) hide show
  1. package/dist/chunks/create +24 -0
  2. package/dist/chunks/create.map +1 -0
  3. package/dist/chunks/decode +24 -23
  4. package/dist/chunks/decode.map +1 -0
  5. package/dist/chunks/formParse +1 -0
  6. package/dist/chunks/formParse.map +1 -0
  7. package/dist/chunks/parse +30 -12
  8. package/dist/chunks/parse.map +1 -0
  9. package/dist/chunks/schema +270 -244
  10. package/dist/chunks/schema.map +1 -0
  11. package/dist/chunks/server +148 -0
  12. package/dist/chunks/server.map +1 -0
  13. package/dist/chunks/{upload → uploadDetails} +120 -118
  14. package/dist/chunks/uploadDetails.map +1 -0
  15. package/dist/constants/index.d.ts +2 -1
  16. package/dist/constants/index.js +10 -7
  17. package/dist/constants/index.js.map +1 -0
  18. package/dist/constants/media_limits.d.ts +2 -0
  19. package/dist/errorCodes/auth.d.ts +3 -0
  20. package/dist/errorCodes/common.d.ts +2 -0
  21. package/dist/errorCodes/iam.d.ts +2 -0
  22. package/dist/errorCodes/index.d.ts +6 -5
  23. package/dist/errorCodes/index.js +32 -85
  24. package/dist/errorCodes/index.js.map +1 -0
  25. package/dist/errorCodes/media.d.ts +2 -0
  26. package/dist/errorCodes/overrides.d.ts +2 -0
  27. package/dist/errorCodes/pagination.d.ts +2 -0
  28. package/dist/errorCodes/reqBody.d.ts +2 -0
  29. package/dist/errorCodes/server.d.ts +2 -0
  30. package/dist/errorSchema/create.d.ts +2 -0
  31. package/dist/errorSchema/index.d.ts +7 -6
  32. package/dist/errorSchema/index.js +32 -28
  33. package/dist/errorSchema/index.js.map +1 -0
  34. package/dist/errorSchema/media.d.ts +1 -1
  35. package/dist/errorSchema/schema.d.ts +1 -1
  36. package/dist/errors/index.d.ts +2 -1
  37. package/dist/errors/index.js +5 -3
  38. package/dist/errors/index.js.map +1 -0
  39. package/dist/errors/normalization.d.ts +12 -0
  40. package/dist/errors/parse.d.ts +2 -3
  41. package/dist/index.js +115 -99
  42. package/dist/index.js.map +1 -0
  43. package/dist/media/index.d.ts +2 -2
  44. package/dist/media/index.js +2 -1
  45. package/dist/media/index.js.map +1 -0
  46. package/dist/media/mediaInfo.d.ts +1 -1
  47. package/dist/media/types/index.d.ts +3 -3
  48. package/dist/media/upload.d.ts +1 -1
  49. package/dist/response/index.js +1 -0
  50. package/dist/response/index.js.map +1 -0
  51. package/package.json +13 -6
  52. package/dist/chunks/applicationError +0 -28
@@ -0,0 +1,24 @@
1
+ import { m as a } from "./server";
2
+ import { A as d } from "./schema";
3
+ function n(o, r) {
4
+ const e = {
5
+ code: a.mediaItemsLimitExceeded,
6
+ currentLength: o,
7
+ maxItemsSupported: r
8
+ };
9
+ throw new d(e.code, e);
10
+ }
11
+ function c(o, r, e) {
12
+ const i = {
13
+ code: a.mediaTooLarge,
14
+ mediaID: o,
15
+ currentSize: r,
16
+ maxSupportedSize: e
17
+ };
18
+ throw new d(i.code, i);
19
+ }
20
+ export {
21
+ c as a,
22
+ n
23
+ };
24
+ //# sourceMappingURL=create.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create","sources":["../../src/errorSchema/create.ts"],"sourcesContent":["import type z from \"zod\";\nimport { mediaCodes } from \"../errorCodes\";\nimport { ApplicationError } from \"../errors\";\nimport type {\n mediaItemsLimitExceededSchema,\n mediaTooLargeSchema,\n} from \"./media\";\n\ntype MediaItemsLimitExceeded = z.infer<typeof mediaItemsLimitExceededSchema>;\n\nexport function newMediaItemsLimitExceedError(\n currentLength: number,\n maxItemsSupported: number\n): never {\n const errObj: MediaItemsLimitExceeded = {\n code: mediaCodes.mediaItemsLimitExceeded,\n currentLength,\n maxItemsSupported,\n };\n throw new ApplicationError(errObj.code, errObj);\n}\n\ntype MediaTooLarge = z.infer<typeof mediaTooLargeSchema>;\n\nexport function newMediaTooLargeError(\n fileName: string,\n currentSize: number,\n maxSupportedSize: number\n): never {\n // use file as mediaID to handle client side error\n const errObj: MediaTooLarge = {\n code: mediaCodes.mediaTooLarge,\n mediaID: fileName,\n currentSize,\n maxSupportedSize,\n };\n throw new ApplicationError(errObj.code, errObj);\n}\n"],"names":["newMediaItemsLimitExceedError","currentLength","maxItemsSupported","errObj","mediaCodes","ApplicationError","newMediaTooLargeError","fileName","currentSize","maxSupportedSize"],"mappings":";;AAUO,SAASA,EACZC,GACAC,GACK;AACL,QAAMC,IAAkC;AAAA,IACpC,MAAMC,EAAW;AAAA,IACjB,eAAAH;AAAA,IACA,mBAAAC;AAAA,EAAA;AAEJ,QAAM,IAAIG,EAAiBF,EAAO,MAAMA,CAAM;AAClD;AAIO,SAASG,EACZC,GACAC,GACAC,GACK;AAEL,QAAMN,IAAwB;AAAA,IAC1B,MAAMC,EAAW;AAAA,IACjB,SAASG;AAAA,IACT,aAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA;AAEJ,QAAM,IAAIJ,EAAiBF,EAAO,MAAMA,CAAM;AAClD;"}
@@ -1,50 +1,51 @@
1
+ import { s as n } from "./server";
2
+ import { A as o } from "./schema";
1
3
  import a from "zod";
2
- import { A as s } from "./applicationError";
3
- import { serverCodes as t } from "../errorCodes/index.js";
4
- function c(e, o) {
4
+ const i = a.object({
5
+ code: a.string()
6
+ }).loose();
7
+ function c(e, s) {
8
+ const r = i.safeParse(s);
9
+ throw r.success ? new o(r.data.code, r.data) : e >= 500 ? new o(n.internalServerError) : new o(n.unknownServerError, {
10
+ payload: s
11
+ });
12
+ }
13
+ function p(e, s) {
5
14
  if (!e)
6
- throw new s(t.invalidResponseShape, {
15
+ throw new o(n.invalidResponseShape, {
7
16
  message: "Expected response body but received empty response",
8
17
  payload: e
9
18
  });
10
- const r = o.safeParse(e);
19
+ const r = s.safeParse(e);
11
20
  if (r.success) return r.data;
12
- throw new s(t.invalidResponseShape, {
21
+ throw new o(n.invalidResponseShape, {
13
22
  message: r.error.message,
14
23
  payload: e
15
24
  });
16
25
  }
17
- const i = a.object({
18
- code: a.string()
19
- }).loose();
20
- function p(e, o) {
21
- const r = i.safeParse(o);
22
- throw r.success ? new s(r.data.code, r.data) : e >= 500 ? new s(t.internalServerError) : new s(t.unknownServerError, {
23
- payload: o
24
- });
25
- }
26
- async function u(e, o) {
27
- if (!o && e.ok)
26
+ async function d(e, s) {
27
+ if (!s && e.ok)
28
28
  return null;
29
29
  let r;
30
30
  try {
31
31
  r = await e.text();
32
32
  } catch {
33
- throw new s(t.malformedResponseBody, {
33
+ throw new o(n.malformedResponseBody, {
34
34
  response: e
35
35
  });
36
36
  }
37
- let n;
37
+ let t;
38
38
  if (r.length > 0)
39
39
  try {
40
- n = JSON.parse(r);
40
+ t = JSON.parse(r);
41
41
  } catch {
42
- throw new s(t.malformedJsonFromServer, {
42
+ throw new o(n.malformedJsonFromServer, {
43
43
  response: e
44
44
  });
45
45
  }
46
- return e.ok ? c(n, o) : p(e.status, n);
46
+ return e.ok ? s ? p(t, s) : null : c(e.status, t);
47
47
  }
48
48
  export {
49
- u as d
49
+ d
50
50
  };
51
+ //# sourceMappingURL=decode.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode","sources":["../../src/response/errorResponse.ts","../../src/response/successReponse.ts","../../src/response/decode.ts"],"sourcesContent":["import z from \"zod\";\nimport { serverCodes } from \"../errorCodes\";\nimport { ApplicationError } from \"../errors\";\n\nconst serverErrorSchema = z\n .object({\n code: z.string(),\n })\n .loose();\n\nexport function parseErrorResponse(status: number, payload: unknown): never {\n const result = serverErrorSchema.safeParse(payload);\n if (result.success) {\n throw new ApplicationError(result.data.code, result.data);\n }\n\n if (status >= 500) {\n throw new ApplicationError(serverCodes.internalServerError);\n }\n\n throw new ApplicationError(serverCodes.unknownServerError, {\n payload,\n });\n}\n","import type z from \"zod\";\nimport { serverCodes } from \"../errorCodes\";\nimport { ApplicationError } from \"../errors\";\n\nexport function parseSuccessReponse<T>(\n payload: unknown,\n schema: z.ZodSchema<T>\n): T {\n if (!payload) {\n throw new ApplicationError(serverCodes.invalidResponseShape, {\n message: \"Expected response body but received empty response\",\n payload: payload,\n });\n }\n\n const parsed = schema.safeParse(payload);\n if (parsed.success) return parsed.data;\n\n throw new ApplicationError(serverCodes.invalidResponseShape, {\n message: parsed.error.message,\n payload: payload,\n });\n}\n","import type z from \"zod\";\nimport { serverCodes } from \"../errorCodes\";\nimport { ApplicationError } from \"../errors\";\nimport { parseErrorResponse } from \"./errorResponse\";\nimport { parseSuccessReponse } from \"./successReponse\";\n\n// overloaded functions\nexport function decodeAPIResponse<T>(\n res: Response,\n schema: z.ZodSchema<T>\n): Promise<T>;\n\nexport function decodeAPIResponse(res: Response): Promise<null>;\n\nexport async function decodeAPIResponse<T>(\n res: Response,\n schema?: z.ZodSchema<T>\n): Promise<T | null> {\n // no need to handle response body\n // caller expects no response\n if (!schema && res.ok) {\n return null;\n }\n\n let raw: string;\n try {\n raw = await res.text();\n } catch {\n throw new ApplicationError(serverCodes.malformedResponseBody, {\n response: res,\n });\n }\n\n let payload: unknown;\n if (raw.length > 0) {\n try {\n payload = JSON.parse(raw);\n } catch {\n throw new ApplicationError(serverCodes.malformedJsonFromServer, {\n response: res,\n });\n }\n }\n\n if (res.ok) {\n if (schema) return parseSuccessReponse(payload, schema);\n return null;\n }\n\n return parseErrorResponse(res.status, payload);\n}\n"],"names":["serverErrorSchema","z","parseErrorResponse","status","payload","result","ApplicationError","serverCodes","parseSuccessReponse","schema","parsed","decodeAPIResponse","res","raw"],"mappings":";;;AAIA,MAAMA,IAAoBC,EACrB,OAAO;AAAA,EACJ,MAAMA,EAAE,OAAA;AACZ,CAAC,EACA,MAAA;AAEE,SAASC,EAAmBC,GAAgBC,GAAyB;AACxE,QAAMC,IAASL,EAAkB,UAAUI,CAAO;AAClD,QAAIC,EAAO,UACD,IAAIC,EAAiBD,EAAO,KAAK,MAAMA,EAAO,IAAI,IAGxDF,KAAU,MACJ,IAAIG,EAAiBC,EAAY,mBAAmB,IAGxD,IAAID,EAAiBC,EAAY,oBAAoB;AAAA,IACvD,SAAAH;AAAA,EAAA,CACH;AACL;ACnBO,SAASI,EACZJ,GACAK,GACC;AACD,MAAI,CAACL;AACD,UAAM,IAAIE,EAAiBC,EAAY,sBAAsB;AAAA,MACzD,SAAS;AAAA,MACT,SAAAH;AAAA,IAAA,CACH;AAGL,QAAMM,IAASD,EAAO,UAAUL,CAAO;AACvC,MAAIM,EAAO,QAAS,QAAOA,EAAO;AAElC,QAAM,IAAIJ,EAAiBC,EAAY,sBAAsB;AAAA,IACzD,SAASG,EAAO,MAAM;AAAA,IACtB,SAAAN;AAAA,EAAA,CACH;AACL;ACRA,eAAsBO,EAClBC,GACAH,GACiB;AAGjB,MAAI,CAACA,KAAUG,EAAI;AACf,WAAO;AAGX,MAAIC;AACJ,MAAI;AACA,IAAAA,IAAM,MAAMD,EAAI,KAAA;AAAA,EACpB,QAAQ;AACJ,UAAM,IAAIN,EAAiBC,EAAY,uBAAuB;AAAA,MAC1D,UAAUK;AAAA,IAAA,CACb;AAAA,EACL;AAEA,MAAIR;AACJ,MAAIS,EAAI,SAAS;AACb,QAAI;AACA,MAAAT,IAAU,KAAK,MAAMS,CAAG;AAAA,IAC5B,QAAQ;AACJ,YAAM,IAAIP,EAAiBC,EAAY,yBAAyB;AAAA,QAC5D,UAAUK;AAAA,MAAA,CACb;AAAA,IACL;AAGJ,SAAIA,EAAI,KACAH,IAAeD,EAAoBJ,GAASK,CAAM,IAC/C,OAGJP,EAAmBU,EAAI,QAAQR,CAAO;AACjD;"}
@@ -9,3 +9,4 @@ function t(s, n = "") {
9
9
  export {
10
10
  t as f
11
11
  };
12
+ //# sourceMappingURL=formParse.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formParse","sources":["../../src/errorSchema/formParse.ts"],"sourcesContent":["import type { FieldNode } from \"./form\";\nimport type { FormFieldError } from \"./formField\";\n\nexport type FlattenedErrors = Record<string, FormFieldError[]>;\n\nexport function flattenFieldNodes(\n nodes: FieldNode[],\n parentKey = \"\"\n): FlattenedErrors {\n const result: FlattenedErrors = {};\n\n for (const node of nodes) {\n const currentKey = parentKey ? `${parentKey}.${node.key}` : node.key;\n\n if (\"errors\" in node) {\n result[currentKey] = node.errors;\n } else {\n Object.assign(result, flattenFieldNodes(node.children, currentKey));\n }\n }\n\n return result;\n}\n"],"names":["flattenFieldNodes","nodes","parentKey","result","node","currentKey"],"mappings":"AAKO,SAASA,EACZC,GACAC,IAAY,IACG;AACf,QAAMC,IAA0B,CAAA;AAEhC,aAAWC,KAAQH,GAAO;AACtB,UAAMI,IAAaH,IAAY,GAAGA,CAAS,IAAIE,EAAK,GAAG,KAAKA,EAAK;AAEjE,IAAI,YAAYA,IACZD,EAAOE,CAAU,IAAID,EAAK,SAE1B,OAAO,OAAOD,GAAQH,EAAkBI,EAAK,UAAUC,CAAU,CAAC;AAAA,EAE1E;AAEA,SAAOF;AACX;"}
package/dist/chunks/parse CHANGED
@@ -1,25 +1,43 @@
1
- import e from "is-network-error";
2
- import { commonCodes as t } from "../errorCodes/index.js";
3
- import { A as n } from "./applicationError";
4
- import i from "zod";
5
- function p(r) {
6
- if (e(r))
1
+ import { defaultOverrides as c } from "../errorCodes/index.js";
2
+ import f from "is-network-error";
3
+ import s from "zod";
4
+ import { c as i } from "./server";
5
+ import { A as a } from "./schema";
6
+ const d = (r) => {
7
+ const o = /* @__PURE__ */ new Map();
8
+ for (const { code: t, items: n } of r)
9
+ for (const e of n)
10
+ o.has(e) || o.set(e, t);
11
+ return o;
12
+ }, m = d(c), M = (r, o) => {
13
+ if (o) {
14
+ for (const { items: n, code: e } of o)
15
+ if (n.includes(r.code))
16
+ return { code: e };
17
+ }
18
+ const t = m.get(r.code);
19
+ return t ? { code: t } : r;
20
+ };
21
+ function z(r) {
22
+ if (f(r))
7
23
  return {
8
- code: t.networkError,
24
+ code: i.networkError,
9
25
  debugMessage: r.toString()
10
26
  };
11
- if (r instanceof n) {
27
+ if (r instanceof a) {
12
28
  const o = r.parse();
13
- return o instanceof i.ZodError ? {
14
- code: t.zodError,
29
+ return o instanceof s.ZodError ? {
30
+ code: i.zodError,
15
31
  error: o
16
32
  } : o;
17
33
  }
18
34
  return {
19
- code: t.unexpectedError,
35
+ code: i.unexpectedError,
20
36
  debugMessage: r instanceof Error ? r.toString() : String(r)
21
37
  };
22
38
  }
23
39
  export {
24
- p
40
+ M as n,
41
+ z as p
25
42
  };
43
+ //# sourceMappingURL=parse.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse","sources":["../../src/errors/normalization.ts","../../src/errors/parse.ts"],"sourcesContent":["import { defaultOverrides } from \"../errorCodes\";\nimport type { ParseErrorResponse } from \"./parse\";\n\n// ErrorNormalization maps multiple internal/actual error codes\n// to a single standardized error code shown to the end user.\n//\n// code → the normalized (user-facing) error code\n// items → list of original/internal error codes that should be mapped to `code`\nexport type ErrorNormalization = {\n code: string;\n items: readonly string[];\n};\n\nconst buildOverrideMap = (\n overrides: readonly ErrorNormalization[]\n): ReadonlyMap<string, string> => {\n const map = new Map<string, string>();\n for (const { code, items } of overrides) {\n for (const item of items) {\n // first match should win\n if (!map.has(item)) map.set(item, code);\n }\n }\n return map;\n};\n\nconst defaultOverridesMap = buildOverrideMap(defaultOverrides);\n\n// Normalizes an error object to ensure a consistent `code` for downstream usage (e.g. translations/UI).\n//\n// - Accepts both strongly-typed and flexible error objects (must contain `code`)\n// - Applies custom and default overrides to map multiple error codes to a single normalized code\n// - May intentionally strip additional fields when an override is applied\n// - Otherwise returns the original error object as-is\n//\n// Note: This function is intended for presentation layers, not for logic that depends on strict typing.\nexport const normalizeError = (\n parsedResponse:\n | ParseErrorResponse\n | {\n code: string;\n [key: string]: unknown;\n },\n customOverrides?: readonly ErrorNormalization[]\n) => {\n // no need to create map, this will be small set of overrides for custom actions only\n if (customOverrides) {\n for (const { items, code } of customOverrides) {\n if (items.includes(parsedResponse.code)) {\n return { code };\n }\n }\n }\n\n const normalizedCode = defaultOverridesMap.get(parsedResponse.code);\n if (normalizedCode) {\n return { code: normalizedCode };\n }\n\n return parsedResponse;\n};\n","import isNetworkError from \"is-network-error\";\nimport z from \"zod\";\nimport { commonCodes } from \"../errorCodes\";\nimport type { ErrorDetails } from \"../errorSchema\";\nimport { ApplicationError } from \"./applicationError\";\n\nexport type ParseErrorResponse =\n | {\n code: typeof commonCodes.networkError;\n debugMessage: string;\n }\n | {\n code: typeof commonCodes.unexpectedError;\n debugMessage: string;\n }\n | {\n code: typeof commonCodes.zodError;\n error: z.ZodError;\n }\n | ErrorDetails;\n\nexport function parseError(err: unknown): ParseErrorResponse {\n if (isNetworkError(err)) {\n return {\n code: commonCodes.networkError,\n debugMessage: err.toString(),\n };\n }\n\n if (err instanceof ApplicationError) {\n const errVal = err.parse();\n if (errVal instanceof z.ZodError) {\n return {\n code: commonCodes.zodError,\n error: errVal,\n };\n }\n return errVal;\n }\n\n return {\n code: commonCodes.unexpectedError,\n debugMessage: err instanceof Error ? err.toString() : String(err),\n };\n}\n"],"names":["buildOverrideMap","overrides","map","code","items","item","defaultOverridesMap","defaultOverrides","normalizeError","parsedResponse","customOverrides","normalizedCode","parseError","err","isNetworkError","commonCodes","ApplicationError","errVal","z"],"mappings":";;;;;AAaA,MAAMA,IAAmB,CACrBC,MAC8B;AAC9B,QAAMC,wBAAU,IAAA;AAChB,aAAW,EAAE,MAAAC,GAAM,OAAAC,EAAA,KAAWH;AAC1B,eAAWI,KAAQD;AAEf,MAAKF,EAAI,IAAIG,CAAI,KAAGH,EAAI,IAAIG,GAAMF,CAAI;AAG9C,SAAOD;AACX,GAEMI,IAAsBN,EAAiBO,CAAgB,GAUhDC,IAAiB,CAC1BC,GAMAC,MACC;AAED,MAAIA;AACA,eAAW,EAAE,OAAAN,GAAO,MAAAD,EAAA,KAAUO;AAC1B,UAAIN,EAAM,SAASK,EAAe,IAAI;AAClC,eAAO,EAAE,MAAAN,EAAA;AAAA;AAKrB,QAAMQ,IAAiBL,EAAoB,IAAIG,EAAe,IAAI;AAClE,SAAIE,IACO,EAAE,MAAMA,EAAA,IAGZF;AACX;ACvCO,SAASG,EAAWC,GAAkC;AACzD,MAAIC,EAAeD,CAAG;AAClB,WAAO;AAAA,MACH,MAAME,EAAY;AAAA,MAClB,cAAcF,EAAI,SAAA;AAAA,IAAS;AAInC,MAAIA,aAAeG,GAAkB;AACjC,UAAMC,IAASJ,EAAI,MAAA;AACnB,WAAII,aAAkBC,EAAE,WACb;AAAA,MACH,MAAMH,EAAY;AAAA,MAClB,OAAOE;AAAA,IAAA,IAGRA;AAAA,EACX;AAEA,SAAO;AAAA,IACH,MAAMF,EAAY;AAAA,IAClB,cAAcF,aAAe,QAAQA,EAAI,SAAA,IAAa,OAAOA,CAAG;AAAA,EAAA;AAExE;"}