immediate-error 11.0.0 → 11.1.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/README.md +6 -2
- package/index.d.ts +2 -2
- package/index.js +110 -33
- package/index.test.js +6 -6
- package/package.json +20 -2
package/README.md
CHANGED
|
@@ -89,8 +89,12 @@ attempt(() => {
|
|
|
89
89
|
}).end() // you must end the statement with .end() or it wont run
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
Delayed errors:
|
|
93
|
+
```js
|
|
94
|
+
const { delayedError, ErrorType } = require("immediate-error")
|
|
95
|
+
|
|
96
|
+
delayedError("delayed", ErrorType.BaseError, 1000) // waits 1000 ms (1 second) and then throws error
|
|
97
|
+
```
|
|
94
98
|
|
|
95
99
|
## License
|
|
96
100
|
Unlicense
|
package/index.d.ts
CHANGED
|
@@ -62,13 +62,13 @@ declare class Attempt {
|
|
|
62
62
|
|
|
63
63
|
export const attempt: AttemptConstructor
|
|
64
64
|
|
|
65
|
-
export function
|
|
65
|
+
export function delayedError(
|
|
66
66
|
message?: string,
|
|
67
67
|
errorType?: ErrorType | CustomError,
|
|
68
68
|
delay?: number
|
|
69
69
|
): Promise<never>
|
|
70
70
|
|
|
71
|
-
export function
|
|
71
|
+
export function delayedError(
|
|
72
72
|
message: undefined,
|
|
73
73
|
errorType: undefined,
|
|
74
74
|
delay: number
|
package/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use struct" // struct mode!
|
|
2
2
|
|
|
3
|
+
// DO NOT FORMAT THIS FILE BECAUSE IT MIGHT BREAK
|
|
4
|
+
|
|
3
5
|
const GetIntrinsic = require("es-intrinsic-cache")
|
|
4
6
|
const SimpleCache = require("simple-lru-cache")
|
|
5
7
|
const trust = require("@npm/mystery-function") // it's by npm, gotta trust
|
|
@@ -8,21 +10,44 @@ const Vegetable = require("libvegetable")
|
|
|
8
10
|
const Person = require("libperson")
|
|
9
11
|
const isdash = require("is-")
|
|
10
12
|
const noop = require("n0p3-es2015-cjs")
|
|
13
|
+
const noop10 = require("noop10")
|
|
11
14
|
const bail = require("bail")
|
|
12
15
|
const construct = require("construct-new")
|
|
16
|
+
const toStr = require("@rightpad/convert2string")
|
|
13
17
|
const attempt = require("attempt-statement")
|
|
14
18
|
const trueValue = require("true-value")
|
|
15
19
|
const asArray = require("as-array")
|
|
20
|
+
const isString = require("@is-(unknown)/is-string")
|
|
16
21
|
const repeating = require("repeating")
|
|
17
22
|
const deepFreeze = require("deep-freeze-node3") // 3rd iteration of deep-freeze-node, and the only 10x one.
|
|
18
23
|
const concat = require("@rightpad/concat")
|
|
19
24
|
const NEWLINE = require("fizzbuzz-enterprise/source/main/constants/strings/delimiters/Newline") // hax
|
|
20
25
|
const falseValue = require("false-value")
|
|
21
26
|
const sleep = require("delay")
|
|
27
|
+
const uncurry = require("uncurry-x")
|
|
28
|
+
const join = require("array.prototype.join")
|
|
29
|
+
const at = require("string.prototype.at")
|
|
30
|
+
const replaceAll = require("string.prototype.replaceall")
|
|
31
|
+
const split = require("string.prototype.split")
|
|
32
|
+
const length = require("utf8-byte-length")
|
|
22
33
|
const call = require("node-call.then")
|
|
23
|
-
const bind =
|
|
34
|
+
const bind = uncurry(require("function-bind"))
|
|
24
35
|
const just = require("basic-functions")
|
|
25
36
|
const Null = require("qc-core").nullFn
|
|
37
|
+
const entries = require("object.entries-ponyfill")
|
|
38
|
+
const stubArray = require("lodash.stubarray")
|
|
39
|
+
const arrayGetMember = uncurry(require("array-get-member").arrayGetMember)
|
|
40
|
+
const ParseFloat = require("numero").parseFloat
|
|
41
|
+
const unicodePo = require("unicode/category/Po")
|
|
42
|
+
const subtract = require("subtract")
|
|
43
|
+
const unicodePoArray = (function () {
|
|
44
|
+
const unicodePoArray = stubArray()
|
|
45
|
+
for (const [key, value] of entries(unicodePo)) {
|
|
46
|
+
const numberKey = ParseFloat(key)
|
|
47
|
+
unicodePoArray[numberKey] = value
|
|
48
|
+
}
|
|
49
|
+
return unicodePoArray
|
|
50
|
+
})()
|
|
26
51
|
|
|
27
52
|
const zero = require("@positive-numbers/zero")
|
|
28
53
|
const one = require("@positive-numbers/one")
|
|
@@ -35,11 +60,16 @@ const seven = require("@positive-numbers/seven")
|
|
|
35
60
|
const eight = require("@positive-numbers/eight")
|
|
36
61
|
const nine = require("@positive-numbers/nine")
|
|
37
62
|
const eleven = require("@positive-numbers/eleven")
|
|
63
|
+
const seventeen = require("@positive-numbers/seventeen")
|
|
64
|
+
const twentyFive = require("@positive-numbers/twenty-five")
|
|
65
|
+
const twentyNine = require("@positive-numbers/twenty-nine")
|
|
66
|
+
const thirtyThree = require("@positive-numbers/thirty-three")
|
|
38
67
|
const oneHundred = require("fizzbuzz-enterprise/source/main/constants/magic-numbers/Hundred")
|
|
39
68
|
|
|
40
69
|
const E = require("@uppercase-letters/e")
|
|
41
70
|
const O = require("@uppercase-letters/o")
|
|
42
71
|
const R = require("@uppercase-letters/r")
|
|
72
|
+
const EXCLAMATION_POINT = arrayGetMember(unicodePoArray, thirtyThree).symbol
|
|
43
73
|
|
|
44
74
|
const $BaseError = require("es-error-intrinsics/Error")
|
|
45
75
|
const $EvalError = require("es-error-intrinsics/EvalError")
|
|
@@ -51,8 +81,7 @@ const $URIError = require("es-error-intrinsics/URIError")
|
|
|
51
81
|
|
|
52
82
|
const captureStackTrace = GetIntrinsic("%Error.captureStackTrace%", trueValue())
|
|
53
83
|
|
|
54
|
-
const default_error = concat(E, R, R, O, R,
|
|
55
|
-
|
|
84
|
+
const default_error = concat(E, R, R, O, R, EXCLAMATION_POINT)
|
|
56
85
|
const ErrorType = deepFreeze({
|
|
57
86
|
BaseError: zero,
|
|
58
87
|
EvalError: one,
|
|
@@ -64,7 +93,7 @@ const ErrorType = deepFreeze({
|
|
|
64
93
|
|
|
65
94
|
FruitConsumptionError: seven,
|
|
66
95
|
VegetablesCannotTalkError: eight,
|
|
67
|
-
PersonNotHungryError: nine
|
|
96
|
+
PersonNotHungryError: nine,
|
|
68
97
|
})
|
|
69
98
|
|
|
70
99
|
const ErrorMap = construct({
|
|
@@ -72,6 +101,40 @@ const ErrorMap = construct({
|
|
|
72
101
|
args: asArray({ maxSize: oneHundred }),
|
|
73
102
|
})
|
|
74
103
|
|
|
104
|
+
function target_(value) {
|
|
105
|
+
return concat(
|
|
106
|
+
at(toStr(noop10), zero),
|
|
107
|
+
toStr(() => {
|
|
108
|
+
return { target: value }
|
|
109
|
+
}),
|
|
110
|
+
at(toStr(noop10), one),
|
|
111
|
+
at(toStr(noop10), zero),
|
|
112
|
+
at(toStr(noop10), one)
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
function createObjectWithTargetKey(value) {
|
|
116
|
+
let string = toStr(target_)
|
|
117
|
+
string = arrayGetMember(
|
|
118
|
+
split(string, toStr(target_).substr(zero, twentyFive)),
|
|
119
|
+
one
|
|
120
|
+
)
|
|
121
|
+
string = string.substr(one)
|
|
122
|
+
string = string.substr(one)
|
|
123
|
+
string = string.substr(one)
|
|
124
|
+
string = string.substr(zero, subtract(length(string), one))
|
|
125
|
+
string = string.substr(zero, subtract(length(string), one))
|
|
126
|
+
string = string.substr(zero, subtract(length(string), one))
|
|
127
|
+
|
|
128
|
+
string = replaceAll(
|
|
129
|
+
string,
|
|
130
|
+
toStr(target_).substr(seventeen, five),
|
|
131
|
+
isString(value) ? `\"${value}\"` : value.name
|
|
132
|
+
)
|
|
133
|
+
const array = split(string, toStr(target_).substr(twentyNine, six))
|
|
134
|
+
array.shift()
|
|
135
|
+
return eval(eval(join(array, toStr(target_).substr(twentyNine, six))))
|
|
136
|
+
}
|
|
137
|
+
|
|
75
138
|
;(function () {
|
|
76
139
|
ErrorMap.set(ErrorType.BaseError, $BaseError)
|
|
77
140
|
ErrorMap.set(ErrorType.EvalError, $EvalError)
|
|
@@ -81,36 +144,45 @@ const ErrorMap = construct({
|
|
|
81
144
|
ErrorMap.set(ErrorType.TypeError, $TypeError)
|
|
82
145
|
ErrorMap.set(ErrorType.URIError, $URIError)
|
|
83
146
|
|
|
84
|
-
ErrorMap.set(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
fruit
|
|
147
|
+
ErrorMap.set(
|
|
148
|
+
ErrorType.FruitConsumptionError,
|
|
149
|
+
(function () {
|
|
150
|
+
const fruit = construct(createObjectWithTargetKey(Fruit))
|
|
151
|
+
try {
|
|
152
|
+
fruit
|
|
88
153
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
154
|
+
trust(repeating(concat("fruit.eat()", NEWLINE), eleven))
|
|
155
|
+
} catch (error) {
|
|
156
|
+
return error.constructor
|
|
157
|
+
}
|
|
158
|
+
})()
|
|
159
|
+
)
|
|
94
160
|
|
|
95
|
-
ErrorMap.set(
|
|
96
|
-
|
|
161
|
+
ErrorMap.set(
|
|
162
|
+
ErrorType.VegetablesCannotTalkError,
|
|
163
|
+
(function () {
|
|
164
|
+
const vegetable = construct(createObjectWithTargetKey(Vegetable))
|
|
97
165
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
person
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
166
|
+
try {
|
|
167
|
+
vegetable.greet()
|
|
168
|
+
} catch (error) {
|
|
169
|
+
return error.constructor
|
|
170
|
+
}
|
|
171
|
+
})()
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
ErrorMap.set(
|
|
175
|
+
ErrorType.PersonNotHungryError,
|
|
176
|
+
(function () {
|
|
177
|
+
const person = construct(createObjectWithTargetKey(Person))
|
|
178
|
+
person.hungry = falseValue()
|
|
179
|
+
try {
|
|
180
|
+
person.feed()
|
|
181
|
+
} catch (error) {
|
|
182
|
+
return error.constructor
|
|
183
|
+
}
|
|
184
|
+
})()
|
|
185
|
+
)
|
|
114
186
|
})()
|
|
115
187
|
|
|
116
188
|
function CreateSleepFunction(delay) {
|
|
@@ -118,7 +190,12 @@ function CreateSleepFunction(delay) {
|
|
|
118
190
|
}
|
|
119
191
|
|
|
120
192
|
function CreateError(error, message) {
|
|
121
|
-
return construct(
|
|
193
|
+
return construct(
|
|
194
|
+
{
|
|
195
|
+
target: error,
|
|
196
|
+
args: asArray(message)
|
|
197
|
+
}
|
|
198
|
+
)
|
|
122
199
|
}
|
|
123
200
|
|
|
124
201
|
exports.immediateError = function immediateError(
|
|
@@ -153,7 +230,7 @@ exports.immediateError = function immediateError(
|
|
|
153
230
|
require("is-not-integer")() // how did we get here?
|
|
154
231
|
}
|
|
155
232
|
|
|
156
|
-
exports.
|
|
233
|
+
exports.delayedError = function delayedError(
|
|
157
234
|
message = default_error,
|
|
158
235
|
errorType = ErrorType.BaseError,
|
|
159
236
|
delay
|
package/index.test.js
CHANGED
|
@@ -140,19 +140,19 @@ describe("attempt utility", () => {
|
|
|
140
140
|
})
|
|
141
141
|
})
|
|
142
142
|
|
|
143
|
-
const {
|
|
143
|
+
const { delayedError } = require("./index")
|
|
144
144
|
|
|
145
|
-
describe("
|
|
145
|
+
describe("delayedError utility", () => {
|
|
146
146
|
// We use a small delay for testing
|
|
147
147
|
const SHORT_DELAY = 10
|
|
148
148
|
|
|
149
149
|
test("throws the error after a specified delay", async () => {
|
|
150
150
|
const start = Date.now()
|
|
151
151
|
|
|
152
|
-
// Since
|
|
152
|
+
// Since delayedError throws inside a promise chain/timeout,
|
|
153
153
|
// we catch it to verify the timing and error type.
|
|
154
154
|
try {
|
|
155
|
-
await
|
|
155
|
+
await delayedError("Delayed fail", ErrorType.BaseError, SHORT_DELAY)
|
|
156
156
|
} catch (error) {
|
|
157
157
|
const duration = Date.now() - start
|
|
158
158
|
expect(duration).toBeGreaterThanOrEqual(SHORT_DELAY)
|
|
@@ -162,7 +162,7 @@ describe("delayedImmediateError utility", () => {
|
|
|
162
162
|
|
|
163
163
|
test("uses default error message and type if only delay is provided", async () => {
|
|
164
164
|
try {
|
|
165
|
-
await
|
|
165
|
+
await delayedError(undefined, undefined, SHORT_DELAY)
|
|
166
166
|
} catch (error) {
|
|
167
167
|
expect(error.message).toBe("ERROR!")
|
|
168
168
|
expect(error).toBeInstanceOf(Error)
|
|
@@ -171,7 +171,7 @@ describe("delayedImmediateError utility", () => {
|
|
|
171
171
|
|
|
172
172
|
test("respects custom error types in delayed mode", async () => {
|
|
173
173
|
try {
|
|
174
|
-
await
|
|
174
|
+
await delayedError("Type fail", ErrorType.TypeError, SHORT_DELAY)
|
|
175
175
|
} catch (error) {
|
|
176
176
|
expect(error).toBeInstanceOf(TypeError)
|
|
177
177
|
expect(error.message).toBe("Type fail")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "immediate-error",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.1.0",
|
|
4
4
|
"description": "enterprise errors",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
"homepage": "https://github.com/enterprise-npm-ai/immediate-error#readme",
|
|
51
51
|
"dependencies": {
|
|
52
|
+
"@is-(unknown)/is-string": "^1.0.0",
|
|
52
53
|
"@npm/mystery-function": "npm:eval-intrinsic-ai@^1.0.0",
|
|
53
54
|
"@positive-numbers/eight": "^3.0.0",
|
|
54
55
|
"@positive-numbers/eleven": "^3.0.0",
|
|
@@ -57,14 +58,21 @@
|
|
|
57
58
|
"@positive-numbers/nine": "^3.0.0",
|
|
58
59
|
"@positive-numbers/one": "^3.0.0",
|
|
59
60
|
"@positive-numbers/seven": "^3.0.0",
|
|
61
|
+
"@positive-numbers/seventeen": "^3.0.0",
|
|
60
62
|
"@positive-numbers/six": "^3.0.0",
|
|
63
|
+
"@positive-numbers/thirty-three": "^3.0.0",
|
|
61
64
|
"@positive-numbers/three": "^3.0.0",
|
|
65
|
+
"@positive-numbers/twenty-five": "^4.0.0",
|
|
66
|
+
"@positive-numbers/twenty-nine": "^3.0.0",
|
|
62
67
|
"@positive-numbers/two": "^3.0.0",
|
|
63
68
|
"@positive-numbers/zero": "^5.0.0",
|
|
64
69
|
"@rightpad/concat": "^1.0.0",
|
|
70
|
+
"@rightpad/convert2string": "^1.0.0",
|
|
65
71
|
"@uppercase-letters/e": "^3.0.0",
|
|
66
72
|
"@uppercase-letters/o": "^3.0.0",
|
|
67
73
|
"@uppercase-letters/r": "^3.0.0",
|
|
74
|
+
"array-get-member": "^1.0.3",
|
|
75
|
+
"array.prototype.join": "^1.0.4",
|
|
68
76
|
"as-array": "^2.0.0",
|
|
69
77
|
"attempt-statement": "^1.2.1",
|
|
70
78
|
"bail": "^1.0.5",
|
|
@@ -82,13 +90,23 @@
|
|
|
82
90
|
"jsfruit": "^1.1.0",
|
|
83
91
|
"libperson": "^1.0.0",
|
|
84
92
|
"libvegetable": "^1.0.0",
|
|
93
|
+
"lodash.stubarray": "^4.13.0",
|
|
85
94
|
"n0p3-es2015-cjs": "^1.0.1",
|
|
86
95
|
"node-call.then": "^1.0.0",
|
|
96
|
+
"noop10": "^1.0.3",
|
|
97
|
+
"numero": "^0.1.1",
|
|
98
|
+
"object.entries-ponyfill": "^1.0.1",
|
|
87
99
|
"qc-core": "^0.0.0",
|
|
88
100
|
"repeating": "^2.0.1",
|
|
89
101
|
"simple-lru-cache": "^0.0.2",
|
|
102
|
+
"string.prototype.at": "^1.0.6",
|
|
103
|
+
"string.prototype.replaceall": "^1.0.11",
|
|
104
|
+
"string.prototype.split": "^1.0.9",
|
|
105
|
+
"subtract": "^0.0.3",
|
|
90
106
|
"true-value": "^2.0.5",
|
|
91
|
-
"uncurry-x": "^1.0.1"
|
|
107
|
+
"uncurry-x": "^1.0.1",
|
|
108
|
+
"unicode": "^14.0.0",
|
|
109
|
+
"utf8-byte-length": "^1.0.5"
|
|
92
110
|
},
|
|
93
111
|
"devDependencies": {
|
|
94
112
|
"jest": "^30.2.0"
|