@temporary-name/standard-server 1.9.3-alpha.afd18ec2afa743b08cf1b5c2eb6252ded18a1f43 → 1.9.3-alpha.bb3867758271e7fcf8c191f9693365d655697e7f

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,6 +1,4 @@
1
- import { AsyncIteratorClass } from '@temporary-name/shared';
2
- import { S as StandardHeaders, a as StandardLazyResponse } from './shared/standard-server.BD8Sg1A5.mjs';
3
- export { b as StandardBody, d as StandardLazyRequest, c as StandardRequest, e as StandardResponse } from './shared/standard-server.BD8Sg1A5.mjs';
1
+ import { AsyncIteratorClass, StandardLazyResponse } from '@temporary-name/shared';
4
2
 
5
3
  interface EventMessage {
6
4
  event: string | undefined;
@@ -71,10 +69,9 @@ declare class HibernationEventIterator<T, TReturn = unknown, TNext = unknown> ex
71
69
 
72
70
  declare function generateContentDisposition(filename: string): string;
73
71
  declare function getFilenameFromContentDisposition(contentDisposition: string): string | undefined;
74
- declare function mergeStandardHeaders(a: StandardHeaders, b: StandardHeaders): StandardHeaders;
75
- declare function flattenHeader(header: string | readonly string[] | undefined): string | undefined;
72
+ declare function maybeSetHeader(headers: Headers, name: string, value: string | readonly string[] | null | undefined): void;
73
+ declare function setHeaderArray(headers: Headers, name: string, values: readonly string[]): void;
76
74
  declare function replicateStandardLazyResponse(response: StandardLazyResponse, count: number): StandardLazyResponse[];
77
- declare function isEventIteratorHeaders(headers: StandardHeaders): boolean;
78
75
 
79
- export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, StandardHeaders, StandardLazyResponse, 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, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, mapEventIterator, maybeSetHeader, replicateStandardLazyResponse, setHeaderArray, withEventMeta };
80
77
  export type { ErrorEventOptions, EventDecoderOptions, EventMessage, EventMeta, HibernationEventIteratorCallback };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- import { AsyncIteratorClass } from '@temporary-name/shared';
2
- import { S as StandardHeaders, a as StandardLazyResponse } from './shared/standard-server.BD8Sg1A5.js';
3
- export { b as StandardBody, d as StandardLazyRequest, c as StandardRequest, e as StandardResponse } from './shared/standard-server.BD8Sg1A5.js';
1
+ import { AsyncIteratorClass, StandardLazyResponse } from '@temporary-name/shared';
4
2
 
5
3
  interface EventMessage {
6
4
  event: string | undefined;
@@ -71,10 +69,9 @@ declare class HibernationEventIterator<T, TReturn = unknown, TNext = unknown> ex
71
69
 
72
70
  declare function generateContentDisposition(filename: string): string;
73
71
  declare function getFilenameFromContentDisposition(contentDisposition: string): string | undefined;
74
- declare function mergeStandardHeaders(a: StandardHeaders, b: StandardHeaders): StandardHeaders;
75
- declare function flattenHeader(header: string | readonly string[] | undefined): string | undefined;
72
+ declare function maybeSetHeader(headers: Headers, name: string, value: string | readonly string[] | null | undefined): void;
73
+ declare function setHeaderArray(headers: Headers, name: string, values: readonly string[]): void;
76
74
  declare function replicateStandardLazyResponse(response: StandardLazyResponse, count: number): StandardLazyResponse[];
77
- declare function isEventIteratorHeaders(headers: StandardHeaders): boolean;
78
75
 
79
- export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, StandardHeaders, StandardLazyResponse, 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, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, mapEventIterator, maybeSetHeader, replicateStandardLazyResponse, setHeaderArray, withEventMeta };
80
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,31 +259,18 @@ 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
- }
262
+ function maybeSetHeader(headers, name, value) {
263
+ if (typeof value === "string") {
264
+ headers.set(name, value);
265
+ } else if (value != null) {
266
+ setHeaderArray(headers, name, value);
276
267
  }
277
- return merged;
278
268
  }
279
- function flattenHeader(header) {
280
- if (typeof header === "string" || header === void 0) {
281
- return header;
282
- }
283
- if (header.length === 0) {
284
- return void 0;
269
+ function setHeaderArray(headers, name, values) {
270
+ headers.delete(name);
271
+ for (const value of values) {
272
+ headers.append(name, value);
285
273
  }
286
- return header.join(", ");
287
274
  }
288
275
  function replicateStandardLazyResponse(response, count) {
289
276
  const replicated = [];
@@ -304,10 +291,5 @@ function replicateStandardLazyResponse(response, count) {
304
291
  }
305
292
  return replicated;
306
293
  }
307
- function isEventIteratorHeaders(headers) {
308
- return Boolean(
309
- flattenHeader(headers["content-type"])?.startsWith("text/event-stream") && flattenHeader(headers["content-disposition"]) === void 0
310
- );
311
- }
312
294
 
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 };
295
+ export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, HibernationEventIterator, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, generateContentDisposition, getEventMeta, getFilenameFromContentDisposition, mapEventIterator, maybeSetHeader, replicateStandardLazyResponse, setHeaderArray, 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.afd18ec2afa743b08cf1b5c2eb6252ded18a1f43",
4
+ "version": "1.9.3-alpha.bb3867758271e7fcf8c191f9693365d655697e7f",
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.afd18ec2afa743b08cf1b5c2eb6252ded18a1f43"
26
+ "@temporary-name/shared": "1.9.3-alpha.bb3867758271e7fcf8c191f9693365d655697e7f"
32
27
  },
33
28
  "scripts": {
34
29
  "build": "unbuild",
@@ -1,30 +0,0 @@
1
- import { S as StandardHeaders, c as StandardRequest, e as StandardResponse } from '../shared/standard-server.BD8Sg1A5.mjs';
2
- import { Promisable } from '@temporary-name/shared';
3
-
4
- interface ToBatchRequestOptions {
5
- url: URL;
6
- method: 'GET' | 'POST';
7
- headers: StandardHeaders;
8
- requests: readonly StandardRequest[];
9
- }
10
- declare function toBatchRequest(options: ToBatchRequestOptions): StandardRequest;
11
- declare function parseBatchRequest(request: StandardRequest): StandardRequest[];
12
-
13
- type BatchResponseMode = 'streaming' | 'buffered';
14
- interface BatchResponseBodyItem extends StandardResponse {
15
- index: number;
16
- }
17
- interface ToBatchResponseOptions extends StandardResponse {
18
- body: AsyncIteratorObject<BatchResponseBodyItem>;
19
- /**
20
- * @default 'streaming'
21
- */
22
- mode?: BatchResponseMode;
23
- }
24
- declare function toBatchResponse(options: ToBatchResponseOptions): Promisable<StandardResponse>;
25
- declare function parseBatchResponse(response: StandardResponse): AsyncGenerator<BatchResponseBodyItem>;
26
-
27
- declare function toBatchAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
28
-
29
- export { parseBatchRequest, parseBatchResponse, toBatchAbortSignal, toBatchRequest, toBatchResponse };
30
- export type { BatchResponseBodyItem, BatchResponseMode, ToBatchRequestOptions, ToBatchResponseOptions };
@@ -1,30 +0,0 @@
1
- import { S as StandardHeaders, c as StandardRequest, e as StandardResponse } from '../shared/standard-server.BD8Sg1A5.js';
2
- import { Promisable } from '@temporary-name/shared';
3
-
4
- interface ToBatchRequestOptions {
5
- url: URL;
6
- method: 'GET' | 'POST';
7
- headers: StandardHeaders;
8
- requests: readonly StandardRequest[];
9
- }
10
- declare function toBatchRequest(options: ToBatchRequestOptions): StandardRequest;
11
- declare function parseBatchRequest(request: StandardRequest): StandardRequest[];
12
-
13
- type BatchResponseMode = 'streaming' | 'buffered';
14
- interface BatchResponseBodyItem extends StandardResponse {
15
- index: number;
16
- }
17
- interface ToBatchResponseOptions extends StandardResponse {
18
- body: AsyncIteratorObject<BatchResponseBodyItem>;
19
- /**
20
- * @default 'streaming'
21
- */
22
- mode?: BatchResponseMode;
23
- }
24
- declare function toBatchResponse(options: ToBatchResponseOptions): Promisable<StandardResponse>;
25
- declare function parseBatchResponse(response: StandardResponse): AsyncGenerator<BatchResponseBodyItem>;
26
-
27
- declare function toBatchAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
28
-
29
- export { parseBatchRequest, parseBatchResponse, toBatchAbortSignal, toBatchRequest, toBatchResponse };
30
- 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 };
@@ -1,38 +0,0 @@
1
- interface StandardHeaders {
2
- [key: string]: string | string[] | undefined;
3
- }
4
- type StandardBody = undefined | unknown | Blob | URLSearchParams | FormData | AsyncIterator<unknown | void, unknown | void, undefined>;
5
- interface StandardRequest {
6
- method: string;
7
- url: URL;
8
- headers: StandardHeaders;
9
- /**
10
- * The body has been parsed based on the content-type header.
11
- */
12
- body: StandardBody;
13
- signal: AbortSignal | undefined;
14
- }
15
- interface StandardLazyRequest extends Omit<StandardRequest, 'body'> {
16
- /**
17
- * The body has been parsed based on the content-type header.
18
- * This method can safely call multiple times (cached).
19
- */
20
- body: () => Promise<StandardBody>;
21
- }
22
- interface StandardResponse {
23
- status: number;
24
- headers: StandardHeaders;
25
- /**
26
- * The body has been parsed based on the content-type header.
27
- */
28
- body: StandardBody;
29
- }
30
- interface StandardLazyResponse extends Omit<StandardResponse, 'body'> {
31
- /**
32
- * The body has been parsed based on the content-type header.
33
- * This method can safely call multiple times (cached).
34
- */
35
- body: () => Promise<StandardBody>;
36
- }
37
-
38
- export type { StandardHeaders as S, StandardLazyResponse as a, StandardBody as b, StandardRequest as c, StandardLazyRequest as d, StandardResponse as e };
@@ -1,38 +0,0 @@
1
- interface StandardHeaders {
2
- [key: string]: string | string[] | undefined;
3
- }
4
- type StandardBody = undefined | unknown | Blob | URLSearchParams | FormData | AsyncIterator<unknown | void, unknown | void, undefined>;
5
- interface StandardRequest {
6
- method: string;
7
- url: URL;
8
- headers: StandardHeaders;
9
- /**
10
- * The body has been parsed based on the content-type header.
11
- */
12
- body: StandardBody;
13
- signal: AbortSignal | undefined;
14
- }
15
- interface StandardLazyRequest extends Omit<StandardRequest, 'body'> {
16
- /**
17
- * The body has been parsed based on the content-type header.
18
- * This method can safely call multiple times (cached).
19
- */
20
- body: () => Promise<StandardBody>;
21
- }
22
- interface StandardResponse {
23
- status: number;
24
- headers: StandardHeaders;
25
- /**
26
- * The body has been parsed based on the content-type header.
27
- */
28
- body: StandardBody;
29
- }
30
- interface StandardLazyResponse extends Omit<StandardResponse, 'body'> {
31
- /**
32
- * The body has been parsed based on the content-type header.
33
- * This method can safely call multiple times (cached).
34
- */
35
- body: () => Promise<StandardBody>;
36
- }
37
-
38
- export type { StandardHeaders as S, StandardLazyResponse as a, StandardBody as b, StandardRequest as c, StandardLazyRequest as d, StandardResponse as e };