@jsonjoy.com/json-pack 1.20.0 → 17.59.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 (344) hide show
  1. package/lib/JsonPackExtension.d.ts +8 -0
  2. package/lib/JsonPackExtension.js +8 -0
  3. package/lib/JsonPackExtension.js.map +1 -1
  4. package/lib/JsonPackMpint.d.ts +25 -0
  5. package/lib/JsonPackMpint.js +31 -1
  6. package/lib/JsonPackMpint.js.map +1 -1
  7. package/lib/JsonPackValue.d.ts +10 -0
  8. package/lib/JsonPackValue.js +10 -0
  9. package/lib/JsonPackValue.js.map +1 -1
  10. package/lib/avro/AvroDecoder.d.ts +67 -0
  11. package/lib/avro/AvroDecoder.js +77 -5
  12. package/lib/avro/AvroDecoder.js.map +1 -1
  13. package/lib/avro/AvroEncoder.d.ts +71 -0
  14. package/lib/avro/AvroEncoder.js +90 -12
  15. package/lib/avro/AvroEncoder.js.map +1 -1
  16. package/lib/avro/AvroSchemaDecoder.d.ts +53 -0
  17. package/lib/avro/AvroSchemaDecoder.js +60 -3
  18. package/lib/avro/AvroSchemaDecoder.js.map +1 -1
  19. package/lib/avro/AvroSchemaEncoder.d.ts +65 -0
  20. package/lib/avro/AvroSchemaEncoder.js +84 -5
  21. package/lib/avro/AvroSchemaEncoder.js.map +1 -1
  22. package/lib/avro/AvroSchemaValidator.d.ts +10 -0
  23. package/lib/avro/AvroSchemaValidator.js +18 -1
  24. package/lib/avro/AvroSchemaValidator.js.map +1 -1
  25. package/lib/avro/types.d.ts +31 -0
  26. package/lib/avro/types.js +4 -0
  27. package/lib/avro/types.js.map +1 -1
  28. package/lib/bencode/BencodeDecoder.js +9 -9
  29. package/lib/bencode/BencodeDecoder.js.map +1 -1
  30. package/lib/bencode/BencodeEncoder.d.ts +5 -0
  31. package/lib/bencode/BencodeEncoder.js +25 -20
  32. package/lib/bencode/BencodeEncoder.js.map +1 -1
  33. package/lib/bson/BsonDecoder.js +48 -33
  34. package/lib/bson/BsonDecoder.js.map +1 -1
  35. package/lib/bson/BsonEncoder.js +11 -3
  36. package/lib/bson/BsonEncoder.js.map +1 -1
  37. package/lib/cbor/CborDecoder.d.ts +24 -0
  38. package/lib/cbor/CborDecoder.js +94 -56
  39. package/lib/cbor/CborDecoder.js.map +1 -1
  40. package/lib/cbor/CborDecoderBase.d.ts +1 -0
  41. package/lib/cbor/CborDecoderBase.js +63 -53
  42. package/lib/cbor/CborDecoderBase.js.map +1 -1
  43. package/lib/cbor/CborEncoder.d.ts +5 -0
  44. package/lib/cbor/CborEncoder.js +9 -3
  45. package/lib/cbor/CborEncoder.js.map +1 -1
  46. package/lib/cbor/CborEncoderFast.d.ts +7 -0
  47. package/lib/cbor/CborEncoderFast.js +22 -14
  48. package/lib/cbor/CborEncoderFast.js.map +1 -1
  49. package/lib/cbor/CborEncoderStable.d.ts +1 -0
  50. package/lib/cbor/CborEncoderStable.js +2 -1
  51. package/lib/cbor/CborEncoderStable.js.map +1 -1
  52. package/lib/cbor/shared.d.ts +1 -1
  53. package/lib/codecs/Codecs.d.ts +1 -1
  54. package/lib/codecs/cbor.js +1 -1
  55. package/lib/codecs/cbor.js.map +1 -1
  56. package/lib/codecs/json.js +1 -1
  57. package/lib/codecs/json.js.map +1 -1
  58. package/lib/codecs/msgpack.js +1 -1
  59. package/lib/codecs/msgpack.js.map +1 -1
  60. package/lib/ejson/EjsonDecoder.d.ts +5 -0
  61. package/lib/ejson/EjsonDecoder.js +72 -37
  62. package/lib/ejson/EjsonDecoder.js.map +1 -1
  63. package/lib/ejson/EjsonEncoder.d.ts +5 -0
  64. package/lib/ejson/EjsonEncoder.js +149 -114
  65. package/lib/ejson/EjsonEncoder.js.map +1 -1
  66. package/lib/ejson/index.js +1 -0
  67. package/lib/ejson/index.js.map +1 -1
  68. package/lib/ion/Import.d.ts +1 -1
  69. package/lib/ion/Import.js.map +1 -1
  70. package/lib/ion/IonDecoder.d.ts +0 -1
  71. package/lib/ion/IonDecoder.js +4 -3
  72. package/lib/ion/IonDecoder.js.map +1 -1
  73. package/lib/ion/IonDecoderBase.js +29 -18
  74. package/lib/ion/IonDecoderBase.js.map +1 -1
  75. package/lib/ion/IonEncoderFast.d.ts +1 -1
  76. package/lib/ion/IonEncoderFast.js +30 -30
  77. package/lib/ion/IonEncoderFast.js.map +1 -1
  78. package/lib/ion/ast.d.ts +4 -1
  79. package/lib/ion/symbols.d.ts +1 -1
  80. package/lib/json/JsonDecoder.js +72 -66
  81. package/lib/json/JsonDecoder.js.map +1 -1
  82. package/lib/json/JsonDecoderDag.js +14 -0
  83. package/lib/json/JsonDecoderDag.js.map +1 -1
  84. package/lib/json/JsonDecoderPartial.d.ts +22 -0
  85. package/lib/json/JsonDecoderPartial.js +30 -8
  86. package/lib/json/JsonDecoderPartial.js.map +1 -1
  87. package/lib/json/JsonEncoder.d.ts +5 -0
  88. package/lib/json/JsonEncoder.js +68 -54
  89. package/lib/json/JsonEncoder.js.map +1 -1
  90. package/lib/json/JsonEncoderDag.d.ts +17 -0
  91. package/lib/json/JsonEncoderDag.js +27 -10
  92. package/lib/json/JsonEncoderDag.js.map +1 -1
  93. package/lib/json/JsonEncoderStable.js +5 -5
  94. package/lib/json/JsonEncoderStable.js.map +1 -1
  95. package/lib/json-binary/codec.d.ts +8 -1
  96. package/lib/json-binary/codec.js +7 -0
  97. package/lib/json-binary/codec.js.map +1 -1
  98. package/lib/msgpack/MsgPackDecoder.d.ts +27 -0
  99. package/lib/msgpack/MsgPackDecoder.js +55 -23
  100. package/lib/msgpack/MsgPackDecoder.js.map +1 -1
  101. package/lib/msgpack/MsgPackDecoderFast.d.ts +8 -0
  102. package/lib/msgpack/MsgPackDecoderFast.js +14 -5
  103. package/lib/msgpack/MsgPackDecoderFast.js.map +1 -1
  104. package/lib/msgpack/MsgPackEncoder.d.ts +3 -0
  105. package/lib/msgpack/MsgPackEncoder.js +7 -4
  106. package/lib/msgpack/MsgPackEncoder.js.map +1 -1
  107. package/lib/msgpack/MsgPackEncoderFast.d.ts +26 -4
  108. package/lib/msgpack/MsgPackEncoderFast.js +31 -0
  109. package/lib/msgpack/MsgPackEncoderFast.js.map +1 -1
  110. package/lib/msgpack/MsgPackEncoderStable.d.ts +3 -0
  111. package/lib/msgpack/MsgPackEncoderStable.js +3 -0
  112. package/lib/msgpack/MsgPackEncoderStable.js.map +1 -1
  113. package/lib/msgpack/MsgPackToJsonConverter.d.ts +30 -4
  114. package/lib/msgpack/MsgPackToJsonConverter.js +32 -5
  115. package/lib/msgpack/MsgPackToJsonConverter.js.map +1 -1
  116. package/lib/msgpack/index.d.ts +29 -0
  117. package/lib/msgpack/index.js +30 -0
  118. package/lib/msgpack/index.js.map +1 -1
  119. package/lib/msgpack/shallow-read.js +7 -7
  120. package/lib/msgpack/shallow-read.js.map +1 -1
  121. package/lib/msgpack/types.d.ts +1 -0
  122. package/lib/msgpack/util.d.ts +1 -1
  123. package/lib/nfs/v3/FullNfsv3Encoder.d.ts +3 -3
  124. package/lib/nfs/v3/FullNfsv3Encoder.js +3 -3
  125. package/lib/nfs/v3/FullNfsv3Encoder.js.map +1 -1
  126. package/lib/nfs/v3/Nfsv3Decoder.js +51 -50
  127. package/lib/nfs/v3/Nfsv3Decoder.js.map +1 -1
  128. package/lib/nfs/v3/Nfsv3Encoder.d.ts +2 -2
  129. package/lib/nfs/v3/Nfsv3Encoder.js +52 -52
  130. package/lib/nfs/v3/Nfsv3Encoder.js.map +1 -1
  131. package/lib/nfs/v3/constants.d.ts +34 -0
  132. package/lib/nfs/v3/constants.js +4 -0
  133. package/lib/nfs/v3/constants.js.map +1 -1
  134. package/lib/nfs/v3/locks/NlmDecoder.js +20 -20
  135. package/lib/nfs/v3/locks/NlmDecoder.js.map +1 -1
  136. package/lib/nfs/v3/locks/NlmEncoder.d.ts +2 -2
  137. package/lib/nfs/v3/locks/NlmEncoder.js +20 -20
  138. package/lib/nfs/v3/locks/NlmEncoder.js.map +1 -1
  139. package/lib/nfs/v3/locks/constants.d.ts +9 -0
  140. package/lib/nfs/v3/locks/messages.d.ts +58 -1
  141. package/lib/nfs/v3/locks/messages.js +54 -0
  142. package/lib/nfs/v3/locks/messages.js.map +1 -1
  143. package/lib/nfs/v3/locks/structs.d.ts +15 -0
  144. package/lib/nfs/v3/locks/structs.js +15 -0
  145. package/lib/nfs/v3/locks/structs.js.map +1 -1
  146. package/lib/nfs/v3/messages.d.ts +249 -0
  147. package/lib/nfs/v3/messages.js +249 -0
  148. package/lib/nfs/v3/messages.js.map +1 -1
  149. package/lib/nfs/v3/mount/MountDecoder.js +12 -12
  150. package/lib/nfs/v3/mount/MountEncoder.d.ts +2 -2
  151. package/lib/nfs/v3/mount/MountEncoder.js +13 -13
  152. package/lib/nfs/v3/mount/MountEncoder.js.map +1 -1
  153. package/lib/nfs/v3/mount/constants.d.ts +9 -0
  154. package/lib/nfs/v3/mount/messages.d.ts +31 -1
  155. package/lib/nfs/v3/mount/messages.js +27 -0
  156. package/lib/nfs/v3/mount/messages.js.map +1 -1
  157. package/lib/nfs/v3/mount/structs.d.ts +15 -0
  158. package/lib/nfs/v3/mount/structs.js +15 -0
  159. package/lib/nfs/v3/mount/structs.js.map +1 -1
  160. package/lib/nfs/v3/structs.d.ts +78 -0
  161. package/lib/nfs/v3/structs.js +78 -0
  162. package/lib/nfs/v3/structs.js.map +1 -1
  163. package/lib/nfs/v4/Nfsv4Decoder.d.ts +14 -12
  164. package/lib/nfs/v4/Nfsv4Decoder.js +241 -165
  165. package/lib/nfs/v4/Nfsv4Decoder.js.map +1 -1
  166. package/lib/nfs/v4/Nfsv4Encoder.d.ts +6 -93
  167. package/lib/nfs/v4/Nfsv4Encoder.js +8 -824
  168. package/lib/nfs/v4/Nfsv4Encoder.js.map +1 -1
  169. package/lib/nfs/v4/Nfsv4FullEncoder.d.ts +32 -0
  170. package/lib/nfs/v4/Nfsv4FullEncoder.js +72 -0
  171. package/lib/nfs/v4/Nfsv4FullEncoder.js.map +1 -0
  172. package/lib/nfs/v4/attributes.d.ts +79 -0
  173. package/lib/nfs/v4/attributes.js +265 -0
  174. package/lib/nfs/v4/attributes.js.map +1 -0
  175. package/lib/nfs/v4/builder.d.ts +333 -0
  176. package/lib/nfs/v4/builder.js +460 -0
  177. package/lib/nfs/v4/builder.js.map +1 -0
  178. package/lib/nfs/v4/client/NfsFsDir.d.ts +23 -0
  179. package/lib/nfs/v4/client/NfsFsDir.js +132 -0
  180. package/lib/nfs/v4/client/NfsFsDir.js.map +1 -0
  181. package/lib/nfs/v4/client/NfsFsDirent.d.ts +17 -0
  182. package/lib/nfs/v4/client/NfsFsDirent.js +35 -0
  183. package/lib/nfs/v4/client/NfsFsDirent.js.map +1 -0
  184. package/lib/nfs/v4/client/NfsFsFileHandle.d.ts +35 -0
  185. package/lib/nfs/v4/client/NfsFsFileHandle.js +271 -0
  186. package/lib/nfs/v4/client/NfsFsFileHandle.js.map +1 -0
  187. package/lib/nfs/v4/client/NfsFsStats.d.ts +34 -0
  188. package/lib/nfs/v4/client/NfsFsStats.js +52 -0
  189. package/lib/nfs/v4/client/NfsFsStats.js.map +1 -0
  190. package/lib/nfs/v4/client/Nfsv4FsClient.d.ts +53 -0
  191. package/lib/nfs/v4/client/Nfsv4FsClient.js +812 -0
  192. package/lib/nfs/v4/client/Nfsv4FsClient.js.map +1 -0
  193. package/lib/nfs/v4/client/Nfsv4TcpClient.d.ts +41 -0
  194. package/lib/nfs/v4/client/Nfsv4TcpClient.js +216 -0
  195. package/lib/nfs/v4/client/Nfsv4TcpClient.js.map +1 -0
  196. package/lib/nfs/v4/client/types.d.ts +9 -0
  197. package/lib/nfs/v4/client/types.js +3 -0
  198. package/lib/nfs/v4/client/types.js.map +1 -0
  199. package/lib/nfs/v4/constants.d.ts +80 -0
  200. package/lib/nfs/v4/constants.js +4 -0
  201. package/lib/nfs/v4/constants.js.map +1 -1
  202. package/lib/nfs/v4/format.d.ts +23 -0
  203. package/lib/nfs/v4/format.js +870 -0
  204. package/lib/nfs/v4/format.js.map +1 -0
  205. package/lib/nfs/v4/index.d.ts +3 -1
  206. package/lib/nfs/v4/index.js +3 -1
  207. package/lib/nfs/v4/index.js.map +1 -1
  208. package/lib/nfs/v4/messages.d.ts +208 -90
  209. package/lib/nfs/v4/messages.js +585 -1
  210. package/lib/nfs/v4/messages.js.map +1 -1
  211. package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.d.ts +30 -0
  212. package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.js +176 -0
  213. package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.js.map +1 -0
  214. package/lib/nfs/v4/server/Nfsv4Connection.d.ts +45 -0
  215. package/lib/nfs/v4/server/Nfsv4Connection.js +163 -0
  216. package/lib/nfs/v4/server/Nfsv4Connection.js.map +1 -0
  217. package/lib/nfs/v4/server/Nfsv4TcpServer.d.ts +25 -0
  218. package/lib/nfs/v4/server/Nfsv4TcpServer.js +92 -0
  219. package/lib/nfs/v4/server/Nfsv4TcpServer.js.map +1 -0
  220. package/lib/nfs/v4/server/operations/ByteRangeLock.d.ts +79 -0
  221. package/lib/nfs/v4/server/operations/ByteRangeLock.js +63 -0
  222. package/lib/nfs/v4/server/operations/ByteRangeLock.js.map +1 -0
  223. package/lib/nfs/v4/server/operations/ClientRecord.d.ts +110 -0
  224. package/lib/nfs/v4/server/operations/ClientRecord.js +70 -0
  225. package/lib/nfs/v4/server/operations/ClientRecord.js.map +1 -0
  226. package/lib/nfs/v4/server/operations/FilesystemStats.d.ts +30 -0
  227. package/lib/nfs/v4/server/operations/FilesystemStats.js +30 -0
  228. package/lib/nfs/v4/server/operations/FilesystemStats.js.map +1 -0
  229. package/lib/nfs/v4/server/operations/LockOwnerState.d.ts +82 -0
  230. package/lib/nfs/v4/server/operations/LockOwnerState.js +57 -0
  231. package/lib/nfs/v4/server/operations/LockOwnerState.js.map +1 -0
  232. package/lib/nfs/v4/server/operations/LockStateid.d.ts +64 -0
  233. package/lib/nfs/v4/server/operations/LockStateid.js +58 -0
  234. package/lib/nfs/v4/server/operations/LockStateid.js.map +1 -0
  235. package/lib/nfs/v4/server/operations/Nfsv4Operations.d.ts +45 -0
  236. package/lib/nfs/v4/server/operations/Nfsv4Operations.js +3 -0
  237. package/lib/nfs/v4/server/operations/Nfsv4Operations.js.map +1 -0
  238. package/lib/nfs/v4/server/operations/Nfsv4OperationsNotImpl.d.ts +42 -0
  239. package/lib/nfs/v4/server/operations/Nfsv4OperationsNotImpl.js +159 -0
  240. package/lib/nfs/v4/server/operations/Nfsv4OperationsNotImpl.js.map +1 -0
  241. package/lib/nfs/v4/server/operations/OpenFileState.d.ts +102 -0
  242. package/lib/nfs/v4/server/operations/OpenFileState.js +68 -0
  243. package/lib/nfs/v4/server/operations/OpenFileState.js.map +1 -0
  244. package/lib/nfs/v4/server/operations/OpenOwnerState.d.ts +83 -0
  245. package/lib/nfs/v4/server/operations/OpenOwnerState.js +58 -0
  246. package/lib/nfs/v4/server/operations/OpenOwnerState.js.map +1 -0
  247. package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.d.ts +169 -0
  248. package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.js +1474 -0
  249. package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.js.map +1 -0
  250. package/lib/nfs/v4/server/operations/node/attrs.d.ts +17 -0
  251. package/lib/nfs/v4/server/operations/node/attrs.js +275 -0
  252. package/lib/nfs/v4/server/operations/node/attrs.js.map +1 -0
  253. package/lib/nfs/v4/server/operations/node/fh.d.ts +93 -0
  254. package/lib/nfs/v4/server/operations/node/fh.js +209 -0
  255. package/lib/nfs/v4/server/operations/node/fh.js.map +1 -0
  256. package/lib/nfs/v4/server/operations/node/util.d.ts +4 -0
  257. package/lib/nfs/v4/server/operations/node/util.js +17 -0
  258. package/lib/nfs/v4/server/operations/node/util.js.map +1 -0
  259. package/lib/nfs/v4/server/types.d.ts +4 -0
  260. package/lib/nfs/v4/server/types.js +3 -0
  261. package/lib/nfs/v4/server/types.js.map +1 -0
  262. package/lib/nfs/v4/server/util.d.ts +5 -0
  263. package/lib/nfs/v4/server/util.js +184 -0
  264. package/lib/nfs/v4/server/util.js.map +1 -0
  265. package/lib/nfs/v4/structs.d.ts +243 -56
  266. package/lib/nfs/v4/structs.js +367 -17
  267. package/lib/nfs/v4/structs.js.map +1 -1
  268. package/lib/resp/RespDecoder.d.ts +9 -0
  269. package/lib/resp/RespDecoder.js +93 -76
  270. package/lib/resp/RespDecoder.js.map +1 -1
  271. package/lib/resp/RespEncoder.d.ts +8 -0
  272. package/lib/resp/RespEncoder.js +107 -89
  273. package/lib/resp/RespEncoder.js.map +1 -1
  274. package/lib/resp/RespEncoderLegacy.d.ts +3 -0
  275. package/lib/resp/RespEncoderLegacy.js +7 -4
  276. package/lib/resp/RespEncoderLegacy.js.map +1 -1
  277. package/lib/resp/RespStreamingDecoder.d.ts +48 -0
  278. package/lib/resp/RespStreamingDecoder.js +48 -0
  279. package/lib/resp/RespStreamingDecoder.js.map +1 -1
  280. package/lib/resp/constants.d.ts +19 -19
  281. package/lib/rm/RmRecordDecoder.js.map +1 -1
  282. package/lib/rm/RmRecordEncoder.d.ts +17 -1
  283. package/lib/rm/RmRecordEncoder.js +40 -1
  284. package/lib/rm/RmRecordEncoder.js.map +1 -1
  285. package/lib/rpc/RpcMessageDecoder.d.ts +1 -1
  286. package/lib/rpc/RpcMessageDecoder.js +11 -8
  287. package/lib/rpc/RpcMessageDecoder.js.map +1 -1
  288. package/lib/rpc/RpcMessageEncoder.d.ts +2 -2
  289. package/lib/rpc/RpcMessageEncoder.js +6 -6
  290. package/lib/rpc/RpcMessageEncoder.js.map +1 -1
  291. package/lib/rpc/constants.d.ts +76 -28
  292. package/lib/rpc/constants.js +10 -0
  293. package/lib/rpc/constants.js.map +1 -1
  294. package/lib/ssh/SshDecoder.d.ts +47 -1
  295. package/lib/ssh/SshDecoder.js +52 -2
  296. package/lib/ssh/SshDecoder.js.map +1 -1
  297. package/lib/ssh/SshEncoder.d.ts +70 -1
  298. package/lib/ssh/SshEncoder.js +81 -8
  299. package/lib/ssh/SshEncoder.js.map +1 -1
  300. package/lib/ssh/index.d.ts +6 -0
  301. package/lib/ssh/index.js +6 -0
  302. package/lib/ssh/index.js.map +1 -1
  303. package/lib/ubjson/UbjsonDecoder.js +1 -1
  304. package/lib/ubjson/UbjsonDecoder.js.map +1 -1
  305. package/lib/ubjson/UbjsonEncoder.js +6 -5
  306. package/lib/ubjson/UbjsonEncoder.js.map +1 -1
  307. package/lib/util/CompressionTable.js +4 -4
  308. package/lib/util/CompressionTable.js.map +1 -1
  309. package/lib/util/DecompressionTable.js +3 -2
  310. package/lib/util/DecompressionTable.js.map +1 -1
  311. package/lib/ws/WsFrameDecoder.d.ts +18 -0
  312. package/lib/ws/WsFrameDecoder.js +18 -0
  313. package/lib/ws/WsFrameDecoder.js.map +1 -1
  314. package/lib/ws/WsFrameEncoder.d.ts +1 -1
  315. package/lib/ws/WsFrameEncoder.js +3 -3
  316. package/lib/ws/WsFrameEncoder.js.map +1 -1
  317. package/lib/ws/constants.js +5 -0
  318. package/lib/ws/constants.js.map +1 -1
  319. package/lib/xdr/XdrDecoder.d.ts +62 -0
  320. package/lib/xdr/XdrDecoder.js +73 -6
  321. package/lib/xdr/XdrDecoder.js.map +1 -1
  322. package/lib/xdr/XdrEncoder.d.ts +71 -0
  323. package/lib/xdr/XdrEncoder.js +88 -13
  324. package/lib/xdr/XdrEncoder.js.map +1 -1
  325. package/lib/xdr/XdrSchemaDecoder.d.ts +40 -0
  326. package/lib/xdr/XdrSchemaDecoder.js +52 -0
  327. package/lib/xdr/XdrSchemaDecoder.js.map +1 -1
  328. package/lib/xdr/XdrSchemaEncoder.d.ts +5 -0
  329. package/lib/xdr/XdrSchemaEncoder.js +9 -0
  330. package/lib/xdr/XdrSchemaEncoder.js.map +1 -1
  331. package/lib/xdr/XdrSchemaValidator.d.ts +9 -0
  332. package/lib/xdr/XdrSchemaValidator.js +42 -11
  333. package/lib/xdr/XdrSchemaValidator.js.map +1 -1
  334. package/lib/xdr/XdrUnion.d.ts +5 -0
  335. package/lib/xdr/XdrUnion.js +5 -0
  336. package/lib/xdr/XdrUnion.js.map +1 -1
  337. package/lib/xdr/index.d.ts +14 -0
  338. package/lib/xdr/index.js +14 -0
  339. package/lib/xdr/index.js.map +1 -1
  340. package/lib/xdr/types.d.ts +52 -0
  341. package/package.json +35 -56
  342. package/lib/nfs/v4/FullNfsv4Encoder.d.ts +0 -28
  343. package/lib/nfs/v4/FullNfsv4Encoder.js +0 -73
  344. package/lib/nfs/v4/FullNfsv4Encoder.js.map +0 -1
@@ -1,7 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XdrSchemaValidator = void 0;
4
+ /**
5
+ * XDR schema validator for validating XDR schemas and values according to RFC 4506.
6
+ */
4
7
  class XdrSchemaValidator {
8
+ /**
9
+ * Validates an XDR schema structure.
10
+ */
5
11
  validateSchema(schema) {
6
12
  try {
7
13
  return this.validateSchemaInternal(schema);
@@ -10,6 +16,9 @@ class XdrSchemaValidator {
10
16
  return false;
11
17
  }
12
18
  }
19
+ /**
20
+ * Validates if a value conforms to the given XDR schema.
21
+ */
13
22
  validateValue(value, schema) {
14
23
  try {
15
24
  return this.validateValueInternal(value, schema);
@@ -23,6 +32,7 @@ class XdrSchemaValidator {
23
32
  return false;
24
33
  }
25
34
  switch (schema.type) {
35
+ // Primitive types
26
36
  case 'void':
27
37
  case 'int':
28
38
  case 'unsigned_int':
@@ -35,12 +45,14 @@ class XdrSchemaValidator {
35
45
  return true;
36
46
  case 'enum':
37
47
  return this.validateEnumSchema(schema);
48
+ // Wide primitive types
38
49
  case 'opaque':
39
50
  return this.validateOpaqueSchema(schema);
40
51
  case 'vopaque':
41
52
  return this.validateVarlenOpaqueSchema(schema);
42
53
  case 'string':
43
54
  return this.validateStringSchema(schema);
55
+ // Composite types
44
56
  case 'array':
45
57
  return this.validateArraySchema(schema);
46
58
  case 'varray':
@@ -63,9 +75,11 @@ class XdrSchemaValidator {
63
75
  }
64
76
  const values = Object.values(schema.values);
65
77
  const uniqueValues = new Set(values);
78
+ // Check for duplicate values
66
79
  if (values.length !== uniqueValues.size) {
67
80
  return false;
68
81
  }
82
+ // Check that all values are integers
69
83
  return values.every((value) => Number.isInteger(value));
70
84
  }
71
85
  validateOpaqueSchema(schema) {
@@ -108,7 +122,7 @@ class XdrSchemaValidator {
108
122
  return false;
109
123
  }
110
124
  if (fieldNames.has(fieldName)) {
111
- return false;
125
+ return false; // Duplicate field name
112
126
  }
113
127
  fieldNames.add(fieldName);
114
128
  if (!this.validateSchemaInternal(fieldSchema)) {
@@ -127,10 +141,12 @@ class XdrSchemaValidator {
127
141
  return false;
128
142
  }
129
143
  const [discriminant, armSchema] = arm;
144
+ // Check for duplicate discriminants
130
145
  if (discriminants.has(discriminant)) {
131
146
  return false;
132
147
  }
133
148
  discriminants.add(discriminant);
149
+ // Validate discriminant type
134
150
  if (typeof discriminant !== 'number' && typeof discriminant !== 'string' && typeof discriminant !== 'boolean') {
135
151
  return false;
136
152
  }
@@ -138,6 +154,7 @@ class XdrSchemaValidator {
138
154
  return false;
139
155
  }
140
156
  }
157
+ // Validate default schema if present
141
158
  if (schema.default && !this.validateSchemaInternal(schema.default)) {
142
159
  return false;
143
160
  }
@@ -174,45 +191,59 @@ class XdrSchemaValidator {
174
191
  case 'double':
175
192
  case 'quadruple':
176
193
  return typeof value === 'number';
177
- case 'enum':
194
+ case 'enum': {
178
195
  const enumSchema = schema;
179
196
  return typeof value === 'string' && value in enumSchema.values;
180
- case 'opaque':
197
+ }
198
+ case 'opaque': {
181
199
  const opaqueSchema = schema;
182
200
  return value instanceof Uint8Array && value.length === opaqueSchema.size;
183
- case 'vopaque':
201
+ }
202
+ case 'vopaque': {
184
203
  const vopaqueSchema = schema;
185
204
  return value instanceof Uint8Array && (!vopaqueSchema.size || value.length <= vopaqueSchema.size);
186
- case 'string':
205
+ }
206
+ case 'string': {
187
207
  const stringSchema = schema;
188
208
  return typeof value === 'string' && (!stringSchema.size || value.length <= stringSchema.size);
189
- case 'array':
209
+ }
210
+ case 'array': {
190
211
  const arraySchema = schema;
191
212
  return (Array.isArray(value) &&
192
213
  value.length === arraySchema.size &&
193
214
  value.every((item) => this.validateValueInternal(item, arraySchema.elements)));
194
- case 'varray':
215
+ }
216
+ case 'varray': {
195
217
  const varraySchema = schema;
196
218
  return (Array.isArray(value) &&
197
219
  (!varraySchema.size || value.length <= varraySchema.size) &&
198
220
  value.every((item) => this.validateValueInternal(item, varraySchema.elements)));
199
- case 'struct':
221
+ }
222
+ case 'struct': {
200
223
  const structSchema = schema;
201
224
  if (!value || typeof value !== 'object' || Array.isArray(value)) {
202
225
  return false;
203
226
  }
204
227
  const valueObj = value;
205
228
  return structSchema.fields.every(([fieldSchema, fieldName]) => fieldName in valueObj && this.validateValueInternal(valueObj[fieldName], fieldSchema));
206
- case 'union':
229
+ }
230
+ case 'union': {
207
231
  const unionSchema = schema;
232
+ // For union validation, we need additional context about which arm is selected
233
+ // This is a simplified validation - in practice, the discriminant would be known
208
234
  const matchesArm = unionSchema.arms.some(([, armSchema]) => this.validateValueInternal(value, armSchema));
209
235
  const matchesDefault = unionSchema.default ? this.validateValueInternal(value, unionSchema.default) : false;
210
236
  return matchesArm || matchesDefault;
211
- case 'optional':
237
+ }
238
+ case 'optional': {
212
239
  const optionalSchema = schema;
240
+ // Optional values can be null/undefined or match the element schema
213
241
  return value === null || value === undefined || this.validateValueInternal(value, optionalSchema.element);
214
- case 'const':
242
+ }
243
+ case 'const': {
244
+ // Constants have no runtime value validation
215
245
  return true;
246
+ }
216
247
  default:
217
248
  return false;
218
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"XdrSchemaValidator.js","sourceRoot":"","sources":["../../src/xdr/XdrSchemaValidator.ts"],"names":[],"mappings":";;;AAiBA,MAAa,kBAAkB;IAItB,cAAc,CAAC,MAAiB;QACrC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAKM,aAAa,CAAC,KAAc,EAAE,MAAiB;QACpD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,MAAiB;QAC9C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAEpB,KAAK,MAAM,CAAC;YACZ,KAAK,KAAK,CAAC;YACX,KAAK,cAAc,CAAC;YACpB,KAAK,SAAS,CAAC;YACf,KAAK,OAAO,CAAC;YACb,KAAK,gBAAgB,CAAC;YACtB,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC;YAEd,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAuB,CAAC,CAAC;YAG1D,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAyB,CAAC,CAAC;YAE9D,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAA+B,CAAC,CAAC;YAE1E,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAyB,CAAC,CAAC;YAG9D,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAwB,CAAC,CAAC;YAE5D,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,yBAAyB,CAAC,MAA8B,CAAC,CAAC;YAExE,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAyB,CAAC,CAAC;YAE9D,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAwB,CAAC,CAAC;YAE5D,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAA2B,CAAC,CAAC;YAElE,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAA2B,CAAC,CAAC;YAElE;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,MAAqB;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAGrC,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;QAGD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,oBAAoB,CAAC,MAAuB;QAClD,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9F,CAAC;IAEO,0BAA0B,CAAC,MAA6B;QAC9D,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAChH,CAAC;IAEO,oBAAoB,CAAC,MAAuB;QAClD,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAChH,CAAC;IAEO,mBAAmB,CAAC,MAAsB;QAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7G,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEO,yBAAyB,CAAC,MAA4B;QAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACzF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEO,oBAAoB,CAAC,MAAuB;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;YAEvC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBACtD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE1B,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,MAAsB;QAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;YAGtC,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAGhC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC9G,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,sBAAsB,CAAC,MAAyB;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAEO,sBAAsB,CAAC,MAAyB;QACtD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qBAAqB,CAAC,KAAc,EAAE,MAAiB;QAC7D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;YAE/C,KAAK,KAAK;gBACR,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC;YAE7G,KAAK,cAAc;gBACjB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,UAAU,CAAC;YAEnG,KAAK,SAAS;gBACZ,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;YAEpC,KAAK,OAAO;gBACV,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;YAE7F,KAAK,gBAAgB;gBACnB,OAAO,CACL,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;oBACpE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAClD,CAAC;YAEJ,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACd,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;YAEnC,KAAK,MAAM;gBACT,MAAM,UAAU,GAAG,MAAuB,CAAC;gBAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC;YAEjE,KAAK,QAAQ;gBACX,MAAM,YAAY,GAAG,MAAyB,CAAC;gBAC/C,OAAO,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC;YAE3E,KAAK,SAAS;gBACZ,MAAM,aAAa,GAAG,MAA+B,CAAC;gBACtD,OAAO,KAAK,YAAY,UAAU,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;YAEpG,KAAK,QAAQ;gBACX,MAAM,YAAY,GAAG,MAAyB,CAAC;gBAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;YAEhG,KAAK,OAAO;gBACV,MAAM,WAAW,GAAG,MAAwB,CAAC;gBAC7C,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACpB,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI;oBACjC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAC9E,CAAC;YAEJ,KAAK,QAAQ;gBACX,MAAM,YAAY,GAAG,MAA8B,CAAC;gBACpD,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACpB,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC;oBACzD,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAC/E,CAAC;YAEJ,KAAK,QAAQ;gBACX,MAAM,YAAY,GAAG,MAAyB,CAAC;gBAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChE,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAgC,CAAC;gBAClD,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAC9B,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAC3B,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CACxF,CAAC;YAEJ,KAAK,OAAO;gBACV,MAAM,WAAW,GAAG,MAAwB,CAAC;gBAG7C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1G,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5G,OAAO,UAAU,IAAI,cAAc,CAAC;YAEtC,KAAK,UAAU;gBACb,MAAM,cAAc,GAAG,MAA2B,CAAC;gBAEnD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5G,KAAK,OAAO;gBAEV,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AA7SD,gDA6SC"}
1
+ {"version":3,"file":"XdrSchemaValidator.js","sourceRoot":"","sources":["../../src/xdr/XdrSchemaValidator.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * XDR Union data type that contains a discriminant and value.
3
+ * Used for encoding XDR union types where the discriminant determines
4
+ * which arm of the union is active.
5
+ */
1
6
  export declare class XdrUnion<T = unknown> {
2
7
  readonly discriminant: number | string | boolean;
3
8
  readonly value: T;
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XdrUnion = void 0;
4
+ /**
5
+ * XDR Union data type that contains a discriminant and value.
6
+ * Used for encoding XDR union types where the discriminant determines
7
+ * which arm of the union is active.
8
+ */
4
9
  class XdrUnion {
5
10
  constructor(discriminant, value) {
6
11
  this.discriminant = discriminant;
@@ -1 +1 @@
1
- {"version":3,"file":"XdrUnion.js","sourceRoot":"","sources":["../../src/xdr/XdrUnion.ts"],"names":[],"mappings":";;;AAKA,MAAa,QAAQ;IACnB,YACkB,YAAuC,EACvC,KAAQ;QADR,iBAAY,GAAZ,YAAY,CAA2B;QACvC,UAAK,GAAL,KAAK,CAAG;IACvB,CAAC;CACL;AALD,4BAKC"}
1
+ {"version":3,"file":"XdrUnion.js","sourceRoot":"","sources":["../../src/xdr/XdrUnion.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAa,QAAQ;IACnB,YACkB,YAAuC,EACvC,KAAQ;QADR,iBAAY,GAAZ,YAAY,CAA2B;QACvC,UAAK,GAAL,KAAK,CAAG;IACvB,CAAC;CACL;AALD,4BAKC"}
@@ -1,3 +1,17 @@
1
+ /**
2
+ * XDR (External Data Representation Standard) module
3
+ *
4
+ * Fully compliant with:
5
+ * - RFC 4506 (May 2006) - Current standard with IANA and security considerations
6
+ * - RFC 1832 (August 1995) - Enhanced standard with quadruple floats and optional-data
7
+ * - RFC 1014 (June 1987) - Original standard
8
+ *
9
+ * Features:
10
+ * - All XDR data types (int, hyper, float, double, string, opaque, arrays, structs, unions, optional-data)
11
+ * - Big-endian byte order with 4-byte alignment
12
+ * - Schema-based encoding/decoding with validation
13
+ * - TypeScript definitions
14
+ */
1
15
  export * from './types';
2
16
  export * from './XdrEncoder';
3
17
  export * from './XdrDecoder';
package/lib/xdr/index.js CHANGED
@@ -1,4 +1,18 @@
1
1
  "use strict";
2
+ /**
3
+ * XDR (External Data Representation Standard) module
4
+ *
5
+ * Fully compliant with:
6
+ * - RFC 4506 (May 2006) - Current standard with IANA and security considerations
7
+ * - RFC 1832 (August 1995) - Enhanced standard with quadruple floats and optional-data
8
+ * - RFC 1014 (June 1987) - Original standard
9
+ *
10
+ * Features:
11
+ * - All XDR data types (int, hyper, float, double, string, opaque, arrays, structs, unions, optional-data)
12
+ * - Big-endian byte order with 4-byte alignment
13
+ * - Schema-based encoding/decoding with validation
14
+ * - TypeScript definitions
15
+ */
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
17
  const tslib_1 = require("tslib");
4
18
  tslib_1.__exportStar(require("./types"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/xdr/index.ts"],"names":[],"mappings":";;;AAeA,kDAAwB;AACxB,uDAA6B;AAC7B,uDAA6B;AAC7B,6DAAmC;AACnC,6DAAmC;AACnC,+DAAqC;AACrC,qDAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/xdr/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,kDAAwB;AACxB,uDAA6B;AAC7B,uDAA6B;AAC7B,6DAAmC;AACnC,6DAAmC;AACnC,+DAAqC;AACrC,qDAA2B"}
@@ -1,3 +1,17 @@
1
+ import type { XdrDecoder } from './XdrDecoder';
2
+ import type { XdrEncoder } from './XdrEncoder';
3
+ /**
4
+ * XDR (External Data Representation Standard) schema type definitions
5
+ * based on RFC 4506 (May 2006), which obsoletes RFC 1832 (August 1995)
6
+ * and RFC 1014 (June 1987).
7
+ *
8
+ * This implementation supports all three RFC versions:
9
+ * - RFC 1014: Original XDR standard
10
+ * - RFC 1832: Added quadruple-precision floats, enhanced optional-data
11
+ * - RFC 4506: Added IANA considerations and security guidance (no protocol changes)
12
+ *
13
+ * Specification: https://datatracker.ietf.org/doc/html/rfc4506
14
+ */
1
15
  export type XdrSchema = XdrPrimitiveSchema | XdrWidePrimitiveSchema | XdrCompositeSchema | XdrOptionalSchema;
2
16
  export type XdrPrimitiveSchema = XdrVoidSchema | XdrIntSchema | XdrUnsignedIntSchema | XdrEnumSchema | XdrBooleanSchema | XdrHyperSchema | XdrUnsignedHyperSchema | XdrFloatSchema | XdrDoubleSchema | XdrQuadrupleSchema;
3
17
  export type XdrVoidSchema = XdrBaseSchema<'void'>;
@@ -24,27 +38,65 @@ export interface XdrStringSchema extends XdrBaseSchema<'string'> {
24
38
  }
25
39
  export type XdrCompositeSchema = XdrArraySchema | XdrVarlenArraySchema | XdrStructSchema | XdrUnionSchema | XdrOptionalSchema | XdrConstantSchema;
26
40
  export interface XdrArraySchema extends XdrBaseSchema<'array'> {
41
+ /** Schema of array elements */
27
42
  elements: XdrSchema;
43
+ /** Fixed number of elements */
28
44
  size: number;
29
45
  }
30
46
  export interface XdrVarlenArraySchema extends XdrBaseSchema<'varray'> {
47
+ /** Schema of array elements */
31
48
  elements: XdrSchema;
49
+ /** Optional maximum length constraint */
32
50
  size?: number;
33
51
  }
52
+ /**
53
+ * The components of the structure are encoded in the order of their
54
+ * declaration in the structure. Each component's size is a multiple of
55
+ * four bytes, though the components may be different sizes.
56
+ */
34
57
  export interface XdrStructSchema extends XdrBaseSchema<'struct'> {
58
+ /** Array of field definitions */
35
59
  fields: [schema: XdrSchema, name: string][];
36
60
  }
61
+ /**
62
+ * A discriminated union is a type composed of a discriminant followed
63
+ * by a type selected from a set of prearranged types according to the
64
+ * value of the discriminant. The type of discriminant is either "int",
65
+ * "unsigned int", or an enumerated type, such as "bool". The component
66
+ * types are called "arms" of the union and are preceded by the value of
67
+ * the discriminant that implies their encoding.
68
+ */
37
69
  export interface XdrUnionSchema extends XdrBaseSchema<'union'> {
38
70
  type: 'union';
39
71
  arms: [discriminant: number | string | boolean, schema: XdrSchema][];
40
72
  default?: XdrSchema;
41
73
  }
74
+ /**
75
+ * Optional-data is a special case introduced in RFC 1832.
76
+ * It is syntactic sugar for a union with a boolean discriminant:
77
+ * type *identifier;
78
+ * is equivalent to:
79
+ * union switch (bool opted) {
80
+ * case TRUE: type element;
81
+ * case FALSE: void;
82
+ * }
83
+ */
42
84
  export interface XdrOptionalSchema extends XdrBaseSchema<'optional'> {
85
+ /** Schema of the optional element */
43
86
  element: XdrSchema;
44
87
  }
88
+ /**
89
+ * Constant definition (RFC 4506 Section 4.17).
90
+ * Constants are used to define symbolic names for numeric values.
91
+ */
45
92
  export interface XdrConstantSchema extends XdrBaseSchema<'const'> {
46
93
  value: number;
47
94
  }
48
95
  export interface XdrBaseSchema<Type extends string> {
96
+ /** The schema type */
49
97
  type: Type;
50
98
  }
99
+ export type XdrTypeDecoder<T extends XdrType> = (xdr: XdrDecoder) => T;
100
+ export interface XdrType {
101
+ encode(xdr: XdrEncoder): void;
102
+ }
package/package.json CHANGED
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "name": "@jsonjoy.com/json-pack",
3
- "version": "1.20.0",
3
+ "publishConfig": {
4
+ "access": "public"
5
+ },
6
+ "version": "17.59.0",
4
7
  "description": "High-performance JSON serialization library",
5
8
  "author": {
6
9
  "name": "streamich",
@@ -44,10 +47,6 @@
44
47
  "lib/"
45
48
  ],
46
49
  "scripts": {
47
- "prettier": "prettier --ignore-path .gitignore --write \"src/**/*.{ts,tsx,js,jsx}\"",
48
- "prettier:check": "prettier --ignore-path .gitignore --list-different 'src/**/*.{ts,tsx,js,jsx}'",
49
- "lint": "yarn tslint",
50
- "tslint": "tslint 'src/**/*.{js,jsx,ts,tsx}' -t verbose --project .",
51
50
  "clean": "rimraf lib typedocs coverage gh-pages yarn-error.log",
52
51
  "build": "tsc --project tsconfig.build.json --module commonjs --target es2020 --outDir lib",
53
52
  "jest": "node -r ts-node/register ./node_modules/.bin/jest",
@@ -57,30 +56,49 @@
57
56
  "typedoc": "typedoc",
58
57
  "build:pages": "rimraf gh-pages && mkdir -p gh-pages && cp -r typedocs/* gh-pages && cp -r coverage gh-pages/coverage",
59
58
  "deploy:pages": "gh-pages -d gh-pages",
60
- "publish-coverage-and-typedocs": "yarn typedoc && yarn coverage && yarn build:pages && yarn deploy:pages"
59
+ "publish-coverage-and-typedocs": "yarn typedoc && yarn coverage && yarn build:pages && yarn deploy:pages",
60
+ "typecheck": "tsc -p ."
61
+ },
62
+ "jest": {
63
+ "preset": "ts-jest",
64
+ "testEnvironment": "node",
65
+ "moduleFileExtensions": [
66
+ "ts",
67
+ "js",
68
+ "tsx"
69
+ ],
70
+ "transform": {
71
+ "^.+\\.tsx?$": "ts-jest"
72
+ },
73
+ "transformIgnorePatterns": [
74
+ ".*/node_modules/.*"
75
+ ],
76
+ "testRegex": ".*/(__tests__|__jest__|demo)/.*\\.(test|spec)\\.tsx?$",
77
+ "rootDir": ".",
78
+ "testPathIgnorePatterns": [
79
+ "node_modules"
80
+ ]
61
81
  },
62
82
  "peerDependencies": {
63
83
  "tslib": "2"
64
84
  },
65
85
  "dependencies": {
66
- "@jsonjoy.com/base64": "^1.1.2",
67
- "@jsonjoy.com/buffers": "^1.2.0",
68
- "@jsonjoy.com/codegen": "^1.0.0",
69
- "@jsonjoy.com/json-pointer": "^1.0.2",
70
- "@jsonjoy.com/util": "^1.9.0",
86
+ "@jsonjoy.com/base64": "17.59.0",
87
+ "@jsonjoy.com/buffers": "17.59.0",
88
+ "@jsonjoy.com/codegen": "17.59.0",
89
+ "@jsonjoy.com/json-pointer": "17.59.0",
90
+ "@jsonjoy.com/util": "17.59.0",
71
91
  "hyperdyperid": "^1.2.0",
72
- "thingies": "^2.5.0"
92
+ "thingies": "^2.5.0",
93
+ "tree-dump": "^1.1.0"
73
94
  },
74
95
  "devDependencies": {
75
96
  "@msgpack/msgpack": "^3.0.0-beta2",
76
97
  "@redis/client": "^1.5.12",
77
98
  "@shelacek/ubjson": "^1.1.1",
78
- "@types/benchmark": "^2.1.2",
79
- "@types/jest": "^29.5.12",
80
99
  "app-root-path": "^3.1.0",
81
100
  "axios": "^1.3.5",
82
101
  "base64-js": "^1.5.1",
83
- "benchmark": "^2.1.4",
84
102
  "bson": "^5.4.0",
85
103
  "cbor": "^9.0.2",
86
104
  "cbor-js": "^0.1.0",
@@ -90,60 +108,21 @@
90
108
  "fast-safe-stringify": "^2.1.1",
91
109
  "fast-stable-stringify": "^1.0.0",
92
110
  "fastest-stable-stringify": "^2.0.2",
93
- "gh-pages": "^5.0.0",
94
111
  "ion-js": "^4.3.0",
95
- "jest": "^29.7.0",
96
112
  "js-base64": "^3.7.2",
97
113
  "jsbi": "^4.3.0",
98
114
  "json-pack-napi": "^0.0.2",
115
+ "memfs": "^4.49.0",
99
116
  "messagepack": "^1.1.12",
100
117
  "msgpack-lite": "^0.1.26",
101
118
  "msgpack5": "^6.0.2",
102
119
  "msgpackr": "^1.6.0",
103
120
  "pako": "^2.0.4",
104
- "prettier": "^3.2.5",
105
- "pretty-quick": "^3.1.3",
106
121
  "redis-parser": "^3.0.0",
107
- "rimraf": "^5.0.0",
108
122
  "safe-stable-stringify": "^2.3.1",
109
123
  "secure-json-parse": "^2.4.0",
110
124
  "tinybench": "^2.4.0",
111
- "ts-jest": "^29.1.2",
112
- "ts-loader": "^9.5.1",
113
- "ts-node": "^10.9.2",
114
125
  "tslib": "^2.6.2",
115
- "tslint": "^6.1.3",
116
- "tslint-config-common": "^1.6.2",
117
- "typedoc": "^0.25.12",
118
- "typescript": "^5.3.3",
119
126
  "websocket": "^1.0.35"
120
- },
121
- "jest": {
122
- "verbose": true,
123
- "testEnvironmentOptions": {
124
- "url": "http://localhost/"
125
- },
126
- "setupFiles": [
127
- "<rootDir>/src/__tests__/setup.js"
128
- ],
129
- "moduleFileExtensions": [
130
- "ts",
131
- "js"
132
- ],
133
- "transform": {
134
- "^.+\\.ts$": "ts-jest"
135
- },
136
- "transformIgnorePatterns": [],
137
- "testRegex": ".*/(__tests__|__jest__|demo)/.*\\.(test|spec)\\.ts$"
138
- },
139
- "prettier": {
140
- "arrowParens": "always",
141
- "printWidth": 120,
142
- "tabWidth": 2,
143
- "useTabs": false,
144
- "semi": true,
145
- "singleQuote": true,
146
- "trailingComma": "all",
147
- "bracketSpacing": false
148
127
  }
149
- }
128
+ }
@@ -1,28 +0,0 @@
1
- import { Nfsv4Encoder } from './Nfsv4Encoder';
2
- import { RpcMessageEncoder } from '../../rpc/RpcMessageEncoder';
3
- import { RmRecordEncoder } from '../../rm/RmRecordEncoder';
4
- import { Nfsv4Proc } from './constants';
5
- import { RpcOpaqueAuth } from '../../rpc/messages';
6
- import type * as msg from './messages';
7
- import type { IWriter, IWriterGrowable } from '@jsonjoy.com/util/lib/buffers';
8
- export declare class FullNfsv4Encoder<W extends IWriter & IWriterGrowable = IWriter & IWriterGrowable> {
9
- program: number;
10
- readonly writer: W;
11
- protected readonly nfsEncoder: Nfsv4Encoder<W>;
12
- protected readonly rpcEncoder: RpcMessageEncoder<W>;
13
- protected readonly rmEncoder: RmRecordEncoder<W>;
14
- constructor(program?: number, writer?: W);
15
- encodeCall(xid: number, proc: Nfsv4Proc, cred: RpcOpaqueAuth, verf: RpcOpaqueAuth, request: msg.Nfsv4CompoundRequest): Uint8Array;
16
- writeCall(xid: number, proc: Nfsv4Proc, cred: RpcOpaqueAuth, verf: RpcOpaqueAuth, request: msg.Nfsv4CompoundRequest): void;
17
- encodeAcceptedReply(xid: number, proc: Nfsv4Proc, verf: RpcOpaqueAuth, response: msg.Nfsv4CompoundResponse): Uint8Array;
18
- writeAcceptedReply(xid: number, proc: Nfsv4Proc, verf: RpcOpaqueAuth, response: msg.Nfsv4CompoundResponse): void;
19
- encodeRejectedReply(xid: number, rejectStat: number, mismatchInfo?: {
20
- low: number;
21
- high: number;
22
- }, authStat?: number): Uint8Array;
23
- writeRejectedReply(xid: number, rejectStat: number, mismatchInfo?: {
24
- low: number;
25
- high: number;
26
- }, authStat?: number): void;
27
- private writeRmHeader;
28
- }
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FullNfsv4Encoder = void 0;
4
- const Writer_1 = require("@jsonjoy.com/util/lib/buffers/Writer");
5
- const Nfsv4Encoder_1 = require("./Nfsv4Encoder");
6
- const RpcMessageEncoder_1 = require("../../rpc/RpcMessageEncoder");
7
- const RmRecordEncoder_1 = require("../../rm/RmRecordEncoder");
8
- const MAX_SINGLE_FRAME_SIZE = 0x7fffffff;
9
- const RM_HEADER_SIZE = 4;
10
- class FullNfsv4Encoder {
11
- constructor(program = 100003, writer = new Writer_1.Writer()) {
12
- this.program = program;
13
- this.writer = writer;
14
- this.nfsEncoder = new Nfsv4Encoder_1.Nfsv4Encoder(writer);
15
- this.rpcEncoder = new RpcMessageEncoder_1.RpcMessageEncoder(writer);
16
- this.rmEncoder = new RmRecordEncoder_1.RmRecordEncoder(writer);
17
- }
18
- encodeCall(xid, proc, cred, verf, request) {
19
- this.writeCall(xid, proc, cred, verf, request);
20
- return this.writer.flush();
21
- }
22
- writeCall(xid, proc, cred, verf, request) {
23
- const writer = this.writer;
24
- const rmHeaderPosition = writer.x;
25
- writer.x += RM_HEADER_SIZE;
26
- this.rpcEncoder.writeCall(xid, 100003, 4, proc, cred, verf);
27
- this.nfsEncoder.writeCompound(request, true);
28
- this.writeRmHeader(rmHeaderPosition, writer.x);
29
- }
30
- encodeAcceptedReply(xid, proc, verf, response) {
31
- this.writeAcceptedReply(xid, proc, verf, response);
32
- return this.writer.flush();
33
- }
34
- writeAcceptedReply(xid, proc, verf, response) {
35
- const writer = this.writer;
36
- const rmHeaderPosition = writer.x;
37
- writer.x += RM_HEADER_SIZE;
38
- this.rpcEncoder.writeAcceptedReply(xid, verf, 0);
39
- this.nfsEncoder.writeCompound(response, false);
40
- this.writeRmHeader(rmHeaderPosition, writer.x);
41
- }
42
- encodeRejectedReply(xid, rejectStat, mismatchInfo, authStat) {
43
- this.writeRejectedReply(xid, rejectStat, mismatchInfo, authStat);
44
- return this.writer.flush();
45
- }
46
- writeRejectedReply(xid, rejectStat, mismatchInfo, authStat) {
47
- const writer = this.writer;
48
- const rmHeaderPosition = writer.x;
49
- writer.x += RM_HEADER_SIZE;
50
- this.rpcEncoder.writeRejectedReply(xid, rejectStat, mismatchInfo, authStat);
51
- this.writeRmHeader(rmHeaderPosition, writer.x);
52
- }
53
- writeRmHeader(rmHeaderPosition, endPosition) {
54
- const writer = this.writer;
55
- const rmEncoder = this.rmEncoder;
56
- const totalSize = endPosition - rmHeaderPosition - RM_HEADER_SIZE;
57
- if (totalSize <= MAX_SINGLE_FRAME_SIZE) {
58
- const currentX = writer.x;
59
- writer.x = rmHeaderPosition;
60
- rmEncoder.writeHdr(1, totalSize);
61
- writer.x = currentX;
62
- }
63
- else {
64
- const currentX = writer.x;
65
- writer.x = rmHeaderPosition;
66
- const data = writer.uint8.subarray(rmHeaderPosition + RM_HEADER_SIZE, currentX);
67
- writer.reset();
68
- rmEncoder.writeRecord(data);
69
- }
70
- }
71
- }
72
- exports.FullNfsv4Encoder = FullNfsv4Encoder;
73
- //# sourceMappingURL=FullNfsv4Encoder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FullNfsv4Encoder.js","sourceRoot":"","sources":["../../../src/nfs/v4/FullNfsv4Encoder.ts"],"names":[],"mappings":";;;AAAA,iEAA4D;AAC5D,iDAA4C;AAC5C,mEAA8D;AAC9D,8DAAyD;AAOzD,MAAM,qBAAqB,GAAG,UAAU,CAAC;AACzC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAa,gBAAgB;IAK3B,YACS,gBAAoC,EAC3B,SAAY,IAAI,eAAM,EAAS;QADxC,YAAO,GAAP,OAAO,CAA6B;QAC3B,WAAM,GAAN,MAAM,CAAyB;QAE/C,IAAI,CAAC,UAAU,GAAG,IAAI,2BAAY,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAiB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,IAAI,iCAAe,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,UAAU,CACf,GAAW,EACX,IAAe,EACf,IAAmB,EACnB,IAAmB,EACnB,OAAiC;QAEjC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEM,SAAS,CACd,GAAW,EACX,IAAe,EACf,IAAmB,EACnB,IAAmB,EACnB,OAAiC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,aAA0C,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAEM,mBAAmB,CACxB,GAAW,EACX,IAAe,EACf,IAAmB,EACnB,QAAmC;QAEnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEM,kBAAkB,CACvB,GAAW,EACX,IAAe,EACf,IAAmB,EACnB,QAAmC;QAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,IAAwB,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAEM,mBAAmB,CACxB,GAAW,EACX,UAAkB,EAClB,YAA0C,EAC1C,QAAiB;QAEjB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEM,kBAAkB,CACvB,GAAW,EACX,UAAkB,EAClB,YAA0C,EAC1C,QAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAEO,aAAa,CAAC,gBAAwB,EAAE,WAAmB;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;QAClE,IAAI,SAAS,IAAI,qBAAqB,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC;YAC5B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG,cAAc,EAAE,QAAQ,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAxGD,4CAwGC"}