telepact 1.0.0-alpha.241 → 1.0.0-alpha.260

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
@@ -21,7 +21,7 @@ Server:
21
21
  ```ts
22
22
  import * as fs from 'fs';
23
23
  import * as path from 'path';
24
- import { Message, Server, ServerOptions, TelepactSchema, TelepactSchemaFiles } from 'telepact';
24
+ import { FunctionRouter, Message, Server, ServerOptions, TelepactSchema, TelepactSchemaFiles } from 'telepact';
25
25
 
26
26
  const files = new TelepactSchemaFiles('/directory/containing/api/files', fs, path);
27
27
  const schema = TelepactSchema.fromFileJsonMap(files.filenamesToJson);
@@ -29,33 +29,28 @@ const schema = TelepactSchema.fromFileJsonMap(files.filenamesToJson);
29
29
  // The schema directory may contain multiple *.telepact.yaml and
30
30
  // *.telepact.json files. Subdirectories are rejected.
31
31
 
32
- const handler = async (requestMessage: Message): Promise<Message> => {
33
- const functionName = Object.keys(requestMessage.body)[0];
34
- const arguments = requestMessage.body[functionName];
32
+ const functionRoutes = {
33
+ 'fn.greet': async (functionName: string, requestMessage: Message): Promise<Message> => {
34
+ const argument = requestMessage.body[functionName] as Record<string, any>;
35
+ const subject = argument['subject'];
36
+ return new Message({}, {Ok_: {message: `Hello ${subject}!`}});
37
+ },
38
+ };
35
39
 
40
+ const options = new ServerOptions();
41
+ // Set this to false when your schema does not define union.Auth_.
42
+ options.authRequired = false;
43
+ options.middleware = async (requestMessage: Message, functionRouter): Promise<Message> => {
44
+ const functionName = requestMessage.getBodyTarget();
36
45
  try {
37
- // Early in the handler, perform any pre-flight "middleware" operations, such as
38
- // authentication, tracing, or logging.
39
46
  log.info("Function started", {function: functionName});
40
-
41
- // Dispatch request to appropriate function handling code.
42
- // (This example uses manual dispatching, but you can also use a more advanced pattern.)
43
- if (functionName == 'fn.greet') {
44
- var subject = arguments['subject'];
45
- return new Message({}, {Ok_: {message: `Hello ${subject}!`}});
46
- }
47
-
48
- throw new Error('Function not found');
47
+ return await functionRouter.route(requestMessage);
49
48
  } finally {
50
- // At the end the handler, perform any post-flight "middleware" operations
51
49
  log.info("Function finished", {function: functionName});
52
50
  }
53
51
  };
54
-
55
- const options = new ServerOptions();
56
- // Set this to false when your schema does not define union.Auth_.
57
- options.authRequired = false;
58
- const server = new Server(schema, handler, options);
52
+ const functionRouter = new FunctionRouter(functionRoutes);
53
+ const server = new Server(schema, functionRouter, options);
59
54
 
60
55
  // Wire up request/response bytes from your transport of choice
61
56
  transport.receive(async (requestBytes: Uint8Array): Promise<Uint8Array> => {
@@ -224,7 +224,9 @@
224
224
  "errors.Validation_": [
225
225
  {
226
226
  "///": "The server implementation raised an unknown error.",
227
- "ErrorUnknown_": {}
227
+ "ErrorUnknown_": {
228
+ "caseId": "string"
229
+ }
228
230
  },
229
231
  {
230
232
  "///": "The headers on the request are invalid.",
package/dist/index.cjs.js CHANGED
@@ -724,6 +724,28 @@ class ClientBinaryEncoder {
724
724
  }
725
725
  }
726
726
 
727
+ function fillRandomValues(bytes) {
728
+ const cryptoObject = globalThis.crypto;
729
+ if (typeof cryptoObject?.getRandomValues === 'function') {
730
+ cryptoObject.getRandomValues(bytes);
731
+ return;
732
+ }
733
+ for (let i = 0; i < bytes.length; i += 1) {
734
+ bytes[i] = Math.floor(Math.random() * 256);
735
+ }
736
+ }
737
+ function createCaseId() {
738
+ const cryptoObject = globalThis.crypto;
739
+ if (typeof cryptoObject?.randomUUID === 'function') {
740
+ return cryptoObject.randomUUID();
741
+ }
742
+ const bytes = new Uint8Array(16);
743
+ fillRandomValues(bytes);
744
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
745
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
746
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
747
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
748
+ }
727
749
  function toError(error) {
728
750
  if (error instanceof Error) {
729
751
  return error;
@@ -738,6 +760,7 @@ function toError(error) {
738
760
  }
739
761
  class TelepactError extends Error {
740
762
  kind;
763
+ caseId;
741
764
  cause;
742
765
  constructor(arg, kind, cause) {
743
766
  const resolvedCause = typeof arg === 'string' ? toError(cause) : toError(arg);
@@ -748,6 +771,7 @@ class TelepactError extends Error {
748
771
  Object.setPrototypeOf(this, TelepactError.prototype);
749
772
  this.name = 'TelepactError';
750
773
  this.kind = kind;
774
+ this.caseId = createCaseId();
751
775
  this.cause = resolvedCause;
752
776
  if (resolvedCause?.stack) {
753
777
  this.stack = resolvedCause.stack;
@@ -1993,13 +2017,17 @@ function getSchemaKey(definition) {
1993
2017
  throw new Error(`Schema entry has no schema key: ${JSON.stringify(definition)}`);
1994
2018
  }
1995
2019
 
1996
- async function handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth) {
2020
+ function buildUnknownErrorMessage(error, headers = {}) {
2021
+ return new Message(headers, { ErrorUnknown_: { caseId: error.caseId } });
2022
+ }
2023
+
2024
+ async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
1997
2025
  const responseHeaders = {};
1998
2026
  const requestHeaders = requestMessage.headers;
1999
2027
  const requestBody = requestMessage.body;
2000
2028
  const parsedTelepactSchema = telepactSchema.parsed;
2001
2029
  const requestEntry = Object.entries(requestBody)[0];
2002
- Object.assign(requestHeaders, overrideHeaders);
2030
+ updateHeaders?.(requestHeaders);
2003
2031
  const requestTargetInit = requestEntry[0];
2004
2032
  const requestPayload = requestEntry[1];
2005
2033
  let unknownTarget;
@@ -2037,12 +2065,13 @@ async function handleMessage(requestMessage, overrideHeaders, telepactSchema, ha
2037
2065
  Object.assign(requestHeaders, authHeaders);
2038
2066
  }
2039
2067
  catch (error) {
2068
+ const wrapped = new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error);
2040
2069
  try {
2041
- onError(new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error));
2070
+ onError(wrapped);
2042
2071
  }
2043
2072
  catch (ignored) {
2044
2073
  }
2045
- return new Message(responseHeaders, { ErrorUnknown_: {} });
2074
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
2046
2075
  }
2047
2076
  }
2048
2077
  if ('@bin_' in requestHeaders) {
@@ -2110,16 +2139,17 @@ async function handleMessage(requestMessage, overrideHeaders, telepactSchema, ha
2110
2139
  }
2111
2140
  else {
2112
2141
  try {
2113
- resultMessage = await handler(callMessage);
2142
+ resultMessage = await middleware(callMessage, functionRouter);
2114
2143
  }
2115
2144
  catch (e) {
2145
+ const wrapped = new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e);
2116
2146
  try {
2117
- onError(new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e));
2147
+ onError(wrapped);
2118
2148
  }
2119
2149
  catch (error) {
2120
2150
  // Ignore error
2121
2151
  }
2122
- return new Message(responseHeaders, { ErrorUnknown_: {} });
2152
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
2123
2153
  }
2124
2154
  }
2125
2155
  const resultUnion = resultMessage.body;
@@ -2197,7 +2227,7 @@ function parseRequestMessage(requestMessageBytes, serializer, telepactSchema, on
2197
2227
  }
2198
2228
  }
2199
2229
 
2200
- async function processBytes(requestMessageBytes, overrideHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, handler) {
2230
+ async function processBytes(requestMessageBytes, updateHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, middleware, functionRouter) {
2201
2231
  try {
2202
2232
  const requestMessage = parseRequestMessage(requestMessageBytes, serializer, telepactSchema, onError);
2203
2233
  try {
@@ -2206,7 +2236,7 @@ async function processBytes(requestMessageBytes, overrideHeaders, serializer, te
2206
2236
  catch (error) {
2207
2237
  // Handle error
2208
2238
  }
2209
- const responseMessage = await handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth);
2239
+ const responseMessage = await handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth);
2210
2240
  try {
2211
2241
  onResponse(responseMessage);
2212
2242
  }
@@ -2227,7 +2257,7 @@ async function processBytes(requestMessageBytes, overrideHeaders, serializer, te
2227
2257
  catch (error) {
2228
2258
  // Handle error
2229
2259
  }
2230
- const unknownResponseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
2260
+ const unknownResponseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
2231
2261
  return { bytes: unknownResponseBytes, headers: {} };
2232
2262
  }
2233
2263
  return { bytes: responseBytes, headers: responseMessage.headers };
@@ -2244,7 +2274,7 @@ async function processBytes(requestMessageBytes, overrideHeaders, serializer, te
2244
2274
  catch (error) {
2245
2275
  // Handle error
2246
2276
  }
2247
- const responseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
2277
+ const responseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
2248
2278
  return { bytes: responseBytes, headers: {} };
2249
2279
  }
2250
2280
  }
@@ -2320,16 +2350,32 @@ class ServerBase64Encoder extends Base64Encoder {
2320
2350
  }
2321
2351
  }
2322
2352
 
2353
+ class FunctionRouter {
2354
+ functionRoutes;
2355
+ constructor(functionRoutes) {
2356
+ this.functionRoutes = functionRoutes;
2357
+ }
2358
+ async route(requestMessage) {
2359
+ const functionName = requestMessage.getBodyTarget();
2360
+ const functionRoute = this.functionRoutes[functionName];
2361
+ if (functionRoute === undefined) {
2362
+ throw new Error(`Unknown function: ${functionName}`);
2363
+ }
2364
+ return await functionRoute(functionName, requestMessage);
2365
+ }
2366
+ }
2323
2367
  class Server {
2324
- handler;
2368
+ functionRouter;
2369
+ middleware;
2325
2370
  onError;
2326
2371
  onRequest;
2327
2372
  onResponse;
2328
2373
  onAuth;
2329
2374
  telepactSchema;
2330
2375
  serializer;
2331
- constructor(telepactSchema, handler, options) {
2332
- this.handler = handler;
2376
+ constructor(telepactSchema, functionRouter, options) {
2377
+ this.functionRouter = functionRouter;
2378
+ this.middleware = options.middleware;
2333
2379
  this.onError = options.onError;
2334
2380
  this.onRequest = options.onRequest;
2335
2381
  this.onResponse = options.onResponse;
@@ -2343,8 +2389,8 @@ class Server {
2343
2389
  throw new Error('Unauthenticated server. Either define a `union.Auth_` in your schema or set `options.authRequired` to `false`.');
2344
2390
  }
2345
2391
  }
2346
- async process(requestMessageBytes, overrideHeaders = {}) {
2347
- return await processBytes(requestMessageBytes, overrideHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.handler);
2392
+ async process(requestMessageBytes, updateHeaders) {
2393
+ return await processBytes(requestMessageBytes, updateHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.middleware, this.functionRouter);
2348
2394
  }
2349
2395
  }
2350
2396
  class ServerOptions {
@@ -2352,6 +2398,7 @@ class ServerOptions {
2352
2398
  onRequest;
2353
2399
  onResponse;
2354
2400
  onAuth;
2401
+ middleware;
2355
2402
  authRequired;
2356
2403
  serialization;
2357
2404
  constructor() {
@@ -2359,6 +2406,7 @@ class ServerOptions {
2359
2406
  this.onRequest = (m) => { };
2360
2407
  this.onResponse = (m) => { };
2361
2408
  this.onAuth = (headers) => ({});
2409
+ this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
2362
2410
  this.authRequired = true;
2363
2411
  this.serialization = new DefaultSerialization();
2364
2412
  }
@@ -2658,6 +2706,7 @@ var internalTelepact = [
2658
2706
  {
2659
2707
  "///": "The server implementation raised an unknown error.",
2660
2708
  ErrorUnknown_: {
2709
+ caseId: "string"
2661
2710
  }
2662
2711
  },
2663
2712
  {
@@ -11835,8 +11884,10 @@ class MockServer {
11835
11884
  const serverOptions = new ServerOptions();
11836
11885
  serverOptions.onError = options.onError;
11837
11886
  serverOptions.authRequired = false;
11887
+ serverOptions.middleware = async (requestMessage) => await this.handle(requestMessage);
11838
11888
  const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
11839
- this.server = new Server(telepactSchema, this.handle, serverOptions);
11889
+ const functionRouter = new FunctionRouter({});
11890
+ this.server = new Server(telepactSchema, functionRouter, serverOptions);
11840
11891
  }
11841
11892
  random;
11842
11893
  enableGeneratedDefaultStub;
@@ -12426,6 +12477,7 @@ exports.Checksum = Checksum;
12426
12477
  exports.Client = Client;
12427
12478
  exports.ClientBinaryStrategy = ClientBinaryStrategy;
12428
12479
  exports.ClientOptions = ClientOptions;
12480
+ exports.FunctionRouter = FunctionRouter;
12429
12481
  exports.Message = Message;
12430
12482
  exports.MockServer = MockServer;
12431
12483
  exports.MockServerOptions = MockServerOptions;
package/dist/index.esm.js CHANGED
@@ -722,6 +722,28 @@ class ClientBinaryEncoder {
722
722
  }
723
723
  }
724
724
 
725
+ function fillRandomValues(bytes) {
726
+ const cryptoObject = globalThis.crypto;
727
+ if (typeof cryptoObject?.getRandomValues === 'function') {
728
+ cryptoObject.getRandomValues(bytes);
729
+ return;
730
+ }
731
+ for (let i = 0; i < bytes.length; i += 1) {
732
+ bytes[i] = Math.floor(Math.random() * 256);
733
+ }
734
+ }
735
+ function createCaseId() {
736
+ const cryptoObject = globalThis.crypto;
737
+ if (typeof cryptoObject?.randomUUID === 'function') {
738
+ return cryptoObject.randomUUID();
739
+ }
740
+ const bytes = new Uint8Array(16);
741
+ fillRandomValues(bytes);
742
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
743
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
744
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
745
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
746
+ }
725
747
  function toError(error) {
726
748
  if (error instanceof Error) {
727
749
  return error;
@@ -736,6 +758,7 @@ function toError(error) {
736
758
  }
737
759
  class TelepactError extends Error {
738
760
  kind;
761
+ caseId;
739
762
  cause;
740
763
  constructor(arg, kind, cause) {
741
764
  const resolvedCause = typeof arg === 'string' ? toError(cause) : toError(arg);
@@ -746,6 +769,7 @@ class TelepactError extends Error {
746
769
  Object.setPrototypeOf(this, TelepactError.prototype);
747
770
  this.name = 'TelepactError';
748
771
  this.kind = kind;
772
+ this.caseId = createCaseId();
749
773
  this.cause = resolvedCause;
750
774
  if (resolvedCause?.stack) {
751
775
  this.stack = resolvedCause.stack;
@@ -1991,13 +2015,17 @@ function getSchemaKey(definition) {
1991
2015
  throw new Error(`Schema entry has no schema key: ${JSON.stringify(definition)}`);
1992
2016
  }
1993
2017
 
1994
- async function handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth) {
2018
+ function buildUnknownErrorMessage(error, headers = {}) {
2019
+ return new Message(headers, { ErrorUnknown_: { caseId: error.caseId } });
2020
+ }
2021
+
2022
+ async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
1995
2023
  const responseHeaders = {};
1996
2024
  const requestHeaders = requestMessage.headers;
1997
2025
  const requestBody = requestMessage.body;
1998
2026
  const parsedTelepactSchema = telepactSchema.parsed;
1999
2027
  const requestEntry = Object.entries(requestBody)[0];
2000
- Object.assign(requestHeaders, overrideHeaders);
2028
+ updateHeaders?.(requestHeaders);
2001
2029
  const requestTargetInit = requestEntry[0];
2002
2030
  const requestPayload = requestEntry[1];
2003
2031
  let unknownTarget;
@@ -2035,12 +2063,13 @@ async function handleMessage(requestMessage, overrideHeaders, telepactSchema, ha
2035
2063
  Object.assign(requestHeaders, authHeaders);
2036
2064
  }
2037
2065
  catch (error) {
2066
+ const wrapped = new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error);
2038
2067
  try {
2039
- onError(new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error));
2068
+ onError(wrapped);
2040
2069
  }
2041
2070
  catch (ignored) {
2042
2071
  }
2043
- return new Message(responseHeaders, { ErrorUnknown_: {} });
2072
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
2044
2073
  }
2045
2074
  }
2046
2075
  if ('@bin_' in requestHeaders) {
@@ -2108,16 +2137,17 @@ async function handleMessage(requestMessage, overrideHeaders, telepactSchema, ha
2108
2137
  }
2109
2138
  else {
2110
2139
  try {
2111
- resultMessage = await handler(callMessage);
2140
+ resultMessage = await middleware(callMessage, functionRouter);
2112
2141
  }
2113
2142
  catch (e) {
2143
+ const wrapped = new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e);
2114
2144
  try {
2115
- onError(new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e));
2145
+ onError(wrapped);
2116
2146
  }
2117
2147
  catch (error) {
2118
2148
  // Ignore error
2119
2149
  }
2120
- return new Message(responseHeaders, { ErrorUnknown_: {} });
2150
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
2121
2151
  }
2122
2152
  }
2123
2153
  const resultUnion = resultMessage.body;
@@ -2195,7 +2225,7 @@ function parseRequestMessage(requestMessageBytes, serializer, telepactSchema, on
2195
2225
  }
2196
2226
  }
2197
2227
 
2198
- async function processBytes(requestMessageBytes, overrideHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, handler) {
2228
+ async function processBytes(requestMessageBytes, updateHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, middleware, functionRouter) {
2199
2229
  try {
2200
2230
  const requestMessage = parseRequestMessage(requestMessageBytes, serializer, telepactSchema, onError);
2201
2231
  try {
@@ -2204,7 +2234,7 @@ async function processBytes(requestMessageBytes, overrideHeaders, serializer, te
2204
2234
  catch (error) {
2205
2235
  // Handle error
2206
2236
  }
2207
- const responseMessage = await handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth);
2237
+ const responseMessage = await handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth);
2208
2238
  try {
2209
2239
  onResponse(responseMessage);
2210
2240
  }
@@ -2225,7 +2255,7 @@ async function processBytes(requestMessageBytes, overrideHeaders, serializer, te
2225
2255
  catch (error) {
2226
2256
  // Handle error
2227
2257
  }
2228
- const unknownResponseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
2258
+ const unknownResponseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
2229
2259
  return { bytes: unknownResponseBytes, headers: {} };
2230
2260
  }
2231
2261
  return { bytes: responseBytes, headers: responseMessage.headers };
@@ -2242,7 +2272,7 @@ async function processBytes(requestMessageBytes, overrideHeaders, serializer, te
2242
2272
  catch (error) {
2243
2273
  // Handle error
2244
2274
  }
2245
- const responseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
2275
+ const responseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
2246
2276
  return { bytes: responseBytes, headers: {} };
2247
2277
  }
2248
2278
  }
@@ -2318,16 +2348,32 @@ class ServerBase64Encoder extends Base64Encoder {
2318
2348
  }
2319
2349
  }
2320
2350
 
2351
+ class FunctionRouter {
2352
+ functionRoutes;
2353
+ constructor(functionRoutes) {
2354
+ this.functionRoutes = functionRoutes;
2355
+ }
2356
+ async route(requestMessage) {
2357
+ const functionName = requestMessage.getBodyTarget();
2358
+ const functionRoute = this.functionRoutes[functionName];
2359
+ if (functionRoute === undefined) {
2360
+ throw new Error(`Unknown function: ${functionName}`);
2361
+ }
2362
+ return await functionRoute(functionName, requestMessage);
2363
+ }
2364
+ }
2321
2365
  class Server {
2322
- handler;
2366
+ functionRouter;
2367
+ middleware;
2323
2368
  onError;
2324
2369
  onRequest;
2325
2370
  onResponse;
2326
2371
  onAuth;
2327
2372
  telepactSchema;
2328
2373
  serializer;
2329
- constructor(telepactSchema, handler, options) {
2330
- this.handler = handler;
2374
+ constructor(telepactSchema, functionRouter, options) {
2375
+ this.functionRouter = functionRouter;
2376
+ this.middleware = options.middleware;
2331
2377
  this.onError = options.onError;
2332
2378
  this.onRequest = options.onRequest;
2333
2379
  this.onResponse = options.onResponse;
@@ -2341,8 +2387,8 @@ class Server {
2341
2387
  throw new Error('Unauthenticated server. Either define a `union.Auth_` in your schema or set `options.authRequired` to `false`.');
2342
2388
  }
2343
2389
  }
2344
- async process(requestMessageBytes, overrideHeaders = {}) {
2345
- return await processBytes(requestMessageBytes, overrideHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.handler);
2390
+ async process(requestMessageBytes, updateHeaders) {
2391
+ return await processBytes(requestMessageBytes, updateHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.middleware, this.functionRouter);
2346
2392
  }
2347
2393
  }
2348
2394
  class ServerOptions {
@@ -2350,6 +2396,7 @@ class ServerOptions {
2350
2396
  onRequest;
2351
2397
  onResponse;
2352
2398
  onAuth;
2399
+ middleware;
2353
2400
  authRequired;
2354
2401
  serialization;
2355
2402
  constructor() {
@@ -2357,6 +2404,7 @@ class ServerOptions {
2357
2404
  this.onRequest = (m) => { };
2358
2405
  this.onResponse = (m) => { };
2359
2406
  this.onAuth = (headers) => ({});
2407
+ this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
2360
2408
  this.authRequired = true;
2361
2409
  this.serialization = new DefaultSerialization();
2362
2410
  }
@@ -2656,6 +2704,7 @@ var internalTelepact = [
2656
2704
  {
2657
2705
  "///": "The server implementation raised an unknown error.",
2658
2706
  ErrorUnknown_: {
2707
+ caseId: "string"
2659
2708
  }
2660
2709
  },
2661
2710
  {
@@ -11833,8 +11882,10 @@ class MockServer {
11833
11882
  const serverOptions = new ServerOptions();
11834
11883
  serverOptions.onError = options.onError;
11835
11884
  serverOptions.authRequired = false;
11885
+ serverOptions.middleware = async (requestMessage) => await this.handle(requestMessage);
11836
11886
  const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
11837
- this.server = new Server(telepactSchema, this.handle, serverOptions);
11887
+ const functionRouter = new FunctionRouter({});
11888
+ this.server = new Server(telepactSchema, functionRouter, serverOptions);
11838
11889
  }
11839
11890
  random;
11840
11891
  enableGeneratedDefaultStub;
@@ -12420,4 +12471,4 @@ const _internal = {
12420
12471
  GenerateContext
12421
12472
  };
12422
12473
 
12423
- export { Checksum, Client, ClientBinaryStrategy, ClientOptions, Message, MockServer, MockServerOptions, MockTelepactSchema, RandomGenerator, SerializationError, Serializer, Server, ServerOptions, TelepactSchema, TelepactSchemaFiles, TelepactSchemaParseError, TestClient, TestClientOptions, _internal, jsonSchema };
12474
+ export { Checksum, Client, ClientBinaryStrategy, ClientOptions, FunctionRouter, Message, MockServer, MockServerOptions, MockTelepactSchema, RandomGenerator, SerializationError, Serializer, Server, ServerOptions, TelepactSchema, TelepactSchemaFiles, TelepactSchemaParseError, TestClient, TestClientOptions, _internal, jsonSchema };
@@ -722,6 +722,28 @@ var Telepact = (function (exports, msgpackr, crc32) {
722
722
  }
723
723
  }
724
724
 
725
+ function fillRandomValues(bytes) {
726
+ const cryptoObject = globalThis.crypto;
727
+ if (typeof cryptoObject?.getRandomValues === 'function') {
728
+ cryptoObject.getRandomValues(bytes);
729
+ return;
730
+ }
731
+ for (let i = 0; i < bytes.length; i += 1) {
732
+ bytes[i] = Math.floor(Math.random() * 256);
733
+ }
734
+ }
735
+ function createCaseId() {
736
+ const cryptoObject = globalThis.crypto;
737
+ if (typeof cryptoObject?.randomUUID === 'function') {
738
+ return cryptoObject.randomUUID();
739
+ }
740
+ const bytes = new Uint8Array(16);
741
+ fillRandomValues(bytes);
742
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
743
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
744
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
745
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
746
+ }
725
747
  function toError(error) {
726
748
  if (error instanceof Error) {
727
749
  return error;
@@ -736,6 +758,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
736
758
  }
737
759
  class TelepactError extends Error {
738
760
  kind;
761
+ caseId;
739
762
  cause;
740
763
  constructor(arg, kind, cause) {
741
764
  const resolvedCause = typeof arg === 'string' ? toError(cause) : toError(arg);
@@ -746,6 +769,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
746
769
  Object.setPrototypeOf(this, TelepactError.prototype);
747
770
  this.name = 'TelepactError';
748
771
  this.kind = kind;
772
+ this.caseId = createCaseId();
749
773
  this.cause = resolvedCause;
750
774
  if (resolvedCause?.stack) {
751
775
  this.stack = resolvedCause.stack;
@@ -1991,13 +2015,17 @@ var Telepact = (function (exports, msgpackr, crc32) {
1991
2015
  throw new Error(`Schema entry has no schema key: ${JSON.stringify(definition)}`);
1992
2016
  }
1993
2017
 
1994
- async function handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth) {
2018
+ function buildUnknownErrorMessage(error, headers = {}) {
2019
+ return new Message(headers, { ErrorUnknown_: { caseId: error.caseId } });
2020
+ }
2021
+
2022
+ async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
1995
2023
  const responseHeaders = {};
1996
2024
  const requestHeaders = requestMessage.headers;
1997
2025
  const requestBody = requestMessage.body;
1998
2026
  const parsedTelepactSchema = telepactSchema.parsed;
1999
2027
  const requestEntry = Object.entries(requestBody)[0];
2000
- Object.assign(requestHeaders, overrideHeaders);
2028
+ updateHeaders?.(requestHeaders);
2001
2029
  const requestTargetInit = requestEntry[0];
2002
2030
  const requestPayload = requestEntry[1];
2003
2031
  let unknownTarget;
@@ -2035,12 +2063,13 @@ var Telepact = (function (exports, msgpackr, crc32) {
2035
2063
  Object.assign(requestHeaders, authHeaders);
2036
2064
  }
2037
2065
  catch (error) {
2066
+ const wrapped = new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error);
2038
2067
  try {
2039
- onError(new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error));
2068
+ onError(wrapped);
2040
2069
  }
2041
2070
  catch (ignored) {
2042
2071
  }
2043
- return new Message(responseHeaders, { ErrorUnknown_: {} });
2072
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
2044
2073
  }
2045
2074
  }
2046
2075
  if ('@bin_' in requestHeaders) {
@@ -2108,16 +2137,17 @@ var Telepact = (function (exports, msgpackr, crc32) {
2108
2137
  }
2109
2138
  else {
2110
2139
  try {
2111
- resultMessage = await handler(callMessage);
2140
+ resultMessage = await middleware(callMessage, functionRouter);
2112
2141
  }
2113
2142
  catch (e) {
2143
+ const wrapped = new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e);
2114
2144
  try {
2115
- onError(new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e));
2145
+ onError(wrapped);
2116
2146
  }
2117
2147
  catch (error) {
2118
2148
  // Ignore error
2119
2149
  }
2120
- return new Message(responseHeaders, { ErrorUnknown_: {} });
2150
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
2121
2151
  }
2122
2152
  }
2123
2153
  const resultUnion = resultMessage.body;
@@ -2195,7 +2225,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
2195
2225
  }
2196
2226
  }
2197
2227
 
2198
- async function processBytes(requestMessageBytes, overrideHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, handler) {
2228
+ async function processBytes(requestMessageBytes, updateHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, middleware, functionRouter) {
2199
2229
  try {
2200
2230
  const requestMessage = parseRequestMessage(requestMessageBytes, serializer, telepactSchema, onError);
2201
2231
  try {
@@ -2204,7 +2234,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
2204
2234
  catch (error) {
2205
2235
  // Handle error
2206
2236
  }
2207
- const responseMessage = await handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth);
2237
+ const responseMessage = await handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth);
2208
2238
  try {
2209
2239
  onResponse(responseMessage);
2210
2240
  }
@@ -2225,7 +2255,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
2225
2255
  catch (error) {
2226
2256
  // Handle error
2227
2257
  }
2228
- const unknownResponseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
2258
+ const unknownResponseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
2229
2259
  return { bytes: unknownResponseBytes, headers: {} };
2230
2260
  }
2231
2261
  return { bytes: responseBytes, headers: responseMessage.headers };
@@ -2242,7 +2272,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
2242
2272
  catch (error) {
2243
2273
  // Handle error
2244
2274
  }
2245
- const responseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
2275
+ const responseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
2246
2276
  return { bytes: responseBytes, headers: {} };
2247
2277
  }
2248
2278
  }
@@ -2318,16 +2348,32 @@ var Telepact = (function (exports, msgpackr, crc32) {
2318
2348
  }
2319
2349
  }
2320
2350
 
2351
+ class FunctionRouter {
2352
+ functionRoutes;
2353
+ constructor(functionRoutes) {
2354
+ this.functionRoutes = functionRoutes;
2355
+ }
2356
+ async route(requestMessage) {
2357
+ const functionName = requestMessage.getBodyTarget();
2358
+ const functionRoute = this.functionRoutes[functionName];
2359
+ if (functionRoute === undefined) {
2360
+ throw new Error(`Unknown function: ${functionName}`);
2361
+ }
2362
+ return await functionRoute(functionName, requestMessage);
2363
+ }
2364
+ }
2321
2365
  class Server {
2322
- handler;
2366
+ functionRouter;
2367
+ middleware;
2323
2368
  onError;
2324
2369
  onRequest;
2325
2370
  onResponse;
2326
2371
  onAuth;
2327
2372
  telepactSchema;
2328
2373
  serializer;
2329
- constructor(telepactSchema, handler, options) {
2330
- this.handler = handler;
2374
+ constructor(telepactSchema, functionRouter, options) {
2375
+ this.functionRouter = functionRouter;
2376
+ this.middleware = options.middleware;
2331
2377
  this.onError = options.onError;
2332
2378
  this.onRequest = options.onRequest;
2333
2379
  this.onResponse = options.onResponse;
@@ -2341,8 +2387,8 @@ var Telepact = (function (exports, msgpackr, crc32) {
2341
2387
  throw new Error('Unauthenticated server. Either define a `union.Auth_` in your schema or set `options.authRequired` to `false`.');
2342
2388
  }
2343
2389
  }
2344
- async process(requestMessageBytes, overrideHeaders = {}) {
2345
- return await processBytes(requestMessageBytes, overrideHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.handler);
2390
+ async process(requestMessageBytes, updateHeaders) {
2391
+ return await processBytes(requestMessageBytes, updateHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.middleware, this.functionRouter);
2346
2392
  }
2347
2393
  }
2348
2394
  class ServerOptions {
@@ -2350,6 +2396,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
2350
2396
  onRequest;
2351
2397
  onResponse;
2352
2398
  onAuth;
2399
+ middleware;
2353
2400
  authRequired;
2354
2401
  serialization;
2355
2402
  constructor() {
@@ -2357,6 +2404,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
2357
2404
  this.onRequest = (m) => { };
2358
2405
  this.onResponse = (m) => { };
2359
2406
  this.onAuth = (headers) => ({});
2407
+ this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
2360
2408
  this.authRequired = true;
2361
2409
  this.serialization = new DefaultSerialization();
2362
2410
  }
@@ -2656,6 +2704,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
2656
2704
  {
2657
2705
  "///": "The server implementation raised an unknown error.",
2658
2706
  ErrorUnknown_: {
2707
+ caseId: "string"
2659
2708
  }
2660
2709
  },
2661
2710
  {
@@ -11833,8 +11882,10 @@ var Telepact = (function (exports, msgpackr, crc32) {
11833
11882
  const serverOptions = new ServerOptions();
11834
11883
  serverOptions.onError = options.onError;
11835
11884
  serverOptions.authRequired = false;
11885
+ serverOptions.middleware = async (requestMessage) => await this.handle(requestMessage);
11836
11886
  const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
11837
- this.server = new Server(telepactSchema, this.handle, serverOptions);
11887
+ const functionRouter = new FunctionRouter({});
11888
+ this.server = new Server(telepactSchema, functionRouter, serverOptions);
11838
11889
  }
11839
11890
  random;
11840
11891
  enableGeneratedDefaultStub;
@@ -12424,6 +12475,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
12424
12475
  exports.Client = Client;
12425
12476
  exports.ClientBinaryStrategy = ClientBinaryStrategy;
12426
12477
  exports.ClientOptions = ClientOptions;
12478
+ exports.FunctionRouter = FunctionRouter;
12427
12479
  exports.Message = Message;
12428
12480
  exports.MockServer = MockServer;
12429
12481
  exports.MockServerOptions = MockServerOptions;
@@ -14,7 +14,7 @@
14
14
  //| limitations under the License.
15
15
  //|
16
16
  import { TelepactSchema } from './TelepactSchema.js';
17
- import { Server, ServerOptions as ServerOptions } from './Server.js';
17
+ import { FunctionRouter, Server, ServerOptions as ServerOptions } from './Server.js';
18
18
  import { RandomGenerator } from './RandomGenerator.js';
19
19
  import { mockHandle } from './internal/mock/MockHandle.js';
20
20
  export class MockServer {
@@ -31,8 +31,10 @@ export class MockServer {
31
31
  const serverOptions = new ServerOptions();
32
32
  serverOptions.onError = options.onError;
33
33
  serverOptions.authRequired = false;
34
+ serverOptions.middleware = async (requestMessage) => await this.handle(requestMessage);
34
35
  const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
35
- this.server = new Server(telepactSchema, this.handle, serverOptions);
36
+ const functionRouter = new FunctionRouter({});
37
+ this.server = new Server(telepactSchema, functionRouter, serverOptions);
36
38
  }
37
39
  random;
38
40
  enableGeneratedDefaultStub;
@@ -1 +1 @@
1
- {"version":3,"file":"MockServer.js","sourceRoot":"","sources":["../../src/MockServer.ts"],"names":[],"mappings":"AAAA,GAAG;AACH,mCAAmC;AACnC,GAAG;AACH,oEAAoE;AACpE,qEAAqE;AACrE,4CAA4C;AAC5C,GAAG;AACH,gDAAgD;AAChD,GAAG;AACH,wEAAwE;AACxE,sEAAsE;AACtE,6EAA6E;AAC7E,wEAAwE;AACxE,mCAAmC;AACnC,GAAG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,MAAM,OAAO,UAAU;IACnB;;OAEG;IAEH,YAAY,kBAAsC,EAAE,OAA0B;QAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,4BAA4B,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC9G,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,+BAA+B,CAAC;QAC1E,IAAI,CAAC,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC;QAC3E,IAAI,CAAC,gCAAgC,GAAG,OAAO,CAAC,gCAAgC,CAAC;QAEjF,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACxC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;QAEnC,MAAM,cAAc,GAAG,IAAI,cAAc,CACrC,kBAAkB,CAAC,QAAQ,EAC3B,kBAAkB,CAAC,IAAI,EACvB,kBAAkB,CAAC,MAAM,EACzB,kBAAkB,CAAC,oBAAoB,EACvC,kBAAkB,CAAC,qBAAqB,CAC3C,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAkB;IACxB,0BAA0B,CAAU;IACpC,6BAA6B,CAAU;IACvC,gCAAgC,CAAU;IAC1C,KAAK,CAAa;IAClB,WAAW,CAAmB;IAC9B,MAAM,CAAS;IAEvB,KAAK,CAAC,OAAO,CAAC,OAAmB;QAC7B;;;;;WAKG;QACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,GAAG,KAAK,EAAE,cAAmB,EAAgB,EAAE;QACzD,OAAO,MAAM,UAAU,CACnB,cAAc,EACd,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,cAAc,EAC1B,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,6BAA6B,EAClC,IAAI,CAAC,gCAAgC,CACxC,CAAC;IACN,CAAC,CAAC;CACL;AAED,MAAM,OAAO,iBAAiB;IAC1B;;OAEG;IAEH,OAAO,GAA2B,CAAC,CAAC,EAAE,EAAE,GAAE,CAAC,CAAC;IAC5C,+BAA+B,GAAG,IAAI,CAAC;IACvC,6BAA6B,GAAG,IAAI,CAAC;IACrC,gCAAgC,GAAG,IAAI,CAAC;IACxC,4BAA4B,GAAG,CAAC,CAAC;IACjC,4BAA4B,GAAG,CAAC,CAAC;CACpC"}
1
+ {"version":3,"file":"MockServer.js","sourceRoot":"","sources":["../../src/MockServer.ts"],"names":[],"mappings":"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"}
@@ -3,22 +3,33 @@ import { Message } from './Message.js';
3
3
  import { TelepactSchema } from './TelepactSchema.js';
4
4
  import { Serialization } from './Serialization.js';
5
5
  import { Response } from './Response.js';
6
+ export type FunctionRoute = (functionName: string, requestMessage: Message) => Promise<Message>;
7
+ export type FunctionRoutes = Record<string, FunctionRoute>;
8
+ export type Middleware = (requestMessage: Message, functionRouter: FunctionRouter) => Promise<Message>;
9
+ export type UpdateHeaders = (headers: Record<string, any>) => void;
10
+ export declare class FunctionRouter {
11
+ functionRoutes: FunctionRoutes;
12
+ constructor(functionRoutes: FunctionRoutes);
13
+ route(requestMessage: Message): Promise<Message>;
14
+ }
6
15
  export declare class Server {
7
- handler: (message: Message) => Promise<Message>;
16
+ functionRouter: FunctionRouter;
17
+ middleware: Middleware;
8
18
  onError: (error: any) => void;
9
19
  onRequest: (message: Message) => void;
10
20
  onResponse: (message: Message) => void;
11
21
  onAuth: (headers: Record<string, any>) => Record<string, any>;
12
22
  telepactSchema: TelepactSchema;
13
23
  serializer: Serializer;
14
- constructor(telepactSchema: TelepactSchema, handler: (message: Message) => Promise<Message>, options: ServerOptions);
15
- process(requestMessageBytes: Uint8Array, overrideHeaders?: Record<string, any>): Promise<Response>;
24
+ constructor(telepactSchema: TelepactSchema, functionRouter: FunctionRouter, options: ServerOptions);
25
+ process(requestMessageBytes: Uint8Array, updateHeaders?: UpdateHeaders): Promise<Response>;
16
26
  }
17
27
  export declare class ServerOptions {
18
28
  onError: (error: any) => void;
19
29
  onRequest: (message: Message) => void;
20
30
  onResponse: (message: Message) => void;
21
31
  onAuth: (headers: Record<string, any>) => Record<string, any>;
32
+ middleware: Middleware;
22
33
  authRequired: boolean;
23
34
  serialization: Serialization;
24
35
  constructor();
@@ -19,16 +19,32 @@ import { ServerBinaryEncoder } from './internal/binary/ServerBinaryEncoder.js';
19
19
  import { constructBinaryEncoding } from './internal/binary/ConstructBinaryEncoding.js';
20
20
  import { processBytes } from './internal/ProcessBytes.js';
21
21
  import { ServerBase64Encoder } from './internal/binary/ServerBase64Encoder.js';
22
+ export class FunctionRouter {
23
+ functionRoutes;
24
+ constructor(functionRoutes) {
25
+ this.functionRoutes = functionRoutes;
26
+ }
27
+ async route(requestMessage) {
28
+ const functionName = requestMessage.getBodyTarget();
29
+ const functionRoute = this.functionRoutes[functionName];
30
+ if (functionRoute === undefined) {
31
+ throw new Error(`Unknown function: ${functionName}`);
32
+ }
33
+ return await functionRoute(functionName, requestMessage);
34
+ }
35
+ }
22
36
  export class Server {
23
- handler;
37
+ functionRouter;
38
+ middleware;
24
39
  onError;
25
40
  onRequest;
26
41
  onResponse;
27
42
  onAuth;
28
43
  telepactSchema;
29
44
  serializer;
30
- constructor(telepactSchema, handler, options) {
31
- this.handler = handler;
45
+ constructor(telepactSchema, functionRouter, options) {
46
+ this.functionRouter = functionRouter;
47
+ this.middleware = options.middleware;
32
48
  this.onError = options.onError;
33
49
  this.onRequest = options.onRequest;
34
50
  this.onResponse = options.onResponse;
@@ -42,8 +58,8 @@ export class Server {
42
58
  throw new Error('Unauthenticated server. Either define a `union.Auth_` in your schema or set `options.authRequired` to `false`.');
43
59
  }
44
60
  }
45
- async process(requestMessageBytes, overrideHeaders = {}) {
46
- return await processBytes(requestMessageBytes, overrideHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.handler);
61
+ async process(requestMessageBytes, updateHeaders) {
62
+ return await processBytes(requestMessageBytes, updateHeaders, this.serializer, this.telepactSchema, this.onError, this.onRequest, this.onResponse, this.onAuth, this.middleware, this.functionRouter);
47
63
  }
48
64
  }
49
65
  export class ServerOptions {
@@ -51,6 +67,7 @@ export class ServerOptions {
51
67
  onRequest;
52
68
  onResponse;
53
69
  onAuth;
70
+ middleware;
54
71
  authRequired;
55
72
  serialization;
56
73
  constructor() {
@@ -58,6 +75,7 @@ export class ServerOptions {
58
75
  this.onRequest = (m) => { };
59
76
  this.onResponse = (m) => { };
60
77
  this.onAuth = (headers) => ({});
78
+ this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
61
79
  this.authRequired = true;
62
80
  this.serialization = new DefaultSerialization();
63
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export type TelepactErrorKind = 'parse' | 'validation' | 'serialization' | 'transport' | 'handler';
2
2
  export declare class TelepactError extends Error {
3
3
  kind?: TelepactErrorKind;
4
+ caseId: string;
4
5
  cause?: Error;
5
6
  constructor(message: string, kind?: TelepactErrorKind, cause?: unknown);
6
7
  constructor(cause: unknown, kind?: TelepactErrorKind);
@@ -13,6 +13,28 @@
13
13
  //| See the License for the specific language governing permissions and
14
14
  //| limitations under the License.
15
15
  //|
16
+ function fillRandomValues(bytes) {
17
+ const cryptoObject = globalThis.crypto;
18
+ if (typeof cryptoObject?.getRandomValues === 'function') {
19
+ cryptoObject.getRandomValues(bytes);
20
+ return;
21
+ }
22
+ for (let i = 0; i < bytes.length; i += 1) {
23
+ bytes[i] = Math.floor(Math.random() * 256);
24
+ }
25
+ }
26
+ function createCaseId() {
27
+ const cryptoObject = globalThis.crypto;
28
+ if (typeof cryptoObject?.randomUUID === 'function') {
29
+ return cryptoObject.randomUUID();
30
+ }
31
+ const bytes = new Uint8Array(16);
32
+ fillRandomValues(bytes);
33
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
34
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
35
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
36
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
37
+ }
16
38
  function toError(error) {
17
39
  if (error instanceof Error) {
18
40
  return error;
@@ -27,6 +49,7 @@ function toError(error) {
27
49
  }
28
50
  export class TelepactError extends Error {
29
51
  kind;
52
+ caseId;
30
53
  cause;
31
54
  constructor(arg, kind, cause) {
32
55
  const resolvedCause = typeof arg === 'string' ? toError(cause) : toError(arg);
@@ -37,6 +60,7 @@ export class TelepactError extends Error {
37
60
  Object.setPrototypeOf(this, TelepactError.prototype);
38
61
  this.name = 'TelepactError';
39
62
  this.kind = kind;
63
+ this.caseId = createCaseId();
40
64
  this.cause = resolvedCause;
41
65
  if (resolvedCause?.stack) {
42
66
  this.stack = resolvedCause.stack;
@@ -1 +1 @@
1
- {"version":3,"file":"TelepactError.js","sourceRoot":"","sources":["../../src/TelepactError.ts"],"names":[],"mappings":"AAAA,GAAG;AACH,mCAAmC;AACnC,GAAG;AACH,oEAAoE;AACpE,qEAAqE;AACrE,4CAA4C;AAC5C,GAAG;AACH,gDAAgD;AAChD,GAAG;AACH,wEAAwE;AACxE,sEAAsE;AACtE,6EAA6E;AAC7E,wEAAwE;AACxE,mCAAmC;AACnC,GAAG;AAIH,SAAS,OAAO,CAAC,KAAc;IAC3B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IACpC,IAAI,CAAqB;IAChB,KAAK,CAAS;IAIvB,YAAY,GAAqB,EAAE,IAAwB,EAAE,KAAe;QACxE,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ;YACnC,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,aAAa,EAAE,OAAO,IAAI,gBAAgB,CAAC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;QAE3B,IAAI,aAAa,EAAE,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;QACrC,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"TelepactError.js","sourceRoot":"","sources":["../../src/TelepactError.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
1
  import { Message } from '../Message.js';
2
2
  import { TelepactSchema } from '../TelepactSchema.js';
3
- export declare function handleMessage(requestMessage: Message, overrideHeaders: Record<string, any>, telepactSchema: TelepactSchema, handler: (message: Message) => Promise<Message>, onError: (error: Error) => void, onAuth: (headers: Record<string, any>) => Record<string, any>): Promise<Message>;
3
+ import { UpdateHeaders } from '../Server.js';
4
+ export declare function handleMessage(requestMessage: Message, updateHeaders: UpdateHeaders | undefined, telepactSchema: TelepactSchema, middleware: (requestMessage: Message, functionRouter: {
5
+ route: (message: Message) => Promise<Message>;
6
+ }) => Promise<Message>, functionRouter: {
7
+ route: (message: Message) => Promise<Message>;
8
+ }, onError: (error: Error) => void, onAuth: (headers: Record<string, any>) => Record<string, any>): Promise<Message>;
@@ -24,13 +24,14 @@ import { ValidateContext } from './validation/ValidateContext.js';
24
24
  import { serverBase64Decode } from './binary/ServerBase64Decode.js';
25
25
  import { getApiDefinitionsWithExamples } from './GetApiDefinitionsWithExamples.js';
26
26
  import { TelepactError } from '../TelepactError.js';
27
- export async function handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth) {
27
+ import { buildUnknownErrorMessage } from './UnknownError.js';
28
+ export async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
28
29
  const responseHeaders = {};
29
30
  const requestHeaders = requestMessage.headers;
30
31
  const requestBody = requestMessage.body;
31
32
  const parsedTelepactSchema = telepactSchema.parsed;
32
33
  const requestEntry = Object.entries(requestBody)[0];
33
- Object.assign(requestHeaders, overrideHeaders);
34
+ updateHeaders?.(requestHeaders);
34
35
  const requestTargetInit = requestEntry[0];
35
36
  const requestPayload = requestEntry[1];
36
37
  let unknownTarget;
@@ -68,12 +69,13 @@ export async function handleMessage(requestMessage, overrideHeaders, telepactSch
68
69
  Object.assign(requestHeaders, authHeaders);
69
70
  }
70
71
  catch (error) {
72
+ const wrapped = new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error);
71
73
  try {
72
- onError(new TelepactError(`telepact auth handler failed while handling ${functionName}`, 'handler', error));
74
+ onError(wrapped);
73
75
  }
74
76
  catch (ignored) {
75
77
  }
76
- return new Message(responseHeaders, { ErrorUnknown_: {} });
78
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
77
79
  }
78
80
  }
79
81
  if ('@bin_' in requestHeaders) {
@@ -141,16 +143,17 @@ export async function handleMessage(requestMessage, overrideHeaders, telepactSch
141
143
  }
142
144
  else {
143
145
  try {
144
- resultMessage = await handler(callMessage);
146
+ resultMessage = await middleware(callMessage, functionRouter);
145
147
  }
146
148
  catch (e) {
149
+ const wrapped = new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e);
147
150
  try {
148
- onError(new TelepactError(`telepact handler failed while handling ${functionName}`, 'handler', e));
151
+ onError(wrapped);
149
152
  }
150
153
  catch (error) {
151
154
  // Ignore error
152
155
  }
153
- return new Message(responseHeaders, { ErrorUnknown_: {} });
156
+ return buildUnknownErrorMessage(wrapped, responseHeaders);
154
157
  }
155
158
  }
156
159
  const resultUnion = resultMessage.body;
@@ -1 +1 @@
1
- {"version":3,"file":"HandleMessage.js","sourceRoot":"","sources":["../../../src/internal/HandleMessage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleMessage.js","sourceRoot":"","sources":["../../../src/internal/HandleMessage.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,13 @@ import { Serializer } from '../Serializer.js';
2
2
  import { TelepactSchema } from '../TelepactSchema.js';
3
3
  import { Message } from '../Message.js';
4
4
  import { Response } from '../Response.js';
5
+ import { UpdateHeaders } from '../Server.js';
5
6
  export type ErrorHandler = (error: any) => void;
6
7
  export type RequestHandler = (message: Message) => void;
7
8
  export type ResponseHandler = (message: Message) => void;
8
9
  export type AuthHandler = (headers: Record<string, any>) => Record<string, any>;
9
- export type MessageHandler = (message: Message) => Promise<Message>;
10
- export declare function processBytes(requestMessageBytes: Uint8Array, overrideHeaders: Record<string, any>, serializer: Serializer, telepactSchema: TelepactSchema, onError: ErrorHandler, onRequest: RequestHandler, onResponse: ResponseHandler, onAuth: AuthHandler, handler: MessageHandler): Promise<Response>;
10
+ export type FunctionRouter = {
11
+ route: (message: Message) => Promise<Message>;
12
+ };
13
+ export type Middleware = (requestMessage: Message, functionRouter: FunctionRouter) => Promise<Message>;
14
+ export declare function processBytes(requestMessageBytes: Uint8Array, updateHeaders: UpdateHeaders | undefined, serializer: Serializer, telepactSchema: TelepactSchema, onError: ErrorHandler, onRequest: RequestHandler, onResponse: ResponseHandler, onAuth: AuthHandler, middleware: Middleware, functionRouter: FunctionRouter): Promise<Response>;
@@ -13,12 +13,12 @@
13
13
  //| See the License for the specific language governing permissions and
14
14
  //| limitations under the License.
15
15
  //|
16
- import { Message } from '../Message.js';
17
16
  import { handleMessage } from '../internal/HandleMessage.js';
18
17
  import { parseRequestMessage } from '../internal/ParseRequestMessage.js';
19
18
  import { SerializationError } from '../SerializationError.js';
20
19
  import { TelepactError } from '../TelepactError.js';
21
- export async function processBytes(requestMessageBytes, overrideHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, handler) {
20
+ import { buildUnknownErrorMessage } from './UnknownError.js';
21
+ export async function processBytes(requestMessageBytes, updateHeaders, serializer, telepactSchema, onError, onRequest, onResponse, onAuth, middleware, functionRouter) {
22
22
  try {
23
23
  const requestMessage = parseRequestMessage(requestMessageBytes, serializer, telepactSchema, onError);
24
24
  try {
@@ -27,7 +27,7 @@ export async function processBytes(requestMessageBytes, overrideHeaders, seriali
27
27
  catch (error) {
28
28
  // Handle error
29
29
  }
30
- const responseMessage = await handleMessage(requestMessage, overrideHeaders, telepactSchema, handler, onError, onAuth);
30
+ const responseMessage = await handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth);
31
31
  try {
32
32
  onResponse(responseMessage);
33
33
  }
@@ -48,7 +48,7 @@ export async function processBytes(requestMessageBytes, overrideHeaders, seriali
48
48
  catch (error) {
49
49
  // Handle error
50
50
  }
51
- const unknownResponseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
51
+ const unknownResponseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
52
52
  return { bytes: unknownResponseBytes, headers: {} };
53
53
  }
54
54
  return { bytes: responseBytes, headers: responseMessage.headers };
@@ -65,7 +65,7 @@ export async function processBytes(requestMessageBytes, overrideHeaders, seriali
65
65
  catch (error) {
66
66
  // Handle error
67
67
  }
68
- const responseBytes = serializer.serialize(new Message({}, { ErrorUnknown_: {} }));
68
+ const responseBytes = serializer.serialize(buildUnknownErrorMessage(wrapped));
69
69
  return { bytes: responseBytes, headers: {} };
70
70
  }
71
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessBytes.js","sourceRoot":"","sources":["../../../src/internal/ProcessBytes.ts"],"names":[],"mappings":"AAAA,GAAG;AACH,mCAAmC;AACnC,GAAG;AACH,oEAAoE;AACpE,qEAAqE;AACrE,4CAA4C;AAC5C,GAAG;AACH,gDAAgD;AAChD,GAAG;AACH,wEAAwE;AACxE,sEAAsE;AACtE,6EAA6E;AAC7E,wEAAwE;AACxE,mCAAmC;AACnC,GAAG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,mBAA+B,EAC/B,eAAoC,EACpC,UAAsB,EACtB,cAA8B,EAC9B,OAAqB,EACrB,SAAyB,EACzB,UAA2B,EAC3B,MAAmB,EACnB,OAAuB;IAEvB,IAAI,CAAC;QACD,MAAM,cAAc,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAErG,IAAI,CAAC;YACD,SAAS,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAe;QACnB,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEvH,IAAI,CAAC;YACD,UAAU,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAe;QACnB,CAAC;QAED,IAAI,aAAyB,CAAC;QAC9B,IAAI,CAAC;YACD,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,KAAK,YAAY,kBAAkB;gBAC/C,CAAC,CAAC,IAAI,aAAa,CAAC,wCAAwC,EAAE,eAAe,EAAE,KAAK,CAAC;gBACrF,CAAC,CAAC,IAAI,aAAa,CAAC,kEAAkE,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;YACpH,IAAI,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,eAAe;YACnB,CAAC;YACD,MAAM,oBAAoB,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC1F,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACxD,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,KAAK,YAAY,aAAa;YAC1C,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,YAAY,kBAAkB;gBACjC,CAAC,CAAC,IAAI,aAAa,CAAC,wCAAwC,EAAE,eAAe,EAAE,KAAK,CAAC;gBACrF,CAAC,CAAC,IAAI,aAAa,CAAC,mCAAmC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAe;QACnB,CAAC;QAED,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEnF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"ProcessBytes.js","sourceRoot":"","sources":["../../../src/internal/ProcessBytes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Message } from '../Message.js';
2
+ import { TelepactError } from '../TelepactError.js';
3
+ export declare function buildUnknownErrorMessage(error: TelepactError, headers?: Record<string, any>): Message;
@@ -0,0 +1,20 @@
1
+ //|
2
+ //| Copyright The Telepact Authors
3
+ //|
4
+ //| Licensed under the Apache License, Version 2.0 (the "License");
5
+ //| you may not use this file except in compliance with the License.
6
+ //| You may obtain a copy of the License at
7
+ //|
8
+ //| https://www.apache.org/licenses/LICENSE-2.0
9
+ //|
10
+ //| Unless required by applicable law or agreed to in writing, software
11
+ //| distributed under the License is distributed on an "AS IS" BASIS,
12
+ //| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ //| See the License for the specific language governing permissions and
14
+ //| limitations under the License.
15
+ //|
16
+ import { Message } from '../Message.js';
17
+ export function buildUnknownErrorMessage(error, headers = {}) {
18
+ return new Message(headers, { ErrorUnknown_: { caseId: error.caseId } });
19
+ }
20
+ //# sourceMappingURL=UnknownError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnknownError.js","sourceRoot":"","sources":["../../../src/internal/UnknownError.ts"],"names":[],"mappings":"AAAA,GAAG;AACH,mCAAmC;AACnC,GAAG;AACH,oEAAoE;AACpE,qEAAqE;AACrE,4CAA4C;AAC5C,GAAG;AACH,gDAAgD;AAChD,GAAG;AACH,wEAAwE;AACxE,sEAAsE;AACtE,6EAA6E;AAC7E,wEAAwE;AACxE,mCAAmC;AACnC,GAAG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,MAAM,UAAU,wBAAwB,CAAC,KAAoB,EAAE,UAA+B,EAAE;IAC5F,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "telepact",
3
- "version": "1.0.0-alpha.241",
3
+ "version": "1.0.0-alpha.260",
4
4
  "description": "The Typescript Telepact library",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -57,4 +57,4 @@
57
57
  "LICENSE",
58
58
  "NOTICE"
59
59
  ]
60
- }
60
+ }