@nejs/basic-extensions 2.9.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 (167) hide show
  1. package/dist/@nejs/basic-extensions.bundle.2.10.0.js +19 -0
  2. package/dist/@nejs/basic-extensions.bundle.2.10.0.js.map +7 -0
  3. package/dist/cjs/array.extensions.js +174 -0
  4. package/dist/cjs/array.extensions.js.map +1 -1
  5. package/dist/cjs/big.int.extension.js +1 -0
  6. package/dist/cjs/big.int.extension.js.map +1 -1
  7. package/dist/cjs/classes/descriptor.js +1 -1
  8. package/dist/cjs/classes/descriptor.js.map +1 -1
  9. package/dist/cjs/classes/index.d.ts +1 -0
  10. package/dist/cjs/classes/index.js +3 -0
  11. package/dist/cjs/classes/index.js.map +1 -1
  12. package/dist/cjs/classes/iterable.d.ts +44 -0
  13. package/dist/cjs/classes/iterable.js +64 -0
  14. package/dist/cjs/classes/iterable.js.map +1 -1
  15. package/dist/cjs/classes/param.parser.d.ts +10 -10
  16. package/dist/cjs/classes/property.d.ts +86 -0
  17. package/dist/cjs/classes/property.js +284 -0
  18. package/dist/cjs/classes/property.js.map +1 -0
  19. package/dist/cjs/classes/symkeys.d.ts +68 -11
  20. package/dist/cjs/classes/symkeys.js +103 -17
  21. package/dist/cjs/classes/symkeys.js.map +1 -1
  22. package/dist/cjs/classes/type.d.ts +4 -4
  23. package/dist/cjs/function.extensions.js +1 -0
  24. package/dist/cjs/function.extensions.js.map +1 -1
  25. package/dist/cjs/global.this.js +29 -0
  26. package/dist/cjs/global.this.js.map +1 -1
  27. package/dist/cjs/index.d.ts +2 -0
  28. package/dist/cjs/index.js +18 -0
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/json.extensions.js +19 -18
  31. package/dist/cjs/json.extensions.js.map +1 -1
  32. package/dist/cjs/map.extensions.js +1 -0
  33. package/dist/cjs/map.extensions.js.map +1 -1
  34. package/dist/cjs/number.extension.js +1 -0
  35. package/dist/cjs/number.extension.js.map +1 -1
  36. package/dist/cjs/object.extensions.d.ts +0 -29
  37. package/dist/cjs/object.extensions.js +218 -255
  38. package/dist/cjs/object.extensions.js.map +1 -1
  39. package/dist/cjs/set.extensions.js +1 -0
  40. package/dist/cjs/set.extensions.js.map +1 -1
  41. package/dist/cjs/string.extensions.js +474 -469
  42. package/dist/cjs/string.extensions.js.map +1 -1
  43. package/dist/cjs/symbol.extensions.js +386 -31
  44. package/dist/cjs/symbol.extensions.js.map +1 -1
  45. package/dist/cjs/utils/copy.object.d.ts +408 -0
  46. package/dist/cjs/utils/copy.object.js +720 -0
  47. package/dist/cjs/utils/copy.object.js.map +1 -0
  48. package/dist/cjs/utils/index.d.ts +1 -0
  49. package/dist/cjs/utils/index.js +19 -0
  50. package/dist/cjs/utils/index.js.map +1 -0
  51. package/dist/cjs/utils/toolkit.d.ts +1897 -0
  52. package/dist/cjs/utils/toolkit.js +1377 -0
  53. package/dist/cjs/utils/toolkit.js.map +1 -0
  54. package/dist/mjs/array.extensions.js +174 -0
  55. package/dist/mjs/array.extensions.js.map +1 -1
  56. package/dist/mjs/big.int.extension.js +1 -0
  57. package/dist/mjs/big.int.extension.js.map +1 -1
  58. package/dist/mjs/classes/descriptor.js +1 -1
  59. package/dist/mjs/classes/descriptor.js.map +1 -1
  60. package/dist/mjs/classes/index.d.ts +1 -0
  61. package/dist/mjs/classes/index.js +3 -0
  62. package/dist/mjs/classes/index.js.map +1 -1
  63. package/dist/mjs/classes/iterable.d.ts +44 -0
  64. package/dist/mjs/classes/iterable.js +64 -0
  65. package/dist/mjs/classes/iterable.js.map +1 -1
  66. package/dist/mjs/classes/param.parser.d.ts +10 -10
  67. package/dist/mjs/classes/property.d.ts +86 -0
  68. package/dist/mjs/classes/property.js +280 -0
  69. package/dist/mjs/classes/property.js.map +1 -0
  70. package/dist/mjs/classes/symkeys.d.ts +68 -11
  71. package/dist/mjs/classes/symkeys.js +103 -17
  72. package/dist/mjs/classes/symkeys.js.map +1 -1
  73. package/dist/mjs/classes/type.d.ts +4 -4
  74. package/dist/mjs/function.extensions.js +1 -0
  75. package/dist/mjs/function.extensions.js.map +1 -1
  76. package/dist/mjs/global.this.js +6 -0
  77. package/dist/mjs/global.this.js.map +1 -1
  78. package/dist/mjs/index.d.ts +2 -0
  79. package/dist/mjs/index.js +4 -0
  80. package/dist/mjs/index.js.map +1 -1
  81. package/dist/mjs/json.extensions.js +19 -18
  82. package/dist/mjs/json.extensions.js.map +1 -1
  83. package/dist/mjs/map.extensions.js +1 -0
  84. package/dist/mjs/map.extensions.js.map +1 -1
  85. package/dist/mjs/number.extension.js +1 -0
  86. package/dist/mjs/number.extension.js.map +1 -1
  87. package/dist/mjs/object.extensions.d.ts +0 -29
  88. package/dist/mjs/object.extensions.js +215 -251
  89. package/dist/mjs/object.extensions.js.map +1 -1
  90. package/dist/mjs/set.extensions.js +1 -0
  91. package/dist/mjs/set.extensions.js.map +1 -1
  92. package/dist/mjs/string.extensions.js +474 -469
  93. package/dist/mjs/string.extensions.js.map +1 -1
  94. package/dist/mjs/symbol.extensions.js +386 -31
  95. package/dist/mjs/symbol.extensions.js.map +1 -1
  96. package/dist/mjs/utils/copy.object.d.ts +408 -0
  97. package/dist/mjs/utils/copy.object.js +702 -0
  98. package/dist/mjs/utils/copy.object.js.map +1 -0
  99. package/dist/mjs/utils/index.d.ts +1 -0
  100. package/dist/mjs/utils/index.js +3 -0
  101. package/dist/mjs/utils/index.js.map +1 -0
  102. package/dist/mjs/utils/toolkit.d.ts +1897 -0
  103. package/dist/mjs/utils/toolkit.js +1372 -0
  104. package/dist/mjs/utils/toolkit.js.map +1 -0
  105. package/package.json +29 -37
  106. package/repl.bootstrap.js +12 -1
  107. package/src/array.extensions.js +191 -1
  108. package/src/big.int.extension.js +3 -1
  109. package/src/classes/descriptor.js +1 -1
  110. package/src/classes/index.js +4 -0
  111. package/src/classes/iterable.js +74 -0
  112. package/src/classes/property.js +333 -0
  113. package/src/classes/symkeys.js +120 -19
  114. package/src/function.extensions.js +2 -0
  115. package/src/global.this.js +8 -0
  116. package/src/index.js +5 -0
  117. package/src/json.extensions.js +18 -19
  118. package/src/map.extensions.js +3 -1
  119. package/src/number.extension.js +3 -1
  120. package/src/object.extensions.js +240 -277
  121. package/src/set.extensions.js +3 -1
  122. package/src/string.extensions.js +512 -506
  123. package/src/symbol.extensions.js +412 -29
  124. package/src/utils/copy.object.js +780 -0
  125. package/src/utils/index.js +2 -0
  126. package/src/utils/toolkit.js +1471 -0
  127. package/tests/arrayextensions.test.js +2 -0
  128. package/tests/index.test.js +1 -0
  129. package/tests/newClasses/asyncIterable.test.js +2 -0
  130. package/tests/newClasses/deferred.test.js +5 -3
  131. package/tests/newClasses/descriptor.test.js +2 -0
  132. package/tests/newClasses/iterable.test.js +2 -0
  133. package/tests/newClasses/refmap.test.js +2 -1
  134. package/tests/newClasses/refset.test.js +2 -0
  135. package/tests/objectextensions.test.js +2 -0
  136. package/tests/setextensions.test.js +2 -0
  137. package/tests/stringextensions.test.js +1 -0
  138. package/tests/utils/toolkit.test.js +223 -0
  139. package/tsconfig.base.json +1 -1
  140. package/vitest.config.js +7 -0
  141. package/dist/@nejs/basic-extensions.bundle.2.8.0.js +0 -19
  142. package/dist/@nejs/basic-extensions.bundle.2.8.0.js.map +0 -7
  143. package/docs/assets/anchor.js +0 -350
  144. package/docs/assets/bass-addons.css +0 -12
  145. package/docs/assets/bass.css +0 -544
  146. package/docs/assets/fonts/EOT/SourceCodePro-Bold.eot +0 -0
  147. package/docs/assets/fonts/EOT/SourceCodePro-Regular.eot +0 -0
  148. package/docs/assets/fonts/LICENSE.txt +0 -93
  149. package/docs/assets/fonts/OTF/SourceCodePro-Bold.otf +0 -0
  150. package/docs/assets/fonts/OTF/SourceCodePro-Regular.otf +0 -0
  151. package/docs/assets/fonts/TTF/SourceCodePro-Bold.ttf +0 -0
  152. package/docs/assets/fonts/TTF/SourceCodePro-Regular.ttf +0 -0
  153. package/docs/assets/fonts/WOFF/OTF/SourceCodePro-Bold.otf.woff +0 -0
  154. package/docs/assets/fonts/WOFF/OTF/SourceCodePro-Regular.otf.woff +0 -0
  155. package/docs/assets/fonts/WOFF/TTF/SourceCodePro-Bold.ttf.woff +0 -0
  156. package/docs/assets/fonts/WOFF/TTF/SourceCodePro-Regular.ttf.woff +0 -0
  157. package/docs/assets/fonts/WOFF2/OTF/SourceCodePro-Bold.otf.woff2 +0 -0
  158. package/docs/assets/fonts/WOFF2/OTF/SourceCodePro-Regular.otf.woff2 +0 -0
  159. package/docs/assets/fonts/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2 +0 -0
  160. package/docs/assets/fonts/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2 +0 -0
  161. package/docs/assets/fonts/source-code-pro.css +0 -23
  162. package/docs/assets/github.css +0 -123
  163. package/docs/assets/site.js +0 -168
  164. package/docs/assets/split.css +0 -15
  165. package/docs/assets/split.js +0 -782
  166. package/docs/assets/style.css +0 -147
  167. package/docs/index.html +0 -35485
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolkit.js","sourceRoot":"","sources":["../../../src/utils/toolkit.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,27 +1,35 @@
1
1
  {
2
2
  "author": "Brielle Harrison <nyteshade at gmail.com>",
3
+ "browser": "dist/@nejs/basic-extensions.bundle.2.10.0.js",
3
4
  "description": "Basic but commonly used extensions",
5
+ "dependencies": {
6
+ "@nejs/extension": "^2.20.0",
7
+ "zod": "^3.23.8"
8
+ },
4
9
  "devDependencies": {
5
- "@jest/expect": "^29.7.0",
6
- "clean-documentation-theme": "^0.5.2",
10
+ "@esbuild/darwin-arm64": "^0.23.1",
11
+ "balanced-match": "^3.0.1",
12
+ "brace-expansion": "^4.0.0",
13
+ "core-js": "^3.38.1",
7
14
  "docdash": "^2.0.2",
8
- "documentation": "^14.0.2",
9
- "documentation-devseed-theme": "^0.1.7",
10
- "esbuild": "^0.19.10",
11
- "esdoc": "^1.1.0",
15
+ "documentation": "^6.2.0",
16
+ "esbuild": "^0.23.1",
17
+ "esdoc": "^0.4.8",
12
18
  "esdoc-standard-plugin": "^1.0.0",
13
- "jest": "^29.7.0",
14
- "jest-cli": "^29.7.0",
15
- "jest-localstorage-mock": "^2.4.26",
16
- "jsdoc": "^4.0.2",
19
+ "fsevents": "^2.3.3",
20
+ "glob": "^11.0.0",
21
+ "lru-cache": "^11.0.1",
22
+ "minimatch": "^10.0.1",
23
+ "minipass": "^7.1.2",
24
+ "path-scurry": "^2.0.0",
17
25
  "prompts": "^2.4.2",
18
- "rimraf": "^5.0.5",
19
- "typescript": "^5.2.2"
26
+ "rimraf": "^6.0.1",
27
+ "source-map-support": "^0.5.21",
28
+ "typescript": "^5.5.4",
29
+ "vitest": "^2.0.5"
20
30
  },
21
31
  "engines": {
22
- "node": ">=18",
23
- "npm": "please-use-pnpm",
24
- "pnpm": ">= 2.0.0"
32
+ "node": ">=20"
25
33
  },
26
34
  "exports": {
27
35
  ".": {
@@ -29,15 +37,6 @@
29
37
  "require": "./dist/cjs/index.js"
30
38
  }
31
39
  },
32
- "jest": {
33
- "verbose": true,
34
- "setupFiles": [
35
- "jest-localstorage-mock"
36
- ],
37
- "transform": {
38
- "^.+\\.[t|j]sx?$": "babel-jest"
39
- }
40
- },
41
40
  "keywords": [
42
41
  "javascript",
43
42
  "browser",
@@ -48,22 +47,15 @@
48
47
  "module": "dist/mjs/index.js",
49
48
  "name": "@nejs/basic-extensions",
50
49
  "scripts": {
51
- "preinstall": "npx only-allow pnpm",
52
- "build": "bin/clean && bin/esbuild && bin/build",
53
- "distribute": "bin/clean && bin/esbuild && bin/build && npm run documentation",
54
50
  "browser": "bin/esbuild",
51
+ "build": "bin/clean && bin/version patch bump && bin/esbuild && bin/build",
55
52
  "clean": "bin/clean",
56
- "jsdoc": "jsdoc -c jsdoc-config.json -p -a all -R README.md",
57
- "documentation": "documentation build src/** -f html --github -o docs && documentation readme src/index.js --section=API",
53
+ "distribute": "bin/clean && bin/version minor bump && bin/esbuild && bin/build",
58
54
  "module": "bin/build",
59
- "test": "jest",
60
- "repl": "npm run build && node --no-warnings repl.bootstrap.js"
55
+ "repl": "npm run build && node --no-warnings repl.bootstrap.js",
56
+ "test": "vitest"
61
57
  },
62
58
  "type": "module",
63
- "version": "2.9.0",
64
- "dependencies": {
65
- "@nejs/extension": "^2.20.0",
66
- "zod": "^3.22.5"
67
- },
68
- "browser": "dist/@nejs/basic-extensions.bundle.2.9.0.js"
59
+ "version": "2.10.0",
60
+ "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1"
69
61
  }
package/repl.bootstrap.js CHANGED
@@ -1,8 +1,15 @@
1
1
  #!/usr/bin/env node --no-warnings --no-deprecations
2
2
 
3
+ // Show the correct line numbers for encountered errors in src not dist
4
+ const sourceMapSupport = await import('source-map-support');
5
+ sourceMapSupport?.install();
6
+
3
7
  // Import everything for playtesting.
4
8
  (await import('./dist/mjs/index.js')).Controls.enableAll();
5
9
 
10
+ const { inspect } = await import('util');
11
+
12
+
6
13
  const nejsExtension = await import('@nejs/extension');
7
14
 
8
15
  const repl = await import('node:repl');
@@ -16,7 +23,11 @@ const options = {
16
23
 
17
24
  let allowInvocation = true;
18
25
 
19
- Object.assign(global, { Patch: nejsExtension.Patch, Extension: nejsExtension.Extension });
26
+ Object.assign(global, {
27
+ Patch: nejsExtension.Patch,
28
+ Extension: nejsExtension.Extension,
29
+ inspect,
30
+ });
20
31
  global.replServer = new repl.REPLServer(options);
21
32
 
22
33
  function about() {
@@ -52,6 +52,10 @@ export const ArrayExtensions = new Patch(Array, {
52
52
 
53
53
  const { ifArray: pIfArray } = ArrayExtensions.patches
54
54
 
55
+ // todo: everyOfType(type), someOfType(type)
56
+ // todo: everyWithTag(stringTag), someWithTag(stringTag),
57
+ // todo: everyOfInstance(Class), someOfInstance(Class)
58
+
55
59
  /**
56
60
  * `ArrayPrototypeExtensions` is a constant that applies a patch to the
57
61
  * Array prototype. This patch extends the Array prototype with additional
@@ -262,6 +266,28 @@ export const ArrayPrototypeExtensions = new Patch(Array.prototype, {
262
266
  return this[this.length - 1];
263
267
  },
264
268
 
269
+ /**
270
+ * A getter that returns a new array containing only truthy elements.
271
+ * Filters out falsy values like null, undefined, 0, false, NaN, and ''.
272
+ * Useful for quickly removing falsy values from an array.
273
+ *
274
+ * @returns {Array} A new array with only truthy elements.
275
+ */
276
+ get onlyTruthy() {
277
+ return this.filter(truthy => !!truthy);
278
+ },
279
+
280
+ /**
281
+ * A getter that returns a new array containing only falsy elements.
282
+ * Keeps falsy values like null, undefined, 0, false, NaN, and ''.
283
+ * Useful for isolating falsy values in an array for further processing.
284
+ *
285
+ * @returns {Array} A new array with only falsy elements.
286
+ */
287
+ get onlyFalsy() {
288
+ return this.filter(falsy => !!!falsy);
289
+ },
290
+
265
291
  // expected usage:
266
292
  // function example(name, age) {
267
293
  // const variants = [{name}, {age}].variants()
@@ -307,6 +333,168 @@ export const ArrayPrototypeExtensions = new Patch(Array.prototype, {
307
333
 
308
334
  return result
309
335
  },
336
+
337
+ /**
338
+ * Weaves together an array of keys and an array of values into an
339
+ * object, using the provided default value for missing values and
340
+ * the specified base descriptor for defining properties. This can
341
+ * be used to quickly generate empty models if a list of keys from
342
+ * a preset or other object.
343
+ *
344
+ * @param {Array} arrayOfKeys - An array of keys to be used as
345
+ * property names in the resulting object.
346
+ * @param {Array} [arrayOfValues] - An optional array of values to
347
+ * be assigned to the corresponding keys. If not provided or not an
348
+ * array, the `defaultValue` will be used for all properties.
349
+ * @param {*} [defaultValue] - The default value to be used for
350
+ * missing values or when `arrayOfValues` is not an array or when
351
+ * there are not enough values for the number of keys.
352
+ * @param {Object|string} [baseDescriptor] - The base property
353
+ * descriptor to be used for defining properties. If not provided,
354
+ * default descriptor values will be used. Special string values
355
+ * `'hidden'` and `'immutable'` can be used for predefined
356
+ * descriptors.
357
+ * @returns {Object} - The resulting object with the woven
358
+ * properties.
359
+ *
360
+ * @example
361
+ * const employee134 = { name: 'Jane Doe', yearsOfService: 3 }
362
+ * const employee135 = Array.weave(Object.keys(employee134))
363
+ * // employee135 = { name: undefined, yearsOfService: undefined }
364
+ *
365
+ * @example
366
+ * const keys = ['a', 'b', 'c']
367
+ * const values = [1, 2, 3]
368
+ * const obj = Array.weave(keys, values)
369
+ * console.log(obj) // { a: 1, b: 2, c: 3 }
370
+ *
371
+ * @example
372
+ * const keys = ['x', 'y', 'z']
373
+ * const obj = Array.weave(keys, 42, 0, 'immutable')
374
+ * console.log(obj) // { x: 42, y: 42, z: 42 } (immutable)
375
+ */
376
+ weave(arrayOfKeys, arrayOfValues, defaultValue, baseDescriptor) {
377
+ if (!Array.isArray(arrayOfKeys)) {
378
+ return {}
379
+ }
380
+
381
+ if (arrayOfValues && !Array.isArray(arrayOfValues)) {
382
+ const repeatedValue = arrayOfValues
383
+ arrayOfValues = []
384
+ for (const _ of arrayOfKeys) {
385
+ arrayOfValues.push(repeatedValue)
386
+ }
387
+ }
388
+
389
+ const descKeys = ['configurable', 'enumerable', 'writable']
390
+
391
+ let object = {}
392
+ let descriptor
393
+ let keys = arrayOfKeys
394
+ let values = arrayOfValues
395
+ let useGetter = false
396
+
397
+ // Ensure we have a descriptor
398
+ if (!baseDescriptor) {
399
+ descriptor = descKeys.reduce(
400
+ (acc, key) => { acc[key] = true; return acc }, {}
401
+ )
402
+ }
403
+ else if (baseDescriptor === 'hidden') {
404
+ baseDescriptor = { configurable: true, enumerable: false }
405
+ }
406
+ else if (baseDescriptor === 'immutable') {
407
+ useGetter = true
408
+ baseDescriptor = { configurable: false, enumerable: false }
409
+ }
410
+ else if (baseDescriptor && typeof baseDescriptor === 'object') {
411
+ descriptor = descKeys.reduce(
412
+ (acc, key) => {
413
+ acc[key] = baseDescriptor?.[key] ?? true; return acc
414
+ }, {}
415
+ )
416
+ }
417
+
418
+ for (const [index, key] of Object.entries(keys)) {
419
+ if (useGetter) {
420
+ Object.defineProperty(object, key, {
421
+ ...descriptor,
422
+ get() { return values?.[index] ?? defaultValue },
423
+ })
424
+ }
425
+ else {
426
+ Object.defineProperty(object, key, {
427
+ ...descriptor,
428
+ value: values?.[index] ?? defaultValue,
429
+ })
430
+ }
431
+ }
432
+
433
+ return object
434
+ },
435
+
436
+ /**
437
+ * @property {object} kTypeDefaults
438
+ * @description
439
+ * An object that maps JavaScript types to their default values.
440
+ * This is useful for initializing variables or properties with
441
+ * a default value based on their expected type.
442
+ *
443
+ * Note that `symbol` types are initialized with `undefined`
444
+ * due to the fact that their usage is by definition, unique;
445
+ * or at the very least deliberately reused.
446
+ *
447
+ * The default values for each type are:
448
+ * - `undefined`: `undefined`
449
+ * - `symbol`: `undefined`
450
+ * - `string`: `""`
451
+ * - `object`: `{}`
452
+ * - `number`: `0`
453
+ * - `boolean`: `true`
454
+ * - `bigint`: `0n`
455
+ * - `function`: an empty function
456
+ *
457
+ * @example
458
+ * const defaultString = Array.kTypeDefaults.string
459
+ * console.log(defaultString) // Output: ""
460
+ *
461
+ * const defaultNumber = Array.kTypeDefaults.number
462
+ * console.log(defaultNumber) // Output: 0
463
+ */
464
+ get [Symbol.for('@nejs.defaults.by.type')]() {
465
+ return {
466
+ undefined: undefined,
467
+ symbol: undefined,
468
+ string: "",
469
+ object: {},
470
+ number: 0,
471
+ boolean: true,
472
+ bigint: 0n,
473
+ function() {},
474
+ }
475
+ },
476
+
477
+ /**
478
+ * @property {symbol} kDefaultsByType
479
+ * @description
480
+ * A unique symbol that represents the key for accessing
481
+ * the default values for different types.
482
+ *
483
+ * This symbol is created using `Symbol.for()` with the key
484
+ * `'@nejs.defaults.by.type'`. It can be used to retrieve
485
+ * the default values object from other parts of the code.
486
+ *
487
+ * @example
488
+ * const defaultsByType = Array[Array.kDefaultsByType]
489
+ * console.log(defaultsByType.string) // Output: ""
490
+ * console.log(defaultsByType.number) // Output: 0
491
+ *
492
+ * @returns {symbol} The unique symbol for accessing the
493
+ * default values by type.
494
+ */
495
+ get kDefaultsByType() {
496
+ return Symbol.for('@nejs.defaults.by.type')
497
+ },
310
498
  },
311
499
  })
312
500
 
@@ -314,9 +502,11 @@ export const ArrayPrototypeExtensions = new Patch(Array.prototype, {
314
502
  // Object<->Function<->Global occurs. See original source in global.this.js
315
503
  // {@see globalThis.isThenElse}
316
504
  function isThenElse(bv, tv, ev) {
505
+ function isFunction(value) { typeof value === 'function' }
506
+
317
507
  if (arguments.length > 1) {
318
508
  var _then = isFunction(tv) ? tv(bv) : tv; if (arguments.length > 2) {
319
509
  var _else = isFunction(ev) ? tv(bv) : ev; return bv ? _then : _else
320
510
  } return bv || _then;
321
511
  } return bv
322
- }
512
+ }
@@ -155,9 +155,11 @@ export const BigIntPrototypeExtensions = new Patch(BigInt.prototype, {
155
155
  // Object<->Function<->Global occurs. See original source in global.this.js
156
156
  // {@see globalThis.isThenElse}
157
157
  function isThenElse(bv, tv, ev) {
158
+ function isFunction(value) { typeof value === 'function' }
159
+
158
160
  if (arguments.length > 1) {
159
161
  var _then = isFunction(tv) ? tv(bv) : tv; if (arguments.length > 2) {
160
162
  var _else = isFunction(ev) ? tv(bv) : ev; return bv ? _then : _else
161
163
  } return bv || _then;
162
164
  } return bv
163
- }
165
+ }
@@ -49,7 +49,7 @@ export class Descriptor {
49
49
 
50
50
  if (!this.isDescriptor) {
51
51
  console.error(`
52
- Descriptor(object,key) FAILED:
52
+ Descriptor(object: ${object}, key: ${key}) FAILED:
53
53
  object: ${object === globalThis ? '[GLOBAL]' : (typeof key === 'object' ? JSON.stringify(object) : String(object))}
54
54
  key: ${key === globalThis ? '[GLOBAL]' : (typeof key === 'object' ? JSON.stringify(key) : String(key))}
55
55
  descriptor: `, this.#desc
@@ -21,6 +21,9 @@ export * from './param.parser.js'
21
21
  import { PluggableProxy, ProxyHandler } from './pluggable.proxy.js'
22
22
  export * from './pluggable.proxy.js'
23
23
 
24
+ import { Property, PropertyExtensions } from './property.js'
25
+ export * from './property.js'
26
+
24
27
  import { RefMap } from './refmap.js'
25
28
  export * from './refmap.js'
26
29
 
@@ -44,6 +47,7 @@ export const NewClassesExtension = new Patch(globalThis, {
44
47
  ParamParser,
45
48
  PluggableProxy,
46
49
  ProxyHandler,
50
+ Property,
47
51
  RefMap,
48
52
  RefSet,
49
53
  Symkeys,
@@ -215,6 +215,80 @@ export class Iterator {
215
215
  * @private
216
216
  */
217
217
  #iterator = null;
218
+
219
+ /**
220
+ * Creates an Iterator for the keys of the given object.
221
+ *
222
+ * @note alternatives to keyFetcher might be `Reflect.ownKeys` or even
223
+ * `Object.keys`. Each type of fetcher has their own requirements but
224
+ * any function that takes an object and returns keys will suffice.
225
+ *
226
+ * @param {Object} object - The object whose keys will be iterated.
227
+ * @param {Function} [mapEach] - Optional function to map each key.
228
+ * @param {Function} [keyFetcher=Object.getOwnPropertyNames] - Function to
229
+ * fetch keys from the object. Defaults to Object.getOwnPropertyNames.
230
+ * @returns {Iterator} An Iterator instance containing the object's keys.
231
+ */
232
+ static keys(object, mapEach, keyFetcher) {
233
+ keyFetcher ??= Object.getOwnPropertyNames;
234
+
235
+ const keys = keyFetcher(object);
236
+ return new Iterator(keys, mapEach);
237
+ }
238
+
239
+ /**
240
+ * Creates an Iterator for the entries of the given object.
241
+ *
242
+ * @note alternatives to keyFetcher might be `Reflect.ownKeys` or even
243
+ * `Object.keys`. Each type of fetcher has their own requirements but
244
+ * any function that takes an object and returns keys will suffice.
245
+ *
246
+ * @param {Object} object - The object whose entries will be iterated.
247
+ * @param {Function} [mapEach] - Optional function to map each entry.
248
+ * @param {Function} [keyFetcher=Object.getOwnPropertyNames] - Function to
249
+ * fetch keys from the object. Defaults to Object.getOwnPropertyNames.
250
+ * @returns {Iterator} An Iterator instance containing the object's entries.
251
+ */
252
+ static entries(object, mapEach, keyFetcher) {
253
+ keyFetcher ??= Object.getOwnPropertyNames;
254
+
255
+ const keys = keyFetcher(object);
256
+ const entries = [];
257
+
258
+ for (const key of keys) {
259
+ entries.push([key, object[key]]);
260
+ }
261
+
262
+ return new Iterator(entries, mapEach)
263
+ }
264
+
265
+ /**
266
+ * Creates an Iterator for the property descriptors of the given object.
267
+ *
268
+ * @note alternatives to keyFetcher might be `Reflect.ownKeys` or even
269
+ * `Object.keys`. Each type of fetcher has their own requirements but
270
+ * any function that takes an object and returns keys will suffice.
271
+ *
272
+ * @param {Object} object - The object whose descriptors will be iterated.
273
+ * @param {Function} [mapEach] - Optional function to map each descriptor
274
+ * entry.
275
+ * @param {Function} [keyFetcher=Object.getOwnPropertyNames] - Function to
276
+ * fetch keys from the object. Defaults to Object.getOwnPropertyNames.
277
+ * @returns {Iterator} An Iterator instance containing entries of [key,
278
+ * descriptor] pairs.
279
+ */
280
+ static descriptors(object, mapEach, keyFetcher) {
281
+ keyFetcher ??= Object.getOwnPropertyNames;
282
+
283
+ const keys = keyFetcher(object);
284
+ const entries = [];
285
+
286
+ for (const key of keys) {
287
+ entries.push([key, Object.getOwnPropertyDescriptor(object, key)])
288
+ }
289
+
290
+ return new Iterator(entries, mapEach);
291
+ }
218
292
  }
219
293
 
220
294
  export const IterableExtensions = new Extension(Iterable)