immediate-error 3.1.3 → 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.
Files changed (4) hide show
  1. package/README.md +33 -11
  2. package/index.d.ts +11 -0
  3. package/index.js +80 -71
  4. package/package.json +5 -5
package/README.md CHANGED
@@ -4,24 +4,46 @@ This is a utility to throw an error.
4
4
 
5
5
  ```javascript
6
6
 
7
- const immediateError = require('immediate-error')
7
+ const { immediateError, ErrorType } = require('immediate-error')
8
8
 
9
- const { ERROR } = immediateError
9
+ immediateError() // this will throw a regular Error with the default message of "ERROR!"
10
10
 
11
- immediateError('Aaaaah') // this will throw an error with the message Aaaaah
11
+ immediateError('Aaaaah') // this will throw a regular Error with the message "Aaaaah"
12
12
 
13
- immediateError('Aaaaah', { errorType: ERROR.Error }) // does the same thing as above because by default errorType is ERROR.Error
13
+ immediateError('Aaaaah', ErrorType.BaseError) // does the same thing as above
14
14
 
15
- immediateError('Assertion error', { errorType: ERROR.AssertionError }) // throws an assertionerror
15
+ immediateError('Assertion error', ErrorType.AssertionError) // throws an AssertionError (from the assert-fn module)
16
16
 
17
- immediateError('Range error', { errorType: ERROR.RangeError }) // throws a rangeerror
17
+ immediateError('Assertion error', ErrorType.NativeAssertionError) // throws an AssertionError (from the node:assert module)
18
18
 
19
- immediateError('Reference error', { errorType: ERROR.ReferenceError }) // throws a referenceerror
19
+ immediateError('Range error', ErrorType.RangeError) // throws a RangeError
20
20
 
21
- immediateError('Syntax error', { errorType: ERROR.SyntaxError }) // throws a syntaxerror
21
+ immediateError('Reference error', ErrorType.ReferenceError) // throws a ReferenceError
22
22
 
23
- immediateError('type error', { errorType: ERROR.TypeError }) // throws a typeerror
23
+ immediateError('Syntax error', ErrorType.SyntaxError) // throws a SyntaxError
24
24
 
25
- immediateError('fucking error', { errorType: ERROR.FuckingError }) // throws a fuckingerror
25
+ immediateError('type error', ErrorType.TypeError) // throws a TypeError
26
26
 
27
- ```
27
+ class MyCustomError extends Error {
28
+ constructor (message) {
29
+ super("Custom: " + message)
30
+ }
31
+ }
32
+
33
+ immediateError('Error!', MyCustomError) // throws a MyCustomError with the message "Error!" which in turn prints out "Custom: Error!" because we used our own error class
34
+
35
+ ```
36
+
37
+ ## Why?
38
+
39
+ This module is great because it uses the best practices in JavaScript such as using dependencies like [`throw-error`](https://npmjs.com/package/throw-error) and [`yanoop`](https://npmjs.com/package/yanoop) to throw errors and using [`es-errors`](https://npmjs.com/package/es-errors) instead of using the error classes natively.
40
+
41
+ ## Show your support
42
+
43
+ [Follow me on GitHub](https://github.com/tj-commits) and star my repositories.
44
+
45
+ ## is this a joke?
46
+
47
+ Of course not!
48
+ <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
49
+ (Yes, it is.)
package/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export enum ErrorType {
2
+ BaseError = 0,
3
+ AssertionError = 1,
4
+ RangeError = 2,
5
+ ReferenceError = 3,
6
+ SyntaxError = 4,
7
+ TypeError = 5,
8
+ NativeAssertionError = 6
9
+ }
10
+
11
+ export function immediateError(message?: string, errorType?: ErrorType | Function): void
package/index.js CHANGED
@@ -1,89 +1,94 @@
1
1
  require('vanilla-javascript')
2
- require('vapor-js-npm')
3
2
  require('none')()
4
3
 
5
- const one = require('the-number-one').default // number one
6
- const two = require('two') // no2
7
- const three = require('numeric-constant-three') //no3
8
- const four = require('always-four') //no4
9
- const five = require('five') //no5
10
- const six = require('number-six') //no6
11
- const successor = require('successor') // + 1
12
- global.jQuery = require('jquery')
13
- require('jquery-basic-arithmetic-plugin') // why not use jquery for math?
14
- const $ = jQuery // define jquery
15
- const { throwop } = require('yanoop') // throwop
16
- const throwError = require('throw-error') // nothing wrong with having another way to throw an error
17
- const If = require('if') // conditional chaining for javascript
4
+ const esmRequire = require('esm-wallaby')(module)
5
+ const one = require('the-number-one').default
6
+ const two = require('two')
7
+ const three = require('numeric-constant-three')
8
+ const four = require('always-four')
9
+ const five = require('five')
10
+ const six = require('number-six')
11
+ const { throwop } = require('yanoop')
12
+ const throwError = require('throw-error')
13
+ const bail = esmRequire('bail').bail
14
+ const If = require('if')
18
15
  const clc = require('cli-color')
16
+ const isError = require('is-error')
17
+ const assert = require('assert-fn')
18
+ const nativeAssert = require('node:assert')
19
+ const vm = require('node:vm')
20
+
21
+ const $BaseError = require('es-errors')
22
+ const $AssertionError = assert.AssertionError
23
+ const $RangeError = require('es-errors/range')
24
+ const $ReferenceError = require('es-errors/ref')
25
+ const $SyntaxError = require('es-errors/syntax')
26
+ const $TypeError = require('es-errors/type')
27
+ const $NativeAssertionError = nativeAssert.AssertionError
19
28
 
20
29
  const ERROR = Object.freeze({
21
- Error:0,
30
+ BaseError:0,
22
31
  AssertionError: one,
23
32
  RangeError: two(),
24
33
  ReferenceError: three(),
25
34
  SyntaxError: four(),
26
35
  TypeError: five(),
27
- FuckingError: six()
36
+ NativeAssertionError: six()
28
37
  })
29
38
 
30
- class FuckingError extends Error {
31
-
32
- constructor(message) {
33
- super(`FuckingError: Holy shit there was A Fucking Error With A Message: ${message}`)
34
- }
35
- }
39
+ exports.immediateError = function immediateError(message = 'ERROR!', errorType = ERROR.Error) {
40
+ var error
36
41
 
37
- const assert = require('assert-fn') // import assert
38
- const vm = require('node:vm') // vm
39
-
40
- module.exports = function immediateError(message = 'YOU SUCK AT PROGRAMMING THERE WAS A FUCKING ERROR!', options = {
41
- errorType: ERROR.Error
42
- }) {
43
- var error = new Error(message) /* create an error
44
- variable and then use switch statement to set it*/
45
- switch(options.errorType) {
46
- case ERROR.Error: {
47
- error = new Error(message)
48
- break
49
- }
42
+ if (isError == isError) {
43
+ switch (errorType) {
44
+ case ERROR.BaseError: {
45
+ error = new $BaseError(message)
46
+ break
47
+ }
50
48
 
51
- case ERROR.AssertionError: {
52
- error = new assert.AssertionError(message)
53
- break
54
- }
49
+ case ERROR.AssertionError: {
50
+ error = new $AssertionError(message)
51
+ break
52
+ }
55
53
 
56
- case ERROR.RangeError: {
57
- error = new RangeError(message)
58
- break
59
- }
54
+ case ERROR.RangeError: {
55
+ error = new $RangeError(message)
56
+ break
57
+ }
60
58
 
61
- case ERROR.ReferenceError: {
62
- error = new ReferenceError(message)
63
- break
64
- }
59
+ case ERROR.ReferenceError: {
60
+ error = new $ReferenceError(message)
61
+ break
62
+ }
65
63
 
66
- case ERROR.SyntaxError: {
67
- error = new SyntaxError(message)
68
- break
69
- }
64
+ case ERROR.SyntaxError: {
65
+ error = new $SyntaxError(message)
66
+ break
67
+ }
70
68
 
71
- case ERROR.TypeError: {
72
- error = new TypeError(message)
73
- break
74
- }
69
+ case ERROR.TypeError: {
70
+ error = new $TypeError(message)
71
+ break
72
+ }
75
73
 
76
- case ERROR.FuckingError: {
77
- error = new FuckingError(message)
78
- break
79
- }
74
+ case ERROR.NativeAssertionError: {
75
+ error = new $NativeAssertionError(message)
76
+ break
77
+ }
80
78
 
81
- default: {
82
- error = new Error(message)
83
- break
79
+ default: {
80
+ try {
81
+ error = new errorType(message)
82
+ } catch(err) {
83
+ [err] // put the error behind bars, where it belongs
84
+ error = new $BaseError(message)
85
+ }
86
+ }
84
87
  }
88
+ } else {
89
+ void 0
85
90
  }
86
- // make a vm context
91
+
87
92
  const context = {
88
93
  error,
89
94
  throwError,
@@ -91,17 +96,21 @@ module.exports = function immediateError(message = 'YOU SUCK AT PROGRAMMING THER
91
96
  rand: Math.random(),
92
97
  If,
93
98
  console,
94
- clc
99
+ clc,
100
+ bail
95
101
  }
96
- vm.createContext(context) // Contextify the object.
102
+ vm.createContext(context)
103
+
97
104
  const script = new vm.Script(`
98
105
  If(rand < 0.3).Then(() => {
99
106
  throwError(error)
100
- }).Else().If(rand > 0.3).Then(() => {
101
- throwop(error)
102
- }).Else(() => {
103
- throw error
104
- })`, { filename: `YOU SUCK AT PROGRAMMING THERE WAS AN ERROR!`})
107
+ }).Else().If(rand > 0.3 && rand < 0.7).Then(() => {
108
+ throwop(error)
109
+ }).Else(() => {
110
+ bail(error)
111
+ })`, { filename: `ERROR!`})
112
+
105
113
  script.runInContext(context)
106
114
  }
107
- module.exports.ERROR = ERROR
115
+
116
+ exports.ErrorType = ERROR
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "immediate-error",
3
- "version": "3.1.3",
3
+ "version": "5.0.0",
4
4
  "description": "Immediate-error",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -25,20 +25,20 @@
25
25
  "dependencies": {
26
26
  "always-four": "^1.0.0",
27
27
  "assert-fn": "^1.0.1",
28
+ "bail": "^2.0.2",
28
29
  "cli-color": "^2.0.4",
30
+ "es-errors": "^1.3.0",
31
+ "esm-wallaby": "^3.2.30",
29
32
  "five": "^0.8.0",
30
33
  "if": "^2.0.0",
31
- "jquery": "^3.7.1",
32
- "jquery-basic-arithmetic-plugin": "^1.1.0",
34
+ "is-error": "^2.2.2",
33
35
  "none": "^1.0.0",
34
36
  "number-six": "^1.0.1",
35
37
  "numeric-constant-three": "^1.0.0",
36
- "successor": "^1.0.1",
37
38
  "the-number-one": "^1.0.1",
38
39
  "throw-error": "^1.0.0",
39
40
  "two": "^1.0.7",
40
41
  "vanilla-javascript": "^1.1.1",
41
- "vapor-js-npm": "^1.4.6",
42
42
  "yanoop": "^1.0.0"
43
43
  }
44
44
  }