@orpc/standard-server 0.0.0-next.b36125c → 0.0.0-next.bf49833

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/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <div align="center">
2
- <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 />
2
+ <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 alt="oRPC logo" />
3
3
  </div>
4
4
 
5
5
  <h1></h1>
@@ -0,0 +1,99 @@
1
+ export { contentDisposition, parse as parseContentDisposition } from '@tinyhttp/content-disposition';
2
+
3
+ interface EventMessage {
4
+ event: string | undefined;
5
+ id: string | undefined;
6
+ data: string | undefined;
7
+ /**
8
+ * The number of milliseconds to wait before retrying the event iterator if error occurs.
9
+ */
10
+ retry: number | undefined;
11
+ comments: string[];
12
+ }
13
+
14
+ declare function decodeEventMessage(encoded: string): EventMessage;
15
+ interface EventDecoderOptions {
16
+ onEvent?: (event: EventMessage) => void;
17
+ }
18
+ declare class EventDecoder {
19
+ private options;
20
+ private incomplete;
21
+ constructor(options?: EventDecoderOptions);
22
+ feed(chunk: string): void;
23
+ end(): void;
24
+ }
25
+ declare class EventDecoderStream extends TransformStream<string, EventMessage> {
26
+ constructor();
27
+ }
28
+
29
+ declare function assertEventId(id: string): void;
30
+ declare function assertEventName(event: string): void;
31
+ declare function assertEventRetry(retry: number): void;
32
+ declare function assertEventComment(comment: string): void;
33
+ declare function encodeEventData(data: string | undefined): string;
34
+ declare function encodeEventComments(comments: string[] | undefined): string;
35
+ declare function encodeEventMessage(message: Partial<EventMessage>): string;
36
+
37
+ declare class EventEncoderError extends TypeError {
38
+ }
39
+ declare class EventDecoderError extends TypeError {
40
+ }
41
+ interface ErrorEventOptions extends ErrorOptions {
42
+ message?: string;
43
+ data?: unknown;
44
+ }
45
+ declare class ErrorEvent extends Error {
46
+ data: unknown;
47
+ constructor(options?: ErrorEventOptions);
48
+ }
49
+
50
+ type EventMeta = Partial<Pick<EventMessage, 'retry' | 'id' | 'comments'>>;
51
+ declare function withEventMeta<T extends object>(container: T, meta: EventMeta): T;
52
+ declare function getEventMeta(container: unknown): EventMeta | undefined;
53
+
54
+ interface StandardHeaders {
55
+ [key: string]: string | string[] | undefined;
56
+ }
57
+ type StandardBody = undefined | unknown | Blob | URLSearchParams | FormData | AsyncIterator<unknown | void, unknown | void, undefined>;
58
+ interface StandardRequest {
59
+ method: string;
60
+ url: URL;
61
+ headers: StandardHeaders;
62
+ /**
63
+ * The body has been parsed based on the content-type header.
64
+ */
65
+ body: StandardBody;
66
+ signal: AbortSignal | undefined;
67
+ }
68
+ interface StandardLazyRequest extends Omit<StandardRequest, 'body'> {
69
+ /**
70
+ * Can be { request: Request } or { request: IncomingMessage, response: ServerResponse } based on the adapter.
71
+ */
72
+ raw: Record<string, unknown>;
73
+ /**
74
+ * The body has been parsed based on the content-type header.
75
+ * This method can safely call multiple times (cached).
76
+ */
77
+ body: () => Promise<StandardBody>;
78
+ }
79
+ interface StandardResponse {
80
+ status: number;
81
+ headers: StandardHeaders;
82
+ /**
83
+ * The body has been parsed based on the content-type header.
84
+ */
85
+ body: StandardBody;
86
+ }
87
+ interface StandardLazyResponse extends Omit<StandardResponse, 'body'> {
88
+ /**
89
+ * Can be { request: Request } or { request: IncomingMessage, response: ServerResponse } based on the adapter.
90
+ */
91
+ raw: Record<string, unknown>;
92
+ /**
93
+ * The body has been parsed based on the content-type header.
94
+ * This method can safely call multiple times (cached).
95
+ */
96
+ body: () => Promise<StandardBody>;
97
+ }
98
+
99
+ export { ErrorEvent, type ErrorEventOptions, EventDecoder, EventDecoderError, type EventDecoderOptions, EventDecoderStream, EventEncoderError, type EventMessage, type EventMeta, type StandardBody, type StandardHeaders, type StandardLazyRequest, type StandardLazyResponse, type StandardRequest, type StandardResponse, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, getEventMeta, withEventMeta };
@@ -0,0 +1,99 @@
1
+ export { contentDisposition, parse as parseContentDisposition } from '@tinyhttp/content-disposition';
2
+
3
+ interface EventMessage {
4
+ event: string | undefined;
5
+ id: string | undefined;
6
+ data: string | undefined;
7
+ /**
8
+ * The number of milliseconds to wait before retrying the event iterator if error occurs.
9
+ */
10
+ retry: number | undefined;
11
+ comments: string[];
12
+ }
13
+
14
+ declare function decodeEventMessage(encoded: string): EventMessage;
15
+ interface EventDecoderOptions {
16
+ onEvent?: (event: EventMessage) => void;
17
+ }
18
+ declare class EventDecoder {
19
+ private options;
20
+ private incomplete;
21
+ constructor(options?: EventDecoderOptions);
22
+ feed(chunk: string): void;
23
+ end(): void;
24
+ }
25
+ declare class EventDecoderStream extends TransformStream<string, EventMessage> {
26
+ constructor();
27
+ }
28
+
29
+ declare function assertEventId(id: string): void;
30
+ declare function assertEventName(event: string): void;
31
+ declare function assertEventRetry(retry: number): void;
32
+ declare function assertEventComment(comment: string): void;
33
+ declare function encodeEventData(data: string | undefined): string;
34
+ declare function encodeEventComments(comments: string[] | undefined): string;
35
+ declare function encodeEventMessage(message: Partial<EventMessage>): string;
36
+
37
+ declare class EventEncoderError extends TypeError {
38
+ }
39
+ declare class EventDecoderError extends TypeError {
40
+ }
41
+ interface ErrorEventOptions extends ErrorOptions {
42
+ message?: string;
43
+ data?: unknown;
44
+ }
45
+ declare class ErrorEvent extends Error {
46
+ data: unknown;
47
+ constructor(options?: ErrorEventOptions);
48
+ }
49
+
50
+ type EventMeta = Partial<Pick<EventMessage, 'retry' | 'id' | 'comments'>>;
51
+ declare function withEventMeta<T extends object>(container: T, meta: EventMeta): T;
52
+ declare function getEventMeta(container: unknown): EventMeta | undefined;
53
+
54
+ interface StandardHeaders {
55
+ [key: string]: string | string[] | undefined;
56
+ }
57
+ type StandardBody = undefined | unknown | Blob | URLSearchParams | FormData | AsyncIterator<unknown | void, unknown | void, undefined>;
58
+ interface StandardRequest {
59
+ method: string;
60
+ url: URL;
61
+ headers: StandardHeaders;
62
+ /**
63
+ * The body has been parsed based on the content-type header.
64
+ */
65
+ body: StandardBody;
66
+ signal: AbortSignal | undefined;
67
+ }
68
+ interface StandardLazyRequest extends Omit<StandardRequest, 'body'> {
69
+ /**
70
+ * Can be { request: Request } or { request: IncomingMessage, response: ServerResponse } based on the adapter.
71
+ */
72
+ raw: Record<string, unknown>;
73
+ /**
74
+ * The body has been parsed based on the content-type header.
75
+ * This method can safely call multiple times (cached).
76
+ */
77
+ body: () => Promise<StandardBody>;
78
+ }
79
+ interface StandardResponse {
80
+ status: number;
81
+ headers: StandardHeaders;
82
+ /**
83
+ * The body has been parsed based on the content-type header.
84
+ */
85
+ body: StandardBody;
86
+ }
87
+ interface StandardLazyResponse extends Omit<StandardResponse, 'body'> {
88
+ /**
89
+ * Can be { request: Request } or { request: IncomingMessage, response: ServerResponse } based on the adapter.
90
+ */
91
+ raw: Record<string, unknown>;
92
+ /**
93
+ * The body has been parsed based on the content-type header.
94
+ * This method can safely call multiple times (cached).
95
+ */
96
+ body: () => Promise<StandardBody>;
97
+ }
98
+
99
+ export { ErrorEvent, type ErrorEventOptions, EventDecoder, EventDecoderError, type EventDecoderOptions, EventDecoderStream, EventEncoderError, type EventMessage, type EventMeta, type StandardBody, type StandardHeaders, type StandardLazyRequest, type StandardLazyResponse, type StandardRequest, type StandardResponse, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, getEventMeta, withEventMeta };
@@ -1,17 +1,18 @@
1
- // src/event-source/errors.ts
2
- var EventEncoderError = class extends TypeError {
3
- };
4
- var EventDecoderError = class extends TypeError {
5
- };
6
- var ErrorEvent = class extends Error {
1
+ import { isTypescriptObject } from '@orpc/shared';
2
+ export { contentDisposition, parse as parseContentDisposition } from '@tinyhttp/content-disposition';
3
+
4
+ class EventEncoderError extends TypeError {
5
+ }
6
+ class EventDecoderError extends TypeError {
7
+ }
8
+ class ErrorEvent extends Error {
7
9
  data;
8
10
  constructor(options) {
9
11
  super(options?.message ?? "An error event was received", options);
10
12
  this.data = options?.data;
11
13
  }
12
- };
14
+ }
13
15
 
14
- // src/event-source/decoder.ts
15
16
  function decodeEventMessage(encoded) {
16
17
  const lines = encoded.replace(/\n+$/, "").split(/\n/);
17
18
  const message = {
@@ -45,7 +46,7 @@ function decodeEventMessage(encoded) {
45
46
  message.data = message.data?.replace(/\n$/, "");
46
47
  return message;
47
48
  }
48
- var EventDecoder = class {
49
+ class EventDecoder {
49
50
  constructor(options = {}) {
50
51
  this.options = options;
51
52
  }
@@ -70,11 +71,11 @@ var EventDecoder = class {
70
71
  }
71
72
  end() {
72
73
  if (this.incomplete) {
73
- throw new EventDecoderError("EventSource ended before complete");
74
+ throw new EventDecoderError("Event Iterator ended before complete");
74
75
  }
75
76
  }
76
- };
77
- var EventDecoderStream = class extends TransformStream {
77
+ }
78
+ class EventDecoderStream extends TransformStream {
78
79
  constructor() {
79
80
  let decoder;
80
81
  super({
@@ -93,22 +94,26 @@ var EventDecoderStream = class extends TransformStream {
93
94
  }
94
95
  });
95
96
  }
96
- };
97
+ }
97
98
 
98
- // src/event-source/encoder.ts
99
99
  function assertEventId(id) {
100
100
  if (id.includes("\n")) {
101
- throw new EventEncoderError("Event-source id must not contain a newline character");
101
+ throw new EventEncoderError("Event's id must not contain a newline character");
102
102
  }
103
103
  }
104
104
  function assertEventName(event) {
105
105
  if (event.includes("\n")) {
106
- throw new EventEncoderError("Event-source event must not contain a newline character");
106
+ throw new EventEncoderError("Event's event must not contain a newline character");
107
107
  }
108
108
  }
109
109
  function assertEventRetry(retry) {
110
110
  if (!Number.isInteger(retry) || retry < 0) {
111
- throw new EventEncoderError("Event-source retry must be a integer and >= 0");
111
+ throw new EventEncoderError("Event's retry must be a integer and >= 0");
112
+ }
113
+ }
114
+ function assertEventComment(comment) {
115
+ if (comment.includes("\n")) {
116
+ throw new EventEncoderError("Event's comment must not contain a newline character");
112
117
  }
113
118
  }
114
119
  function encodeEventData(data) {
@@ -120,8 +125,18 @@ function encodeEventData(data) {
120
125
  }
121
126
  return output;
122
127
  }
128
+ function encodeEventComments(comments) {
129
+ let output = "";
130
+ for (const comment of comments ?? []) {
131
+ assertEventComment(comment);
132
+ output += `: ${comment}
133
+ `;
134
+ }
135
+ return output;
136
+ }
123
137
  function encodeEventMessage(message) {
124
138
  let output = "";
139
+ output += encodeEventComments(message.comments);
125
140
  if (message.event !== void 0) {
126
141
  assertEventName(message.event);
127
142
  output += `event: ${message.event}
@@ -142,9 +157,7 @@ function encodeEventMessage(message) {
142
157
  return output;
143
158
  }
144
159
 
145
- // src/event-source/meta.ts
146
- import { isTypescriptObject } from "@orpc/shared";
147
- var EVENT_SOURCE_META_SYMBOL = Symbol("ORPC_EVENT_SOURCE_META");
160
+ const EVENT_SOURCE_META_SYMBOL = Symbol("ORPC_EVENT_SOURCE_META");
148
161
  function withEventMeta(container, meta) {
149
162
  if (meta.id !== void 0) {
150
163
  assertEventId(meta.id);
@@ -152,6 +165,11 @@ function withEventMeta(container, meta) {
152
165
  if (meta.retry !== void 0) {
153
166
  assertEventRetry(meta.retry);
154
167
  }
168
+ if (meta.comments !== void 0) {
169
+ for (const comment of meta.comments) {
170
+ assertEventComment(comment);
171
+ }
172
+ }
155
173
  return new Proxy(container, {
156
174
  get(target, prop, receiver) {
157
175
  if (prop === EVENT_SOURCE_META_SYMBOL) {
@@ -165,23 +183,4 @@ function getEventMeta(container) {
165
183
  return isTypescriptObject(container) ? Reflect.get(container, EVENT_SOURCE_META_SYMBOL) : void 0;
166
184
  }
167
185
 
168
- // src/utils.ts
169
- import { contentDisposition, parse } from "@tinyhttp/content-disposition";
170
- export {
171
- ErrorEvent,
172
- EventDecoder,
173
- EventDecoderError,
174
- EventDecoderStream,
175
- EventEncoderError,
176
- assertEventId,
177
- assertEventName,
178
- assertEventRetry,
179
- contentDisposition,
180
- decodeEventMessage,
181
- encodeEventData,
182
- encodeEventMessage,
183
- getEventMeta,
184
- parse as parseContentDisposition,
185
- withEventMeta
186
- };
187
- //# sourceMappingURL=index.js.map
186
+ export { ErrorEvent, EventDecoder, EventDecoderError, EventDecoderStream, EventEncoderError, assertEventComment, assertEventId, assertEventName, assertEventRetry, decodeEventMessage, encodeEventComments, encodeEventData, encodeEventMessage, getEventMeta, withEventMeta };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orpc/standard-server",
3
3
  "type": "module",
4
- "version": "0.0.0-next.b36125c",
4
+ "version": "0.0.0-next.bf49833",
5
5
  "license": "MIT",
6
6
  "homepage": "https://unnoq.com",
7
7
  "repository": {
@@ -14,25 +14,20 @@
14
14
  ],
15
15
  "exports": {
16
16
  ".": {
17
- "types": "./dist/src/index.d.ts",
18
- "import": "./dist/index.js",
19
- "default": "./dist/index.js"
20
- },
21
- "./🔒/*": {
22
- "types": "./dist/src/*.d.ts"
17
+ "types": "./dist/index.d.mts",
18
+ "import": "./dist/index.mjs",
19
+ "default": "./dist/index.mjs"
23
20
  }
24
21
  },
25
22
  "files": [
26
- "!**/*.map",
27
- "!**/*.tsbuildinfo",
28
23
  "dist"
29
24
  ],
30
25
  "dependencies": {
31
26
  "@tinyhttp/content-disposition": "^2.2.2",
32
- "@orpc/shared": "0.0.0-next.b36125c"
27
+ "@orpc/shared": "0.0.0-next.bf49833"
33
28
  },
34
29
  "scripts": {
35
- "build": "tsup --clean --sourcemap --entry.index=src/index.ts --format=esm --onSuccess='tsc -b --noCheck'",
30
+ "build": "unbuild",
36
31
  "build:watch": "pnpm run build --watch",
37
32
  "type:check": "tsc -b"
38
33
  }
@@ -1,16 +0,0 @@
1
- import type { EventMessage } from './types';
2
- export declare function decodeEventMessage(encoded: string): EventMessage;
3
- export interface EventDecoderOptions {
4
- onEvent?: (event: EventMessage) => void;
5
- }
6
- export declare class EventDecoder {
7
- private options;
8
- private incomplete;
9
- constructor(options?: EventDecoderOptions);
10
- feed(chunk: string): void;
11
- end(): void;
12
- }
13
- export declare class EventDecoderStream extends TransformStream<string, EventMessage> {
14
- constructor();
15
- }
16
- //# sourceMappingURL=decoder.d.ts.map
@@ -1,7 +0,0 @@
1
- import type { EventMessage } from './types';
2
- export declare function assertEventId(id: string): void;
3
- export declare function assertEventName(event: string): void;
4
- export declare function assertEventRetry(retry: number): void;
5
- export declare function encodeEventData(data: string | undefined): string;
6
- export declare function encodeEventMessage(message: Partial<EventMessage>): string;
7
- //# sourceMappingURL=encoder.d.ts.map
@@ -1,13 +0,0 @@
1
- export declare class EventEncoderError extends TypeError {
2
- }
3
- export declare class EventDecoderError extends TypeError {
4
- }
5
- export interface ErrorEventOptions extends ErrorOptions {
6
- message?: string;
7
- data?: unknown;
8
- }
9
- export declare class ErrorEvent extends Error {
10
- data: unknown;
11
- constructor(options?: ErrorEventOptions);
12
- }
13
- //# sourceMappingURL=errors.d.ts.map
@@ -1,6 +0,0 @@
1
- export * from './decoder';
2
- export * from './encoder';
3
- export * from './errors';
4
- export * from './meta';
5
- export * from './types';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1,5 +0,0 @@
1
- import type { EventMessage } from './types';
2
- export type EventMeta = Partial<Pick<EventMessage, 'retry' | 'id'>>;
3
- export declare function withEventMeta<T extends object>(container: T, meta: EventMeta): T;
4
- export declare function getEventMeta(container: unknown): EventMeta | undefined;
5
- //# sourceMappingURL=meta.d.ts.map
@@ -1,11 +0,0 @@
1
- export interface EventMessage {
2
- event: string | undefined;
3
- id: string | undefined;
4
- data: string | undefined;
5
- /**
6
- * The number of milliseconds to wait before retrying the event source if error occurs.
7
- */
8
- retry: number | undefined;
9
- comments: string[];
10
- }
11
- //# sourceMappingURL=types.d.ts.map
@@ -1,4 +0,0 @@
1
- export * from './event-source';
2
- export * from './types';
3
- export * from './utils';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1,25 +0,0 @@
1
- export interface StandardHeaders {
2
- [key: string]: string | string[] | undefined;
3
- }
4
- export type StandardBody = undefined | unknown | Blob | URLSearchParams | FormData | AsyncIterator<unknown | void, unknown | void, undefined>;
5
- export interface StandardRequest {
6
- /**
7
- * Can be { request: Request } or { request: IncomingMessage, response: ServerResponse } based on the adapter.
8
- */
9
- raw: Record<string, unknown>;
10
- method: string;
11
- url: URL;
12
- headers: StandardHeaders;
13
- /**
14
- * The body has been parsed base on the content-type header.
15
- * This method can safely call multiple times (cached).
16
- */
17
- body: () => Promise<StandardBody>;
18
- signal: AbortSignal | undefined;
19
- }
20
- export interface StandardResponse {
21
- status: number;
22
- headers: StandardHeaders;
23
- body: StandardBody;
24
- }
25
- //# sourceMappingURL=types.d.ts.map
@@ -1,2 +0,0 @@
1
- export { contentDisposition, parse as parseContentDisposition } from '@tinyhttp/content-disposition';
2
- //# sourceMappingURL=utils.d.ts.map