@s2-dev/streamstore 0.16.11 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/cjs/basin.d.ts +9 -2
  2. package/dist/cjs/basin.d.ts.map +1 -1
  3. package/dist/cjs/basin.js +14 -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/client/utils.gen.d.ts +1 -1
  10. package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -1
  11. package/dist/cjs/generated/client/utils.gen.js +7 -6
  12. package/dist/cjs/generated/client/utils.gen.js.map +1 -1
  13. package/dist/cjs/generated/core/bodySerializer.gen.d.ts +12 -4
  14. package/dist/cjs/generated/core/bodySerializer.gen.d.ts.map +1 -1
  15. package/dist/cjs/generated/core/bodySerializer.gen.js.map +1 -1
  16. package/dist/cjs/generated/proto/s2.d.ts.map +1 -1
  17. package/dist/cjs/generated/proto/s2.js.map +1 -1
  18. package/dist/cjs/index.d.ts +4 -2
  19. package/dist/cjs/index.d.ts.map +1 -1
  20. package/dist/cjs/index.js +5 -1
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/lib/stream/factory.d.ts +15 -0
  23. package/dist/cjs/lib/stream/factory.d.ts.map +1 -0
  24. package/dist/cjs/lib/stream/factory.js +36 -0
  25. package/dist/cjs/lib/stream/factory.js.map +1 -0
  26. package/dist/cjs/lib/stream/runtime.d.ts +13 -0
  27. package/dist/cjs/lib/stream/runtime.d.ts.map +1 -0
  28. package/dist/cjs/lib/stream/runtime.js +50 -0
  29. package/dist/cjs/lib/stream/runtime.js.map +1 -0
  30. package/dist/cjs/lib/stream/transport/fetch/index.d.ts +79 -0
  31. package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -0
  32. package/dist/cjs/lib/stream/transport/fetch/index.js +382 -0
  33. package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -0
  34. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +7 -0
  35. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -0
  36. package/dist/cjs/lib/stream/transport/fetch/shared.js +170 -0
  37. package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -0
  38. package/dist/cjs/lib/stream/transport/s2s/framing.d.ts +47 -0
  39. package/dist/cjs/lib/stream/transport/s2s/framing.d.ts.map +1 -0
  40. package/dist/cjs/lib/stream/transport/s2s/framing.js +123 -0
  41. package/dist/cjs/lib/stream/transport/s2s/framing.js.map +1 -0
  42. package/dist/cjs/lib/stream/transport/s2s/index.d.ts +23 -0
  43. package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -0
  44. package/dist/cjs/lib/stream/transport/s2s/index.js +785 -0
  45. package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -0
  46. package/dist/cjs/lib/stream/types.d.ts +53 -0
  47. package/dist/cjs/lib/stream/types.d.ts.map +1 -0
  48. package/dist/cjs/lib/stream/types.js +3 -0
  49. package/dist/cjs/lib/stream/types.js.map +1 -0
  50. package/dist/cjs/s2.d.ts +1 -0
  51. package/dist/cjs/s2.d.ts.map +1 -1
  52. package/dist/cjs/s2.js +3 -0
  53. package/dist/cjs/s2.js.map +1 -1
  54. package/dist/cjs/stream.d.ts +22 -116
  55. package/dist/cjs/stream.d.ts.map +1 -1
  56. package/dist/cjs/stream.js +34 -549
  57. package/dist/cjs/stream.js.map +1 -1
  58. package/dist/cjs/utils.d.ts +32 -6
  59. package/dist/cjs/utils.d.ts.map +1 -1
  60. package/dist/cjs/utils.js +129 -34
  61. package/dist/cjs/utils.js.map +1 -1
  62. package/dist/esm/basin.d.ts +9 -2
  63. package/dist/esm/basin.d.ts.map +1 -1
  64. package/dist/esm/basin.js +14 -5
  65. package/dist/esm/basin.js.map +1 -1
  66. package/dist/esm/batch-transform.d.ts +64 -0
  67. package/dist/esm/batch-transform.d.ts.map +1 -0
  68. package/dist/esm/batch-transform.js +140 -0
  69. package/dist/esm/batch-transform.js.map +1 -0
  70. package/dist/esm/generated/client/utils.gen.d.ts +1 -1
  71. package/dist/esm/generated/client/utils.gen.d.ts.map +1 -1
  72. package/dist/esm/generated/client/utils.gen.js +7 -6
  73. package/dist/esm/generated/client/utils.gen.js.map +1 -1
  74. package/dist/esm/generated/core/bodySerializer.gen.d.ts +12 -4
  75. package/dist/esm/generated/core/bodySerializer.gen.d.ts.map +1 -1
  76. package/dist/esm/generated/core/bodySerializer.gen.js.map +1 -1
  77. package/dist/esm/generated/proto/s2.d.ts.map +1 -1
  78. package/dist/esm/generated/proto/s2.js.map +1 -1
  79. package/dist/esm/index.d.ts +4 -2
  80. package/dist/esm/index.d.ts.map +1 -1
  81. package/dist/esm/index.js +2 -1
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/lib/stream/factory.d.ts +15 -0
  84. package/dist/esm/lib/stream/factory.d.ts.map +1 -0
  85. package/dist/esm/lib/stream/factory.js +33 -0
  86. package/dist/esm/lib/stream/factory.js.map +1 -0
  87. package/dist/esm/lib/stream/runtime.d.ts +13 -0
  88. package/dist/esm/lib/stream/runtime.d.ts.map +1 -0
  89. package/dist/esm/lib/stream/runtime.js +46 -0
  90. package/dist/esm/lib/stream/runtime.js.map +1 -0
  91. package/dist/esm/lib/stream/transport/fetch/index.d.ts +79 -0
  92. package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -0
  93. package/dist/esm/lib/stream/transport/fetch/index.js +376 -0
  94. package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -0
  95. package/dist/esm/lib/stream/transport/fetch/shared.d.ts +7 -0
  96. package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -0
  97. package/dist/esm/lib/stream/transport/fetch/shared.js +166 -0
  98. package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -0
  99. package/dist/esm/lib/stream/transport/s2s/framing.d.ts +47 -0
  100. package/dist/esm/lib/stream/transport/s2s/framing.d.ts.map +1 -0
  101. package/dist/esm/lib/stream/transport/s2s/framing.js +118 -0
  102. package/dist/esm/lib/stream/transport/s2s/framing.js.map +1 -0
  103. package/dist/esm/lib/stream/transport/s2s/index.d.ts +23 -0
  104. package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -0
  105. package/dist/esm/lib/stream/transport/s2s/index.js +781 -0
  106. package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -0
  107. package/dist/esm/lib/stream/types.d.ts +53 -0
  108. package/dist/esm/lib/stream/types.d.ts.map +1 -0
  109. package/dist/esm/lib/stream/types.js +2 -0
  110. package/dist/esm/lib/stream/types.js.map +1 -0
  111. package/dist/esm/s2.d.ts +1 -0
  112. package/dist/esm/s2.d.ts.map +1 -1
  113. package/dist/esm/s2.js +3 -0
  114. package/dist/esm/s2.js.map +1 -1
  115. package/dist/esm/stream.d.ts +22 -116
  116. package/dist/esm/stream.d.ts.map +1 -1
  117. package/dist/esm/stream.js +36 -551
  118. package/dist/esm/stream.js.map +1 -1
  119. package/dist/esm/utils.d.ts +32 -6
  120. package/dist/esm/utils.d.ts.map +1 -1
  121. package/dist/esm/utils.js +126 -34
  122. package/dist/esm/utils.js.map +1 -1
  123. package/package.json +2 -4
@@ -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/esm/utils.js CHANGED
@@ -1,3 +1,20 @@
1
+ function appendRecordMake(body, headers, timestamp) {
2
+ return {
3
+ body,
4
+ headers,
5
+ timestamp,
6
+ };
7
+ }
8
+ function appendRecordCommand(command, body, timestamp) {
9
+ const headers = (() => {
10
+ if (typeof command === "string") {
11
+ return [["", command]];
12
+ }
13
+ return [[new TextEncoder().encode(""), command]];
14
+ })();
15
+ // safety: we know the types are correct because of the overloads
16
+ return AppendRecord.make(body, headers, timestamp);
17
+ }
1
18
  /**
2
19
  * Helpers to construct appendable records.
3
20
  *
@@ -8,45 +25,120 @@
8
25
  * - `trim` is a command record that encodes a sequence number for trimming
9
26
  */
10
27
  export const AppendRecord = {
11
- make: (body, headers, timestamp) => {
12
- return {
13
- body,
14
- headers,
15
- timestamp,
16
- };
28
+ // overloads for only string or only bytes
29
+ make: appendRecordMake,
30
+ command: appendRecordCommand,
31
+ fence: (fencing_token, timestamp) => {
32
+ return AppendRecord.command("fence", fencing_token, timestamp);
17
33
  },
18
- command: (
19
- /** Command name (e.g. "fence" or "trim"). */
20
- command, body, additionalHeaders, timestamp) => {
21
- const headers = (() => {
22
- if (!additionalHeaders) {
23
- return [["", command]];
24
- }
25
- else if (Array.isArray(additionalHeaders)) {
26
- return [["", command], ...additionalHeaders];
27
- }
28
- else {
29
- return [
30
- ["", command],
31
- ...Object.entries(additionalHeaders).map(([key, value]) => [key, value]),
32
- ];
33
- }
34
- })();
35
- return {
36
- body,
37
- headers,
38
- timestamp,
39
- };
40
- },
41
- fence: (fencing_token, additionalHeaders, timestamp) => {
42
- return AppendRecord.command("fence", fencing_token, additionalHeaders, timestamp);
43
- },
44
- trim: (seqNum, additionalHeaders, timestamp) => {
34
+ trim: (seqNum, timestamp) => {
45
35
  // Encode sequence number as 8 big-endian bytes
46
36
  const buffer = new Uint8Array(8);
47
37
  const view = new DataView(buffer.buffer);
48
38
  view.setBigUint64(0, BigInt(seqNum), false); // false = big-endian
49
- return AppendRecord.command("trim", buffer, additionalHeaders, timestamp);
39
+ return AppendRecord.command(new TextEncoder().encode("trim"), buffer, timestamp);
50
40
  },
51
41
  };
42
+ /**
43
+ * Calculate the UTF-8 byte length of a string.
44
+ * Handles all Unicode characters including surrogate pairs correctly.
45
+ *
46
+ * @param str The string to measure
47
+ * @returns The byte length when encoded as UTF-8
48
+ */
49
+ export function utf8ByteLength(str) {
50
+ let bytes = 0;
51
+ for (let i = 0; i < str.length; i++) {
52
+ const code = str.charCodeAt(i);
53
+ if (code <= 0x7f) {
54
+ bytes += 1;
55
+ }
56
+ else if (code <= 0x7ff) {
57
+ bytes += 2;
58
+ }
59
+ else if (code >= 0xd800 && code <= 0xdbff) {
60
+ // high surrogate
61
+ if (i + 1 < str.length) {
62
+ const next = str.charCodeAt(i + 1);
63
+ if (next >= 0xdc00 && next <= 0xdfff) {
64
+ // valid surrogate pair → 4 bytes in UTF-8
65
+ bytes += 4;
66
+ i++; // skip low surrogate
67
+ }
68
+ else {
69
+ // unpaired high surrogate → treat as 3 bytes (replacement-style)
70
+ bytes += 3;
71
+ }
72
+ }
73
+ else {
74
+ // unpaired high surrogate at end of string
75
+ bytes += 3;
76
+ }
77
+ }
78
+ else if (code >= 0xdc00 && code <= 0xdfff) {
79
+ // lone low surrogate — treat as 3 bytes
80
+ bytes += 3;
81
+ }
82
+ else {
83
+ bytes += 3;
84
+ }
85
+ }
86
+ return bytes;
87
+ }
88
+ /**
89
+ * Calculate the metered size in bytes of an AppendRecord.
90
+ * This includes the body and headers, but not metadata like timestamp.
91
+ *
92
+ * This function calculates how many bytes the record will occupy
93
+ * after being received and deserialized as raw bytes on the S2 side.
94
+ * For strings, it calculates UTF-8 byte length. For Uint8Array, it uses
95
+ * the array length directly (same value as would be used when encoding
96
+ * to base64 for transmission).
97
+ *
98
+ * @param record The record to measure
99
+ * @returns The size in bytes
100
+ */
101
+ export function meteredSizeBytes(record) {
102
+ // Calculate header size based on actual data types
103
+ let numHeaders = 0;
104
+ let headersSize = 0;
105
+ if (record.headers) {
106
+ if (Array.isArray(record.headers)) {
107
+ numHeaders = record.headers.length;
108
+ headersSize = record.headers.reduce((sum, [k, v]) => {
109
+ // Infer format from key type: string = UTF-8 bytes, Uint8Array = byte length
110
+ const keySize = typeof k === "string" ? utf8ByteLength(k) : k.length;
111
+ const valueSize = typeof v === "string" ? utf8ByteLength(v) : v.length;
112
+ return sum + keySize + valueSize;
113
+ }, 0);
114
+ }
115
+ else {
116
+ // Record<string, string> format (only for string format)
117
+ const entries = Object.entries(record.headers);
118
+ numHeaders = entries.length;
119
+ headersSize = entries.reduce((sum, [k, v]) => {
120
+ return sum + utf8ByteLength(k) + utf8ByteLength(v);
121
+ }, 0);
122
+ }
123
+ }
124
+ // Calculate body size based on actual data type
125
+ const bodySize = record.body
126
+ ? typeof record.body === "string"
127
+ ? utf8ByteLength(record.body)
128
+ : record.body.length
129
+ : 0;
130
+ return 8 + 2 * numHeaders + headersSize + bodySize;
131
+ }
132
+ export function computeAppendRecordFormat(record) {
133
+ let result = "string";
134
+ if (record.body && typeof record.body !== "string") {
135
+ result = "bytes";
136
+ }
137
+ if (record.headers &&
138
+ Array.isArray(record.headers) &&
139
+ record.headers.some(([k, v]) => typeof k !== "string" || typeof v !== "string")) {
140
+ result = "bytes";
141
+ }
142
+ return result;
143
+ }
52
144
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,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,YAAY,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,YAAY,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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@s2-dev/streamstore",
3
- "version": "0.16.11",
3
+ "version": "0.17.0",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -19,10 +19,8 @@
19
19
  "format": "biome format --write",
20
20
  "version-with-docs": "changeset version && bun run docs && git add docs",
21
21
  "release": "changeset publish",
22
- "pull:proto": "curl -o proto/s2.proto https://raw.githubusercontent.com/s2-streamstore/s2-protos/refs/heads/main/s2/v1/s2.proto",
23
- "pull:openapi": "curl -o openapi/s2.json https://raw.githubusercontent.com/s2-streamstore/s2-protos/refs/heads/main/s2/v1/openapi.json",
24
22
  "gen:openapi": "openapi-ts",
25
- "gen:proto": "npx protoc --ts_out src/generated/proto --ts_opt generate_dependencies --proto_path ./proto ./proto/s2.proto",
23
+ "gen:proto": "protoc --ts_out src/generated/proto --ts_opt ts_nocheck --proto_path s2-protos s2-protos/s2/v1/s2.proto && mv src/generated/proto/s2/v1/s2.ts src/generated/proto/s2.ts",
26
24
  "docs": "typedoc"
27
25
  },
28
26
  "main": "./dist/cjs/index.js",