@nejs/basic-extensions 2.21.0 → 2.22.6

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 (270) hide show
  1. package/.idea/markdown.xml +8 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/ne-basic-extensions.iml +8 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/CODE_STYLE.md +393 -0
  6. package/CODING_PHILOSOPHY.md +36 -0
  7. package/DOCUMENTATION_GUIDELINES.md +221 -0
  8. package/README.md +78 -4
  9. package/dist/@nejs/basic-extensions.bundle.2.22.6.js +25 -0
  10. package/dist/@nejs/basic-extensions.bundle.2.22.6.js.map +7 -0
  11. package/dist/cjs/classes/index.cjs +11129 -0
  12. package/dist/cjs/classes/index.cjs.map +7 -0
  13. package/dist/cjs/index.cjs +15191 -0
  14. package/dist/cjs/index.cjs.map +7 -0
  15. package/dist/cjs/utils/index.cjs +3954 -0
  16. package/dist/cjs/utils/index.cjs.map +7 -0
  17. package/dist/esm/basic-extensions.mjs +25 -0
  18. package/dist/esm/basic-extensions.mjs.map +7 -0
  19. package/package.json +16 -22
  20. package/repl.bootstrap.js +4 -7
  21. package/repl.history +30 -30
  22. package/src/big.int.extension.js +171 -45
  23. package/src/classes/enumeration.js +466 -0
  24. package/src/classes/index.js +5 -1
  25. package/src/index.js +5 -1
  26. package/src/math.extension.js +73 -0
  27. package/src/number.extension.js +18 -0
  28. package/src/regular.expression.extensions.js +0 -35
  29. package/src/utils/toolkit.js +699 -516
  30. package/tests/arrayextensions.test.js +3 -3
  31. package/tests/index.test.js +3 -1
  32. package/tests/newClasses/asyncIterable.test.js +3 -3
  33. package/tests/newClasses/deferred.test.js +3 -3
  34. package/tests/newClasses/descriptor.test.js +3 -3
  35. package/tests/newClasses/iterable.test.js +3 -3
  36. package/tests/newClasses/refmap.test.js +3 -3
  37. package/tests/newClasses/refset.test.js +3 -3
  38. package/tests/objectextensions.test.js +3 -3
  39. package/tests/setextensions.test.js +3 -3
  40. package/tests/stringextensions.test.js +3 -2
  41. package/tests/utils/descriptor.utils.test.js +1 -1
  42. package/tests/utils/toolkit.test.js +429 -163
  43. package/.esdoc.json +0 -9
  44. package/.vscode/settings.json +0 -5
  45. package/bin/build +0 -27
  46. package/bin/clean +0 -14
  47. package/bin/esbuild +0 -91
  48. package/bin/fixup +0 -13
  49. package/bin/repl.basics.js +0 -584
  50. package/bin/repl.signature.js +0 -63
  51. package/bin/version +0 -100
  52. package/dist/@nejs/basic-extensions.bundle.2.21.0.js +0 -25
  53. package/dist/@nejs/basic-extensions.bundle.2.21.0.js.map +0 -7
  54. package/dist/cjs/array.extensions.d.ts +0 -39
  55. package/dist/cjs/array.extensions.js +0 -477
  56. package/dist/cjs/array.extensions.js.map +0 -1
  57. package/dist/cjs/big.int.extension.d.ts +0 -31
  58. package/dist/cjs/big.int.extension.js +0 -165
  59. package/dist/cjs/big.int.extension.js.map +0 -1
  60. package/dist/cjs/classes/asyncIterable.d.ts +0 -126
  61. package/dist/cjs/classes/asyncIterable.js +0 -209
  62. package/dist/cjs/classes/asyncIterable.js.map +0 -1
  63. package/dist/cjs/classes/deferred.d.ts +0 -146
  64. package/dist/cjs/classes/deferred.js +0 -291
  65. package/dist/cjs/classes/deferred.js.map +0 -1
  66. package/dist/cjs/classes/descriptor.d.ts +0 -334
  67. package/dist/cjs/classes/descriptor.js +0 -537
  68. package/dist/cjs/classes/descriptor.js.map +0 -1
  69. package/dist/cjs/classes/enum.d.ts +0 -50
  70. package/dist/cjs/classes/enum.js +0 -405
  71. package/dist/cjs/classes/enum.js.map +0 -1
  72. package/dist/cjs/classes/index.d.ts +0 -15
  73. package/dist/cjs/classes/index.js +0 -63
  74. package/dist/cjs/classes/index.js.map +0 -1
  75. package/dist/cjs/classes/introspector.d.ts +0 -20
  76. package/dist/cjs/classes/introspector.js +0 -130
  77. package/dist/cjs/classes/introspector.js.map +0 -1
  78. package/dist/cjs/classes/iterable.d.ts +0 -169
  79. package/dist/cjs/classes/iterable.js +0 -268
  80. package/dist/cjs/classes/iterable.js.map +0 -1
  81. package/dist/cjs/classes/param.parser.d.ts +0 -221
  82. package/dist/cjs/classes/param.parser.js +0 -242
  83. package/dist/cjs/classes/param.parser.js.map +0 -1
  84. package/dist/cjs/classes/pluggable.proxy.d.ts +0 -153
  85. package/dist/cjs/classes/pluggable.proxy.js +0 -444
  86. package/dist/cjs/classes/pluggable.proxy.js.map +0 -1
  87. package/dist/cjs/classes/property.d.ts +0 -79
  88. package/dist/cjs/classes/property.js +0 -284
  89. package/dist/cjs/classes/property.js.map +0 -1
  90. package/dist/cjs/classes/refmap.d.ts +0 -238
  91. package/dist/cjs/classes/refmap.js +0 -421
  92. package/dist/cjs/classes/refmap.js.map +0 -1
  93. package/dist/cjs/classes/refset.d.ts +0 -186
  94. package/dist/cjs/classes/refset.js +0 -370
  95. package/dist/cjs/classes/refset.js.map +0 -1
  96. package/dist/cjs/classes/symkeys.d.ts +0 -349
  97. package/dist/cjs/classes/symkeys.js +0 -510
  98. package/dist/cjs/classes/symkeys.js.map +0 -1
  99. package/dist/cjs/classes/type.d.ts +0 -56
  100. package/dist/cjs/classes/type.js +0 -405
  101. package/dist/cjs/classes/type.js.map +0 -1
  102. package/dist/cjs/function.extensions.d.ts +0 -12
  103. package/dist/cjs/function.extensions.js +0 -758
  104. package/dist/cjs/function.extensions.js.map +0 -1
  105. package/dist/cjs/global.this.d.ts +0 -2
  106. package/dist/cjs/global.this.js +0 -300
  107. package/dist/cjs/global.this.js.map +0 -1
  108. package/dist/cjs/index.d.ts +0 -31
  109. package/dist/cjs/index.js +0 -226
  110. package/dist/cjs/index.js.map +0 -1
  111. package/dist/cjs/json.extensions.d.ts +0 -2
  112. package/dist/cjs/json.extensions.js +0 -109
  113. package/dist/cjs/json.extensions.js.map +0 -1
  114. package/dist/cjs/map.extensions.d.ts +0 -3
  115. package/dist/cjs/map.extensions.js +0 -143
  116. package/dist/cjs/map.extensions.js.map +0 -1
  117. package/dist/cjs/number.extension.d.ts +0 -44
  118. package/dist/cjs/number.extension.js +0 -261
  119. package/dist/cjs/number.extension.js.map +0 -1
  120. package/dist/cjs/object.extensions.d.ts +0 -33
  121. package/dist/cjs/object.extensions.js +0 -1091
  122. package/dist/cjs/object.extensions.js.map +0 -1
  123. package/dist/cjs/package.json +0 -3
  124. package/dist/cjs/proxy.extensions.d.ts +0 -2
  125. package/dist/cjs/proxy.extensions.js +0 -207
  126. package/dist/cjs/proxy.extensions.js.map +0 -1
  127. package/dist/cjs/reflect.extensions.d.ts +0 -14
  128. package/dist/cjs/reflect.extensions.js +0 -316
  129. package/dist/cjs/reflect.extensions.js.map +0 -1
  130. package/dist/cjs/regular.expression.extensions.d.ts +0 -2
  131. package/dist/cjs/regular.expression.extensions.js +0 -423
  132. package/dist/cjs/regular.expression.extensions.js.map +0 -1
  133. package/dist/cjs/set.extensions.d.ts +0 -40
  134. package/dist/cjs/set.extensions.js +0 -355
  135. package/dist/cjs/set.extensions.js.map +0 -1
  136. package/dist/cjs/string.extensions.d.ts +0 -23
  137. package/dist/cjs/string.extensions.js +0 -704
  138. package/dist/cjs/string.extensions.js.map +0 -1
  139. package/dist/cjs/symbol.extensions.d.ts +0 -11
  140. package/dist/cjs/symbol.extensions.js +0 -735
  141. package/dist/cjs/symbol.extensions.js.map +0 -1
  142. package/dist/cjs/utils/copy.object.d.ts +0 -408
  143. package/dist/cjs/utils/copy.object.js +0 -720
  144. package/dist/cjs/utils/copy.object.js.map +0 -1
  145. package/dist/cjs/utils/descriptor.utils.d.ts +0 -298
  146. package/dist/cjs/utils/descriptor.utils.js +0 -889
  147. package/dist/cjs/utils/descriptor.utils.js.map +0 -1
  148. package/dist/cjs/utils/index.d.ts +0 -75
  149. package/dist/cjs/utils/index.js +0 -61
  150. package/dist/cjs/utils/index.js.map +0 -1
  151. package/dist/cjs/utils/stdout.d.ts +0 -742
  152. package/dist/cjs/utils/stdout.js +0 -1042
  153. package/dist/cjs/utils/stdout.js.map +0 -1
  154. package/dist/cjs/utils/toolkit.d.ts +0 -1898
  155. package/dist/cjs/utils/toolkit.js +0 -1378
  156. package/dist/cjs/utils/toolkit.js.map +0 -1
  157. package/dist/cjs/weakref.extensions.d.ts +0 -2
  158. package/dist/cjs/weakref.extensions.js +0 -19
  159. package/dist/cjs/weakref.extensions.js.map +0 -1
  160. package/dist/mjs/array.extensions.d.ts +0 -39
  161. package/dist/mjs/array.extensions.js +0 -474
  162. package/dist/mjs/array.extensions.js.map +0 -1
  163. package/dist/mjs/big.int.extension.d.ts +0 -31
  164. package/dist/mjs/big.int.extension.js +0 -162
  165. package/dist/mjs/big.int.extension.js.map +0 -1
  166. package/dist/mjs/classes/asyncIterable.d.ts +0 -126
  167. package/dist/mjs/classes/asyncIterable.js +0 -204
  168. package/dist/mjs/classes/asyncIterable.js.map +0 -1
  169. package/dist/mjs/classes/deferred.d.ts +0 -146
  170. package/dist/mjs/classes/deferred.js +0 -287
  171. package/dist/mjs/classes/deferred.js.map +0 -1
  172. package/dist/mjs/classes/descriptor.d.ts +0 -334
  173. package/dist/mjs/classes/descriptor.js +0 -533
  174. package/dist/mjs/classes/descriptor.js.map +0 -1
  175. package/dist/mjs/classes/enum.d.ts +0 -50
  176. package/dist/mjs/classes/enum.js +0 -400
  177. package/dist/mjs/classes/enum.js.map +0 -1
  178. package/dist/mjs/classes/index.d.ts +0 -15
  179. package/dist/mjs/classes/index.js +0 -46
  180. package/dist/mjs/classes/index.js.map +0 -1
  181. package/dist/mjs/classes/introspector.d.ts +0 -20
  182. package/dist/mjs/classes/introspector.js +0 -126
  183. package/dist/mjs/classes/introspector.js.map +0 -1
  184. package/dist/mjs/classes/iterable.d.ts +0 -169
  185. package/dist/mjs/classes/iterable.js +0 -263
  186. package/dist/mjs/classes/iterable.js.map +0 -1
  187. package/dist/mjs/classes/param.parser.d.ts +0 -221
  188. package/dist/mjs/classes/param.parser.js +0 -238
  189. package/dist/mjs/classes/param.parser.js.map +0 -1
  190. package/dist/mjs/classes/pluggable.proxy.d.ts +0 -153
  191. package/dist/mjs/classes/pluggable.proxy.js +0 -438
  192. package/dist/mjs/classes/pluggable.proxy.js.map +0 -1
  193. package/dist/mjs/classes/property.d.ts +0 -79
  194. package/dist/mjs/classes/property.js +0 -280
  195. package/dist/mjs/classes/property.js.map +0 -1
  196. package/dist/mjs/classes/refmap.d.ts +0 -238
  197. package/dist/mjs/classes/refmap.js +0 -417
  198. package/dist/mjs/classes/refmap.js.map +0 -1
  199. package/dist/mjs/classes/refset.d.ts +0 -186
  200. package/dist/mjs/classes/refset.js +0 -366
  201. package/dist/mjs/classes/refset.js.map +0 -1
  202. package/dist/mjs/classes/symkeys.d.ts +0 -349
  203. package/dist/mjs/classes/symkeys.js +0 -506
  204. package/dist/mjs/classes/symkeys.js.map +0 -1
  205. package/dist/mjs/classes/type.d.ts +0 -56
  206. package/dist/mjs/classes/type.js +0 -401
  207. package/dist/mjs/classes/type.js.map +0 -1
  208. package/dist/mjs/function.extensions.d.ts +0 -12
  209. package/dist/mjs/function.extensions.js +0 -755
  210. package/dist/mjs/function.extensions.js.map +0 -1
  211. package/dist/mjs/global.this.d.ts +0 -2
  212. package/dist/mjs/global.this.js +0 -264
  213. package/dist/mjs/global.this.js.map +0 -1
  214. package/dist/mjs/index.d.ts +0 -31
  215. package/dist/mjs/index.js +0 -204
  216. package/dist/mjs/index.js.map +0 -1
  217. package/dist/mjs/json.extensions.d.ts +0 -2
  218. package/dist/mjs/json.extensions.js +0 -106
  219. package/dist/mjs/json.extensions.js.map +0 -1
  220. package/dist/mjs/map.extensions.d.ts +0 -3
  221. package/dist/mjs/map.extensions.js +0 -140
  222. package/dist/mjs/map.extensions.js.map +0 -1
  223. package/dist/mjs/number.extension.d.ts +0 -44
  224. package/dist/mjs/number.extension.js +0 -258
  225. package/dist/mjs/number.extension.js.map +0 -1
  226. package/dist/mjs/object.extensions.d.ts +0 -33
  227. package/dist/mjs/object.extensions.js +0 -1088
  228. package/dist/mjs/object.extensions.js.map +0 -1
  229. package/dist/mjs/package.json +0 -3
  230. package/dist/mjs/proxy.extensions.d.ts +0 -2
  231. package/dist/mjs/proxy.extensions.js +0 -204
  232. package/dist/mjs/proxy.extensions.js.map +0 -1
  233. package/dist/mjs/reflect.extensions.d.ts +0 -14
  234. package/dist/mjs/reflect.extensions.js +0 -313
  235. package/dist/mjs/reflect.extensions.js.map +0 -1
  236. package/dist/mjs/regular.expression.extensions.d.ts +0 -2
  237. package/dist/mjs/regular.expression.extensions.js +0 -420
  238. package/dist/mjs/regular.expression.extensions.js.map +0 -1
  239. package/dist/mjs/set.extensions.d.ts +0 -40
  240. package/dist/mjs/set.extensions.js +0 -352
  241. package/dist/mjs/set.extensions.js.map +0 -1
  242. package/dist/mjs/string.extensions.d.ts +0 -23
  243. package/dist/mjs/string.extensions.js +0 -701
  244. package/dist/mjs/string.extensions.js.map +0 -1
  245. package/dist/mjs/symbol.extensions.d.ts +0 -11
  246. package/dist/mjs/symbol.extensions.js +0 -732
  247. package/dist/mjs/symbol.extensions.js.map +0 -1
  248. package/dist/mjs/utils/copy.object.d.ts +0 -408
  249. package/dist/mjs/utils/copy.object.js +0 -702
  250. package/dist/mjs/utils/copy.object.js.map +0 -1
  251. package/dist/mjs/utils/descriptor.utils.d.ts +0 -298
  252. package/dist/mjs/utils/descriptor.utils.js +0 -875
  253. package/dist/mjs/utils/descriptor.utils.js.map +0 -1
  254. package/dist/mjs/utils/index.d.ts +0 -75
  255. package/dist/mjs/utils/index.js +0 -45
  256. package/dist/mjs/utils/index.js.map +0 -1
  257. package/dist/mjs/utils/stdout.d.ts +0 -742
  258. package/dist/mjs/utils/stdout.js +0 -1037
  259. package/dist/mjs/utils/stdout.js.map +0 -1
  260. package/dist/mjs/utils/toolkit.d.ts +0 -1898
  261. package/dist/mjs/utils/toolkit.js +0 -1373
  262. package/dist/mjs/utils/toolkit.js.map +0 -1
  263. package/dist/mjs/weakref.extensions.d.ts +0 -2
  264. package/dist/mjs/weakref.extensions.js +0 -16
  265. package/dist/mjs/weakref.extensions.js.map +0 -1
  266. package/jsdoc-config.json +0 -31
  267. package/tsconfig.base.json +0 -28
  268. package/tsconfig.cjs.json +0 -8
  269. package/tsconfig.esm.json +0 -8
  270. package/vitest.config.js +0 -7
package/package.json CHANGED
@@ -1,36 +1,30 @@
1
1
  {
2
2
  "author": "Brielle Harrison <nyteshade at gmail.com>",
3
- "browser": "dist/@nejs/basic-extensions.bundle.2.21.0.js",
3
+ "browser": "dist/@nejs/basic-extensions.bundle.2.22.6.js",
4
4
  "description": "Basic but commonly used extensions",
5
5
  "dependencies": {
6
- "@nejs/extension": "^2.20.0",
7
- "zod": "^3.23.8"
6
+ "@nejs/extension": "^2.20.0"
8
7
  },
9
8
  "devDependencies": {
10
- "docdash": "^2.0.2",
11
- "documentation": "^14.0.3",
12
9
  "esbuild": "^0.25.3",
13
- "esdoc": "^0.0.2",
14
- "esdoc-standard-plugin": "^1.0.0",
15
- "rimraf": "^6.0.1",
16
- "typescript": "^5.5.4",
17
10
  "vitest": "^3.1.2"
18
11
  },
19
12
  "engines": {
20
- "node": ">=20"
13
+ "node": ">=22"
21
14
  },
22
15
  "exports": {
23
16
  ".": {
24
- "import": "./dist/mjs/index.js",
25
- "require": "./dist/cjs/index.js"
17
+ "browser": "./dist/esm/basic-extensions.mjs",
18
+ "import": "./src/index.js",
19
+ "require": "./dist/cjs/index.cjs"
26
20
  },
27
21
  "./classes": {
28
- "import": "./dist/mjs/classes/index.js",
29
- "require": "./dist/cjs/classes/index.js"
22
+ "import": "./src/classes/index.js",
23
+ "require": "./dist/cjs/classes/index.cjs"
30
24
  },
31
25
  "./utils": {
32
- "import": "./dist/mjs/utils/index.js",
33
- "require": "./dist/cjs/utils/index.js"
26
+ "import": "./src/utils/index.js",
27
+ "require": "./dist/cjs/utils/index.cjs"
34
28
  }
35
29
  },
36
30
  "keywords": [
@@ -39,18 +33,18 @@
39
33
  "localStorage"
40
34
  ],
41
35
  "license": "MIT",
42
- "main": "dist/cjs/index.js",
43
- "module": "dist/mjs/index.js",
36
+ "main": "dist/cjs/index.cjs",
37
+ "module": "src/index.js",
44
38
  "name": "@nejs/basic-extensions",
45
39
  "scripts": {
40
+ "build": "bin/clean && bin/version patch bump && bin/esbuild",
41
+ "distribute": "bin/clean && bin/version minor bump && bin/esbuild && npm publish",
46
42
  "browser": "bin/esbuild",
47
- "build": "bin/clean && bin/version patch bump && bin/esbuild && bin/build",
48
43
  "clean": "bin/clean",
49
- "distribute": "bin/clean && bin/version minor bump && bin/esbuild && bin/build",
50
- "module": "bin/build",
44
+ "prepack": "bin/clean && bin/esbuild",
51
45
  "repl": "npm run build && node --no-warnings repl.bootstrap.js",
52
46
  "test": "vitest"
53
47
  },
54
48
  "type": "module",
55
- "version": "2.21.0"
49
+ "version": "2.22.6"
56
50
  }
package/repl.bootstrap.js CHANGED
@@ -1,18 +1,15 @@
1
1
  #!/usr/bin/env node --no-warnings --no-deprecations --enable-source-maps
2
2
 
3
3
  // Import everything for playtesting.
4
- (await import('./dist/mjs/index.js')).Controls.enableAll();
4
+ (await import('./src/index.js')).Controls.enableAll();
5
5
  (await import('./bin/repl.signature.js'))
6
6
 
7
- // Grab typescript
8
- const ts = await import('typescript')
9
-
10
7
  const {
11
8
  accessor, data, describe, describeMany, extract, isDescriptor,
12
9
  isAccessor, isData, redescribe,
13
- } = await import('./dist/mjs/utils/index.js')
10
+ } = await import('./src/utils/index.js')
14
11
 
15
- const { inspect } = await import('util');
12
+ const { inspect } = await import('node:util');
16
13
  const nejsExtension = await import('@nejs/extension');
17
14
 
18
15
  const repl = await import('node:repl');
@@ -53,7 +50,7 @@ replServer = createRepl({
53
50
  Extension: nejsExtension.Extension,
54
51
 
55
52
  accessor, data, describe, describeMany, extract, inspect,
56
- isAccessor, isData, isDescriptor, redescribe, ts,
53
+ isAccessor, isData, isDescriptor, redescribe,
57
54
  },
58
55
  onReady() {
59
56
  console.log(help())
package/repl.history CHANGED
@@ -1,30 +1,30 @@
1
- /exit
2
- Object.setPrototypeOf(m, pop)
3
- pop[Symbol.toStringTag] = 'Map'
4
- pop[Symbol.toStringTag] = 'Map
5
- Object.setPrototypeOf(m, p)
6
- m2 = new Map()
7
- m.name
8
- Object.setPrototypeOf(m, pop)
9
- pop = new Proxy(p, { get(t,p,r) { if (t.has.call(m, p)) { return t.get.call(m, p) } return Reflect.get(t,p,r) }, has(t,p) { if (t.has.call(m, p)) { return true } return Reflect.has(t,p) } })
10
- p.has.call(m, 'name')
11
- p.has('name')
12
- Object.setPrototypeOf(m, pop)
13
- pop = new Proxy(p, { get(t,p,r) { if (m.has(p)) { return m.get(p) } return Reflect.get(t,p,r) }, has(t,p) { if (m.has(p)) { return true } return Reflect.has(t,p) } })
14
- Object.setPrototypeOf(m, pop)
15
- pop = new Proxy(p, { get(t,p,r) { if (t.has(p)) { return t.get(p) } return Reflect.get(t,p,r) }, has(t,p) { if (t.has(p)) { return true } return Reflect.has(t,p) } })
16
- np = Object.create(p)
17
- p = Object.getPrototypeOf(m)
18
- m.get('name')
19
- m = new Map([['name', 'Brielle']])
20
- ObjectPatches.patchesOwner
21
- ObjectPatches.patchsOwner
22
- ObjectPatches.patchCount
23
- [...ObjectPatches.patchEntries]
24
- ObjectPatches = Patches.get(Object)
25
- Patches.get(Object)
26
- [...Patches.keys()]
27
- Object.keys(Patches)
28
- Patches.keys()
29
- var { Extensions, Patches } = (await import ('./dist/cjs/index.js'))
30
- (await import ('./dist/cjs/index.js')).Patchest import ('./dist/cjs/index.js')).Extensionsex.js').Extensions.js').Patchesx.js').patchesndex.js')mport ('.')og','This is being logged'], ['error', 'But something terrible happened'])p('Fun', ['log','This is being logged'], ['error', 'But something terrible happened']).print()ics','underline']).print()int() { console.log(this) }brave new world', ['italics','underline']))['italics','underline'])
1
+ .exit
2
+ .help
3
+ clear
4
+ is
5
+ .exit
6
+ is.objectKey(/asdfads/)
7
+ is.objectKey(Symbol())
8
+ is.objectKey('asdfads')
9
+ is.objectKey(234)
10
+ is.objectEntry([Symbol(), 234])
11
+ is.objectEntry(['name', 234])
12
+ is.objectEntry(['name', 'Brie'])
13
+ is
14
+ var { is, si, has, as } = await import('./dist/mjs/index.js')
15
+ is.objectEntry(['name', 'Brie'])
16
+ Colors.red
17
+ class Colors extends Enumeration { static { Colors.define('red') } }
18
+ Enumeration
19
+ toolkit.is.a(undefined, undefined)
20
+ toolkit.is.a(undefined, 'undefined')
21
+ toolkit = await import('./src/utils/toolkit.js')
22
+ await import('./src/utils/toolkit.js')
23
+ .exit
24
+ await import('./src/toolkit.js')
25
+ is
26
+ (20n).within(10n, 20n, false)
27
+ (20n).within(10n, 20n, true)
28
+ (30n).within(10n, 20n, true)
29
+ (33n).within(10n, 20n, true)
30
+ (-33n).within(10n, 20n, true)).within(10n, 20n)).clamp(10n, 30n)t.max(10n, BigInt.min(30n, -33n))3n.clamp(10n, 30n)tExtensions.apply(); BigIntPrototypeExtensions.apply() BigIntPrototypeExtensions } = await import('./dist/mjs/big.int.extension.js') BigIntPrototypeExtensions.apply()sions, BigIntPrototypeExtensions } = await import('./dist/mjs/big.int.extension.js') -33n))gIntPrototypeExtensions } = await import('./dist/mjs/big.int.extension.js')h.extension.js')p) } })get(p) } return Reflect.get(t,p,r) }, has(t,p) { if (t.has(p)) { return true } return Reflect.has(t,p) } })ypeOf(m)ame')ame', 'Brielle']])wner')mport ('.')og','This is being logged'], ['error', 'But something terrible happened'])p('Fun', ['log','This is being logged'], ['error', 'But something terrible happened']).print()ics','underline']).print()int() { console.log(this) }brave new world', ['italics','underline']))['italics','underline'])
@@ -15,52 +15,126 @@ import { Patch } from '@nejs/extension'
15
15
  * // Now the `BigInt` class has additional methods available
16
16
  */
17
17
  export const BigIntExtensions = new Patch(BigInt, {
18
- /**
19
- * Determines if the supplied `value` is a `BigInt`. This check is
20
- * performed by first checking the `typeof` the `value` and then
21
- * checking to see if the `value` is an `instanceof` `BigInt`
22
- *
23
- * @param {*} value The value that needs to be checked to determine
24
- * if it is a `BigInt` or not
25
- * @returns {boolean} `true` if the supplied `value` is a `BigInt`,
26
- * `false` otherwise
27
- *
28
- * @example
29
- * const bigInt = 1234567890123456789012345678901234567890n
30
- * isBigInt(bigInt) // true
31
- * isBigInt(1234567890123456789012345678901234567890) // false
32
- * isBigInt('1234567890123456789012345678901234567890') // false
33
- * isBigInt(BigInt('1234567890123456789012345678901234567890')) // true
34
- */
35
- isBigInt(value) {
36
- return typeof value === 'bigint' || value instanceof BigInt
37
- },
18
+ [Patch.kMutablyHidden]: {
19
+ /**
20
+ * Checks if all or some of the supplied values are numbers.
21
+ *
22
+ * This method uses the `Array.prototype.every` or `Array.prototype.some`
23
+ * method to check if all or some of the supplied values are numbers,
24
+ * respectively. The method to use is determined by the `which` parameter.
25
+ *
26
+ * @param {string} [which='every'] - Determines the method to use for the
27
+ * check. Can be either 'every' or 'some'. Defaults to 'every'.
28
+ * @param {...*} values - The values to check.
29
+ * @returns {boolean} - Returns `true` if all or some of the values are
30
+ * numbers (based on the `which` parameter), `false` otherwise.
31
+ *
32
+ * @example
33
+ * areNumbers('every', 1, 2, 3) // true
34
+ * areNumbers('some', 1, '2', 3) // true
35
+ * areNumbers('every', 1, '2', 3) // false
36
+ */
37
+ areBigInts(which = ['every', 'some'][0], ...values) {
38
+ if (which !== 'every' && which !== 'some') {
39
+ return false
40
+ }
38
41
 
39
- /**
40
- * Conditionally returns a value based on whether the supplied
41
- * `value` is a `BigInt` or not. If the `value` is a `BigInt`,
42
- * the `thenValue` will be returned. If it is not a `BigInt`,
43
- * the `elseValue` will be returned instead.
44
- *
45
- * @param {any} value The value to check to determine if it is a
46
- * `BigInt`
47
- * @param {any} thenValue The value to return if the supplied
48
- * `value` is a `BigInt`
49
- * @param {any} elseValue The value to return if the supplied
50
- * `value` is not a `BigInt`
51
- * @returns {any} Either the `thenValue` or `elseValue` depending
52
- * on if the supplied `value` is a `BigInt`
53
- *
54
- * @example
55
- * const bigInt = 1234567890123456789012345678901234567890n
56
- * const num = 42
57
- * ifBigInt(bigInt, 'is a BigInt', 'not a BigInt')
58
- * // 'is a BigInt'
59
- * ifBigInt(num, 'is a BigInt', 'not a BigInt')
60
- * // 'not a BigInt'
61
- */
62
- ifBigInt(value, thenValue, elseValue) {
63
- return isThenElse(this.isBigInt(value), thenValue, elseValue)
42
+ return values[which](num => this.isBigInt(num))
43
+ },
44
+
45
+ /**
46
+ * Determines if the supplied `value` is a `BigInt`. This check is
47
+ * performed by first checking the `typeof` the `value` and then
48
+ * checking to see if the `value` is an `instanceof` `BigInt`
49
+ *
50
+ * @param {*} value The value that needs to be checked to determine
51
+ * if it is a `BigInt` or not
52
+ * @returns {boolean} `true` if the supplied `value` is a `BigInt`,
53
+ * `false` otherwise
54
+ *
55
+ * @example
56
+ * const bigInt = 1234567890123456789012345678901234567890n
57
+ * isBigInt(bigInt) // true
58
+ * isBigInt(1234567890123456789012345678901234567890) // false
59
+ * isBigInt('1234567890123456789012345678901234567890') // false
60
+ * isBigInt(BigInt('1234567890123456789012345678901234567890')) // true
61
+ */
62
+ isBigInt(value) {
63
+ return typeof value === 'bigint' || value instanceof BigInt
64
+ },
65
+
66
+ /**
67
+ * Conditionally returns a value based on whether the supplied
68
+ * `value` is a `BigInt` or not. If the `value` is a `BigInt`,
69
+ * the `thenValue` will be returned. If it is not a `BigInt`,
70
+ * the `elseValue` will be returned instead.
71
+ *
72
+ * @param {any} value The value to check to determine if it is a
73
+ * `BigInt`
74
+ * @param {any} thenValue The value to return if the supplied
75
+ * `value` is a `BigInt`
76
+ * @param {any} elseValue The value to return if the supplied
77
+ * `value` is not a `BigInt`
78
+ * @returns {any} Either the `thenValue` or `elseValue` depending
79
+ * on if the supplied `value` is a `BigInt`
80
+ *
81
+ * @example
82
+ * const bigInt = 1234567890123456789012345678901234567890n
83
+ * const num = 42
84
+ * ifBigInt(bigInt, 'is a BigInt', 'not a BigInt')
85
+ * // 'is a BigInt'
86
+ * ifBigInt(num, 'is a BigInt', 'not a BigInt')
87
+ * // 'not a BigInt'
88
+ */
89
+ ifBigInt(value, thenValue, elseValue) {
90
+ return isThenElse(this.isBigInt(value), thenValue, elseValue)
91
+ },
92
+
93
+ /**
94
+ * The Math.min() static method returns the smallest of the numbers given
95
+ * as input parameters, or Infinity if there are no parameters.
96
+ *
97
+ * @param {bigint|number} values value1, …, valueN – Zero or more numbers
98
+ * among which the lowest value will be selected and returned.
99
+ * @returns {bigint|number|Infinity} The smallest of the given numbers.
100
+ * Returns Infinity if no parameters are provided.
101
+ */
102
+ min(...values) {
103
+ const sorter = (l,r) => l < r ? -1 : l > r ? 1 : 0
104
+
105
+ if (!values.length)
106
+ return Infinity
107
+
108
+ if (values.every(n => typeof n === 'bigint')) {
109
+ return values.toSorted(sorter).at(0)
110
+ }
111
+ else {
112
+ throw new TypeError('All supplied values must be of type bigint')
113
+ }
114
+ },
115
+
116
+ /**
117
+ * The Math.max() static method returns the largest of the numbers given
118
+ * as input parameters, or Infinity if there are no parameters.
119
+ *
120
+ * @param {bigint|number} values value1, …, valueN – Zero or more numbers
121
+ * among which the largest value will be selected and returned.
122
+ * @returns {bigint|number|Infinity} The largest of the given numbers.
123
+ * Returns Infinity if no parameters are provided.
124
+ */
125
+ max(...values) {
126
+ const sorter = (l,r) => l < r ? -1 : l > r ? 1 : 0
127
+
128
+ if (!values.length)
129
+ return Infinity
130
+
131
+ if (values.every(n => typeof n === 'bigint')) {
132
+ return values.toSorted(sorter).at(-1)
133
+ }
134
+ else {
135
+ throw new TypeError('All supplied values must be of type bigint')
136
+ }
137
+ },
64
138
  },
65
139
  })
66
140
 
@@ -81,6 +155,36 @@ const { isBigInt: pIsBigInt, ifBigInt: pIfBigInt } = BigIntExtensions.patches
81
155
  * // Now the `BigInt` prototype has additional methods available
82
156
  */
83
157
  export const BigIntPrototypeExtensions = new Patch(BigInt.prototype, {
158
+ /**
159
+ * Clamps a value between a minimum and maximum value.
160
+ *
161
+ * This method checks if the provided value and the min and max bounds are
162
+ * numbers. If they are not, it returns the original value. If they are,
163
+ * it ensures that the value does not go below the minimum value or above
164
+ * the maximum value.
165
+ *
166
+ * @param {bigint} [minValue=BigInt(-Number.MAX_VALUE)] - The minimum value.
167
+ * Defaults to BigInt(-Number.MAX_VALUE).
168
+ * @param {bigint} [maxValue=BigInt(Number.MAX_VALUE)] - The maximum value.
169
+ * Defaults to BigInt(Number.MAX_VALUE).
170
+ * @returns {bigint} - Returns the clamped value if all parameters are
171
+ * big integers.
172
+ *
173
+ * @example
174
+ * (10n).clamp(1n, 5n) // returns 5n
175
+ * (-10n).clamp(1n, 5n) // returns 1n
176
+ * (3n).clamp(1n, 5n) // returns 3n
177
+ */
178
+ clamp(
179
+ minValue = BigInt(-Number.MAX_VALUE),
180
+ maxValue = BigInt(Number.MAX_VALUE)
181
+ ) {
182
+ if (typeof minValue !== 'bigint' || typeof maxValue !== 'bigint')
183
+ throw new TypeError('All values must be big integers')
184
+
185
+ return BigInt.max(minValue, BigInt.min(maxValue, this))
186
+ },
187
+
84
188
  /**
85
189
  * A getter method that returns an object representation of the BigInt
86
190
  * instance.
@@ -149,6 +253,28 @@ export const BigIntPrototypeExtensions = new Patch(BigInt.prototype, {
149
253
  ifBigInt(thenValue, elseValue) {
150
254
  return pIfBigInt(this, thenValue, elseValue)
151
255
  },
256
+
257
+ /**
258
+ * Provides a way when dealing with numbers to determine if
259
+ * a given number is within a range of values. By default, if
260
+ * no parameters are supplied, it always returns true since
261
+ * the default range is -Infinity to +Infinity. Additionally,
262
+ * by default, the number will always be less than the supplied
263
+ * max unless inclusive is set to true.
264
+ *
265
+ * @param min the lower range value, defaults to -Infinity
266
+ * @param max the upper range value, defaults to +Infinity
267
+ * @param inclusive defaults to false, set to true if you
268
+ * want the max value to less than and equals to
269
+ * @returns {boolean} true if within the range, false otherwise
270
+ */
271
+ within(
272
+ min = BigInt(-Infinity),
273
+ max = BigInt(Infinity),
274
+ inclusive = false
275
+ ) {
276
+ return this >= min && (inclusive ? this <= max : this < max)
277
+ }
152
278
  })
153
279
 
154
280
  // NOTE to self; this is repeated here otherwise a circular reference from