@routr/connect 2.6.2 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/access.js +10 -10
- package/dist/assertions.js +1 -1
- package/dist/envs.js +1 -1
- package/dist/errors.js +1 -1
- package/dist/handlers/register.d.ts +1 -1
- package/dist/handlers/register.js +51 -14
- package/dist/handlers/registry.js +1 -1
- package/dist/handlers/request.js +1 -1
- package/dist/router.js +9 -11
- package/dist/runner.js +1 -1
- package/dist/tailor.js +1 -1
- package/dist/tracer.js +1 -1
- package/dist/utils.js +31 -23
- package/package.json +5 -5
package/dist/access.js
CHANGED
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.checkAccessFromPSTN = exports.checkAgentOrPeerAccess = exports.checkAccess = void 0;
|
13
13
|
/*
|
14
|
-
* Copyright (C)
|
14
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
15
15
|
* http://github.com/fonoster/routr
|
16
16
|
*
|
17
17
|
* This file is part of Routr.
|
@@ -42,7 +42,7 @@ const checkAccess = (accessRequest) => __awaiter(void 0, void 0, void 0, functio
|
|
42
42
|
case types_1.RoutingDirection.FROM_PSTN:
|
43
43
|
return (0, exports.checkAccessFromPSTN)(apiClient, request, callee);
|
44
44
|
case types_1.RoutingDirection.UNKNOWN:
|
45
|
-
return common_1.
|
45
|
+
return common_1.CommonResponse.createForbideenResponse();
|
46
46
|
}
|
47
47
|
});
|
48
48
|
exports.checkAccess = checkAccess;
|
@@ -58,11 +58,11 @@ const checkAgentOrPeerAccess = (request, caller) => __awaiter(void 0, void 0, vo
|
|
58
58
|
secret: credentials === null || credentials === void 0 ? void 0 : credentials.password
|
59
59
|
});
|
60
60
|
if (calcRes !== auth.response) {
|
61
|
-
return common_1.
|
61
|
+
return common_1.CommonResponse.createUnauthorizedResponse(request.message.requestUri.host);
|
62
62
|
}
|
63
63
|
}
|
64
64
|
else {
|
65
|
-
return common_1.
|
65
|
+
return common_1.CommonResponse.createUnauthorizedResponse(request.message.requestUri.host);
|
66
66
|
}
|
67
67
|
});
|
68
68
|
exports.checkAgentOrPeerAccess = checkAgentOrPeerAccess;
|
@@ -74,10 +74,10 @@ const checkAccessFromPSTN = (apiClient, request, callee) => __awaiter(void 0, vo
|
|
74
74
|
})).items[0];
|
75
75
|
// If the Trunk or Number doesn't exist reject the call
|
76
76
|
if (!callee || !trunk) {
|
77
|
-
return common_1.
|
77
|
+
return common_1.CommonResponse.createForbideenResponse();
|
78
78
|
}
|
79
79
|
if (callee.trunk.ref !== trunk.ref) {
|
80
|
-
return common_1.
|
80
|
+
return common_1.CommonResponse.createForbideenResponse();
|
81
81
|
}
|
82
82
|
// Verify that the IP is allowlist which means getting the access control list for the trunk
|
83
83
|
if (trunk.accessControlList) {
|
@@ -86,12 +86,12 @@ const checkAccessFromPSTN = (apiClient, request, callee) => __awaiter(void 0, vo
|
|
86
86
|
return common_1.IpUtils.hasIp(net, request.sender.host);
|
87
87
|
})[0];
|
88
88
|
if (!allow) {
|
89
|
-
return common_1.
|
89
|
+
return common_1.CommonResponse.createUnauthorizedResponseWithoutChallenge();
|
90
90
|
}
|
91
91
|
}
|
92
92
|
catch (e) {
|
93
93
|
logger.error(e);
|
94
|
-
return common_1.
|
94
|
+
return common_1.CommonResponse.createServerInternalErrorResponse();
|
95
95
|
}
|
96
96
|
}
|
97
97
|
// If the Trunk has a User/Password we must verify that the User/Password are valid
|
@@ -106,11 +106,11 @@ const checkAccessFromPSTN = (apiClient, request, callee) => __awaiter(void 0, vo
|
|
106
106
|
secret: trunk.inboundCredentials.password
|
107
107
|
});
|
108
108
|
if (calcRes !== auth.response) {
|
109
|
-
return common_1.
|
109
|
+
return common_1.CommonResponse.createUnauthorizedResponse(request.message.requestUri.host);
|
110
110
|
}
|
111
111
|
}
|
112
112
|
else {
|
113
|
-
return common_1.
|
113
|
+
return common_1.CommonResponse.createUnauthorizedResponse(request.message.requestUri.host);
|
114
114
|
}
|
115
115
|
}
|
116
116
|
});
|
package/dist/assertions.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.assertOnlyOneEnvIsSet = void 0;
|
4
4
|
/*
|
5
|
-
* Copyright (C)
|
5
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
6
6
|
* http://github.com/fonoster/routr
|
7
7
|
*
|
8
8
|
* This file is part of Routr
|
package/dist/envs.js
CHANGED
@@ -3,7 +3,7 @@ var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
4
4
|
exports.CONNECT_VERIFIER_OPTIONS = exports.CONNECT_VERIFIER_PUBLIC_KEY_PATH = exports.CONNECT_VERIFIER_ADDR = exports.API_ADDR = exports.LOCATION_ADDR = exports.BIND_ADDR = void 0;
|
5
5
|
/*
|
6
|
-
* Copyright (C)
|
6
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
7
7
|
* http://github.com/fonoster/routr
|
8
8
|
*
|
9
9
|
* This file is part of Routr.
|
package/dist/errors.js
CHANGED
@@ -25,7 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
26
|
exports.UnsuportedRoutingError = exports.ServiceUnavailableError = void 0;
|
27
27
|
/*
|
28
|
-
* Copyright (C)
|
28
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
29
29
|
* http://github.com/fonoster/routr
|
30
30
|
*
|
31
31
|
* This file is part of Routr
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { MessageRequest, Response } from "@routr/processor";
|
2
1
|
import { ILocationService } from "@routr/location";
|
2
|
+
import { MessageRequest, Response } from "@routr/processor";
|
3
3
|
import { CommonConnect as CC } from "@routr/common";
|
4
4
|
export declare const handleRegister: (apiClient: CC.APIClient, location: ILocationService) => (request: MessageRequest, res: Response) => Promise<void>;
|
@@ -1,4 +1,27 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -11,7 +34,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
35
|
exports.handleRegister = void 0;
|
13
36
|
/*
|
14
|
-
* Copyright (C)
|
37
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
15
38
|
* http://github.com/fonoster/routr
|
16
39
|
*
|
17
40
|
* This file is part of Routr
|
@@ -28,6 +51,7 @@ exports.handleRegister = void 0;
|
|
28
51
|
* See the License for the specific language governing permissions and
|
29
52
|
* limitations under the License.
|
30
53
|
*/
|
54
|
+
const grpc = __importStar(require("@grpc/grpc-js"));
|
31
55
|
const location_1 = require("@routr/location");
|
32
56
|
const processor_1 = require("@routr/processor");
|
33
57
|
const common_1 = require("@routr/common");
|
@@ -42,9 +66,9 @@ const handleRegister = (apiClient, location) => {
|
|
42
66
|
const auth = Object.assign({}, request.message.authorization);
|
43
67
|
auth.method = request.method;
|
44
68
|
const fromURI = request.message.from.address.uri;
|
45
|
-
const peerOrAgent = yield (0, utils_1.findResource)(apiClient, fromURI.host, fromURI.user);
|
69
|
+
const peerOrAgent = (yield (0, utils_1.findResource)(apiClient, fromURI.host, fromURI.user));
|
46
70
|
if (!peerOrAgent) {
|
47
|
-
return res.send(common_1.
|
71
|
+
return res.send(common_1.CommonResponse.createForbideenResponse());
|
48
72
|
}
|
49
73
|
const credentials = peerOrAgent.credentials;
|
50
74
|
// Calculate response and compare with the one send by the endpoint
|
@@ -53,25 +77,38 @@ const handleRegister = (apiClient, location) => {
|
|
53
77
|
secret: credentials === null || credentials === void 0 ? void 0 : credentials.password
|
54
78
|
});
|
55
79
|
if (calcRes !== auth.response) {
|
56
|
-
return res.send(common_1.
|
80
|
+
return res.send(common_1.CommonResponse.createUnauthorizedResponse(request.message.requestUri.host));
|
81
|
+
}
|
82
|
+
try {
|
83
|
+
yield location.addRoute({
|
84
|
+
aor: "aor" in peerOrAgent ? peerOrAgent.aor : processor_1.Target.getTargetAOR(request),
|
85
|
+
route: location_1.Helper.createRoute(request),
|
86
|
+
maxContacts: peerOrAgent.maxContacts
|
87
|
+
});
|
88
|
+
res.sendRegisterOk(request);
|
89
|
+
}
|
90
|
+
catch (e) {
|
91
|
+
if (e.code === grpc.status.INVALID_ARGUMENT) {
|
92
|
+
const details = e.details;
|
93
|
+
res.sendForbidden(details);
|
94
|
+
logger.verbose(details);
|
95
|
+
return;
|
96
|
+
}
|
97
|
+
logger.error(e);
|
98
|
+
res.sendInternalServerError();
|
57
99
|
}
|
58
|
-
// TODO: Needs test
|
59
|
-
yield location.addRoute({
|
60
|
-
aor: "aor" in peerOrAgent ? peerOrAgent.aor : processor_1.Target.getTargetAOR(request),
|
61
|
-
route: location_1.Helper.createRoute(request)
|
62
|
-
});
|
63
|
-
res.sendRegisterOk(request);
|
64
100
|
}
|
65
101
|
else if ((0, utils_1.hasXConnectObjectHeader)(request)) {
|
66
102
|
const connectToken = processor_1.Extensions.getHeaderValue(request, common_1.CommonTypes.ExtraHeader.CONNECT_TOKEN);
|
67
103
|
try {
|
68
104
|
const payload = (yield jwtVerifier.verify(connectToken));
|
69
105
|
if (!payload.allowedMethods.includes(common_1.Method.REGISTER)) {
|
70
|
-
return res.send(common_1.
|
106
|
+
return res.send(common_1.CommonResponse.createForbideenResponse());
|
71
107
|
}
|
72
108
|
yield location.addRoute({
|
73
109
|
aor: payload.aor,
|
74
|
-
route: location_1.Helper.createRoute(request)
|
110
|
+
route: location_1.Helper.createRoute(request),
|
111
|
+
maxContacts: payload.maxContacts || -1
|
75
112
|
});
|
76
113
|
res.sendRegisterOk(request);
|
77
114
|
}
|
@@ -79,11 +116,11 @@ const handleRegister = (apiClient, location) => {
|
|
79
116
|
logger.verbose("unable to validate connect token", {
|
80
117
|
originalError: e.message
|
81
118
|
});
|
82
|
-
res.send(common_1.
|
119
|
+
res.send(common_1.CommonResponse.createForbideenResponse());
|
83
120
|
}
|
84
121
|
}
|
85
122
|
else {
|
86
|
-
res.send(common_1.
|
123
|
+
res.send(common_1.CommonResponse.createUnauthorizedResponse(request.message.requestUri.host));
|
87
124
|
}
|
88
125
|
});
|
89
126
|
};
|
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.handleRegistry = void 0;
|
4
4
|
/*
|
5
|
-
* Copyright (C)
|
5
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
6
6
|
* http://github.com/fonoster/routr
|
7
7
|
*
|
8
8
|
* This file is part of Routr
|
package/dist/handlers/request.js
CHANGED
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.handleRequest = void 0;
|
13
13
|
/*
|
14
|
-
* Copyright (C)
|
14
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
15
15
|
* http://github.com/fonoster/routr
|
16
16
|
*
|
17
17
|
* This file is part of Routr
|
package/dist/router.js
CHANGED
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.router = void 0;
|
13
13
|
/*
|
14
|
-
* Copyright (C)
|
14
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
15
15
|
* http://github.com/fonoster/routr
|
16
16
|
*
|
17
17
|
* This file is part of Routr.
|
@@ -49,12 +49,12 @@ function router(location, apiClient) {
|
|
49
49
|
const connectToken = processor_1.Extensions.getHeaderValue(request, common_1.CommonTypes.ExtraHeader.CONNECT_TOKEN);
|
50
50
|
try {
|
51
51
|
if (!jwtVerifier) {
|
52
|
-
return common_1.
|
52
|
+
return common_1.CommonResponse.createServerInternalErrorResponse();
|
53
53
|
}
|
54
54
|
const payload = (yield jwtVerifier.verify(connectToken));
|
55
55
|
const domain = yield (0, utils_1.findDomain)(apiClient, payload.domain);
|
56
56
|
if (!payload.allowedMethods.includes(common_1.Method.INVITE)) {
|
57
|
-
return common_1.
|
57
|
+
return common_1.CommonResponse.createForbideenResponse();
|
58
58
|
}
|
59
59
|
caller = {
|
60
60
|
apiVersion: common_1.CommonConnect.APIVersion.V2,
|
@@ -88,7 +88,7 @@ function router(location, apiClient) {
|
|
88
88
|
logger.verbose("unable to validate connect token", {
|
89
89
|
originalError: e.message
|
90
90
|
});
|
91
|
-
return common_1.
|
91
|
+
return common_1.CommonResponse.createForbideenResponse();
|
92
92
|
}
|
93
93
|
}
|
94
94
|
else {
|
@@ -172,13 +172,12 @@ function fromPSTN(apiClient, location, callee, req) {
|
|
172
172
|
return __awaiter(this, void 0, void 0, function* () {
|
173
173
|
const sessionAffinityRef = processor_1.Extensions.getHeaderValue(req, callee.sessionAffinityHeader);
|
174
174
|
let backend;
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
175
|
+
const peer = (yield apiClient.peers.findBy({
|
176
|
+
fieldName: "aor",
|
177
|
+
fieldValue: callee.aorLink
|
178
|
+
})).items[0];
|
179
|
+
if (peer) {
|
180
180
|
backend = {
|
181
|
-
ref: peer.ref,
|
182
181
|
balancingAlgorithm: peer.balancingAlgorithm,
|
183
182
|
withSessionAffinity: peer.withSessionAffinity
|
184
183
|
};
|
@@ -260,7 +259,6 @@ function agentToPSTN(req, agent, calleeNumber) {
|
|
260
259
|
function agentToPeer(location, callee, req) {
|
261
260
|
return __awaiter(this, void 0, void 0, function* () {
|
262
261
|
const backend = {
|
263
|
-
ref: callee.ref,
|
264
262
|
balancingAlgorithm: callee.balancingAlgorithm,
|
265
263
|
withSessionAffinity: callee.withSessionAffinity
|
266
264
|
};
|
package/dist/runner.js
CHANGED
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
};
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
7
7
|
/*
|
8
|
-
* Copyright (C)
|
8
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
9
9
|
* http://github.com/fonoster/routr
|
10
10
|
*
|
11
11
|
* This file is part of Routr
|
package/dist/tailor.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.tailor = void 0;
|
4
4
|
/*
|
5
|
-
* Copyright (C)
|
5
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
6
6
|
* http://github.com/fonoster/routr
|
7
7
|
*
|
8
8
|
* This file is part of Routr
|
package/dist/tracer.js
CHANGED
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.init = void 0;
|
7
7
|
/*
|
8
|
-
* Copyright (C)
|
8
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
9
9
|
* http://github.com/fonoster/routr
|
10
10
|
*
|
11
11
|
* This file is part of Routr
|
package/dist/utils.js
CHANGED
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
38
38
|
exports.getVerifierImpl = exports.hasXConnectObjectHeader = exports.getSIPURI = exports.getTrunkURI = exports.createTrunkAuthentication = exports.createRemotePartyId = exports.createPAssertedIdentity = exports.getRoutingDirection = exports.findResource = exports.findNumberByTelUrl = exports.findDomain = exports.isKind = void 0;
|
39
39
|
/*
|
40
|
-
* Copyright (C)
|
40
|
+
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
41
41
|
* http://github.com/fonoster/routr
|
42
42
|
*
|
43
43
|
* This file is part of Routr
|
@@ -54,12 +54,13 @@ exports.getVerifierImpl = exports.hasXConnectObjectHeader = exports.getSIPURI =
|
|
54
54
|
* See the License for the specific language governing permissions and
|
55
55
|
* limitations under the License.
|
56
56
|
*/
|
57
|
+
const grpc = __importStar(require("@grpc/grpc-js"));
|
57
58
|
const jwt = __importStar(require("jsonwebtoken"));
|
59
|
+
const envs_1 = require("./envs");
|
58
60
|
const fs_1 = __importDefault(require("fs"));
|
59
61
|
const common_1 = require("@routr/common");
|
60
62
|
const processor_1 = require("@routr/processor");
|
61
63
|
const types_1 = require("./types");
|
62
|
-
const envs_1 = require("./envs");
|
63
64
|
// OMG, this is so ugly and hacky
|
64
65
|
const isKind = (res, kind) => {
|
65
66
|
if (res == null && kind === common_1.CommonConnect.Kind.UNKNOWN) {
|
@@ -94,27 +95,34 @@ const findNumberByTelUrl = (apiClient, telUrl) => __awaiter(void 0, void 0, void
|
|
94
95
|
});
|
95
96
|
exports.findNumberByTelUrl = findNumberByTelUrl;
|
96
97
|
const findResource = (apiClient, domainUri, userpart) => __awaiter(void 0, void 0, void 0, function* () {
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
98
|
+
try {
|
99
|
+
const domain = yield (0, exports.findDomain)(apiClient, domainUri);
|
100
|
+
// First, try to find a number
|
101
|
+
const number = yield (0, exports.findNumberByTelUrl)(apiClient, `tel:${userpart}`);
|
102
|
+
if (number != null)
|
103
|
+
return number;
|
104
|
+
// Next, try to find an agent
|
105
|
+
const agent = (yield apiClient.agents.findBy({
|
106
|
+
fieldName: "username",
|
107
|
+
fieldValue: userpart
|
108
|
+
})).items[0];
|
109
|
+
if (agent && agent.domain.ref != (domain === null || domain === void 0 ? void 0 : domain.ref)) {
|
110
|
+
// Not in the same domain
|
111
|
+
return null;
|
112
|
+
}
|
113
|
+
if (agent != null)
|
114
|
+
return agent;
|
115
|
+
// Next, try to find a peer
|
116
|
+
return (yield apiClient.peers.findBy({
|
117
|
+
fieldName: "username",
|
118
|
+
fieldValue: userpart
|
119
|
+
})).items[0];
|
120
|
+
}
|
121
|
+
catch (err) {
|
122
|
+
if (err.code === grpc.status.NOT_FOUND) {
|
123
|
+
return null;
|
124
|
+
}
|
125
|
+
}
|
118
126
|
});
|
119
127
|
exports.findResource = findResource;
|
120
128
|
const getRoutingDirection = (caller, callee) => {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@routr/connect",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.7.0",
|
4
4
|
"description": "Default processor",
|
5
5
|
"author": "Pedro Sanders <psanders@fonoster.com>",
|
6
6
|
"homepage": "https://github.com/fonoster/routr#readme",
|
@@ -28,9 +28,9 @@
|
|
28
28
|
"@opentelemetry/sdk-trace-base": "^1.0.4",
|
29
29
|
"@opentelemetry/sdk-trace-node": "^1.0.4",
|
30
30
|
"@opentelemetry/semantic-conventions": "^1.0.4",
|
31
|
-
"@routr/common": "^2.
|
32
|
-
"@routr/location": "^2.
|
33
|
-
"@routr/processor": "^2.
|
31
|
+
"@routr/common": "^2.7.0",
|
32
|
+
"@routr/location": "^2.7.0",
|
33
|
+
"@routr/processor": "^2.7.0",
|
34
34
|
"jsonwebtoken": "^9.0.0"
|
35
35
|
},
|
36
36
|
"devDependencies": {
|
@@ -49,5 +49,5 @@
|
|
49
49
|
"bugs": {
|
50
50
|
"url": "https://github.com/fonoster/routr/issues"
|
51
51
|
},
|
52
|
-
"gitHead": "
|
52
|
+
"gitHead": "46d067f61a0797fbab905073f70c7ab319979d1d"
|
53
53
|
}
|