@s2-dev/streamstore 0.16.12 → 0.17.1

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 (109) hide show
  1. package/dist/cjs/basin.d.ts +6 -2
  2. package/dist/cjs/basin.d.ts.map +1 -1
  3. package/dist/cjs/basin.js +11 -5
  4. package/dist/cjs/basin.js.map +1 -1
  5. package/dist/cjs/batch-transform.d.ts +64 -0
  6. package/dist/cjs/batch-transform.d.ts.map +1 -0
  7. package/dist/cjs/batch-transform.js +144 -0
  8. package/dist/cjs/batch-transform.js.map +1 -0
  9. package/dist/cjs/generated/proto/s2.d.ts.map +1 -0
  10. package/dist/cjs/generated/proto/s2.js.map +1 -0
  11. package/dist/cjs/index.d.ts +4 -2
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +5 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/lib/stream/factory.d.ts +15 -0
  16. package/dist/cjs/lib/stream/factory.d.ts.map +1 -0
  17. package/dist/cjs/lib/stream/factory.js +36 -0
  18. package/dist/cjs/lib/stream/factory.js.map +1 -0
  19. package/dist/cjs/lib/stream/runtime.d.ts +13 -0
  20. package/dist/cjs/lib/stream/runtime.d.ts.map +1 -0
  21. package/dist/cjs/lib/stream/runtime.js +50 -0
  22. package/dist/cjs/lib/stream/runtime.js.map +1 -0
  23. package/dist/cjs/lib/stream/transport/fetch/index.d.ts +79 -0
  24. package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -0
  25. package/dist/cjs/lib/stream/transport/fetch/index.js +382 -0
  26. package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -0
  27. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +7 -0
  28. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -0
  29. package/dist/cjs/lib/stream/transport/fetch/shared.js +170 -0
  30. package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -0
  31. package/dist/cjs/lib/stream/transport/s2s/framing.d.ts +47 -0
  32. package/dist/cjs/lib/stream/transport/s2s/framing.d.ts.map +1 -0
  33. package/dist/cjs/lib/stream/transport/s2s/framing.js +123 -0
  34. package/dist/cjs/lib/stream/transport/s2s/framing.js.map +1 -0
  35. package/dist/cjs/lib/stream/transport/s2s/index.d.ts +23 -0
  36. package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -0
  37. package/dist/cjs/lib/stream/transport/s2s/index.js +789 -0
  38. package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -0
  39. package/dist/cjs/lib/stream/types.d.ts +53 -0
  40. package/dist/cjs/lib/stream/types.d.ts.map +1 -0
  41. package/dist/cjs/lib/stream/types.js +3 -0
  42. package/dist/cjs/lib/stream/types.js.map +1 -0
  43. package/dist/cjs/stream.d.ts +22 -116
  44. package/dist/cjs/stream.d.ts.map +1 -1
  45. package/dist/cjs/stream.js +35 -551
  46. package/dist/cjs/stream.js.map +1 -1
  47. package/dist/cjs/utils.d.ts +32 -6
  48. package/dist/cjs/utils.d.ts.map +1 -1
  49. package/dist/cjs/utils.js +129 -34
  50. package/dist/cjs/utils.js.map +1 -1
  51. package/dist/esm/basin.d.ts +6 -2
  52. package/dist/esm/basin.d.ts.map +1 -1
  53. package/dist/esm/basin.js +11 -5
  54. package/dist/esm/basin.js.map +1 -1
  55. package/dist/esm/batch-transform.d.ts +64 -0
  56. package/dist/esm/batch-transform.d.ts.map +1 -0
  57. package/dist/esm/batch-transform.js +140 -0
  58. package/dist/esm/batch-transform.js.map +1 -0
  59. package/dist/esm/generated/proto/s2.d.ts.map +1 -0
  60. package/dist/esm/generated/proto/s2.js.map +1 -0
  61. package/dist/esm/index.d.ts +4 -2
  62. package/dist/esm/index.d.ts.map +1 -1
  63. package/dist/esm/index.js +2 -1
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/esm/lib/stream/factory.d.ts +15 -0
  66. package/dist/esm/lib/stream/factory.d.ts.map +1 -0
  67. package/dist/esm/lib/stream/factory.js +33 -0
  68. package/dist/esm/lib/stream/factory.js.map +1 -0
  69. package/dist/esm/lib/stream/runtime.d.ts +13 -0
  70. package/dist/esm/lib/stream/runtime.d.ts.map +1 -0
  71. package/dist/esm/lib/stream/runtime.js +46 -0
  72. package/dist/esm/lib/stream/runtime.js.map +1 -0
  73. package/dist/esm/lib/stream/transport/fetch/index.d.ts +79 -0
  74. package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -0
  75. package/dist/esm/lib/stream/transport/fetch/index.js +376 -0
  76. package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -0
  77. package/dist/esm/lib/stream/transport/fetch/shared.d.ts +7 -0
  78. package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -0
  79. package/dist/esm/lib/stream/transport/fetch/shared.js +166 -0
  80. package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -0
  81. package/dist/esm/lib/stream/transport/s2s/framing.d.ts +47 -0
  82. package/dist/esm/lib/stream/transport/s2s/framing.d.ts.map +1 -0
  83. package/dist/esm/lib/stream/transport/s2s/framing.js +118 -0
  84. package/dist/esm/lib/stream/transport/s2s/framing.js.map +1 -0
  85. package/dist/esm/lib/stream/transport/s2s/index.d.ts +23 -0
  86. package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -0
  87. package/dist/esm/lib/stream/transport/s2s/index.js +785 -0
  88. package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -0
  89. package/dist/esm/lib/stream/types.d.ts +53 -0
  90. package/dist/esm/lib/stream/types.d.ts.map +1 -0
  91. package/dist/esm/lib/stream/types.js +2 -0
  92. package/dist/esm/lib/stream/types.js.map +1 -0
  93. package/dist/esm/stream.d.ts +22 -116
  94. package/dist/esm/stream.d.ts.map +1 -1
  95. package/dist/esm/stream.js +36 -551
  96. package/dist/esm/stream.js.map +1 -1
  97. package/dist/esm/utils.d.ts +32 -6
  98. package/dist/esm/utils.d.ts.map +1 -1
  99. package/dist/esm/utils.js +126 -34
  100. package/dist/esm/utils.js.map +1 -1
  101. package/package.json +5 -2
  102. package/dist/cjs/generated/proto/s2/v1/s2.d.ts.map +0 -1
  103. package/dist/cjs/generated/proto/s2/v1/s2.js.map +0 -1
  104. package/dist/esm/generated/proto/s2/v1/s2.d.ts.map +0 -1
  105. package/dist/esm/generated/proto/s2/v1/s2.js.map +0 -1
  106. /package/dist/cjs/generated/proto/{s2/v1/s2.d.ts → s2.d.ts} +0 -0
  107. /package/dist/cjs/generated/proto/{s2/v1/s2.js → s2.js} +0 -0
  108. /package/dist/esm/generated/proto/{s2/v1/s2.d.ts → s2.d.ts} +0 -0
  109. /package/dist/esm/generated/proto/{s2/v1/s2.js → s2.js} +0 -0
@@ -1,6 +1,9 @@
1
- import type { AppendRecord as AppendRecordType } from "./stream.js";
2
- type Headers = Record<string, string> | Array<[string | Uint8Array, string | Uint8Array]>;
1
+ import type { AppendHeaders, AppendRecord as AppendRecordType } from "./lib/stream/types.js";
3
2
  export type AppendRecord = AppendRecordType;
3
+ declare function appendRecordMake(body?: string, headers?: AppendHeaders<"string">, timestamp?: number): AppendRecord;
4
+ declare function appendRecordMake(body?: Uint8Array, headers?: AppendHeaders<"bytes">, timestamp?: number): AppendRecord;
5
+ declare function appendRecordCommand(command: string, body?: string, timestamp?: number): AppendRecord;
6
+ declare function appendRecordCommand(command: Uint8Array, body?: Uint8Array, timestamp?: number): AppendRecord;
4
7
  /**
5
8
  * Helpers to construct appendable records.
6
9
  *
@@ -11,10 +14,33 @@ export type AppendRecord = AppendRecordType;
11
14
  * - `trim` is a command record that encodes a sequence number for trimming
12
15
  */
13
16
  export declare const AppendRecord: {
14
- readonly make: (body?: string | Uint8Array, headers?: Headers, timestamp?: AppendRecordType["timestamp"]) => AppendRecordType;
15
- readonly command: (command: string, body?: string | Uint8Array, additionalHeaders?: Headers, timestamp?: AppendRecordType["timestamp"]) => AppendRecordType;
16
- readonly fence: (fencing_token: string, additionalHeaders?: Headers, timestamp?: AppendRecordType["timestamp"]) => AppendRecordType;
17
- readonly trim: (seqNum: number | bigint, additionalHeaders?: Headers, timestamp?: AppendRecordType["timestamp"]) => AppendRecordType;
17
+ readonly make: typeof appendRecordMake;
18
+ readonly command: typeof appendRecordCommand;
19
+ readonly fence: (fencing_token: string, timestamp?: number) => AppendRecord;
20
+ readonly trim: (seqNum: number | bigint, timestamp?: number) => AppendRecord;
18
21
  };
22
+ /**
23
+ * Calculate the UTF-8 byte length of a string.
24
+ * Handles all Unicode characters including surrogate pairs correctly.
25
+ *
26
+ * @param str The string to measure
27
+ * @returns The byte length when encoded as UTF-8
28
+ */
29
+ export declare function utf8ByteLength(str: string): number;
30
+ /**
31
+ * Calculate the metered size in bytes of an AppendRecord.
32
+ * This includes the body and headers, but not metadata like timestamp.
33
+ *
34
+ * This function calculates how many bytes the record will occupy
35
+ * after being received and deserialized as raw bytes on the S2 side.
36
+ * For strings, it calculates UTF-8 byte length. For Uint8Array, it uses
37
+ * the array length directly (same value as would be used when encoding
38
+ * to base64 for transmission).
39
+ *
40
+ * @param record The record to measure
41
+ * @returns The size in bytes
42
+ */
43
+ export declare function meteredSizeBytes(record: AppendRecord): number;
44
+ export declare function computeAppendRecordFormat(record: AppendRecord): "string" | "bytes";
19
45
  export {};
20
46
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,KAAK,OAAO,GACT,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,KAAK,CAAC,CAAC,MAAM,GAAG,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;2BAEhB,MAAM,GAAG,UAAU,YAChB,OAAO,cACL,gBAAgB,CAAC,WAAW,CAAC,KACvC,gBAAgB;gCAST,MAAM,SACR,MAAM,GAAG,UAAU,sBACN,OAAO,cACf,gBAAgB,CAAC,WAAW,CAAC,KACvC,gBAAgB;oCAsBH,MAAM,sBACD,OAAO,cACf,gBAAgB,CAAC,WAAW,CAAC;4BAUjC,MAAM,GAAG,MAAM,sBACH,OAAO,cACf,gBAAgB,CAAC,WAAW,CAAC,KACvC,gBAAgB;CAOV,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,IAAI,gBAAgB,EAChC,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,iBAAS,gBAAgB,CACxB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,EACjC,SAAS,CAAC,EAAE,MAAM,GAChB,YAAY,CAAC;AAChB,iBAAS,gBAAgB,CACxB,IAAI,CAAC,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,GAChB,YAAY,CAAC;AAahB,iBAAS,mBAAmB,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GAChB,YAAY,CAAC;AAChB,iBAAS,mBAAmB,CAC3B,OAAO,EAAE,UAAU,EACnB,IAAI,CAAC,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,GAChB,YAAY,CAAC;AAgBhB;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;;;oCAID,MAAM,cAAc,MAAM,KAAG,YAAY;4BAGjD,MAAM,GAAG,MAAM,cAAc,MAAM,KAAG,YAAY;CAWxD,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiClD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAgC7D;AAED,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,YAAY,GAClB,QAAQ,GAAG,OAAO,CAiBpB"}
package/dist/cjs/utils.js CHANGED
@@ -1,6 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AppendRecord = void 0;
4
+ exports.utf8ByteLength = utf8ByteLength;
5
+ exports.meteredSizeBytes = meteredSizeBytes;
6
+ exports.computeAppendRecordFormat = computeAppendRecordFormat;
7
+ function appendRecordMake(body, headers, timestamp) {
8
+ return {
9
+ body,
10
+ headers,
11
+ timestamp,
12
+ };
13
+ }
14
+ function appendRecordCommand(command, body, timestamp) {
15
+ const headers = (() => {
16
+ if (typeof command === "string") {
17
+ return [["", command]];
18
+ }
19
+ return [[new TextEncoder().encode(""), command]];
20
+ })();
21
+ // safety: we know the types are correct because of the overloads
22
+ return exports.AppendRecord.make(body, headers, timestamp);
23
+ }
4
24
  /**
5
25
  * Helpers to construct appendable records.
6
26
  *
@@ -11,45 +31,120 @@ exports.AppendRecord = void 0;
11
31
  * - `trim` is a command record that encodes a sequence number for trimming
12
32
  */
13
33
  exports.AppendRecord = {
14
- make: (body, headers, timestamp) => {
15
- return {
16
- body,
17
- headers,
18
- timestamp,
19
- };
34
+ // overloads for only string or only bytes
35
+ make: appendRecordMake,
36
+ command: appendRecordCommand,
37
+ fence: (fencing_token, timestamp) => {
38
+ return exports.AppendRecord.command("fence", fencing_token, timestamp);
20
39
  },
21
- command: (
22
- /** Command name (e.g. "fence" or "trim"). */
23
- command, body, additionalHeaders, timestamp) => {
24
- const headers = (() => {
25
- if (!additionalHeaders) {
26
- return [["", command]];
27
- }
28
- else if (Array.isArray(additionalHeaders)) {
29
- return [["", command], ...additionalHeaders];
30
- }
31
- else {
32
- return [
33
- ["", command],
34
- ...Object.entries(additionalHeaders).map(([key, value]) => [key, value]),
35
- ];
36
- }
37
- })();
38
- return {
39
- body,
40
- headers,
41
- timestamp,
42
- };
43
- },
44
- fence: (fencing_token, additionalHeaders, timestamp) => {
45
- return exports.AppendRecord.command("fence", fencing_token, additionalHeaders, timestamp);
46
- },
47
- trim: (seqNum, additionalHeaders, timestamp) => {
40
+ trim: (seqNum, timestamp) => {
48
41
  // Encode sequence number as 8 big-endian bytes
49
42
  const buffer = new Uint8Array(8);
50
43
  const view = new DataView(buffer.buffer);
51
44
  view.setBigUint64(0, BigInt(seqNum), false); // false = big-endian
52
- return exports.AppendRecord.command("trim", buffer, additionalHeaders, timestamp);
45
+ return exports.AppendRecord.command(new TextEncoder().encode("trim"), buffer, timestamp);
53
46
  },
54
47
  };
48
+ /**
49
+ * Calculate the UTF-8 byte length of a string.
50
+ * Handles all Unicode characters including surrogate pairs correctly.
51
+ *
52
+ * @param str The string to measure
53
+ * @returns The byte length when encoded as UTF-8
54
+ */
55
+ function utf8ByteLength(str) {
56
+ let bytes = 0;
57
+ for (let i = 0; i < str.length; i++) {
58
+ const code = str.charCodeAt(i);
59
+ if (code <= 0x7f) {
60
+ bytes += 1;
61
+ }
62
+ else if (code <= 0x7ff) {
63
+ bytes += 2;
64
+ }
65
+ else if (code >= 0xd800 && code <= 0xdbff) {
66
+ // high surrogate
67
+ if (i + 1 < str.length) {
68
+ const next = str.charCodeAt(i + 1);
69
+ if (next >= 0xdc00 && next <= 0xdfff) {
70
+ // valid surrogate pair → 4 bytes in UTF-8
71
+ bytes += 4;
72
+ i++; // skip low surrogate
73
+ }
74
+ else {
75
+ // unpaired high surrogate → treat as 3 bytes (replacement-style)
76
+ bytes += 3;
77
+ }
78
+ }
79
+ else {
80
+ // unpaired high surrogate at end of string
81
+ bytes += 3;
82
+ }
83
+ }
84
+ else if (code >= 0xdc00 && code <= 0xdfff) {
85
+ // lone low surrogate — treat as 3 bytes
86
+ bytes += 3;
87
+ }
88
+ else {
89
+ bytes += 3;
90
+ }
91
+ }
92
+ return bytes;
93
+ }
94
+ /**
95
+ * Calculate the metered size in bytes of an AppendRecord.
96
+ * This includes the body and headers, but not metadata like timestamp.
97
+ *
98
+ * This function calculates how many bytes the record will occupy
99
+ * after being received and deserialized as raw bytes on the S2 side.
100
+ * For strings, it calculates UTF-8 byte length. For Uint8Array, it uses
101
+ * the array length directly (same value as would be used when encoding
102
+ * to base64 for transmission).
103
+ *
104
+ * @param record The record to measure
105
+ * @returns The size in bytes
106
+ */
107
+ function meteredSizeBytes(record) {
108
+ // Calculate header size based on actual data types
109
+ let numHeaders = 0;
110
+ let headersSize = 0;
111
+ if (record.headers) {
112
+ if (Array.isArray(record.headers)) {
113
+ numHeaders = record.headers.length;
114
+ headersSize = record.headers.reduce((sum, [k, v]) => {
115
+ // Infer format from key type: string = UTF-8 bytes, Uint8Array = byte length
116
+ const keySize = typeof k === "string" ? utf8ByteLength(k) : k.length;
117
+ const valueSize = typeof v === "string" ? utf8ByteLength(v) : v.length;
118
+ return sum + keySize + valueSize;
119
+ }, 0);
120
+ }
121
+ else {
122
+ // Record<string, string> format (only for string format)
123
+ const entries = Object.entries(record.headers);
124
+ numHeaders = entries.length;
125
+ headersSize = entries.reduce((sum, [k, v]) => {
126
+ return sum + utf8ByteLength(k) + utf8ByteLength(v);
127
+ }, 0);
128
+ }
129
+ }
130
+ // Calculate body size based on actual data type
131
+ const bodySize = record.body
132
+ ? typeof record.body === "string"
133
+ ? utf8ByteLength(record.body)
134
+ : record.body.length
135
+ : 0;
136
+ return 8 + 2 * numHeaders + headersSize + bodySize;
137
+ }
138
+ function computeAppendRecordFormat(record) {
139
+ let result = "string";
140
+ if (record.body && typeof record.body !== "string") {
141
+ result = "bytes";
142
+ }
143
+ if (record.headers &&
144
+ Array.isArray(record.headers) &&
145
+ record.headers.some(([k, v]) => typeof k !== "string" || typeof v !== "string")) {
146
+ result = "bytes";
147
+ }
148
+ return result;
149
+ }
55
150
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;GAQG;AACU,QAAA,YAAY,GAAG;IAC3B,IAAI,EAAE,CACL,IAA0B,EAC1B,OAAiB,EACjB,SAAyC,EACtB,EAAE;QACrB,OAAO;YACN,IAAI;YACJ,OAAO;YACP,SAAS;SACT,CAAC;IACH,CAAC;IACD,OAAO,EAAE;IACR,6CAA6C;IAC7C,OAAe,EACf,IAA0B,EAC1B,iBAA2B,EAC3B,SAAyC,EACtB,EAAE;QACrB,MAAM,OAAO,GAAgC,CAAC,GAAG,EAAE;YAClD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxB,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAqB,EAAE,GAAG,iBAAiB,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACP,OAAO;oBACN,CAAC,EAAE,EAAE,OAAO,CAAqB;oBACjC,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CACvC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAqB,CAClD;iBACD,CAAC;YACH,CAAC;QACF,CAAC,CAAC,EAAE,CAAC;QACL,OAAO;YACN,IAAI;YACJ,OAAO;YACP,SAAS;SACT,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CACN,aAAqB,EACrB,iBAA2B,EAC3B,SAAyC,EACxC,EAAE;QACH,OAAO,oBAAY,CAAC,OAAO,CAC1B,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,SAAS,CACT,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CACL,MAAuB,EACvB,iBAA2B,EAC3B,SAAyC,EACtB,EAAE;QACrB,+CAA+C;QAC/C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB;QAClE,OAAO,oBAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;CACQ,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import * as Redacted from "./lib/redacted.js";
2
+ import type { SessionTransports } from "./lib/stream/types.js";
2
3
  import { S2Stream } from "./stream.js";
3
4
  import { S2Streams } from "./streams.js";
4
5
  export declare class S2Basin {
5
6
  private readonly client;
6
- private readonly accessToken;
7
+ private readonly transportConfig;
7
8
  readonly name: string;
8
9
  readonly streams: S2Streams;
9
10
  /**
@@ -24,6 +25,9 @@ export declare class S2Basin {
24
25
  * Create a stream-scoped helper bound to `this` basin.
25
26
  * @param name Stream name
26
27
  */
27
- stream(name: string): S2Stream;
28
+ stream(name: string, options?: StreamOptions): S2Stream;
29
+ }
30
+ export interface StreamOptions {
31
+ forceTransport?: SessionTransports;
28
32
  }
29
33
  //# sourceMappingURL=basin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"basin.d.ts","sourceRoot":"","sources":["../../src/basin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,qBAAa,OAAO;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEhD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,OAAO,EAAE,SAAS,CAAC;IAEnC;;;;;;;;OAQG;gBAEF,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACR,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,kBAAkB,EAAE,OAAO,CAAC;KAC5B;IAcF;;;OAGG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM;CAG1B"}
1
+ {"version":3,"file":"basin.d.ts","sourceRoot":"","sources":["../../src/basin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,qBAAa,OAAO;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,OAAO,EAAE,SAAS,CAAC;IAEnC;;;;;;;;OAQG;gBAEF,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACR,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,kBAAkB,EAAE,OAAO,CAAC;KAC5B;IAiBF;;;OAGG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa;CAMnD;AAED,MAAM,WAAW,aAAa;IAC7B,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACnC"}
package/dist/esm/basin.js CHANGED
@@ -4,7 +4,7 @@ import { S2Stream } from "./stream.js";
4
4
  import { S2Streams } from "./streams.js";
5
5
  export class S2Basin {
6
6
  client;
7
- accessToken;
7
+ transportConfig;
8
8
  name;
9
9
  streams;
10
10
  /**
@@ -18,10 +18,13 @@ export class S2Basin {
18
18
  */
19
19
  constructor(name, options) {
20
20
  this.name = name;
21
- this.accessToken = options.accessToken;
21
+ this.transportConfig = {
22
+ baseUrl: options.baseUrl,
23
+ accessToken: options.accessToken,
24
+ };
22
25
  this.client = createClient(createConfig({
23
26
  baseUrl: options.baseUrl,
24
- auth: () => Redacted.value(this.accessToken),
27
+ auth: () => Redacted.value(this.transportConfig.accessToken),
25
28
  headers: options.includeBasinHeader ? { "s2-basin": name } : {},
26
29
  }));
27
30
  this.streams = new S2Streams(this.client);
@@ -30,8 +33,11 @@ export class S2Basin {
30
33
  * Create a stream-scoped helper bound to `this` basin.
31
34
  * @param name Stream name
32
35
  */
33
- stream(name) {
34
- return new S2Stream(name, this.client);
36
+ stream(name, options) {
37
+ return new S2Stream(name, this.client, {
38
+ ...this.transportConfig,
39
+ forceTransport: options?.forceTransport,
40
+ });
35
41
  }
36
42
  }
37
43
  //# sourceMappingURL=basin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"basin.js","sourceRoot":"","sources":["../../src/basin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,OAAO,OAAO;IACF,MAAM,CAAS;IACf,WAAW,CAAoB;IAEhC,IAAI,CAAS;IACb,OAAO,CAAY;IAEnC;;;;;;;;OAQG;IACH,YACC,IAAY,EACZ,OAIC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,YAAY,CACzB,YAAY,CAAC;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;YAC5C,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;SAC/D,CAAC,CACF,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAY;QACzB,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACD"}
1
+ {"version":3,"file":"basin.js","sourceRoot":"","sources":["../../src/basin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,OAAO,OAAO;IACF,MAAM,CAAS;IACf,eAAe,CAAkB;IAClC,IAAI,CAAS;IACb,OAAO,CAAY;IAEnC;;;;;;;;OAQG;IACH,YACC,IAAY,EACZ,OAIC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;SAChC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,YAAY,CACzB,YAAY,CAAC;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC5D,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;SAC/D,CAAC,CACF,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,IAAY,EAAE,OAAuB;QAClD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YACtC,GAAG,IAAI,CAAC,eAAe;YACvB,cAAc,EAAE,OAAO,EAAE,cAAc;SACvC,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -0,0 +1,64 @@
1
+ import { AppendRecord } from "./utils.js";
2
+ export interface BatchTransformArgs {
3
+ /** Duration in milliseconds to wait before flushing a batch (default: 5ms) */
4
+ lingerDurationMillis?: number;
5
+ /** Maximum number of records in a batch (default: 1000, max: 1000) */
6
+ maxBatchRecords?: number;
7
+ /** Maximum batch size in metered bytes (default: 1 MiB, max: 1 MiB) */
8
+ maxBatchBytes?: number;
9
+ /** Optional fencing token to enforce (remains static across batches) */
10
+ fencing_token?: string;
11
+ /** Optional sequence number to match for first batch (auto-increments for subsequent batches) */
12
+ match_seq_num?: number;
13
+ }
14
+ /** Batch output type with optional fencing token and match_seq_num */
15
+ export type BatchOutput = {
16
+ records: AppendRecord[];
17
+ fencing_token?: string;
18
+ match_seq_num?: number;
19
+ };
20
+ /**
21
+ * A TransformStream that batches AppendRecords based on time, record count, and byte size.
22
+ *
23
+ * Input: AppendRecord (individual records)
24
+ * Output: { records: AppendRecord[], fencing_token?: string, match_seq_num?: number }
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const batcher = new BatchTransform<"string">({
29
+ * lingerDuration: 20,
30
+ * maxBatchRecords: 100,
31
+ * maxBatchBytes: 256 * 1024,
32
+ * match_seq_num: 0 // Optional: auto-increments per batch
33
+ * });
34
+ *
35
+ * // Pipe through the batcher and session to get acks
36
+ * readable.pipeThrough(batcher).pipeThrough(session).pipeTo(writable);
37
+ *
38
+ * // Or use manually
39
+ * const writer = batcher.writable.getWriter();
40
+ * writer.write(AppendRecord.make("foo"));
41
+ * await writer.close();
42
+ *
43
+ * for await (const batch of batcher.readable) {
44
+ * console.log(`Got batch of ${batch.records.length} records`);
45
+ * }
46
+ * ```
47
+ */
48
+ export declare class BatchTransform extends TransformStream<AppendRecord, BatchOutput> {
49
+ private currentBatch;
50
+ private currentBatchSize;
51
+ private lingerTimer;
52
+ private controller;
53
+ private readonly maxBatchRecords;
54
+ private readonly maxBatchBytes;
55
+ private readonly lingerDuration;
56
+ private readonly fencing_token?;
57
+ private next_match_seq_num?;
58
+ constructor(args?: BatchTransformArgs);
59
+ private handleRecord;
60
+ private flush;
61
+ private startLingerTimer;
62
+ private cancelLingerTimer;
63
+ }
64
+ //# sourceMappingURL=batch-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-transform.d.ts","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IAClC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAe,SAAQ,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7E,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,UAAU,CACZ;IACN,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,kBAAkB,CAAC,CAAS;gBAExB,IAAI,CAAC,EAAE,kBAAkB;IA8BrC,OAAO,CAAC,YAAY;IA0CpB,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAMzB"}
@@ -0,0 +1,140 @@
1
+ import { S2Error } from "./error.js";
2
+ import { AppendRecord, meteredSizeBytes } from "./utils.js";
3
+ /**
4
+ * A TransformStream that batches AppendRecords based on time, record count, and byte size.
5
+ *
6
+ * Input: AppendRecord (individual records)
7
+ * Output: { records: AppendRecord[], fencing_token?: string, match_seq_num?: number }
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const batcher = new BatchTransform<"string">({
12
+ * lingerDuration: 20,
13
+ * maxBatchRecords: 100,
14
+ * maxBatchBytes: 256 * 1024,
15
+ * match_seq_num: 0 // Optional: auto-increments per batch
16
+ * });
17
+ *
18
+ * // Pipe through the batcher and session to get acks
19
+ * readable.pipeThrough(batcher).pipeThrough(session).pipeTo(writable);
20
+ *
21
+ * // Or use manually
22
+ * const writer = batcher.writable.getWriter();
23
+ * writer.write(AppendRecord.make("foo"));
24
+ * await writer.close();
25
+ *
26
+ * for await (const batch of batcher.readable) {
27
+ * console.log(`Got batch of ${batch.records.length} records`);
28
+ * }
29
+ * ```
30
+ */
31
+ export class BatchTransform extends TransformStream {
32
+ currentBatch = [];
33
+ currentBatchSize = 0;
34
+ lingerTimer = null;
35
+ controller = null;
36
+ maxBatchRecords;
37
+ maxBatchBytes;
38
+ lingerDuration;
39
+ fencing_token;
40
+ next_match_seq_num;
41
+ constructor(args) {
42
+ let controller;
43
+ super({
44
+ start: (c) => {
45
+ controller = c;
46
+ },
47
+ transform: (chunk, c) => {
48
+ // Store controller reference on first transform
49
+ if (!this.controller) {
50
+ this.controller = c;
51
+ }
52
+ this.handleRecord(chunk);
53
+ },
54
+ flush: () => {
55
+ this.flush();
56
+ },
57
+ });
58
+ // Cap at maximum allowed values
59
+ this.maxBatchRecords = Math.min(args?.maxBatchRecords ?? 1000, 1000);
60
+ this.maxBatchBytes = Math.min(args?.maxBatchBytes ?? 1024 * 1024, 1024 * 1024);
61
+ this.lingerDuration = args?.lingerDurationMillis ?? 5;
62
+ this.fencing_token = args?.fencing_token;
63
+ this.next_match_seq_num = args?.match_seq_num;
64
+ }
65
+ handleRecord(record) {
66
+ const recordSize = meteredSizeBytes(record);
67
+ // Reject individual records that exceed the max batch size
68
+ if (recordSize > this.maxBatchBytes) {
69
+ throw new S2Error({
70
+ message: `Record size ${recordSize} bytes exceeds maximum batch size of ${this.maxBatchBytes} bytes`,
71
+ });
72
+ }
73
+ // Start linger timer on first record added to an empty batch
74
+ if (this.currentBatch.length === 0 && this.lingerDuration > 0) {
75
+ this.startLingerTimer();
76
+ }
77
+ // Check if adding this record would exceed limits
78
+ const wouldExceedRecords = this.currentBatch.length + 1 > this.maxBatchRecords;
79
+ const wouldExceedBytes = this.currentBatchSize + recordSize > this.maxBatchBytes;
80
+ if (wouldExceedRecords || wouldExceedBytes) {
81
+ this.flush();
82
+ // Restart linger timer for new batch
83
+ if (this.lingerDuration > 0) {
84
+ this.startLingerTimer();
85
+ }
86
+ }
87
+ // Add record to current batch
88
+ this.currentBatch.push(record);
89
+ this.currentBatchSize += recordSize;
90
+ // Check if we've now reached the limits
91
+ const nowExceedsRecords = this.currentBatch.length >= this.maxBatchRecords;
92
+ const nowExceedsBytes = this.currentBatchSize >= this.maxBatchBytes;
93
+ if (nowExceedsRecords || nowExceedsBytes) {
94
+ this.flush();
95
+ }
96
+ }
97
+ flush() {
98
+ this.cancelLingerTimer();
99
+ if (this.currentBatch.length === 0) {
100
+ return;
101
+ }
102
+ // Auto-increment match_seq_num for next batch
103
+ const match_seq_num = this.next_match_seq_num;
104
+ if (this.next_match_seq_num !== undefined) {
105
+ this.next_match_seq_num += this.currentBatch.length;
106
+ }
107
+ // Emit the batch downstream with optional fencing token and match_seq_num
108
+ if (this.controller) {
109
+ const batch = {
110
+ records: [...this.currentBatch],
111
+ };
112
+ if (this.fencing_token !== undefined) {
113
+ batch.fencing_token = this.fencing_token;
114
+ }
115
+ if (match_seq_num !== undefined) {
116
+ batch.match_seq_num = match_seq_num;
117
+ }
118
+ this.controller.enqueue(batch);
119
+ }
120
+ // Reset batch
121
+ this.currentBatch = [];
122
+ this.currentBatchSize = 0;
123
+ }
124
+ startLingerTimer() {
125
+ this.cancelLingerTimer();
126
+ this.lingerTimer = setTimeout(() => {
127
+ this.lingerTimer = null;
128
+ if (this.currentBatch.length > 0) {
129
+ this.flush();
130
+ }
131
+ }, this.lingerDuration);
132
+ }
133
+ cancelLingerTimer() {
134
+ if (this.lingerTimer) {
135
+ clearTimeout(this.lingerTimer);
136
+ this.lingerTimer = null;
137
+ }
138
+ }
139
+ }
140
+ //# sourceMappingURL=batch-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-transform.js","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2.d.ts","sourceRoot":"","sources":["../../../../src/generated/proto/s2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2.js","sourceRoot":"","sources":["../../../../src/generated/proto/s2.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA6KnD,2FAA2F;AAC3F,MAAM,mBAAoB,SAAQ,WAA2B;IACzD;QACI,KAAK,CAAC,sBAAsB,EAAE;YAC1B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAChG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE;SACrG,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAAsC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS;YACnB,sBAAsB,CAAiB,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAuB;QACzG,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,OAAO,EAAE,CAAC;gBACd,KAAK,oBAAoB,CAAC,CAAC;oBACvB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAC5C,MAAM;gBACV,KAAK,sBAAsB,CAAC,CAAC;oBACzB,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM;gBACV;oBACI,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjC,IAAI,CAAC,KAAK,OAAO;wBACb,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,OAAO,eAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,mBAAmB,CAAC,OAAuB,EAAE,MAAqB,EAAE,OAA2B;QAC3F,yBAAyB;QACzB,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;YACrB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,2BAA2B;QAC3B,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACnC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AACD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC;AACxD,2FAA2F;AAC3F,MAAM,WAAY,SAAQ,WAAmB;IACzC;QACI,KAAK,CAAC,cAAc,EAAE;YAClB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,EAAE;YACnE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,EAAE;SACvE,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAA8B;QACjC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;YACnB,sBAAsB,CAAS,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAe;QACjG,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,OAAO,EAAE,CAAC;gBACd,KAAK,gBAAgB,CAAC,CAAC;oBACnB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9B,MAAM;gBACV,KAAK,iBAAiB,CAAC,CAAC;oBACpB,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC/B,MAAM;gBACV;oBACI,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjC,IAAI,CAAC,KAAK,OAAO;wBACb,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,OAAO,eAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,mBAAmB,CAAC,OAAe,EAAE,MAAqB,EAAE,OAA2B;QACnF,qBAAqB;QACrB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,sBAAsB;QACtB,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACnC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AACD;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;AACxC,2FAA2F;AAC3F,MAAM,iBAAkB,SAAQ,WAAyB;IACrD;QACI,KAAK,CAAC,oBAAoB,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAC7G,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;YAC/F,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,EAAE;SACtE,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAAoC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YACnB,sBAAsB,CAAe,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAqB;QACvG,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,OAAO,EAAE,CAAC;gBACd,KAAK,+BAA+B,CAAC,CAAC;oBAClC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM;gBACV,KAAK,mCAAmC,CAAC,CAAC;oBACtC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;oBAClF,MAAM;gBACV,KAAK,gBAAgB,CAAC,CAAC;oBACnB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9B,MAAM;gBACV;oBACI,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjC,IAAI,CAAC,KAAK,OAAO;wBACb,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,OAAO,eAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,mBAAmB,CAAC,OAAqB,EAAE,MAAqB,EAAE,OAA2B;QACzF,oCAAoC;QACpC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7D,wCAAwC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YAC3C,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACnH,qBAAqB;QACrB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACnC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AACD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACpD,2FAA2F;AAC3F,MAAM,gBAAiB,SAAQ,WAAwB;IACnD;QACI,KAAK,CAAC,mBAAmB,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;YACrG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE;YACjH,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE;SAC1F,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAAmC;QACtC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,KAAK,SAAS;YACnB,sBAAsB,CAAc,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAoB;QACtG,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,OAAO,EAAE,CAAC;gBACd,KAAK,yCAAyC,CAAC,CAAC;oBAC5C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;oBACxF,MAAM;gBACV,KAAK,mCAAmC,CAAC,CAAC;oBACtC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;oBACjD,MAAM;gBACV,KAAK,mCAAmC,CAAC,CAAC;oBACtC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBACvC,MAAM;gBACV;oBACI,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjC,IAAI,CAAC,KAAK,OAAO;wBACb,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,OAAO,eAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,mBAAmB,CAAC,OAAoB,EAAE,MAAqB,EAAE,OAA2B;QACxF,8CAA8C;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YAC3C,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACzH,wCAAwC;QACxC,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/D,wCAAwC;QACxC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACnC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AACD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAClD,2FAA2F;AAC3F,MAAM,cAAe,SAAQ,WAAsB;IAC/C;QACI,KAAK,CAAC,iBAAiB,EAAE;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE;YAClE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE;YAChE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE;SACpE,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAAiC;QACpC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,KAAK,SAAS;YACnB,sBAAsB,CAAY,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAkB;QACpG,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,OAAO,EAAE,CAAC;gBACd,KAAK,gCAAgC,CAAC,CAAC;oBACnC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnG,MAAM;gBACV,KAAK,8BAA8B,CAAC,CAAC;oBACjC,OAAO,CAAC,GAAG,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/F,MAAM;gBACV,KAAK,+BAA+B,CAAC,CAAC;oBAClC,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjG,MAAM;gBACV;oBACI,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjC,IAAI,CAAC,KAAK,OAAO;wBACb,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,OAAO,eAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,mBAAmB,CAAC,OAAkB,EAAE,MAAqB,EAAE,OAA2B;QACtF,qCAAqC;QACrC,IAAI,OAAO,CAAC,KAAK;YACb,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACtH,mCAAmC;QACnC,IAAI,OAAO,CAAC,GAAG;YACX,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACpH,oCAAoC;QACpC,IAAI,OAAO,CAAC,IAAI;YACZ,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACrH,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACnC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AACD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;AAC9C,2FAA2F;AAC3F,MAAM,oBAAqB,SAAQ,WAA4B;IAC3D;QACI,KAAK,CAAC,uBAAuB,EAAE;YAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAChG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAClG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;YAC/F,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,EAAE;SACtE,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAAuC;QAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YACnB,sBAAsB,CAAkB,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAwB;QAC1G,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,OAAO,EAAE,CAAC;gBACd,KAAK,oBAAoB,CAAC,CAAC;oBACvB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAC5C,MAAM;gBACV,KAAK,sBAAsB,CAAC,CAAC;oBACzB,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM;gBACV,KAAK,mCAAmC,CAAC,CAAC;oBACtC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;oBAClF,MAAM;gBACV,KAAK,gBAAgB,CAAC,CAAC;oBACnB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9B,MAAM;gBACV;oBACI,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjC,IAAI,CAAC,KAAK,OAAO;wBACb,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,OAAO,eAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,mBAAmB,CAAC,OAAwB,EAAE,MAAqB,EAAE,OAA2B;QAC5F,yBAAyB;QACzB,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;YACrB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,2BAA2B;QAC3B,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7D,wCAAwC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YAC3C,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACnH,qBAAqB;QACrB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACnC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AACD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC1D,2FAA2F;AAC3F,MAAM,cAAe,SAAQ,WAAsB;IAC/C;QACI,KAAK,CAAC,iBAAiB,EAAE;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE;YACxG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE;SACpE,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAAiC;QACpC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,KAAK,SAAS;YACnB,sBAAsB,CAAY,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAkB;QACpG,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACjE,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,OAAO,EAAE,CAAC;gBACd,KAAK,4CAA4C,CAAC,CAAC;oBAC/C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC3F,MAAM;gBACV,KAAK,wCAAwC,CAAC,CAAC;oBAC3C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjG,MAAM;gBACV;oBACI,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjC,IAAI,CAAC,KAAK,OAAO;wBACb,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,OAAO,eAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,mBAAmB,CAAC,OAAkB,EAAE,MAAqB,EAAE,OAA2B;QACtF,iDAAiD;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YAC3C,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5H,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI;YACZ,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACrH,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACnC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AACD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -1,10 +1,12 @@
1
1
  export type { IssueAccessTokenArgs, ListAccessTokensArgs, RevokeAccessTokenArgs, } from "./accessTokens.js";
2
2
  export type { CreateBasinArgs, DeleteBasinArgs, GetBasinConfigArgs, ListBasinsArgs, ReconfigureBasinArgs, } from "./basins.js";
3
+ export type { BatchOutput, BatchTransformArgs } from "./batch-transform.js";
4
+ export { BatchTransform } from "./batch-transform.js";
3
5
  export { FencingTokenMismatchError, RangeNotSatisfiableError, S2Error, SeqNumMismatchError, } from "./error.js";
4
6
  export type { AccessTokenInfo, AccessTokenScope, AccountMetricSet, Accumulation, BasinConfig, BasinInfo, BasinMetricSet, BasinReconfiguration, BasinScope, CreateStreamRequest, DeleteOnEmptyConfig, Gauge, IssueAccessTokenResponse, Label, ListAccessTokensResponse, ListBasinsResponse, ListStreamsResponse, Metric, MetricSetResponse, Operation, PermittedOperationGroups, ReadWritePermissions, ResourceSet, RetentionPolicy, StorageClass, StreamConfig, StreamInfo, StreamMetricSet, TimeseriesInterval, TimestampingConfig, TimestampingMode, } from "./generated/types.gen.js";
7
+ export type { AppendArgs, ReadArgs, ReadBatch, ReadRecord, ReadSession, } from "./lib/stream/types.js";
5
8
  export type { AccountMetricsArgs, BasinMetricsArgs, StreamMetricsArgs, } from "./metrics.js";
6
9
  export { S2 } from "./s2.js";
7
- export type { AppendArgs, ReadArgs, ReadBatch, ReadSession, SequencedRecord, } from "./stream.js";
8
10
  export type { CreateStreamArgs, DeleteStreamArgs, GetStreamConfigArgs, ListStreamsArgs, ReconfigureStreamArgs, } from "./streams.js";
9
- export { AppendRecord } from "./utils.js";
11
+ export { AppendRecord, meteredSizeBytes, utf8ByteLength } from "./utils.js";
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,yBAAyB,EACzB,wBAAwB,EACxB,OAAO,EACP,mBAAmB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,wBAAwB,EACxB,KAAK,EACL,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACX,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,yBAAyB,EACzB,wBAAwB,EACxB,OAAO,EACP,mBAAmB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,wBAAwB,EACxB,KAAK,EACL,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EACX,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}