@bigmistqke/rpc 0.1.2 → 0.1.4
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/.claude/settings.local.json +7 -0
- package/dist/fetch-node.js +139 -0
- package/dist/fetch-node.js.map +1 -1
- package/dist/fetch.d.ts +1 -1
- package/dist/fetch.js +148 -7
- package/dist/fetch.js.map +1 -1
- package/dist/handle-18d6fe9b.d.ts +24 -0
- package/dist/messenger.d.ts +80 -9
- package/dist/messenger.js +186 -40
- package/dist/messenger.js.map +1 -1
- package/dist/stream.d.ts +1 -1
- package/dist/stream.js +69 -28
- package/dist/stream.js.map +1 -1
- package/dist/{types-4d4495dd.d.ts → types-9f54da43.d.ts} +5 -1
- package/dist/websocket.d.ts +50 -0
- package/dist/websocket.js +617 -0
- package/dist/websocket.js.map +1 -0
- package/package.json +13 -7
- package/src/core.ts +100 -0
- package/src/fetch/index.ts +2 -1
- package/src/fetch/node.ts +1 -1
- package/src/handle.ts +48 -0
- package/src/{messenger.ts → messenger/index.ts} +163 -21
- package/src/{message-protocol.ts → protocol.ts} +11 -1
- package/src/server-send-events/index.ts +3 -2
- package/src/stream/encoding.ts +2 -2
- package/src/stream/index.ts +3 -14
- package/src/types.ts +6 -1
- package/src/utils.ts +0 -32
- package/src/websocket/index.ts +142 -0
- package/test/encoding.test.ts +4 -4
- package/test/fetch.test.ts +3 -3
- package/test/messenger.test.ts +255 -41
- package/test/{message-protocol.test.ts → protocol.test.ts} +7 -7
- package/test/sse.test.ts +3 -3
- package/test/stream.test.ts +4 -8
- package/test/utils.test.ts +1 -2
- package/test/websocket.test.ts +514 -0
- package/tsup.config.ts +2 -1
- package/LICENSE +0 -21
package/dist/fetch-node.js
CHANGED
|
@@ -167,6 +167,48 @@ function array(item, message) {
|
|
|
167
167
|
}
|
|
168
168
|
};
|
|
169
169
|
}
|
|
170
|
+
function boolean(message) {
|
|
171
|
+
return {
|
|
172
|
+
kind: "schema",
|
|
173
|
+
type: "boolean",
|
|
174
|
+
reference: boolean,
|
|
175
|
+
expects: "boolean",
|
|
176
|
+
async: false,
|
|
177
|
+
message,
|
|
178
|
+
get "~standard"() {
|
|
179
|
+
return _getStandardProps(this);
|
|
180
|
+
},
|
|
181
|
+
"~run"(dataset, config2) {
|
|
182
|
+
if (typeof dataset.value === "boolean") {
|
|
183
|
+
dataset.typed = true;
|
|
184
|
+
} else {
|
|
185
|
+
_addIssue(this, "type", dataset, config2);
|
|
186
|
+
}
|
|
187
|
+
return dataset;
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function number(message) {
|
|
192
|
+
return {
|
|
193
|
+
kind: "schema",
|
|
194
|
+
type: "number",
|
|
195
|
+
reference: number,
|
|
196
|
+
expects: "number",
|
|
197
|
+
async: false,
|
|
198
|
+
message,
|
|
199
|
+
get "~standard"() {
|
|
200
|
+
return _getStandardProps(this);
|
|
201
|
+
},
|
|
202
|
+
"~run"(dataset, config2) {
|
|
203
|
+
if (typeof dataset.value === "number" && !isNaN(dataset.value)) {
|
|
204
|
+
dataset.typed = true;
|
|
205
|
+
} else {
|
|
206
|
+
_addIssue(this, "type", dataset, config2);
|
|
207
|
+
}
|
|
208
|
+
return dataset;
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
}
|
|
170
212
|
function object(entries, message) {
|
|
171
213
|
return {
|
|
172
214
|
kind: "schema",
|
|
@@ -250,6 +292,32 @@ function object(entries, message) {
|
|
|
250
292
|
}
|
|
251
293
|
};
|
|
252
294
|
}
|
|
295
|
+
function optional(wrapped, default_) {
|
|
296
|
+
return {
|
|
297
|
+
kind: "schema",
|
|
298
|
+
type: "optional",
|
|
299
|
+
reference: optional,
|
|
300
|
+
expects: `(${wrapped.expects} | undefined)`,
|
|
301
|
+
async: false,
|
|
302
|
+
wrapped,
|
|
303
|
+
default: default_,
|
|
304
|
+
get "~standard"() {
|
|
305
|
+
return _getStandardProps(this);
|
|
306
|
+
},
|
|
307
|
+
"~run"(dataset, config2) {
|
|
308
|
+
if (dataset.value === void 0) {
|
|
309
|
+
if (this.default !== void 0) {
|
|
310
|
+
dataset.value = getDefault(this, dataset, config2);
|
|
311
|
+
}
|
|
312
|
+
if (dataset.value === void 0) {
|
|
313
|
+
dataset.typed = true;
|
|
314
|
+
return dataset;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return this.wrapped["~run"](dataset, config2);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
}
|
|
253
321
|
function string(message) {
|
|
254
322
|
return {
|
|
255
323
|
kind: "schema",
|
|
@@ -271,6 +339,22 @@ function string(message) {
|
|
|
271
339
|
}
|
|
272
340
|
};
|
|
273
341
|
}
|
|
342
|
+
function unknown() {
|
|
343
|
+
return {
|
|
344
|
+
kind: "schema",
|
|
345
|
+
type: "unknown",
|
|
346
|
+
reference: unknown,
|
|
347
|
+
expects: "unknown",
|
|
348
|
+
async: false,
|
|
349
|
+
get "~standard"() {
|
|
350
|
+
return _getStandardProps(this);
|
|
351
|
+
},
|
|
352
|
+
"~run"(dataset) {
|
|
353
|
+
dataset.typed = true;
|
|
354
|
+
return dataset;
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
}
|
|
274
358
|
function safeParse(schema, input, config2) {
|
|
275
359
|
const dataset = schema["~run"]({ value: input }, getGlobalConfig(config2));
|
|
276
360
|
return {
|
|
@@ -281,6 +365,9 @@ function safeParse(schema, input, config2) {
|
|
|
281
365
|
};
|
|
282
366
|
}
|
|
283
367
|
|
|
368
|
+
// src/handle.ts
|
|
369
|
+
var $HANDLE_MARKER = Symbol("RPC-HANDLE-MARKER");
|
|
370
|
+
|
|
284
371
|
// src/utils.ts
|
|
285
372
|
function createShape(schema, create) {
|
|
286
373
|
return {
|
|
@@ -288,6 +375,58 @@ function createShape(schema, create) {
|
|
|
288
375
|
create
|
|
289
376
|
};
|
|
290
377
|
}
|
|
378
|
+
|
|
379
|
+
// src/protocol.ts
|
|
380
|
+
var $MESSENGER_REQUEST = "RPC_PROXY_REQUEST";
|
|
381
|
+
var requestSchema = object({
|
|
382
|
+
[$MESSENGER_REQUEST]: number(),
|
|
383
|
+
payload: unknown()
|
|
384
|
+
});
|
|
385
|
+
var RequestShape = createShape(requestSchema, (id, payload) => ({
|
|
386
|
+
[$MESSENGER_REQUEST]: id,
|
|
387
|
+
payload
|
|
388
|
+
}));
|
|
389
|
+
var $MESSENGER_RESPONSE = "RPC_PROXY_RESPONSE";
|
|
390
|
+
var ResponseShape = createShape(
|
|
391
|
+
object({
|
|
392
|
+
[$MESSENGER_RESPONSE]: number(),
|
|
393
|
+
payload: optional(unknown())
|
|
394
|
+
}),
|
|
395
|
+
(request, payload) => ({
|
|
396
|
+
[$MESSENGER_RESPONSE]: request[$MESSENGER_REQUEST],
|
|
397
|
+
payload
|
|
398
|
+
})
|
|
399
|
+
);
|
|
400
|
+
var $MESSENGER_ERROR = "RPC_PROXY_ERROR";
|
|
401
|
+
var ErrorShape = createShape(
|
|
402
|
+
object({
|
|
403
|
+
[$MESSENGER_ERROR]: number(),
|
|
404
|
+
error: unknown()
|
|
405
|
+
}),
|
|
406
|
+
(data, error) => ({
|
|
407
|
+
[$MESSENGER_ERROR]: data[$MESSENGER_REQUEST],
|
|
408
|
+
error
|
|
409
|
+
})
|
|
410
|
+
);
|
|
411
|
+
var $MESSENGER_RPC_REQUEST = "RPC_PROXY_RPC_REQUEST";
|
|
412
|
+
var RPCPayloadShape = createShape(
|
|
413
|
+
object({
|
|
414
|
+
[$MESSENGER_RPC_REQUEST]: boolean(),
|
|
415
|
+
topics: array(string()),
|
|
416
|
+
args: array(any())
|
|
417
|
+
}),
|
|
418
|
+
(topics, args) => ({ [$MESSENGER_RPC_REQUEST]: true, topics, args })
|
|
419
|
+
);
|
|
420
|
+
var $MESSENGER_HANDLE = "RPC_PROXY_HANDLE";
|
|
421
|
+
var HandleResponseShape = createShape(
|
|
422
|
+
object({
|
|
423
|
+
[$MESSENGER_HANDLE]: string()
|
|
424
|
+
// namespace ID
|
|
425
|
+
}),
|
|
426
|
+
(namespaceId) => ({ [$MESSENGER_HANDLE]: namespaceId })
|
|
427
|
+
);
|
|
428
|
+
|
|
429
|
+
// src/core.ts
|
|
291
430
|
function callMethod(methods, topics, args) {
|
|
292
431
|
const method = topics.reduce((acc, topic) => {
|
|
293
432
|
const result = acc?.[topic];
|