ts-mls 1.4.1 → 1.4.3

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 (160) hide show
  1. package/README.md +1 -1
  2. package/dist/authenticatedContent.d.ts +3 -1
  3. package/dist/authenticatedContent.js +10 -8
  4. package/dist/authenticatedContent.js.map +1 -1
  5. package/dist/capabilities.d.ts +2 -1
  6. package/dist/capabilities.js +13 -12
  7. package/dist/capabilities.js.map +1 -1
  8. package/dist/clientState.d.ts +4 -3
  9. package/dist/clientState.js +87 -59
  10. package/dist/clientState.js.map +1 -1
  11. package/dist/codec/json.d.ts +4 -0
  12. package/dist/codec/json.js +190 -0
  13. package/dist/codec/json.js.map +1 -0
  14. package/dist/codec/number.d.ts +5 -1
  15. package/dist/codec/number.js +33 -24
  16. package/dist/codec/number.js.map +1 -1
  17. package/dist/codec/optional.d.ts +2 -2
  18. package/dist/codec/optional.js +24 -7
  19. package/dist/codec/optional.js.map +1 -1
  20. package/dist/codec/tlsEncoder.d.ts +11 -8
  21. package/dist/codec/tlsEncoder.js +39 -21
  22. package/dist/codec/tlsEncoder.js.map +1 -1
  23. package/dist/codec/variableLength.d.ts +4 -4
  24. package/dist/codec/variableLength.js +58 -28
  25. package/dist/codec/variableLength.js.map +1 -1
  26. package/dist/commit.d.ts +2 -1
  27. package/dist/commit.js +7 -6
  28. package/dist/commit.js.map +1 -1
  29. package/dist/contentType.d.ts +2 -1
  30. package/dist/contentType.js +4 -3
  31. package/dist/contentType.js.map +1 -1
  32. package/dist/createCommit.js +6 -5
  33. package/dist/createCommit.js.map +1 -1
  34. package/dist/credential.d.ts +5 -1
  35. package/dist/credential.js +14 -10
  36. package/dist/credential.js.map +1 -1
  37. package/dist/credentialType.d.ts +2 -1
  38. package/dist/credentialType.js +4 -3
  39. package/dist/credentialType.js.map +1 -1
  40. package/dist/crypto/ciphersuite.d.ts +2 -1
  41. package/dist/crypto/ciphersuite.js +4 -3
  42. package/dist/crypto/ciphersuite.js.map +1 -1
  43. package/dist/crypto/hash.js +4 -3
  44. package/dist/crypto/hash.js.map +1 -1
  45. package/dist/crypto/hpke.js +10 -4
  46. package/dist/crypto/hpke.js.map +1 -1
  47. package/dist/crypto/implementation/default/makeAead.js +9 -9
  48. package/dist/crypto/implementation/default/makeAead.js.map +1 -1
  49. package/dist/crypto/implementation/default/makeHashImpl.js +5 -5
  50. package/dist/crypto/implementation/default/makeHashImpl.js.map +1 -1
  51. package/dist/crypto/implementation/default/makeKdfImpl.js +3 -3
  52. package/dist/crypto/implementation/default/makeKdfImpl.js.map +1 -1
  53. package/dist/crypto/implementation/hpke.js +11 -11
  54. package/dist/crypto/implementation/hpke.js.map +1 -1
  55. package/dist/crypto/kdf.js +8 -7
  56. package/dist/crypto/kdf.js.map +1 -1
  57. package/dist/crypto/signature.js +10 -4
  58. package/dist/crypto/signature.js.map +1 -1
  59. package/dist/defaultExtensionType.d.ts +2 -1
  60. package/dist/defaultExtensionType.js +4 -3
  61. package/dist/defaultExtensionType.js.map +1 -1
  62. package/dist/defaultProposalType.d.ts +2 -1
  63. package/dist/defaultProposalType.js +4 -3
  64. package/dist/defaultProposalType.js.map +1 -1
  65. package/dist/extension.d.ts +3 -1
  66. package/dist/extension.js +8 -6
  67. package/dist/extension.js.map +1 -1
  68. package/dist/externalSender.d.ts +2 -1
  69. package/dist/externalSender.js +5 -4
  70. package/dist/externalSender.js.map +1 -1
  71. package/dist/framedContent.d.ts +9 -1
  72. package/dist/framedContent.js +35 -27
  73. package/dist/framedContent.js.map +1 -1
  74. package/dist/groupContext.d.ts +2 -1
  75. package/dist/groupContext.js +17 -16
  76. package/dist/groupContext.js.map +1 -1
  77. package/dist/groupInfo.d.ts +3 -1
  78. package/dist/groupInfo.js +11 -9
  79. package/dist/groupInfo.js.map +1 -1
  80. package/dist/groupSecrets.d.ts +2 -1
  81. package/dist/groupSecrets.js +6 -5
  82. package/dist/groupSecrets.js.map +1 -1
  83. package/dist/hpkeCiphertext.d.ts +2 -1
  84. package/dist/hpkeCiphertext.js +4 -3
  85. package/dist/hpkeCiphertext.js.map +1 -1
  86. package/dist/keyPackage.d.ts +6 -4
  87. package/dist/keyPackage.js +21 -19
  88. package/dist/keyPackage.js.map +1 -1
  89. package/dist/leafNode.d.ts +11 -1
  90. package/dist/leafNode.js +43 -27
  91. package/dist/leafNode.js.map +1 -1
  92. package/dist/leafNodeSource.d.ts +2 -1
  93. package/dist/leafNodeSource.js +4 -3
  94. package/dist/leafNodeSource.js.map +1 -1
  95. package/dist/lifetime.d.ts +2 -1
  96. package/dist/lifetime.js +4 -3
  97. package/dist/lifetime.js.map +1 -1
  98. package/dist/message.d.ts +9 -2
  99. package/dist/message.js +27 -20
  100. package/dist/message.js.map +1 -1
  101. package/dist/messageProtection.js +4 -3
  102. package/dist/messageProtection.js.map +1 -1
  103. package/dist/nodeType.d.ts +2 -1
  104. package/dist/nodeType.js +4 -3
  105. package/dist/nodeType.js.map +1 -1
  106. package/dist/parentHash.d.ts +2 -1
  107. package/dist/parentHash.js +5 -4
  108. package/dist/parentHash.js.map +1 -1
  109. package/dist/parentNode.d.ts +2 -1
  110. package/dist/parentNode.js +5 -4
  111. package/dist/parentNode.js.map +1 -1
  112. package/dist/presharedkey.d.ts +6 -1
  113. package/dist/presharedkey.js +16 -11
  114. package/dist/presharedkey.js.map +1 -1
  115. package/dist/privateMessage.d.ts +4 -1
  116. package/dist/privateMessage.js +29 -20
  117. package/dist/privateMessage.js.map +1 -1
  118. package/dist/processMessages.js +3 -2
  119. package/dist/processMessages.js.map +1 -1
  120. package/dist/proposal.d.ts +17 -1
  121. package/dist/proposal.js +50 -34
  122. package/dist/proposal.js.map +1 -1
  123. package/dist/proposalOrRefType.d.ts +5 -1
  124. package/dist/proposalOrRefType.js +14 -10
  125. package/dist/proposalOrRefType.js.map +1 -1
  126. package/dist/protocolVersion.d.ts +2 -1
  127. package/dist/protocolVersion.js +4 -3
  128. package/dist/protocolVersion.js.map +1 -1
  129. package/dist/publicMessage.d.ts +3 -1
  130. package/dist/publicMessage.js +9 -7
  131. package/dist/publicMessage.js.map +1 -1
  132. package/dist/ratchetTree.d.ts +3 -1
  133. package/dist/ratchetTree.js +13 -11
  134. package/dist/ratchetTree.js.map +1 -1
  135. package/dist/requiredCapabilities.d.ts +2 -1
  136. package/dist/requiredCapabilities.js +6 -5
  137. package/dist/requiredCapabilities.js.map +1 -1
  138. package/dist/sender.d.ts +6 -1
  139. package/dist/sender.js +24 -13
  140. package/dist/sender.js.map +1 -1
  141. package/dist/transcriptHash.d.ts +2 -1
  142. package/dist/transcriptHash.js +18 -8
  143. package/dist/transcriptHash.js.map +1 -1
  144. package/dist/treeHash.d.ts +4 -1
  145. package/dist/treeHash.js +17 -14
  146. package/dist/treeHash.js.map +1 -1
  147. package/dist/tsconfig.build.tsbuildinfo +1 -1
  148. package/dist/updatePath.d.ts +3 -1
  149. package/dist/updatePath.js +10 -8
  150. package/dist/updatePath.js.map +1 -1
  151. package/dist/util/byteArray.d.ts +2 -1
  152. package/dist/util/byteArray.js +21 -2
  153. package/dist/util/byteArray.js.map +1 -1
  154. package/dist/welcome.d.ts +3 -1
  155. package/dist/welcome.js +12 -10
  156. package/dist/welcome.js.map +1 -1
  157. package/dist/wireformat.d.ts +2 -1
  158. package/dist/wireformat.js +4 -3
  159. package/dist/wireformat.js.map +1 -1
  160. package/package.json +6 -6
@@ -0,0 +1,190 @@
1
+ export function toJsonString(clientState) {
2
+ const { clientConfig, ...state } = clientState;
3
+ const stateWithSerializableMap = {
4
+ ...state,
5
+ historicalReceiverData: Array.from(state.historicalReceiverData.entries()).map(([epoch, data]) => [
6
+ {
7
+ epoch: epoch.toString(),
8
+ },
9
+ data,
10
+ ]),
11
+ };
12
+ return JSON.stringify(stateWithSerializableMap, (_key, value) => {
13
+ // Mark BigInt values with a special wrapper
14
+ if (typeof value === "bigint") {
15
+ return { "@@bigint": value.toString() };
16
+ }
17
+ // Mark empty Uint8Arrays with a special marker
18
+ if (value instanceof Uint8Array) {
19
+ if (value.length === 0) {
20
+ return { "@@uint8array": true, length: 0, data: [] };
21
+ }
22
+ }
23
+ return value;
24
+ });
25
+ }
26
+ function isValidGroupActiveState(state) {
27
+ if (typeof state !== "object" || state === null)
28
+ return false;
29
+ const s = state;
30
+ if (typeof s.kind !== "string")
31
+ return false;
32
+ if (s.kind === "active")
33
+ return true;
34
+ if (s.kind === "suspendedPendingReinit")
35
+ return "reinit" in s && typeof s.reinit === "object";
36
+ if (s.kind === "removedFromGroup")
37
+ return true;
38
+ return false;
39
+ }
40
+ function isValidRatchetTree(tree) {
41
+ if (!Array.isArray(tree))
42
+ return false;
43
+ return tree.every((node) => node === null || (typeof node === "object" && node !== null));
44
+ }
45
+ function isValidGroupContext(ctx) {
46
+ if (typeof ctx !== "object" || ctx === null)
47
+ return false;
48
+ const c = ctx;
49
+ return ("version" in c &&
50
+ "cipherSuite" in c &&
51
+ "groupId" in c &&
52
+ "epoch" in c &&
53
+ "treeHash" in c &&
54
+ "confirmedTranscriptHash" in c &&
55
+ "extensions" in c);
56
+ }
57
+ function isValidKeySchedule(ks) {
58
+ if (typeof ks !== "object" || ks === null)
59
+ return false;
60
+ const k = ks;
61
+ return "epochAuthenticator" in k && typeof k.epochAuthenticator === "object";
62
+ }
63
+ function isValidPrivateKeyPath(pkp) {
64
+ if (typeof pkp !== "object" || pkp === null)
65
+ return false;
66
+ const p = pkp;
67
+ return "leafIndex" in p && typeof p.leafIndex === "number";
68
+ }
69
+ function isValidUnappliedProposals(uap) {
70
+ return uap !== null && typeof uap === "object";
71
+ }
72
+ function isValidHistoricalReceiverData(hrd) {
73
+ if (!Array.isArray(hrd))
74
+ return false;
75
+ return hrd.every((item) => Array.isArray(item) && item.length === 2 && typeof item[0] === "object" && "epoch" in item[0]);
76
+ }
77
+ function deepConvertUint8Arrays(obj, depth = 0, maxDepth = 20) {
78
+ if (depth > maxDepth)
79
+ return obj;
80
+ if (obj === null || obj === undefined)
81
+ return obj;
82
+ if (obj instanceof Uint8Array)
83
+ return obj;
84
+ // Check for the special BigInt marker
85
+ if (obj && typeof obj === "object" && "@@bigint" in obj) {
86
+ const objRecord = obj;
87
+ if (typeof objRecord["@@bigint"] === "string") {
88
+ return BigInt(objRecord["@@bigint"]);
89
+ }
90
+ }
91
+ // Check for the special empty Uint8Array marker
92
+ if (obj && typeof obj === "object" && "@@uint8array" in obj) {
93
+ const objRecord = obj;
94
+ if (objRecord["@@uint8array"] === true) {
95
+ return new Uint8Array();
96
+ }
97
+ }
98
+ // Handle non-empty Uint8Array-like objects
99
+ if (obj && typeof obj === "object" && !Array.isArray(obj)) {
100
+ const objRecord = obj;
101
+ const keys = Object.keys(objRecord);
102
+ if (keys.length > 0 && !("@@uint8array" in objRecord) && !("@@bigint" in objRecord)) {
103
+ // Check if all keys are numeric strings and all values are 0-255 numbers
104
+ const allNumericKeys = keys.every((k) => /^\d+$/.test(k));
105
+ if (allNumericKeys) {
106
+ const allValidValues = keys.every((k) => Object.prototype.hasOwnProperty.call(objRecord, k) &&
107
+ typeof objRecord[k] === "number" &&
108
+ objRecord[k] >= 0 &&
109
+ objRecord[k] <= 255);
110
+ if (allValidValues) {
111
+ const numKeys = keys.map((k) => parseInt(k, 10));
112
+ const values = numKeys.sort((a, b) => a - b).map((n) => objRecord[String(n)]);
113
+ return new Uint8Array(values);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ if (Array.isArray(obj)) {
119
+ return obj.map((item) => deepConvertUint8Arrays(item, depth + 1, maxDepth));
120
+ }
121
+ if (typeof obj === "object") {
122
+ const objRecord = obj;
123
+ const result = {};
124
+ for (const key in objRecord) {
125
+ if (Object.prototype.hasOwnProperty.call(objRecord, key)) {
126
+ result[key] = deepConvertUint8Arrays(objRecord[key], depth + 1, maxDepth);
127
+ }
128
+ }
129
+ return result;
130
+ }
131
+ return obj;
132
+ }
133
+ export function fromJsonString(s, config) {
134
+ try {
135
+ const parsed = JSON.parse(s);
136
+ if (typeof parsed !== "object" || parsed === null)
137
+ return undefined;
138
+ const parsedRecord = parsed;
139
+ if (!("groupActiveState" in parsedRecord) ||
140
+ !("privatePath" in parsedRecord) ||
141
+ !("ratchetTree" in parsedRecord) ||
142
+ !("keySchedule" in parsedRecord) ||
143
+ !("groupContext" in parsedRecord) ||
144
+ !("unappliedProposals" in parsedRecord) ||
145
+ !("signaturePrivateKey" in parsedRecord) ||
146
+ !("confirmationTag" in parsedRecord) ||
147
+ !("historicalReceiverData" in parsedRecord) ||
148
+ !("secretTree" in parsedRecord)) {
149
+ return undefined;
150
+ }
151
+ const converted = deepConvertUint8Arrays(parsedRecord);
152
+ if (!isValidGroupActiveState(converted.groupActiveState))
153
+ return undefined;
154
+ if (!isValidPrivateKeyPath(converted.privatePath))
155
+ return undefined;
156
+ if (!isValidRatchetTree(converted.ratchetTree))
157
+ return undefined;
158
+ if (!isValidKeySchedule(converted.keySchedule))
159
+ return undefined;
160
+ if (!isValidGroupContext(converted.groupContext))
161
+ return undefined;
162
+ if (!isValidUnappliedProposals(converted.unappliedProposals))
163
+ return undefined;
164
+ if (!isValidHistoricalReceiverData(converted.historicalReceiverData))
165
+ return undefined;
166
+ if (!(converted.signaturePrivateKey instanceof Uint8Array || typeof converted.signaturePrivateKey === "object")) {
167
+ return undefined;
168
+ }
169
+ if (!(converted.confirmationTag instanceof Uint8Array || typeof converted.confirmationTag === "object")) {
170
+ return undefined;
171
+ }
172
+ // Reconstruct Map<bigint, EpochReceiverData>
173
+ const historicalReceiverData = new Map();
174
+ if (Array.isArray(converted.historicalReceiverData)) {
175
+ for (const [keyObj, data] of converted.historicalReceiverData) {
176
+ if (keyObj && typeof keyObj === "object" && "epoch" in keyObj) {
177
+ const keyObjRecord = keyObj;
178
+ if (typeof keyObjRecord.epoch === "bigint") {
179
+ historicalReceiverData.set(keyObjRecord.epoch, data);
180
+ }
181
+ }
182
+ }
183
+ }
184
+ return { clientConfig: config, ...converted, historicalReceiverData };
185
+ }
186
+ catch {
187
+ return undefined;
188
+ }
189
+ }
190
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/codec/json.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,YAAY,CAAC,WAAwB;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,GAAG,WAAW,CAAA;IAE9C,MAAM,wBAAwB,GAAG;QAC/B,GAAG,KAAK;QACR,sBAAsB,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YAChG;gBACE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;aACxB;YACD,IAAI;SACL,CAAC;KACH,CAAA;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC,IAAI,EAAE,KAAc,EAAE,EAAE;QACvE,4CAA4C;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;QACzC,CAAC;QACD,+CAA+C;QAC/C,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;YACtD,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,wBAAwB;QAAE,OAAO,QAAQ,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAA;IAC7F,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,IAAI,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAA;AAC3F,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAY;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACzD,MAAM,CAAC,GAAG,GAA8B,CAAA;IACxC,OAAO,CACL,SAAS,IAAI,CAAC;QACd,aAAa,IAAI,CAAC;QAClB,SAAS,IAAI,CAAC;QACd,OAAO,IAAI,CAAC;QACZ,UAAU,IAAI,CAAC;QACf,yBAAyB,IAAI,CAAC;QAC9B,YAAY,IAAI,CAAC,CAClB,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAW;IACrC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACvD,MAAM,CAAC,GAAG,EAA6B,CAAA;IACvC,OAAO,oBAAoB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ,CAAA;AAC9E,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACzD,MAAM,CAAC,GAAG,GAA8B,CAAA;IACxC,OAAO,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAA;AAC5D,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAY;IAC7C,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAA;AAChD,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAY;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,OAAO,GAAG,CAAC,KAAK,CACd,CAAC,IAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CACjH,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAY,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;IACpE,IAAI,KAAK,GAAG,QAAQ;QAAE,OAAO,GAAG,CAAA;IAChC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACjD,IAAI,GAAG,YAAY,UAAU;QAAE,OAAO,GAAG,CAAA;IAEzC,sCAAsC;IACtC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,GAA8B,CAAA;QAChD,IAAI,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,IAAI,GAAG,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,GAA8B,CAAA;QAChD,IAAI,SAAS,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,OAAO,IAAI,UAAU,EAAE,CAAA;QACzB,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,GAA8B,CAAA;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE,CAAC;YACpF,yEAAyE;YACzE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACzD,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC/B,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;oBAClD,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAChC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;oBACjB,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CACtB,CAAA;gBACD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;oBAChD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAW,CAAC,CAAA;oBACvF,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,GAA8B,CAAA;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAA;QAC1C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAA;YAC3E,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,MAAoB;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAY,CAAA;QAEvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,SAAS,CAAA;QAEnE,MAAM,YAAY,GAAG,MAAiC,CAAA;QACtD,IACE,CAAC,CAAC,kBAAkB,IAAI,YAAY,CAAC;YACrC,CAAC,CAAC,aAAa,IAAI,YAAY,CAAC;YAChC,CAAC,CAAC,aAAa,IAAI,YAAY,CAAC;YAChC,CAAC,CAAC,aAAa,IAAI,YAAY,CAAC;YAChC,CAAC,CAAC,cAAc,IAAI,YAAY,CAAC;YACjC,CAAC,CAAC,oBAAoB,IAAI,YAAY,CAAC;YACvC,CAAC,CAAC,qBAAqB,IAAI,YAAY,CAAC;YACxC,CAAC,CAAC,iBAAiB,IAAI,YAAY,CAAC;YACpC,CAAC,CAAC,wBAAwB,IAAI,YAAY,CAAC;YAC3C,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,EAC/B,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,CAA4B,CAAA;QAEjF,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAAE,OAAO,SAAS,CAAA;QAC1E,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAA;QACnE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAA;QAChE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAA;QAChE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,YAAY,CAAC;YAAE,OAAO,SAAS,CAAA;QAClE,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,kBAAkB,CAAC;YAAE,OAAO,SAAS,CAAA;QAC9E,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,sBAAsB,CAAC;YAAE,OAAO,SAAS,CAAA;QAEtF,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,YAAY,UAAU,IAAI,OAAO,SAAS,CAAC,mBAAmB,KAAK,QAAQ,CAAC,EAAE,CAAC;YAChH,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,YAAY,UAAU,IAAI,OAAO,SAAS,CAAC,eAAe,KAAK,QAAQ,CAAC,EAAE,CAAC;YACxG,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,6CAA6C;QAC7C,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAA6B,CAAA;QACnE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACpD,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,sBAA8C,EAAE,CAAC;gBACtF,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;oBAC9D,MAAM,YAAY,GAAG,MAAiC,CAAA;oBACtD,IAAI,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC3C,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,IAAyB,CAAC,CAAA;oBAC3E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,sBAAsB,EAA4B,CAAA;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC"}
@@ -1,10 +1,14 @@
1
1
  import { Decoder } from "./tlsDecoder.js";
2
- import { Encoder } from "./tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./tlsEncoder.js";
3
+ export declare const uint8Encoder: BufferEncoder<number>;
3
4
  export declare const encodeUint8: Encoder<number>;
4
5
  export declare const decodeUint8: Decoder<number>;
6
+ export declare const uint16Encoder: BufferEncoder<number>;
5
7
  export declare const encodeUint16: Encoder<number>;
6
8
  export declare const decodeUint16: Decoder<number>;
9
+ export declare const uint32Encoder: BufferEncoder<number>;
7
10
  export declare const encodeUint32: Encoder<number>;
8
11
  export declare const decodeUint32: Decoder<number>;
12
+ export declare const uint64Encoder: BufferEncoder<bigint>;
9
13
  export declare const encodeUint64: Encoder<bigint>;
10
14
  export declare const decodeUint64: Decoder<bigint>;
@@ -1,19 +1,24 @@
1
- export const encodeUint8 = (n) => {
2
- const buffer = new ArrayBuffer(1);
3
- const view = new DataView(buffer);
4
- view.setUint8(0, n);
5
- return new Uint8Array(buffer);
6
- };
1
+ import { encode } from "./tlsEncoder.js";
2
+ export const uint8Encoder = (n) => [
3
+ 1,
4
+ (offset, buffer) => {
5
+ const view = new DataView(buffer);
6
+ view.setUint8(offset, n);
7
+ },
8
+ ];
9
+ export const encodeUint8 = encode(uint8Encoder);
7
10
  export const decodeUint8 = (b, offset) => {
8
11
  const value = b.at(offset);
9
12
  return value !== undefined ? [value, 1] : undefined;
10
13
  };
11
- export const encodeUint16 = (n) => {
12
- const buffer = new ArrayBuffer(2);
13
- const view = new DataView(buffer);
14
- view.setUint16(0, n);
15
- return new Uint8Array(buffer);
16
- };
14
+ export const uint16Encoder = (n) => [
15
+ 2,
16
+ (offset, buffer) => {
17
+ const view = new DataView(buffer);
18
+ view.setUint16(offset, n);
19
+ },
20
+ ];
21
+ export const encodeUint16 = encode(uint16Encoder);
17
22
  export const decodeUint16 = (b, offset) => {
18
23
  const view = new DataView(b.buffer, b.byteOffset, b.byteLength);
19
24
  try {
@@ -23,12 +28,14 @@ export const decodeUint16 = (b, offset) => {
23
28
  return undefined;
24
29
  }
25
30
  };
26
- export const encodeUint32 = (n) => {
27
- const buffer = new ArrayBuffer(4);
28
- const view = new DataView(buffer);
29
- view.setUint32(0, n);
30
- return new Uint8Array(buffer);
31
- };
31
+ export const uint32Encoder = (n) => [
32
+ 4,
33
+ (offset, buffer) => {
34
+ const view = new DataView(buffer);
35
+ view.setUint32(offset, n);
36
+ },
37
+ ];
38
+ export const encodeUint32 = encode(uint32Encoder);
32
39
  export const decodeUint32 = (b, offset) => {
33
40
  const view = new DataView(b.buffer, b.byteOffset, b.byteLength);
34
41
  try {
@@ -38,12 +45,14 @@ export const decodeUint32 = (b, offset) => {
38
45
  return undefined;
39
46
  }
40
47
  };
41
- export const encodeUint64 = (n) => {
42
- const buffer = new ArrayBuffer(8);
43
- const view = new DataView(buffer);
44
- view.setBigUint64(0, n);
45
- return new Uint8Array(buffer);
46
- };
48
+ export const uint64Encoder = (n) => [
49
+ 8,
50
+ (offset, buffer) => {
51
+ const view = new DataView(buffer);
52
+ view.setBigUint64(offset, n);
53
+ },
54
+ ];
55
+ export const encodeUint64 = encode(uint64Encoder);
47
56
  export const decodeUint64 = (b, offset) => {
48
57
  const view = new DataView(b.buffer, b.byteOffset, b.byteLength);
49
58
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/codec/number.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/codec/number.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { Decoder } from "./tlsDecoder.js";
2
- import { Encoder } from "./tlsEncoder.js";
3
- export declare function encodeOptional<T>(encodeT: Encoder<T>): Encoder<T | undefined>;
2
+ import { BufferEncoder } from "./tlsEncoder.js";
3
+ export declare function optionalEncoder<T>(encodeT: BufferEncoder<T>): BufferEncoder<T | undefined>;
4
4
  export declare function decodeOptional<T>(decodeT: Decoder<T>): Decoder<T | undefined>;
@@ -1,7 +1,27 @@
1
- import { concatUint8Arrays } from "../util/byteArray.js";
2
- import { decodeUint8, encodeUint8 } from "./number.js";
3
- export function encodeOptional(encodeT) {
4
- return (t) => (t ? prependPresenceOctet(encodeT(t)) : new Uint8Array([0x0]));
1
+ import { decodeUint8 } from "./number.js";
2
+ export function optionalEncoder(encodeT) {
3
+ return (t) => {
4
+ if (t) {
5
+ const [len, write] = encodeT(t);
6
+ return [
7
+ len + 1,
8
+ (offset, buffer) => {
9
+ const view = new DataView(buffer);
10
+ view.setUint8(offset, 0x1);
11
+ write(offset + 1, buffer);
12
+ },
13
+ ];
14
+ }
15
+ else {
16
+ return [
17
+ 1,
18
+ (offset, buffer) => {
19
+ const view = new DataView(buffer);
20
+ view.setUint8(offset, 0x0);
21
+ },
22
+ ];
23
+ }
24
+ };
5
25
  }
6
26
  export function decodeOptional(decodeT) {
7
27
  return (b, offset) => {
@@ -15,7 +35,4 @@ export function decodeOptional(decodeT) {
15
35
  }
16
36
  };
17
37
  }
18
- function prependPresenceOctet(v) {
19
- return concatUint8Arrays(encodeUint8(0x1), v);
20
- }
21
38
  //# sourceMappingURL=optional.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/codec/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAItD,MAAM,UAAU,cAAc,CAAI,OAAmB;IACnD,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,OAAmB;IACnD,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACnB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;YACrC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAa;IACzC,OAAO,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AAC/C,CAAC"}
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/codec/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,UAAU,eAAe,CAAI,OAAyB;IAC1D,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAC/B,OAAO;gBACL,GAAG,GAAG,CAAC;gBACP,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;oBACjB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;oBACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;oBAC1B,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;gBAC3B,CAAC;aACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,CAAC;gBACD,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;oBACjB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;oBACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAC5B,CAAC;aACF,CAAA;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,OAAmB;IACnD,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACnB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;YACrC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -1,9 +1,12 @@
1
1
  export type Encoder<T> = (t: T) => Uint8Array;
2
- export declare function contramapEncoders<T extends unknown[], R>(encoders: {
3
- [K in keyof T]: Encoder<T[K]>;
4
- }, toTuple: (input: R) => T): Encoder<R>;
5
- export declare function composeEncoders<T extends unknown[]>(encoders: {
6
- [K in keyof T]: Encoder<T[K]>;
7
- }): Encoder<T>;
8
- export declare function contramapEncoder<T, U>(enc: Encoder<T>, f: (u: U) => Readonly<T>): Encoder<U>;
9
- export declare function encodeVoid<T>(): Encoder<T>;
2
+ export type BufferEncoder<T> = (t: T) => [number, (offset: number, buffer: ArrayBuffer) => void];
3
+ export declare function encode<T>(enc: BufferEncoder<T>): Encoder<T>;
4
+ export declare function composeBufferEncoder<T, U>(encT: BufferEncoder<T>, encU: BufferEncoder<U>): BufferEncoder<[T, U]>;
5
+ export declare function contramapBufferEncoder<T, U>(enc: BufferEncoder<T>, f: (u: U) => Readonly<T>): BufferEncoder<U>;
6
+ export declare function contramapBufferEncoders<T extends unknown[], R>(encoders: {
7
+ [K in keyof T]: BufferEncoder<T[K]>;
8
+ }, toTuple: (input: R) => T): BufferEncoder<R>;
9
+ export declare function composeBufferEncoders<T extends unknown[]>(encoders: {
10
+ [K in keyof T]: BufferEncoder<T[K]>;
11
+ }): BufferEncoder<T>;
12
+ export declare const encVoid: [number, (offset: number, buffer: ArrayBuffer) => void];
@@ -1,29 +1,47 @@
1
- export function contramapEncoders(encoders, toTuple) {
1
+ export function encode(enc) {
2
+ return (t) => {
3
+ const [len, write] = enc(t);
4
+ const buf = new ArrayBuffer(len);
5
+ write(0, buf);
6
+ return new Uint8Array(buf);
7
+ };
8
+ }
9
+ export function composeBufferEncoder(encT, encU) {
10
+ return ([t, u]) => {
11
+ const [lenT, writeT] = encT(t);
12
+ const [lenU, writeU] = encU(u);
13
+ return [
14
+ lenT + lenU,
15
+ (offset, buffer) => {
16
+ writeT(offset, buffer);
17
+ writeU(offset + lenT, buffer);
18
+ },
19
+ ];
20
+ };
21
+ }
22
+ export function contramapBufferEncoder(enc, f) {
23
+ return (u) => enc(f(u));
24
+ }
25
+ export function contramapBufferEncoders(encoders, toTuple) {
2
26
  return (value) => {
3
27
  const values = toTuple(value);
4
- const encodedParts = new Array(values.length);
5
28
  let totalLength = 0;
6
- for (let i = 0; i < values.length; i++) {
7
- const encoded = encoders[i](values[i]);
8
- totalLength += encoded.byteLength;
9
- encodedParts[i] = encoded;
10
- }
11
- const result = new Uint8Array(totalLength);
12
- let offset = 0;
13
- for (const arr of encodedParts) {
14
- result.set(arr, offset);
15
- offset += arr.length;
29
+ let writeTotal = (_offset, _buffer) => { };
30
+ for (let i = 0; i < encoders.length; i++) {
31
+ const [len, write] = encoders[i](values[i]);
32
+ const oldFunc = writeTotal;
33
+ const currentLen = totalLength;
34
+ writeTotal = (offset, buffer) => {
35
+ oldFunc(offset, buffer);
36
+ write(offset + currentLen, buffer);
37
+ };
38
+ totalLength += len;
16
39
  }
17
- return result;
40
+ return [totalLength, writeTotal];
18
41
  };
19
42
  }
20
- export function composeEncoders(encoders) {
21
- return (values) => contramapEncoders(encoders, (t) => t)(values);
22
- }
23
- export function contramapEncoder(enc, f) {
24
- return (u) => enc(f(u));
25
- }
26
- export function encodeVoid() {
27
- return () => new Uint8Array();
43
+ export function composeBufferEncoders(encoders) {
44
+ return (values) => contramapBufferEncoders(encoders, (t) => t)(values);
28
45
  }
46
+ export const encVoid = [0, () => { }];
29
47
  //# sourceMappingURL=tlsEncoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tlsEncoder.js","sourceRoot":"","sources":["../../src/codec/tlsEncoder.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAC/B,QAA2C,EAC3C,OAAwB;IAExB,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAE7B,MAAM,YAAY,GAAiB,IAAI,KAAK,CAAa,MAAM,CAAC,MAAM,CAAC,CAAA;QACvE,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,WAAW,IAAI,OAAO,CAAC,UAAU,CAAA;YACjC,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;QAC3B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;QAC1C,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACvB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;QACtB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAsB,QAA2C;IAC9F,OAAO,CAAC,MAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAO,GAAe,EAAE,CAAwB;IAC9E,OAAO,CAAC,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,GAAG,EAAE,CAAC,IAAI,UAAU,EAAE,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"tlsEncoder.js","sourceRoot":"","sources":["../../src/codec/tlsEncoder.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,MAAM,CAAI,GAAqB;IAC7C,OAAO,CAAC,CAAI,EAAE,EAAE;QACd,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QAChC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAO,IAAsB,EAAE,IAAsB;IACvF,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAE9B,OAAO;YACL,IAAI,GAAG,IAAI;YACX,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACtB,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;YAC/B,CAAC;SACF,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAO,GAAqB,EAAE,CAAwB;IAC1F,OAAO,CAAC,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAiD,EACjD,OAAwB;IAExB,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,IAAI,UAAU,GAAG,CAAC,OAAe,EAAE,OAAoB,EAAE,EAAE,GAAE,CAAC,CAAA;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,UAAU,CAAA;YAC1B,MAAM,UAAU,GAAG,WAAW,CAAA;YAC9B,UAAU,GAAG,CAAC,MAAc,EAAE,MAAmB,EAAE,EAAE;gBACnD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACvB,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE,MAAM,CAAC,CAAA;YACpC,CAAC,CAAA;YACD,WAAW,IAAI,GAAG,CAAA;QACpB,CAAC;QACD,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAClC,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAsB,QAE1D;IACC,OAAO,CAAC,MAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAA4D,CAAC,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { Decoder } from "./tlsDecoder.js";
2
- import { Encoder } from "./tlsEncoder.js";
3
- export declare const encodeVarLenData: Encoder<Uint8Array>;
4
- export declare function encodeLength(len: number): Uint8Array;
2
+ import { BufferEncoder } from "./tlsEncoder.js";
3
+ export declare const varLenDataEncoder: BufferEncoder<Uint8Array>;
4
+ export declare function lengthEncoder(len: number): [number, (offset: number, buffer: ArrayBuffer) => void];
5
5
  export declare function determineLength(data: Uint8Array, offset?: number): {
6
6
  length: number;
7
7
  lengthFieldSize: number;
8
8
  };
9
9
  export declare const decodeVarLenData: Decoder<Uint8Array>;
10
- export declare function encodeVarLenType<T>(enc: Encoder<T>): Encoder<T[]>;
10
+ export declare function varLenTypeEncoder<T>(enc: BufferEncoder<T>): BufferEncoder<T[]>;
11
11
  export declare function decodeVarLenType<T>(dec: Decoder<T>): Decoder<T[]>;
@@ -1,23 +1,49 @@
1
1
  import { CodecError } from "../mlsError.js";
2
- export const encodeVarLenData = (data) => {
3
- const lenBytes = encodeLength(data.length);
4
- const result = new Uint8Array(lenBytes.length + data.length);
5
- result.set(lenBytes, 0);
6
- result.set(data, lenBytes.length);
7
- return result;
2
+ export const varLenDataEncoder = (data) => {
3
+ const [len, write] = lengthEncoder(data.length);
4
+ return [
5
+ len + data.length,
6
+ (offset, buffer) => {
7
+ write(offset, buffer);
8
+ const view = new Uint8Array(buffer);
9
+ view.set(data, offset + len);
10
+ },
11
+ ];
8
12
  };
9
- export function encodeLength(len) {
13
+ export function lengthEncoder(len) {
10
14
  if (len < 64) {
11
- // 1-byte length: 00xxxxxx
12
- return new Uint8Array([len & 0b00111111]);
15
+ return [
16
+ 1,
17
+ (offset, buffer) => {
18
+ // 1-byte length: 00xxxxxx
19
+ const view = new DataView(buffer);
20
+ view.setUint8(offset, len & 0b00111111);
21
+ },
22
+ ];
13
23
  }
14
24
  else if (len < 16384) {
15
- // 2-byte length: 01xxxxxx xxxxxxxx
16
- return new Uint8Array([((len >> 8) & 0b00111111) | 0b01000000, len & 0xff]);
25
+ return [
26
+ 2,
27
+ (offset, buffer) => {
28
+ // 2-byte length: 01xxxxxx xxxxxxxx
29
+ const view = new DataView(buffer);
30
+ view.setUint8(offset, ((len >> 8) & 0b00111111) | 0b01000000);
31
+ view.setUint8(offset + 1, len & 0xff);
32
+ },
33
+ ];
17
34
  }
18
35
  else if (len < 0x40000000) {
19
- // 4-byte length: 10xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
20
- return new Uint8Array([((len >> 24) & 0b00111111) | 0b10000000, (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff]);
36
+ return [
37
+ 4,
38
+ (offset, buffer) => {
39
+ // 4-byte length: 10xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
40
+ const view = new DataView(buffer);
41
+ view.setUint8(offset, ((len >> 24) & 0b00111111) | 0b10000000);
42
+ view.setUint8(offset + 1, (len >> 16) & 0xff);
43
+ view.setUint8(offset + 2, (len >> 8) & 0xff);
44
+ view.setUint8(offset + 3, len & 0xff);
45
+ },
46
+ ];
21
47
  }
22
48
  else {
23
49
  throw new CodecError("Length too large to encode (max is 2^30 - 1)");
@@ -64,24 +90,28 @@ export const decodeVarLenData = (buf, offset) => {
64
90
  const data = buf.subarray(offset + lengthFieldSize, offset + totalBytes);
65
91
  return [data, totalBytes];
66
92
  };
67
- export function encodeVarLenType(enc) {
93
+ export function varLenTypeEncoder(enc) {
68
94
  return (data) => {
69
- const encodedParts = new Array(data.length);
70
- let dataLength = 0;
95
+ let totalLength = 0;
96
+ let writeTotal = (_offset, _buffer) => { };
71
97
  for (let i = 0; i < data.length; i++) {
72
- const encoded = enc(data[i]);
73
- dataLength += encoded.byteLength;
74
- encodedParts[i] = encoded;
98
+ const [len, write] = enc(data[i]);
99
+ const oldFunc = writeTotal;
100
+ const currentLen = totalLength;
101
+ writeTotal = (offset, buffer) => {
102
+ oldFunc(offset, buffer);
103
+ write(offset + currentLen, buffer);
104
+ };
105
+ totalLength += len;
75
106
  }
76
- const lengthHeader = encodeLength(dataLength);
77
- const result = new Uint8Array(lengthHeader.length + dataLength);
78
- result.set(lengthHeader, 0);
79
- let offset = lengthHeader.length;
80
- for (const arr of encodedParts) {
81
- result.set(arr, offset);
82
- offset += arr.length;
83
- }
84
- return result;
107
+ const [headerLength, writeLength] = lengthEncoder(totalLength);
108
+ return [
109
+ headerLength + totalLength,
110
+ (offset, buffer) => {
111
+ writeLength(offset, buffer);
112
+ writeTotal(offset + headerLength, buffer);
113
+ },
114
+ ];
85
115
  };
86
116
  }
87
117
  export function decodeVarLenType(dec) {
@@ -1 +1 @@
1
- {"version":3,"file":"variableLength.js","sourceRoot":"","sources":["../../src/codec/variableLength.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variableLength.js","sourceRoot":"","sources":["../../src/codec/variableLength.ts"],"names":[],"mappings":"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"}