@s2-dev/streamstore 0.2.11 → 0.2.17

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.
package/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./lib/config.js";
2
2
  export * as files from "./lib/files.js";
3
3
  export * from "./sdk/sdk.js";
4
+ export * from "./index.extras.js";
4
5
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,cAAc,cAAc,CAAC;AAE7B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { BasinConfig, BasinInfo, CheckTailResponse, CreateBasinRequest, CreateStreamRequest, StreamConfig, StreamInfo } from "./models/components";
2
+ import { ListBasinsRequest, ListBasinsResponse, ListStreamsRequest, ListStreamsResponse } from "./models/operations";
3
+ import { PageIterator } from "./types";
4
+ export declare function genS2RequestToken(): string;
5
+ export declare class S2Client {
6
+ private authToken;
7
+ private _account?;
8
+ get account(): S2Account;
9
+ private _basin?;
10
+ basin(basinName: string): S2Basin;
11
+ constructor(authToken: string);
12
+ }
13
+ declare class S2Account {
14
+ private _account;
15
+ private requestOptions;
16
+ constructor(authToken: string);
17
+ /**
18
+ * List basins.
19
+ */
20
+ listBasins(request?: ListBasinsRequest): Promise<PageIterator<ListBasinsResponse, {
21
+ cursor: string;
22
+ }>>;
23
+ getBasinConfig(basin: string): Promise<BasinConfig | undefined>;
24
+ createBasin(basin: string, request?: CreateBasinRequest): Promise<BasinInfo | undefined>;
25
+ deleteBasin(basin: string, if_exists?: boolean): Promise<void | undefined>;
26
+ reconfigureBasin(basin: string, config: BasinConfig): Promise<BasinConfig | undefined>;
27
+ }
28
+ declare class S2Basin {
29
+ private _basin;
30
+ private _stream;
31
+ private readonly basinURLSuffx;
32
+ private requestOptions;
33
+ private basinName;
34
+ constructor(authToken: string, basinName: string);
35
+ stream(streamName: string): Stream;
36
+ listStreams(request: ListStreamsRequest): Promise<PageIterator<ListStreamsResponse, {
37
+ cursor: string;
38
+ }>>;
39
+ getStreamConfig(stream: string): Promise<StreamConfig | undefined>;
40
+ createStream(stream: string, request: CreateStreamRequest): Promise<StreamInfo | undefined>;
41
+ deleteStream(stream: string, if_exists?: boolean): Promise<void | undefined>;
42
+ reconfigureStream(stream: string, config: StreamConfig): Promise<StreamConfig | undefined>;
43
+ }
44
+ declare class Stream {
45
+ private _stream;
46
+ private streamName;
47
+ private basinName;
48
+ private readonly basinURLSuffx;
49
+ constructor(streamName: string, basinName: string);
50
+ checkTail(): Promise<CheckTailResponse | undefined>;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=index.extras.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.extras.d.ts","sourceRoot":"","sources":["src/index.extras.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnJ,OAAO,EAEH,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EAItB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AASvC,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,qBAAa,QAAQ;IACjB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAY;IAC7B,IAAI,OAAO,IAAI,SAAS,CAEvB;IAED,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;gBAIrB,SAAS,EAAE,MAAM;CAGhC;AAED,cAAM,SAAS;IACX,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,cAAc,CAAiB;gBAE3B,SAAS,EAAE,MAAM;IAkB7B;;MAEE;IACI,UAAU,CACZ,OAAO,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAI1D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAO/D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IASxF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAO1E,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAO/F;AAED,cAAM,OAAO;IACT,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAmBhD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAI5B,WAAW,CACb,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAK3D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAOlE,YAAY,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAa5B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAQ5E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CASnG;AAED,cAAM,MAAM;IACR,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;gBAE5C,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAM3C,SAAS,IAAI,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAK5D"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.S2Client = void 0;
4
+ exports.genS2RequestToken = genS2RequestToken;
5
+ const accountDeleteBasin_1 = require("./funcs/accountDeleteBasin");
6
+ const errors_1 = require("./models/errors");
7
+ const stream_1 = require("./sdk/stream");
8
+ const basin_1 = require("./sdk/basin");
9
+ const account_1 = require("./sdk/account");
10
+ const uuid_1 = require("uuid");
11
+ const basinDeleteStream_1 = require("./funcs/basinDeleteStream");
12
+ function genS2RequestToken() {
13
+ return (0, uuid_1.v4)().replace(/-/g, '');
14
+ }
15
+ class S2Client {
16
+ get account() {
17
+ return (this._account ?? (this._account = new S2Account(this.authToken)));
18
+ }
19
+ basin(basinName) {
20
+ return (this._basin ?? (this._basin = new S2Basin(this.authToken, basinName)));
21
+ }
22
+ constructor(authToken) {
23
+ this.authToken = authToken;
24
+ }
25
+ }
26
+ exports.S2Client = S2Client;
27
+ class S2Account {
28
+ constructor(authToken) {
29
+ this._account = new account_1.Account({ bearerAuth: authToken });
30
+ this.requestOptions = {
31
+ timeoutMs: 3000,
32
+ retries: {
33
+ strategy: 'backoff',
34
+ backoff: {
35
+ initialInterval: 100,
36
+ maxInterval: 3000,
37
+ exponent: 2,
38
+ maxElapsedTime: 6000,
39
+ },
40
+ retryConnectionErrors: true,
41
+ },
42
+ retryCodes: ['500', '503', '504'],
43
+ };
44
+ }
45
+ /**
46
+ * List basins.
47
+ */
48
+ async listBasins(request) {
49
+ return this._account.listBasins(request ?? {}, this.requestOptions);
50
+ }
51
+ async getBasinConfig(basin) {
52
+ const _request = {
53
+ basin,
54
+ };
55
+ return (await this._account.getBasinConfig(_request, this.requestOptions)).basinConfig;
56
+ }
57
+ async createBasin(basin, request) {
58
+ const _request = {
59
+ basin,
60
+ s2RequestToken: genS2RequestToken(),
61
+ createBasinRequest: request ?? {},
62
+ };
63
+ return (await this._account.createBasin(_request, this.requestOptions)).basinInfo;
64
+ }
65
+ async deleteBasin(basin, if_exists) {
66
+ const response = await (0, accountDeleteBasin_1.accountDeleteBasin)(this._account, { basin }, this.requestOptions);
67
+ if (if_exists && response.error instanceof errors_1.NotFoundError)
68
+ return;
69
+ if (response.error)
70
+ throw new Error(response.error.message);
71
+ return;
72
+ }
73
+ async reconfigureBasin(basin, config) {
74
+ const _request = {
75
+ basin,
76
+ basinConfig: config,
77
+ };
78
+ return (await this._account.reconfigureBasin(_request, this.requestOptions)).basinConfig;
79
+ }
80
+ }
81
+ class S2Basin {
82
+ constructor(authToken, basinName) {
83
+ this.basinURLSuffx = 'b.aws.s2.dev/v1alpha';
84
+ this._basin = new basin_1.Basin({ bearerAuth: authToken });
85
+ this.basinName = basinName;
86
+ this.requestOptions = {
87
+ timeoutMs: 3000,
88
+ retries: {
89
+ strategy: 'backoff',
90
+ backoff: {
91
+ initialInterval: 100,
92
+ maxInterval: 3000,
93
+ exponent: 2,
94
+ maxElapsedTime: 6000,
95
+ },
96
+ retryConnectionErrors: true,
97
+ },
98
+ retryCodes: ['500', '503', '504'],
99
+ };
100
+ }
101
+ stream(streamName) {
102
+ return (this._stream ?? (this._stream = new Stream(streamName, this.basinName)));
103
+ }
104
+ async listStreams(request) {
105
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
106
+ return this._basin.listStreams(request, { serverURL: basinURL, ...this.requestOptions });
107
+ }
108
+ async getStreamConfig(stream) {
109
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
110
+ return (await this._basin.getStreamConfig({ stream }, { serverURL: basinURL, ...this.requestOptions })).streamConfig;
111
+ }
112
+ async createStream(stream, request) {
113
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
114
+ const _request = {
115
+ stream,
116
+ s2RequestToken: genS2RequestToken(),
117
+ createStreamRequest: request,
118
+ };
119
+ return (await this._basin.createStream(_request, { serverURL: basinURL, ...this.requestOptions })).streamInfo;
120
+ }
121
+ async deleteStream(stream, if_exists) {
122
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
123
+ const response = await (0, basinDeleteStream_1.basinDeleteStream)(this._basin, { stream }, { serverURL: basinURL, ...this.requestOptions });
124
+ if (if_exists && response instanceof errors_1.NotFoundError)
125
+ return;
126
+ if (response.error)
127
+ throw new Error(response.error.message);
128
+ return;
129
+ }
130
+ async reconfigureStream(stream, config) {
131
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
132
+ return (await this._basin.reconfigureStream({ stream, streamConfig: config }, { serverURL: basinURL, ...this.requestOptions })).streamConfig;
133
+ }
134
+ }
135
+ class Stream {
136
+ constructor(streamName, basinName) {
137
+ this.basinURLSuffx = 'b.aws.s2.dev/v1alpha';
138
+ this.streamName = streamName;
139
+ this.basinName = basinName;
140
+ this._stream = new stream_1.Stream();
141
+ }
142
+ async checkTail() {
143
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
144
+ return (await this._stream.checkTail({ stream: this.streamName }, { serverURL: basinURL }))
145
+ .checkTailResponse;
146
+ }
147
+ }
148
+ //# sourceMappingURL=index.extras.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.extras.js","sourceRoot":"","sources":["src/index.extras.ts"],"names":[],"mappings":"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"}
package/index.js CHANGED
@@ -43,4 +43,5 @@ exports.files = void 0;
43
43
  __exportStar(require("./lib/config.js"), exports);
44
44
  exports.files = __importStar(require("./lib/files.js"));
45
45
  __exportStar(require("./sdk/sdk.js"), exports);
46
+ __exportStar(require("./index.extras.js"), exports);
46
47
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,wDAAwC;AACxC,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,wDAAwC;AACxC,+CAA6B;AAE7B,oDAAkC"}
package/jsr.json CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  {
4
4
  "name": "@s2-dev/streamstore",
5
- "version": "0.2.11",
5
+ "version": "0.2.17",
6
6
  "exports": {
7
7
  ".": "./src/index.ts",
8
8
  "./models/errors": "./src/models/errors/index.ts",
package/lib/config.d.ts CHANGED
@@ -27,8 +27,8 @@ export declare function serverURLFromOptions(options: SDKOptions): URL | null;
27
27
  export declare const SDK_METADATA: {
28
28
  readonly language: "typescript";
29
29
  readonly openapiDocVersion: "1.0.0";
30
- readonly sdkVersion: "0.2.11";
30
+ readonly sdkVersion: "0.2.17";
31
31
  readonly genVersion: "2.503.2";
32
- readonly userAgent: "speakeasy-sdk/typescript 0.2.11 2.503.2 1.0.0 @s2-dev/streamstore";
32
+ readonly userAgent: "speakeasy-sdk/typescript 0.2.17 2.503.2 1.0.0 @s2-dev/streamstore";
33
33
  };
34
34
  //# sourceMappingURL=config.d.ts.map
package/lib/config.js CHANGED
@@ -28,8 +28,8 @@ function serverURLFromOptions(options) {
28
28
  exports.SDK_METADATA = {
29
29
  language: "typescript",
30
30
  openapiDocVersion: "1.0.0",
31
- sdkVersion: "0.2.11",
31
+ sdkVersion: "0.2.17",
32
32
  genVersion: "2.503.2",
33
- userAgent: "speakeasy-sdk/typescript 0.2.11 2.503.2 1.0.0 @s2-dev/streamstore",
33
+ userAgent: "speakeasy-sdk/typescript 0.2.17 2.503.2 1.0.0 @s2-dev/streamstore",
34
34
  };
35
35
  //# sourceMappingURL=config.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@s2-dev/streamstore",
3
- "version": "0.2.11",
3
+ "version": "0.2.17",
4
4
  "author": "Speakeasy",
5
5
  "main": "./index.js",
6
6
  "sideEffects": false,
@@ -19,6 +19,7 @@
19
19
  "devDependencies": {
20
20
  "@eslint/js": "^9.19.0",
21
21
  "@types/jsonpath": "^0.2.4",
22
+ "@types/uuid": "^9.0.8",
22
23
  "eslint": "^9.19.0",
23
24
  "globals": "^15.14.0",
24
25
  "typescript": "^5.4.5",
@@ -26,6 +27,7 @@
26
27
  "zod": "^3.23.4"
27
28
  },
28
29
  "dependencies": {
29
- "jsonpath": "^1.1.1"
30
+ "jsonpath": "^1.1.1",
31
+ "uuid": "^9.0.1"
30
32
  }
31
33
  }
@@ -0,0 +1,204 @@
1
+ import { accountDeleteBasin } from "./funcs/accountDeleteBasin";
2
+ import { RequestOptions } from "./lib/sdks";
3
+ import { BasinConfig, BasinInfo, CheckTailResponse, CreateBasinRequest, CreateStreamRequest, StreamConfig, StreamInfo } from "./models/components";
4
+ import { NotFoundError } from "./models/errors";
5
+ import {
6
+ GetBasinConfigRequest,
7
+ ListBasinsRequest,
8
+ ListBasinsResponse,
9
+ ListStreamsRequest,
10
+ ListStreamsResponse,
11
+ ReconfigureBasinRequest,
12
+ CreateBasinRequest as CreateBasinRequestInner,
13
+ CreateStreamRequest as CreateStreamRequestInner
14
+ } from "./models/operations";
15
+ import { PageIterator } from "./types";
16
+
17
+ import { Stream as InnerStream } from "./sdk/stream";
18
+ import { Basin as InnerBasin } from "./sdk/basin";
19
+ import { Account as InnerAccount } from "./sdk/account";
20
+
21
+ import { v4 } from 'uuid';
22
+ import { basinDeleteStream } from "./funcs/basinDeleteStream";
23
+
24
+ export function genS2RequestToken(): string {
25
+ return v4().replace(/-/g, '');
26
+ }
27
+
28
+ export class S2Client {
29
+ private authToken: string;
30
+ private _account?: S2Account;
31
+ get account(): S2Account {
32
+ return (this._account ??= new S2Account(this.authToken));
33
+ }
34
+
35
+ private _basin?: S2Basin;
36
+ basin(basinName: string): S2Basin {
37
+ return (this._basin ??= new S2Basin(this.authToken, basinName));
38
+ }
39
+
40
+ constructor(authToken: string) {
41
+ this.authToken = authToken;
42
+ }
43
+ }
44
+
45
+ class S2Account {
46
+ private _account: InnerAccount;
47
+ private requestOptions: RequestOptions;
48
+
49
+ constructor(authToken: string) {
50
+ this._account = new InnerAccount({ bearerAuth: authToken });
51
+ this.requestOptions = {
52
+ timeoutMs: 3000,
53
+ retries: {
54
+ strategy: 'backoff',
55
+ backoff: {
56
+ initialInterval: 100,
57
+ maxInterval: 3000,
58
+ exponent: 2,
59
+ maxElapsedTime: 6000,
60
+ },
61
+ retryConnectionErrors: true,
62
+ },
63
+ retryCodes: ['500', '503', '504'],
64
+ };
65
+ }
66
+
67
+ /**
68
+ * List basins.
69
+ */
70
+ async listBasins(
71
+ request?: ListBasinsRequest,
72
+ ): Promise<PageIterator<ListBasinsResponse, { cursor: string }>> {
73
+ return this._account.listBasins(request ?? {}, this.requestOptions);
74
+ }
75
+
76
+ async getBasinConfig(basin: string): Promise<BasinConfig | undefined> {
77
+ const _request: GetBasinConfigRequest = {
78
+ basin,
79
+ };
80
+ return (await this._account.getBasinConfig(_request, this.requestOptions)).basinConfig;
81
+ }
82
+
83
+ async createBasin(basin: string, request?: CreateBasinRequest): Promise<BasinInfo | undefined> {
84
+ const _request: CreateBasinRequestInner = {
85
+ basin,
86
+ s2RequestToken: genS2RequestToken(),
87
+ createBasinRequest: request ?? {},
88
+ };
89
+ return (await this._account.createBasin(_request, this.requestOptions)).basinInfo;
90
+ }
91
+
92
+ async deleteBasin(basin: string, if_exists?: boolean): Promise<void | undefined> {
93
+ const response = await accountDeleteBasin(this._account, { basin }, this.requestOptions);
94
+ if (if_exists && response.error instanceof NotFoundError) return;
95
+ if (response.error) throw new Error(response.error.message);
96
+ return;
97
+ }
98
+
99
+ async reconfigureBasin(basin: string, config: BasinConfig): Promise<BasinConfig | undefined> {
100
+ const _request: ReconfigureBasinRequest = {
101
+ basin,
102
+ basinConfig: config,
103
+ };
104
+ return (await this._account.reconfigureBasin(_request, this.requestOptions)).basinConfig;
105
+ }
106
+ }
107
+
108
+ class S2Basin {
109
+ private _basin: InnerBasin;
110
+ private _stream!: Stream;
111
+ private readonly basinURLSuffx = 'b.aws.s2.dev/v1alpha';
112
+ private requestOptions: RequestOptions;
113
+ private basinName: string;
114
+
115
+ constructor(authToken: string, basinName: string) {
116
+ this._basin = new InnerBasin({ bearerAuth: authToken });
117
+ this.basinName = basinName;
118
+ this.requestOptions = {
119
+ timeoutMs: 3000,
120
+ retries: {
121
+ strategy: 'backoff',
122
+ backoff: {
123
+ initialInterval: 100,
124
+ maxInterval: 3000,
125
+ exponent: 2,
126
+ maxElapsedTime: 6000,
127
+ },
128
+ retryConnectionErrors: true,
129
+ },
130
+ retryCodes: ['500', '503', '504'],
131
+ };
132
+ }
133
+
134
+ stream(streamName: string): Stream {
135
+ return (this._stream ??= new Stream(streamName, this.basinName));
136
+ }
137
+
138
+ async listStreams(
139
+ request: ListStreamsRequest,
140
+ ): Promise<PageIterator<ListStreamsResponse, { cursor: string }>> {
141
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
142
+ return this._basin.listStreams(request, { serverURL: basinURL, ...this.requestOptions });
143
+ }
144
+
145
+ async getStreamConfig(stream: string): Promise<StreamConfig | undefined> {
146
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
147
+ return (
148
+ await this._basin.getStreamConfig({ stream }, { serverURL: basinURL, ...this.requestOptions })
149
+ ).streamConfig;
150
+ }
151
+
152
+ async createStream(
153
+ stream: string,
154
+ request: CreateStreamRequest,
155
+ ): Promise<StreamInfo | undefined> {
156
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
157
+ const _request: CreateStreamRequestInner = {
158
+ stream,
159
+ s2RequestToken: genS2RequestToken(),
160
+ createStreamRequest: request,
161
+ };
162
+
163
+ return (
164
+ await this._basin.createStream(_request, { serverURL: basinURL, ...this.requestOptions })
165
+ ).streamInfo;
166
+ }
167
+
168
+ async deleteStream(stream: string, if_exists?: boolean): Promise<void | undefined> {
169
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
170
+ const response = await basinDeleteStream(this._basin, { stream }, { serverURL: basinURL, ...this.requestOptions });
171
+ if (if_exists && response instanceof NotFoundError) return;
172
+ if (response.error) throw new Error(response.error.message);
173
+ return;
174
+ }
175
+
176
+ async reconfigureStream(stream: string, config: StreamConfig): Promise<StreamConfig | undefined> {
177
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
178
+ return (
179
+ await this._basin.reconfigureStream(
180
+ { stream, streamConfig: config },
181
+ { serverURL: basinURL, ...this.requestOptions },
182
+ )
183
+ ).streamConfig;
184
+ }
185
+ }
186
+
187
+ class Stream {
188
+ private _stream: InnerStream;
189
+ private streamName: string;
190
+ private basinName: string;
191
+ private readonly basinURLSuffx = 'b.aws.s2.dev/v1alpha';
192
+
193
+ constructor(streamName: string, basinName: string) {
194
+ this.streamName = streamName;
195
+ this.basinName = basinName;
196
+ this._stream = new InnerStream();
197
+ }
198
+
199
+ async checkTail(): Promise<CheckTailResponse | undefined> {
200
+ const basinURL = `${this.basinName}.${this.basinURLSuffx}`;
201
+ return (await this._stream.checkTail({ stream: this.streamName }, { serverURL: basinURL }))
202
+ .checkTailResponse;
203
+ }
204
+ }
package/src/index.ts CHANGED
@@ -5,3 +5,5 @@
5
5
  export * from "./lib/config.js";
6
6
  export * as files from "./lib/files.js";
7
7
  export * from "./sdk/sdk.js";
8
+
9
+ export * from "./index.extras.js";
package/src/lib/config.ts CHANGED
@@ -54,8 +54,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
54
54
  export const SDK_METADATA = {
55
55
  language: "typescript",
56
56
  openapiDocVersion: "1.0.0",
57
- sdkVersion: "0.2.11",
57
+ sdkVersion: "0.2.17",
58
58
  genVersion: "2.503.2",
59
59
  userAgent:
60
- "speakeasy-sdk/typescript 0.2.11 2.503.2 1.0.0 @s2-dev/streamstore",
60
+ "speakeasy-sdk/typescript 0.2.17 2.503.2 1.0.0 @s2-dev/streamstore",
61
61
  } as const;