@konker.dev/middleware-fp 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/http/HttpApiError.d.ts +13 -7
- package/dist/http/HttpApiError.d.ts.map +1 -1
- package/dist/http/HttpApiError.js +29 -8
- package/dist/http/HttpApiError.js.map +1 -1
- package/dist/http/HttpApiError.test.js +58 -116
- package/dist/http/HttpApiError.test.js.map +1 -1
- package/dist/http/RequestW.test.js +1 -1
- package/dist/http/RequestW.test.js.map +1 -1
- package/dist/http/contrib/basicAuthAuthenticator.d.ts +1 -1
- package/dist/http/contrib/basicAuthAuthenticator.d.ts.map +1 -1
- package/dist/http/contrib/basicAuthAuthenticator.js +2 -2
- package/dist/http/contrib/basicAuthAuthenticator.js.map +1 -1
- package/dist/http/contrib/bodyValidator.d.ts.map +1 -1
- package/dist/http/contrib/bodyValidator.js +1 -1
- package/dist/http/contrib/bodyValidator.js.map +1 -1
- package/dist/http/contrib/headerSignatureAuthorizer/index.js +1 -1
- package/dist/http/contrib/headerSignatureAuthorizer/index.js.map +1 -1
- package/dist/http/contrib/headersValidator.d.ts.map +1 -1
- package/dist/http/contrib/headersValidator.js +1 -1
- package/dist/http/contrib/headersValidator.js.map +1 -1
- package/dist/http/contrib/index.d.ts +1 -1
- package/dist/http/contrib/index.d.ts.map +1 -1
- package/dist/http/contrib/index.js +1 -1
- package/dist/http/contrib/index.js.map +1 -1
- package/dist/http/contrib/jwtAuthenticator.d.ts +1 -1
- package/dist/http/contrib/jwtAuthenticator.d.ts.map +1 -1
- package/dist/http/contrib/jwtAuthenticator.js +2 -2
- package/dist/http/contrib/jwtAuthenticator.js.map +1 -1
- package/dist/http/contrib/jwtAuthenticatorRsa.d.ts +1 -1
- package/dist/http/contrib/jwtAuthenticatorRsa.d.ts.map +1 -1
- package/dist/http/contrib/jwtAuthenticatorRsa.js +2 -2
- package/dist/http/contrib/jwtAuthenticatorRsa.js.map +1 -1
- package/dist/http/contrib/jwtDecoder.d.ts +1 -1
- package/dist/http/contrib/jwtDecoder.d.ts.map +1 -1
- package/dist/http/contrib/jwtDecoder.js +2 -2
- package/dist/http/contrib/jwtDecoder.js.map +1 -1
- package/dist/http/contrib/pathTokenAuthorizer.d.ts.map +1 -1
- package/dist/http/contrib/pathTokenAuthorizer.js +1 -1
- package/dist/http/contrib/pathTokenAuthorizer.js.map +1 -1
- package/dist/http/contrib/pathTokenAuthorizer.test.js +0 -1
- package/dist/http/contrib/pathTokenAuthorizer.test.js.map +1 -1
- package/dist/http/contrib/queryStringValidator.d.ts.map +1 -1
- package/dist/http/contrib/queryStringValidator.js +1 -1
- package/dist/http/contrib/queryStringValidator.js.map +1 -1
- package/dist/http/contrib/requestSpan.d.ts +4 -0
- package/dist/http/contrib/requestSpan.d.ts.map +1 -0
- package/dist/http/contrib/requestSpan.js +8 -0
- package/dist/http/contrib/requestSpan.js.map +1 -0
- package/dist/http/contrib/requestSpan.test.d.ts +2 -0
- package/dist/http/contrib/requestSpan.test.d.ts.map +1 -0
- package/dist/http/contrib/requestSpan.test.js +27 -0
- package/dist/http/contrib/requestSpan.test.js.map +1 -0
- package/dist/http/contrib/responseProcessor.js +2 -2
- package/dist/http/contrib/responseProcessor.js.map +1 -1
- package/dist/http/contrib/responseProcessor.test.js +2 -2
- package/dist/http/contrib/responseProcessor.test.js.map +1 -1
- package/dist/lib/MiddlewareError.d.ts +11 -6
- package/dist/lib/MiddlewareError.d.ts.map +1 -1
- package/dist/lib/MiddlewareError.js +36 -4
- package/dist/lib/MiddlewareError.js.map +1 -1
- package/dist/lib/MiddlewareError.test.js +60 -18
- package/dist/lib/MiddlewareError.test.js.map +1 -1
- package/dist/test/fixtures/honoRequestFactory.js +6 -6
- package/dist/test/fixtures/honoRequestFactory.js.map +1 -1
- package/package.json +41 -38
- package/dist/http/contrib/sqlClientInitPg/index.d.ts +0 -10
- package/dist/http/contrib/sqlClientInitPg/index.d.ts.map +0 -1
- package/dist/http/contrib/sqlClientInitPg/index.js +0 -12
- package/dist/http/contrib/sqlClientInitPg/index.js.map +0 -1
- package/dist/http/contrib/sqlClientInitPg/index.test.d.ts +0 -4
- package/dist/http/contrib/sqlClientInitPg/index.test.d.ts.map +0 -1
- package/dist/http/contrib/sqlClientInitPg/index.test.js +0 -93
- package/dist/http/contrib/sqlClientInitPg/index.test.js.map +0 -1
- package/dist/http/contrib/sqlClientInitPg/lib.d.ts +0 -16
- package/dist/http/contrib/sqlClientInitPg/lib.d.ts.map +0 -1
- package/dist/http/contrib/sqlClientInitPg/lib.js +0 -38
- package/dist/http/contrib/sqlClientInitPg/lib.js.map +0 -1
- package/dist/http/contrib/sqlClientInitPg/lib.test.d.ts +0 -2
- package/dist/http/contrib/sqlClientInitPg/lib.test.d.ts.map +0 -1
- package/dist/http/contrib/sqlClientInitPg/lib.test.js +0 -101
- package/dist/http/contrib/sqlClientInitPg/lib.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwtAuthenticatorRsa.js","sourceRoot":"","sources":["../../../src/http/contrib/jwtAuthenticatorRsa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"jwtAuthenticatorRsa.js","sourceRoot":"","sources":["../../../src/http/contrib/jwtAuthenticatorRsa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAqB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAG7D,MAAM,GAAG,GAAG,qBAAqB,CAAC;AAElC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAA2B,yBAAyB,CAAC,CAAC;AAM/G,6EAA6E;AAC7E,MAAM,CAAC,MAAM,UAAU,GACrB,GAAG,EAAE,CACL,CACE,OAAwD,EACmD,EAAE,CAC/G,CAAC,CAA2C,EAAE,EAAE;IAC9C,OAAO,IAAI,CACT,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,EAClD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAC3E,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EACxF,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAClC,YAAY,CAAC,QAAQ;QACnB,CAAC,CAAC,MAAM,CAAC,OAAO,CACZ,YAAY,CAAC,CAAC,EAAE;YACd,MAAM,EAAE,YAAY,CAAC,GAAG;SACzB,CAAC,CACH;QACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACxB,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,gCAAgC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAC5F,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EACvG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HttpApiError } from '../HttpApiError.js';
|
|
1
|
+
import { type HttpApiError } from '../HttpApiError.js';
|
|
2
2
|
import type { Rec, RequestResponseHandler } from '../index.js';
|
|
3
3
|
import type { WithNormalizedInputHeaders } from './headersNormalizer/types.js';
|
|
4
4
|
export type WithUserId = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwtDecoder.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/jwtDecoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"jwtDecoder.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/jwtDecoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAK/E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAIF,eAAO,MAAM,UAAU,SAEpB,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACvD,sBAAsB,CAAC,CAAC,GAAG,0BAA0B,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,CAiB/E,CAAC"}
|
|
@@ -2,13 +2,13 @@ import { extractBearerToken } from '@konker.dev/tiny-auth-utils-fp/helpers';
|
|
|
2
2
|
import { jwtDecodeToken } from '@konker.dev/tiny-auth-utils-fp/jwt';
|
|
3
3
|
import { pipe } from 'effect';
|
|
4
4
|
import * as Effect from 'effect/Effect';
|
|
5
|
-
import {
|
|
5
|
+
import { toHttpApiError } from '../HttpApiError.js';
|
|
6
6
|
import { makeRequestW } from '../RequestW.js';
|
|
7
7
|
const TAG = 'jwtDecoder';
|
|
8
8
|
// --------------------------------------------------------------------------
|
|
9
9
|
export const middleware = () => (wrapped) => (i) => {
|
|
10
10
|
return pipe(Effect.Do, Effect.tap(Effect.logDebug(`[${TAG}] IN`)), Effect.bind('authToken', () => extractBearerToken(i.headers.authorization)), Effect.bind('decoded', ({ authToken }) => jwtDecodeToken(authToken)), Effect.map(({ decoded }) => makeRequestW(i, {
|
|
11
11
|
userId: decoded.sub,
|
|
12
|
-
})), Effect.mapError((e) =>
|
|
12
|
+
})), Effect.mapError((e) => toHttpApiError(e, 401, `Invalid JWT credentials: ${e.message}`)), Effect.tapError((_) => Effect.logError(`UnauthorizedError: Invalid JWT credentials: ${i.headers}`)), Effect.flatMap(wrapped), Effect.tap(Effect.logDebug(`[${TAG}] OUT`)));
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=jwtDecoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwtDecoder.js","sourceRoot":"","sources":["../../../src/http/contrib/jwtDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"jwtDecoder.js","sourceRoot":"","sources":["../../../src/http/contrib/jwtDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAqB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAG7D,MAAM,GAAG,GAAG,YAAY,CAAC;AAOzB,6EAA6E;AAE7E,MAAM,CAAC,MAAM,UAAU,GACrB,GAAG,EAAE,CACL,CACE,OAAwD,EACwB,EAAE,CACpF,CAAC,CAA2C,EAAE,EAAE;IAC9C,OAAO,IAAI,CACT,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAC3E,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EACpE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACzB,YAAY,CAAC,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,GAAG;KACpB,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,4BAA4B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EACvF,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,+CAA+C,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EACnG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathTokenAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/pathTokenAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,QAAQ,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAM/D,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AACF,eAAO,MAAM,uBAAuB,+DAAyE,CAAC;AAG9G,eAAO,MAAM,UAAU,SAEpB,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC1C,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"pathTokenAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/pathTokenAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,QAAQ,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAM/D,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AACF,eAAO,MAAM,uBAAuB,+DAAyE,CAAC;AAG9G,eAAO,MAAM,UAAU,SAEpB,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC1C,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,uBAAuB,CAiB5E,CAAC"}
|
|
@@ -7,7 +7,7 @@ export const PathTokenAuthorizerDeps = Context.GenericTag('PathTokenAuthorizerDe
|
|
|
7
7
|
export const middleware = () => (wrapped) => (i) => {
|
|
8
8
|
return pipe(PathTokenAuthorizerDeps, Effect.tap(Effect.logDebug(`[${TAG}] IN`)), Effect.flatMap(({ pathParamName, secretTokenEnvName }) => Effect.if(!!process.env[secretTokenEnvName] && i.pathParameters?.[pathParamName] === process.env[secretTokenEnvName], {
|
|
9
9
|
onTrue: () => Effect.succeed(i),
|
|
10
|
-
onFalse: () => pipe(Effect.fail(HttpApiError(
|
|
10
|
+
onFalse: () => pipe(Effect.fail(new HttpApiError({ statusCode: 401, message: 'Invalid token' }))),
|
|
11
11
|
})), Effect.flatMap(wrapped), Effect.tap(Effect.logDebug(`[${TAG}] OUT`)));
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=pathTokenAuthorizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathTokenAuthorizer.js","sourceRoot":"","sources":["../../../src/http/contrib/pathTokenAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,MAAM,GAAG,GAAG,qBAAqB,CAAC;AAOlC,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAA0B,yBAAyB,CAAC,CAAC;AAE9G,6EAA6E;AAC7E,MAAM,CAAC,MAAM,UAAU,GACrB,GAAG,EAAE,CACL,CACE,OAA2C,EACkC,EAAE,CACjF,CAAC,CAAc,EAAE,EAAE;IACjB,OAAO,IAAI,CACT,uBAAuB,EACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,EAAE,CACvD,MAAM,CAAC,EAAE,CACP,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAC1G;QACE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,OAAO,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"pathTokenAuthorizer.js","sourceRoot":"","sources":["../../../src/http/contrib/pathTokenAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,MAAM,GAAG,GAAG,qBAAqB,CAAC;AAOlC,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAA0B,yBAAyB,CAAC,CAAC;AAE9G,6EAA6E;AAC7E,MAAM,CAAC,MAAM,UAAU,GACrB,GAAG,EAAE,CACL,CACE,OAA2C,EACkC,EAAE,CACjF,CAAC,CAAc,EAAE,EAAE;IACjB,OAAO,IAAI,CACT,uBAAuB,EACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,EAAE,CACvD,MAAM,CAAC,EAAE,CACP,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAC1G;QACE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;KAClG,CACF,CACF,EACD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -63,7 +63,6 @@ describe('middleware/path-token-authorizer', () => {
|
|
|
63
63
|
const egHandler = pipe(echoCoreIn200W, unit.middleware());
|
|
64
64
|
const result = pipe(egHandler(TEST_IN_2), mockPathTokenAuthorizerDeps, Effect.runPromise);
|
|
65
65
|
await expect(result).rejects.toThrow('Invalid token');
|
|
66
|
-
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
67
66
|
});
|
|
68
67
|
});
|
|
69
68
|
//# sourceMappingURL=pathTokenAuthorizer.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathTokenAuthorizer.test.js","sourceRoot":"","sources":["../../../src/http/contrib/pathTokenAuthorizer.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAqB,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5F,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD,8CAA8C;AAC9C,mDAAmD;AACnD,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;AAChE,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAC;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AAEvE,MAAM,CAAC,MAAM,+BAA+B,GAAiC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC3G,kBAAkB,EAAE,0BAA0B;IAC9C,aAAa,EAAE,WAAW;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,cAAc,CAC9D,IAAI,CAAC,uBAAuB,EAC5B,+BAA+B,CAChC,CAAC;AAEF,MAAM,SAAS,GAAG,YAAY,CAAC,eAAe,EAAE;IAC9C,cAAc,EAAE;QACd,SAAS,EAAE,6BAA6B;KACzC;CACF,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,YAAY,CAAC,eAAe,EAAE;IAC9C,cAAc,EAAE;QACd,SAAS,EAAE,+BAA+B;KAC3C;CACF,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAI,QAAsB,CAAC;IAC3B,IAAI,MAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;QACrB,OAAO,CAAC,GAAG,GAAG;YACZ,CAAC,0BAA0B,CAAC,EAAE,6BAA6B;SAC5D,CAAC;QAEF,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,2BAA2B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAEhG,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,EAAE;YACX,EAAE,EAAE;gBACF,GAAG,EAAE,GAAG;gBACR,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,KAAK;gBACb,cAAc,EAAE;oBACd,SAAS,EAAE,kBAAkB;iBAC9B;gBACD,qBAAqB,EAAE,EAAE;aAC1B;SACF,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,2BAA2B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1F,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"pathTokenAuthorizer.test.js","sourceRoot":"","sources":["../../../src/http/contrib/pathTokenAuthorizer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryStringValidator.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/queryStringValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAK/D,MAAM,MAAM,kCAAkC,CAAC,CAAC,IAAI;IAClD,qBAAqB,EAAE,CAAC,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,UAAU,GACpB,EAAE,EAAE,EAAE,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MACrC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,GAAG,kCAAkC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACnF,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"queryStringValidator.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/queryStringValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAK/D,MAAM,MAAM,kCAAkC,CAAC,CAAC,IAAI;IAClD,qBAAqB,EAAE,CAAC,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,UAAU,GACpB,EAAE,EAAE,EAAE,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MACrC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,GAAG,kCAAkC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACnF,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,CAiBnD,CAAC"}
|
|
@@ -6,5 +6,5 @@ const TAG = 'queryStringValidator';
|
|
|
6
6
|
export const middleware = (schema) => (wrapped) => (i) => pipe(Effect.succeed(i), Effect.tap(Effect.logDebug(`[${TAG}] IN`)), Effect.flatMap((i) => pipe(i.queryStringParameters, Schema.decodeUnknown(schema, { errors: 'all', onExcessProperty: 'ignore' }))), Effect.mapError((e) => toMiddlewareError(e)), Effect.map((validatedQueryStringParameters) => makeRequestW(i, {
|
|
7
7
|
queryStringParameters: validatedQueryStringParameters,
|
|
8
8
|
queryStringValidatorRaw: i.queryStringParameters,
|
|
9
|
-
})), Effect.flatMap(wrapped));
|
|
9
|
+
})), Effect.flatMap(wrapped), Effect.tap(Effect.logDebug(`[${TAG}] OUT`)));
|
|
10
10
|
//# sourceMappingURL=queryStringValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryStringValidator.js","sourceRoot":"","sources":["../../../src/http/contrib/queryStringValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAE7D,MAAM,GAAG,GAAG,sBAAsB,CAAC;AAOnC,MAAM,CAAC,MAAM,UAAU,GACrB,CAAS,MAA6B,EAAE,EAAE,CAC1C,CACE,OAAoF,EAC9B,EAAE,CAC1D,CAAC,CAAc,EAAE,EAAE,CACjB,IAAI,CACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,IAAI,CAAC,CAAC,CAAC,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAC3G,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,8BAAkC,EAAE,EAAE,CAChD,YAAY,CAAC,CAAC,EAAE;IACd,qBAAqB,EAAE,8BAA8B;IACrD,uBAAuB,EAAE,CAAC,CAAC,qBAAqB;CACjD,CAAC,CACH,EACD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"queryStringValidator.js","sourceRoot":"","sources":["../../../src/http/contrib/queryStringValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAE7D,MAAM,GAAG,GAAG,sBAAsB,CAAC;AAOnC,MAAM,CAAC,MAAM,UAAU,GACrB,CAAS,MAA6B,EAAE,EAAE,CAC1C,CACE,OAAoF,EAC9B,EAAE,CAC1D,CAAC,CAAc,EAAE,EAAE,CACjB,IAAI,CACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,IAAI,CAAC,CAAC,CAAC,qBAAqB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAC3G,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,8BAAkC,EAAE,EAAE,CAChD,YAAY,CAAC,CAAC,EAAE;IACd,qBAAqB,EAAE,8BAA8B;IACrD,uBAAuB,EAAE,CAAC,CAAC,qBAAqB;CACjD,CAAC,CACH,EACD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAC5C,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Rec, RequestResponseHandler } from '../index.js';
|
|
2
|
+
export declare const TAG = "requestSpan";
|
|
3
|
+
export declare const middleware: (name: string) => <I extends Rec, O extends Rec, E, R>(wrapped: RequestResponseHandler<I, O, E, R>) => RequestResponseHandler<I, O, E, R>;
|
|
4
|
+
//# sourceMappingURL=requestSpan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSpan.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/requestSpan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG/D,eAAO,MAAM,GAAG,gBAAgB,CAAC;AAEjC,eAAO,MAAM,UAAU,GACpB,MAAM,MAAM,MACZ,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC1C,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAUjC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { pipe } from 'effect';
|
|
2
|
+
import * as Effect from 'effect/Effect';
|
|
3
|
+
import {} from '../RequestW.js';
|
|
4
|
+
export const TAG = 'requestSpan';
|
|
5
|
+
export const middleware = (name) => (wrapped) => (i) => pipe(Effect.succeed(i), Effect.tap(Effect.logDebug(`[${TAG}] IN`)), Effect.flatMap(wrapped), Effect.withSpan(name, {
|
|
6
|
+
attributes: { 'http.method': i.method, 'http.url': i.url },
|
|
7
|
+
}), Effect.tap(Effect.logDebug(`[${TAG}] OUT`)));
|
|
8
|
+
//# sourceMappingURL=requestSpan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSpan.js","sourceRoot":"","sources":["../../../src/http/contrib/requestSpan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAE/C,MAAM,CAAC,MAAM,GAAG,GAAG,aAAa,CAAC;AAEjC,MAAM,CAAC,MAAM,UAAU,GACrB,CAAC,IAAY,EAAE,EAAE,CACjB,CACE,OAA2C,EACP,EAAE,CACxC,CAAC,CAAc,EAAE,EAAE,CACjB,IAAI,CACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;IACpB,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE;CAC3D,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAC5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSpan.test.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/requestSpan.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { pipe } from 'effect';
|
|
2
|
+
import * as Effect from 'effect/Effect';
|
|
3
|
+
import { describe, expect, it } from 'vitest';
|
|
4
|
+
import { echoCoreIn200W } from '../../test/test-common.js';
|
|
5
|
+
import { EMPTY_REQUEST_W, makeRequestW } from '../RequestW.js';
|
|
6
|
+
import * as unit from './requestSpan.js';
|
|
7
|
+
const TEST_IN = makeRequestW(EMPTY_REQUEST_W, { foo: 'foo' });
|
|
8
|
+
describe('middleware/requestSpan', () => {
|
|
9
|
+
it('should work as expected', async () => {
|
|
10
|
+
const egHandler = pipe(echoCoreIn200W, unit.middleware('test-name'));
|
|
11
|
+
const result = pipe(egHandler(TEST_IN), Effect.runPromise);
|
|
12
|
+
await expect(result).resolves.toStrictEqual({
|
|
13
|
+
statusCode: 200,
|
|
14
|
+
body: 'OK',
|
|
15
|
+
headers: {},
|
|
16
|
+
in: {
|
|
17
|
+
url: '/',
|
|
18
|
+
method: 'GET',
|
|
19
|
+
headers: {},
|
|
20
|
+
pathParameters: {},
|
|
21
|
+
queryStringParameters: {},
|
|
22
|
+
foo: 'foo',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=requestSpan.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSpan.test.js","sourceRoot":"","sources":["../../../src/http/contrib/requestSpan.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAC;AAEzC,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AAE9D,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC1C,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,EAAE;YACX,EAAE,EAAE;gBACF,GAAG,EAAE,GAAG;gBACR,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,EAAE;gBACX,cAAc,EAAE,EAAE;gBAClB,qBAAqB,EAAE,EAAE;gBACzB,GAAG,EAAE,KAAK;aACX;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { pipe } from 'effect';
|
|
2
2
|
import * as Effect from 'effect/Effect';
|
|
3
|
-
import {
|
|
3
|
+
import { toErrorResponseW, toHttpApiError } from '../HttpApiError.js';
|
|
4
4
|
const TAG = 'responseProcessor';
|
|
5
5
|
export const middleware = () => (wrapped) => (i) => {
|
|
6
6
|
return pipe(Effect.succeed(i), Effect.tap(Effect.logDebug(`[${TAG}] IN`)), Effect.flatMap(wrapped), Effect.tap(Effect.logDebug(`[${TAG}] OUT`)), Effect.matchEffect({
|
|
7
|
-
onFailure: (e) => pipe(Effect.succeed(e), Effect.tap(Effect.logError
|
|
7
|
+
onFailure: (e) => pipe(Effect.succeed(e), Effect.tap(Effect.logError), Effect.map(toHttpApiError), Effect.flatMap(toErrorResponseW)),
|
|
8
8
|
onSuccess: (o) => Effect.succeed(o),
|
|
9
9
|
}));
|
|
10
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseProcessor.js","sourceRoot":"","sources":["../../../src/http/contrib/responseProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"responseProcessor.js","sourceRoot":"","sources":["../../../src/http/contrib/responseProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKtE,MAAM,GAAG,GAAG,mBAAmB,CAAC;AAEhC,MAAM,CAAC,MAAM,UAAU,GACrB,GAAG,EAAE,CACL,CACE,OAA2C,EACF,EAAE,CAC7C,CAAC,CAAc,EAAE,EAAE;IACjB,OAAO,IAAI,CACT,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,EAC3C,MAAM,CAAC,WAAW,CAAC;QACjB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CACf,IAAI,CACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC3B,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CACjC;QACH,SAAS,EAAE,CAAC,CAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;KAClD,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -24,7 +24,7 @@ const TEST_OUT_2 = makeResponseW({
|
|
|
24
24
|
},
|
|
25
25
|
body: 'string body',
|
|
26
26
|
});
|
|
27
|
-
const TEST_OUT_3 = HttpApiError(
|
|
27
|
+
const TEST_OUT_3 = new HttpApiError({ statusCode: 409, message: 'Some Error Message' });
|
|
28
28
|
export const testCoreL = (out) => (_) => Effect.fail(out);
|
|
29
29
|
export const testCoreR = (out) => (_) => Effect.succeed(out);
|
|
30
30
|
describe('middleware/responseProcessor', () => {
|
|
@@ -68,7 +68,7 @@ describe('middleware/responseProcessor', () => {
|
|
|
68
68
|
headers: {
|
|
69
69
|
'Content-Type': 'application/json',
|
|
70
70
|
},
|
|
71
|
-
body: JSON.stringify({ message: '
|
|
71
|
+
body: JSON.stringify({ message: 'Some Error Message', statusCode: 409 }),
|
|
72
72
|
});
|
|
73
73
|
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
74
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseProcessor.test.js","sourceRoot":"","sources":["../../../src/http/contrib/responseProcessor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAqB,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG5F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAiB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAE/C,8CAA8C;AAC9C,mDAAmD;AACnD,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAExC,MAAM,SAAS,GAAc,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AAE1D,MAAM,UAAU,GAAG,aAAa,CAAC;IAC/B,UAAU,EAAE,GAAG;IACf,OAAO,EAAE;QACP,GAAG,EAAE,WAAW;KACjB;IACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,aAAa,CAAC;IAC/B,UAAU,EAAE,GAAG;IACf,OAAO,EAAE;QACP,GAAG,EAAE,WAAW;KACjB;IACD,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"responseProcessor.test.js","sourceRoot":"","sources":["../../../src/http/contrib/responseProcessor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAqB,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG5F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAiB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAE/C,8CAA8C;AAC9C,mDAAmD;AACnD,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAExC,MAAM,SAAS,GAAc,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AAE1D,MAAM,UAAU,GAAG,aAAa,CAAC;IAC/B,UAAU,EAAE,GAAG;IACf,OAAO,EAAE;QACP,GAAG,EAAE,WAAW;KACjB;IACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,aAAa,CAAC;IAC/B,UAAU,EAAE,GAAG;IACf,OAAO,EAAE;QACP,GAAG,EAAE,WAAW;KACjB;IACD,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,GAAQ,EAAgD,EAAE,CAC3D,CAAC,CAAW,EAAE,EAAE,CACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAErB,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,GAAQ,EAAgD,EAAE,CAC3D,CAAC,CAAW,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAExB,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,QAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAElH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,UAAU,EAAE,GAAG;YACf,OAAO,EAAE;gBACP,GAAG,EAAE,WAAW;aACjB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAElH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,UAAU,EAAE,GAAG;YACf,OAAO,EAAE;gBACP,GAAG,EAAE,WAAW;aACjB;YACD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAElH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,UAAU,EAAE,GAAG;YACf,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;SACzE,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { TinyError } from '@konker.dev/tiny-error-fp';
|
|
2
1
|
export declare const ERROR_TAG: "MiddlewareError";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export declare
|
|
7
|
-
|
|
2
|
+
declare const MiddlewareError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
3
|
+
readonly _tag: "MiddlewareError";
|
|
4
|
+
} & Readonly<A>;
|
|
5
|
+
export declare class MiddlewareError extends MiddlewareError_base<{
|
|
6
|
+
readonly message: string;
|
|
7
|
+
readonly internal?: Array<unknown>;
|
|
8
|
+
}> {
|
|
9
|
+
}
|
|
10
|
+
export declare function isMiddlewareError(x: unknown): x is MiddlewareError;
|
|
11
|
+
export declare function toMiddlewareError(x: unknown, message?: string): MiddlewareError;
|
|
12
|
+
export {};
|
|
8
13
|
//# sourceMappingURL=MiddlewareError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlewareError.d.ts","sourceRoot":"","sources":["../../src/lib/MiddlewareError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MiddlewareError.d.ts","sourceRoot":"","sources":["../../src/lib/MiddlewareError.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,EAAG,iBAA0B,CAAC;;;;AAGpD,qBAAa,eAAgB,SAAQ,qBAAuB;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACpC,CAAC;CAAG;AAGL,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,eAAe,CAElE;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,CAwB/E"}
|
|
@@ -1,6 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable fp/no-class */
|
|
2
|
+
import { Predicate } from 'effect';
|
|
3
|
+
import { TaggedError } from 'effect/Data';
|
|
4
|
+
import { isError } from 'effect/Predicate';
|
|
2
5
|
export const ERROR_TAG = 'MiddlewareError';
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
+
// --------------------------------------------------------------------------
|
|
7
|
+
export class MiddlewareError extends TaggedError(ERROR_TAG) {
|
|
8
|
+
}
|
|
9
|
+
// --------------------------------------------------------------------------
|
|
10
|
+
export function isMiddlewareError(x) {
|
|
11
|
+
return Predicate.isTagged(ERROR_TAG)(x);
|
|
12
|
+
}
|
|
13
|
+
// --------------------------------------------------------------------------
|
|
14
|
+
export function toMiddlewareError(x, message) {
|
|
15
|
+
if (isMiddlewareError(x)) {
|
|
16
|
+
return new MiddlewareError({
|
|
17
|
+
message: message ?? x.message,
|
|
18
|
+
internal: [x, ...(x.internal ?? [])],
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
if (isError(x)) {
|
|
22
|
+
return new MiddlewareError({
|
|
23
|
+
message: message ?? x.message,
|
|
24
|
+
internal: [x],
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (typeof x === 'string') {
|
|
28
|
+
return new MiddlewareError({
|
|
29
|
+
message: message ?? x,
|
|
30
|
+
internal: [x],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return new MiddlewareError({
|
|
34
|
+
message: message ?? 'Internal Server Error',
|
|
35
|
+
internal: [x],
|
|
36
|
+
});
|
|
37
|
+
}
|
|
6
38
|
//# sourceMappingURL=MiddlewareError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlewareError.js","sourceRoot":"","sources":["../../src/lib/MiddlewareError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MiddlewareError.js","sourceRoot":"","sources":["../../src/lib/MiddlewareError.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,SAAS,GAAG,iBAA0B,CAAC;AAEpD,6EAA6E;AAC7E,MAAM,OAAO,eAAgB,SAAQ,WAAW,CAAC,SAAS,CAGxD;CAAG;AAEL,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,CAAU;IAC1C,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,CAAU,EAAE,OAAgB;IAC5D,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,eAAe,CAAC;YACzB,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;YAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,IAAI,eAAe,CAAC;YACzB,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;YAC7B,QAAQ,EAAE,CAAC,CAAC,CAAC;SACd,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,eAAe,CAAC;YACzB,OAAO,EAAE,OAAO,IAAI,CAAC;YACrB,QAAQ,EAAE,CAAC,CAAC,CAAC;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,eAAe,CAAC;QACzB,OAAO,EAAE,OAAO,IAAI,uBAAuB;QAC3C,QAAQ,EAAE,CAAC,CAAC,CAAC;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,33 +1,75 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
2
|
import * as unit from './MiddlewareError.js';
|
|
3
|
-
describe('
|
|
3
|
+
describe('MiddlewareError', () => {
|
|
4
4
|
describe('toMiddlewareError', () => {
|
|
5
|
+
it('should work as expected with a MiddlewareError instance input', () => {
|
|
6
|
+
const error = new unit.MiddlewareError({ message: 'BOOM!' });
|
|
7
|
+
const actual = unit.toMiddlewareError(error);
|
|
8
|
+
expect(actual).toBeInstanceOf(unit.MiddlewareError);
|
|
9
|
+
expect(actual).toMatchObject({
|
|
10
|
+
_tag: unit.ERROR_TAG,
|
|
11
|
+
message: 'BOOM!',
|
|
12
|
+
internal: [error],
|
|
13
|
+
});
|
|
14
|
+
});
|
|
5
15
|
it('should work as expected with an Error instance input', () => {
|
|
6
16
|
const error = new Error('BOOM!');
|
|
7
17
|
const actual = unit.toMiddlewareError(error);
|
|
8
|
-
expect(actual.
|
|
18
|
+
expect(actual).toBeInstanceOf(unit.MiddlewareError);
|
|
19
|
+
expect(actual).toMatchObject({
|
|
9
20
|
_tag: unit.ERROR_TAG,
|
|
10
|
-
name: 'Error',
|
|
11
21
|
message: 'BOOM!',
|
|
12
|
-
|
|
13
|
-
codeTag: 'GENERAL',
|
|
14
|
-
cause: error,
|
|
15
|
-
internal: true,
|
|
16
|
-
stack: expect.stringContaining('Error'),
|
|
22
|
+
internal: [error],
|
|
17
23
|
});
|
|
18
24
|
});
|
|
19
|
-
it('should work as expected with
|
|
20
|
-
const error = 'BOOM!';
|
|
21
|
-
const actual = unit.toMiddlewareError(error);
|
|
22
|
-
expect(actual.
|
|
25
|
+
it('should work as expected with an Error instance input, and message param', () => {
|
|
26
|
+
const error = new Error('BOOM!');
|
|
27
|
+
const actual = unit.toMiddlewareError(error, 'OVERRIDE_MESSAGE');
|
|
28
|
+
expect(actual).toBeInstanceOf(unit.MiddlewareError);
|
|
29
|
+
expect(actual).toMatchObject({
|
|
30
|
+
_tag: unit.ERROR_TAG,
|
|
31
|
+
message: 'OVERRIDE_MESSAGE',
|
|
32
|
+
internal: [error],
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
it('should work as expected with a string input', () => {
|
|
36
|
+
const errorStr = 'BOOM!';
|
|
37
|
+
const actual = unit.toMiddlewareError(errorStr);
|
|
38
|
+
expect(actual).toBeInstanceOf(unit.MiddlewareError);
|
|
39
|
+
expect(actual).toMatchObject({
|
|
23
40
|
_tag: unit.ERROR_TAG,
|
|
24
|
-
name: 'MiddlewareError',
|
|
25
41
|
message: 'BOOM!',
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
42
|
+
internal: [errorStr],
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
it('should work as expected with a string input, and message param', () => {
|
|
46
|
+
const errorStr = 'BOOM!';
|
|
47
|
+
const actual = unit.toMiddlewareError(errorStr, 'OVERRIDE_MESSAGE');
|
|
48
|
+
expect(actual).toBeInstanceOf(unit.MiddlewareError);
|
|
49
|
+
expect(actual).toMatchObject({
|
|
50
|
+
_tag: unit.ERROR_TAG,
|
|
51
|
+
message: 'OVERRIDE_MESSAGE',
|
|
52
|
+
internal: [errorStr],
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
it('should work as expected with other input', () => {
|
|
56
|
+
const errorObj = { foo: 'BOOM!' };
|
|
57
|
+
const actual = unit.toMiddlewareError(errorObj);
|
|
58
|
+
expect(actual).toBeInstanceOf(unit.MiddlewareError);
|
|
59
|
+
expect(actual).toMatchObject({
|
|
60
|
+
_tag: unit.ERROR_TAG,
|
|
61
|
+
message: 'Internal Server Error',
|
|
62
|
+
internal: [errorObj],
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
it('should work as expected with other input, and message param', () => {
|
|
66
|
+
const errorObj = { foo: 'BOOM!' };
|
|
67
|
+
const actual = unit.toMiddlewareError(errorObj, 'OVERRIDE_MESSAGE');
|
|
68
|
+
expect(actual).toBeInstanceOf(unit.MiddlewareError);
|
|
69
|
+
expect(actual).toMatchObject({
|
|
70
|
+
_tag: unit.ERROR_TAG,
|
|
71
|
+
message: 'OVERRIDE_MESSAGE',
|
|
72
|
+
internal: [errorObj],
|
|
31
73
|
});
|
|
32
74
|
});
|
|
33
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlewareError.test.js","sourceRoot":"","sources":["../../src/lib/MiddlewareError.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAE7C,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"MiddlewareError.test.js","sourceRoot":"","sources":["../../src/lib/MiddlewareError.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,19 +17,19 @@ export function honoRequestFactory(url, options) {
|
|
|
17
17
|
return '';
|
|
18
18
|
},
|
|
19
19
|
addValidatedData() { },
|
|
20
|
-
arrayBuffer() {
|
|
20
|
+
async arrayBuffer() {
|
|
21
21
|
return Promise.resolve(Buffer.from(options.body ?? '').buffer);
|
|
22
22
|
},
|
|
23
|
-
blob() {
|
|
23
|
+
async blob() {
|
|
24
24
|
return Promise.resolve(new Blob([Buffer.from(options.body ?? '').buffer]));
|
|
25
25
|
},
|
|
26
|
-
formData() {
|
|
26
|
+
async formData() {
|
|
27
27
|
return Promise.resolve(new FormData());
|
|
28
28
|
},
|
|
29
29
|
header() {
|
|
30
30
|
return options.headers ?? {};
|
|
31
31
|
},
|
|
32
|
-
json() {
|
|
32
|
+
async json() {
|
|
33
33
|
return Promise.resolve(JSON.parse(options.body ?? ''));
|
|
34
34
|
},
|
|
35
35
|
param() {
|
|
@@ -37,7 +37,7 @@ export function honoRequestFactory(url, options) {
|
|
|
37
37
|
id: '123',
|
|
38
38
|
};
|
|
39
39
|
},
|
|
40
|
-
parseBody() {
|
|
40
|
+
async parseBody() {
|
|
41
41
|
return Promise.resolve(options.body ?? '');
|
|
42
42
|
},
|
|
43
43
|
queries() {
|
|
@@ -46,7 +46,7 @@ export function honoRequestFactory(url, options) {
|
|
|
46
46
|
query() {
|
|
47
47
|
return Object.fromEntries(new URL(url).searchParams.entries());
|
|
48
48
|
},
|
|
49
|
-
text() {
|
|
49
|
+
async text() {
|
|
50
50
|
return Promise.resolve(options.body ?? '');
|
|
51
51
|
},
|
|
52
52
|
get url() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"honoRequestFactory.js","sourceRoot":"","sources":["../../../src/test/fixtures/honoRequestFactory.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAoB,MAAM,MAAM,CAAC;AAGxC,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,OAIC;IAED,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;KAC3B,CAAC,CAAC;IAEH,OAAO;QACL,GAAG;QACH,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,CAAC;QACb,KAAK,CAAI,OAAU;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,gBAAgB,KAAU,CAAC;QAC3B,WAAW;
|
|
1
|
+
{"version":3,"file":"honoRequestFactory.js","sourceRoot":"","sources":["../../../src/test/fixtures/honoRequestFactory.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAoB,MAAM,MAAM,CAAC;AAGxC,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,OAIC;IAED,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;KAC3B,CAAC,CAAC;IAEH,OAAO;QACL,GAAG;QACH,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,CAAC;QACb,KAAK,CAAI,OAAU;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,gBAAgB,KAAU,CAAC;QAC3B,KAAK,CAAC,WAAW;YACf,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,MAAM;YACJ,OAAO,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,KAAK;YACH,OAAO;gBACL,EAAE,EAAE,KAAK;aACV,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,SAAS;YACb,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO;YACL,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,KAAK;YACH,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,GAAG;YACL,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,aAAa;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,SAAS;YACX,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
|