@temporary-name/standard-server 1.9.3-alpha.e098b3d1c5bffbad2fadfda89ba01f6452db46b5 → 1.9.3-alpha.f9f5ce625d5edee78250b87b3a64f1d9760c2244

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/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { AsyncIteratorClass, StandardHeaders, StandardLazyResponse } from '@temporary-name/shared';
1
+ import { AsyncIteratorClass, StandardLazyResponse, StandardHeaders } from '@temporary-name/shared';
2
2
 
3
3
  interface EventMessage {
4
4
  event: string | undefined;
@@ -69,10 +69,9 @@ declare class HibernationEventIterator<T, TReturn = unknown, TNext = unknown> ex
69
69
 
70
70
  declare function generateContentDisposition(filename: string): string;
71
71
  declare function getFilenameFromContentDisposition(contentDisposition: string): string | undefined;
72
- declare function mergeStandardHeaders(a: StandardHeaders, b: StandardHeaders): StandardHeaders;
73
72
  declare function flattenHeader(header: string | readonly string[] | undefined): string | undefined;
74
73
  declare function replicateStandardLazyResponse(response: StandardLazyResponse, count: number): StandardLazyResponse[];
75
74
  declare function isEventIteratorHeaders(headers: StandardHeaders): boolean;
76
75
 
77
- export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, flattenHeader, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, isEventIteratorHeaders, mapEventIterator, mergeStandardHeaders, replicateStandardLazyResponse, withEventMeta };
76
+ export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, flattenHeader, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, isEventIteratorHeaders, mapEventIterator, replicateStandardLazyResponse, withEventMeta };
78
77
  export type { ErrorEventOptions, EventDecoderOptions, EventMessage, EventMeta, HibernationEventIteratorCallback };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AsyncIteratorClass, StandardHeaders, StandardLazyResponse } from '@temporary-name/shared';
1
+ import { AsyncIteratorClass, StandardLazyResponse, StandardHeaders } from '@temporary-name/shared';
2
2
 
3
3
  interface EventMessage {
4
4
  event: string | undefined;
@@ -69,10 +69,9 @@ declare class HibernationEventIterator<T, TReturn = unknown, TNext = unknown> ex
69
69
 
70
70
  declare function generateContentDisposition(filename: string): string;
71
71
  declare function getFilenameFromContentDisposition(contentDisposition: string): string | undefined;
72
- declare function mergeStandardHeaders(a: StandardHeaders, b: StandardHeaders): StandardHeaders;
73
72
  declare function flattenHeader(header: string | readonly string[] | undefined): string | undefined;
74
73
  declare function replicateStandardLazyResponse(response: StandardLazyResponse, count: number): StandardLazyResponse[];
75
74
  declare function isEventIteratorHeaders(headers: StandardHeaders): boolean;
76
75
 
77
- export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, flattenHeader, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, isEventIteratorHeaders, mapEventIterator, mergeStandardHeaders, replicateStandardLazyResponse, withEventMeta };
76
+ export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, flattenHeader, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, isEventIteratorHeaders, mapEventIterator, replicateStandardLazyResponse, withEventMeta };
78
77
  export type { ErrorEventOptions, EventDecoderOptions, EventMessage, EventMeta, HibernationEventIteratorCallback };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { isTypescriptObject, AsyncIteratorClass, tryDecodeURIComponent, toArray, once, isAsyncIteratorObject, replicateAsyncIterator } from '@temporary-name/shared';
1
+ import { isTypescriptObject, AsyncIteratorClass, tryDecodeURIComponent, once, isAsyncIteratorObject, replicateAsyncIterator } from '@temporary-name/shared';
2
2
 
3
3
  class EventEncoderError extends TypeError {
4
4
  }
@@ -259,23 +259,6 @@ function getFilenameFromContentDisposition(contentDisposition) {
259
259
  return encodedFilenameMatch[1].replace(/\\"/g, '"');
260
260
  }
261
261
  }
262
- function mergeStandardHeaders(a, b) {
263
- const merged = { ...a };
264
- for (const key in b) {
265
- if (Array.isArray(b[key])) {
266
- merged[key] = [...toArray(merged[key]), ...b[key]];
267
- } else if (b[key] !== void 0) {
268
- if (Array.isArray(merged[key])) {
269
- merged[key] = [...merged[key], b[key]];
270
- } else if (merged[key] !== void 0) {
271
- merged[key] = [merged[key], b[key]];
272
- } else {
273
- merged[key] = b[key];
274
- }
275
- }
276
- }
277
- return merged;
278
- }
279
262
  function flattenHeader(header) {
280
263
  if (typeof header === "string" || header === void 0) {
281
264
  return header;
@@ -310,4 +293,4 @@ function isEventIteratorHeaders(headers) {
310
293
  );
311
294
  }
312
295
 
313
- export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, flattenHeader, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, isEventIteratorHeaders, mapEventIterator, mergeStandardHeaders, replicateStandardLazyResponse, withEventMeta };
296
+ export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, flattenHeader, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, isEventIteratorHeaders, mapEventIterator, replicateStandardLazyResponse, withEventMeta };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@temporary-name/standard-server",
3
3
  "type": "module",
4
- "version": "1.9.3-alpha.e098b3d1c5bffbad2fadfda89ba01f6452db46b5",
4
+ "version": "1.9.3-alpha.f9f5ce625d5edee78250b87b3a64f1d9760c2244",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.stainless.com/",
7
7
  "repository": {
@@ -17,18 +17,13 @@
17
17
  "types": "./dist/index.d.mts",
18
18
  "import": "./dist/index.mjs",
19
19
  "default": "./dist/index.mjs"
20
- },
21
- "./batch": {
22
- "types": "./dist/batch/index.d.mts",
23
- "import": "./dist/batch/index.mjs",
24
- "default": "./dist/batch/index.mjs"
25
20
  }
26
21
  },
27
22
  "files": [
28
23
  "dist"
29
24
  ],
30
25
  "dependencies": {
31
- "@temporary-name/shared": "1.9.3-alpha.e098b3d1c5bffbad2fadfda89ba01f6452db46b5"
26
+ "@temporary-name/shared": "1.9.3-alpha.f9f5ce625d5edee78250b87b3a64f1d9760c2244"
32
27
  },
33
28
  "scripts": {
34
29
  "build": "unbuild",
@@ -1,29 +0,0 @@
1
- import { StandardHeaders, StandardRequest, StandardResponse, Promisable } from '@temporary-name/shared';
2
-
3
- interface ToBatchRequestOptions {
4
- url: URL;
5
- method: 'GET' | 'POST';
6
- headers: StandardHeaders;
7
- requests: readonly StandardRequest[];
8
- }
9
- declare function toBatchRequest(options: ToBatchRequestOptions): StandardRequest;
10
- declare function parseBatchRequest(request: StandardRequest): StandardRequest[];
11
-
12
- type BatchResponseMode = 'streaming' | 'buffered';
13
- interface BatchResponseBodyItem extends StandardResponse {
14
- index: number;
15
- }
16
- interface ToBatchResponseOptions extends StandardResponse {
17
- body: AsyncIteratorObject<BatchResponseBodyItem>;
18
- /**
19
- * @default 'streaming'
20
- */
21
- mode?: BatchResponseMode;
22
- }
23
- declare function toBatchResponse(options: ToBatchResponseOptions): Promisable<StandardResponse>;
24
- declare function parseBatchResponse(response: StandardResponse): AsyncGenerator<BatchResponseBodyItem>;
25
-
26
- declare function toBatchAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
27
-
28
- export { parseBatchRequest, parseBatchResponse, toBatchAbortSignal, toBatchRequest, toBatchResponse };
29
- export type { BatchResponseBodyItem, BatchResponseMode, ToBatchRequestOptions, ToBatchResponseOptions };
@@ -1,29 +0,0 @@
1
- import { StandardHeaders, StandardRequest, StandardResponse, Promisable } from '@temporary-name/shared';
2
-
3
- interface ToBatchRequestOptions {
4
- url: URL;
5
- method: 'GET' | 'POST';
6
- headers: StandardHeaders;
7
- requests: readonly StandardRequest[];
8
- }
9
- declare function toBatchRequest(options: ToBatchRequestOptions): StandardRequest;
10
- declare function parseBatchRequest(request: StandardRequest): StandardRequest[];
11
-
12
- type BatchResponseMode = 'streaming' | 'buffered';
13
- interface BatchResponseBodyItem extends StandardResponse {
14
- index: number;
15
- }
16
- interface ToBatchResponseOptions extends StandardResponse {
17
- body: AsyncIteratorObject<BatchResponseBodyItem>;
18
- /**
19
- * @default 'streaming'
20
- */
21
- mode?: BatchResponseMode;
22
- }
23
- declare function toBatchResponse(options: ToBatchResponseOptions): Promisable<StandardResponse>;
24
- declare function parseBatchResponse(response: StandardResponse): AsyncGenerator<BatchResponseBodyItem>;
25
-
26
- declare function toBatchAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
27
-
28
- export { parseBatchRequest, parseBatchResponse, toBatchAbortSignal, toBatchRequest, toBatchResponse };
29
- export type { BatchResponseBodyItem, BatchResponseMode, ToBatchRequestOptions, ToBatchResponseOptions };
@@ -1,156 +0,0 @@
1
- import { stringifyJSON, parseEmptyableJSON, AsyncIteratorClass, isAsyncIteratorObject, isObject } from '@temporary-name/shared';
2
-
3
- function toBatchAbortSignal(signals) {
4
- const realSignals = signals.filter((signal) => signal !== void 0);
5
- if (realSignals.length === 0 || realSignals.length !== signals.length) {
6
- return void 0;
7
- }
8
- const controller = new AbortController();
9
- const abortIfAllInputsAborted = () => {
10
- if (realSignals.every((signal) => signal.aborted)) {
11
- controller.abort();
12
- }
13
- };
14
- abortIfAllInputsAborted();
15
- for (const signal of realSignals) {
16
- signal.addEventListener(
17
- "abort",
18
- () => {
19
- abortIfAllInputsAborted();
20
- },
21
- {
22
- once: true,
23
- signal: controller.signal
24
- }
25
- );
26
- }
27
- return controller.signal;
28
- }
29
-
30
- function toBatchRequest(options) {
31
- const url = new URL(options.url);
32
- let body;
33
- const batchRequestItems = options.requests.map(
34
- (request) => ({
35
- body: request.body,
36
- headers: Object.keys(request.headers).length ? request.headers : void 0,
37
- method: request.method === options.method ? void 0 : request.method,
38
- url: request.url
39
- })
40
- );
41
- if (options.method === "GET") {
42
- url.searchParams.append("batch", stringifyJSON(batchRequestItems));
43
- } else if (options.method === "POST") {
44
- body = batchRequestItems;
45
- }
46
- return {
47
- method: options.method,
48
- url,
49
- headers: options.headers,
50
- body,
51
- signal: toBatchAbortSignal(options.requests.map((request) => request.signal))
52
- };
53
- }
54
- function parseBatchRequest(request) {
55
- const items = request.method === "GET" ? parseEmptyableJSON(request.url.searchParams.getAll("batch").at(-1)) : request.body;
56
- if (!Array.isArray(items)) {
57
- throw new TypeError("Invalid batch request");
58
- }
59
- return items.map((item) => {
60
- return {
61
- method: item.method ?? request.method,
62
- url: new URL(item.url),
63
- headers: item.headers ?? {},
64
- body: item.body,
65
- signal: request.signal
66
- };
67
- });
68
- }
69
-
70
- function toBatchResponse(options) {
71
- const mode = options.mode ?? "streaming";
72
- const minifyResponseItem = (item) => {
73
- return {
74
- index: item.index,
75
- status: item.status === options.status ? void 0 : item.status,
76
- headers: Object.keys(item.headers).length ? item.headers : void 0,
77
- body: item.body
78
- };
79
- };
80
- if (mode === "buffered") {
81
- return (async () => {
82
- try {
83
- const body = [];
84
- for await (const item of options.body) {
85
- body.push(minifyResponseItem(item));
86
- }
87
- return {
88
- headers: options.headers,
89
- status: options.status,
90
- body
91
- };
92
- } finally {
93
- await options.body.return?.();
94
- }
95
- })();
96
- }
97
- return {
98
- headers: options.headers,
99
- status: options.status,
100
- body: new AsyncIteratorClass(
101
- async () => {
102
- const { done, value } = await options.body.next();
103
- if (done) {
104
- return { done, value };
105
- }
106
- return {
107
- done,
108
- value: {
109
- index: value.index,
110
- status: value.status === options.status ? void 0 : value.status,
111
- headers: Object.keys(value.headers).length ? value.headers : void 0,
112
- body: value.body
113
- }
114
- };
115
- },
116
- async (reason) => {
117
- if (reason !== "next") {
118
- await options.body.return?.();
119
- }
120
- }
121
- )
122
- };
123
- }
124
- function parseBatchResponse(response) {
125
- const body = response.body;
126
- if (isAsyncIteratorObject(body) || Array.isArray(body)) {
127
- const iterator = (async function* () {
128
- for await (const item of body) {
129
- if (!isObject(item) || !("index" in item) || typeof item.index !== "number") {
130
- throw new TypeError("Invalid batch response", {
131
- cause: item
132
- });
133
- }
134
- yield {
135
- index: item.index,
136
- status: item.status ?? response.status,
137
- headers: item.headers ?? {},
138
- body: item.body
139
- };
140
- }
141
- })();
142
- return new AsyncIteratorClass(
143
- () => iterator.next(),
144
- async (reason) => {
145
- if (reason !== "next" && isAsyncIteratorObject(body)) {
146
- await body.return?.();
147
- }
148
- }
149
- );
150
- }
151
- throw new TypeError("Invalid batch response", {
152
- cause: response
153
- });
154
- }
155
-
156
- export { parseBatchRequest, parseBatchResponse, toBatchAbortSignal, toBatchRequest, toBatchResponse };