@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
@@ -0,0 +1,86 @@
1
+ export class Property {
2
+ /**
3
+ * Creates an accessor property with customizable getter and setter functions.
4
+ *
5
+ * This method offers flexible ways to define accessor properties, including
6
+ * support for storage-based getters and setters. It can handle various input
7
+ * formats, making it versatile for different use cases.
8
+ *
9
+ * @param {string} name - The name of the accessor property.
10
+ * @param {Object} accessors - Object containing getter and/or setter functions.
11
+ * @param {Function} [accessors.get] - Getter function for the property.
12
+ * @param {Function} [accessors.set] - Setter function for the property.
13
+ * @param {Object} [accessors.prototype] - Prototype object for getter/setter.
14
+ * @param {Object} [options] - Additional options for the accessor property.
15
+ * @param {boolean} [options.configurable=true] - Whether property is configurable.
16
+ * @param {boolean} [options.enumerable=true] - Whether property is enumerable.
17
+ * @param {Object} [options.storage] - Storage object for getter/setter closures.
18
+ * @returns {Property} A new Property instance representing the accessor.
19
+ * @throws {TypeError} If no name, getter, or setter is provided.
20
+ *
21
+ * @example
22
+ * // Basic usage
23
+ * Property.accessor('color', {
24
+ * get() { return this._color; },
25
+ * set(value) { this._color = value; }
26
+ * });
27
+ *
28
+ * @example
29
+ * // Using storage
30
+ * Property.accessor('keyword', {
31
+ * get(storage) { return () => storage.keyword; },
32
+ * set(storage) { return (value) => { storage.keyword = value; } }
33
+ * }, { storage: { keyword: 'initial' } });
34
+ *
35
+ * @example
36
+ * // Using named getter function
37
+ * Property.accessor('color', function get() { return 'red' })
38
+ *
39
+ * @example
40
+ * // Using prototype
41
+ * const ColorAccessors = {
42
+ * red: { get() { return this._red; } }
43
+ * };
44
+ * Property.accessor('red', ColorAccessors.red);
45
+ */
46
+ static accessor(name: string, { get, set, prototype }: {
47
+ get?: Function | undefined;
48
+ set?: Function | undefined;
49
+ prototype?: Object | undefined;
50
+ }, { configurable, enumerable, storage }?: {
51
+ configurable?: boolean | undefined;
52
+ enumerable?: boolean | undefined;
53
+ storage?: Object | undefined;
54
+ } | undefined): Property;
55
+ static data(name: any, value: any, { writable, configurable, enumerable }?: {
56
+ writable: any;
57
+ configurable: any;
58
+ enumerable: any;
59
+ }): Property;
60
+ static from(object: any, name: any): Property;
61
+ static get is(): {
62
+ object(value: any): any;
63
+ descriptor(object: any): boolean;
64
+ };
65
+ constructor(key: any, descriptor: any);
66
+ key: string | symbol;
67
+ set descriptor(descriptor: {
68
+ enumerable: any;
69
+ configurable: any;
70
+ });
71
+ get descriptor(): {
72
+ enumerable: any;
73
+ configurable: any;
74
+ };
75
+ apply(toObject: any, asKey: any): any;
76
+ get is(): {
77
+ readonly accessor: boolean;
78
+ readonly data: boolean;
79
+ };
80
+ toString(colors?: boolean, { key, descriptor }?: {
81
+ key: any;
82
+ descriptor: any;
83
+ }): string;
84
+ }
85
+ export const PropertyExtensions: Extension;
86
+ import { Extension } from '@nejs/extension';
@@ -0,0 +1,280 @@
1
+ import { Extension } from '@nejs/extension';
2
+ export class Property {
3
+ constructor(key, descriptor) {
4
+ if (key.startsWith(':'))
5
+ key = Symbol.for(key.slice(1));
6
+ if (typeof key !== 'string' && typeof key !== 'symbol') {
7
+ throw new TypeError('Key or symbol or :symbol must be supplied!');
8
+ }
9
+ this.key = key;
10
+ if (!Property.is.descriptor(descriptor)) {
11
+ this.descriptor = {
12
+ value: descriptor,
13
+ writable: true,
14
+ configurable: true,
15
+ enumerable: true,
16
+ };
17
+ }
18
+ else {
19
+ this.descriptor = descriptor;
20
+ }
21
+ }
22
+ apply(toObject, asKey) {
23
+ if (!toObject || !['object', 'function'].some(k => k == typeof toObject))
24
+ return;
25
+ return Object.defineProperty(toObject, asKey ?? this.key, this.descriptor);
26
+ }
27
+ get descriptor() {
28
+ const baseline = { configurable: true, enumerable: false };
29
+ const result = {
30
+ enumerable: this.meta.enumerable,
31
+ configurable: this.meta.configurable,
32
+ };
33
+ if (this.is.accessor) {
34
+ result.get = this.meta.accessor.get;
35
+ result.set = this.meta.accessor.set;
36
+ }
37
+ else {
38
+ result.value = this.meta.data.value;
39
+ result.writable = this.meta.data.writable;
40
+ }
41
+ return Object.defineProperties(result, {
42
+ make: {
43
+ ...baseline,
44
+ get() {
45
+ const self = this;
46
+ return {
47
+ get enumerable() { self.enumerable = true; return self; },
48
+ get hidden() { self.enumerable = false; return self; },
49
+ get writable() { self.writable = true; return self; },
50
+ get readonly() { self.writable = false; return self; },
51
+ get configurable() { self.configurable = true; return self; },
52
+ get immutable() { self.configurable = false; return self; },
53
+ };
54
+ }
55
+ },
56
+ is: {
57
+ ...baseline,
58
+ get() {
59
+ const self = this;
60
+ return {
61
+ get accessor() { return self.is.accssor; },
62
+ get data() { return self.is.data; }
63
+ };
64
+ }
65
+ },
66
+ });
67
+ }
68
+ set descriptor(descriptor) {
69
+ const { is } = this.constructor;
70
+ if (!is.descriptor(descriptor))
71
+ return;
72
+ this.meta.configurable = descriptor.configurable ?? true;
73
+ this.meta.enumerable = descriptor.enumerable ?? true;
74
+ if (Reflect.has(descriptor, 'get') || Reflect.has(descriptor, 'set')) {
75
+ const { get, set } = descriptor;
76
+ if (get !== undefined)
77
+ this.meta.accessor.get = get;
78
+ if (set !== undefined)
79
+ this.meta.accessor.set = set;
80
+ }
81
+ else {
82
+ const { value, writable } = descriptor;
83
+ this.meta.data.value = value;
84
+ this.meta.data.writable = writable ?? true;
85
+ }
86
+ }
87
+ get is() {
88
+ const self = this;
89
+ return {
90
+ get accessor() {
91
+ return !!(self.meta.accessor.get ||
92
+ self.meta.accessor.set);
93
+ },
94
+ get data() {
95
+ return !!!this.accessor;
96
+ },
97
+ };
98
+ }
99
+ toString(colors = false, { key, descriptor } = {}) {
100
+ const bold = s => colors ? `\x1b[1m${s}\x1b[22m` : s;
101
+ const dim = s => colors ? `\x1b[2m${s}\x1b[22m` : s;
102
+ const red = s => colors ? `\x1b[31m${s}\x1b[39m` : s;
103
+ const green = s => colors ? `\x1b[32m${s}\x1b[39m` : s;
104
+ const blue = s => colors ? `\x1b[34m${s}\x1b[39m` : s;
105
+ if (!key)
106
+ ({ key } = this);
107
+ if (!descriptor || !Property.is.descriptor(descriptor))
108
+ ({ descriptor } = this);
109
+ const buffer = [`${bold(key)} { `];
110
+ const keyPresent = (object) => (key) => Reflect.has(object, key);
111
+ const eqeq = (value, compare = (a, b) => a === b) => (element) => compare(element, value);
112
+ if (['get', 'set'].some(keyPresent(descriptor))) {
113
+ if (descriptor.get) {
114
+ buffer.push(blue('getter'));
115
+ if (descriptor.set) {
116
+ buffer.push(bold('|'));
117
+ }
118
+ }
119
+ if (descriptor.set) {
120
+ buffer.push(blue('setter'));
121
+ }
122
+ }
123
+ else {
124
+ buffer.push(green('value'));
125
+ buffer.push(bold('|'));
126
+ buffer.push(descriptor.writable ? green('writable') : red('readonly'));
127
+ }
128
+ buffer.push(' ');
129
+ buffer.push(descriptor.configurable ? green('mutable') : red('immuatable'));
130
+ buffer.push(' ');
131
+ buffer.push(descriptor.enumerable ? green('visible') : red('hidden'));
132
+ buffer.push(' }');
133
+ return buffer.join('');
134
+ }
135
+ [Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
136
+ return this.toString(true);
137
+ }
138
+ /**
139
+ * Creates an accessor property with customizable getter and setter functions.
140
+ *
141
+ * This method offers flexible ways to define accessor properties, including
142
+ * support for storage-based getters and setters. It can handle various input
143
+ * formats, making it versatile for different use cases.
144
+ *
145
+ * @param {string} name - The name of the accessor property.
146
+ * @param {Object} accessors - Object containing getter and/or setter functions.
147
+ * @param {Function} [accessors.get] - Getter function for the property.
148
+ * @param {Function} [accessors.set] - Setter function for the property.
149
+ * @param {Object} [accessors.prototype] - Prototype object for getter/setter.
150
+ * @param {Object} [options] - Additional options for the accessor property.
151
+ * @param {boolean} [options.configurable=true] - Whether property is configurable.
152
+ * @param {boolean} [options.enumerable=true] - Whether property is enumerable.
153
+ * @param {Object} [options.storage] - Storage object for getter/setter closures.
154
+ * @returns {Property} A new Property instance representing the accessor.
155
+ * @throws {TypeError} If no name, getter, or setter is provided.
156
+ *
157
+ * @example
158
+ * // Basic usage
159
+ * Property.accessor('color', {
160
+ * get() { return this._color; },
161
+ * set(value) { this._color = value; }
162
+ * });
163
+ *
164
+ * @example
165
+ * // Using storage
166
+ * Property.accessor('keyword', {
167
+ * get(storage) { return () => storage.keyword; },
168
+ * set(storage) { return (value) => { storage.keyword = value; } }
169
+ * }, { storage: { keyword: 'initial' } });
170
+ *
171
+ * @example
172
+ * // Using named getter function
173
+ * Property.accessor('color', function get() { return 'red' })
174
+ *
175
+ * @example
176
+ * // Using prototype
177
+ * const ColorAccessors = {
178
+ * red: { get() { return this._red; } }
179
+ * };
180
+ * Property.accessor('red', ColorAccessors.red);
181
+ */
182
+ static accessor(name, { get, set, prototype }, { configurable, enumerable, storage } = {}) {
183
+ if (!get && !set && prototype) {
184
+ const constructor = prototype?.constructor;
185
+ if (constructor?.name === 'get') {
186
+ get = constructor;
187
+ }
188
+ else if (constructor?.name === 'set') {
189
+ set = constructor;
190
+ }
191
+ }
192
+ if (get && storage && get.length == 1) {
193
+ get = get(storage);
194
+ }
195
+ if (set && storage && set.length == 1) {
196
+ set = set(storage);
197
+ }
198
+ if (!name && !get && !set)
199
+ throw new TypeError('Cannot create accessor');
200
+ configurable ??= true;
201
+ enumerable ??= true;
202
+ return new Property(name, { get, set, configurable, enumerable });
203
+ }
204
+ static data(name, value, { writable, configurable, enumerable } = {}) {
205
+ if (!name)
206
+ throw new TypeError('Cannot create data property without name');
207
+ writable ??= true;
208
+ configurable ??= true;
209
+ enumerable ??= true;
210
+ return new Property(name, { value, writable, configurable, enumerable });
211
+ }
212
+ static from(object, name) {
213
+ const descriptor = Object.getOwnPropertyDescriptor(object, name);
214
+ return new Property(name, descriptor);
215
+ }
216
+ static get is() {
217
+ return {
218
+ object(value) {
219
+ return value && ['object', 'function'].some(k => k == typeof value);
220
+ },
221
+ descriptor(object) {
222
+ if (!Property.is.object(object)) {
223
+ return false;
224
+ }
225
+ const present = element => Reflect.has(object, element);
226
+ const props = {
227
+ base: ['configurable', 'enumerable'],
228
+ data: ['writable', 'value'],
229
+ accessor: ['get', 'set'],
230
+ };
231
+ if (Object.getOwnPropertyNames(object).length > 4)
232
+ return false;
233
+ if (props.data.some(present) && props.accessor.some(present))
234
+ return false;
235
+ if (props.base.some(present))
236
+ return true;
237
+ if (props.data.some(present))
238
+ return true;
239
+ if (props.accessor.some(present))
240
+ return true;
241
+ return false;
242
+ }
243
+ };
244
+ }
245
+ static {
246
+ const storage = Object.assign(Object.create(null), {
247
+ key: undefined,
248
+ meta: {
249
+ enumerable: true,
250
+ configurable: true,
251
+ accessor: {
252
+ get: undefined,
253
+ set: undefined
254
+ },
255
+ data: {
256
+ value: undefined,
257
+ writable: true
258
+ },
259
+ },
260
+ });
261
+ basic_accessor(this.prototype, 'key', storage.key, storage);
262
+ basic_accessor(this.prototype, 'meta', storage.meta, storage);
263
+ }
264
+ }
265
+ export const PropertyExtensions = new Extension(Property);
266
+ function basic_accessor(prototype, key, initialValue, storage = {}) {
267
+ storage[key] = initialValue;
268
+ Object.defineProperty(prototype, key, {
269
+ get() {
270
+ return storage[key];
271
+ },
272
+ set(value) {
273
+ storage[key] = value;
274
+ },
275
+ enumerable: true,
276
+ configurable: true,
277
+ });
278
+ return Object.getOwnPropertyDescriptor(prototype, key);
279
+ }
280
+ //# sourceMappingURL=property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.js","sourceRoot":"","sources":["../../../src/classes/property.js"],"names":[],"mappings":"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"}
@@ -112,21 +112,78 @@ export class Symkeys {
112
112
  */
113
113
  constructor(domain?: string, separator?: string);
114
114
  /**
115
- * Adds a new entry to the Symkeys with a unique symbol based on the provided
116
- * name and associates it with the given data.
115
+ * Adds a new symbol to the Symkeys instance with the given name and
116
+ * associated data.
117
+ *
118
+ * This method generates a unique symbol based on the provided name,
119
+ * optional domain, separator, and token. It also allows embedding
120
+ * additional data into the symbol's name.
121
+ *
122
+ * @param {string} named - The base name for the new symbol.
123
+ * @param {Object} options - Additional options for the symbol.
124
+ * @param {*} [options.associate={}] - Data to associate with the symbol.
125
+ * @param {Object} [options.embed] - Optional data to embed in the symbol.
126
+ * @param {string} [options.useDomain] - Optional domain to include in the
127
+ * symbol's name.
128
+ * @param {string} [options.useSeparator] - Optional separator to use in
129
+ * the symbol's name.
130
+ * @param {string} [options.useToken] - Optional token to use for the
131
+ * symbol. If not provided, a random token is generated.
132
+ * @returns {Symbol} The newly created symbol.
117
133
  *
118
- * @param named - The base name for the symbol to be created.
119
- * @param [associatedData={}] - The data to associate with the symbol.
120
- * @returns The unique symbol created for the entry.
134
+ * @example
135
+ * // Add a symbol with associated data
136
+ * const mySymbol = symkeys.add('myIdentifier', {
137
+ * associate: { foo: 'bar' },
138
+ * embed: { baz: 'qux' },
139
+ * useDomain: 'exampleDomain',
140
+ * useSeparator: '-',
141
+ * useToken: 'customToken',
142
+ * })
143
+ * console.log(mySymbol)
144
+ * // Symbol(@exampleDomain-myIdentifier {"baz":"qux"} #customToken)
145
+ */
146
+ add(named: string, { associate, embed, useDomain, useSeparator, useToken, }: {
147
+ associate?: any;
148
+ embed?: Object | undefined;
149
+ useDomain?: string | undefined;
150
+ useSeparator?: string | undefined;
151
+ useToken?: string | undefined;
152
+ }): Symbol;
153
+ /**
154
+ * Creates or retrieves a shared symbol key with the given name and
155
+ * optional associated data.
156
+ *
157
+ * This method generates a shared symbol key using the provided name
158
+ * and optional parameters. If the symbol already exists in the
159
+ * Symkeys's internal map, it updates the associated data if provided.
160
+ * Otherwise, it creates a new symbol with the specified parameters.
161
+ *
162
+ * @param {string} named - The name to use for the shared symbol key.
163
+ * @param {Object} options - Optional parameters for the shared symbol key.
164
+ * @param {Object} [options.associate] - Data to associate with the symbol.
165
+ * @param {Object} [options.embed] - Data to embed in the symbol's name.
166
+ * @param {string} [options.useDomain] - Domain to include in the symbol's name.
167
+ * @param {string} [options.useSeparator] - Separator to use in the symbol's name.
168
+ * @returns {Symbol} The shared symbol key.
121
169
  *
122
170
  * @example
123
- * // Add an entry with associated data
124
- * const symbol = Symkeys.add('myEntry', { foo: 'bar' });
125
- * // Retrieve the associated data using the symbol
126
- * const data = Symkeys.dataFor(symbol);
127
- * console.log(data); // Output: { foo: 'bar' }
171
+ * // Create or retrieve a shared symbol key with associated data
172
+ * const sharedSymbol = symkeys.sharedKey('mySharedKey', {
173
+ * associate: { foo: 'bar' },
174
+ * embed: { baz: 'qux' },
175
+ * useDomain: 'exampleDomain',
176
+ * useSeparator: '-',
177
+ * })
178
+ * console.log(sharedSymbol)
179
+ * // Symbol(@exampleDomain-mySharedKey {"baz":"qux"} #shared)
128
180
  */
129
- add(named: any, associatedData?: {} | undefined): symbol;
181
+ sharedKey(named: string, { associate, embed, useDomain, useSeparator }: {
182
+ associate?: Object | undefined;
183
+ embed?: Object | undefined;
184
+ useDomain?: string | undefined;
185
+ useSeparator?: string | undefined;
186
+ }): Symbol;
130
187
  /**
131
188
  * Retrieves the data associated with a given symbol from the Symkeys.
132
189
  *
@@ -17,32 +17,118 @@ import { Extension } from '@nejs/extension';
17
17
  */
18
18
  export class Symkeys {
19
19
  /**
20
- * Adds a new entry to the Symkeys with a unique symbol based on the provided
21
- * name and associates it with the given data.
22
- *
23
- * @param named - The base name for the symbol to be created.
24
- * @param [associatedData={}] - The data to associate with the symbol.
25
- * @returns The unique symbol created for the entry.
20
+ * Adds a new symbol to the Symkeys instance with the given name and
21
+ * associated data.
22
+ *
23
+ * This method generates a unique symbol based on the provided name,
24
+ * optional domain, separator, and token. It also allows embedding
25
+ * additional data into the symbol's name.
26
+ *
27
+ * @param {string} named - The base name for the new symbol.
28
+ * @param {Object} options - Additional options for the symbol.
29
+ * @param {*} [options.associate={}] - Data to associate with the symbol.
30
+ * @param {Object} [options.embed] - Optional data to embed in the symbol.
31
+ * @param {string} [options.useDomain] - Optional domain to include in the
32
+ * symbol's name.
33
+ * @param {string} [options.useSeparator] - Optional separator to use in
34
+ * the symbol's name.
35
+ * @param {string} [options.useToken] - Optional token to use for the
36
+ * symbol. If not provided, a random token is generated.
37
+ * @returns {Symbol} The newly created symbol.
26
38
  *
27
39
  * @example
28
- * // Add an entry with associated data
29
- * const symbol = Symkeys.add('myEntry', { foo: 'bar' });
30
- * // Retrieve the associated data using the symbol
31
- * const data = Symkeys.dataFor(symbol);
32
- * console.log(data); // Output: { foo: 'bar' }
40
+ * // Add a symbol with associated data
41
+ * const mySymbol = symkeys.add('myIdentifier', {
42
+ * associate: { foo: 'bar' },
43
+ * embed: { baz: 'qux' },
44
+ * useDomain: 'exampleDomain',
45
+ * useSeparator: '-',
46
+ * useToken: 'customToken',
47
+ * })
48
+ * console.log(mySymbol)
49
+ * // Symbol(@exampleDomain-myIdentifier {"baz":"qux"} #customToken)
33
50
  */
34
- add(named, associatedData = {}) {
51
+ add(named, { associate = {}, embed = undefined, useDomain = undefined, useSeparator = undefined, useToken = undefined, }) {
35
52
  // Generate a unique token for the symbol
36
- const token = Symkeys.token;
53
+ const token = useToken ?? Symkeys.token;
37
54
  // Calculate a name (optionally with domain and separator)
38
- const symName = this.calculateName(named);
55
+ let symName = this.calculateName(named, useDomain, useSeparator);
56
+ if (embed && typeof embed === 'object') {
57
+ try {
58
+ symName += ` ${JSON.stringify(embed)}`;
59
+ }
60
+ catch (error) {
61
+ console.warn(`Cannot create JSON from ${embed}; skipping`);
62
+ }
63
+ }
39
64
  // Create a symbol using the provided name and the unique token
40
65
  const symbol = Symbol.for(`@${symName} #${token}`);
41
66
  // Store the symbol and associated data in the Symkeys's internal map
42
- this[Symkeys.kDataKey].set(symbol, associatedData);
67
+ this[Symkeys.kDataKey].set(symbol, associate ?? {});
43
68
  // Return the unique symbol for external use
44
69
  return symbol;
45
70
  }
71
+ /**
72
+ * Creates or retrieves a shared symbol key with the given name and
73
+ * optional associated data.
74
+ *
75
+ * This method generates a shared symbol key using the provided name
76
+ * and optional parameters. If the symbol already exists in the
77
+ * Symkeys's internal map, it updates the associated data if provided.
78
+ * Otherwise, it creates a new symbol with the specified parameters.
79
+ *
80
+ * @param {string} named - The name to use for the shared symbol key.
81
+ * @param {Object} options - Optional parameters for the shared symbol key.
82
+ * @param {Object} [options.associate] - Data to associate with the symbol.
83
+ * @param {Object} [options.embed] - Data to embed in the symbol's name.
84
+ * @param {string} [options.useDomain] - Domain to include in the symbol's name.
85
+ * @param {string} [options.useSeparator] - Separator to use in the symbol's name.
86
+ * @returns {Symbol} The shared symbol key.
87
+ *
88
+ * @example
89
+ * // Create or retrieve a shared symbol key with associated data
90
+ * const sharedSymbol = symkeys.sharedKey('mySharedKey', {
91
+ * associate: { foo: 'bar' },
92
+ * embed: { baz: 'qux' },
93
+ * useDomain: 'exampleDomain',
94
+ * useSeparator: '-',
95
+ * })
96
+ * console.log(sharedSymbol)
97
+ * // Symbol(@exampleDomain-mySharedKey {"baz":"qux"} #shared)
98
+ */
99
+ sharedKey(named, { associate, embed, useDomain, useSeparator }) {
100
+ // Calculate the symbol name with optional domain and separator
101
+ const symName = this.calculateName(named, useDomain, useSeparator);
102
+ // Initialize JSON string for embedded data
103
+ let json = '';
104
+ if (embed && typeof embed === 'object') {
105
+ try {
106
+ json = ` ${JSON.stringify(embed)}`;
107
+ }
108
+ catch (ignored) {
109
+ // Ignore JSON stringify errors
110
+ }
111
+ }
112
+ // Create the shared symbol key
113
+ const symbol = Symbol.for(`@${symName}${json} #shared`);
114
+ // Check if the symbol already exists in the internal map
115
+ if (this[Symkeys.kDataKey].has(symbol)) {
116
+ // Update associated data if provided and symbol is a Symkey
117
+ if (associate && symbol.isSymkey) {
118
+ symbol.data = associate;
119
+ }
120
+ // Return the existing symbol
121
+ return symbol;
122
+ }
123
+ // Add a new symbol with the specified parameters
124
+ return this.add(named, {
125
+ associate: associate ?? {},
126
+ embed,
127
+ useDomain,
128
+ useSeparator,
129
+ useToken: 'shared'
130
+ });
131
+ }
46
132
  /**
47
133
  * Retrieves the data associated with a given symbol from the Symkeys.
48
134
  *
@@ -162,7 +248,7 @@ export class Symkeys {
162
248
  token(forSymbol) {
163
249
  // Use a regular expression to match the token pattern in the symbol
164
250
  // description exists on symbol but our JS output target is too old
165
- return /^.* \#(.*?)$/.exec(forSymbol).description?.[1];
251
+ return /^.* \#(.*?)$/.exec(forSymbol)?.description?.[1];
166
252
  }
167
253
  /**
168
254
  * Retrieves the separator used in the Symkeys instance.
@@ -347,7 +433,7 @@ export class Symkeys {
347
433
  if (!(typeof value === 'symbol' || value instanceof Symbol)) {
348
434
  return false;
349
435
  }
350
- return !!/^@.*? #\w+$/.exec(value.description);
436
+ return !!/^@.*? #\w+$/.exec(value?.description);
351
437
  }
352
438
  /**
353
439
  * Generates a random token string.
@@ -1 +1 @@
1
- {"version":3,"file":"symkeys.js","sourceRoot":"","sources":["../../../src/classes/symkeys.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symkeys.js","sourceRoot":"","sources":["../../../src/classes/symkeys.js"],"names":[],"mappings":"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"}