@nejs/basic-extensions 2.8.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +268 -147
  2. package/bin/version +100 -0
  3. package/dist/@nejs/basic-extensions.bundle.2.10.0.js +19 -0
  4. package/dist/@nejs/basic-extensions.bundle.2.10.0.js.map +7 -0
  5. package/dist/cjs/array.extensions.js +174 -0
  6. package/dist/cjs/array.extensions.js.map +1 -1
  7. package/dist/cjs/big.int.extension.js +1 -0
  8. package/dist/cjs/big.int.extension.js.map +1 -1
  9. package/dist/cjs/classes/descriptor.js +1 -1
  10. package/dist/cjs/classes/descriptor.js.map +1 -1
  11. package/dist/cjs/classes/index.d.ts +1 -0
  12. package/dist/cjs/classes/index.js +3 -0
  13. package/dist/cjs/classes/index.js.map +1 -1
  14. package/dist/cjs/classes/iterable.d.ts +44 -0
  15. package/dist/cjs/classes/iterable.js +64 -0
  16. package/dist/cjs/classes/iterable.js.map +1 -1
  17. package/dist/cjs/classes/param.parser.d.ts +10 -10
  18. package/dist/cjs/classes/property.d.ts +86 -0
  19. package/dist/cjs/classes/property.js +284 -0
  20. package/dist/cjs/classes/property.js.map +1 -0
  21. package/dist/cjs/classes/symkeys.d.ts +68 -11
  22. package/dist/cjs/classes/symkeys.js +103 -17
  23. package/dist/cjs/classes/symkeys.js.map +1 -1
  24. package/dist/cjs/classes/type.d.ts +4 -4
  25. package/dist/cjs/function.extensions.js +1 -0
  26. package/dist/cjs/function.extensions.js.map +1 -1
  27. package/dist/cjs/global.this.js +29 -0
  28. package/dist/cjs/global.this.js.map +1 -1
  29. package/dist/cjs/index.d.ts +2 -0
  30. package/dist/cjs/index.js +18 -0
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/json.extensions.js +22 -20
  33. package/dist/cjs/json.extensions.js.map +1 -1
  34. package/dist/cjs/map.extensions.js +1 -0
  35. package/dist/cjs/map.extensions.js.map +1 -1
  36. package/dist/cjs/number.extension.js +1 -0
  37. package/dist/cjs/number.extension.js.map +1 -1
  38. package/dist/cjs/object.extensions.d.ts +0 -29
  39. package/dist/cjs/object.extensions.js +218 -243
  40. package/dist/cjs/object.extensions.js.map +1 -1
  41. package/dist/cjs/set.extensions.js +1 -0
  42. package/dist/cjs/set.extensions.js.map +1 -1
  43. package/dist/cjs/string.extensions.js +478 -283
  44. package/dist/cjs/string.extensions.js.map +1 -1
  45. package/dist/cjs/symbol.extensions.js +500 -24
  46. package/dist/cjs/symbol.extensions.js.map +1 -1
  47. package/dist/cjs/utils/copy.object.d.ts +408 -0
  48. package/dist/cjs/utils/copy.object.js +720 -0
  49. package/dist/cjs/utils/copy.object.js.map +1 -0
  50. package/dist/cjs/utils/index.d.ts +1 -0
  51. package/dist/cjs/utils/index.js +19 -0
  52. package/dist/cjs/utils/index.js.map +1 -0
  53. package/dist/cjs/utils/toolkit.d.ts +1897 -0
  54. package/dist/cjs/utils/toolkit.js +1377 -0
  55. package/dist/cjs/utils/toolkit.js.map +1 -0
  56. package/dist/mjs/array.extensions.js +174 -0
  57. package/dist/mjs/array.extensions.js.map +1 -1
  58. package/dist/mjs/big.int.extension.js +1 -0
  59. package/dist/mjs/big.int.extension.js.map +1 -1
  60. package/dist/mjs/classes/descriptor.js +1 -1
  61. package/dist/mjs/classes/descriptor.js.map +1 -1
  62. package/dist/mjs/classes/index.d.ts +1 -0
  63. package/dist/mjs/classes/index.js +3 -0
  64. package/dist/mjs/classes/index.js.map +1 -1
  65. package/dist/mjs/classes/iterable.d.ts +44 -0
  66. package/dist/mjs/classes/iterable.js +64 -0
  67. package/dist/mjs/classes/iterable.js.map +1 -1
  68. package/dist/mjs/classes/param.parser.d.ts +10 -10
  69. package/dist/mjs/classes/property.d.ts +86 -0
  70. package/dist/mjs/classes/property.js +280 -0
  71. package/dist/mjs/classes/property.js.map +1 -0
  72. package/dist/mjs/classes/symkeys.d.ts +68 -11
  73. package/dist/mjs/classes/symkeys.js +103 -17
  74. package/dist/mjs/classes/symkeys.js.map +1 -1
  75. package/dist/mjs/classes/type.d.ts +4 -4
  76. package/dist/mjs/function.extensions.js +1 -0
  77. package/dist/mjs/function.extensions.js.map +1 -1
  78. package/dist/mjs/global.this.js +6 -0
  79. package/dist/mjs/global.this.js.map +1 -1
  80. package/dist/mjs/index.d.ts +2 -0
  81. package/dist/mjs/index.js +4 -0
  82. package/dist/mjs/index.js.map +1 -1
  83. package/dist/mjs/json.extensions.js +22 -20
  84. package/dist/mjs/json.extensions.js.map +1 -1
  85. package/dist/mjs/map.extensions.js +1 -0
  86. package/dist/mjs/map.extensions.js.map +1 -1
  87. package/dist/mjs/number.extension.js +1 -0
  88. package/dist/mjs/number.extension.js.map +1 -1
  89. package/dist/mjs/object.extensions.d.ts +0 -29
  90. package/dist/mjs/object.extensions.js +215 -239
  91. package/dist/mjs/object.extensions.js.map +1 -1
  92. package/dist/mjs/set.extensions.js +1 -0
  93. package/dist/mjs/set.extensions.js.map +1 -1
  94. package/dist/mjs/string.extensions.js +478 -283
  95. package/dist/mjs/string.extensions.js.map +1 -1
  96. package/dist/mjs/symbol.extensions.js +501 -25
  97. package/dist/mjs/symbol.extensions.js.map +1 -1
  98. package/dist/mjs/utils/copy.object.d.ts +408 -0
  99. package/dist/mjs/utils/copy.object.js +702 -0
  100. package/dist/mjs/utils/copy.object.js.map +1 -0
  101. package/dist/mjs/utils/index.d.ts +1 -0
  102. package/dist/mjs/utils/index.js +3 -0
  103. package/dist/mjs/utils/index.js.map +1 -0
  104. package/dist/mjs/utils/toolkit.d.ts +1897 -0
  105. package/dist/mjs/utils/toolkit.js +1372 -0
  106. package/dist/mjs/utils/toolkit.js.map +1 -0
  107. package/package.json +30 -38
  108. package/repl.bootstrap.js +12 -1
  109. package/src/array.extensions.js +191 -1
  110. package/src/big.int.extension.js +3 -1
  111. package/src/classes/descriptor.js +1 -1
  112. package/src/classes/index.js +4 -0
  113. package/src/classes/iterable.js +74 -0
  114. package/src/classes/property.js +333 -0
  115. package/src/classes/symkeys.js +120 -19
  116. package/src/function.extensions.js +2 -0
  117. package/src/global.this.js +8 -0
  118. package/src/index.js +5 -0
  119. package/src/json.extensions.js +21 -21
  120. package/src/map.extensions.js +3 -1
  121. package/src/number.extension.js +3 -1
  122. package/src/object.extensions.js +240 -262
  123. package/src/set.extensions.js +3 -1
  124. package/src/string.extensions.js +531 -306
  125. package/src/symbol.extensions.js +529 -25
  126. package/src/utils/copy.object.js +780 -0
  127. package/src/utils/index.js +2 -0
  128. package/src/utils/toolkit.js +1471 -0
  129. package/tests/arrayextensions.test.js +2 -0
  130. package/tests/index.test.js +1 -0
  131. package/tests/newClasses/asyncIterable.test.js +2 -0
  132. package/tests/newClasses/deferred.test.js +5 -3
  133. package/tests/newClasses/descriptor.test.js +2 -0
  134. package/tests/newClasses/iterable.test.js +2 -0
  135. package/tests/newClasses/refmap.test.js +2 -1
  136. package/tests/newClasses/refset.test.js +2 -0
  137. package/tests/objectextensions.test.js +2 -0
  138. package/tests/setextensions.test.js +2 -0
  139. package/tests/stringextensions.test.js +1 -0
  140. package/tests/utils/toolkit.test.js +223 -0
  141. package/tsconfig.base.json +1 -1
  142. package/vitest.config.js +7 -0
  143. package/dist/@nejs/basic-extensions.bundle.2.7.0.js +0 -19
  144. package/dist/@nejs/basic-extensions.bundle.2.7.0.js.map +0 -7
  145. package/docs/assets/anchor.js +0 -350
  146. package/docs/assets/bass-addons.css +0 -12
  147. package/docs/assets/bass.css +0 -544
  148. package/docs/assets/fonts/EOT/SourceCodePro-Bold.eot +0 -0
  149. package/docs/assets/fonts/EOT/SourceCodePro-Regular.eot +0 -0
  150. package/docs/assets/fonts/LICENSE.txt +0 -93
  151. package/docs/assets/fonts/OTF/SourceCodePro-Bold.otf +0 -0
  152. package/docs/assets/fonts/OTF/SourceCodePro-Regular.otf +0 -0
  153. package/docs/assets/fonts/TTF/SourceCodePro-Bold.ttf +0 -0
  154. package/docs/assets/fonts/TTF/SourceCodePro-Regular.ttf +0 -0
  155. package/docs/assets/fonts/WOFF/OTF/SourceCodePro-Bold.otf.woff +0 -0
  156. package/docs/assets/fonts/WOFF/OTF/SourceCodePro-Regular.otf.woff +0 -0
  157. package/docs/assets/fonts/WOFF/TTF/SourceCodePro-Bold.ttf.woff +0 -0
  158. package/docs/assets/fonts/WOFF/TTF/SourceCodePro-Regular.ttf.woff +0 -0
  159. package/docs/assets/fonts/WOFF2/OTF/SourceCodePro-Bold.otf.woff2 +0 -0
  160. package/docs/assets/fonts/WOFF2/OTF/SourceCodePro-Regular.otf.woff2 +0 -0
  161. package/docs/assets/fonts/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 +0 -0
  162. package/docs/assets/fonts/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 +0 -0
  163. package/docs/assets/fonts/source-code-pro.css +0 -23
  164. package/docs/assets/github.css +0 -123
  165. package/docs/assets/site.js +0 -168
  166. package/docs/assets/split.css +0 -15
  167. package/docs/assets/split.js +0 -782
  168. package/docs/assets/style.css +0 -147
  169. package/docs/index.html +0 -34965
@@ -1 +1 @@
1
- {"version":3,"file":"string.extensions.js","sourceRoot":"","sources":["../../src/string.extensions.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string.extensions.js","sourceRoot":"","sources":["../../src/string.extensions.js"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { Patch } from '@nejs/extension';
1
+ import { Patch, PatchToggle } from '@nejs/extension';
2
2
  import { Symkeys } from './classes/symkeys.js';
3
3
  import { JSONExtensions } from './json.extensions.js';
4
- const { extractFrom, mightContain } = JSONExtensions.patches;
4
+ const JSONToggle = new PatchToggle(JSONExtensions);
5
+ const symkeys = new Symkeys('nejs');
5
6
  /**
6
7
  * `SymbolExtensions` is a patch for the JavaScript built-in `Symbol` class. It
7
8
  * adds utility methods to the `Symbol` class without modifying the global namespace
@@ -12,30 +13,152 @@ const { extractFrom, mightContain } = JSONExtensions.patches;
12
13
  */
13
14
  export const SymbolExtensions = new Patch(Symbol, {
14
15
  /**
15
- * Creates a new Symbol with the given name and optional data. If data
16
- * is provided, it will be stringified and appended to the symbol's
17
- * name. This method is useful for creating unique symbols that carry
18
- * additional metadata.
16
+ * Adds a new symbol to the Symkeys instance with the given name and
17
+ * associated data.
19
18
  *
20
- * @param {string} name The name of the symbol.
21
- * @param {*} [data] Optional data to be associated with the symbol.
22
- * @returns {symbol} A new symbol created with Symbol.for(), using the
23
- * provided name and stringified data (if provided).
19
+ * This method generates a unique symbol based on the provided name,
20
+ * optional domain, separator, and token. It also allows embedding
21
+ * additional data into the symbol's name.
22
+ *
23
+ * @param {string} named - The base name for the new symbol.
24
+ * @param {Object} options - Additional options for the symbol.
25
+ * @param {*} [options.associate={}] - Data to associate with the symbol.
26
+ * @param {Object} [options.embed] - Optional data to embed in the symbol.
27
+ * @param {string} [options.useDomain] - Optional domain to include in the
28
+ * symbol's name.
29
+ * @param {string} [options.useSeparator] - Optional separator to use in
30
+ * the symbol's name.
31
+ * @param {string} [options.useToken] - Optional token to use for the
32
+ * symbol. If not provided, a random token is generated.
33
+ * @returns {Symbol} The newly created symbol.
24
34
  *
25
35
  * @example
26
- * const symbolWithData = Symbol.withData('mySymbol', { foo: 'bar' })
27
- * console.log(symbolWithData.toString())
28
- * // Output: "Symbol(mySymbol {"foo":"bar"})"
36
+ * // Add a symbol with associated data
37
+ * const mySymbol = SymbolExtensions.add('myIdentifier', {
38
+ * associate: { foo: 'bar' },
39
+ * embed: { baz: 'qux' },
40
+ * useDomain: 'exampleDomain',
41
+ * useSeparator: '-',
42
+ * useToken: 'customToken',
43
+ * })
44
+ * console.log(mySymbol)
45
+ * // Symbol(@exampleDomain-myIdentifier {"baz":"qux"} #customToken)
46
+ */
47
+ add(named, { associate = {}, embed, useToken, useDomain, useSeparator }) {
48
+ return this.keys.add(named, {
49
+ associate, embed, useToken, useDomain, useSeparator,
50
+ });
51
+ },
52
+ /**
53
+ * Deletes the data associated with a given symbol from the Symkeys
54
+ * instance.
55
+ *
56
+ * This method allows removal of the data that has been associated with a
57
+ * particular symbol in the Symkeys instance. It is useful when you want
58
+ * to clean up or remove stored information associated with a symbol.
59
+ *
60
+ * @param {Symbol} forSymbol - The symbol whose associated data is to be
61
+ * deleted.
62
+ * @param {*} [replaceWith=undefined] - Optionally, if `replaceWith` is
63
+ * not `undefined`, a new value can be set after the original is deleted
64
+ * @returns {boolean} - Returns true if an element in the Symkeys existed
65
+ * and has been removed, or false if the element does not exist
29
66
  *
30
67
  * @example
31
- * const symbolWithoutData = Symbol.withData('mySymbol')
32
- * console.log(symbolWithoutData.toString())
33
- * // Output: "Symbol(mySymbol)"
68
+ * // Assuming 'mySymbol' is a symbol that has been added to the Symkeys
69
+ * // with associated data
70
+ * const isDeleted = Symbol.deleteData(mySymbol)
71
+ * console.log(isDeleted) // Output: true if data was deleted, false
72
+ *
73
+ * @example
74
+ * // Deleting data and replacing it with a new value
75
+ * const mySymbol = Symbol.for('mySymbol')
76
+ * Symbol.setData(mySymbol, { foo: 'bar' })
77
+ * Symbol.deleteData(mySymbol, { newFoo: 'newBar' })
78
+ * console.log(Symbol.keys.data(mySymbol)) // Output: { newFoo: 'newBar' }
34
79
  */
35
- withData(name, data) {
36
- return data !== undefined
37
- ? Symbol.for(`${name} ${JSON.stringify(data)}`)
38
- : Symbol.for(name);
80
+ deleteData(forSymbol, replaceWith = undefined) {
81
+ return this.keys.deleteData(forSymbol, replaceWith);
82
+ },
83
+ /**
84
+ * Evaluates a key or value and generates a shared symbol key based on
85
+ * the provided object name and owner name.
86
+ *
87
+ * This method takes a key or value, an object name, and an object owner
88
+ * name as parameters. It determines the type of each parameter and
89
+ * constructs a token string by concatenating the owner name, object
90
+ * name, and key/value (if they are valid object keys).
91
+ *
92
+ * The token string is then used to create a shared symbol key using the
93
+ * `sharedKey` method of the current instance. The shared symbol key is
94
+ * returned along with the token as associated data.
95
+ *
96
+ * @param {string|Symbol} keyOrValue - The key or value to evaluate.
97
+ * @param {string|Symbol} objectName - The name of the object associated
98
+ * with the key or value.
99
+ * @param {string|Function|Object} objectOwnerName - The name of the
100
+ * owner of the object.
101
+ * @returns {Symbol} The shared symbol key generated based on the
102
+ * provided parameters.
103
+ *
104
+ * @example
105
+ * const symbolKey = SymbolExtensions.evalKey('myKey', 'myObject', 'myOwner')
106
+ * console.log(symbolKey)
107
+ * // Output: Symbol(@nejs.internal.refkey:myOwner.myObject.myKey)
108
+ *
109
+ * @example
110
+ * const symbolKey = SymbolExtensions.evalKey(
111
+ * 'myValue', () => {}, { [Symbol.toStringTag]: 'myOwner' }
112
+ * )
113
+ * console.log(symbolKey)
114
+ * // Output: Symbol(@nejs.internal.refkey:myOwner.myValue)
115
+ */
116
+ evalKey(keyOrValue, objectName, objectOwnerName) {
117
+ const is = {
118
+ string(v) { return typeof v === 'string'; },
119
+ func(v) { return typeof v === 'function'; },
120
+ object(v) { return typeof v === 'object'; },
121
+ objKey(v) { return ['symbol', 'string'].some(k => typeof v === k); },
122
+ };
123
+ is.key = is.objKey(keyOrValue);
124
+ const ownerName = ((is.string(objectOwnerName) && objectOwnerName) ||
125
+ (is.func(objectOwnerName) && objectOwnerName?.name) ||
126
+ (is.object(objectOwnerName) && objectOwnerName?.[Symbol.toStringTag]) ||
127
+ undefined);
128
+ const token = [
129
+ ownerName && `${ownerName}.` || '',
130
+ is.objKey(objectName) && `${objectName}.` || '',
131
+ is.objKey(keyOrValue) && `${keyOrValue}`,
132
+ ].join('');
133
+ return this.sharedKey(`internal.refkey:${token}`, { token });
134
+ },
135
+ /**
136
+ * Checks if the Symkeys instance has data associated with a given
137
+ * symbol
138
+ *
139
+ * This method checks if the Symkeys instance has any data associated
140
+ * with the provided symbol. It is useful when you need to verify if
141
+ * data exists for a particular symbol before attempting to retrieve
142
+ * or manipulate it
143
+ *
144
+ * @param {Symbol} forSymbol - The symbol to check for associated data
145
+ * @returns {boolean} Returns true if data exists for the symbol,
146
+ * false otherwise
147
+ *
148
+ * @example
149
+ * // Assuming 'mySymbol' is a symbol that has been added to the
150
+ * // Symkeys with associated data
151
+ * const hasData = Symbol.hasData(mySymbol)
152
+ * console.log(hasData) // Output: true
153
+ *
154
+ * @example
155
+ * // Assuming 'nonExistentSymbol' is a symbol that has not been added
156
+ * // to the Symkeys
157
+ * const hasData = Symbol.hasData(nonExistentSymbol)
158
+ * console.log(hasData) // Output: false
159
+ */
160
+ hasData(forSymbol) {
161
+ return this.keys.hasData(forSymbol);
39
162
  },
40
163
  /**
41
164
  * The `isSymbol` method does exactly what one would it expect. It returns
@@ -116,7 +239,110 @@ export const SymbolExtensions = new Patch(Symbol, {
116
239
  * kOriginal.data.original = Object.prototype // ...and...
117
240
  * kOriginal.data = [Object.prototype, Array.prototype] // ...both work
118
241
  */
119
- keys: new Symkeys('nejs'),
242
+ get keys() { return symkeys; },
243
+ /**
244
+ * Sets the data associated with a given symbol in the Symkeys
245
+ * instance.
246
+ *
247
+ * This method allows you to store data associated with a specific
248
+ * symbol in the Symkeys instance. It is useful when you want to
249
+ * attach additional information or metadata to a symbol for later
250
+ * retrieval.
251
+ *
252
+ * @param {Symbol} forSymbol - The symbol for which to set the
253
+ * associated data.
254
+ * @param {*} value - The data to be associated with the symbol.
255
+ *
256
+ * @example
257
+ * // Create a symbol
258
+ * const mySymbol = Symbol.for('mySymbol')
259
+ *
260
+ * // Set data for the symbol
261
+ * Symbol.setData(mySymbol, { foo: 'bar' })
262
+ *
263
+ * // Retrieve the data associated with the symbol
264
+ * const data = Symbol.keys.data(mySymbol)
265
+ * console.log(data) // Output: { foo: 'bar' }
266
+ */
267
+ setData(forSymbol, value) {
268
+ this.keys.setData(forSymbol, value);
269
+ },
270
+ /**
271
+ * Creates or retrieves a shared symbol key with the given name and
272
+ * optional associated data.
273
+ *
274
+ * This method generates a shared symbol key using the provided name
275
+ * and optional parameters. If the symbol already exists in the
276
+ * Symkeys's internal map, it updates the associated data if provided.
277
+ * Otherwise, it creates a new symbol with the specified parameters.
278
+ *
279
+ * @param {string} named - The name to use for the shared symbol key.
280
+ * @param {Object} options - Optional parameters for the shared symbol key.
281
+ * @param {Object} [options.associate] - Data to associate with the symbol.
282
+ * @param {Object} [options.embed] - Data to embed in the symbol's name.
283
+ * @param {string} [options.useDomain] - Domain to include in the symbol's name.
284
+ * @param {string} [options.useSeparator] - Separator to use in the symbol's name.
285
+ * @returns {Symbol} The shared symbol key.
286
+ *
287
+ * @example
288
+ * // Create or retrieve a shared symbol key with associated data
289
+ * const sharedSymbol = Symbol.sharedKey('mySharedKey', {
290
+ * associate: { foo: 'bar' },
291
+ * embed: { baz: 'qux' },
292
+ * useDomain: 'exampleDomain',
293
+ * useSeparator: '-',
294
+ * })
295
+ * console.log(sharedSymbol)
296
+ * // Output: Symbol(@exampleDomain-mySharedKey {"baz":"qux"} #shared)
297
+ */
298
+ sharedKey(named, options) {
299
+ return this.keys.sharedKey(named, options);
300
+ },
301
+ /**
302
+ * A symbol used as the storage key for the single instance of a
303
+ * singleton.
304
+ *
305
+ * This getter returns a unique symbol created using `Symbol.for()`
306
+ * with the string 'singleton'. The symbol is used to store and
307
+ * retrieve the single instance of a singleton object.
308
+ *
309
+ * @type {symbol}
310
+ * @readonly
311
+ *
312
+ * @example
313
+ * const singletonKey = Symbol.singleton
314
+ * const singletonInstance = {}
315
+ * global[singletonKey] = singletonInstance
316
+ */
317
+ get singleton() {
318
+ return Symbol.for('singleton');
319
+ },
320
+ /**
321
+ * Creates a new Symbol with the given name and optional data. If data
322
+ * is provided, it will be stringified and appended to the symbol's
323
+ * name. This method is useful for creating unique symbols that carry
324
+ * additional metadata.
325
+ *
326
+ * @param {string} name The name of the symbol.
327
+ * @param {*} [data] Optional data to be associated with the symbol.
328
+ * @returns {symbol} A new symbol created with Symbol.for(), using the
329
+ * provided name and stringified data (if provided).
330
+ *
331
+ * @example
332
+ * const symbolWithData = Symbol.withData('mySymbol', { foo: 'bar' })
333
+ * console.log(symbolWithData.toString())
334
+ * // Output: "Symbol(mySymbol {"foo":"bar"})"
335
+ *
336
+ * @example
337
+ * const symbolWithoutData = Symbol.withData('mySymbol')
338
+ * console.log(symbolWithoutData.toString())
339
+ * // Output: "Symbol(mySymbol)"
340
+ */
341
+ withData(name, data) {
342
+ return data !== undefined
343
+ ? Symbol.for(`${name} ${JSON.stringify(data)}`)
344
+ : Symbol.for(name);
345
+ },
120
346
  });
121
347
  export const SymbolPrototypeExtensions = new Patch(Symbol.prototype, {
122
348
  [Patch.kMutablyHidden]: {
@@ -184,7 +410,22 @@ export const SymbolPrototypeExtensions = new Patch(Symbol.prototype, {
184
410
  return possibleData;
185
411
  }
186
412
  }
187
- return extractFrom(string);
413
+ let result = undefined;
414
+ let revertToggle = false;
415
+ if (!JSONExtensions.applied) {
416
+ JSONToggle.start();
417
+ revertToggle = true;
418
+ }
419
+ if (JSON.mightContain(this.description)) {
420
+ try {
421
+ result = JSON.extractFrom(this.description);
422
+ }
423
+ catch (ignore) { }
424
+ }
425
+ if (revertToggle) {
426
+ JSONToggle.stop();
427
+ }
428
+ return result;
188
429
  },
189
430
  /**
190
431
  * Sets the data associated with a symbol.
@@ -226,9 +467,95 @@ export const SymbolPrototypeExtensions = new Patch(Symbol.prototype, {
226
467
  * Symkeys.getData(symWithData) // returns { name: 'Jane', age: 26 }
227
468
  */
228
469
  set data(value) {
229
- if (Symkeys.isSymkey(this) && Symkeys.hasData(this)) {
470
+ if (Symkeys.isSymkey(this)) {
230
471
  Symbol.keys.setData(this, value);
231
472
  }
473
+ else {
474
+ console.error(`The symbol ${this.description} is not a symkey`);
475
+ }
476
+ },
477
+ /**
478
+ * Retrieves the embedded JSON data from the symbol's description.
479
+ *
480
+ * This getter method checks if the symbol's description might contain
481
+ * JSON data. If the description contains JSON, it parses and returns
482
+ * the first JSON object found. If no JSON is found, it returns
483
+ * `undefined`.
484
+ *
485
+ * @returns {Object|undefined} - The parsed JSON object if found,
486
+ * otherwise `undefined`.
487
+ *
488
+ * @example
489
+ * const sym = Symbol.for('example {"name":"Brie"}')
490
+ * console.log(sym.embeddedJSON) // Output: { name: 'Brie' }
491
+ *
492
+ * @example
493
+ * const sym = Symbol('noJSON')
494
+ * console.log(sym.embeddedJSON) // Output: undefined
495
+ */
496
+ get embeddedJSON() {
497
+ return JSONToggle.perform((toggle, patch) => {
498
+ let [mightHave, index, parsed] = JSON.mightContain(this.description, true);
499
+ if (mightHave) {
500
+ return parsed?.[0];
501
+ }
502
+ return undefined;
503
+ });
504
+ },
505
+ /**
506
+ * Parses the embedded JSON data from the symbol's description.
507
+ *
508
+ * This getter method first retrieves the embedded JSON data using the
509
+ * `embeddedJSON` getter. If JSON data is found, it attempts to parse
510
+ * the JSON string and return the resulting object. If parsing fails,
511
+ * an error is logged to the console.
512
+ *
513
+ * @returns {Object|undefined} - The parsed JSON object if parsing is
514
+ * successful, otherwise `undefined`.
515
+ *
516
+ * @example
517
+ * const sym = Symbol.for('example {"name":"Brie"}')
518
+ * console.log(sym.embeddedJSONParsed) // Output: { name: 'Brie' }
519
+ *
520
+ * @example
521
+ * const sym = Symbol('invalidJSON')
522
+ * console.log(sym.embeddedJSONParsed) // Output: undefined
523
+ */
524
+ get embeddedJSONParsed() {
525
+ const json = this.embeddedJSON;
526
+ if (json) {
527
+ try {
528
+ return JSON.parse(json);
529
+ }
530
+ catch (error) {
531
+ console.error(`Failed to parse json: "${json}"`);
532
+ }
533
+ }
534
+ return undefined;
535
+ },
536
+ /**
537
+ * Checks if the current symbol is a Symkey.
538
+ *
539
+ * This getter method determines whether the current symbol instance
540
+ * conforms to the Symkey pattern. A Symkey is a symbol that matches
541
+ * a specific pattern defined in the Symkeys class.
542
+ *
543
+ * @type {boolean}
544
+ * @readonly
545
+ *
546
+ * @returns {boolean} - Returns true if the symbol is a Symkey,
547
+ * otherwise false.
548
+ *
549
+ * @example
550
+ * const sym = Symbol('@nejs.prototype #rwiy2o905d')
551
+ * console.log(sym.isSymkey) // Output: true
552
+ *
553
+ * @example
554
+ * const sym = Symbol('regularSymbol')
555
+ * console.log(sym.isSymkey) // Output: false
556
+ */
557
+ get isSymkey() {
558
+ return Symkeys.isSymkey(this);
232
559
  },
233
560
  /**
234
561
  * Checks if the symbol might have embedded JSON data.
@@ -249,8 +576,157 @@ export const SymbolPrototypeExtensions = new Patch(Symbol.prototype, {
249
576
  * console.log(sym.mightHaveEmbeddedJSON) // Output: false
250
577
  */
251
578
  get mightHaveEmbeddedJSON() {
252
- return mightContain(this.description) && typeof this.data === 'function';
579
+ return JSONToggle.perform((toggle, patch) => {
580
+ return JSON.mightContain(this.description);
581
+ });
582
+ },
583
+ /**
584
+ * Retrieves the reference object associated with the symbol.
585
+ *
586
+ * This getter method checks if the symbol's description matches a
587
+ * specific pattern using a regular expression. If a match is found,
588
+ * it extracts the token from the description and constructs a shared
589
+ * key using the token. It then retrieves the symbol associated with
590
+ * the shared key using the `sharedKey` method of the
591
+ * `SymbolExtensions.patches` object. Finally, it returns the data
592
+ * associated with the retrieved symbol.
593
+ *
594
+ * If no match is found or the retrieved symbol has no associated
595
+ * data, `undefined` is returned.
596
+ *
597
+ * @type {any}
598
+ * @readonly
599
+ *
600
+ * @example
601
+ * const sym = Symbol.for('@nejs.internal.refkey:example #shared')
602
+ * console.log(sym.refObject) // Output: the data associated with the
603
+ * // 'internal.refkey:example' shared key
604
+ *
605
+ * @example
606
+ * const sym = Symbol('no_match')
607
+ * console.log(sym.refObject) // Output: undefined
608
+ */
609
+ get refObject() {
610
+ const re = /@nejs.internal.refkey:(\S+) #shared/.exec(this.description);
611
+ if (re?.[1]) {
612
+ const [_match, token] = re;
613
+ const shareKey = `internal.refkey:${token}`;
614
+ const symbol = SymbolExtensions.patches.sharedKey(shareKey);
615
+ return symbol?.data;
616
+ }
617
+ return undefined;
253
618
  },
254
- }
619
+ /**
620
+ * Returns a formatted string representation of the symbol's
621
+ * description, highlighting any embedded JSON data.
622
+ *
623
+ * This getter method checks if the symbol's description contains
624
+ * JSON data and formats it for better readability. It uses the
625
+ * `sgr` function from the `String` object to apply color formatting
626
+ * to the output.
627
+ *
628
+ * If the symbol's description contains JSON data longer than 30
629
+ * characters, it truncates the JSON data and displays an ellipsis
630
+ * in the middle. The JSON data is highlighted using the 'di' color
631
+ * code.
632
+ *
633
+ * @type {string}
634
+ * @readonly
635
+ *
636
+ * @example
637
+ * const sym = Symbol.for('mySymbol {"name":"John Doe"}')
638
+ * console.log(sym.sgrString)
639
+ * // Output: Symbol.for(mySymbol {"name":"John ...hn Doe"})
640
+ *
641
+ * @example
642
+ * const sym = Symbol('mySymbol')
643
+ * console.log(sym.sgrString)
644
+ * // Output: mySymbol
645
+ */
646
+ get sgrString() {
647
+ let { sgr } = String;
648
+ if (!sgr) {
649
+ sgr = (string, ...args) => string;
650
+ }
651
+ const response = JSONToggle.perform((toggle, patch) => {
652
+ let [mightContain, index, jsonResponse] = JSON.mightContain(this.description, true);
653
+ let jsonText = jsonResponse?.[0];
654
+ if (mightContain) {
655
+ if (~index && jsonText && jsonText.length > 30) {
656
+ let desc = this.description;
657
+ let newDescription = [
658
+ sgr(`Symbol.for(${desc.slice(0, index)}`, 'green'),
659
+ sgr(jsonText.slice(0, 10), 'di'),
660
+ '...',
661
+ sgr(jsonText.slice(-5), 'di'),
662
+ sgr(`${desc.slice(index + jsonText.length + 1)})`, 'green')
663
+ ].join('');
664
+ return `${newDescription}`;
665
+ }
666
+ }
667
+ });
668
+ return response ?? this.description;
669
+ },
670
+ /**
671
+ * Custom inspect method for Node.js util.inspect.
672
+ *
673
+ * NOTE: this will only apply if looking at an instance of Symbol,
674
+ * sadly; {@see SymbolPrototypeExtensions.instance}
675
+ *
676
+ * This method is used by Node.js util.inspect to provide a custom
677
+ * representation of the symbol when inspected. It checks if the
678
+ * symbol's description might contain JSON data and if so, it
679
+ * truncates the JSON data in the description to a maximum of 30
680
+ * characters and formats the output with colors using the `sgr`
681
+ * function from the `String` object.
682
+ *
683
+ * @param {number} depth - The current depth of the recursive
684
+ * inspection.
685
+ * @param {Object} options - The options object passed to
686
+ * util.inspect.
687
+ * @param {Function} inspect - The original util.inspect function.
688
+ *
689
+ * @returns {string} - The formatted representation of the symbol.
690
+ *
691
+ * @example
692
+ * const sym = Symbol.for('fun {"name":"John Doe"}')
693
+ * console.log(util.inspect(sym))
694
+ * // Output: Symbol.for(fun {"name":"John ...hn Doe"})
695
+ */
696
+ [Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
697
+ let revert = false;
698
+ let detail = undefined;
699
+ let { sgr } = String;
700
+ if (!sgr) {
701
+ sgr = (string, ...args) => string;
702
+ }
703
+ if (!JSONExtensions.applied) {
704
+ JSONToggle.start();
705
+ revert = true;
706
+ }
707
+ if ((detail = JSON.mightContain(this.description, true))) {
708
+ let jsonText = detail[2][0];
709
+ let index = detail[1];
710
+ if (~index && jsonText && jsonText.length > 30) {
711
+ let desc = this.description;
712
+ let newDescription = [
713
+ sgr(`Symbol.for(${desc.slice(0, index)}`, 'green'),
714
+ sgr(jsonText.slice(0, 10), 'di'),
715
+ '...',
716
+ sgr(jsonText.slice(-5), 'di'),
717
+ sgr(`${desc.slice(index + jsonText.length + 1)})`, 'green'),
718
+ ].join('');
719
+ if (revert) {
720
+ JSONToggle.stop();
721
+ }
722
+ return `${newDescription}`;
723
+ }
724
+ }
725
+ if (revert) {
726
+ JSONToggle.stop();
727
+ }
728
+ return inspect(this, { colors: true });
729
+ },
730
+ },
255
731
  });
256
732
  //# sourceMappingURL=symbol.extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"symbol.extensions.js","sourceRoot":"","sources":["../../src/symbol.extensions.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symbol.extensions.js","sourceRoot":"","sources":["../../src/symbol.extensions.js"],"names":[],"mappings":"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"}