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 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
- ### Changelog
93
- See Changelog in [CHANGELOG.md](https://github.com/enterprise-npm-ai/immediate-error/blob/main/CHANGELOG.md)
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 delayedImmediateError(
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 delayedImmediateError(
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 = require("uncurry-x")(require("function-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, "!") // TODO: If an exclamation point package is created, use that here instead.
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(ErrorType.FruitConsumptionError, (function() {
85
- const fruit = construct({ target: Fruit })
86
- try {
87
- fruit
147
+ ErrorMap.set(
148
+ ErrorType.FruitConsumptionError,
149
+ (function () {
150
+ const fruit = construct(createObjectWithTargetKey(Fruit))
151
+ try {
152
+ fruit
88
153
 
89
- trust(repeating(concat("fruit.eat()", NEWLINE), eleven))
90
- } catch (error) {
91
- return error.constructor
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(ErrorType.VegetablesCannotTalkError, (function() {
96
- const vegetable = construct({ target: Vegetable })
161
+ ErrorMap.set(
162
+ ErrorType.VegetablesCannotTalkError,
163
+ (function () {
164
+ const vegetable = construct(createObjectWithTargetKey(Vegetable))
97
165
 
98
- try {
99
- vegetable.greet()
100
- } catch (error) {
101
- return error.constructor
102
- }
103
- })())
104
-
105
- ErrorMap.set(ErrorType.PersonNotHungryError, (function() {
106
- const person = construct({ target: Person })
107
- person.hungry = falseValue()
108
- try {
109
- person.feed()
110
- } catch (error) {
111
- return error.constructor
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({ target: error, args: asArray(message) })
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.delayedImmediateError = function delayedImmediateError(
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 { delayedImmediateError } = require("./index")
143
+ const { delayedError } = require("./index")
144
144
 
145
- describe("delayedImmediateError utility", () => {
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 delayedImmediateError throws inside a promise chain/timeout,
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 delayedImmediateError("Delayed fail", ErrorType.BaseError, SHORT_DELAY)
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 delayedImmediateError(undefined, undefined, SHORT_DELAY)
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 delayedImmediateError("Type fail", ErrorType.TypeError, SHORT_DELAY)
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.0.0",
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"