@jsonjoy.com/json-pack 1.18.0 → 1.20.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 (45) hide show
  1. package/lib/JsonPackMpint.d.ts +8 -0
  2. package/lib/JsonPackMpint.js +74 -0
  3. package/lib/JsonPackMpint.js.map +1 -0
  4. package/lib/nfs/v3/Nfsv3Decoder.js +10 -10
  5. package/lib/nfs/v3/Nfsv3Decoder.js.map +1 -1
  6. package/lib/nfs/v3/Nfsv3Encoder.js +10 -20
  7. package/lib/nfs/v3/Nfsv3Encoder.js.map +1 -1
  8. package/lib/nfs/v3/messages.d.ts +16 -17
  9. package/lib/nfs/v3/messages.js.map +1 -1
  10. package/lib/nfs/v3/structs.d.ts +4 -5
  11. package/lib/nfs/v3/structs.js.map +1 -1
  12. package/lib/nfs/v4/FullNfsv4Encoder.d.ts +28 -0
  13. package/lib/nfs/v4/FullNfsv4Encoder.js +73 -0
  14. package/lib/nfs/v4/FullNfsv4Encoder.js.map +1 -0
  15. package/lib/nfs/v4/Nfsv4Decoder.d.ts +106 -0
  16. package/lib/nfs/v4/Nfsv4Decoder.js +884 -0
  17. package/lib/nfs/v4/Nfsv4Decoder.js.map +1 -0
  18. package/lib/nfs/v4/Nfsv4Encoder.d.ts +99 -0
  19. package/lib/nfs/v4/Nfsv4Encoder.js +843 -0
  20. package/lib/nfs/v4/Nfsv4Encoder.js.map +1 -0
  21. package/lib/nfs/v4/constants.d.ts +313 -0
  22. package/lib/nfs/v4/constants.js +3 -0
  23. package/lib/nfs/v4/constants.js.map +1 -0
  24. package/lib/nfs/v4/errors.d.ts +6 -0
  25. package/lib/nfs/v4/errors.js +16 -0
  26. package/lib/nfs/v4/errors.js.map +1 -0
  27. package/lib/nfs/v4/index.d.ts +6 -0
  28. package/lib/nfs/v4/index.js +10 -0
  29. package/lib/nfs/v4/index.js.map +1 -0
  30. package/lib/nfs/v4/messages.d.ts +522 -0
  31. package/lib/nfs/v4/messages.js +731 -0
  32. package/lib/nfs/v4/messages.js.map +1 -0
  33. package/lib/nfs/v4/structs.d.ts +207 -0
  34. package/lib/nfs/v4/structs.js +285 -0
  35. package/lib/nfs/v4/structs.js.map +1 -0
  36. package/lib/ssh/SshDecoder.d.ts +20 -0
  37. package/lib/ssh/SshDecoder.js +87 -0
  38. package/lib/ssh/SshDecoder.js.map +1 -0
  39. package/lib/ssh/SshEncoder.d.ts +27 -0
  40. package/lib/ssh/SshEncoder.js +144 -0
  41. package/lib/ssh/SshEncoder.js.map +1 -0
  42. package/lib/ssh/index.d.ts +2 -0
  43. package/lib/ssh/index.js +6 -0
  44. package/lib/ssh/index.js.map +1 -0
  45. package/package.json +1 -1
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SshEncoder = void 0;
4
+ const JsonPackMpint_1 = require("../JsonPackMpint");
5
+ class SshEncoder {
6
+ constructor(writer) {
7
+ this.writer = writer;
8
+ }
9
+ encode(value) {
10
+ const writer = this.writer;
11
+ writer.reset();
12
+ this.writeAny(value);
13
+ return writer.flush();
14
+ }
15
+ writeUnknown(value) {
16
+ throw new Error('SSH encoder does not support unknown types');
17
+ }
18
+ writeAny(value) {
19
+ switch (typeof value) {
20
+ case 'boolean':
21
+ return this.writeBoolean(value);
22
+ case 'number':
23
+ return this.writeNumber(value);
24
+ case 'string':
25
+ return this.writeStr(value);
26
+ case 'object': {
27
+ if (value === null)
28
+ return this.writeNull();
29
+ const constructor = value.constructor;
30
+ switch (constructor) {
31
+ case Uint8Array:
32
+ return this.writeBin(value);
33
+ case Array:
34
+ return this.writeNameList(value);
35
+ case JsonPackMpint_1.JsonPackMpint:
36
+ return this.writeMpint(value);
37
+ default:
38
+ return this.writeUnknown(value);
39
+ }
40
+ }
41
+ case 'bigint':
42
+ return this.writeUint64(value);
43
+ case 'undefined':
44
+ return this.writeNull();
45
+ default:
46
+ return this.writeUnknown(value);
47
+ }
48
+ }
49
+ writeNull() {
50
+ throw new Error('SSH protocol does not have a null type');
51
+ }
52
+ writeBoolean(bool) {
53
+ this.writer.u8(bool ? 1 : 0);
54
+ }
55
+ writeByte(byte) {
56
+ this.writer.u8(byte & 0xff);
57
+ }
58
+ writeUint32(uint) {
59
+ const writer = this.writer;
60
+ writer.ensureCapacity(4);
61
+ writer.view.setUint32(writer.x, Math.trunc(uint) >>> 0, false);
62
+ writer.move(4);
63
+ }
64
+ writeUint64(uint) {
65
+ const writer = this.writer;
66
+ writer.ensureCapacity(8);
67
+ if (typeof uint === 'bigint') {
68
+ writer.view.setBigUint64(writer.x, uint, false);
69
+ }
70
+ else {
71
+ const truncated = Math.trunc(Math.abs(uint));
72
+ const high = Math.floor(truncated / 0x100000000);
73
+ const low = truncated >>> 0;
74
+ writer.view.setUint32(writer.x, high, false);
75
+ writer.view.setUint32(writer.x + 4, low, false);
76
+ }
77
+ writer.move(8);
78
+ }
79
+ writeBinStr(data) {
80
+ this.writeUint32(data.length);
81
+ this.writer.buf(data, data.length);
82
+ }
83
+ writeStr(str) {
84
+ const writer = this.writer;
85
+ const maxSize = str.length * 4;
86
+ writer.ensureCapacity(4 + maxSize);
87
+ const lengthOffset = writer.x;
88
+ writer.x += 4;
89
+ const bytesWritten = writer.utf8(str);
90
+ const endPos = writer.x;
91
+ writer.x = lengthOffset;
92
+ this.writeUint32(bytesWritten);
93
+ writer.x = endPos;
94
+ }
95
+ writeAsciiStr(str) {
96
+ const writer = this.writer;
97
+ writer.ensureCapacity(4 + str.length);
98
+ this.writeUint32(str.length);
99
+ for (let i = 0; i < str.length; i++) {
100
+ writer.u8(str.charCodeAt(i) & 0x7f);
101
+ }
102
+ }
103
+ writeMpint(mpint) {
104
+ this.writeUint32(mpint.data.length);
105
+ this.writer.buf(mpint.data, mpint.data.length);
106
+ }
107
+ writeNameList(names) {
108
+ const nameListStr = names.join(',');
109
+ this.writeAsciiStr(nameListStr);
110
+ }
111
+ writeNumber(num) {
112
+ if (Number.isInteger(num)) {
113
+ if (num >= 0 && num <= 0xffffffff) {
114
+ this.writeUint32(num);
115
+ }
116
+ else {
117
+ this.writeUint64(num);
118
+ }
119
+ }
120
+ else {
121
+ throw new Error('SSH protocol does not support floating point numbers');
122
+ }
123
+ }
124
+ writeInteger(int) {
125
+ this.writeUint32(int);
126
+ }
127
+ writeUInteger(uint) {
128
+ this.writeUint32(uint);
129
+ }
130
+ writeFloat(float) {
131
+ throw new Error('SSH protocol does not support floating point numbers');
132
+ }
133
+ writeBin(buf) {
134
+ this.writeBinStr(buf);
135
+ }
136
+ writeArr(arr) {
137
+ throw new Error('SSH protocol does not have a generic array type. Use writeNameList for name-list type.');
138
+ }
139
+ writeObj(obj) {
140
+ throw new Error('SSH protocol does not have an object type');
141
+ }
142
+ }
143
+ exports.SshEncoder = SshEncoder;
144
+ //# sourceMappingURL=SshEncoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SshEncoder.js","sourceRoot":"","sources":["../../src/ssh/SshEncoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './SshEncoder';
2
+ export * from './SshDecoder';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./SshEncoder"), exports);
5
+ tslib_1.__exportStar(require("./SshDecoder"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ssh/index.ts"],"names":[],"mappings":";;;AAOA,uDAA6B;AAC7B,uDAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsonjoy.com/json-pack",
3
- "version": "1.18.0",
3
+ "version": "1.20.0",
4
4
  "description": "High-performance JSON serialization library",
5
5
  "author": {
6
6
  "name": "streamich",