@emoyly/problem 6.0.0 → 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.
Files changed (43) hide show
  1. package/README.md +1 -1
  2. package/cjs/index.d.ts +0 -1
  3. package/cjs/index.js +1 -3
  4. package/cjs/middleware/axios.js +1 -2
  5. package/cjs/middleware/base.d.ts +11 -1
  6. package/cjs/middleware/base.js +21 -0
  7. package/cjs/middleware/express.js +1 -2
  8. package/cjs/tsconfig.tsbuildinfo +1 -1
  9. package/cjs/typings/index.d.ts +0 -1
  10. package/cjs/typings/index.js +0 -1
  11. package/cjs/typings/middleware.d.ts +2 -0
  12. package/cjs/util/version.d.ts +1 -1
  13. package/cjs/util/version.js +1 -1
  14. package/esm/index.d.ts +0 -1
  15. package/esm/index.js +0 -1
  16. package/esm/middleware/axios.js +1 -2
  17. package/esm/middleware/base.d.ts +11 -1
  18. package/esm/middleware/base.js +21 -0
  19. package/esm/middleware/express.js +1 -2
  20. package/esm/tsconfig.tsbuildinfo +1 -1
  21. package/esm/typings/index.d.ts +0 -1
  22. package/esm/typings/index.js +0 -1
  23. package/esm/typings/middleware.d.ts +2 -0
  24. package/esm/util/version.d.ts +1 -1
  25. package/esm/util/version.js +1 -1
  26. package/package.json +5 -5
  27. package/src/index.ts +0 -1
  28. package/src/middleware/axios.ts +1 -2
  29. package/src/middleware/base.ts +27 -1
  30. package/src/middleware/express.ts +1 -2
  31. package/src/typings/index.ts +0 -1
  32. package/src/typings/middleware.ts +3 -0
  33. package/src/util/version.ts +1 -1
  34. package/cjs/typings/events.d.ts +0 -2
  35. package/cjs/typings/events.js +0 -2
  36. package/cjs/util/events.d.ts +0 -16
  37. package/cjs/util/events.js +0 -27
  38. package/esm/typings/events.d.ts +0 -2
  39. package/esm/typings/events.js +0 -1
  40. package/esm/util/events.d.ts +0 -16
  41. package/esm/util/events.js +0 -25
  42. package/src/typings/events.ts +0 -3
  43. package/src/util/events.ts +0 -34
@@ -1,7 +1,7 @@
1
1
  import { otherErrors } from '../defaults/index.js'
2
2
  import { Problem } from '../problem.js'
3
3
  import type { ProblemOpts } from '../typings/index.js'
4
- import type { MiddlewareOptions, PartialMiddlewareOptions } from '../typings/middleware.js'
4
+ import type { MiddlewareOptions, PartialMiddlewareOptions, ProblemListener } from '../typings/middleware.js'
5
5
  import { getProblems } from '../util/getProblems.js'
6
6
 
7
7
  /**
@@ -61,4 +61,30 @@ export abstract class MiddlewareBase {
61
61
  }
62
62
 
63
63
  fallback: ProblemOpts = otherErrors.unknown
64
+
65
+ problemListeners: ProblemListener[] = []
66
+
67
+ protected emit = (list: Problem[]) => {
68
+ for (const listener of this.problemListeners) {
69
+ listener(list)
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Listen to problems
75
+ */
76
+ onProblem = (listener: ProblemListener) => {
77
+ this.problemListeners.push(listener)
78
+ }
79
+
80
+ /**
81
+ * Un-listen to problems
82
+ */
83
+ offProblem = (listener: ProblemListener) => {
84
+ const idx = this.problemListeners.findIndex(val => val === listener)
85
+
86
+ if (idx < 0 || isNaN(idx)) return
87
+
88
+ this.problemListeners.splice(idx, 1)
89
+ }
64
90
  }
@@ -3,7 +3,6 @@ import type { PartialMiddlewareOptions } from '../typings/middleware.js'
3
3
  import { MiddlewareBase } from './base.js'
4
4
  import { Problem } from '../problem.js'
5
5
  import { codes4xx, otherErrors } from '../defaults/index.js'
6
- import events from '../util/events.js'
7
6
  import { defaultInstance } from '../util/defaults.js'
8
7
 
9
8
  export class ExpressMiddleware extends MiddlewareBase {
@@ -18,7 +17,7 @@ export class ExpressMiddleware extends MiddlewareBase {
18
17
  }
19
18
  }
20
19
 
21
- events.emit(problems)
20
+ this.emit(problems)
22
21
 
23
22
  res
24
23
  .contentType('application/problem+json')
@@ -1,5 +1,4 @@
1
1
  export * from './middleware.js'
2
2
  export * from './parser.js'
3
3
  export * from './problem.js'
4
- export * from './events.js'
5
4
  export * from './codes.js'
@@ -1,3 +1,4 @@
1
+ import type { Problem } from '../problem.js'
1
2
  import type { Parser } from './parser.js'
2
3
 
3
4
  export interface MiddlewareOptions {
@@ -9,3 +10,5 @@ export interface MiddlewareOptions {
9
10
  }
10
11
 
11
12
  export type PartialMiddlewareOptions = Partial<MiddlewareOptions>
13
+
14
+ export type ProblemListener = (problems: Problem[]) => void
@@ -1,4 +1,4 @@
1
- export const version = '6.0.0'
1
+ export const version = '7.0.0'
2
2
  export const major = Number(version.split('.')[0])
3
3
 
4
4
  export function isCompatibleVersion(inputVersion: string) {
@@ -1,2 +0,0 @@
1
- import type { Problem } from '../problem.js';
2
- export type ProblemListener = (problems: Problem[]) => void;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,16 +0,0 @@
1
- import type { ProblemListener } from '../typings/events.js';
2
- import { Problem } from '../problem.js';
3
- declare class ProblemEvents {
4
- listeners: ProblemListener[];
5
- emit: (list: Problem[]) => void;
6
- /**
7
- * Listen to problems
8
- */
9
- onProblem: (listener: ProblemListener) => void;
10
- /**
11
- * Un-listen to problems
12
- */
13
- offProblem: (listener: ProblemListener) => void;
14
- }
15
- declare const instance: ProblemEvents;
16
- export default instance;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class ProblemEvents {
4
- listeners = [];
5
- emit = (list) => {
6
- for (const listener of this.listeners) {
7
- listener(list);
8
- }
9
- };
10
- /**
11
- * Listen to problems
12
- */
13
- onProblem = (listener) => {
14
- this.listeners.push(listener);
15
- };
16
- /**
17
- * Un-listen to problems
18
- */
19
- offProblem = (listener) => {
20
- const idx = this.listeners.findIndex(val => val === listener);
21
- if (idx < 0 || isNaN(idx))
22
- return;
23
- this.listeners.splice(idx, 1);
24
- };
25
- }
26
- const instance = new ProblemEvents();
27
- exports.default = instance;
@@ -1,2 +0,0 @@
1
- import type { Problem } from '../problem.js';
2
- export type ProblemListener = (problems: Problem[]) => void;
@@ -1 +0,0 @@
1
- export {};
@@ -1,16 +0,0 @@
1
- import type { ProblemListener } from '../typings/events.js';
2
- import { Problem } from '../problem.js';
3
- declare class ProblemEvents {
4
- listeners: ProblemListener[];
5
- emit: (list: Problem[]) => void;
6
- /**
7
- * Listen to problems
8
- */
9
- onProblem: (listener: ProblemListener) => void;
10
- /**
11
- * Un-listen to problems
12
- */
13
- offProblem: (listener: ProblemListener) => void;
14
- }
15
- declare const instance: ProblemEvents;
16
- export default instance;
@@ -1,25 +0,0 @@
1
- class ProblemEvents {
2
- listeners = [];
3
- emit = (list) => {
4
- for (const listener of this.listeners) {
5
- listener(list);
6
- }
7
- };
8
- /**
9
- * Listen to problems
10
- */
11
- onProblem = (listener) => {
12
- this.listeners.push(listener);
13
- };
14
- /**
15
- * Un-listen to problems
16
- */
17
- offProblem = (listener) => {
18
- const idx = this.listeners.findIndex(val => val === listener);
19
- if (idx < 0 || isNaN(idx))
20
- return;
21
- this.listeners.splice(idx, 1);
22
- };
23
- }
24
- const instance = new ProblemEvents();
25
- export default instance;
@@ -1,3 +0,0 @@
1
- import type { Problem } from '../problem.js'
2
-
3
- export type ProblemListener = (problems: Problem[]) => void
@@ -1,34 +0,0 @@
1
- import type { ProblemListener } from '../typings/events.js'
2
- import { Problem } from '../problem.js'
3
-
4
- class ProblemEvents {
5
- listeners: ProblemListener[] = []
6
-
7
- emit = (list: Problem[]) => {
8
- for (const listener of this.listeners) {
9
- listener(list)
10
- }
11
- }
12
-
13
- /**
14
- * Listen to problems
15
- */
16
- onProblem = (listener: ProblemListener) => {
17
- this.listeners.push(listener)
18
- }
19
-
20
- /**
21
- * Un-listen to problems
22
- */
23
- offProblem = (listener: ProblemListener) => {
24
- const idx = this.listeners.findIndex(val => val === listener)
25
-
26
- if (idx < 0 || isNaN(idx)) return
27
-
28
- this.listeners.splice(idx, 1)
29
- }
30
- }
31
-
32
- const instance = new ProblemEvents()
33
-
34
- export default instance