telepact 1.0.0-alpha.334 → 1.0.0-alpha.338
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 +2 -2
- package/dist/index.cjs.js +50 -19
- package/dist/index.esm.js +50 -19
- package/dist/index.iife.js +50 -19
- package/dist/src/FunctionRouter.d.ts +7 -2
- package/dist/src/FunctionRouter.js +25 -4
- package/dist/src/FunctionRouter.js.map +1 -1
- package/dist/src/MockServer.js +2 -2
- package/dist/src/MockServer.js.map +1 -1
- package/dist/src/Server.d.ts +0 -1
- package/dist/src/Server.js +7 -9
- package/dist/src/Server.js.map +1 -1
- package/dist/src/internal/HandleMessage.d.ts +2 -5
- package/dist/src/internal/HandleMessage.js +16 -4
- package/dist/src/internal/HandleMessage.js.map +1 -1
- package/dist/src/internal/ProcessBytes.d.ts +1 -0
- package/dist/src/internal/ProcessBytes.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,6 @@ const functionRoutes = {
|
|
|
39
39
|
|
|
40
40
|
const options = new ServerOptions();
|
|
41
41
|
// Set this to false when your schema does not define union.Auth_.
|
|
42
|
-
options.authRequired = false;
|
|
43
42
|
options.middleware = async (requestMessage: Message, functionRouter): Promise<Message> => {
|
|
44
43
|
const functionName = requestMessage.getBodyTarget();
|
|
45
44
|
try {
|
|
@@ -49,7 +48,8 @@ options.middleware = async (requestMessage: Message, functionRouter): Promise<Me
|
|
|
49
48
|
log.info("Function finished", {function: functionName});
|
|
50
49
|
}
|
|
51
50
|
};
|
|
52
|
-
const functionRouter = new FunctionRouter(
|
|
51
|
+
const functionRouter = new FunctionRouter();
|
|
52
|
+
functionRouter.registerUnauthenticatedRoutes(functionRoutes);
|
|
53
53
|
const server = new Server(schema, functionRouter, options);
|
|
54
54
|
|
|
55
55
|
// Wire up request/response bytes from your transport of choice
|
package/dist/index.cjs.js
CHANGED
|
@@ -1100,13 +1100,34 @@ class ClientOptions {
|
|
|
1100
1100
|
}
|
|
1101
1101
|
|
|
1102
1102
|
class FunctionRouter {
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1103
|
+
authenticatedFunctionRoutes;
|
|
1104
|
+
unauthenticatedFunctionRoutes;
|
|
1105
|
+
constructor() {
|
|
1106
|
+
this.authenticatedFunctionRoutes = {};
|
|
1107
|
+
this.unauthenticatedFunctionRoutes = {};
|
|
1108
|
+
}
|
|
1109
|
+
registerAuthenticatedRoutes(functionRoutes) {
|
|
1110
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
1111
|
+
this.authenticatedFunctionRoutes[functionName] = functionRoute;
|
|
1112
|
+
delete this.unauthenticatedFunctionRoutes[functionName];
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
registerUnauthenticatedRoutes(functionRoutes) {
|
|
1116
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
1117
|
+
this.unauthenticatedFunctionRoutes[functionName] = functionRoute;
|
|
1118
|
+
delete this.authenticatedFunctionRoutes[functionName];
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
hasAuthenticatedRoutes() {
|
|
1122
|
+
return Object.keys(this.authenticatedFunctionRoutes).length > 0;
|
|
1123
|
+
}
|
|
1124
|
+
requiresAuthentication(functionName) {
|
|
1125
|
+
return functionName in this.authenticatedFunctionRoutes;
|
|
1106
1126
|
}
|
|
1107
1127
|
async route(requestMessage) {
|
|
1108
1128
|
const functionName = requestMessage.getBodyTarget();
|
|
1109
|
-
const functionRoute = this.
|
|
1129
|
+
const functionRoute = this.authenticatedFunctionRoutes[functionName]
|
|
1130
|
+
?? this.unauthenticatedFunctionRoutes[functionName];
|
|
1110
1131
|
if (functionRoute === undefined) {
|
|
1111
1132
|
throw new Error(`Unknown function: ${functionName}`);
|
|
1112
1133
|
}
|
|
@@ -1853,7 +1874,7 @@ function buildUnknownErrorMessage(error, headers = {}) {
|
|
|
1853
1874
|
return new Message(headers, { ErrorUnknown_: { caseId: error.caseId } });
|
|
1854
1875
|
}
|
|
1855
1876
|
|
|
1856
|
-
const
|
|
1877
|
+
const UNAUTHENTICATED_MESSAGE = 'Valid authentication is required.';
|
|
1857
1878
|
async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
|
|
1858
1879
|
const responseHeaders = {};
|
|
1859
1880
|
const requestHeaders = requestMessage.headers;
|
|
@@ -1863,7 +1884,6 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1863
1884
|
updateHeaders?.(requestHeaders);
|
|
1864
1885
|
const requestTargetInit = requestEntry[0];
|
|
1865
1886
|
const requestPayload = requestEntry[1];
|
|
1866
|
-
const bypassAuthForFunction = INTERNAL_FUNCTIONS_BYPASSING_AUTH.has(requestTargetInit);
|
|
1867
1887
|
let unknownTarget;
|
|
1868
1888
|
let requestTarget;
|
|
1869
1889
|
if (!(requestTargetInit in parsedTelepactSchema)) {
|
|
@@ -1877,6 +1897,7 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1877
1897
|
const functionName = requestTarget;
|
|
1878
1898
|
const callType = parsedTelepactSchema[requestTarget];
|
|
1879
1899
|
const resultUnionType = parsedTelepactSchema[`${requestTarget}.->`];
|
|
1900
|
+
const requiresAuthentication = unknownTarget === null && functionRouter.requiresAuthentication(functionName);
|
|
1880
1901
|
const callId = requestHeaders['@id_'];
|
|
1881
1902
|
if (callId !== undefined) {
|
|
1882
1903
|
responseHeaders['@id_'] = callId;
|
|
@@ -1893,7 +1914,10 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1893
1914
|
if (requestHeaderValidationFailures.length > 0) {
|
|
1894
1915
|
return getInvalidErrorMessage('ErrorInvalidRequestHeaders_', requestHeaderValidationFailures, resultUnionType, responseHeaders);
|
|
1895
1916
|
}
|
|
1896
|
-
if ('@auth_' in requestHeaders
|
|
1917
|
+
if (requiresAuthentication && !('@auth_' in requestHeaders)) {
|
|
1918
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
1919
|
+
}
|
|
1920
|
+
if (requiresAuthentication) {
|
|
1897
1921
|
try {
|
|
1898
1922
|
const authHeaders = (await onAuth(requestHeaders)) ?? {};
|
|
1899
1923
|
Object.assign(requestHeaders, authHeaders);
|
|
@@ -1905,7 +1929,7 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1905
1929
|
}
|
|
1906
1930
|
catch (ignored) {
|
|
1907
1931
|
}
|
|
1908
|
-
return
|
|
1932
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
1909
1933
|
}
|
|
1910
1934
|
}
|
|
1911
1935
|
if ('@bin_' in requestHeaders) {
|
|
@@ -1916,6 +1940,15 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1916
1940
|
responseHeaders['@pac_'] = requestHeaders['@pac_'];
|
|
1917
1941
|
}
|
|
1918
1942
|
}
|
|
1943
|
+
function buildUnauthenticatedErrorMessage(resultUnionType, headers) {
|
|
1944
|
+
const result = {
|
|
1945
|
+
ErrorUnauthenticated_: {
|
|
1946
|
+
'message!': UNAUTHENTICATED_MESSAGE,
|
|
1947
|
+
},
|
|
1948
|
+
};
|
|
1949
|
+
validateResult(resultUnionType, result);
|
|
1950
|
+
return new Message(headers, result);
|
|
1951
|
+
}
|
|
1919
1952
|
const selectStructFieldsHeader = requestHeaders['@select_'] || null;
|
|
1920
1953
|
if (unknownTarget !== null) {
|
|
1921
1954
|
const newErrorResult = {
|
|
@@ -2379,11 +2412,11 @@ class Server {
|
|
|
2379
2412
|
telepactSchema;
|
|
2380
2413
|
serializer;
|
|
2381
2414
|
constructor(telepactSchema, functionRouter, options) {
|
|
2382
|
-
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter(
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2415
|
+
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter();
|
|
2416
|
+
if (!(functionRouter instanceof FunctionRouter)) {
|
|
2417
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(functionRouter);
|
|
2418
|
+
}
|
|
2419
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(createInternalFunctionRoutes(telepactSchema));
|
|
2387
2420
|
this.functionRouter = normalizedFunctionRouter;
|
|
2388
2421
|
this.middleware = options.middleware;
|
|
2389
2422
|
this.onError = options.onError;
|
|
@@ -2395,8 +2428,8 @@ class Server {
|
|
|
2395
2428
|
const binaryEncoder = new ServerBinaryEncoder(binaryEncoding);
|
|
2396
2429
|
const base64Encoder = new ServerBase64Encoder();
|
|
2397
2430
|
this.serializer = new Serializer(options.serialization, binaryEncoder, base64Encoder);
|
|
2398
|
-
if (!('union.Auth_' in this.telepactSchema.parsed) &&
|
|
2399
|
-
throw new Error('
|
|
2431
|
+
if (!('union.Auth_' in this.telepactSchema.parsed) && this.functionRouter.hasAuthenticatedRoutes()) {
|
|
2432
|
+
throw new Error('Authenticated routes require `union.Auth_` in your schema.');
|
|
2400
2433
|
}
|
|
2401
2434
|
}
|
|
2402
2435
|
async process(requestMessageBytes, updateHeaders) {
|
|
@@ -2409,7 +2442,6 @@ class ServerOptions {
|
|
|
2409
2442
|
onResponse;
|
|
2410
2443
|
onAuth;
|
|
2411
2444
|
middleware;
|
|
2412
|
-
authRequired;
|
|
2413
2445
|
serialization;
|
|
2414
2446
|
constructor() {
|
|
2415
2447
|
this.onError = (_error) => { };
|
|
@@ -2417,7 +2449,6 @@ class ServerOptions {
|
|
|
2417
2449
|
this.onResponse = (m) => { };
|
|
2418
2450
|
this.onAuth = (headers) => ({});
|
|
2419
2451
|
this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
|
|
2420
|
-
this.authRequired = true;
|
|
2421
2452
|
this.serialization = new DefaultSerialization();
|
|
2422
2453
|
}
|
|
2423
2454
|
}
|
|
@@ -11908,9 +11939,9 @@ class MockServer {
|
|
|
11908
11939
|
this.invocations = [];
|
|
11909
11940
|
const serverOptions = new ServerOptions();
|
|
11910
11941
|
serverOptions.onError = options.onError;
|
|
11911
|
-
serverOptions.authRequired = false;
|
|
11912
11942
|
const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
|
|
11913
|
-
const functionRouter = new FunctionRouter(
|
|
11943
|
+
const functionRouter = new FunctionRouter();
|
|
11944
|
+
functionRouter.registerUnauthenticatedRoutes(this.createFunctionRoutes(telepactSchema));
|
|
11914
11945
|
this.server = new Server(telepactSchema, functionRouter, serverOptions);
|
|
11915
11946
|
}
|
|
11916
11947
|
random;
|
package/dist/index.esm.js
CHANGED
|
@@ -1098,13 +1098,34 @@ class ClientOptions {
|
|
|
1098
1098
|
}
|
|
1099
1099
|
|
|
1100
1100
|
class FunctionRouter {
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1101
|
+
authenticatedFunctionRoutes;
|
|
1102
|
+
unauthenticatedFunctionRoutes;
|
|
1103
|
+
constructor() {
|
|
1104
|
+
this.authenticatedFunctionRoutes = {};
|
|
1105
|
+
this.unauthenticatedFunctionRoutes = {};
|
|
1106
|
+
}
|
|
1107
|
+
registerAuthenticatedRoutes(functionRoutes) {
|
|
1108
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
1109
|
+
this.authenticatedFunctionRoutes[functionName] = functionRoute;
|
|
1110
|
+
delete this.unauthenticatedFunctionRoutes[functionName];
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
registerUnauthenticatedRoutes(functionRoutes) {
|
|
1114
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
1115
|
+
this.unauthenticatedFunctionRoutes[functionName] = functionRoute;
|
|
1116
|
+
delete this.authenticatedFunctionRoutes[functionName];
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
hasAuthenticatedRoutes() {
|
|
1120
|
+
return Object.keys(this.authenticatedFunctionRoutes).length > 0;
|
|
1121
|
+
}
|
|
1122
|
+
requiresAuthentication(functionName) {
|
|
1123
|
+
return functionName in this.authenticatedFunctionRoutes;
|
|
1104
1124
|
}
|
|
1105
1125
|
async route(requestMessage) {
|
|
1106
1126
|
const functionName = requestMessage.getBodyTarget();
|
|
1107
|
-
const functionRoute = this.
|
|
1127
|
+
const functionRoute = this.authenticatedFunctionRoutes[functionName]
|
|
1128
|
+
?? this.unauthenticatedFunctionRoutes[functionName];
|
|
1108
1129
|
if (functionRoute === undefined) {
|
|
1109
1130
|
throw new Error(`Unknown function: ${functionName}`);
|
|
1110
1131
|
}
|
|
@@ -1851,7 +1872,7 @@ function buildUnknownErrorMessage(error, headers = {}) {
|
|
|
1851
1872
|
return new Message(headers, { ErrorUnknown_: { caseId: error.caseId } });
|
|
1852
1873
|
}
|
|
1853
1874
|
|
|
1854
|
-
const
|
|
1875
|
+
const UNAUTHENTICATED_MESSAGE = 'Valid authentication is required.';
|
|
1855
1876
|
async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
|
|
1856
1877
|
const responseHeaders = {};
|
|
1857
1878
|
const requestHeaders = requestMessage.headers;
|
|
@@ -1861,7 +1882,6 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1861
1882
|
updateHeaders?.(requestHeaders);
|
|
1862
1883
|
const requestTargetInit = requestEntry[0];
|
|
1863
1884
|
const requestPayload = requestEntry[1];
|
|
1864
|
-
const bypassAuthForFunction = INTERNAL_FUNCTIONS_BYPASSING_AUTH.has(requestTargetInit);
|
|
1865
1885
|
let unknownTarget;
|
|
1866
1886
|
let requestTarget;
|
|
1867
1887
|
if (!(requestTargetInit in parsedTelepactSchema)) {
|
|
@@ -1875,6 +1895,7 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1875
1895
|
const functionName = requestTarget;
|
|
1876
1896
|
const callType = parsedTelepactSchema[requestTarget];
|
|
1877
1897
|
const resultUnionType = parsedTelepactSchema[`${requestTarget}.->`];
|
|
1898
|
+
const requiresAuthentication = unknownTarget === null && functionRouter.requiresAuthentication(functionName);
|
|
1878
1899
|
const callId = requestHeaders['@id_'];
|
|
1879
1900
|
if (callId !== undefined) {
|
|
1880
1901
|
responseHeaders['@id_'] = callId;
|
|
@@ -1891,7 +1912,10 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1891
1912
|
if (requestHeaderValidationFailures.length > 0) {
|
|
1892
1913
|
return getInvalidErrorMessage('ErrorInvalidRequestHeaders_', requestHeaderValidationFailures, resultUnionType, responseHeaders);
|
|
1893
1914
|
}
|
|
1894
|
-
if ('@auth_' in requestHeaders
|
|
1915
|
+
if (requiresAuthentication && !('@auth_' in requestHeaders)) {
|
|
1916
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
1917
|
+
}
|
|
1918
|
+
if (requiresAuthentication) {
|
|
1895
1919
|
try {
|
|
1896
1920
|
const authHeaders = (await onAuth(requestHeaders)) ?? {};
|
|
1897
1921
|
Object.assign(requestHeaders, authHeaders);
|
|
@@ -1903,7 +1927,7 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1903
1927
|
}
|
|
1904
1928
|
catch (ignored) {
|
|
1905
1929
|
}
|
|
1906
|
-
return
|
|
1930
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
1907
1931
|
}
|
|
1908
1932
|
}
|
|
1909
1933
|
if ('@bin_' in requestHeaders) {
|
|
@@ -1914,6 +1938,15 @@ async function handleMessage(requestMessage, updateHeaders, telepactSchema, midd
|
|
|
1914
1938
|
responseHeaders['@pac_'] = requestHeaders['@pac_'];
|
|
1915
1939
|
}
|
|
1916
1940
|
}
|
|
1941
|
+
function buildUnauthenticatedErrorMessage(resultUnionType, headers) {
|
|
1942
|
+
const result = {
|
|
1943
|
+
ErrorUnauthenticated_: {
|
|
1944
|
+
'message!': UNAUTHENTICATED_MESSAGE,
|
|
1945
|
+
},
|
|
1946
|
+
};
|
|
1947
|
+
validateResult(resultUnionType, result);
|
|
1948
|
+
return new Message(headers, result);
|
|
1949
|
+
}
|
|
1917
1950
|
const selectStructFieldsHeader = requestHeaders['@select_'] || null;
|
|
1918
1951
|
if (unknownTarget !== null) {
|
|
1919
1952
|
const newErrorResult = {
|
|
@@ -2377,11 +2410,11 @@ class Server {
|
|
|
2377
2410
|
telepactSchema;
|
|
2378
2411
|
serializer;
|
|
2379
2412
|
constructor(telepactSchema, functionRouter, options) {
|
|
2380
|
-
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter(
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2413
|
+
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter();
|
|
2414
|
+
if (!(functionRouter instanceof FunctionRouter)) {
|
|
2415
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(functionRouter);
|
|
2416
|
+
}
|
|
2417
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(createInternalFunctionRoutes(telepactSchema));
|
|
2385
2418
|
this.functionRouter = normalizedFunctionRouter;
|
|
2386
2419
|
this.middleware = options.middleware;
|
|
2387
2420
|
this.onError = options.onError;
|
|
@@ -2393,8 +2426,8 @@ class Server {
|
|
|
2393
2426
|
const binaryEncoder = new ServerBinaryEncoder(binaryEncoding);
|
|
2394
2427
|
const base64Encoder = new ServerBase64Encoder();
|
|
2395
2428
|
this.serializer = new Serializer(options.serialization, binaryEncoder, base64Encoder);
|
|
2396
|
-
if (!('union.Auth_' in this.telepactSchema.parsed) &&
|
|
2397
|
-
throw new Error('
|
|
2429
|
+
if (!('union.Auth_' in this.telepactSchema.parsed) && this.functionRouter.hasAuthenticatedRoutes()) {
|
|
2430
|
+
throw new Error('Authenticated routes require `union.Auth_` in your schema.');
|
|
2398
2431
|
}
|
|
2399
2432
|
}
|
|
2400
2433
|
async process(requestMessageBytes, updateHeaders) {
|
|
@@ -2407,7 +2440,6 @@ class ServerOptions {
|
|
|
2407
2440
|
onResponse;
|
|
2408
2441
|
onAuth;
|
|
2409
2442
|
middleware;
|
|
2410
|
-
authRequired;
|
|
2411
2443
|
serialization;
|
|
2412
2444
|
constructor() {
|
|
2413
2445
|
this.onError = (_error) => { };
|
|
@@ -2415,7 +2447,6 @@ class ServerOptions {
|
|
|
2415
2447
|
this.onResponse = (m) => { };
|
|
2416
2448
|
this.onAuth = (headers) => ({});
|
|
2417
2449
|
this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
|
|
2418
|
-
this.authRequired = true;
|
|
2419
2450
|
this.serialization = new DefaultSerialization();
|
|
2420
2451
|
}
|
|
2421
2452
|
}
|
|
@@ -11906,9 +11937,9 @@ class MockServer {
|
|
|
11906
11937
|
this.invocations = [];
|
|
11907
11938
|
const serverOptions = new ServerOptions();
|
|
11908
11939
|
serverOptions.onError = options.onError;
|
|
11909
|
-
serverOptions.authRequired = false;
|
|
11910
11940
|
const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
|
|
11911
|
-
const functionRouter = new FunctionRouter(
|
|
11941
|
+
const functionRouter = new FunctionRouter();
|
|
11942
|
+
functionRouter.registerUnauthenticatedRoutes(this.createFunctionRoutes(telepactSchema));
|
|
11912
11943
|
this.server = new Server(telepactSchema, functionRouter, serverOptions);
|
|
11913
11944
|
}
|
|
11914
11945
|
random;
|
package/dist/index.iife.js
CHANGED
|
@@ -1098,13 +1098,34 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
1098
1098
|
}
|
|
1099
1099
|
|
|
1100
1100
|
class FunctionRouter {
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1101
|
+
authenticatedFunctionRoutes;
|
|
1102
|
+
unauthenticatedFunctionRoutes;
|
|
1103
|
+
constructor() {
|
|
1104
|
+
this.authenticatedFunctionRoutes = {};
|
|
1105
|
+
this.unauthenticatedFunctionRoutes = {};
|
|
1106
|
+
}
|
|
1107
|
+
registerAuthenticatedRoutes(functionRoutes) {
|
|
1108
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
1109
|
+
this.authenticatedFunctionRoutes[functionName] = functionRoute;
|
|
1110
|
+
delete this.unauthenticatedFunctionRoutes[functionName];
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
registerUnauthenticatedRoutes(functionRoutes) {
|
|
1114
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
1115
|
+
this.unauthenticatedFunctionRoutes[functionName] = functionRoute;
|
|
1116
|
+
delete this.authenticatedFunctionRoutes[functionName];
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
hasAuthenticatedRoutes() {
|
|
1120
|
+
return Object.keys(this.authenticatedFunctionRoutes).length > 0;
|
|
1121
|
+
}
|
|
1122
|
+
requiresAuthentication(functionName) {
|
|
1123
|
+
return functionName in this.authenticatedFunctionRoutes;
|
|
1104
1124
|
}
|
|
1105
1125
|
async route(requestMessage) {
|
|
1106
1126
|
const functionName = requestMessage.getBodyTarget();
|
|
1107
|
-
const functionRoute = this.
|
|
1127
|
+
const functionRoute = this.authenticatedFunctionRoutes[functionName]
|
|
1128
|
+
?? this.unauthenticatedFunctionRoutes[functionName];
|
|
1108
1129
|
if (functionRoute === undefined) {
|
|
1109
1130
|
throw new Error(`Unknown function: ${functionName}`);
|
|
1110
1131
|
}
|
|
@@ -1851,7 +1872,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
1851
1872
|
return new Message(headers, { ErrorUnknown_: { caseId: error.caseId } });
|
|
1852
1873
|
}
|
|
1853
1874
|
|
|
1854
|
-
const
|
|
1875
|
+
const UNAUTHENTICATED_MESSAGE = 'Valid authentication is required.';
|
|
1855
1876
|
async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
|
|
1856
1877
|
const responseHeaders = {};
|
|
1857
1878
|
const requestHeaders = requestMessage.headers;
|
|
@@ -1861,7 +1882,6 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
1861
1882
|
updateHeaders?.(requestHeaders);
|
|
1862
1883
|
const requestTargetInit = requestEntry[0];
|
|
1863
1884
|
const requestPayload = requestEntry[1];
|
|
1864
|
-
const bypassAuthForFunction = INTERNAL_FUNCTIONS_BYPASSING_AUTH.has(requestTargetInit);
|
|
1865
1885
|
let unknownTarget;
|
|
1866
1886
|
let requestTarget;
|
|
1867
1887
|
if (!(requestTargetInit in parsedTelepactSchema)) {
|
|
@@ -1875,6 +1895,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
1875
1895
|
const functionName = requestTarget;
|
|
1876
1896
|
const callType = parsedTelepactSchema[requestTarget];
|
|
1877
1897
|
const resultUnionType = parsedTelepactSchema[`${requestTarget}.->`];
|
|
1898
|
+
const requiresAuthentication = unknownTarget === null && functionRouter.requiresAuthentication(functionName);
|
|
1878
1899
|
const callId = requestHeaders['@id_'];
|
|
1879
1900
|
if (callId !== undefined) {
|
|
1880
1901
|
responseHeaders['@id_'] = callId;
|
|
@@ -1891,7 +1912,10 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
1891
1912
|
if (requestHeaderValidationFailures.length > 0) {
|
|
1892
1913
|
return getInvalidErrorMessage('ErrorInvalidRequestHeaders_', requestHeaderValidationFailures, resultUnionType, responseHeaders);
|
|
1893
1914
|
}
|
|
1894
|
-
if ('@auth_' in requestHeaders
|
|
1915
|
+
if (requiresAuthentication && !('@auth_' in requestHeaders)) {
|
|
1916
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
1917
|
+
}
|
|
1918
|
+
if (requiresAuthentication) {
|
|
1895
1919
|
try {
|
|
1896
1920
|
const authHeaders = (await onAuth(requestHeaders)) ?? {};
|
|
1897
1921
|
Object.assign(requestHeaders, authHeaders);
|
|
@@ -1903,7 +1927,7 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
1903
1927
|
}
|
|
1904
1928
|
catch (ignored) {
|
|
1905
1929
|
}
|
|
1906
|
-
return
|
|
1930
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
1907
1931
|
}
|
|
1908
1932
|
}
|
|
1909
1933
|
if ('@bin_' in requestHeaders) {
|
|
@@ -1914,6 +1938,15 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
1914
1938
|
responseHeaders['@pac_'] = requestHeaders['@pac_'];
|
|
1915
1939
|
}
|
|
1916
1940
|
}
|
|
1941
|
+
function buildUnauthenticatedErrorMessage(resultUnionType, headers) {
|
|
1942
|
+
const result = {
|
|
1943
|
+
ErrorUnauthenticated_: {
|
|
1944
|
+
'message!': UNAUTHENTICATED_MESSAGE,
|
|
1945
|
+
},
|
|
1946
|
+
};
|
|
1947
|
+
validateResult(resultUnionType, result);
|
|
1948
|
+
return new Message(headers, result);
|
|
1949
|
+
}
|
|
1917
1950
|
const selectStructFieldsHeader = requestHeaders['@select_'] || null;
|
|
1918
1951
|
if (unknownTarget !== null) {
|
|
1919
1952
|
const newErrorResult = {
|
|
@@ -2377,11 +2410,11 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
2377
2410
|
telepactSchema;
|
|
2378
2411
|
serializer;
|
|
2379
2412
|
constructor(telepactSchema, functionRouter, options) {
|
|
2380
|
-
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter(
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2413
|
+
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter();
|
|
2414
|
+
if (!(functionRouter instanceof FunctionRouter)) {
|
|
2415
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(functionRouter);
|
|
2416
|
+
}
|
|
2417
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(createInternalFunctionRoutes(telepactSchema));
|
|
2385
2418
|
this.functionRouter = normalizedFunctionRouter;
|
|
2386
2419
|
this.middleware = options.middleware;
|
|
2387
2420
|
this.onError = options.onError;
|
|
@@ -2393,8 +2426,8 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
2393
2426
|
const binaryEncoder = new ServerBinaryEncoder(binaryEncoding);
|
|
2394
2427
|
const base64Encoder = new ServerBase64Encoder();
|
|
2395
2428
|
this.serializer = new Serializer(options.serialization, binaryEncoder, base64Encoder);
|
|
2396
|
-
if (!('union.Auth_' in this.telepactSchema.parsed) &&
|
|
2397
|
-
throw new Error('
|
|
2429
|
+
if (!('union.Auth_' in this.telepactSchema.parsed) && this.functionRouter.hasAuthenticatedRoutes()) {
|
|
2430
|
+
throw new Error('Authenticated routes require `union.Auth_` in your schema.');
|
|
2398
2431
|
}
|
|
2399
2432
|
}
|
|
2400
2433
|
async process(requestMessageBytes, updateHeaders) {
|
|
@@ -2407,7 +2440,6 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
2407
2440
|
onResponse;
|
|
2408
2441
|
onAuth;
|
|
2409
2442
|
middleware;
|
|
2410
|
-
authRequired;
|
|
2411
2443
|
serialization;
|
|
2412
2444
|
constructor() {
|
|
2413
2445
|
this.onError = (_error) => { };
|
|
@@ -2415,7 +2447,6 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
2415
2447
|
this.onResponse = (m) => { };
|
|
2416
2448
|
this.onAuth = (headers) => ({});
|
|
2417
2449
|
this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
|
|
2418
|
-
this.authRequired = true;
|
|
2419
2450
|
this.serialization = new DefaultSerialization();
|
|
2420
2451
|
}
|
|
2421
2452
|
}
|
|
@@ -11906,9 +11937,9 @@ var Telepact = (function (exports, msgpackr, crc32) {
|
|
|
11906
11937
|
this.invocations = [];
|
|
11907
11938
|
const serverOptions = new ServerOptions();
|
|
11908
11939
|
serverOptions.onError = options.onError;
|
|
11909
|
-
serverOptions.authRequired = false;
|
|
11910
11940
|
const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
|
|
11911
|
-
const functionRouter = new FunctionRouter(
|
|
11941
|
+
const functionRouter = new FunctionRouter();
|
|
11942
|
+
functionRouter.registerUnauthenticatedRoutes(this.createFunctionRoutes(telepactSchema));
|
|
11912
11943
|
this.server = new Server(telepactSchema, functionRouter, serverOptions);
|
|
11913
11944
|
}
|
|
11914
11945
|
random;
|
|
@@ -2,7 +2,12 @@ import { Message } from './Message.js';
|
|
|
2
2
|
export type FunctionRoute = (functionName: string, requestMessage: Message) => Promise<Message>;
|
|
3
3
|
export type FunctionRoutes = Record<string, FunctionRoute>;
|
|
4
4
|
export declare class FunctionRouter {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
authenticatedFunctionRoutes: FunctionRoutes;
|
|
6
|
+
unauthenticatedFunctionRoutes: FunctionRoutes;
|
|
7
|
+
constructor();
|
|
8
|
+
registerAuthenticatedRoutes(functionRoutes: FunctionRoutes): void;
|
|
9
|
+
registerUnauthenticatedRoutes(functionRoutes: FunctionRoutes): void;
|
|
10
|
+
hasAuthenticatedRoutes(): boolean;
|
|
11
|
+
requiresAuthentication(functionName: string): boolean;
|
|
7
12
|
route(requestMessage: Message): Promise<Message>;
|
|
8
13
|
}
|
|
@@ -14,13 +14,34 @@
|
|
|
14
14
|
//| limitations under the License.
|
|
15
15
|
//|
|
|
16
16
|
export class FunctionRouter {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
authenticatedFunctionRoutes;
|
|
18
|
+
unauthenticatedFunctionRoutes;
|
|
19
|
+
constructor() {
|
|
20
|
+
this.authenticatedFunctionRoutes = {};
|
|
21
|
+
this.unauthenticatedFunctionRoutes = {};
|
|
22
|
+
}
|
|
23
|
+
registerAuthenticatedRoutes(functionRoutes) {
|
|
24
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
25
|
+
this.authenticatedFunctionRoutes[functionName] = functionRoute;
|
|
26
|
+
delete this.unauthenticatedFunctionRoutes[functionName];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
registerUnauthenticatedRoutes(functionRoutes) {
|
|
30
|
+
for (const [functionName, functionRoute] of Object.entries(functionRoutes)) {
|
|
31
|
+
this.unauthenticatedFunctionRoutes[functionName] = functionRoute;
|
|
32
|
+
delete this.authenticatedFunctionRoutes[functionName];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
hasAuthenticatedRoutes() {
|
|
36
|
+
return Object.keys(this.authenticatedFunctionRoutes).length > 0;
|
|
37
|
+
}
|
|
38
|
+
requiresAuthentication(functionName) {
|
|
39
|
+
return functionName in this.authenticatedFunctionRoutes;
|
|
20
40
|
}
|
|
21
41
|
async route(requestMessage) {
|
|
22
42
|
const functionName = requestMessage.getBodyTarget();
|
|
23
|
-
const functionRoute = this.
|
|
43
|
+
const functionRoute = this.authenticatedFunctionRoutes[functionName]
|
|
44
|
+
?? this.unauthenticatedFunctionRoutes[functionName];
|
|
24
45
|
if (functionRoute === undefined) {
|
|
25
46
|
throw new Error(`Unknown function: ${functionName}`);
|
|
26
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionRouter.js","sourceRoot":"","sources":["../../src/FunctionRouter.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;AAOH,MAAM,OAAO,cAAc;IACvB,
|
|
1
|
+
{"version":3,"file":"FunctionRouter.js","sourceRoot":"","sources":["../../src/FunctionRouter.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;AAOH,MAAM,OAAO,cAAc;IACvB,2BAA2B,CAAiB;IAC5C,6BAA6B,CAAiB;IAE9C;QACI,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,2BAA2B,CAAC,cAA8B;QACtD,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;YAC/D,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAED,6BAA6B,CAAC,cAA8B;QACxD,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;YACjE,OAAO,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAED,sBAAsB;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,sBAAsB,CAAC,YAAoB;QACvC,OAAO,YAAY,IAAI,IAAI,CAAC,2BAA2B,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,cAAuB;QAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC;eAC7D,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,MAAM,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC7D,CAAC;CACJ"}
|
package/dist/src/MockServer.js
CHANGED
|
@@ -30,9 +30,9 @@ export class MockServer {
|
|
|
30
30
|
this.invocations = [];
|
|
31
31
|
const serverOptions = new ServerOptions();
|
|
32
32
|
serverOptions.onError = options.onError;
|
|
33
|
-
serverOptions.authRequired = false;
|
|
34
33
|
const telepactSchema = new TelepactSchema(mockTelepactSchema.original, mockTelepactSchema.full, mockTelepactSchema.parsed, mockTelepactSchema.parsedRequestHeaders, mockTelepactSchema.parsedResponseHeaders);
|
|
35
|
-
const functionRouter = new FunctionRouter(
|
|
34
|
+
const functionRouter = new FunctionRouter();
|
|
35
|
+
functionRouter.registerUnauthenticatedRoutes(this.createFunctionRoutes(telepactSchema));
|
|
36
36
|
this.server = new Server(telepactSchema, functionRouter, serverOptions);
|
|
37
37
|
}
|
|
38
38
|
random;
|
|
@@ -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,cAAc,EAAkB,MAAM,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACH,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,8BAA8B,GACjC,MAAM,+BAA+B,CAAC;AAKvC,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;
|
|
1
|
+
{"version":3,"file":"MockServer.js","sourceRoot":"","sources":["../../src/MockServer.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Server.d.ts
CHANGED
package/dist/src/Server.js
CHANGED
|
@@ -32,11 +32,11 @@ export class Server {
|
|
|
32
32
|
telepactSchema;
|
|
33
33
|
serializer;
|
|
34
34
|
constructor(telepactSchema, functionRouter, options) {
|
|
35
|
-
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
const normalizedFunctionRouter = functionRouter instanceof FunctionRouter ? functionRouter : new FunctionRouter();
|
|
36
|
+
if (!(functionRouter instanceof FunctionRouter)) {
|
|
37
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(functionRouter);
|
|
38
|
+
}
|
|
39
|
+
normalizedFunctionRouter.registerUnauthenticatedRoutes(createInternalFunctionRoutes(telepactSchema));
|
|
40
40
|
this.functionRouter = normalizedFunctionRouter;
|
|
41
41
|
this.middleware = options.middleware;
|
|
42
42
|
this.onError = options.onError;
|
|
@@ -48,8 +48,8 @@ export class Server {
|
|
|
48
48
|
const binaryEncoder = new ServerBinaryEncoder(binaryEncoding);
|
|
49
49
|
const base64Encoder = new ServerBase64Encoder();
|
|
50
50
|
this.serializer = new Serializer(options.serialization, binaryEncoder, base64Encoder);
|
|
51
|
-
if (!('union.Auth_' in this.telepactSchema.parsed) &&
|
|
52
|
-
throw new Error('
|
|
51
|
+
if (!('union.Auth_' in this.telepactSchema.parsed) && this.functionRouter.hasAuthenticatedRoutes()) {
|
|
52
|
+
throw new Error('Authenticated routes require `union.Auth_` in your schema.');
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
async process(requestMessageBytes, updateHeaders) {
|
|
@@ -62,7 +62,6 @@ export class ServerOptions {
|
|
|
62
62
|
onResponse;
|
|
63
63
|
onAuth;
|
|
64
64
|
middleware;
|
|
65
|
-
authRequired;
|
|
66
65
|
serialization;
|
|
67
66
|
constructor() {
|
|
68
67
|
this.onError = (_error) => { };
|
|
@@ -70,7 +69,6 @@ export class ServerOptions {
|
|
|
70
69
|
this.onResponse = (m) => { };
|
|
71
70
|
this.onAuth = (headers) => ({});
|
|
72
71
|
this.middleware = async (requestMessage, functionRouter) => await functionRouter.route(requestMessage);
|
|
73
|
-
this.authRequired = true;
|
|
74
72
|
this.serialization = new DefaultSerialization();
|
|
75
73
|
}
|
|
76
74
|
}
|
package/dist/src/Server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.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,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAG/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAkB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAM1F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,OAAO,MAAM;IACf,cAAc,CAAiB;IAC/B,UAAU,CAAa;IACvB,OAAO,CAAiC;IACxC,SAAS,CAA6B;IACtC,UAAU,CAA6B;IACvC,MAAM,CAAc;IACpB,cAAc,CAAiB;IAC/B,UAAU,CAAa;IAEvB,YAAY,cAA8B,EAAE,cAA+C,EAAE,OAAsB;QAC/G,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,5 @@ import { Message } from '../Message.js';
|
|
|
2
2
|
import { TelepactSchema } from '../TelepactSchema.js';
|
|
3
3
|
import { TelepactError } from '../TelepactError.js';
|
|
4
4
|
import type { AuthHandler, UpdateHeaders } from '../Server.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}) => Promise<Message>, functionRouter: {
|
|
8
|
-
route: (message: Message) => Promise<Message>;
|
|
9
|
-
}, onError: (error: TelepactError) => void, onAuth: AuthHandler): Promise<Message>;
|
|
5
|
+
import type { FunctionRouter, Middleware } from './ProcessBytes.js';
|
|
6
|
+
export declare function handleMessage(requestMessage: Message, updateHeaders: UpdateHeaders | undefined, telepactSchema: TelepactSchema, middleware: Middleware, functionRouter: FunctionRouter, onError: (error: TelepactError) => void, onAuth: AuthHandler): Promise<Message>;
|
|
@@ -24,7 +24,7 @@ import { ValidateContext } from './validation/ValidateContext.js';
|
|
|
24
24
|
import { serverBase64Decode } from './binary/ServerBase64Decode.js';
|
|
25
25
|
import { TelepactError } from '../TelepactError.js';
|
|
26
26
|
import { buildUnknownErrorMessage } from './UnknownError.js';
|
|
27
|
-
const
|
|
27
|
+
const UNAUTHENTICATED_MESSAGE = 'Valid authentication is required.';
|
|
28
28
|
export async function handleMessage(requestMessage, updateHeaders, telepactSchema, middleware, functionRouter, onError, onAuth) {
|
|
29
29
|
const responseHeaders = {};
|
|
30
30
|
const requestHeaders = requestMessage.headers;
|
|
@@ -34,7 +34,6 @@ export async function handleMessage(requestMessage, updateHeaders, telepactSchem
|
|
|
34
34
|
updateHeaders?.(requestHeaders);
|
|
35
35
|
const requestTargetInit = requestEntry[0];
|
|
36
36
|
const requestPayload = requestEntry[1];
|
|
37
|
-
const bypassAuthForFunction = INTERNAL_FUNCTIONS_BYPASSING_AUTH.has(requestTargetInit);
|
|
38
37
|
let unknownTarget;
|
|
39
38
|
let requestTarget;
|
|
40
39
|
if (!(requestTargetInit in parsedTelepactSchema)) {
|
|
@@ -48,6 +47,7 @@ export async function handleMessage(requestMessage, updateHeaders, telepactSchem
|
|
|
48
47
|
const functionName = requestTarget;
|
|
49
48
|
const callType = parsedTelepactSchema[requestTarget];
|
|
50
49
|
const resultUnionType = parsedTelepactSchema[`${requestTarget}.->`];
|
|
50
|
+
const requiresAuthentication = unknownTarget === null && functionRouter.requiresAuthentication(functionName);
|
|
51
51
|
const callId = requestHeaders['@id_'];
|
|
52
52
|
if (callId !== undefined) {
|
|
53
53
|
responseHeaders['@id_'] = callId;
|
|
@@ -64,7 +64,10 @@ export async function handleMessage(requestMessage, updateHeaders, telepactSchem
|
|
|
64
64
|
if (requestHeaderValidationFailures.length > 0) {
|
|
65
65
|
return getInvalidErrorMessage('ErrorInvalidRequestHeaders_', requestHeaderValidationFailures, resultUnionType, responseHeaders);
|
|
66
66
|
}
|
|
67
|
-
if ('@auth_' in requestHeaders
|
|
67
|
+
if (requiresAuthentication && !('@auth_' in requestHeaders)) {
|
|
68
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
69
|
+
}
|
|
70
|
+
if (requiresAuthentication) {
|
|
68
71
|
try {
|
|
69
72
|
const authHeaders = (await onAuth(requestHeaders)) ?? {};
|
|
70
73
|
Object.assign(requestHeaders, authHeaders);
|
|
@@ -76,7 +79,7 @@ export async function handleMessage(requestMessage, updateHeaders, telepactSchem
|
|
|
76
79
|
}
|
|
77
80
|
catch (ignored) {
|
|
78
81
|
}
|
|
79
|
-
return
|
|
82
|
+
return buildUnauthenticatedErrorMessage(resultUnionType, responseHeaders);
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
if ('@bin_' in requestHeaders) {
|
|
@@ -87,6 +90,15 @@ export async function handleMessage(requestMessage, updateHeaders, telepactSchem
|
|
|
87
90
|
responseHeaders['@pac_'] = requestHeaders['@pac_'];
|
|
88
91
|
}
|
|
89
92
|
}
|
|
93
|
+
function buildUnauthenticatedErrorMessage(resultUnionType, headers) {
|
|
94
|
+
const result = {
|
|
95
|
+
ErrorUnauthenticated_: {
|
|
96
|
+
'message!': UNAUTHENTICATED_MESSAGE,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
validateResult(resultUnionType, result);
|
|
100
|
+
return new Message(headers, result);
|
|
101
|
+
}
|
|
90
102
|
const selectStructFieldsHeader = requestHeaders['@select_'] || null;
|
|
91
103
|
if (unknownTarget !== null) {
|
|
92
104
|
const newErrorResult = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleMessage.js","sourceRoot":"","sources":["../../../src/internal/HandleMessage.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;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAK/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,wCAAwC,EAAE,MAAM,0DAA0D,CAAC;AACpH,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,
|
|
1
|
+
{"version":3,"file":"HandleMessage.js","sourceRoot":"","sources":["../../../src/internal/HandleMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export type ResponseHandler = (message: Message) => void;
|
|
|
10
10
|
export type AuthHandler = (headers: Record<string, any>) => Record<string, any> | Promise<Record<string, any>>;
|
|
11
11
|
export type FunctionRouter = {
|
|
12
12
|
route: (message: Message) => Promise<Message>;
|
|
13
|
+
requiresAuthentication: (functionName: string) => boolean;
|
|
13
14
|
};
|
|
14
15
|
export type Middleware = (requestMessage: Message, functionRouter: FunctionRouter) => Promise<Message>;
|
|
15
16
|
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>;
|
|
@@ -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;AAKH,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;AAEpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProcessBytes.js","sourceRoot":"","sources":["../../../src/internal/ProcessBytes.ts"],"names":[],"mappings":"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"}
|