@nejs/basic-extensions 2.21.5 → 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 (266) hide show
  1. package/README.md +78 -4
  2. package/dist/@nejs/basic-extensions.bundle.2.22.6.js +25 -0
  3. package/dist/@nejs/basic-extensions.bundle.2.22.6.js.map +7 -0
  4. package/dist/cjs/classes/index.cjs +11129 -0
  5. package/dist/cjs/classes/index.cjs.map +7 -0
  6. package/dist/cjs/index.cjs +15191 -0
  7. package/dist/cjs/index.cjs.map +7 -0
  8. package/dist/cjs/utils/index.cjs +3954 -0
  9. package/dist/cjs/utils/index.cjs.map +7 -0
  10. package/dist/esm/basic-extensions.mjs +25 -0
  11. package/dist/esm/basic-extensions.mjs.map +7 -0
  12. package/package.json +16 -22
  13. package/repl.bootstrap.js +4 -7
  14. package/repl.history +26 -26
  15. package/src/classes/enumeration.js +466 -0
  16. package/src/classes/index.js +5 -1
  17. package/src/index.js +3 -1
  18. package/src/regular.expression.extensions.js +0 -35
  19. package/src/utils/toolkit.js +699 -516
  20. package/tests/arrayextensions.test.js +3 -3
  21. package/tests/index.test.js +3 -1
  22. package/tests/newClasses/asyncIterable.test.js +3 -3
  23. package/tests/newClasses/deferred.test.js +3 -3
  24. package/tests/newClasses/descriptor.test.js +3 -3
  25. package/tests/newClasses/iterable.test.js +3 -3
  26. package/tests/newClasses/refmap.test.js +3 -3
  27. package/tests/newClasses/refset.test.js +3 -3
  28. package/tests/objectextensions.test.js +3 -3
  29. package/tests/setextensions.test.js +3 -3
  30. package/tests/stringextensions.test.js +3 -2
  31. package/tests/utils/descriptor.utils.test.js +1 -1
  32. package/tests/utils/toolkit.test.js +429 -163
  33. package/.esdoc.json +0 -9
  34. package/.vscode/settings.json +0 -5
  35. package/bin/build +0 -27
  36. package/bin/clean +0 -14
  37. package/bin/esbuild +0 -91
  38. package/bin/fixup +0 -13
  39. package/bin/repl.basics.js +0 -584
  40. package/bin/repl.signature.js +0 -63
  41. package/bin/version +0 -100
  42. package/dist/@nejs/basic-extensions.bundle.2.21.5.js +0 -25
  43. package/dist/@nejs/basic-extensions.bundle.2.21.5.js.map +0 -7
  44. package/dist/cjs/array.extensions.d.ts +0 -39
  45. package/dist/cjs/array.extensions.js +0 -477
  46. package/dist/cjs/array.extensions.js.map +0 -1
  47. package/dist/cjs/big.int.extension.d.ts +0 -31
  48. package/dist/cjs/big.int.extension.js +0 -273
  49. package/dist/cjs/big.int.extension.js.map +0 -1
  50. package/dist/cjs/classes/asyncIterable.d.ts +0 -126
  51. package/dist/cjs/classes/asyncIterable.js +0 -209
  52. package/dist/cjs/classes/asyncIterable.js.map +0 -1
  53. package/dist/cjs/classes/deferred.d.ts +0 -146
  54. package/dist/cjs/classes/deferred.js +0 -291
  55. package/dist/cjs/classes/deferred.js.map +0 -1
  56. package/dist/cjs/classes/descriptor.d.ts +0 -334
  57. package/dist/cjs/classes/descriptor.js +0 -537
  58. package/dist/cjs/classes/descriptor.js.map +0 -1
  59. package/dist/cjs/classes/enum.d.ts +0 -50
  60. package/dist/cjs/classes/enum.js +0 -405
  61. package/dist/cjs/classes/enum.js.map +0 -1
  62. package/dist/cjs/classes/index.d.ts +0 -15
  63. package/dist/cjs/classes/index.js +0 -63
  64. package/dist/cjs/classes/index.js.map +0 -1
  65. package/dist/cjs/classes/introspector.d.ts +0 -20
  66. package/dist/cjs/classes/introspector.js +0 -130
  67. package/dist/cjs/classes/introspector.js.map +0 -1
  68. package/dist/cjs/classes/iterable.d.ts +0 -169
  69. package/dist/cjs/classes/iterable.js +0 -268
  70. package/dist/cjs/classes/iterable.js.map +0 -1
  71. package/dist/cjs/classes/param.parser.d.ts +0 -221
  72. package/dist/cjs/classes/param.parser.js +0 -242
  73. package/dist/cjs/classes/param.parser.js.map +0 -1
  74. package/dist/cjs/classes/pluggable.proxy.d.ts +0 -153
  75. package/dist/cjs/classes/pluggable.proxy.js +0 -444
  76. package/dist/cjs/classes/pluggable.proxy.js.map +0 -1
  77. package/dist/cjs/classes/property.d.ts +0 -79
  78. package/dist/cjs/classes/property.js +0 -284
  79. package/dist/cjs/classes/property.js.map +0 -1
  80. package/dist/cjs/classes/refmap.d.ts +0 -238
  81. package/dist/cjs/classes/refmap.js +0 -421
  82. package/dist/cjs/classes/refmap.js.map +0 -1
  83. package/dist/cjs/classes/refset.d.ts +0 -186
  84. package/dist/cjs/classes/refset.js +0 -370
  85. package/dist/cjs/classes/refset.js.map +0 -1
  86. package/dist/cjs/classes/symkeys.d.ts +0 -349
  87. package/dist/cjs/classes/symkeys.js +0 -510
  88. package/dist/cjs/classes/symkeys.js.map +0 -1
  89. package/dist/cjs/classes/type.d.ts +0 -56
  90. package/dist/cjs/classes/type.js +0 -405
  91. package/dist/cjs/classes/type.js.map +0 -1
  92. package/dist/cjs/function.extensions.d.ts +0 -12
  93. package/dist/cjs/function.extensions.js +0 -758
  94. package/dist/cjs/function.extensions.js.map +0 -1
  95. package/dist/cjs/global.this.d.ts +0 -2
  96. package/dist/cjs/global.this.js +0 -300
  97. package/dist/cjs/global.this.js.map +0 -1
  98. package/dist/cjs/index.d.ts +0 -31
  99. package/dist/cjs/index.js +0 -228
  100. package/dist/cjs/index.js.map +0 -1
  101. package/dist/cjs/json.extensions.d.ts +0 -2
  102. package/dist/cjs/json.extensions.js +0 -109
  103. package/dist/cjs/json.extensions.js.map +0 -1
  104. package/dist/cjs/map.extensions.d.ts +0 -3
  105. package/dist/cjs/map.extensions.js +0 -143
  106. package/dist/cjs/map.extensions.js.map +0 -1
  107. package/dist/cjs/math.extension.d.ts +0 -14
  108. package/dist/cjs/math.extension.js +0 -71
  109. package/dist/cjs/math.extension.js.map +0 -1
  110. package/dist/cjs/number.extension.d.ts +0 -44
  111. package/dist/cjs/number.extension.js +0 -278
  112. package/dist/cjs/number.extension.js.map +0 -1
  113. package/dist/cjs/object.extensions.d.ts +0 -33
  114. package/dist/cjs/object.extensions.js +0 -1091
  115. package/dist/cjs/object.extensions.js.map +0 -1
  116. package/dist/cjs/package.json +0 -3
  117. package/dist/cjs/proxy.extensions.d.ts +0 -2
  118. package/dist/cjs/proxy.extensions.js +0 -207
  119. package/dist/cjs/proxy.extensions.js.map +0 -1
  120. package/dist/cjs/reflect.extensions.d.ts +0 -14
  121. package/dist/cjs/reflect.extensions.js +0 -316
  122. package/dist/cjs/reflect.extensions.js.map +0 -1
  123. package/dist/cjs/regular.expression.extensions.d.ts +0 -2
  124. package/dist/cjs/regular.expression.extensions.js +0 -423
  125. package/dist/cjs/regular.expression.extensions.js.map +0 -1
  126. package/dist/cjs/set.extensions.d.ts +0 -40
  127. package/dist/cjs/set.extensions.js +0 -355
  128. package/dist/cjs/set.extensions.js.map +0 -1
  129. package/dist/cjs/string.extensions.d.ts +0 -23
  130. package/dist/cjs/string.extensions.js +0 -704
  131. package/dist/cjs/string.extensions.js.map +0 -1
  132. package/dist/cjs/symbol.extensions.d.ts +0 -11
  133. package/dist/cjs/symbol.extensions.js +0 -735
  134. package/dist/cjs/symbol.extensions.js.map +0 -1
  135. package/dist/cjs/utils/copy.object.d.ts +0 -408
  136. package/dist/cjs/utils/copy.object.js +0 -720
  137. package/dist/cjs/utils/copy.object.js.map +0 -1
  138. package/dist/cjs/utils/descriptor.utils.d.ts +0 -298
  139. package/dist/cjs/utils/descriptor.utils.js +0 -889
  140. package/dist/cjs/utils/descriptor.utils.js.map +0 -1
  141. package/dist/cjs/utils/index.d.ts +0 -75
  142. package/dist/cjs/utils/index.js +0 -61
  143. package/dist/cjs/utils/index.js.map +0 -1
  144. package/dist/cjs/utils/stdout.d.ts +0 -742
  145. package/dist/cjs/utils/stdout.js +0 -1042
  146. package/dist/cjs/utils/stdout.js.map +0 -1
  147. package/dist/cjs/utils/toolkit.d.ts +0 -1898
  148. package/dist/cjs/utils/toolkit.js +0 -1378
  149. package/dist/cjs/utils/toolkit.js.map +0 -1
  150. package/dist/cjs/weakref.extensions.d.ts +0 -2
  151. package/dist/cjs/weakref.extensions.js +0 -19
  152. package/dist/cjs/weakref.extensions.js.map +0 -1
  153. package/dist/mjs/array.extensions.d.ts +0 -39
  154. package/dist/mjs/array.extensions.js +0 -474
  155. package/dist/mjs/array.extensions.js.map +0 -1
  156. package/dist/mjs/big.int.extension.d.ts +0 -31
  157. package/dist/mjs/big.int.extension.js +0 -270
  158. package/dist/mjs/big.int.extension.js.map +0 -1
  159. package/dist/mjs/classes/asyncIterable.d.ts +0 -126
  160. package/dist/mjs/classes/asyncIterable.js +0 -204
  161. package/dist/mjs/classes/asyncIterable.js.map +0 -1
  162. package/dist/mjs/classes/deferred.d.ts +0 -146
  163. package/dist/mjs/classes/deferred.js +0 -287
  164. package/dist/mjs/classes/deferred.js.map +0 -1
  165. package/dist/mjs/classes/descriptor.d.ts +0 -334
  166. package/dist/mjs/classes/descriptor.js +0 -533
  167. package/dist/mjs/classes/descriptor.js.map +0 -1
  168. package/dist/mjs/classes/enum.d.ts +0 -50
  169. package/dist/mjs/classes/enum.js +0 -400
  170. package/dist/mjs/classes/enum.js.map +0 -1
  171. package/dist/mjs/classes/index.d.ts +0 -15
  172. package/dist/mjs/classes/index.js +0 -46
  173. package/dist/mjs/classes/index.js.map +0 -1
  174. package/dist/mjs/classes/introspector.d.ts +0 -20
  175. package/dist/mjs/classes/introspector.js +0 -126
  176. package/dist/mjs/classes/introspector.js.map +0 -1
  177. package/dist/mjs/classes/iterable.d.ts +0 -169
  178. package/dist/mjs/classes/iterable.js +0 -263
  179. package/dist/mjs/classes/iterable.js.map +0 -1
  180. package/dist/mjs/classes/param.parser.d.ts +0 -221
  181. package/dist/mjs/classes/param.parser.js +0 -238
  182. package/dist/mjs/classes/param.parser.js.map +0 -1
  183. package/dist/mjs/classes/pluggable.proxy.d.ts +0 -153
  184. package/dist/mjs/classes/pluggable.proxy.js +0 -438
  185. package/dist/mjs/classes/pluggable.proxy.js.map +0 -1
  186. package/dist/mjs/classes/property.d.ts +0 -79
  187. package/dist/mjs/classes/property.js +0 -280
  188. package/dist/mjs/classes/property.js.map +0 -1
  189. package/dist/mjs/classes/refmap.d.ts +0 -238
  190. package/dist/mjs/classes/refmap.js +0 -417
  191. package/dist/mjs/classes/refmap.js.map +0 -1
  192. package/dist/mjs/classes/refset.d.ts +0 -186
  193. package/dist/mjs/classes/refset.js +0 -366
  194. package/dist/mjs/classes/refset.js.map +0 -1
  195. package/dist/mjs/classes/symkeys.d.ts +0 -349
  196. package/dist/mjs/classes/symkeys.js +0 -506
  197. package/dist/mjs/classes/symkeys.js.map +0 -1
  198. package/dist/mjs/classes/type.d.ts +0 -56
  199. package/dist/mjs/classes/type.js +0 -401
  200. package/dist/mjs/classes/type.js.map +0 -1
  201. package/dist/mjs/function.extensions.d.ts +0 -12
  202. package/dist/mjs/function.extensions.js +0 -755
  203. package/dist/mjs/function.extensions.js.map +0 -1
  204. package/dist/mjs/global.this.d.ts +0 -2
  205. package/dist/mjs/global.this.js +0 -264
  206. package/dist/mjs/global.this.js.map +0 -1
  207. package/dist/mjs/index.d.ts +0 -31
  208. package/dist/mjs/index.js +0 -206
  209. package/dist/mjs/index.js.map +0 -1
  210. package/dist/mjs/json.extensions.d.ts +0 -2
  211. package/dist/mjs/json.extensions.js +0 -106
  212. package/dist/mjs/json.extensions.js.map +0 -1
  213. package/dist/mjs/map.extensions.d.ts +0 -3
  214. package/dist/mjs/map.extensions.js +0 -140
  215. package/dist/mjs/map.extensions.js.map +0 -1
  216. package/dist/mjs/math.extension.d.ts +0 -14
  217. package/dist/mjs/math.extension.js +0 -68
  218. package/dist/mjs/math.extension.js.map +0 -1
  219. package/dist/mjs/number.extension.d.ts +0 -44
  220. package/dist/mjs/number.extension.js +0 -275
  221. package/dist/mjs/number.extension.js.map +0 -1
  222. package/dist/mjs/object.extensions.d.ts +0 -33
  223. package/dist/mjs/object.extensions.js +0 -1088
  224. package/dist/mjs/object.extensions.js.map +0 -1
  225. package/dist/mjs/package.json +0 -3
  226. package/dist/mjs/proxy.extensions.d.ts +0 -2
  227. package/dist/mjs/proxy.extensions.js +0 -204
  228. package/dist/mjs/proxy.extensions.js.map +0 -1
  229. package/dist/mjs/reflect.extensions.d.ts +0 -14
  230. package/dist/mjs/reflect.extensions.js +0 -313
  231. package/dist/mjs/reflect.extensions.js.map +0 -1
  232. package/dist/mjs/regular.expression.extensions.d.ts +0 -2
  233. package/dist/mjs/regular.expression.extensions.js +0 -420
  234. package/dist/mjs/regular.expression.extensions.js.map +0 -1
  235. package/dist/mjs/set.extensions.d.ts +0 -40
  236. package/dist/mjs/set.extensions.js +0 -352
  237. package/dist/mjs/set.extensions.js.map +0 -1
  238. package/dist/mjs/string.extensions.d.ts +0 -23
  239. package/dist/mjs/string.extensions.js +0 -701
  240. package/dist/mjs/string.extensions.js.map +0 -1
  241. package/dist/mjs/symbol.extensions.d.ts +0 -11
  242. package/dist/mjs/symbol.extensions.js +0 -732
  243. package/dist/mjs/symbol.extensions.js.map +0 -1
  244. package/dist/mjs/utils/copy.object.d.ts +0 -408
  245. package/dist/mjs/utils/copy.object.js +0 -702
  246. package/dist/mjs/utils/copy.object.js.map +0 -1
  247. package/dist/mjs/utils/descriptor.utils.d.ts +0 -298
  248. package/dist/mjs/utils/descriptor.utils.js +0 -875
  249. package/dist/mjs/utils/descriptor.utils.js.map +0 -1
  250. package/dist/mjs/utils/index.d.ts +0 -75
  251. package/dist/mjs/utils/index.js +0 -45
  252. package/dist/mjs/utils/index.js.map +0 -1
  253. package/dist/mjs/utils/stdout.d.ts +0 -742
  254. package/dist/mjs/utils/stdout.js +0 -1037
  255. package/dist/mjs/utils/stdout.js.map +0 -1
  256. package/dist/mjs/utils/toolkit.d.ts +0 -1898
  257. package/dist/mjs/utils/toolkit.js +0 -1373
  258. package/dist/mjs/utils/toolkit.js.map +0 -1
  259. package/dist/mjs/weakref.extensions.d.ts +0 -2
  260. package/dist/mjs/weakref.extensions.js +0 -16
  261. package/dist/mjs/weakref.extensions.js.map +0 -1
  262. package/jsdoc-config.json +0 -31
  263. package/tsconfig.base.json +0 -28
  264. package/tsconfig.cjs.json +0 -8
  265. package/tsconfig.esm.json +0 -8
  266. package/vitest.config.js +0 -7
@@ -1,405 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EnumExtension = void 0;
4
- exports.Enum = Enum;
5
- exports.makeBaseEnum = makeBaseEnum;
6
- const extension_1 = require("@nejs/extension");
7
- const index_js_1 = require("../utils/index.js");
8
- /**
9
- * Creates an enumeration object with specified values and properties.
10
- *
11
- * @param {string} name - The name of the enumeration.
12
- * @param {Array|any} values - The values to be included in the enumeration.
13
- * If not an array, it will be converted into a single-element array.
14
- * @param {Object|Map} [properties] - Additional properties to be added to
15
- * the enumeration. Can be an object or a Map.
16
- * @returns {Object} The constructed enumeration object.
17
- *
18
- * @example
19
- * const colors = Enum('Colors', ['red', 'green', 'blue'])
20
- * console.log(colors.red) // EnumValue object for 'red'
21
- *
22
- * @description
23
- * The `Enum` function constructs an enumeration object with a given name,
24
- * values, and optional properties. It supports primitive types, arrays,
25
- * and objects as values. The function uses a combination of `Object.create`
26
- * and `Proxy` to define and manage the properties of the enumeration.
27
- *
28
- * The enumeration object includes:
29
- * - A `toString` method that returns the enumeration name.
30
- * - A `Symbol.toStringTag` for identifying the object as an 'Enum'.
31
- * - A `Symbol.for('Enum.name')` for storing the enumeration name.
32
- *
33
- * For array values, it creates a maker function that returns an
34
- * `EnumValue` object with properties like `real`, `value`, `type`,
35
- * `name`, and `compare`.
36
- */
37
- function Enum(name, values, properties) {
38
- const enumeration = makeBaseEnum(name);
39
- if (!Array.isArray(values)) {
40
- values = [values];
41
- }
42
- /**
43
- * A new base `EnumValue` type object. It contains enough custom symbols and
44
- * identifiers to allow things like a `compare(to)` function to also work on
45
- * each of the elements. Thing of this as the shared base functionality for
46
- * each `Enum` element.
47
- *
48
- * @param {any} enumValue the value around which an `EnumValue` type is
49
- * created.
50
- * @returns an object defined by {@link Symbol.toStringTag} as well as some
51
- * custom {@link Symbol} keys. The `node.js` custom inspect symbol is also
52
- * defined for better REPL representation.
53
- */
54
- const makeEnumValue = (property, enumValue) => ({
55
- toString: (0, index_js_1.data)(() => enumValue, false, true, false),
56
- [Symbol.for('Enum.name')]: (0, index_js_1.data)(name, false, true, false),
57
- [Symbol.for('Enum.is')]: (0, index_js_1.data)(true, false, false, false),
58
- [Symbol.for('nodejs.util.inspect.custom')]: (0, index_js_1.data)(function (depth, options, inspect) {
59
- const _options = { ...(options || {}), colors: true };
60
- const _skip = this.value === Symbol.for('Enum.NonAssociatedValue');
61
- const _value = _skip
62
- ? ''
63
- : ` { value: ${inspect(this.value, _options)} }`;
64
- return `${property}${_value}`;
65
- }, false, true, false),
66
- [Symbol.toStringTag]: (0, index_js_1.accessor)('EnumValue', false, true, false),
67
- [Symbol.for('compare')]: (0, index_js_1.data)(function compareValue(to) {
68
- const toObj = (to && typeof to === 'object') ? to : { real: to };
69
- const kName = Symbol.for('Enum.name');
70
- const hasAndIs = o => (Reflect.has(o, Symbol.for('Enum.is')) && o[Symbol.for('Enum.is')]);
71
- const isLEnum = hasAndIs(this);
72
- const isREnum = hasAndIs(toObj);
73
- if (!isLEnum || !isREnum)
74
- return false;
75
- const { real: lReal, value: lValue, name: lName, type: lType } = this;
76
- const { real: rReal, value: rValue, name: rName, type: rType } = toObj;
77
- return (lName === rName && lType === rType &&
78
- lReal === rReal && lValue === rValue);
79
- }, false, true, false),
80
- [Symbol.toPrimitive]: (0, index_js_1.data)(function EnumValueToPrimitive(hint) {
81
- const original = this.real;
82
- const type = typeof original;
83
- switch (hint) {
84
- case 'string':
85
- if ('string' === type)
86
- return original;
87
- else
88
- return String(original);
89
- case 'number':
90
- if ('number' === type)
91
- return original;
92
- else
93
- return NaN;
94
- case 'bigint':
95
- if ('bigint' === type)
96
- return original;
97
- else
98
- return NaN;
99
- default:
100
- return original;
101
- }
102
- }, false, true, false),
103
- });
104
- /**
105
- * Given a value, determine how to represent it as both a key and a response
106
- * or underlying original value. The method for this is dependent on the type
107
- * of the value itself.
108
- *
109
- * @param {any} value the value to be converted
110
- * @returns {[string, any]} an array where the first value is the transformed
111
- * value as a key and the second element is the originally supplied value.
112
- */
113
- const fromPrimitive = (value) => {
114
- let valueType = typeof value;
115
- switch (valueType) {
116
- case 'string':
117
- case 'number':
118
- case 'bigint':
119
- case 'boolean':
120
- default:
121
- return [String(value), value];
122
- case 'symbol':
123
- return [value.description, value];
124
- case 'function':
125
- return [value.name, value];
126
- case 'object': {
127
- const str = asString(value);
128
- return [str, str];
129
- }
130
- }
131
- };
132
- // Determine the keys that the final proxy should be aware of when computing
133
- // the enumeration value itself.
134
- const kValueProps = ['real', 'value', 'type', 'name', 'compare', 'isEnum'];
135
- const kCustomPropKeys = [];
136
- // Capture and calculate any custom properties defined for each element
137
- // of the enumeration. Each custom property is appended to `kCustomPropKeys`
138
- const props = {};
139
- if (properties) {
140
- if (Array.isArray(properties)) {
141
- const entries = properties.filter(e => Array.isArray(e) && e.length === 2);
142
- if (entries.length)
143
- properties = new Map(entries);
144
- else
145
- properties = new Map();
146
- }
147
- else if (typeof properties === 'object') {
148
- properties = new Map(Object.entries(Object.getOwnPropertyDescriptors(properties)));
149
- }
150
- if (properties instanceof Map) {
151
- const applyPropertiesOf = (object, baseDescriptor) => {
152
- const property = {
153
- configurable: baseDescriptor?.configurable ?? true,
154
- enumerable: baseDescriptor?.enumerable ?? true,
155
- writable: baseDescriptor?.writable ?? true,
156
- };
157
- const descriptors = Object.getOwnPropertyDescriptors(object);
158
- for (const [key, subvalue] of Object.entries(descriptors)) {
159
- const stats = (0, index_js_1.isDescriptor)(subvalue, true);
160
- const baseStats = (0, index_js_1.isDescriptor)(baseDescriptor, true);
161
- if (stats.isAccessor && baseStats.isValid) {
162
- props[key] = { ...subvalue, ...index_js_1.accessor.keys.from(baseDescriptor) };
163
- }
164
- else if (stats.isData && baseStats.isValid) {
165
- props[key] = { ...subvalue, ...index_js_1.data.keys.from(baseDescriptor) };
166
- }
167
- }
168
- };
169
- let stats = {};
170
- for (const [property, value] of properties.entries()) {
171
- kCustomPropKeys.push(property);
172
- if ((0, index_js_1.isDescriptor)(property)) {
173
- if (typeof value === 'object') {
174
- applyPropertiesOf(value, property);
175
- continue;
176
- }
177
- }
178
- props[property] = value;
179
- }
180
- }
181
- }
182
- for (const value of values) {
183
- const valueType = Array.isArray(value) ? 'array' : typeof value;
184
- let property = undefined;
185
- let response = undefined;
186
- let wasArray = false;
187
- let elements = value;
188
- switch (valueType) {
189
- case 'array':
190
- if (value.length >= 1) {
191
- wasArray = true;
192
- ([property, response] = fromPrimitive(elements[0]));
193
- }
194
- default:
195
- ([property, response] = fromPrimitive(value));
196
- }
197
- const maker = {
198
- [property](initialValue) {
199
- const storage = new Map();
200
- const key = property;
201
- const realValue = (0, index_js_1.accessor)(response, false, { storage, key });
202
- let _opts, associatedValue;
203
- if (wasArray) {
204
- _opts = { storage, key: key + '.associated' };
205
- associatedValue = elements.length === 1
206
- ? (0, index_js_1.accessor)(initialValue, true, _opts)
207
- : (0, index_js_1.accessor)(elements?.[1], elements?.[2], _opts);
208
- }
209
- else
210
- associatedValue = (0, index_js_1.accessor)(Symbol.for('Enum.NonAssociatedValue'), false, false, false);
211
- const _prop = Object(asString(response));
212
- const valueProps = [...kValueProps, ...kCustomPropKeys];
213
- const enumResponse = Object.create(_prop, {
214
- ...makeEnumValue(property, response),
215
- ...props,
216
- });
217
- const proxy = new Proxy(_prop, {
218
- get(target, _property, receiver) {
219
- if (_property === 'real')
220
- return realValue.get();
221
- if (_property === 'value')
222
- return associatedValue.get();
223
- if (_property === 'type')
224
- return name;
225
- if (_property === 'name')
226
- return property;
227
- if (_property === 'compare')
228
- return enumResponse[Symbol.for('compare')];
229
- if (_property === 'isEnum')
230
- return true;
231
- if (!valueProps.includes(_property))
232
- return undefined;
233
- },
234
- has(target, _property) {
235
- return valueProps.includes(_property);
236
- },
237
- ownKeys(target) {
238
- return valueProps;
239
- },
240
- set(target, _property, value, receiver) {
241
- if (_property === 'value' && wasArray)
242
- return associatedValue.set(value);
243
- return false;
244
- }
245
- });
246
- Object.setPrototypeOf(proxy, Object.getPrototypeOf(_prop));
247
- Object.setPrototypeOf(enumResponse, proxy);
248
- return enumResponse;
249
- }
250
- };
251
- enumeration[Symbol.for('Enum.valueKeys')].push(property);
252
- const dataValue = wasArray ? maker[property] : maker[property]();
253
- const baseProps = {
254
- writable: false,
255
- configurable: false,
256
- enumerable: true,
257
- };
258
- Object.defineProperty(enumeration, property, (0, index_js_1.data)(dataValue, baseProps));
259
- }
260
- return enumeration;
261
- }
262
- exports.EnumExtension = new extension_1.Extension(Enum);
263
- /**
264
- * Converts a given value to a string representation with additional
265
- * options for description and string tag.
266
- *
267
- * @param {any} value - The value to be converted to a string. This can
268
- * be of any type, including objects, arrays, numbers, etc.
269
- * @returns {string} A string representation of the input value, enhanced
270
- * with a description and string tag if applicable.
271
- *
272
- * @example
273
- * // Convert a number to a string with additional options
274
- * const result = asString(123)
275
- * console.log(result) // Outputs: "123" with description and string tag
276
- *
277
- * @example
278
- * // Convert an object to a string with additional options
279
- * const obj = { key: 'value' }
280
- * const result = asString(obj)
281
- * console.log(result) // Outputs: "[object Object]" with description and
282
- * // string tag
283
- */
284
- function asString(value) {
285
- return index_js_1.as.string(value, { description: true, stringTag: true });
286
- }
287
- /**
288
- * Creates a base enumeration object with predefined properties and
289
- * symbols. This function is used to initialize an enumeration with
290
- * specific characteristics, such as a name and various symbolic
291
- * properties that enhance its functionality and identification.
292
- *
293
- * @param {string} name - The name of the enumeration. This name is
294
- * used to identify the enumeration and is stored as a symbol on
295
- * the object.
296
- * @returns {Object} A new enumeration object with specific properties
297
- * and symbols set for enhanced functionality and identification.
298
- *
299
- * @example
300
- * // Create a base enum with the name 'Color'
301
- * const colorEnum = makeBaseEnum('Color')
302
- * console.log(colorEnum[Symbol.for('Enum.name')]) // Outputs: 'Color'
303
- */
304
- function makeBaseEnum(name) {
305
- return Object.create({}, {
306
- /**
307
- * Defines the `toStringTag` symbol on each enumeration to allow for
308
- * type identification and to be consistent in naming conventions.
309
- *
310
- * @type {string}
311
- */
312
- [Symbol.toStringTag]: (0, index_js_1.accessor)('Enum', false, true, false),
313
- /**
314
- * In addition to the `toStringTag` symbol which defines this enumeration
315
- * as an Enum type, the name of the enum is also codified in as a symbol
316
- * on the object. It can be found using `Symbol.for('Enum.name')`.
317
- *
318
- * @type {string|symbol|number}
319
- */
320
- [Symbol.for('Enum.name')]: (0, index_js_1.accessor)(name, false, true, false),
321
- /**
322
- * Knowing which keys of the enum are part of the keys themselves is also
323
- * crucial for enumerations. These can always be found on each Enum type
324
- * as `Symbol.for('Enum.valueKeys')` as an array, but can also be found
325
- * as the `.keys` property if there is no enum value of that name.
326
- */
327
- [Symbol.for('Enum.valueKeys')]: (0, index_js_1.data)([], false, true, false),
328
- /**
329
- * For users of the node.js REPL, this symbol represents enum types in a
330
- * more readily readable format. See the docs for node's `util.inspect()`
331
- * function for more details.
332
- *
333
- * @type {(number, object, Function) => string}
334
- */
335
- [Symbol.for('nodejs.util.inspect.custom')]: (0, index_js_1.data)(function (depth, options, inspect) {
336
- const valueKeys = this[Symbol.for('Enum.valueKeys')] ?? [];
337
- let valueText = valueKeys
338
- .map(key => `\x1b[1;2m${key}\x1b[22m`)
339
- .join(', ');
340
- if (valueText.length)
341
- valueText = ` { ${valueText} }`;
342
- return `\x1b[1menum \x1b[22m${name}${valueText}`;
343
- }, false, true, false),
344
- /**
345
- * This function checks the supplied `possibleEnumValue` to see if it
346
- * is an enum value type from this enum.
347
- *
348
- * @param {any} possibleEnumValue the value to evaluate
349
- * @returns {boolean} returns `true` if the value is an enum value type
350
- * from this `Enum`, irrespective of any associated value. Returns `false`
351
- * otherwise.
352
- */
353
- isValueOf: (0, index_js_1.data)(function isValueOf(possibleEnumValue) {
354
- if (!possibleEnumValue || typeof possibleEnumValue !== 'object')
355
- return false;
356
- const enumValueType = possibleEnumValue?.type;
357
- const enumValueName = possibleEnumValue?.name;
358
- const thisEnumName = this[Symbol.for('Enum.name')];
359
- const thisEnumKeys = this[Symbol.for('Enum.valueKeys')];
360
- return (enumValueType === thisEnumName &&
361
- thisEnumKeys.includes(enumValueName));
362
- }, false, true, false),
363
- /**
364
- * A simple overload of the `toString()` method to represent the enum
365
- * more identifiably when called. The result will be the word enum with
366
- * the name of the enum in parenthesis. So a Gender enum might be seen
367
- * as `Enum(Gender)` as a result to calling this function.
368
- *
369
- * @returns {string} a {@link String} representation of this object.
370
- */
371
- toString: (0, index_js_1.data)(function toString() {
372
- return `Enum(${name})`;
373
- }, false, true, false)
374
- });
375
- const applySyntacticSugar = () => {
376
- createSymlinks(Symbol.for('Enum.valueKeys'), 'keys');
377
- createSymlinks(Symbol.for('Enum.name'), 'name');
378
- };
379
- return [base, applySyntacticSugar];
380
- }
381
- /**
382
- * Creates a symlink for a property from an existing key to a new key on
383
- * the specified object. This function checks if the new key already
384
- * exists on the object and, if not, it creates a new property with the
385
- * same descriptor as the old key.
386
- *
387
- * Since this method creates the new link through the use of property
388
- * descriptors, computed getters and setters also are mapped properly.
389
- *
390
- * @param {Object} on - The target object on which the symlink is to be
391
- * created.
392
- * @param {string|symbol} oldKey - The existing key whose property
393
- * descriptor will be used for the new key.
394
- * @param {string|symbol} newKey - The new key under which the property
395
- * will be accessible.
396
- *
397
- * @example
398
- * const obj = { a: 1 }
399
- * createSymlink(obj, 'a', 'b')
400
- * console.log(obj.b) // Outputs: 1
401
- */
402
- function createSymlinks(on, oldKey, ...newKeys) {
403
- (0, index_js_1.redescribe)(on, oldKey, {}, { alsoAs: newKeys });
404
- }
405
- //# sourceMappingURL=enum.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../src/classes/enum.js"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export * from "./asyncIterable.js";
2
- export * from "./deferred.js";
3
- export * from "./descriptor.js";
4
- export * from "./enum.js";
5
- export * from "./introspector.js";
6
- export * from "./iterable.js";
7
- export * from "./param.parser.js";
8
- export * from "./pluggable.proxy.js";
9
- export * from "./property.js";
10
- export * from "./refmap.js";
11
- export * from "./refset.js";
12
- export * from "./symkeys.js";
13
- export * from "./type.js";
14
- export const NewClassesExtension: Patch;
15
- import { Patch } from '@nejs/extension';
@@ -1,63 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.NewClassesExtension = void 0;
18
- const extension_1 = require("@nejs/extension");
19
- const asyncIterable_js_1 = require("./asyncIterable.js");
20
- __exportStar(require("./asyncIterable.js"), exports);
21
- const deferred_js_1 = require("./deferred.js");
22
- __exportStar(require("./deferred.js"), exports);
23
- const descriptor_js_1 = require("./descriptor.js");
24
- __exportStar(require("./descriptor.js"), exports);
25
- const enum_js_1 = require("./enum.js");
26
- __exportStar(require("./enum.js"), exports);
27
- const introspector_js_1 = require("./introspector.js");
28
- __exportStar(require("./introspector.js"), exports);
29
- const iterable_js_1 = require("./iterable.js");
30
- __exportStar(require("./iterable.js"), exports);
31
- const param_parser_js_1 = require("./param.parser.js");
32
- __exportStar(require("./param.parser.js"), exports);
33
- const pluggable_proxy_js_1 = require("./pluggable.proxy.js");
34
- __exportStar(require("./pluggable.proxy.js"), exports);
35
- const property_js_1 = require("./property.js");
36
- __exportStar(require("./property.js"), exports);
37
- const refmap_js_1 = require("./refmap.js");
38
- __exportStar(require("./refmap.js"), exports);
39
- const refset_js_1 = require("./refset.js");
40
- __exportStar(require("./refset.js"), exports);
41
- const symkeys_js_1 = require("./symkeys.js");
42
- __exportStar(require("./symkeys.js"), exports);
43
- const type_js_1 = require("./type.js");
44
- __exportStar(require("./type.js"), exports);
45
- exports.NewClassesExtension = new extension_1.Patch(globalThis, {
46
- AsyncIterable: asyncIterable_js_1.AsyncIterable,
47
- AsyncIterator: asyncIterable_js_1.AsyncIterator,
48
- Deferred: deferred_js_1.Deferred,
49
- Descriptor: descriptor_js_1.Descriptor,
50
- Enum: enum_js_1.Enum,
51
- Introspector: introspector_js_1.Introspector,
52
- Iterable: iterable_js_1.Iterable,
53
- Iterator: iterable_js_1.Iterator,
54
- ParamParser: param_parser_js_1.ParamParser,
55
- PluggableProxy: pluggable_proxy_js_1.PluggableProxy,
56
- ProxyHandler: pluggable_proxy_js_1.ProxyHandler,
57
- Property: property_js_1.Property,
58
- RefMap: refmap_js_1.RefMap,
59
- RefSet: refset_js_1.RefSet,
60
- Symkeys: symkeys_js_1.Symkeys,
61
- Type: type_js_1.Type,
62
- });
63
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAAuC;AAEvC,yDAAiE;AACjE,qDAAkC;AAElC,+CAAwC;AACxC,gDAA6B;AAE7B,mDAA4C;AAC5C,kDAA+B;AAE/B,uCAAgC;AAChC,4CAAyB;AAEzB,uDAAgD;AAChD,oDAAiC;AAEjC,+CAAiD;AACjD,gDAA6B;AAE7B,uDAA+C;AAC/C,oDAAiC;AAEjC,6DAAmE;AACnE,uDAAoC;AAEpC,+CAA4D;AAC5D,gDAA6B;AAE7B,2CAAqC;AACrC,8CAA2B;AAE3B,2CAAoC;AACpC,8CAA2B;AAE3B,6CAAsC;AACtC,+CAA4B;AAE5B,uCAAgC;AAChC,4CAAyB;AAEZ,QAAA,mBAAmB,GAAG,IAAI,iBAAK,CAAC,UAAU,EAAE;IACvD,aAAa,EAAb,gCAAa;IACb,aAAa,EAAb,gCAAa;IACb,QAAQ,EAAR,sBAAQ;IACR,UAAU,EAAV,0BAAU;IACV,IAAI,EAAJ,cAAI;IACJ,YAAY,EAAZ,8BAAY;IACZ,QAAQ,EAAR,sBAAQ;IACR,QAAQ,EAAR,sBAAQ;IACR,WAAW,EAAX,6BAAW;IACX,cAAc,EAAd,mCAAc;IACd,YAAY,EAAZ,iCAAY;IACZ,QAAQ,EAAR,sBAAQ;IACR,MAAM,EAAN,kBAAM;IACN,MAAM,EAAN,kBAAM;IACN,OAAO,EAAP,oBAAO;IACP,IAAI,EAAJ,cAAI;CACL,CAAC,CAAA"}
@@ -1,20 +0,0 @@
1
- export class Introspector {
2
- static addExpansion(array: any): any;
3
- static accessors(owner?: typeof globalThis, keys?: any[]): Map<any, any>;
4
- static classes(owner?: typeof globalThis): any;
5
- static functions(owner?: typeof globalThis): any;
6
- static objects(owner?: typeof globalThis): any;
7
- static properties(owner?: typeof globalThis): any;
8
- static symbols(owner?: typeof globalThis): any;
9
- static metadata(owner: any, key: any): {
10
- owner: any;
11
- key: any;
12
- descriptor: undefined;
13
- value: undefined;
14
- readonly type: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
15
- };
16
- static fetcher(typeNameOrTyperFn: any, regExp?: undefined, searchClass?: ObjectConstructor, searchFunction?: string, owner?: typeof globalThis): any;
17
- static makeReport(owner?: typeof globalThis): {};
18
- }
19
- export const IntrospectorExtensions: Extension;
20
- import { Extension } from '@nejs/extension';
@@ -1,130 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IntrospectorExtensions = exports.Introspector = void 0;
4
- const extension_1 = require("@nejs/extension");
5
- class Introspector {
6
- static addExpansion(array) {
7
- const toEntriesFrom = (owner = globalThis) => {
8
- return (accumulator, key) => {
9
- const count = accumulator.length;
10
- try {
11
- const value = owner[key];
12
- accumulator.splice(count, 0, [key, value], [value, key]);
13
- }
14
- catch (error) {
15
- accumulator.splice(count, 0, [key, error]);
16
- }
17
- return accumulator;
18
- };
19
- };
20
- return Object.defineProperty(array, 'expand', {
21
- get() {
22
- return new Map(this.reduce(toEntriesFrom(globalThis), []));
23
- },
24
- configurable: true,
25
- enumerable: true,
26
- });
27
- }
28
- static accessors(owner = globalThis, keys = []) {
29
- const entries = [];
30
- for (const key of keys) {
31
- try {
32
- const metadata = this.metadata(owner, key);
33
- if (metadata.get || metadata.set) {
34
- entries.push([key, metadata]);
35
- }
36
- continue;
37
- }
38
- catch (error) {
39
- entries.push([key, error]);
40
- }
41
- }
42
- return new Map(entries);
43
- }
44
- static classes(owner = globalThis) {
45
- return this.fetcher('function', /^[A-Z]/, Object, 'getOwnPropertyNames', owner);
46
- }
47
- static functions(owner = globalThis) {
48
- return this.fetcher('function', /^[a-z]/, Object, 'getOwnPropertyNames', owner);
49
- }
50
- static objects(owner = globalThis) {
51
- return this.fetcher('object', null, Object, 'getOwnPropertyNames', owner);
52
- }
53
- static properties(owner = globalThis) {
54
- return this.fetcher((v, t, d) => t !== 'object' && t !== 'function', null, Object, 'getOwnPropertyNames', owner);
55
- }
56
- static symbols(owner = globalThis) {
57
- return this.addExpansion(Object.getOwnPropertySymbols(owner));
58
- }
59
- static metadata(owner, key) {
60
- const metadata = {
61
- owner, key,
62
- descriptor: undefined,
63
- value: undefined,
64
- get type() { return typeof this.value; },
65
- };
66
- try {
67
- metadata.descriptor = Object.getOwnPropertyDescriptor(owner, key);
68
- }
69
- catch (error) {
70
- metadata.descriptor = error;
71
- }
72
- try {
73
- metadata.value = (metadata.descriptor?.value ??
74
- metadata.descriptor?.get?.bind(owner)?.() ??
75
- owner[key]);
76
- }
77
- catch (error) {
78
- metadata.value = error;
79
- }
80
- return metadata;
81
- }
82
- static fetcher(typeNameOrTyperFn, regExp = undefined, searchClass = Object, searchFunction = 'getOwnPropertyNames', owner = globalThis) {
83
- let typer = typeNameOrTyperFn;
84
- if (typeof typeNameOrTyperFn !== 'function') {
85
- const type = String(typeNameOrTyperFn);
86
- typer = (function (value, typeName, descriptor) {
87
- return typeName === type;
88
- }).bind(this);
89
- }
90
- return this.addExpansion(searchClass[searchFunction](owner).filter(key => {
91
- const metadata = this.metadata(owner, key);
92
- return ((!regExp || regExp.exec(String(key))) &&
93
- typer(metadata.value, metadata.type, metadata.descriptor));
94
- }).toSorted());
95
- }
96
- static makeReport(owner = globalThis) {
97
- let names = [
98
- 'classes', 'functions', 'objects', 'properties', 'symbols', 'accessors'
99
- ];
100
- let bound = names.reduce((a, n) => { a[n] = this[n].bind(this); return a; }, {});
101
- const { classes, functions, objects, properties, symbols, accessors } = bound;
102
- const result = {};
103
- Object.assign(result, {
104
- accessors: {
105
- classes: undefined,
106
- functions: undefined,
107
- objects: undefined,
108
- properties: undefined,
109
- symbols: undefined,
110
- },
111
- classes: this[classes.name](),
112
- functions: this[functions.name](),
113
- objects: this[objects.name](),
114
- properties: this[properties.name](),
115
- symbols: this[symbols.name](),
116
- expandAll() {
117
- names.forEach(reportName => {
118
- result[reportName] = result?.[reportName]?.expand;
119
- });
120
- },
121
- })(names.forEach(type => {
122
- debugger;
123
- result.accessors[type] = accessors(globalThis, result[type]);
124
- }));
125
- return result;
126
- }
127
- }
128
- exports.Introspector = Introspector;
129
- exports.IntrospectorExtensions = new extension_1.Extension(Introspector);
130
- //# sourceMappingURL=introspector.js.map