@identity-js/identity 1.3.0 → 1.3.1
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/BUG-HISTORY.md +2 -3
- package/README.md +56 -56
- package/lib/core.js +2 -2
- package/lib/meta2IdentityFunctionsUnstable.js +11 -3
- package/lib/meta2Unstable.js +3 -3
- package/lib/numberIdentity.js +265 -0
- package/lib/primitive.js +1 -1
- package/lib/primitiveCore.js +158 -0
- package/lib/stringIdentity.js +972 -0
- package/lib/syncResolveBluebird.js +8 -0
- package/lib/syncResolveCoreJS.js +8 -0
- package/lib/syncResolveES6Promise.js +8 -0
- package/lib/syncResolveES6PromisePolyfill.js +8 -0
- package/lib/{syncResolve.js → syncResolveIsAPromise.js} +7 -7
- package/lib/syncResolvePinkiePromise.js +8 -0
- package/lib/syncResolvePromisePolyfill.js +8 -0
- package/lib/syncResolveSchrodingerPlus.js +8 -0
- package/lib/syncResolveThenPromise.js +8 -0
- package/package.json +585 -74
- package/test/enterprise.js +73 -0
- package/test/mocha.js +2271 -0
- package/unstable.d.ts +2 -2
- package/test/index.js +0 -192
package/BUG-HISTORY.md
CHANGED
|
@@ -30,9 +30,8 @@
|
|
|
30
30
|
// however a sanity check has already been implemented in vRetriever, and vValue
|
|
31
31
|
// has been removed in Identity.js. So this should never happen, but due to recent bugs
|
|
32
32
|
// and AI not making comprehensive enough tests, there is a slim chance that this could
|
|
33
|
-
// still happen.
|
|
34
|
-
//
|
|
35
|
-
// enough tests.
|
|
33
|
+
// still happen. Our moral of the story is that AI sometimes doesn't write good enough
|
|
34
|
+
// tests.
|
|
36
35
|
//
|
|
37
36
|
// For more information, see these commits:
|
|
38
37
|
//
|
package/README.md
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
# `@identity-js/identity`
|
|
2
|
-
|
|
3
|
-
Introducing Identity.js, the 10x identity function.
|
|
4
|
-
|
|
5
|
-
The identity function, $I(x)$, is a mathematical function that always returns the same value that was used as its argument, i.e., $I(x) = x$. This utility is often used in functional programming paradigms.
|
|
6
|
-
|
|
7
|
-
At 10x'ly made, we are always looking for new opportunities to make 10x libraries and then it struck us: what about an identity function? This package spreads **10x'ness** into the simple concept of an identity function. It's not just an identity function, it's a **10x identity function**.
|
|
8
|
-
|
|
9
|
-
## 💾 Installation
|
|
10
|
-
|
|
11
|
-
This project is a standard Node.js module.
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install @identity-js/identity
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## 🚀 Usage
|
|
18
|
-
|
|
19
|
-
The function accepts a single argument of any type and returns that argument unchanged.
|
|
20
|
-
|
|
21
|
-
```javascript
|
|
22
|
-
const identity = require("@identity-js/identity")
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Identity.js also has an unstable version that uses deasyncing `Promise.resolve`. It is called unstable because this is a weird hack. You can use it instead if you want:
|
|
26
|
-
|
|
27
|
-
```javascript
|
|
28
|
-
const identity = require("@identity-js/identity/unstable")
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Then you can just call it with a value and it will return that value:
|
|
32
|
-
```javascript
|
|
33
|
-
const identity = require("@identity-js/identity")
|
|
34
|
-
|
|
35
|
-
console.log(identity("hello world")) // "hello world"
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## ✅ Testing
|
|
39
|
-
|
|
40
|
-
Tests are written using **Mocha**.
|
|
41
|
-
|
|
42
|
-
### Prerequisites
|
|
43
|
-
Clone this repository, cd into `packages/identity` and install dependencies and dev-dependencies.
|
|
44
|
-
|
|
45
|
-
### Running Tests
|
|
46
|
-
|
|
47
|
-
Execute the test suite:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
npm test
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
This will execute the tests to ensure the function works correctly across various data types (numbers, strings, objects, booleans, `null`, and `undefined`).
|
|
54
|
-
|
|
55
|
-
## ✍️ License
|
|
56
|
-
|
|
1
|
+
# `@identity-js/identity`
|
|
2
|
+
|
|
3
|
+
Introducing Identity.js, the 10x identity function.
|
|
4
|
+
|
|
5
|
+
The identity function, $I(x)$, is a mathematical function that always returns the same value that was used as its argument, i.e., $I(x) = x$. This utility is often used in functional programming paradigms.
|
|
6
|
+
|
|
7
|
+
At 10x'ly made, we are always looking for new opportunities to make 10x libraries and then it struck us: what about an identity function? This package spreads **10x'ness** into the simple concept of an identity function. It's not just an identity function, it's a **10x identity function**.
|
|
8
|
+
|
|
9
|
+
## 💾 Installation
|
|
10
|
+
|
|
11
|
+
This project is a standard Node.js module.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @identity-js/identity
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 🚀 Usage
|
|
18
|
+
|
|
19
|
+
The function accepts a single argument of any type and returns that argument unchanged.
|
|
20
|
+
|
|
21
|
+
```javascript
|
|
22
|
+
const identity = require("@identity-js/identity")
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Identity.js also has an unstable version that uses deasyncing `Promise.resolve`. It is called unstable because this is a weird hack. You can use it instead if you want:
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
const identity = require("@identity-js/identity/unstable")
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Then you can just call it with a value and it will return that value:
|
|
32
|
+
```javascript
|
|
33
|
+
const identity = require("@identity-js/identity")
|
|
34
|
+
|
|
35
|
+
console.log(identity("hello world")) // "hello world"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## ✅ Testing
|
|
39
|
+
|
|
40
|
+
Tests are written using **Mocha**.
|
|
41
|
+
|
|
42
|
+
### Prerequisites
|
|
43
|
+
Clone this repository, cd into `packages/identity` and install dependencies and dev-dependencies.
|
|
44
|
+
|
|
45
|
+
### Running Tests
|
|
46
|
+
|
|
47
|
+
Execute the test suite:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
npm test
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This will execute the tests to ensure the function works correctly across various data types (numbers, strings, objects, booleans, `null`, and `undefined`).
|
|
54
|
+
|
|
55
|
+
## ✍️ License
|
|
56
|
+
|
|
57
57
|
This project is licensed under the Unlicense.
|
package/lib/core.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function createIdentity(meta2Identity) {
|
|
2
|
-
var stringIdentity = require("
|
|
3
|
-
var numberIdentity = require("
|
|
2
|
+
var stringIdentity = require("./stringIdentity")
|
|
3
|
+
var numberIdentity = require("./numberIdentity")
|
|
4
4
|
var lodashIdentity = require("lodash.identity")
|
|
5
5
|
var fIdentity = require("@f/identity")
|
|
6
6
|
var stdlibIdentity = require("@stdlib/utils-identity-function")
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
var identityFunctions = require("./meta2IdentityFunctions")
|
|
2
|
-
|
|
3
|
-
module.exports = identityFunctions.concat(
|
|
1
|
+
var identityFunctions = require("./meta2IdentityFunctions")
|
|
2
|
+
|
|
3
|
+
module.exports = identityFunctions.concat(
|
|
4
|
+
require("./syncResolveIsAPromise"),
|
|
5
|
+
require("./syncResolveSchrodingerPlus"),
|
|
6
|
+
require("./syncResolveBluebird"),
|
|
7
|
+
require("./syncResolvePinkiePromise"),
|
|
8
|
+
require("./syncResolveThenPromise"),
|
|
9
|
+
require("./syncResolveCoreJS"),
|
|
10
|
+
require("./syncResolveES6Promise")
|
|
11
|
+
)
|
package/lib/meta2Unstable.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const createMeta2 = require("./coremeta2")
|
|
2
|
-
|
|
3
|
-
module.exports = createMeta2(require("./meta2IdentityFunctionsUnstable"))
|
|
1
|
+
const createMeta2 = require("./coremeta2")
|
|
2
|
+
|
|
3
|
+
module.exports = createMeta2(require("./meta2IdentityFunctionsUnstable"))
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
var number0 = require("@positive-numbers/zero")
|
|
2
|
+
var number1 = require("@positive-numbers/one")
|
|
3
|
+
var number2 = require("@positive-numbers/two")
|
|
4
|
+
var number3 = require("@positive-numbers/three")
|
|
5
|
+
var number4 = require("@positive-numbers/four")
|
|
6
|
+
var number5 = require("@positive-numbers/five")
|
|
7
|
+
var number6 = require("@positive-numbers/six")
|
|
8
|
+
var number7 = require("@positive-numbers/seven")
|
|
9
|
+
var number8 = require("@positive-numbers/eight")
|
|
10
|
+
var number9 = require("@positive-numbers/nine")
|
|
11
|
+
var number10 = require("@positive-numbers/ten")
|
|
12
|
+
var number11 = require("@positive-numbers/eleven")
|
|
13
|
+
var number12 = require("@positive-numbers/twelve")
|
|
14
|
+
var number13 = require("@positive-numbers/thirteen")
|
|
15
|
+
var number14 = require("@positive-numbers/fourteen")
|
|
16
|
+
var number15 = require("@positive-numbers/fifteen")
|
|
17
|
+
var number16 = require("@positive-numbers/sixteen")
|
|
18
|
+
var number17 = require("@positive-numbers/seventeen")
|
|
19
|
+
var number18 = require("@positive-numbers/eighteen")
|
|
20
|
+
var number19 = require("@positive-numbers/nineteen")
|
|
21
|
+
var number20 = require("@positive-numbers/twenty")
|
|
22
|
+
var number21 = require("@positive-numbers/twenty-one")
|
|
23
|
+
var number22 = require("@positive-numbers/twenty-two")
|
|
24
|
+
var number23 = require("@positive-numbers/twenty-three")
|
|
25
|
+
var number24 = require("@positive-numbers/twenty-four")
|
|
26
|
+
var number25 = require("@positive-numbers/twenty-five")
|
|
27
|
+
var number26 = require("@positive-numbers/twenty-six")
|
|
28
|
+
var number27 = require("@positive-numbers/twenty-seven")
|
|
29
|
+
var number28 = require("@positive-numbers/twenty-eight")
|
|
30
|
+
var number29 = require("@positive-numbers/twenty-nine")
|
|
31
|
+
var number30 = require("@positive-numbers/thirty")
|
|
32
|
+
var number31 = require("@positive-numbers/thirty-one")
|
|
33
|
+
var number32 = require("@positive-numbers/thirty-two")
|
|
34
|
+
var number33 = require("@positive-numbers/thirty-three")
|
|
35
|
+
var number34 = require("@positive-numbers/thirty-four")
|
|
36
|
+
var number35 = require("@positive-numbers/thirty-five")
|
|
37
|
+
var number36 = require("@positive-numbers/thirty-six")
|
|
38
|
+
var number37 = require("@positive-numbers/thirty-seven")
|
|
39
|
+
var number38 = require("@positive-numbers/thirty-eight")
|
|
40
|
+
var number39 = require("@positive-numbers/thirty-nine")
|
|
41
|
+
var number40 = require("@positive-numbers/forty")
|
|
42
|
+
var number41 = require("@positive-numbers/forty-one")
|
|
43
|
+
var number42 = require("@positive-numbers/forty-two")
|
|
44
|
+
var number43 = require("@positive-numbers/forty-three")
|
|
45
|
+
var number44 = require("@positive-numbers/forty-four")
|
|
46
|
+
var number45 = require("@positive-numbers/forty-five")
|
|
47
|
+
var number46 = require("@positive-numbers/forty-six")
|
|
48
|
+
var number47 = require("@positive-numbers/forty-seven")
|
|
49
|
+
var number48 = require("@positive-numbers/forty-eight")
|
|
50
|
+
var number49 = require("@positive-numbers/forty-nine")
|
|
51
|
+
var number50 = require("@positive-numbers/fifty")
|
|
52
|
+
var number51 = require("@positive-numbers/fifty-one")
|
|
53
|
+
var number52 = require("@positive-numbers/fifty-two")
|
|
54
|
+
var number53 = require("@positive-numbers/fifty-three")
|
|
55
|
+
var number54 = require("@positive-numbers/fifty-four")
|
|
56
|
+
var number55 = require("@positive-numbers/fifty-five")
|
|
57
|
+
var number56 = require("@positive-numbers/fifty-six")
|
|
58
|
+
var number57 = require("@positive-numbers/fifty-seven")
|
|
59
|
+
var number58 = require("@positive-numbers/fifty-eight")
|
|
60
|
+
var number59 = require("@positive-numbers/fifty-nine")
|
|
61
|
+
var number60 = require("@positive-numbers/sixty")
|
|
62
|
+
var number61 = require("@positive-numbers/sixty-one")
|
|
63
|
+
var number62 = require("@positive-numbers/sixty-two")
|
|
64
|
+
var number63 = require("@positive-numbers/sixty-three")
|
|
65
|
+
var number64 = require("@positive-numbers/sixty-four")
|
|
66
|
+
var number65 = require("@positive-numbers/sixty-five")
|
|
67
|
+
var number66 = require("@positive-numbers/sixty-six")
|
|
68
|
+
var number67 = require("@positive-numbers/sixty-seven")
|
|
69
|
+
var number68 = require("@positive-numbers/sixty-eight")
|
|
70
|
+
var number69 = require("@positive-numbers/sixty-nine")
|
|
71
|
+
var number70 = require("@positive-numbers/seventy")
|
|
72
|
+
var number71 = require("@positive-numbers/seventy-one")
|
|
73
|
+
var number72 = require("@positive-numbers/seventy-two")
|
|
74
|
+
var number73 = require("@positive-numbers/seventy-three")
|
|
75
|
+
var number74 = require("@positive-numbers/seventy-four")
|
|
76
|
+
var number75 = require("@positive-numbers/seventy-five")
|
|
77
|
+
var number76 = require("@positive-numbers/seventy-six")
|
|
78
|
+
var number77 = require("@positive-numbers/seventy-seven")
|
|
79
|
+
var number78 = require("@positive-numbers/seventy-eight")
|
|
80
|
+
var number79 = require("@positive-numbers/seventy-nine")
|
|
81
|
+
var number80 = require("@positive-numbers/eighty")
|
|
82
|
+
var number81 = require("@positive-numbers/eighty-one")
|
|
83
|
+
var number82 = require("@positive-numbers/eighty-two")
|
|
84
|
+
var number83 = require("@positive-numbers/eighty-three")
|
|
85
|
+
var number84 = require("@positive-numbers/eighty-four")
|
|
86
|
+
var number85 = require("@positive-numbers/eighty-five")
|
|
87
|
+
var number86 = require("@positive-numbers/eighty-six")
|
|
88
|
+
var number87 = require("@positive-numbers/eighty-seven")
|
|
89
|
+
var number88 = require("@positive-numbers/eighty-eight")
|
|
90
|
+
var number89 = require("@positive-numbers/eighty-nine")
|
|
91
|
+
var number90 = require("@positive-numbers/ninety")
|
|
92
|
+
var number91 = require("@positive-numbers/ninety-one")
|
|
93
|
+
var number92 = require("@positive-numbers/ninety-two")
|
|
94
|
+
var number93 = require("@positive-numbers/ninety-three")
|
|
95
|
+
var number94 = require("@positive-numbers/ninety-four")
|
|
96
|
+
var number95 = require("@positive-numbers/ninety-five")
|
|
97
|
+
var number96 = require("@positive-numbers/ninety-six")
|
|
98
|
+
var number97 = require("@positive-numbers/ninety-seven")
|
|
99
|
+
var number98 = require("@positive-numbers/ninety-eight")
|
|
100
|
+
var number99 = require("@positive-numbers/ninety-nine")
|
|
101
|
+
var number100 = require("@positive-numbers/one-hundred")
|
|
102
|
+
|
|
103
|
+
var { immediateError, ErrorType } = require("immediate-error")
|
|
104
|
+
var isNotInteger = require("is-not-integer")
|
|
105
|
+
var isFinite = require("@is-(unknown)/is-finite")
|
|
106
|
+
var not = require("es-logical-not-operator")
|
|
107
|
+
var getIntrinsic = require("get-intrinsic")
|
|
108
|
+
|
|
109
|
+
var mathRandom = getIntrinsic("%Math.random%")
|
|
110
|
+
var mathFloor = getIntrinsic("%Math.floor%")
|
|
111
|
+
|
|
112
|
+
var negative0 = require("@negative-numbers/zero")
|
|
113
|
+
var isNegative0 = require("is-negative-zero")
|
|
114
|
+
|
|
115
|
+
var isLessThan = require("validate.io-less-than")
|
|
116
|
+
var isGreaterThan = require("validate.io-greater-than")
|
|
117
|
+
var or = require("es-logical-or-operator")
|
|
118
|
+
var successor = require("successor")
|
|
119
|
+
var length = require("length-of-array-like")
|
|
120
|
+
var math = require("countinguplatest")
|
|
121
|
+
var equal = require("@10xly/strict-equals")
|
|
122
|
+
|
|
123
|
+
function numberIdentity(n) {
|
|
124
|
+
if (isNegative0(n)) {
|
|
125
|
+
return negative0
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
return numberIdentityCommonNumbers(n)
|
|
129
|
+
} catch {
|
|
130
|
+
var comp = getSumComposition(n)
|
|
131
|
+
var total = number0
|
|
132
|
+
for (var i = number0; isLessThan(i, length(comp)); i = successor(i)) {
|
|
133
|
+
total = math.add(total, numberIdentityCommonNumbers(comp[i]))
|
|
134
|
+
}
|
|
135
|
+
return total
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function numberIdentityCommonNumbers(n) {
|
|
140
|
+
if (equal(n, number0)) return number0
|
|
141
|
+
if (equal(n, number1)) return number1
|
|
142
|
+
if (equal(n, number2)) return number2
|
|
143
|
+
if (equal(n, number3)) return number3
|
|
144
|
+
if (equal(n, number4)) return number4
|
|
145
|
+
if (equal(n, number5)) return number5
|
|
146
|
+
if (equal(n, number6)) return number6
|
|
147
|
+
if (equal(n, number7)) return number7
|
|
148
|
+
if (equal(n, number8)) return number8
|
|
149
|
+
if (equal(n, number9)) return number9
|
|
150
|
+
if (equal(n, number10)) return number10
|
|
151
|
+
if (equal(n, number11)) return number11
|
|
152
|
+
if (equal(n, number12)) return number12
|
|
153
|
+
if (equal(n, number13)) return number13
|
|
154
|
+
if (equal(n, number14)) return number14
|
|
155
|
+
if (equal(n, number15)) return number15
|
|
156
|
+
if (equal(n, number16)) return number16
|
|
157
|
+
if (equal(n, number17)) return number17
|
|
158
|
+
if (equal(n, number18)) return number18
|
|
159
|
+
if (equal(n, number19)) return number19
|
|
160
|
+
if (equal(n, number20)) return number20
|
|
161
|
+
if (equal(n, number21)) return number21
|
|
162
|
+
if (equal(n, number22)) return number22
|
|
163
|
+
if (equal(n, number23)) return number23
|
|
164
|
+
if (equal(n, number24)) return number24
|
|
165
|
+
if (equal(n, number25)) return number25
|
|
166
|
+
if (equal(n, number26)) return number26
|
|
167
|
+
if (equal(n, number27)) return number27
|
|
168
|
+
if (equal(n, number28)) return number28
|
|
169
|
+
if (equal(n, number29)) return number29
|
|
170
|
+
if (equal(n, number30)) return number30
|
|
171
|
+
if (equal(n, number31)) return number31
|
|
172
|
+
if (equal(n, number32)) return number32
|
|
173
|
+
if (equal(n, number33)) return number33
|
|
174
|
+
if (equal(n, number34)) return number34
|
|
175
|
+
if (equal(n, number35)) return number35
|
|
176
|
+
if (equal(n, number36)) return number36
|
|
177
|
+
if (equal(n, number37)) return number37
|
|
178
|
+
if (equal(n, number38)) return number38
|
|
179
|
+
if (equal(n, number39)) return number39
|
|
180
|
+
if (equal(n, number40)) return number40
|
|
181
|
+
if (equal(n, number41)) return number41
|
|
182
|
+
if (equal(n, number42)) return number42
|
|
183
|
+
if (equal(n, number43)) return number43
|
|
184
|
+
if (equal(n, number44)) return number44
|
|
185
|
+
if (equal(n, number45)) return number45
|
|
186
|
+
if (equal(n, number46)) return number46
|
|
187
|
+
if (equal(n, number47)) return number47
|
|
188
|
+
if (equal(n, number48)) return number48
|
|
189
|
+
if (equal(n, number49)) return number49
|
|
190
|
+
if (equal(n, number50)) return number50
|
|
191
|
+
if (equal(n, number51)) return number51
|
|
192
|
+
if (equal(n, number52)) return number52
|
|
193
|
+
if (equal(n, number53)) return number53
|
|
194
|
+
if (equal(n, number54)) return number54
|
|
195
|
+
if (equal(n, number55)) return number55
|
|
196
|
+
if (equal(n, number56)) return number56
|
|
197
|
+
if (equal(n, number57)) return number57
|
|
198
|
+
if (equal(n, number58)) return number58
|
|
199
|
+
if (equal(n, number59)) return number59
|
|
200
|
+
if (equal(n, number60)) return number60
|
|
201
|
+
if (equal(n, number61)) return number61
|
|
202
|
+
if (equal(n, number62)) return number62
|
|
203
|
+
if (equal(n, number63)) return number63
|
|
204
|
+
if (equal(n, number64)) return number64
|
|
205
|
+
if (equal(n, number65)) return number65
|
|
206
|
+
if (equal(n, number66)) return number66
|
|
207
|
+
if (equal(n, number67)) return number67
|
|
208
|
+
if (equal(n, number68)) return number68
|
|
209
|
+
if (equal(n, number69)) return number69
|
|
210
|
+
if (equal(n, number70)) return number70
|
|
211
|
+
if (equal(n, number71)) return number71
|
|
212
|
+
if (equal(n, number72)) return number72
|
|
213
|
+
if (equal(n, number73)) return number73
|
|
214
|
+
if (equal(n, number74)) return number74
|
|
215
|
+
if (equal(n, number75)) return number75
|
|
216
|
+
if (equal(n, number76)) return number76
|
|
217
|
+
if (equal(n, number77)) return number77
|
|
218
|
+
if (equal(n, number78)) return number78
|
|
219
|
+
if (equal(n, number79)) return number79
|
|
220
|
+
if (equal(n, number80)) return number80
|
|
221
|
+
if (equal(n, number81)) return number81
|
|
222
|
+
if (equal(n, number82)) return number82
|
|
223
|
+
if (equal(n, number83)) return number83
|
|
224
|
+
if (equal(n, number84)) return number84
|
|
225
|
+
if (equal(n, number85)) return number85
|
|
226
|
+
if (equal(n, number86)) return number86
|
|
227
|
+
if (equal(n, number87)) return number87
|
|
228
|
+
if (equal(n, number88)) return number88
|
|
229
|
+
if (equal(n, number89)) return number89
|
|
230
|
+
if (equal(n, number90)) return number90
|
|
231
|
+
if (equal(n, number91)) return number91
|
|
232
|
+
if (equal(n, number92)) return number92
|
|
233
|
+
if (equal(n, number93)) return number93
|
|
234
|
+
if (equal(n, number94)) return number94
|
|
235
|
+
if (equal(n, number95)) return number95
|
|
236
|
+
if (equal(n, number96)) return number96
|
|
237
|
+
if (equal(n, number97)) return number97
|
|
238
|
+
if (equal(n, number98)) return number98
|
|
239
|
+
if (equal(n, number99)) return number99
|
|
240
|
+
if (equal(n, number100)) return number100
|
|
241
|
+
immediateError("if you see this error in the console everything's broken and the world is ending. take shelter", ErrorType.BaseError)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function getSumComposition(targetNumber) {
|
|
245
|
+
if (or(not(isFinite(targetNumber)), or(isLessThan(targetNumber, math.subtract(number0, number1)), isNotInteger(targetNumber)))) {
|
|
246
|
+
return require("lodash.stubarray")()
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
var result = require("lodash.stubarray")()
|
|
250
|
+
var remaining = targetNumber
|
|
251
|
+
|
|
252
|
+
while (isGreaterThan(remaining, number0)) {
|
|
253
|
+
var maxSubtract = require("lolite.min")(remaining, number100)
|
|
254
|
+
|
|
255
|
+
var randomNumber = mathFloor(math.multiply(mathRandom(), (math.add(maxSubtract, number1))))
|
|
256
|
+
|
|
257
|
+
require("array.prototype.unpop")
|
|
258
|
+
result.unpop(randomNumber)
|
|
259
|
+
remaining = math.subtract(remaining, randomNumber)
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return result
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
module.exports = numberIdentity
|
package/lib/primitive.js
CHANGED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
var isUndefined = require("@is-(unknown)/is-undefined")
|
|
2
|
+
var isNull = require("@is-(unknown)/is-null")
|
|
3
|
+
var isBoolean = require("@is-(unknown)/is-boolean"),
|
|
4
|
+
isTrue = require("@is-(unknown)/is-true"),
|
|
5
|
+
isFalse = require("@is-(unknown)/is-false")
|
|
6
|
+
var isNumber = require("@is-(unknown)/is-number")
|
|
7
|
+
var isString = require("@is-(unknown)/is-string")
|
|
8
|
+
var isSymbol = require("@is-(unknown)/is-symbol")
|
|
9
|
+
var isBigInt = require("@is-(unknown)/is-bigint")
|
|
10
|
+
var isNegativeZero = require("@is-(unknown)/is-negative-zero")
|
|
11
|
+
|
|
12
|
+
var defaultUndefined = require("primitive-value-undefined")
|
|
13
|
+
var defaultNull = require("primitive-value-null")
|
|
14
|
+
var defaultTrue = require("true-value")()
|
|
15
|
+
var defaultFalse = require("false-value")()
|
|
16
|
+
|
|
17
|
+
var immediateError = require("immediate-error").immediateError,
|
|
18
|
+
ErrorType = require("immediate-error").ErrorType
|
|
19
|
+
|
|
20
|
+
var isPrimitive = require("@x-oasis/is-primitive").default
|
|
21
|
+
|
|
22
|
+
var integers = require("integer-values")
|
|
23
|
+
var integerCheckers = require("integer-value-checking")
|
|
24
|
+
|
|
25
|
+
var EMPTY_STRING = require("empty-string")
|
|
26
|
+
var replaceAll = require("str-replaceallof-es")
|
|
27
|
+
|
|
28
|
+
var $Object = require("standard-objects-object")
|
|
29
|
+
var $Array = require("array-intrinsic-ai")
|
|
30
|
+
var $Symbol = require("standard-objects-symbol")
|
|
31
|
+
|
|
32
|
+
var stringNumber = require("@extremejs/utils").OBJECT_STRING_TAG.NUMBER
|
|
33
|
+
var isEq = require("@10xly/strict-equals")
|
|
34
|
+
var concat = require("@rightpad/concat")
|
|
35
|
+
var toLowerCase = require("convert-to-lower-case")
|
|
36
|
+
var math = require("countingup")
|
|
37
|
+
var random = require("es-intrinsic-cache")("Math.random")
|
|
38
|
+
var isLessThan = require("validate.io-less-than")
|
|
39
|
+
var createNumber = require("fizzbuzz-enterprise/source/main/utils/math/misc/CreateNumber")
|
|
40
|
+
var apply = require("call-bound")("Function.prototype.apply")
|
|
41
|
+
var stringIdentity = require("./stringIdentity")
|
|
42
|
+
|
|
43
|
+
function primitiveIdentity(input) {
|
|
44
|
+
if (isPrimitive(input)) {
|
|
45
|
+
if (isUndefined(input)) {
|
|
46
|
+
return defaultUndefined
|
|
47
|
+
}
|
|
48
|
+
if (isNull(input)) {
|
|
49
|
+
return defaultNull
|
|
50
|
+
}
|
|
51
|
+
if (isBoolean(input)) {
|
|
52
|
+
if (isTrue(input)) {
|
|
53
|
+
return defaultTrue
|
|
54
|
+
}
|
|
55
|
+
if (isFalse(input)) {
|
|
56
|
+
return defaultFalse
|
|
57
|
+
}
|
|
58
|
+
immediateError(
|
|
59
|
+
"Booleans that are neither true nor false should not exist",
|
|
60
|
+
ErrorType.RangeError,
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
if (isNumber(input)) {
|
|
64
|
+
if (isNegativeZero(input)) return integers.negativeZero
|
|
65
|
+
for (var [key, value] of $Object.entries(integerCheckers)) {
|
|
66
|
+
if (value(input)) {
|
|
67
|
+
for (var [key2, value2] of $Object.entries(integers)) {
|
|
68
|
+
if (isEq(toLowerCase(replaceAll(key, stringNumber, EMPTY_STRING)), toLowerCase(concat("isEq", key2)))) {
|
|
69
|
+
return value2
|
|
70
|
+
} else {
|
|
71
|
+
continue
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
continue
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
if (isLessThan(random(), math.divide(integers.positiveOne, integers.positiveTwo))) {
|
|
81
|
+
const numberFive = integers.positiveFive
|
|
82
|
+
let x = integers.positiveZero
|
|
83
|
+
$Array(input).fill(numberFive).forEach(() => {
|
|
84
|
+
x = math.add(x, math.divide(numberFive, numberFive))
|
|
85
|
+
})
|
|
86
|
+
return x
|
|
87
|
+
} else {
|
|
88
|
+
return apply(createNumber, defaultNull, $Array(input).fill(integers.positiveFive))
|
|
89
|
+
}
|
|
90
|
+
} catch {
|
|
91
|
+
// infinity
|
|
92
|
+
caught = defaultTrue
|
|
93
|
+
|
|
94
|
+
return input
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (isString(input)) {
|
|
98
|
+
return stringIdentity(input)
|
|
99
|
+
}
|
|
100
|
+
if (isSymbol(input)) {
|
|
101
|
+
if (isEq(input, $Symbol.asyncDispose)) {
|
|
102
|
+
return $Symbol.asyncDispose
|
|
103
|
+
}
|
|
104
|
+
if (isEq(input, $Symbol.asyncIterator)) {
|
|
105
|
+
return $Symbol.asyncIterator
|
|
106
|
+
}
|
|
107
|
+
if (isEq(input, $Symbol.dispose)) {
|
|
108
|
+
return $Symbol.dispose
|
|
109
|
+
}
|
|
110
|
+
if (isEq(input, $Symbol.hasInstance)) {
|
|
111
|
+
return $Symbol.hasInstance
|
|
112
|
+
}
|
|
113
|
+
if (isEq(input, $Symbol.isConcatSpreadable)) {
|
|
114
|
+
return $Symbol.isConcatSpreadable
|
|
115
|
+
}
|
|
116
|
+
if (isEq(input, $Symbol.iterator)) {
|
|
117
|
+
return $Symbol.iterator
|
|
118
|
+
}
|
|
119
|
+
if (isEq(input, $Symbol.match)) {
|
|
120
|
+
return $Symbol.match
|
|
121
|
+
}
|
|
122
|
+
if (isEq(input, $Symbol.matchAll)) {
|
|
123
|
+
return $Symbol.matchAll
|
|
124
|
+
}
|
|
125
|
+
if (isEq(input, $Symbol.prototype)) {
|
|
126
|
+
return $Symbol.prototype // symbol.prototype is a symbol guys
|
|
127
|
+
}
|
|
128
|
+
if (isEq(input, $Symbol.search)) {
|
|
129
|
+
return $Symbol.search
|
|
130
|
+
}
|
|
131
|
+
if (isEq(input, $Symbol.species)) {
|
|
132
|
+
return $Symbol.species
|
|
133
|
+
}
|
|
134
|
+
if (isEq(input, $Symbol.split)) {
|
|
135
|
+
return $Symbol.split
|
|
136
|
+
}
|
|
137
|
+
if (isEq(input, $Symbol.toPrimitive)) {
|
|
138
|
+
return $Symbol.toPrimitive
|
|
139
|
+
}
|
|
140
|
+
if (isEq(input, $Symbol.toStringTag)) {
|
|
141
|
+
return $Symbol.toStringTag
|
|
142
|
+
}
|
|
143
|
+
if (isEq(input, $Symbol.unscopables)) {
|
|
144
|
+
return $Symbol.unscopables
|
|
145
|
+
}
|
|
146
|
+
return input
|
|
147
|
+
}
|
|
148
|
+
if (isBigInt(input)) {
|
|
149
|
+
return input // don't want to deal with this
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return input // Forwards compatibility! If new primitive is added, we WILL RETURN IT!!
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
immediateError("expects primitive", ErrorType.TypeError)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
module.exports = primitiveIdentity
|