@ezez/utils 4.3.0 → 4.5.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 (176) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/deserialize.d.ts +1 -1
  3. package/dist/deserialize.d.ts.map +1 -1
  4. package/dist/deserialize.js +2 -1
  5. package/dist/deserialize.js.map +1 -1
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/race.d.ts.map +1 -1
  11. package/dist/race.js.map +1 -1
  12. package/dist/serialize.d.ts.map +1 -1
  13. package/dist/serialize.js.map +1 -1
  14. package/dist/serializeToBuffer/const.d.ts +10 -0
  15. package/dist/serializeToBuffer/const.d.ts.map +1 -0
  16. package/dist/serializeToBuffer/const.js +16 -0
  17. package/dist/serializeToBuffer/const.js.map +1 -0
  18. package/dist/serializeToBuffer/serializeToBuffer.d.ts +5 -0
  19. package/dist/serializeToBuffer/serializeToBuffer.d.ts.map +1 -0
  20. package/dist/serializeToBuffer/serializeToBuffer.js +39 -0
  21. package/dist/serializeToBuffer/serializeToBuffer.js.map +1 -0
  22. package/dist/serializeToBuffer/unserializeFromBuffer.d.ts +5 -0
  23. package/dist/serializeToBuffer/unserializeFromBuffer.d.ts.map +1 -0
  24. package/dist/serializeToBuffer/unserializeFromBuffer.js +52 -0
  25. package/dist/serializeToBuffer/unserializeFromBuffer.js.map +1 -0
  26. package/dist/sortBy.d.ts +1 -1
  27. package/dist/sortBy.d.ts.map +1 -1
  28. package/dist/sortBy.js +2 -7
  29. package/dist/sortBy.js.map +1 -1
  30. package/dist/sortByMultiple.d.ts +3 -0
  31. package/dist/sortByMultiple.d.ts.map +1 -0
  32. package/dist/sortByMultiple.js +18 -0
  33. package/dist/sortByMultiple.js.map +1 -0
  34. package/docs/assets/navigation.js +1 -1
  35. package/docs/assets/search.js +1 -1
  36. package/docs/documents/CHANGELOG.html +81 -67
  37. package/docs/functions/index.cap.html +2 -2
  38. package/docs/functions/index.capitalize.html +2 -2
  39. package/docs/functions/index.coalesce.html +2 -2
  40. package/docs/functions/index.compareArrays.html +2 -2
  41. package/docs/functions/index.compareProps.html +2 -2
  42. package/docs/functions/index.deserialize.html +2 -2
  43. package/docs/functions/index.ensureArray.html +2 -2
  44. package/docs/functions/index.ensureDate.html +2 -2
  45. package/docs/functions/index.ensureError.html +2 -2
  46. package/docs/functions/index.ensurePrefix.html +2 -2
  47. package/docs/functions/index.ensureSuffix.html +2 -2
  48. package/docs/functions/index.ensureTimestamp.html +2 -2
  49. package/docs/functions/index.escapeRegExp.html +2 -2
  50. package/docs/functions/index.formatDate.html +2 -2
  51. package/docs/functions/index.get.html +2 -2
  52. package/docs/functions/index.getMultiple.html +2 -2
  53. package/docs/functions/index.insertSeparator.html +2 -2
  54. package/docs/functions/index.isEmpty.html +2 -2
  55. package/docs/functions/index.isNumericString.html +2 -2
  56. package/docs/functions/index.isPlainObject.html +2 -2
  57. package/docs/functions/index.last.html +2 -2
  58. package/docs/functions/index.later-1.html +2 -2
  59. package/docs/functions/index.mapAsync.html +2 -2
  60. package/docs/functions/index.mapValues.html +2 -2
  61. package/docs/functions/index.match.html +2 -2
  62. package/docs/functions/index.memoize.html +2 -2
  63. package/docs/functions/index.merge.html +2 -2
  64. package/docs/functions/index.mostFrequent.html +2 -2
  65. package/docs/functions/index.noop.html +2 -2
  66. package/docs/functions/index.occurrences.html +2 -2
  67. package/docs/functions/index.omit.html +2 -2
  68. package/docs/functions/index.pick.html +2 -2
  69. package/docs/functions/index.pull.html +2 -2
  70. package/docs/functions/index.race.html +6 -3
  71. package/docs/functions/index.remove.html +2 -2
  72. package/docs/functions/index.removeCommonProperties.html +2 -2
  73. package/docs/functions/index.replace.html +2 -2
  74. package/docs/functions/index.replaceDeep.html +2 -2
  75. package/docs/functions/index.rethrow.html +2 -2
  76. package/docs/functions/index.retry.html +2 -2
  77. package/docs/functions/index.round.html +2 -2
  78. package/docs/functions/index.safe.html +2 -2
  79. package/docs/functions/index.sample.html +2 -2
  80. package/docs/functions/index.samples.html +2 -2
  81. package/docs/functions/index.scale.html +2 -2
  82. package/docs/functions/index.seq.html +2 -2
  83. package/docs/functions/index.seqEarlyBreak.html +2 -2
  84. package/docs/functions/index.serialize.html +3 -4
  85. package/docs/functions/index.serializeToBuffer.html +19 -0
  86. package/docs/functions/index.set.html +2 -2
  87. package/docs/functions/index.setImmutable.html +2 -2
  88. package/docs/functions/index.shuffle.html +2 -2
  89. package/docs/functions/index.sortBy.html +4 -4
  90. package/docs/functions/index.sortByMultiple.html +10 -0
  91. package/docs/functions/index.sortProps.html +2 -2
  92. package/docs/functions/index.stripPrefix.html +2 -2
  93. package/docs/functions/index.stripSuffix.html +2 -2
  94. package/docs/functions/index.throttle.html +2 -2
  95. package/docs/functions/index.toggle.html +2 -2
  96. package/docs/functions/index.trim.html +2 -2
  97. package/docs/functions/index.trimEnd.html +2 -2
  98. package/docs/functions/index.trimStart.html +2 -2
  99. package/docs/functions/index.truthy.html +2 -2
  100. package/docs/functions/index.unique.html +2 -2
  101. package/docs/functions/index.unserializeFromBuffer.html +8 -0
  102. package/docs/functions/index.wait.html +2 -2
  103. package/docs/functions/index.waitFor.html +2 -2
  104. package/docs/functions/index.waitSync.html +2 -2
  105. package/docs/index.html +2 -2
  106. package/docs/interfaces/index.ComparePropsOptions.html +3 -3
  107. package/docs/interfaces/index.GetMultipleSource.html +2 -2
  108. package/docs/interfaces/index.GetSource.html +2 -2
  109. package/docs/interfaces/index.IsNumericStringOptions.html +2 -2
  110. package/docs/interfaces/index.OccurencesOptions.html +2 -2
  111. package/docs/interfaces/index.SetImmutableSource.html +2 -2
  112. package/docs/interfaces/index.SetSource.html +2 -2
  113. package/docs/interfaces/index.ThrottleOptions.html +3 -3
  114. package/docs/interfaces/index.ThrottledFunctionExtras.html +3 -3
  115. package/docs/modules/index.html +7 -2
  116. package/docs/modules.html +2 -2
  117. package/docs/types/index.CustomDeserializers.html +1 -1
  118. package/docs/types/index.CustomSerializers.html +1 -1
  119. package/docs/types/index.Later.html +2 -2
  120. package/docs/types/index.MapValuesFn.html +2 -2
  121. package/docs/types/index.MatchCallback.html +1 -1
  122. package/docs/types/index.MergeTwo.html +2 -2
  123. package/docs/types/index.SeqEarlyBreaker.html +2 -2
  124. package/docs/types/index.SeqFn.html +2 -2
  125. package/docs/types/index.SeqFunctions.html +2 -2
  126. package/docs/types/index.SetImmutablePath.html +2 -2
  127. package/docs/types/index.ThrottledFunction.html +1 -1
  128. package/docs/variables/index.mapValuesUNSET.html +2 -2
  129. package/docs/variables/index.mergeUNSET.html +2 -2
  130. package/esm/deserialize.d.ts +1 -1
  131. package/esm/deserialize.d.ts.map +1 -1
  132. package/esm/deserialize.js +1 -1
  133. package/esm/deserialize.js.map +1 -1
  134. package/esm/index.d.ts +3 -0
  135. package/esm/index.d.ts.map +1 -1
  136. package/esm/index.js +3 -0
  137. package/esm/index.js.map +1 -1
  138. package/esm/race.d.ts.map +1 -1
  139. package/esm/race.js.map +1 -1
  140. package/esm/serialize.d.ts.map +1 -1
  141. package/esm/serialize.js.map +1 -1
  142. package/esm/serializeToBuffer/const.d.ts +10 -0
  143. package/esm/serializeToBuffer/const.d.ts.map +1 -0
  144. package/esm/serializeToBuffer/const.js +10 -0
  145. package/esm/serializeToBuffer/const.js.map +1 -0
  146. package/esm/serializeToBuffer/serializeToBuffer.d.ts +5 -0
  147. package/esm/serializeToBuffer/serializeToBuffer.d.ts.map +1 -0
  148. package/esm/serializeToBuffer/serializeToBuffer.js +36 -0
  149. package/esm/serializeToBuffer/serializeToBuffer.js.map +1 -0
  150. package/esm/serializeToBuffer/unserializeFromBuffer.d.ts +5 -0
  151. package/esm/serializeToBuffer/unserializeFromBuffer.d.ts.map +1 -0
  152. package/esm/serializeToBuffer/unserializeFromBuffer.js +48 -0
  153. package/esm/serializeToBuffer/unserializeFromBuffer.js.map +1 -0
  154. package/esm/sortBy.d.ts +1 -1
  155. package/esm/sortBy.d.ts.map +1 -1
  156. package/esm/sortBy.js +2 -7
  157. package/esm/sortBy.js.map +1 -1
  158. package/esm/sortByMultiple.d.ts +3 -0
  159. package/esm/sortByMultiple.d.ts.map +1 -0
  160. package/esm/sortByMultiple.js +15 -0
  161. package/esm/sortByMultiple.js.map +1 -0
  162. package/package.json +1 -1
  163. package/src/deserialize.ts +1 -1
  164. package/src/index.ts +3 -0
  165. package/src/race.ts +1 -0
  166. package/src/serialize.ts +1 -2
  167. package/src/serializeToBuffer/const.ts +16 -0
  168. package/src/serializeToBuffer/serialization.spec.ts +61 -0
  169. package/src/serializeToBuffer/serializeToBuffer.spec.ts +43 -0
  170. package/src/serializeToBuffer/serializeToBuffer.ts +90 -0
  171. package/src/serializeToBuffer/unserializeFromBuffer.spec.ts +63 -0
  172. package/src/serializeToBuffer/unserializeFromBuffer.ts +75 -0
  173. package/src/sortBy.spec.ts +13 -0
  174. package/src/sortBy.ts +11 -15
  175. package/src/sortByMultiple.spec.ts +87 -0
  176. package/src/sortByMultiple.ts +57 -0
@@ -35,5 +35,5 @@ const deserialize = (serializedString, customDeserializers) => {
35
35
  const parsed = JSON.parse(serializedString, replacer);
36
36
  return hasUndefined ? replaceDeep(parsed, UNDEFINED, undefined) : parsed;
37
37
  };
38
- export { deserialize };
38
+ export { deserialize, deserialize as unserialize };
39
39
  //# sourceMappingURL=deserialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../src/deserialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAsBtC,MAAM,WAAW,GAAG,CAAI,gBAAwB,EAAE,mBAAyC,EAAK,EAAE;IAC9F,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE;QAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,YAAY,GAAG,IAAI,CAAC;gBACpB,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAClC,CAAC;YAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAC5C,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,EAAE,CAAC;gBACrD,OAAO,mBAAmB,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAM,CAAC;IAG3D,OAAO,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7E,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../src/deserialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAsBtC,MAAM,WAAW,GAAG,CAAI,gBAAwB,EAAE,mBAAyC,EAAK,EAAE;IAC9F,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE;QAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,YAAY,GAAG,IAAI,CAAC;gBACpB,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAClC,CAAC;YAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAC5C,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,EAAE,CAAC;gBACrD,OAAO,mBAAmB,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAM,CAAC;IAG3D,OAAO,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7E,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,WAAW,EAAE,CAAC"}
package/esm/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export * from "./serializeToBuffer/serializeToBuffer.js";
2
+ export * from "./serializeToBuffer/unserializeFromBuffer.js";
1
3
  export * from "./ensurePrefix.js";
2
4
  export * from "./ensureSuffix.js";
3
5
  export * from "./cap.js";
@@ -49,6 +51,7 @@ export * from "./set.js";
49
51
  export * from "./setImmutable.js";
50
52
  export * from "./shuffle.js";
51
53
  export * from "./sortBy.js";
54
+ export * from "./sortByMultiple.js";
52
55
  export * from "./sortProps.js";
53
56
  export * from "./stripPrefix.js";
54
57
  export * from "./stripSuffix.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
package/esm/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ export * from "./serializeToBuffer/serializeToBuffer.js";
2
+ export * from "./serializeToBuffer/unserializeFromBuffer.js";
1
3
  export * from "./ensurePrefix.js";
2
4
  export * from "./ensureSuffix.js";
3
5
  export * from "./cap.js";
@@ -49,6 +51,7 @@ export * from "./set.js";
49
51
  export * from "./setImmutable.js";
50
52
  export * from "./shuffle.js";
51
53
  export * from "./sortBy.js";
54
+ export * from "./sortByMultiple.js";
52
55
  export * from "./sortProps.js";
53
56
  export * from "./stripPrefix.js";
54
57
  export * from "./stripSuffix.js";
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
package/esm/race.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"race.d.ts","sourceRoot":"","sources":["../src/race.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,IAAI,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,gBAAyB,KAAG,OAAO,CAAC,CAAC,CAQ3F,CAAC;AAEF,OAAO,EACH,IAAI,GACP,CAAC"}
1
+ {"version":3,"file":"race.d.ts","sourceRoot":"","sources":["../src/race.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,IAAI,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,gBAAyB,KAAG,OAAO,CAAC,CAAC,CAQ3F,CAAC;AAEF,OAAO,EACH,IAAI,GACP,CAAC"}
package/esm/race.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"race.js","sourceRoot":"","sources":["../src/race.ts"],"names":[],"mappings":"AAcA,MAAM,IAAI,GAAG,CAAI,OAAmB,EAAE,OAAe,EAAE,OAAO,GAAG,eAAe,EAAc,EAAE;IAC5F,OAAO,OAAO,CAAC,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAClC,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,CAAC,EAAE,OAAO,CAAC,CAAC;QAChB,CAAC,CAAC;KACL,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EACH,IAAI,GACP,CAAC"}
1
+ {"version":3,"file":"race.js","sourceRoot":"","sources":["../src/race.ts"],"names":[],"mappings":"AAeA,MAAM,IAAI,GAAG,CAAI,OAAmB,EAAE,OAAe,EAAE,OAAO,GAAG,eAAe,EAAc,EAAE;IAC5F,OAAO,OAAO,CAAC,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAClC,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,CAAC,EAAE,OAAO,CAAC,CAAC;QAChB,CAAC,CAAC;KACL,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EACH,IAAI,GACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAKA,KAAK,iBAAiB,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;CACb,CAAC;AAEF,KAAK,OAAO,GAAG;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAoBF,QAAA,MAAM,SAAS,GAAI,MAAM,OAAO,EAAE,oBAAoB,iBAAiB,EAAE,UAAU,OAAO,WA4GzF,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAKA,KAAK,iBAAiB,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,CAAC,EAAE,KAAK,CAAC;CACb,CAAC;AAEF,KAAK,OAAO,GAAG;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAmBF,QAAA,MAAM,SAAS,GAAI,MAAM,OAAO,EAAE,oBAAoB,iBAAiB,EAAE,UAAU,OAAO,WA4GzF,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ declare const BINARY_MARK_BIN = "t";
2
+ declare const BINARY_MARK_STRING = "f";
3
+ declare const BINARY_MARK_JSON = "j";
4
+ declare const BINARY_MARK_MAP: {
5
+ t: string;
6
+ f: string;
7
+ j: string;
8
+ };
9
+ export { BINARY_MARK_BIN, BINARY_MARK_STRING, BINARY_MARK_JSON, BINARY_MARK_MAP, };
10
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/serializeToBuffer/const.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,MAAM,CAAC;AAC5B,QAAA,MAAM,kBAAkB,MAAM,CAAC;AAC/B,QAAA,MAAM,gBAAgB,MAAM,CAAC;AAE7B,QAAA,MAAM,eAAe;;;;CAIpB,CAAC;AAEF,OAAO,EACH,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ const BINARY_MARK_BIN = "t";
2
+ const BINARY_MARK_STRING = "f";
3
+ const BINARY_MARK_JSON = "j";
4
+ const BINARY_MARK_MAP = {
5
+ [BINARY_MARK_BIN]: "binary",
6
+ [BINARY_MARK_STRING]: "string",
7
+ [BINARY_MARK_JSON]: "json",
8
+ };
9
+ export { BINARY_MARK_BIN, BINARY_MARK_STRING, BINARY_MARK_JSON, BINARY_MARK_MAP, };
10
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/serializeToBuffer/const.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,eAAe,GAAG;IACpB,CAAC,eAAe,CAAC,EAAE,QAAQ;IAC3B,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IAC9B,CAAC,gBAAgB,CAAC,EAAE,MAAM;CAC7B,CAAC;AAEF,OAAO,EACH,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAClB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { serialize } from "../serialize.js";
2
+ type SerializeArgs = Parameters<typeof serialize> extends [any, ...infer Rest] ? Rest : never;
3
+ declare const serializeToBuffer: (BufferImplementation: typeof Buffer, serializeArgs: SerializeArgs, ...args: unknown[]) => Buffer;
4
+ export { serializeToBuffer, };
5
+ //# sourceMappingURL=serializeToBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeToBuffer.d.ts","sourceRoot":"","sources":["../../src/serializeToBuffer/serializeToBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAiC9F,QAAA,MAAM,iBAAiB,GACnB,sBAAsB,OAAO,MAAM,EAAE,eAAe,aAAa,EAAE,GAAG,MAAM,OAAO,EAAE,KACtF,MA8CF,CAAC;AAEF,OAAO,EACH,iBAAiB,GACpB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { serialize } from "../serialize.js";
2
+ import { BINARY_MARK_BIN, BINARY_MARK_JSON, BINARY_MARK_STRING } from "./const.js";
3
+ const serializeToBuffer = (BufferImplementation, serializeArgs, ...args) => {
4
+ const separator = BufferImplementation.from([0x0]);
5
+ const convertedArgs = args.map((arg) => {
6
+ if (arg instanceof BufferImplementation) {
7
+ return {
8
+ mark: BINARY_MARK_BIN,
9
+ data: arg,
10
+ };
11
+ }
12
+ if (typeof arg === "string") {
13
+ return {
14
+ mark: BINARY_MARK_STRING,
15
+ data: arg,
16
+ };
17
+ }
18
+ return {
19
+ mark: BINARY_MARK_JSON,
20
+ data: serialize(arg, ...serializeArgs),
21
+ };
22
+ });
23
+ const dataToSend = [];
24
+ let totalLength = 0;
25
+ convertedArgs.forEach((arg) => {
26
+ const len = String(arg.data.length) + arg.mark;
27
+ dataToSend.push(BufferImplementation.from(len, "utf-8"));
28
+ dataToSend.push(separator);
29
+ dataToSend.push(arg.mark === BINARY_MARK_BIN ? arg.data : BufferImplementation.from(arg.data, "utf-8"));
30
+ dataToSend.push(separator);
31
+ totalLength += len.length + separator.length + arg.data.length + separator.length;
32
+ });
33
+ return BufferImplementation.concat(dataToSend, totalLength);
34
+ };
35
+ export { serializeToBuffer, };
36
+ //# sourceMappingURL=serializeToBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeToBuffer.js","sourceRoot":"","sources":["../../src/serializeToBuffer/serializeToBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAmCnF,MAAM,iBAAiB,GAAG,CACtB,oBAAmC,EAAE,aAA4B,EAAE,GAAG,IAAe,EAC/E,EAAE;IACR,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAYnD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACnC,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;YACtC,OAAO;gBACH,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,GAAG;aACO,CAAC;QACzB,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACH,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,GAAG;aACO,CAAC;QACzB,CAAC;QACD,OAAO;YACH,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;SACtB,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QAE/C,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3B,WAAW,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,OAAO,EACH,iBAAiB,GACpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { deserialize } from "../deserialize.js";
2
+ type DeserializeArgs = Parameters<typeof deserialize> extends [any, ...infer Rest] ? Rest : never;
3
+ declare const unserializeFromBuffer: <RT extends any[] = unknown[]>(BufferImplementation: typeof Buffer, deserializeArgs: DeserializeArgs, rawData: Buffer | Uint8Array) => RT;
4
+ export { unserializeFromBuffer, unserializeFromBuffer as deserializeFromBuffer };
5
+ //# sourceMappingURL=unserializeFromBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unserializeFromBuffer.d.ts","sourceRoot":"","sources":["../../src/serializeToBuffer/unserializeFromBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAWlG,QAAA,MAAM,qBAAqB,GAAI,EAAE,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,EACvD,sBAAsB,OAAO,MAAM,EAAE,iBAAiB,eAAe,EAAE,SAAS,MAAM,GAAG,UAAU,KACpG,EAkDF,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,IAAI,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { deserialize } from "../deserialize.js";
2
+ import { BINARY_MARK_BIN, BINARY_MARK_MAP, BINARY_MARK_STRING } from "./const.js";
3
+ const MAX_DATA_PARTS = 4;
4
+ const NOT_FOUND = -1;
5
+ const LAST_CHAR = -1;
6
+ const unserializeFromBuffer = (BufferImplementation, deserializeArgs, rawData) => {
7
+ const intData = rawData instanceof Uint8Array ? rawData : new Uint8Array(rawData);
8
+ if (intData.length === 0) {
9
+ throw new Error("No data to unserialize");
10
+ }
11
+ let startPoint = 0;
12
+ const result = [];
13
+ let i = 0;
14
+ while (i++ < MAX_DATA_PARTS) {
15
+ const dataSplitPoint = intData.indexOf(0, startPoint);
16
+ if (dataSplitPoint === NOT_FOUND) {
17
+ break;
18
+ }
19
+ const lengthBytes = BufferImplementation.from(intData.slice(startPoint, dataSplitPoint)).toString("utf8");
20
+ const binaryMark = lengthBytes.slice(LAST_CHAR);
21
+ if (!Object.keys(BINARY_MARK_MAP).includes(binaryMark)) {
22
+ throw new Error(`Invalid binary mark: ${binaryMark}`);
23
+ }
24
+ const len = Number(lengthBytes.slice(0, lengthBytes.length - 1));
25
+ const dataStringFrom = dataSplitPoint + 1;
26
+ const dataStringTo = dataStringFrom + len;
27
+ const dataBytes = intData.slice(dataStringFrom, dataStringTo);
28
+ if (binaryMark === BINARY_MARK_BIN) {
29
+ result.push(dataBytes);
30
+ }
31
+ else if (binaryMark === BINARY_MARK_STRING) {
32
+ const stringData = BufferImplementation.from(dataBytes).toString("utf8");
33
+ result.push(stringData);
34
+ }
35
+ else {
36
+ const stringData = BufferImplementation.from(dataBytes).toString("utf8");
37
+ const jsonData = deserialize(stringData, ...deserializeArgs);
38
+ result.push(jsonData);
39
+ }
40
+ startPoint = dataStringTo + 1;
41
+ }
42
+ if (result.length === 0) {
43
+ throw new Error("No data found (no split points)");
44
+ }
45
+ return result;
46
+ };
47
+ export { unserializeFromBuffer, unserializeFromBuffer as deserializeFromBuffer };
48
+ //# sourceMappingURL=unserializeFromBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unserializeFromBuffer.js","sourceRoot":"","sources":["../../src/serializeToBuffer/unserializeFromBuffer.ts"],"names":[],"mappings":"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"}
package/esm/sortBy.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- declare const sortBy: <T>(propertyName: keyof T, asc?: boolean, defaultValue?: unknown) => (a: T, b: T) => 0 | 1 | -1;
1
+ declare const sortBy: <T extends Record<string | number | symbol, any>>(propertyName: keyof T, asc?: boolean, defaultValue?: unknown) => (a: T, b: T) => number;
2
2
  export { sortBy, };
3
3
  //# sourceMappingURL=sortBy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sortBy.d.ts","sourceRoot":"","sources":["../src/sortBy.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,GAAI,CAAC,EAAE,cAAc,MAAM,CAAC,EAAE,aAAU,EAAE,eAAc,OAAc,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,eAYjG,CAAC;AAEF,OAAO,EACH,MAAM,GACT,CAAC"}
1
+ {"version":3,"file":"sortBy.d.ts","sourceRoot":"","sources":["../src/sortBy.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAC3D,cAAc,MAAM,CAAC,EAAE,aAAU,EAAE,eAAc,OAAc,MAC7D,GAAG,CAAC,EAAE,GAAG,CAAC,WAGf,CAAC;AAEF,OAAO,EACH,MAAM,GACT,CAAC"}
package/esm/sortBy.js CHANGED
@@ -1,11 +1,6 @@
1
+ import { sortByMultiple } from "./sortByMultiple.js";
1
2
  const sortBy = (propertyName, asc = true, defaultValue = null) => (a, b) => {
2
- if (a[propertyName] === b[propertyName]) {
3
- return 0;
4
- }
5
- if ((a[propertyName] ?? defaultValue) > (b[propertyName] ?? defaultValue)) {
6
- return asc ? 1 : -1;
7
- }
8
- return asc ? -1 : 1;
3
+ return sortByMultiple([propertyName], asc, { [propertyName]: defaultValue })(a, b);
9
4
  };
10
5
  export { sortBy, };
11
6
  //# sourceMappingURL=sortBy.js.map
package/esm/sortBy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sortBy.js","sourceRoot":"","sources":["../src/sortBy.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,GAAG,CAAI,YAAqB,EAAE,GAAG,GAAG,IAAI,EAAE,eAAwB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE;IAClG,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,CAAC;IACb,CAAC;IAGD,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC;QAExE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,OAAO,EACH,MAAM,GACT,CAAC"}
1
+ {"version":3,"file":"sortBy.js","sourceRoot":"","sources":["../src/sortBy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUrD,MAAM,MAAM,GAAG,CACX,YAAqB,EAAE,GAAG,GAAG,IAAI,EAAE,eAAwB,IAAI,EACjE,EAAE,CAAC,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE;IAEhB,OAAO,cAAc,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,YAAY,EAAmC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxH,CAAC,CAAC;AAEF,OAAO,EACH,MAAM,GACT,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const sortByMultiple: <T extends Record<string | number | symbol, any>, K extends (keyof T)[]>(propertyNames: K, ascending?: boolean | Record<K[number], boolean>, defaultValues?: Partial<Record<K[number], any>>) => ((a: T, b: T) => number);
2
+ export { sortByMultiple, };
3
+ //# sourceMappingURL=sortByMultiple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortByMultiple.d.ts","sourceRoot":"","sources":["../src/sortByMultiple.ts"],"names":[],"mappings":"AA2BA,QAAA,MAAM,cAAc,GAEhB,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAC/C,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAErB,eAAe,CAAC,EAChB,YAAW,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAQ,EAEtD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,KAChD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAgBzB,CAAC;AAEF,OAAO,EACH,cAAc,GACjB,CAAC"}
@@ -0,0 +1,15 @@
1
+ const sortByMultiple = (propertyNames, ascending = true, defaultValues) => (a, b) => {
2
+ for (const propertyName of propertyNames) {
3
+ const asc = typeof ascending === "boolean" ? ascending : (ascending[propertyName] ?? true);
4
+ const aBiggerValue = asc ? 1 : -1;
5
+ const bBiggerValue = asc ? -1 : 1;
6
+ const aValue = a[propertyName] ?? defaultValues?.[propertyName];
7
+ const bValue = b[propertyName] ?? defaultValues?.[propertyName];
8
+ if (aValue !== bValue) {
9
+ return (aValue > bValue ? aBiggerValue : bBiggerValue);
10
+ }
11
+ }
12
+ return 0;
13
+ };
14
+ export { sortByMultiple, };
15
+ //# sourceMappingURL=sortByMultiple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortByMultiple.js","sourceRoot":"","sources":["../src/sortByMultiple.ts"],"names":[],"mappings":"AA2BA,MAAM,cAAc,GAAG,CAKnB,aAAgB,EAChB,YAAkD,IAAI,EAEtD,aAA+C,EACvB,EAAE,CAAC,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE;IAC1C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QAEvC,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3F,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAEpB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,EACH,cAAc,GACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ezez/utils",
3
- "version": "4.3.0",
3
+ "version": "4.5.0",
4
4
  "repository": "https://github.com/dzek69/bottom-line.git",
5
5
  "author": "Jacek Nowacki @dzek69 <git-public@dzek.eu>",
6
6
  "license": "MIT",
@@ -69,6 +69,6 @@ const deserialize = <T>(serializedString: string, customDeserializers?: CustomDe
69
69
  return hasUndefined ? replaceDeep(parsed, UNDEFINED, undefined) : parsed;
70
70
  };
71
71
 
72
- export { deserialize };
72
+ export { deserialize, deserialize as unserialize };
73
73
 
74
74
  export type { CustomDeserializers };
package/src/index.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  /* eslint-disable import/max-dependencies */
2
+ export * from "./serializeToBuffer/serializeToBuffer.js";
3
+ export * from "./serializeToBuffer/unserializeFromBuffer.js";
2
4
  export * from "./ensurePrefix.js";
3
5
  export * from "./ensureSuffix.js";
4
6
  export * from "./cap.js";
@@ -50,6 +52,7 @@ export * from "./set.js";
50
52
  export * from "./setImmutable.js";
51
53
  export * from "./shuffle.js";
52
54
  export * from "./sortBy.js";
55
+ export * from "./sortByMultiple.js";
53
56
  export * from "./sortProps.js";
54
57
  export * from "./stripPrefix.js";
55
58
  export * from "./stripSuffix.js";
package/src/race.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  * type Data = { a: number };
8
8
  * const myPromise = new Promise<Data>((resolve) => setTimeout(() => resolve({ a: 1 }), 2000));
9
9
  * const { a } = await race(myPromise, 1000); // You're allowed to destructure the result with TS
10
+ * ```
10
11
  *
11
12
  * @param promise - Your promise
12
13
  * @param timeout - Time in milliseconds to wait for the promise to resolve
package/src/serialize.ts CHANGED
@@ -23,8 +23,7 @@ type Options = {
23
23
  *
24
24
  * It also supports custom serializers, which can be used to serialize custom data types. Each value has a prefix which
25
25
  * specifies the type of the value, custom serializers is a map of these prefixes to functions which can serialize the
26
- * value into a string. IMPORTANT: Because this is using JSON.serialize under the hood if a value to serialize includes
27
- * `toJSON` it won't trigger custom serializer but will be serialized as string. `Date` class defines `toJSON` method!
26
+ * value into a string.
28
27
  *
29
28
  * The extra aim of this function is to produce the same output for "the same" data, regardless of the order of the keys
30
29
  * (which is not guaranteed by JS spec, but in practice it is guaranteed by current implementations of all JS engines),
@@ -0,0 +1,16 @@
1
+ const BINARY_MARK_BIN = "t";
2
+ const BINARY_MARK_STRING = "f";
3
+ const BINARY_MARK_JSON = "j";
4
+
5
+ const BINARY_MARK_MAP = {
6
+ [BINARY_MARK_BIN]: "binary",
7
+ [BINARY_MARK_STRING]: "string",
8
+ [BINARY_MARK_JSON]: "json",
9
+ };
10
+
11
+ export {
12
+ BINARY_MARK_BIN,
13
+ BINARY_MARK_STRING,
14
+ BINARY_MARK_JSON,
15
+ BINARY_MARK_MAP,
16
+ };
@@ -0,0 +1,61 @@
1
+ import must from "must"; // eslint-disable-line @typescript-eslint/no-shadow
2
+
3
+ import { unserializeFromBuffer } from "./unserializeFromBuffer";
4
+ import { serializeToBuffer } from "./serializeToBuffer";
5
+
6
+ const serialize = serializeToBuffer.bind(null, Buffer, []);
7
+ const unserialize = unserializeFromBuffer.bind(null, Buffer, []);
8
+
9
+ describe("serialization", () => {
10
+ it("serializes basic string", async () => {
11
+ const data = ["TEST"];
12
+ must(unserialize(serialize(...data))).eql(data);
13
+ });
14
+
15
+ it("serializes json", async () => {
16
+ const data = [
17
+ { a: 1, b: 2 },
18
+ ];
19
+ must(unserialize(serialize(...data))).eql(data);
20
+ });
21
+
22
+ it("serializes multiple data", async () => {
23
+ const data = [
24
+ "hey",
25
+ 3,
26
+ { a: 1 },
27
+ Buffer.from("test"),
28
+ ];
29
+ const result = unserialize(serialize(...data));
30
+ const buffer = result.pop() as Buffer;
31
+ must(result).eql(data.slice(0, 3));
32
+ must(buffer).be.instanceof(Buffer);
33
+ must(buffer.toString()).equal("test");
34
+ });
35
+
36
+ it("serializes undefined", async () => {
37
+ const data = [undefined];
38
+ const result = unserialize(serialize(...data));
39
+ must(result).have.length(1);
40
+ must(result[0]).be.undefined();
41
+ });
42
+
43
+ it("serializes JSON-looking string", async () => {
44
+ const data = [`"TEST"`];
45
+ must(unserialize(serialize(...data))).eql(data);
46
+ });
47
+
48
+ it("serializes huge object", async () => {
49
+ const data = [{
50
+ a: 1,
51
+ b: false,
52
+ c: true,
53
+ d: "test",
54
+ e: null,
55
+ f: undefined,
56
+ g: [1, 2, 3],
57
+ h: { a: 1, b: [2] },
58
+ }];
59
+ must(unserialize(serialize(...data))).eql(data);
60
+ });
61
+ });
@@ -0,0 +1,43 @@
1
+ import must from "must"; // eslint-disable-line @typescript-eslint/no-shadow
2
+
3
+ import { serializeToBuffer } from "./serializeToBuffer";
4
+
5
+ const serialize = serializeToBuffer.bind(null, Buffer, []);
6
+
7
+ describe("serialize", () => {
8
+ it("serializes basic string", async () => {
9
+ // len 4, type string, data "test", separator
10
+ must(serialize("test").toString("hex")).equal("3466007465737400");
11
+ });
12
+
13
+ it("serializes multiple strings", async () => {
14
+ // len 4, type string, data "test", separator
15
+ must(serialize("test", "test").toString("hex")).equal("34660074657374003466007465737400");
16
+ });
17
+
18
+ it("serializes basic buffer", async () => {
19
+ // len 4, type bin, data "test", separator
20
+ must(serialize(Buffer.from("test")).toString("hex")).equal("3474007465737400");
21
+ });
22
+
23
+ it("serializes both buffer and string", async () => {
24
+ // len 4, type bin, data "test", separator, len 4, bin false, data "test", separator
25
+ must(serialize(Buffer.from("test"), "test").toString("hex")).equal("34740074657374003466007465737400");
26
+ });
27
+
28
+ it("serializes JSON-looking string", async () => {
29
+ // len 6, type string, data "test", separator
30
+ must(serialize(`"test"`).toString("hex")).equal("36660022746573742200");
31
+ });
32
+
33
+ it("serializes JSON-serialized string", async () => {
34
+ // len 8, type string, data "test", separator
35
+ must(serialize(`"s:test"`).toString("hex")).equal("38660022733a746573742200");
36
+ });
37
+
38
+ it("serializes number", async () => {
39
+ // len 5, type json, data "n:1", separator
40
+ must(serialize(1).toString("hex")).equal("356a00226e3a312200");
41
+ });
42
+ // TODO more tests
43
+ });
@@ -0,0 +1,90 @@
1
+ import { serialize } from "../serialize.js";
2
+
3
+ import { BINARY_MARK_BIN, BINARY_MARK_JSON, BINARY_MARK_STRING } from "./const.js";
4
+
5
+ type SerializeArgs = Parameters<typeof serialize> extends [any, ...infer Rest] ? Rest : never; // eslint-disable-line @typescript-eslint/no-explicit-any
6
+
7
+ /**
8
+ * Serialize any data to a Buffer, useful when working with web sockets or other binary protocols.
9
+ * Make sure to understand how {@link serialize} works before using this function.
10
+ *
11
+ * To make this function work in browsers it accepts a BufferImplementation parameter.
12
+ * To make the serialization customizable it accepts a serializeArgs parameter.
13
+ * It's therefore recommended to first prepare the function with bind, like:
14
+ * @example
15
+ * ```ts
16
+ * import { serializeToBuffer as serializeRaw } from "@ezez/utils";
17
+ * import { Buffer } from "buffer/"; // skip import in Node.js
18
+ *
19
+ * // prepare the function:
20
+ * const serializeToBuffer = serializeRaw.bind(null, Buffer, []); // array is customization params for serialize
21
+ *
22
+ * const serialized = serializeToBuffer("test", 1, { test: "test" });
23
+ * ```
24
+ *
25
+ * Otherwise pass the params each time:
26
+ * ```typescript
27
+ * import { serializeToBuffer as serializeRaw } from "@ezez/utils";
28
+ * const serialized = serializeToBuffer(Buffer, [], "test", 1, { test: "test" });
29
+ * const otherSerialized = serializeToBuffer(Buffer, [], any, other, data);
30
+ * ```
31
+ * @param BufferImplementation - Buffer implementation, in browsers use `buffer` npm package
32
+ * and import it from `buffer/`, in Node.js simply pass `Buffer`.
33
+ * @param serializeArgs - [customSerializers, options] - optional arguments if you need to serialize custom data types,
34
+ * see: {@link serialize}
35
+ * @param args - any data to serialize, can be a Buffer, string or any other data type
36
+ * @returns Buffer - serialized data
37
+ */
38
+ const serializeToBuffer = (
39
+ BufferImplementation: typeof Buffer, serializeArgs: SerializeArgs, ...args: unknown[]
40
+ ): Buffer => {
41
+ const separator = BufferImplementation.from([0x0]);
42
+ type DataType = {
43
+ mark: typeof BINARY_MARK_BIN;
44
+ data: Buffer;
45
+ } | {
46
+ mark: typeof BINARY_MARK_STRING;
47
+ data: string;
48
+ } | {
49
+ mark: typeof BINARY_MARK_JSON;
50
+ data: unknown;
51
+ };
52
+
53
+ const convertedArgs = args.map((arg) => {
54
+ if (arg instanceof BufferImplementation) {
55
+ return {
56
+ mark: BINARY_MARK_BIN,
57
+ data: arg,
58
+ } satisfies DataType;
59
+ }
60
+ if (typeof arg === "string") {
61
+ return {
62
+ mark: BINARY_MARK_STRING,
63
+ data: arg,
64
+ } satisfies DataType;
65
+ }
66
+ return {
67
+ mark: BINARY_MARK_JSON,
68
+ data: serialize(arg, ...serializeArgs),
69
+ } satisfies DataType;
70
+ });
71
+ const dataToSend: Buffer[] = [];
72
+ let totalLength = 0;
73
+ convertedArgs.forEach((arg) => {
74
+ const len = String(arg.data.length) + arg.mark;
75
+
76
+ dataToSend.push(BufferImplementation.from(len, "utf-8"));
77
+ dataToSend.push(separator);
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
79
+ dataToSend.push(arg.mark === BINARY_MARK_BIN ? arg.data : BufferImplementation.from(arg.data, "utf-8"));
80
+ dataToSend.push(separator);
81
+
82
+ totalLength += len.length + separator.length + arg.data.length + separator.length;
83
+ });
84
+
85
+ return BufferImplementation.concat(dataToSend, totalLength);
86
+ };
87
+
88
+ export {
89
+ serializeToBuffer,
90
+ };