@intlayer/config 7.0.0-canary.3 → 7.0.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/cjs/configFile/buildConfigurationFields.cjs +6 -6
- package/dist/cjs/configFile/buildConfigurationFields.cjs.map +1 -1
- package/dist/cjs/defaultValues/content.cjs +0 -3
- package/dist/cjs/defaultValues/content.cjs.map +1 -1
- package/dist/cjs/defaultValues/dictionary.cjs +7 -0
- package/dist/cjs/defaultValues/dictionary.cjs.map +1 -0
- package/dist/cjs/defaultValues/routing.cjs +1 -4
- package/dist/cjs/defaultValues/routing.cjs.map +1 -1
- package/dist/cjs/package.cjs +1 -1
- package/dist/cjs/package.cjs.map +1 -1
- package/dist/esm/configFile/buildConfigurationFields.mjs +8 -8
- package/dist/esm/configFile/buildConfigurationFields.mjs.map +1 -1
- package/dist/esm/defaultValues/content.mjs +1 -3
- package/dist/esm/defaultValues/content.mjs.map +1 -1
- package/dist/esm/defaultValues/dictionary.mjs +6 -0
- package/dist/esm/defaultValues/dictionary.mjs.map +1 -0
- package/dist/esm/defaultValues/routing.mjs +2 -4
- package/dist/esm/defaultValues/routing.mjs.map +1 -1
- package/dist/esm/package.mjs +1 -1
- package/dist/esm/package.mjs.map +1 -1
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/configFile/buildConfigurationFields.d.ts.map +1 -1
- package/dist/types/configFile/index.d.ts.map +1 -0
- package/dist/types/defaultValues/content.d.ts +2 -3
- package/dist/types/defaultValues/content.d.ts.map +1 -1
- package/dist/types/defaultValues/dictionary.d.ts +5 -0
- package/dist/types/defaultValues/dictionary.d.ts.map +1 -0
- package/dist/types/defaultValues/middleware.d.ts +8 -0
- package/dist/types/defaultValues/middleware.d.ts.map +1 -0
- package/dist/types/defaultValues/routing.d.ts +6 -4
- package/dist/types/defaultValues/routing.d.ts.map +1 -1
- package/dist/types/getSandboxContext.d.ts +4 -0
- package/dist/types/getSandboxContext.d.ts.map +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/loadExternalFile/bundleFile.d.ts.map +1 -1
- package/dist/types/loadExternalFile.d.ts +8 -0
- package/dist/types/loadExternalFile.d.ts.map +1 -0
- package/dist/types/types/config.d.ts +649 -0
- package/dist/types/types/config.d.ts.map +1 -0
- package/dist/types/types/locales.d.ts +564 -0
- package/dist/types/types/locales.d.ts.map +1 -0
- package/dist/types/types/plugin.d.ts +68 -0
- package/dist/types/types/plugin.d.ts.map +1 -0
- package/package.json +6 -6
- package/dist/cjs/extractErrorMessage.cjs +0 -95
- package/dist/cjs/extractErrorMessage.cjs.map +0 -1
- package/dist/esm/extractErrorMessage.mjs +0 -94
- package/dist/esm/extractErrorMessage.mjs.map +0 -1
- package/dist/types/extractErrorMessage.d.ts +0 -5
- package/dist/types/extractErrorMessage.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/config",
|
|
3
|
-
"version": "7.0.0
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Retrieve Intlayer configurations and manage environment variables for both server-side and client-side environments.",
|
|
6
6
|
"keywords": [
|
|
@@ -93,23 +93,23 @@
|
|
|
93
93
|
"typecheck": "tsc --noEmit --project tsconfig.types.json"
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
|
-
"@intlayer/types": "7.0.0
|
|
96
|
+
"@intlayer/types": "7.0.0",
|
|
97
97
|
"deepmerge": "4.3.1",
|
|
98
98
|
"dotenv": "16.6.1",
|
|
99
99
|
"esbuild": "0.25.2"
|
|
100
100
|
},
|
|
101
101
|
"devDependencies": {
|
|
102
102
|
"@types/node": "24.9.1",
|
|
103
|
-
"@utils/ts-config": "7.0.0
|
|
104
|
-
"@utils/ts-config-types": "7.0.0
|
|
105
|
-
"@utils/tsdown-config": "7.0.0
|
|
103
|
+
"@utils/ts-config": "7.0.0",
|
|
104
|
+
"@utils/ts-config-types": "7.0.0",
|
|
105
|
+
"@utils/tsdown-config": "7.0.0",
|
|
106
106
|
"rimraf": "6.0.1",
|
|
107
107
|
"tsdown": "0.15.9",
|
|
108
108
|
"typescript": "5.9.3",
|
|
109
109
|
"vitest": "4.0.3"
|
|
110
110
|
},
|
|
111
111
|
"peerDependencies": {
|
|
112
|
-
"intlayer": "7.0.0
|
|
112
|
+
"intlayer": "7.0.0",
|
|
113
113
|
"react": ">=16.0.0"
|
|
114
114
|
},
|
|
115
115
|
"peerDependenciesMeta": {
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
//#region src/extractErrorMessage.ts
|
|
3
|
-
const extractErrorMessage = (error) => {
|
|
4
|
-
const trimToSingleLine = (text) => text.split(/\r?\n/).map((s) => s.trim()).filter(Boolean)[0] ?? text.trim();
|
|
5
|
-
const looksLikeJson = (value) => {
|
|
6
|
-
const s = value.trim();
|
|
7
|
-
if (!s) return false;
|
|
8
|
-
const first = s[0];
|
|
9
|
-
return first === "{" || first === "[" || first === "\"";
|
|
10
|
-
};
|
|
11
|
-
const sanitizeUnexpectedTokenMessage = (text) => {
|
|
12
|
-
const t = text.trim();
|
|
13
|
-
if (/Unexpected token/i.test(t) && /not valid JSON/i.test(t)) {
|
|
14
|
-
const quoted = t.match(/"([^"]+)"/);
|
|
15
|
-
if (quoted?.[1]) return quoted[1];
|
|
16
|
-
const afterColon = t.split(":").slice(1).join(":").trim();
|
|
17
|
-
if (afterColon) return afterColon;
|
|
18
|
-
}
|
|
19
|
-
return t;
|
|
20
|
-
};
|
|
21
|
-
const pickFieldsFromObject = (value, seen) => {
|
|
22
|
-
if (!value || typeof value !== "object") return void 0;
|
|
23
|
-
if (seen.has(value)) return void 0;
|
|
24
|
-
seen.add(value);
|
|
25
|
-
const obj = value;
|
|
26
|
-
if (typeof obj.message === "string" && obj.message.trim()) return obj.message;
|
|
27
|
-
if (typeof obj.error_description === "string" && obj.error_description.trim()) return obj.error_description;
|
|
28
|
-
if (typeof obj.error === "string" && obj.error.trim()) return obj.error;
|
|
29
|
-
const title = typeof obj.title === "string" ? obj.title.trim() : "";
|
|
30
|
-
const code = typeof obj.code === "string" ? obj.code.trim() : "";
|
|
31
|
-
if (title && code) return `${title} (${code})`;
|
|
32
|
-
if (title) return title;
|
|
33
|
-
if (code) return code;
|
|
34
|
-
if (typeof obj.statusText === "string" && obj.statusText.trim()) return obj.statusText;
|
|
35
|
-
const response = obj.response;
|
|
36
|
-
if (response && typeof response === "object") {
|
|
37
|
-
const data$1 = response.data;
|
|
38
|
-
const fromData$1 = pickFieldsFromObject(data$1, seen);
|
|
39
|
-
if (fromData$1) return fromData$1;
|
|
40
|
-
}
|
|
41
|
-
const data = obj.data;
|
|
42
|
-
const fromData = pickFieldsFromObject(data, seen);
|
|
43
|
-
if (fromData) return fromData;
|
|
44
|
-
const cause = obj.cause;
|
|
45
|
-
const fromCause = pickFieldsFromObject(cause, seen) ?? (typeof cause?.message === "string" ? cause.message : void 0);
|
|
46
|
-
if (fromCause) return fromCause;
|
|
47
|
-
const errors = obj.errors;
|
|
48
|
-
if (Array.isArray(errors)) for (const item of errors) {
|
|
49
|
-
const fromItem = pickFieldsFromObject(item, seen);
|
|
50
|
-
if (fromItem) return fromItem;
|
|
51
|
-
if (typeof item?.message === "string") return item.message;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
const tryParseJsonString = (maybeJson) => {
|
|
55
|
-
if (!looksLikeJson(maybeJson)) return void 0;
|
|
56
|
-
try {
|
|
57
|
-
const parsed = JSON.parse(maybeJson);
|
|
58
|
-
const picked = pickFieldsFromObject(parsed, /* @__PURE__ */ new Set());
|
|
59
|
-
if (picked) return picked;
|
|
60
|
-
if (typeof parsed === "string") return parsed;
|
|
61
|
-
return;
|
|
62
|
-
} catch {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
if (typeof error === "string") {
|
|
67
|
-
const cleaned = sanitizeUnexpectedTokenMessage(error);
|
|
68
|
-
return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);
|
|
69
|
-
}
|
|
70
|
-
if (error && typeof error === "object") {
|
|
71
|
-
if (error instanceof Error) {
|
|
72
|
-
const cleaned = sanitizeUnexpectedTokenMessage(error.message);
|
|
73
|
-
const fromMessage = tryParseJsonString(cleaned);
|
|
74
|
-
if (fromMessage) return trimToSingleLine(fromMessage);
|
|
75
|
-
const fromCause = extractErrorMessage(error.cause);
|
|
76
|
-
if (fromCause && fromCause !== "An unknown error occurred") return trimToSingleLine(fromCause);
|
|
77
|
-
return trimToSingleLine(cleaned);
|
|
78
|
-
}
|
|
79
|
-
const fromObject = pickFieldsFromObject(error, /* @__PURE__ */ new Set());
|
|
80
|
-
if (fromObject) {
|
|
81
|
-
const cleaned = sanitizeUnexpectedTokenMessage(fromObject);
|
|
82
|
-
return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);
|
|
83
|
-
}
|
|
84
|
-
try {
|
|
85
|
-
return trimToSingleLine(JSON.stringify(error));
|
|
86
|
-
} catch {
|
|
87
|
-
return trimToSingleLine(String(error));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return "An unknown error occurred";
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
//#endregion
|
|
94
|
-
exports.extractErrorMessage = extractErrorMessage;
|
|
95
|
-
//# sourceMappingURL=extractErrorMessage.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extractErrorMessage.cjs","names":["data","fromData"],"sources":["../../src/extractErrorMessage.ts"],"sourcesContent":["export const extractErrorMessage = (error: unknown): string => {\n const trimToSingleLine = (text: string): string =>\n text\n .split(/\\r?\\n/)\n .map((s) => s.trim())\n .filter(Boolean)[0] ?? text.trim();\n\n const looksLikeJson = (value: string): boolean => {\n const s = value.trim();\n if (!s) return false;\n const first = s[0];\n return first === '{' || first === '[' || first === '\"';\n };\n\n const sanitizeUnexpectedTokenMessage = (text: string): string => {\n // If the text mentions an invalid JSON parse, try to extract the meaningful part\n const t = text.trim();\n if (/Unexpected token/i.test(t) && /not valid JSON/i.test(t)) {\n const quoted = t.match(/\"([^\"]+)\"/);\n if (quoted?.[1]) return quoted[1];\n // Fallback: drop the leading parser error description\n const afterColon = t.split(':').slice(1).join(':').trim();\n if (afterColon) return afterColon;\n }\n return t;\n };\n\n const pickFieldsFromObject = (\n value: unknown,\n seen: Set<unknown>\n ): string | undefined => {\n if (!value || typeof value !== 'object') return undefined;\n if (seen.has(value)) return undefined;\n seen.add(value);\n\n const obj = value as Record<string, unknown>;\n\n // Check for message first (highest priority)\n if (typeof obj.message === 'string' && obj.message.trim()) {\n return obj.message;\n }\n\n // Check for error_description\n if (\n typeof obj.error_description === 'string' &&\n obj.error_description.trim()\n ) {\n return obj.error_description;\n }\n\n // Check for error\n if (typeof obj.error === 'string' && obj.error.trim()) {\n return obj.error;\n }\n\n // Handle title and code combination\n const title = typeof obj.title === 'string' ? obj.title.trim() : '';\n const code = typeof obj.code === 'string' ? obj.code.trim() : '';\n\n if (title && code) {\n return `${title} (${code})`;\n }\n\n if (title) {\n return title;\n }\n\n if (code) {\n return code;\n }\n\n // Check for statusText\n if (typeof obj.statusText === 'string' && obj.statusText.trim()) {\n return obj.statusText;\n }\n\n // Common nested structures (Axios/Fetch-like)\n const response = obj.response as Record<string, unknown> | undefined;\n if (response && typeof response === 'object') {\n const data = response.data as unknown;\n const fromData = pickFieldsFromObject(data, seen);\n if (fromData) return fromData;\n }\n\n const data = obj.data as unknown;\n const fromData = pickFieldsFromObject(data, seen);\n if (fromData) return fromData;\n\n // Nested cause chain\n const cause = (obj as { cause?: unknown }).cause;\n const fromCause =\n pickFieldsFromObject(cause, seen) ??\n (typeof (cause as any)?.message === 'string'\n ? (cause as any).message\n : undefined);\n if (fromCause) return fromCause;\n\n // Arrays of errors\n const errors = obj.errors as unknown;\n if (Array.isArray(errors)) {\n for (const item of errors) {\n const fromItem = pickFieldsFromObject(item, seen);\n if (fromItem) return fromItem;\n if (typeof (item as any)?.message === 'string')\n return (item as any).message;\n }\n }\n\n return undefined;\n };\n\n const tryParseJsonString = (maybeJson: string): string | undefined => {\n if (!looksLikeJson(maybeJson)) return undefined;\n try {\n const parsed = JSON.parse(maybeJson);\n const picked = pickFieldsFromObject(parsed, new Set());\n if (picked) return picked;\n if (typeof parsed === 'string') return parsed;\n return undefined;\n } catch {\n return undefined;\n }\n };\n\n if (typeof error === 'string') {\n const cleaned = sanitizeUnexpectedTokenMessage(error);\n return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);\n }\n\n if (error && typeof error === 'object') {\n // Native Error instance\n if (error instanceof Error) {\n const cleaned = sanitizeUnexpectedTokenMessage(error.message);\n const fromMessage = tryParseJsonString(cleaned);\n if (fromMessage) return trimToSingleLine(fromMessage);\n // Dive into cause when present\n const fromCause = extractErrorMessage(error.cause as unknown);\n if (fromCause && fromCause !== 'An unknown error occurred')\n return trimToSingleLine(fromCause);\n return trimToSingleLine(cleaned);\n }\n\n // Generic object\n const seen = new Set<unknown>();\n const fromObject = pickFieldsFromObject(error, seen);\n if (fromObject) {\n const cleaned = sanitizeUnexpectedTokenMessage(fromObject);\n return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);\n }\n\n try {\n const serialized = JSON.stringify(error);\n return trimToSingleLine(serialized);\n } catch {\n return trimToSingleLine(String(error));\n }\n }\n\n return 'An unknown error occurred';\n};\n"],"mappings":"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"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
//#region src/extractErrorMessage.ts
|
|
2
|
-
const extractErrorMessage = (error) => {
|
|
3
|
-
const trimToSingleLine = (text) => text.split(/\r?\n/).map((s) => s.trim()).filter(Boolean)[0] ?? text.trim();
|
|
4
|
-
const looksLikeJson = (value) => {
|
|
5
|
-
const s = value.trim();
|
|
6
|
-
if (!s) return false;
|
|
7
|
-
const first = s[0];
|
|
8
|
-
return first === "{" || first === "[" || first === "\"";
|
|
9
|
-
};
|
|
10
|
-
const sanitizeUnexpectedTokenMessage = (text) => {
|
|
11
|
-
const t = text.trim();
|
|
12
|
-
if (/Unexpected token/i.test(t) && /not valid JSON/i.test(t)) {
|
|
13
|
-
const quoted = t.match(/"([^"]+)"/);
|
|
14
|
-
if (quoted?.[1]) return quoted[1];
|
|
15
|
-
const afterColon = t.split(":").slice(1).join(":").trim();
|
|
16
|
-
if (afterColon) return afterColon;
|
|
17
|
-
}
|
|
18
|
-
return t;
|
|
19
|
-
};
|
|
20
|
-
const pickFieldsFromObject = (value, seen) => {
|
|
21
|
-
if (!value || typeof value !== "object") return void 0;
|
|
22
|
-
if (seen.has(value)) return void 0;
|
|
23
|
-
seen.add(value);
|
|
24
|
-
const obj = value;
|
|
25
|
-
if (typeof obj.message === "string" && obj.message.trim()) return obj.message;
|
|
26
|
-
if (typeof obj.error_description === "string" && obj.error_description.trim()) return obj.error_description;
|
|
27
|
-
if (typeof obj.error === "string" && obj.error.trim()) return obj.error;
|
|
28
|
-
const title = typeof obj.title === "string" ? obj.title.trim() : "";
|
|
29
|
-
const code = typeof obj.code === "string" ? obj.code.trim() : "";
|
|
30
|
-
if (title && code) return `${title} (${code})`;
|
|
31
|
-
if (title) return title;
|
|
32
|
-
if (code) return code;
|
|
33
|
-
if (typeof obj.statusText === "string" && obj.statusText.trim()) return obj.statusText;
|
|
34
|
-
const response = obj.response;
|
|
35
|
-
if (response && typeof response === "object") {
|
|
36
|
-
const data$1 = response.data;
|
|
37
|
-
const fromData$1 = pickFieldsFromObject(data$1, seen);
|
|
38
|
-
if (fromData$1) return fromData$1;
|
|
39
|
-
}
|
|
40
|
-
const data = obj.data;
|
|
41
|
-
const fromData = pickFieldsFromObject(data, seen);
|
|
42
|
-
if (fromData) return fromData;
|
|
43
|
-
const cause = obj.cause;
|
|
44
|
-
const fromCause = pickFieldsFromObject(cause, seen) ?? (typeof cause?.message === "string" ? cause.message : void 0);
|
|
45
|
-
if (fromCause) return fromCause;
|
|
46
|
-
const errors = obj.errors;
|
|
47
|
-
if (Array.isArray(errors)) for (const item of errors) {
|
|
48
|
-
const fromItem = pickFieldsFromObject(item, seen);
|
|
49
|
-
if (fromItem) return fromItem;
|
|
50
|
-
if (typeof item?.message === "string") return item.message;
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
const tryParseJsonString = (maybeJson) => {
|
|
54
|
-
if (!looksLikeJson(maybeJson)) return void 0;
|
|
55
|
-
try {
|
|
56
|
-
const parsed = JSON.parse(maybeJson);
|
|
57
|
-
const picked = pickFieldsFromObject(parsed, /* @__PURE__ */ new Set());
|
|
58
|
-
if (picked) return picked;
|
|
59
|
-
if (typeof parsed === "string") return parsed;
|
|
60
|
-
return;
|
|
61
|
-
} catch {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
if (typeof error === "string") {
|
|
66
|
-
const cleaned = sanitizeUnexpectedTokenMessage(error);
|
|
67
|
-
return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);
|
|
68
|
-
}
|
|
69
|
-
if (error && typeof error === "object") {
|
|
70
|
-
if (error instanceof Error) {
|
|
71
|
-
const cleaned = sanitizeUnexpectedTokenMessage(error.message);
|
|
72
|
-
const fromMessage = tryParseJsonString(cleaned);
|
|
73
|
-
if (fromMessage) return trimToSingleLine(fromMessage);
|
|
74
|
-
const fromCause = extractErrorMessage(error.cause);
|
|
75
|
-
if (fromCause && fromCause !== "An unknown error occurred") return trimToSingleLine(fromCause);
|
|
76
|
-
return trimToSingleLine(cleaned);
|
|
77
|
-
}
|
|
78
|
-
const fromObject = pickFieldsFromObject(error, /* @__PURE__ */ new Set());
|
|
79
|
-
if (fromObject) {
|
|
80
|
-
const cleaned = sanitizeUnexpectedTokenMessage(fromObject);
|
|
81
|
-
return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);
|
|
82
|
-
}
|
|
83
|
-
try {
|
|
84
|
-
return trimToSingleLine(JSON.stringify(error));
|
|
85
|
-
} catch {
|
|
86
|
-
return trimToSingleLine(String(error));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return "An unknown error occurred";
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
//#endregion
|
|
93
|
-
export { extractErrorMessage };
|
|
94
|
-
//# sourceMappingURL=extractErrorMessage.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extractErrorMessage.mjs","names":["data","fromData"],"sources":["../../src/extractErrorMessage.ts"],"sourcesContent":["export const extractErrorMessage = (error: unknown): string => {\n const trimToSingleLine = (text: string): string =>\n text\n .split(/\\r?\\n/)\n .map((s) => s.trim())\n .filter(Boolean)[0] ?? text.trim();\n\n const looksLikeJson = (value: string): boolean => {\n const s = value.trim();\n if (!s) return false;\n const first = s[0];\n return first === '{' || first === '[' || first === '\"';\n };\n\n const sanitizeUnexpectedTokenMessage = (text: string): string => {\n // If the text mentions an invalid JSON parse, try to extract the meaningful part\n const t = text.trim();\n if (/Unexpected token/i.test(t) && /not valid JSON/i.test(t)) {\n const quoted = t.match(/\"([^\"]+)\"/);\n if (quoted?.[1]) return quoted[1];\n // Fallback: drop the leading parser error description\n const afterColon = t.split(':').slice(1).join(':').trim();\n if (afterColon) return afterColon;\n }\n return t;\n };\n\n const pickFieldsFromObject = (\n value: unknown,\n seen: Set<unknown>\n ): string | undefined => {\n if (!value || typeof value !== 'object') return undefined;\n if (seen.has(value)) return undefined;\n seen.add(value);\n\n const obj = value as Record<string, unknown>;\n\n // Check for message first (highest priority)\n if (typeof obj.message === 'string' && obj.message.trim()) {\n return obj.message;\n }\n\n // Check for error_description\n if (\n typeof obj.error_description === 'string' &&\n obj.error_description.trim()\n ) {\n return obj.error_description;\n }\n\n // Check for error\n if (typeof obj.error === 'string' && obj.error.trim()) {\n return obj.error;\n }\n\n // Handle title and code combination\n const title = typeof obj.title === 'string' ? obj.title.trim() : '';\n const code = typeof obj.code === 'string' ? obj.code.trim() : '';\n\n if (title && code) {\n return `${title} (${code})`;\n }\n\n if (title) {\n return title;\n }\n\n if (code) {\n return code;\n }\n\n // Check for statusText\n if (typeof obj.statusText === 'string' && obj.statusText.trim()) {\n return obj.statusText;\n }\n\n // Common nested structures (Axios/Fetch-like)\n const response = obj.response as Record<string, unknown> | undefined;\n if (response && typeof response === 'object') {\n const data = response.data as unknown;\n const fromData = pickFieldsFromObject(data, seen);\n if (fromData) return fromData;\n }\n\n const data = obj.data as unknown;\n const fromData = pickFieldsFromObject(data, seen);\n if (fromData) return fromData;\n\n // Nested cause chain\n const cause = (obj as { cause?: unknown }).cause;\n const fromCause =\n pickFieldsFromObject(cause, seen) ??\n (typeof (cause as any)?.message === 'string'\n ? (cause as any).message\n : undefined);\n if (fromCause) return fromCause;\n\n // Arrays of errors\n const errors = obj.errors as unknown;\n if (Array.isArray(errors)) {\n for (const item of errors) {\n const fromItem = pickFieldsFromObject(item, seen);\n if (fromItem) return fromItem;\n if (typeof (item as any)?.message === 'string')\n return (item as any).message;\n }\n }\n\n return undefined;\n };\n\n const tryParseJsonString = (maybeJson: string): string | undefined => {\n if (!looksLikeJson(maybeJson)) return undefined;\n try {\n const parsed = JSON.parse(maybeJson);\n const picked = pickFieldsFromObject(parsed, new Set());\n if (picked) return picked;\n if (typeof parsed === 'string') return parsed;\n return undefined;\n } catch {\n return undefined;\n }\n };\n\n if (typeof error === 'string') {\n const cleaned = sanitizeUnexpectedTokenMessage(error);\n return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);\n }\n\n if (error && typeof error === 'object') {\n // Native Error instance\n if (error instanceof Error) {\n const cleaned = sanitizeUnexpectedTokenMessage(error.message);\n const fromMessage = tryParseJsonString(cleaned);\n if (fromMessage) return trimToSingleLine(fromMessage);\n // Dive into cause when present\n const fromCause = extractErrorMessage(error.cause as unknown);\n if (fromCause && fromCause !== 'An unknown error occurred')\n return trimToSingleLine(fromCause);\n return trimToSingleLine(cleaned);\n }\n\n // Generic object\n const seen = new Set<unknown>();\n const fromObject = pickFieldsFromObject(error, seen);\n if (fromObject) {\n const cleaned = sanitizeUnexpectedTokenMessage(fromObject);\n return tryParseJsonString(cleaned) ?? trimToSingleLine(cleaned);\n }\n\n try {\n const serialized = JSON.stringify(error);\n return trimToSingleLine(serialized);\n } catch {\n return trimToSingleLine(String(error));\n }\n }\n\n return 'An unknown error occurred';\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extractErrorMessage.d.ts","names":[],"sources":["../../src/extractErrorMessage.ts"],"sourcesContent":[],"mappings":";cAAa"}
|