@emoyly/problem 4.1.11 → 5.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/defaults/4xx.js +1 -1
- package/defaults/5xx.js +1 -1
- package/index.d.ts +1 -0
- package/index.js +6 -1
- package/middleware/axios.d.ts +2 -2
- package/middleware/base.d.ts +2 -2
- package/middleware/base.js +18 -11
- package/middleware/express.d.ts +2 -2
- package/middleware/express.js +1 -1
- package/package.json +20 -12
- package/parsers/axios.d.ts +1 -1
- package/parsers/axios.js +14 -14
- package/parsers/jsonwebtoken.d.ts +1 -1
- package/parsers/mikroorm.d.ts +1 -1
- package/parsers/tsoa.d.ts +1 -1
- package/problem.d.ts +4 -3
- package/problem.js +8 -5
- package/tsconfig.tsbuildinfo +1 -3797
- package/typings/codes.d.ts +5 -0
- package/typings/{misc.js → codes.js} +0 -0
- package/typings/events.d.ts +1 -1
- package/typings/index.d.ts +1 -1
- package/typings/index.js +6 -2
- package/typings/middleware.d.ts +1 -1
- package/typings/parser.d.ts +1 -8
- package/typings/problem.d.ts +4 -3
- package/util/defaults.d.ts +4 -0
- package/util/defaults.js +7 -0
- package/util/getProblems.d.ts +2 -2
- package/util/getProblems.js +7 -4
- package/util/isProblemArray.d.ts +2 -0
- package/util/isProblemArray.js +10 -0
- package/util/misc.d.ts +2 -0
- package/util/misc.js +43 -0
- package/util/version.d.ts +1 -1
- package/util/version.js +1 -1
- package/parsers/http.d.ts +0 -3
- package/parsers/http.js +0 -15
- package/typings/misc.d.ts +0 -3
|
File without changes
|
package/typings/events.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { Problem } from '../problem';
|
|
2
|
-
export
|
|
2
|
+
export type ProblemListener = (problems: Problem[]) => void;
|
package/typings/index.d.ts
CHANGED
package/typings/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -11,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
15
|
};
|
|
12
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
17
|
__exportStar(require("./middleware"), exports);
|
|
14
|
-
__exportStar(require("./misc"), exports);
|
|
15
18
|
__exportStar(require("./parser"), exports);
|
|
16
19
|
__exportStar(require("./problem"), exports);
|
|
17
20
|
__exportStar(require("./events"), exports);
|
|
21
|
+
__exportStar(require("./codes"), exports);
|
package/typings/middleware.d.ts
CHANGED
package/typings/parser.d.ts
CHANGED
|
@@ -1,9 +1,2 @@
|
|
|
1
1
|
import type { Problem } from '../problem';
|
|
2
|
-
|
|
3
|
-
export declare type Parser = (input: any) => Problem[];
|
|
4
|
-
export interface HTTPErrorDetails {
|
|
5
|
-
statusCode?: number;
|
|
6
|
-
url: string;
|
|
7
|
-
body?: string;
|
|
8
|
-
headers?: ResponseHeaders;
|
|
9
|
-
}
|
|
2
|
+
export type Parser = (input: unknown) => Problem[];
|
package/typings/problem.d.ts
CHANGED
|
@@ -17,7 +17,8 @@ export interface IProblem {
|
|
|
17
17
|
stack?: string;
|
|
18
18
|
errorObject?: unknown;
|
|
19
19
|
__problemVersion: string;
|
|
20
|
-
data?:
|
|
20
|
+
data?: unknown;
|
|
21
|
+
middleware?: string;
|
|
21
22
|
}
|
|
22
|
-
export
|
|
23
|
-
export
|
|
23
|
+
export type JsonProblem = Omit<IProblem, 'stack' | 'errorObject' | 'middleware'>;
|
|
24
|
+
export type ProblemOpts = Omit<IProblem, '__problemVersion'>;
|
package/util/defaults.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultInstance = exports.defaultDetail = exports.defaultTitle = exports.defaultType = void 0;
|
|
4
|
+
exports.defaultType = '/errors/default/unknown';
|
|
5
|
+
exports.defaultTitle = 'Unknown error';
|
|
6
|
+
exports.defaultDetail = 'No extended details are available';
|
|
7
|
+
exports.defaultInstance = '/unknown';
|
package/util/getProblems.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Problem } from '../problem';
|
|
2
2
|
import type { JsonProblem } from '../typings/problem';
|
|
3
|
-
export declare function isJsonProblem(input:
|
|
3
|
+
export declare function isJsonProblem(input: unknown): input is JsonProblem;
|
|
4
4
|
export declare function createFromJson({ title, type, instance, detail, status, data }: JsonProblem): Problem;
|
|
5
|
-
export declare function getProblems(input:
|
|
5
|
+
export declare function getProblems(input: unknown): Problem[] | void;
|
package/util/getProblems.js
CHANGED
|
@@ -2,16 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getProblems = exports.createFromJson = exports.isJsonProblem = void 0;
|
|
4
4
|
const problem_1 = require("../problem");
|
|
5
|
+
const isProblemArray_1 = require("./isProblemArray");
|
|
5
6
|
const version_1 = require("./version");
|
|
6
7
|
const strings = ['title', 'type', 'instance', 'detail', '__problemVersion'];
|
|
7
8
|
function isJsonProblem(input) {
|
|
9
|
+
if (input === null)
|
|
10
|
+
return false;
|
|
8
11
|
if (typeof input !== 'object')
|
|
9
12
|
return false;
|
|
10
|
-
if (!strings.every(val => typeof input[val] === 'string'))
|
|
13
|
+
if (!strings.every(val => val in input && typeof input[val] === 'string'))
|
|
11
14
|
return false;
|
|
12
|
-
if (!version_1.isCompatibleVersion(
|
|
15
|
+
if (!(0, version_1.isCompatibleVersion)('__problemVersion' in input && input['__problemVersion'] === 'string' ? input['__problemVersion'] : ''))
|
|
13
16
|
return false;
|
|
14
|
-
if (typeof input.status !== 'number')
|
|
17
|
+
if (!('status' in input) || typeof input.status !== 'number')
|
|
15
18
|
return false;
|
|
16
19
|
return true;
|
|
17
20
|
}
|
|
@@ -31,7 +34,7 @@ function getProblems(input) {
|
|
|
31
34
|
if (input instanceof problem_1.Problem) {
|
|
32
35
|
return [input];
|
|
33
36
|
}
|
|
34
|
-
if (
|
|
37
|
+
if ((0, isProblemArray_1.isProblemArray)(input)) {
|
|
35
38
|
return input;
|
|
36
39
|
}
|
|
37
40
|
if (input instanceof Array && input.every(val => isJsonProblem(val))) {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isProblemArray = void 0;
|
|
4
|
+
const problem_1 = require("../problem");
|
|
5
|
+
function isProblemArray(input) {
|
|
6
|
+
if (!Array.isArray(input))
|
|
7
|
+
return false;
|
|
8
|
+
return input.every(val => val instanceof problem_1.Problem);
|
|
9
|
+
}
|
|
10
|
+
exports.isProblemArray = isProblemArray;
|
package/util/misc.d.ts
ADDED
package/util/misc.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.getHttpError = void 0;
|
|
27
|
+
const allCodes = __importStar(require("../defaults"));
|
|
28
|
+
function getHttpError(statusCode) {
|
|
29
|
+
for (const key in allCodes) {
|
|
30
|
+
// This ensures all codes are written correctly as well, so that's a bonus
|
|
31
|
+
const codeObject = allCodes[key];
|
|
32
|
+
if (typeof statusCode === 'string') {
|
|
33
|
+
const conv = Number(statusCode);
|
|
34
|
+
if (!isNaN(conv))
|
|
35
|
+
statusCode = conv;
|
|
36
|
+
}
|
|
37
|
+
const code = codeObject[statusCode];
|
|
38
|
+
if (!code)
|
|
39
|
+
return;
|
|
40
|
+
return code;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.getHttpError = getHttpError;
|
package/util/version.d.ts
CHANGED
package/util/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isCompatibleVersion = exports.major = exports.version = void 0;
|
|
4
|
-
exports.version = '
|
|
4
|
+
exports.version = '5.0.0';
|
|
5
5
|
exports.major = Number(exports.version.split('.')[0]);
|
|
6
6
|
function isCompatibleVersion(inputVersion) {
|
|
7
7
|
// TODO: Remove this
|
package/parsers/http.d.ts
DELETED
package/parsers/http.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseHTTPError = void 0;
|
|
4
|
-
const defaults_1 = require("../defaults");
|
|
5
|
-
const problem_1 = require("../problem");
|
|
6
|
-
const codes = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaults_1.codes4xx), defaults_1.codes5xx), defaults_1.codesAws), defaults_1.codesCloudflare), defaults_1.codesIis), defaults_1.codesNginx);
|
|
7
|
-
function parseHTTPError(input) {
|
|
8
|
-
var _a;
|
|
9
|
-
if (input.statusCode) {
|
|
10
|
-
const found = (_a = Object.entries(codes).find(([key]) => { var _a; return key === ((_a = input.statusCode) === null || _a === void 0 ? void 0 : _a.toString()); })) === null || _a === void 0 ? void 0 : _a[1];
|
|
11
|
-
if (found)
|
|
12
|
-
return new problem_1.Problem(Object.assign({}, found));
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.parseHTTPError = parseHTTPError;
|
package/typings/misc.d.ts
DELETED