@ac-kit/core 0.2.0 → 0.3.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 (74) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/big-int/from-bytes-be.d.ts +14 -0
  3. package/dist/big-int/from-bytes-be.d.ts.map +1 -0
  4. package/dist/big-int/from-bytes-be.js +20 -0
  5. package/dist/big-int/from-bytes-be.js.map +1 -0
  6. package/dist/big-int/from-bytes-le.d.ts +15 -0
  7. package/dist/big-int/from-bytes-le.d.ts.map +1 -0
  8. package/dist/big-int/from-bytes-le.js +21 -0
  9. package/dist/big-int/from-bytes-le.js.map +1 -0
  10. package/dist/big-int/to-bytes-be.d.ts +19 -0
  11. package/dist/big-int/to-bytes-be.d.ts.map +1 -0
  12. package/dist/big-int/to-bytes-be.js +60 -0
  13. package/dist/big-int/to-bytes-be.js.map +1 -0
  14. package/dist/big-int/to-bytes-le.d.ts +19 -0
  15. package/dist/big-int/to-bytes-le.d.ts.map +1 -0
  16. package/dist/big-int/to-bytes-le.js +22 -0
  17. package/dist/big-int/to-bytes-le.js.map +1 -0
  18. package/dist/buffer/bytes-combine.d.ts +18 -0
  19. package/dist/buffer/bytes-combine.d.ts.map +1 -0
  20. package/dist/buffer/bytes-combine.js +25 -0
  21. package/dist/buffer/bytes-combine.js.map +1 -0
  22. package/dist/buffer/bytes-map.d.ts +14 -0
  23. package/dist/buffer/bytes-map.d.ts.map +1 -0
  24. package/dist/buffer/bytes-map.js +21 -0
  25. package/dist/buffer/bytes-map.js.map +1 -0
  26. package/dist/buffer/text/next-utf8-boundary.d.ts +17 -0
  27. package/dist/buffer/text/next-utf8-boundary.d.ts.map +1 -0
  28. package/dist/buffer/text/next-utf8-boundary.js +27 -0
  29. package/dist/buffer/text/next-utf8-boundary.js.map +1 -0
  30. package/dist/index.d.ts +14 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +14 -3
  33. package/dist/index.js.map +1 -1
  34. package/dist/object/flatten-record.d.ts +67 -0
  35. package/dist/object/flatten-record.d.ts.map +1 -0
  36. package/dist/object/flatten-record.js +81 -0
  37. package/dist/object/flatten-record.js.map +1 -0
  38. package/dist/object/unflatten-record.d.ts +63 -0
  39. package/dist/object/unflatten-record.d.ts.map +1 -0
  40. package/dist/object/unflatten-record.js +71 -0
  41. package/dist/object/unflatten-record.js.map +1 -0
  42. package/dist/string/ascii/is-ascii-blank.d.ts +8 -0
  43. package/dist/string/ascii/is-ascii-blank.d.ts.map +1 -0
  44. package/dist/string/ascii/is-ascii-blank.js +11 -0
  45. package/dist/string/ascii/is-ascii-blank.js.map +1 -0
  46. package/dist/string/ascii/is-ascii-control.d.ts +6 -0
  47. package/dist/string/ascii/is-ascii-control.d.ts.map +1 -0
  48. package/dist/string/ascii/is-ascii-control.js +9 -0
  49. package/dist/string/ascii/is-ascii-control.js.map +1 -0
  50. package/dist/string/ascii/is-ascii-graphic.d.ts +7 -0
  51. package/dist/string/ascii/is-ascii-graphic.d.ts.map +1 -0
  52. package/dist/string/ascii/is-ascii-graphic.js +10 -0
  53. package/dist/string/ascii/is-ascii-graphic.js.map +1 -0
  54. package/dist/string/ascii/is-ascii-printable.d.ts +7 -0
  55. package/dist/string/ascii/is-ascii-printable.d.ts.map +1 -0
  56. package/dist/string/ascii/is-ascii-printable.js +10 -0
  57. package/dist/string/ascii/is-ascii-printable.js.map +1 -0
  58. package/dist/string/ascii/is-ascii-punctuation.d.ts +6 -0
  59. package/dist/string/ascii/is-ascii-punctuation.d.ts.map +1 -0
  60. package/dist/string/ascii/is-ascii-punctuation.js +10 -0
  61. package/dist/string/ascii/is-ascii-punctuation.js.map +1 -0
  62. package/package.json +1 -1
  63. package/dist/system/net/ephemeral-port.d.ts +0 -13
  64. package/dist/system/net/ephemeral-port.d.ts.map +0 -1
  65. package/dist/system/net/ephemeral-port.js +0 -19
  66. package/dist/system/net/ephemeral-port.js.map +0 -1
  67. package/dist/system/net/inet-address.d.ts +0 -20
  68. package/dist/system/net/inet-address.d.ts.map +0 -1
  69. package/dist/system/net/inet-address.js +0 -42
  70. package/dist/system/net/inet-address.js.map +0 -1
  71. package/dist/system/net/inet-endpoint.d.ts +0 -7
  72. package/dist/system/net/inet-endpoint.d.ts.map +0 -1
  73. package/dist/system/net/inet-endpoint.js +0 -2
  74. package/dist/system/net/inet-endpoint.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,yDAAyD,CAAC;AACxE,cAAc,iDAAiD,CAAC;AAChE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,kDAAkD,CAAC;AACjE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iDAAiD,CAAC;AAChE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,67 @@
1
+ export type FlattenRecordOptions = {
2
+ /**
3
+ * Separator joining the segments of an output key. Default `"."`.
4
+ *
5
+ * Must not be empty: `unflattenRecord` splits on it, and splitting on `""`
6
+ * would take every key apart character by character.
7
+ */
8
+ readonly delimiter?: string | null;
9
+ /**
10
+ * Descends into arrays, numbering their elements. Default `false`, which
11
+ * leaves an array whole as a leaf value.
12
+ *
13
+ * Off by default because an index is the one segment a flattened key cannot
14
+ * tell apart from an ordinary key spelled `"0"`, so numbering costs the round
15
+ * trip its only ambiguity-free case.
16
+ */
17
+ readonly flattenArrays?: boolean | null;
18
+ /**
19
+ * Greatest number of segments an output key may have. Default: unbounded.
20
+ *
21
+ * A value below that depth is copied across whole, still nested. `1` copies
22
+ * the record's own entries without flattening anything.
23
+ */
24
+ readonly maxDepth?: number | null;
25
+ };
26
+ /**
27
+ * Collapse a nested record into a one-level one, naming each leaf by the
28
+ * delimiter-joined path that reached it.
29
+ *
30
+ * A leaf is anything that is not a plain object — a `Date`, a `Map`, a class
31
+ * instance and, by default, an array are all copied across whole. So is an
32
+ * empty plain object, which has no entry to name and would otherwise vanish.
33
+ *
34
+ * **A key that contains the delimiter is not escaped.** `{ "a.b": 1 }` flattens
35
+ * to `{ "a.b": 1 }`, exactly as `{ a: { b: 1 } }` does, and
36
+ * {@link unflattenRecord} reads both back as `{ a: { b: 1 } }` — the delimiter
37
+ * always wins over a literal occurrence of it. Two inputs colliding onto one
38
+ * output key leave the last one written, in `Object.keys` order. Pick a
39
+ * delimiter the keys cannot contain when the round trip has to hold.
40
+ *
41
+ * Keys are written with `setRecordEntry`, so an input key named `__proto__`
42
+ * becomes an own entry of the result instead of reaching the prototype setter.
43
+ *
44
+ * Time is linear in the number of nodes visited, plus the cost of building the
45
+ * keys, which is the total length of the output's keys. Memory is the output
46
+ * record plus one stack frame per level of nesting, so a record nested deeper
47
+ * than the engine's stack overflows rather than degrading.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * flattenRecord({ key1: { keyA: "v" }, key2: { a: { b: 2 } } });
52
+ * // { "key1.keyA": "v", "key2.a.b": 2 }
53
+ *
54
+ * flattenRecord({ host: { tags: ["a", "b"] } });
55
+ * // { "host.tags": ["a", "b"] } — an array is a leaf
56
+ *
57
+ * flattenRecord({ a: { b: { c: 1 } } }, { delimiter: "/", maxDepth: 2 });
58
+ * // { "a/b": { c: 1 } }
59
+ * ```;
60
+ *
61
+ * @param source The record to flatten; it is not modified.
62
+ * @param options Delimiter, array handling and depth cap.
63
+ * @returns A new one-level record.
64
+ * @throws RangeError If the delimiter is empty or `maxDepth` is below 1.
65
+ */
66
+ export declare function flattenRecord(source: Readonly<Record<string, unknown>>, options?: FlattenRecordOptions): Record<string, unknown>;
67
+ //# sourceMappingURL=flatten-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-record.d.ts","sourceRoot":"","sources":["../../src/object/flatten-record.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AA4CF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,aAAa,CAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,OAAO,CAAC,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB"}
@@ -0,0 +1,81 @@
1
+ import { isPojo } from "../guards/is-pojo.js";
2
+ import { setRecordEntry } from "./set-record-entry.js";
3
+ /** An empty container has no entry to name, so flattening it would lose the key. */
4
+ function isDescendable_(value, options) {
5
+ if (Array.isArray(value)) {
6
+ return options.flattenArrays && value.length > 0;
7
+ }
8
+ return isPojo(value) && Object.keys(value).length > 0;
9
+ }
10
+ function step_(source, prefix, depth, output, options) {
11
+ // Own keys only: `for...in` would walk a hostile source's prototype too.
12
+ for (const key of Object.keys(source)) {
13
+ const value = source[key];
14
+ // `null` rather than `""` for the root: a top-level key may itself be empty.
15
+ const outputKey = prefix === null ? key : prefix + options.delimiter + key;
16
+ if (depth < options.maxDepth && isDescendable_(value, options)) {
17
+ step_(value, outputKey, depth + 1, output, options);
18
+ }
19
+ else {
20
+ setRecordEntry(output, outputKey, value);
21
+ }
22
+ }
23
+ }
24
+ /**
25
+ * Collapse a nested record into a one-level one, naming each leaf by the
26
+ * delimiter-joined path that reached it.
27
+ *
28
+ * A leaf is anything that is not a plain object — a `Date`, a `Map`, a class
29
+ * instance and, by default, an array are all copied across whole. So is an
30
+ * empty plain object, which has no entry to name and would otherwise vanish.
31
+ *
32
+ * **A key that contains the delimiter is not escaped.** `{ "a.b": 1 }` flattens
33
+ * to `{ "a.b": 1 }`, exactly as `{ a: { b: 1 } }` does, and
34
+ * {@link unflattenRecord} reads both back as `{ a: { b: 1 } }` — the delimiter
35
+ * always wins over a literal occurrence of it. Two inputs colliding onto one
36
+ * output key leave the last one written, in `Object.keys` order. Pick a
37
+ * delimiter the keys cannot contain when the round trip has to hold.
38
+ *
39
+ * Keys are written with `setRecordEntry`, so an input key named `__proto__`
40
+ * becomes an own entry of the result instead of reaching the prototype setter.
41
+ *
42
+ * Time is linear in the number of nodes visited, plus the cost of building the
43
+ * keys, which is the total length of the output's keys. Memory is the output
44
+ * record plus one stack frame per level of nesting, so a record nested deeper
45
+ * than the engine's stack overflows rather than degrading.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * flattenRecord({ key1: { keyA: "v" }, key2: { a: { b: 2 } } });
50
+ * // { "key1.keyA": "v", "key2.a.b": 2 }
51
+ *
52
+ * flattenRecord({ host: { tags: ["a", "b"] } });
53
+ * // { "host.tags": ["a", "b"] } — an array is a leaf
54
+ *
55
+ * flattenRecord({ a: { b: { c: 1 } } }, { delimiter: "/", maxDepth: 2 });
56
+ * // { "a/b": { c: 1 } }
57
+ * ```;
58
+ *
59
+ * @param source The record to flatten; it is not modified.
60
+ * @param options Delimiter, array handling and depth cap.
61
+ * @returns A new one-level record.
62
+ * @throws RangeError If the delimiter is empty or `maxDepth` is below 1.
63
+ */
64
+ export function flattenRecord(source, options) {
65
+ const resolved = {
66
+ delimiter: options?.delimiter ?? ".",
67
+ flattenArrays: options?.flattenArrays ?? false,
68
+ maxDepth: options?.maxDepth ?? Number.POSITIVE_INFINITY,
69
+ };
70
+ if (resolved.delimiter.length === 0) {
71
+ throw new RangeError("flattenRecord: delimiter must not be empty");
72
+ }
73
+ // Negated so a `NaN` depth is rejected rather than silently flattening nothing.
74
+ if (!(resolved.maxDepth >= 1)) {
75
+ throw new RangeError("flattenRecord: maxDepth must be at least 1");
76
+ }
77
+ const output = {};
78
+ step_(source, null, 1, output, resolved);
79
+ return output;
80
+ }
81
+ //# sourceMappingURL=flatten-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-record.js","sourceRoot":"","sources":["../../src/object/flatten-record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAoCvD,oFAAoF;AACpF,SAAS,cAAc,CAAC,KAAc,EAAE,OAAkB;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,KAAK,CACb,MAAyC,EACzC,MAAqB,EACrB,KAAa,EACb,MAA+B,EAC/B,OAAkB;IAElB,yEAAyE;IACzE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,6EAA6E;QAC7E,MAAM,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;QAE3E,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAChE,KAAK,CACJ,KAA0C,EAC1C,SAAS,EACT,KAAK,GAAG,CAAC,EACT,MAAM,EACN,OAAO,CACP,CAAC;QACH,CAAC;aAAM,CAAC;YACP,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,aAAa,CAC5B,MAAyC,EACzC,OAA8B;IAE9B,MAAM,QAAQ,GAAc;QAC3B,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,GAAG;QACpC,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,KAAK;QAC9C,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,iBAAiB;KACvD,CAAC;IAEF,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IACpE,CAAC;IACD,gFAAgF;IAChF,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,63 @@
1
+ export type UnflattenRecordOptions = {
2
+ /**
3
+ * Separator the input keys are split on. Default `"."`.
4
+ *
5
+ * Must not be empty, which would take every key apart character by character.
6
+ */
7
+ readonly delimiter?: string | null;
8
+ /**
9
+ * Rebuilds an array wherever a segment is a canonical decimal index. Default
10
+ * `false`, which keeps every segment an object key.
11
+ *
12
+ * Enable it only for keys produced by {@link flattenRecord} with
13
+ * `flattenArrays`. A key out of untrusted input can name an index of any
14
+ * size, and while the sparse array that creates is cheap to hold, its
15
+ * `length` is the index — enough to make a later `JSON.stringify` or
16
+ * iteration over it unbounded work.
17
+ */
18
+ readonly buildArrays?: boolean | null;
19
+ };
20
+ /**
21
+ * Rebuild a nested record from one whose keys are delimiter-joined paths — the
22
+ * inverse of {@link flattenRecord}.
23
+ *
24
+ * `unflattenRecord(flattenRecord(x))` deep-equals `x` for any `x` whose keys
25
+ * contain neither the delimiter nor, below the top level, one of the three
26
+ * prototype-reaching names named further down. A key that does contain the
27
+ * delimiter is indistinguishable from nesting and is split: `{ "a.b": 1 }`
28
+ * becomes `{ a: { b: 1 } }`, whatever the input meant by it.
29
+ *
30
+ * Where two keys disagree about a segment's shape — `"a"` holding `1` beside
31
+ * `"a.b"` holding `2` — the deeper key replaces the scalar with a container,
32
+ * and the entries are applied in `Object.keys` order, so the last one wins.
33
+ *
34
+ * A key with two or more segments is a path walk, and one whose segments
35
+ * include `__proto__`, `constructor` or `prototype` is dropped whole: the
36
+ * intermediate _reads_ of such a walk reach a prototype shared with every other
37
+ * object, before anything is assigned. A single-segment key is an ordinary leaf
38
+ * write and is kept, stored as an own entry by `setRecordEntry` — a record of
39
+ * environment variables should still be able to hold one named `constructor`.
40
+ *
41
+ * Time is linear in the total length of the input keys plus the number of
42
+ * segments walked. Memory is the rebuilt record plus one segment array per
43
+ * entry, which is released as each entry is written.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * unflattenRecord({ "key1.keyA": "v", "key2.a.b": 2 });
48
+ * // { key1: { keyA: "v" }, key2: { a: { b: 2 } } }
49
+ *
50
+ * unflattenRecord({ "hello.you.0": "x" });
51
+ * // { hello: { you: { "0": "x" } } }
52
+ *
53
+ * unflattenRecord({ "hello.you.0": "x" }, { buildArrays: true });
54
+ * // { hello: { you: ["x"] } }
55
+ * ```;
56
+ *
57
+ * @param source The one-level record to expand; it is not modified.
58
+ * @param options Delimiter and array rebuilding.
59
+ * @returns A new nested record.
60
+ * @throws RangeError If the delimiter is empty.
61
+ */
62
+ export declare function unflattenRecord(source: Readonly<Record<string, unknown>>, options?: UnflattenRecordOptions): Record<string, unknown>;
63
+ //# sourceMappingURL=unflatten-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unflatten-record.d.ts","sourceRoot":"","sources":["../../src/object/unflatten-record.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC,CAAC;AAkBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,OAAO,CAAC,EAAE,sBAAsB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB"}
@@ -0,0 +1,71 @@
1
+ import { setAtPath } from "./set-at-path.js";
2
+ import { setRecordEntry } from "./set-record-entry.js";
3
+ /** Canonical decimal, so `"01"` and `"1e2"` stay object keys. */
4
+ const INDEX_PATTERN_ = /^(?:0|[1-9]\d*)$/;
5
+ function toPath_(segments, buildArrays) {
6
+ if (!buildArrays) {
7
+ return segments;
8
+ }
9
+ return segments.map((segment) => INDEX_PATTERN_.test(segment) ? Number(segment) : segment);
10
+ }
11
+ /**
12
+ * Rebuild a nested record from one whose keys are delimiter-joined paths — the
13
+ * inverse of {@link flattenRecord}.
14
+ *
15
+ * `unflattenRecord(flattenRecord(x))` deep-equals `x` for any `x` whose keys
16
+ * contain neither the delimiter nor, below the top level, one of the three
17
+ * prototype-reaching names named further down. A key that does contain the
18
+ * delimiter is indistinguishable from nesting and is split: `{ "a.b": 1 }`
19
+ * becomes `{ a: { b: 1 } }`, whatever the input meant by it.
20
+ *
21
+ * Where two keys disagree about a segment's shape — `"a"` holding `1` beside
22
+ * `"a.b"` holding `2` — the deeper key replaces the scalar with a container,
23
+ * and the entries are applied in `Object.keys` order, so the last one wins.
24
+ *
25
+ * A key with two or more segments is a path walk, and one whose segments
26
+ * include `__proto__`, `constructor` or `prototype` is dropped whole: the
27
+ * intermediate _reads_ of such a walk reach a prototype shared with every other
28
+ * object, before anything is assigned. A single-segment key is an ordinary leaf
29
+ * write and is kept, stored as an own entry by `setRecordEntry` — a record of
30
+ * environment variables should still be able to hold one named `constructor`.
31
+ *
32
+ * Time is linear in the total length of the input keys plus the number of
33
+ * segments walked. Memory is the rebuilt record plus one segment array per
34
+ * entry, which is released as each entry is written.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * unflattenRecord({ "key1.keyA": "v", "key2.a.b": 2 });
39
+ * // { key1: { keyA: "v" }, key2: { a: { b: 2 } } }
40
+ *
41
+ * unflattenRecord({ "hello.you.0": "x" });
42
+ * // { hello: { you: { "0": "x" } } }
43
+ *
44
+ * unflattenRecord({ "hello.you.0": "x" }, { buildArrays: true });
45
+ * // { hello: { you: ["x"] } }
46
+ * ```;
47
+ *
48
+ * @param source The one-level record to expand; it is not modified.
49
+ * @param options Delimiter and array rebuilding.
50
+ * @returns A new nested record.
51
+ * @throws RangeError If the delimiter is empty.
52
+ */
53
+ export function unflattenRecord(source, options) {
54
+ const delimiter = options?.delimiter ?? ".";
55
+ const buildArrays = options?.buildArrays ?? false;
56
+ if (delimiter.length === 0) {
57
+ throw new RangeError("unflattenRecord: delimiter must not be empty");
58
+ }
59
+ const output = {};
60
+ // Own keys only: `for...in` would walk a hostile source's prototype too.
61
+ for (const key of Object.keys(source)) {
62
+ const segments = key.split(delimiter);
63
+ if (segments.length === 1) {
64
+ setRecordEntry(output, key, source[key]);
65
+ continue;
66
+ }
67
+ setAtPath(output, toPath_(segments, buildArrays), source[key]);
68
+ }
69
+ return output;
70
+ }
71
+ //# sourceMappingURL=unflatten-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unflatten-record.js","sourceRoot":"","sources":["../../src/object/unflatten-record.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAuBvD,iEAAiE;AACjE,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C,SAAS,OAAO,CACf,QAA2B,EAC3B,WAAoB;IAEpB,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/B,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CACxD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,eAAe,CAC9B,MAAyC,EACzC,OAAgC;IAEhC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC;IAC5C,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,KAAK,CAAC;IAElD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,yEAAyE;IACzE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,SAAS;QACV,CAAC;QAED,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Equivalent to C's `isblank` — whether `code` is a space or a horizontal tab.
3
+ *
4
+ * The two characters that separate words on one line, as against
5
+ * {@link isAsciiWhitespace}, which also holds the line terminators.
6
+ */
7
+ export declare function isAsciiBlank(code: number): boolean;
8
+ //# sourceMappingURL=is-ascii-blank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-blank.d.ts","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-blank.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD"}
@@ -0,0 +1,11 @@
1
+ import { HT, SPACE } from "../../constants/ascii.js";
2
+ /**
3
+ * Equivalent to C's `isblank` — whether `code` is a space or a horizontal tab.
4
+ *
5
+ * The two characters that separate words on one line, as against
6
+ * {@link isAsciiWhitespace}, which also holds the line terminators.
7
+ */
8
+ export function isAsciiBlank(code) {
9
+ return code === SPACE || code === HT;
10
+ }
11
+ //# sourceMappingURL=is-ascii-blank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-blank.js","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-blank.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACxC,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Equivalent to C's `iscntrl` — whether `code` is an ASCII control character:
3
+ * `NUL` through `US`, plus `DEL`.
4
+ */
5
+ export declare function isAsciiControl(code: number): boolean;
6
+ //# sourceMappingURL=is-ascii-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-control.d.ts","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-control.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD"}
@@ -0,0 +1,9 @@
1
+ import { DEL, NUL, US } from "../../constants/ascii.js";
2
+ /**
3
+ * Equivalent to C's `iscntrl` — whether `code` is an ASCII control character:
4
+ * `NUL` through `US`, plus `DEL`.
5
+ */
6
+ export function isAsciiControl(code) {
7
+ return (code >= NUL && code <= US) || code === DEL;
8
+ }
9
+ //# sourceMappingURL=is-ascii-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-control.js","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,OAAO,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC;AACpD,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Equivalent to C's `isgraph` — whether `code` is an ASCII character with a
3
+ * visible glyph: `!` through `~`, which is every printable character except the
4
+ * space.
5
+ */
6
+ export declare function isAsciiGraphic(code: number): boolean;
7
+ //# sourceMappingURL=is-ascii-graphic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-graphic.d.ts","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-graphic.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD"}
@@ -0,0 +1,10 @@
1
+ import { EXCLAMATION_MARK, TILDE } from "../../constants/ascii.js";
2
+ /**
3
+ * Equivalent to C's `isgraph` — whether `code` is an ASCII character with a
4
+ * visible glyph: `!` through `~`, which is every printable character except the
5
+ * space.
6
+ */
7
+ export function isAsciiGraphic(code) {
8
+ return code >= EXCLAMATION_MARK && code <= TILDE;
9
+ }
10
+ //# sourceMappingURL=is-ascii-graphic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-graphic.js","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-graphic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,OAAO,IAAI,IAAI,gBAAgB,IAAI,IAAI,IAAI,KAAK,CAAC;AAClD,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Equivalent to C's `isprint` — whether `code` is an ASCII printable character:
3
+ * the space through `~`. {@link isAsciiGraphic} is the same set without the
4
+ * space.
5
+ */
6
+ export declare function isAsciiPrintable(code: number): boolean;
7
+ //# sourceMappingURL=is-ascii-printable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-printable.d.ts","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-printable.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,10 @@
1
+ import { SPACE, TILDE } from "../../constants/ascii.js";
2
+ /**
3
+ * Equivalent to C's `isprint` — whether `code` is an ASCII printable character:
4
+ * the space through `~`. {@link isAsciiGraphic} is the same set without the
5
+ * space.
6
+ */
7
+ export function isAsciiPrintable(code) {
8
+ return code >= SPACE && code <= TILDE;
9
+ }
10
+ //# sourceMappingURL=is-ascii-printable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-printable.js","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-printable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;AACvC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Equivalent to C's `ispunct` — whether `code` is an ASCII punctuation or
3
+ * symbol character: printable, visible, and neither a letter nor a digit.
4
+ */
5
+ export declare function isAsciiPunctuation(code: number): boolean;
6
+ //# sourceMappingURL=is-ascii-punctuation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-punctuation.d.ts","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-punctuation.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,10 @@
1
+ import { isAsciiAlphaNumeric } from "./is-ascii-alpha-numeric.js";
2
+ import { isAsciiGraphic } from "./is-ascii-graphic.js";
3
+ /**
4
+ * Equivalent to C's `ispunct` — whether `code` is an ASCII punctuation or
5
+ * symbol character: printable, visible, and neither a letter nor a digit.
6
+ */
7
+ export function isAsciiPunctuation(code) {
8
+ return isAsciiGraphic(code) && !isAsciiAlphaNumeric(code);
9
+ }
10
+ //# sourceMappingURL=is-ascii-punctuation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ascii-punctuation.js","sourceRoot":"","sources":["../../../src/string/ascii/is-ascii-punctuation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ac-kit/core",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Foundational JavaScript and TypeScript extensions with no domain knowledge: guards, type helpers, collection and string utilities, JSON, pattern matching, promises, time, errors and a byte cursor.",
5
5
  "keywords": [
6
6
  "esm",
@@ -1,13 +0,0 @@
1
- /** First port of the RFC 6335 dynamic / private range. */
2
- export declare const EPHEMERAL_PORT_MIN_VALUE = 49152;
3
- /** Last port of the RFC 6335 dynamic / private range. */
4
- export declare const EPHEMERAL_PORT_MAX_VALUE = 65535;
5
- /**
6
- * Get a random ephemeral port number in the range suggested by RFC 6335 and the
7
- * Internet Assigned Numbers Authority (IANA) for dynamic or private ports
8
- * (between 49152 and 65535).
9
- *
10
- * @returns A random ephemeral port number.
11
- */
12
- export declare function getRandomEphemeralPort(): number;
13
- //# sourceMappingURL=ephemeral-port.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ephemeral-port.d.ts","sourceRoot":"","sources":["../../../src/system/net/ephemeral-port.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAK9C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAK/C"}
@@ -1,19 +0,0 @@
1
- /** First port of the RFC 6335 dynamic / private range. */
2
- export const EPHEMERAL_PORT_MIN_VALUE = 49152;
3
- /** Last port of the RFC 6335 dynamic / private range. */
4
- export const EPHEMERAL_PORT_MAX_VALUE = 65535;
5
- const EPHEMERAL_PORT_COUNT = EPHEMERAL_PORT_MAX_VALUE - EPHEMERAL_PORT_MIN_VALUE + 1;
6
- /**
7
- * Get a random ephemeral port number in the range suggested by RFC 6335 and the
8
- * Internet Assigned Numbers Authority (IANA) for dynamic or private ports
9
- * (between 49152 and 65535).
10
- *
11
- * @returns A random ephemeral port number.
12
- */
13
- export function getRandomEphemeralPort() {
14
- const draw = new Uint16Array(1);
15
- crypto.getRandomValues(draw);
16
- // 65536 is an exact multiple of the 16384-port range, so the modulo is unbiased.
17
- return EPHEMERAL_PORT_MIN_VALUE + (draw[0] % EPHEMERAL_PORT_COUNT);
18
- }
19
- //# sourceMappingURL=ephemeral-port.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ephemeral-port.js","sourceRoot":"","sources":["../../../src/system/net/ephemeral-port.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C,yDAAyD;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C,MAAM,oBAAoB,GACzB,wBAAwB,GAAG,wBAAwB,GAAG,CAAC,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB;IACrC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,iFAAiF;IACjF,OAAO,wBAAwB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,GAAG,oBAAoB,CAAC,CAAC;AACrE,CAAC"}
@@ -1,20 +0,0 @@
1
- /** Represents an Internet address with IP family and address. */
2
- export type InetAddress = {
3
- /** IP family: 4 for IPv4, 6 for IPv6, or null for unknown family. */
4
- family: 4 | 6 | null;
5
- /** IP address string. */
6
- address: string;
7
- };
8
- /**
9
- * Composes an InetAddress from a family and address. Validates and converts the
10
- * family to ensure it is 4, 6, or null.
11
- *
12
- * @param family The IP family, either as a string ('IPv4', 'IPv6'), number (4,
13
- * 6), or null for unknown.
14
- * @param address The IP address string.
15
- * @returns An InetAddress object.
16
- * @throws {UnsupportedError} If the family is not valid (not 'IPv4'/'IPv6' or
17
- * 4/6 or null).
18
- */
19
- export declare function composeInetAddress(family: string | number | null, address: string): InetAddress;
20
- //# sourceMappingURL=inet-address.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inet-address.d.ts","sourceRoot":"","sources":["../../../src/system/net/inet-address.ts"],"names":[],"mappings":"AAEA,iEAAiE;AACjE,MAAM,MAAM,WAAW,GAAG;IACzB,qEAAqE;IACrE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACrB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC9B,OAAO,EAAE,MAAM,GACb,WAAW,CA6Bb"}
@@ -1,42 +0,0 @@
1
- import { UnsupportedError } from "@ac-kit/core";
2
- /**
3
- * Composes an InetAddress from a family and address. Validates and converts the
4
- * family to ensure it is 4, 6, or null.
5
- *
6
- * @param family The IP family, either as a string ('IPv4', 'IPv6'), number (4,
7
- * 6), or null for unknown.
8
- * @param address The IP address string.
9
- * @returns An InetAddress object.
10
- * @throws {UnsupportedError} If the family is not valid (not 'IPv4'/'IPv6' or
11
- * 4/6 or null).
12
- */
13
- export function composeInetAddress(family, address) {
14
- let validatedFamily;
15
- if (typeof family === "string") {
16
- if (family === "IPv4") {
17
- validatedFamily = 4;
18
- }
19
- else if (family === "IPv6") {
20
- validatedFamily = 6;
21
- }
22
- else {
23
- throw new UnsupportedError(`Unsupported IP family: ${family}. Expected 'IPv4' or 'IPv6'.`);
24
- }
25
- }
26
- else if (typeof family === "number") {
27
- if (family === 4 || family === 6) {
28
- validatedFamily = family;
29
- }
30
- else {
31
- throw new UnsupportedError(`Unsupported IP family: ${family}. Expected 4 (IPv4) or 6 (IPv6).`);
32
- }
33
- }
34
- else {
35
- validatedFamily = null;
36
- }
37
- return {
38
- family: validatedFamily,
39
- address,
40
- };
41
- }
42
- //# sourceMappingURL=inet-address.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inet-address.js","sourceRoot":"","sources":["../../../src/system/net/inet-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUhD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CACjC,MAA8B,EAC9B,OAAe;IAEf,IAAI,eAA6B,CAAC;IAElC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACvB,eAAe,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,eAAe,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,gBAAgB,CACzB,0BAA0B,MAAM,8BAA8B,CAC9D,CAAC;QACH,CAAC;IACF,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,eAAe,GAAG,MAAM,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,gBAAgB,CACzB,0BAA0B,MAAM,kCAAkC,CAClE,CAAC;QACH,CAAC;IACF,CAAC;SAAM,CAAC;QACP,eAAe,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,OAAO;QACN,MAAM,EAAE,eAAe;QACvB,OAAO;KACP,CAAC;AACH,CAAC"}
@@ -1,7 +0,0 @@
1
- import { InetAddress } from "./inet-address.js";
2
- /** Represents an Internet endpoint with IP family, address, and port. */
3
- export type InetEndpoint = InetAddress & {
4
- /** Port number. */
5
- port: number;
6
- };
7
- //# sourceMappingURL=inet-endpoint.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inet-endpoint.d.ts","sourceRoot":"","sources":["../../../src/system/net/inet-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG;IACxC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=inet-endpoint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inet-endpoint.js","sourceRoot":"","sources":["../../../src/system/net/inet-endpoint.ts"],"names":[],"mappings":""}