@golemio/core 1.22.1 → 1.22.2-dev.2083548346
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/helpers/parser/queryParser.d.ts +4 -0
- package/dist/helpers/parser/queryParser.js +28 -0
- package/dist/helpers/parser/queryParser.js.map +1 -0
- package/dist/helpers/routing/AbstractGeoJsonRouter.js +10 -8
- package/dist/helpers/routing/AbstractGeoJsonRouter.js.map +1 -1
- package/dist/output-gateway/Validation.d.ts +1 -5
- package/dist/output-gateway/Validation.js +24 -24
- package/dist/output-gateway/Validation.js.map +1 -1
- package/dist/output-gateway/routes/GeoJsonRouter.js +10 -8
- package/dist/output-gateway/routes/GeoJsonRouter.js.map +1 -1
- package/package.json +5 -6
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseWithBrackets = void 0;
|
|
4
|
+
const querystring_1 = require("querystring");
|
|
5
|
+
/**
|
|
6
|
+
* Custom extension to querystring query parser to keep backward compatibility with array in url e.g. https://api?source[]=abc&source[]=def
|
|
7
|
+
*/
|
|
8
|
+
const parseWithBrackets = (str) => {
|
|
9
|
+
const parsed = (0, querystring_1.parse)(str);
|
|
10
|
+
const result = {};
|
|
11
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
12
|
+
// Remove [] suffix if present
|
|
13
|
+
const cleanKey = key.replace(/\[\]$/, "");
|
|
14
|
+
if (result[cleanKey]) {
|
|
15
|
+
// Key already exists, merge values
|
|
16
|
+
const existing = result[cleanKey];
|
|
17
|
+
result[cleanKey] = Array.isArray(existing)
|
|
18
|
+
? [...existing, ...(Array.isArray(value) ? value : [value])]
|
|
19
|
+
: [existing, ...(Array.isArray(value) ? value : [value])];
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
result[cleanKey] = value;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
exports.parseWithBrackets = parseWithBrackets;
|
|
28
|
+
//# sourceMappingURL=queryParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryParser.js","sourceRoot":"","sources":["../../../src/helpers/parser/queryParser.ts"],"names":[],"mappings":";;;AAAA,6CAAoC;AAEpC;;GAEG;AAEI,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAuB,EAAE;IAClE,MAAM,MAAM,GAAG,IAAA,mBAAK,EAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC/C,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;YAClB,mCAAmC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjE;aAAM;YACH,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;SAC5B;KACJ;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AApBW,QAAA,iBAAiB,qBAoB5B"}
|
|
@@ -49,16 +49,18 @@ class AbstractGeoJsonRouter extends AbstractRouter_1.AbstractRouter {
|
|
|
49
49
|
*/
|
|
50
50
|
this.initRoutes = async (expire = { maxAge: 6 * 60, staleWhileRevalidate: 5 }) => {
|
|
51
51
|
const idParam = await this.GetIdQueryParamWithCorrectType();
|
|
52
|
-
this.router.get("/", this.standardParams,
|
|
52
|
+
this.router.get("/", this.standardParams, (0, Validation_1.paginationLimitMiddleware)("GeoJsonRouter"), Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(expire?.maxAge, expire?.staleWhileRevalidate), this.GetAll);
|
|
53
53
|
this.router.get("/:id", [
|
|
54
54
|
// Previously set parameter of type according to the data's primary ID type
|
|
55
55
|
idParam,
|
|
56
56
|
], Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(expire?.maxAge, expire?.staleWhileRevalidate), this.GetOne);
|
|
57
57
|
};
|
|
58
58
|
this.GetAll = async (req, res, next) => {
|
|
59
|
+
const queryData = (0, express_validator_1.matchedData)(req);
|
|
59
60
|
// Parsing parameters
|
|
60
|
-
let ids =
|
|
61
|
-
let districts =
|
|
61
|
+
let ids = queryData.ids;
|
|
62
|
+
let districts = queryData.districts;
|
|
63
|
+
const limit = res.locals.limit;
|
|
62
64
|
if (districts) {
|
|
63
65
|
districts = this.ConvertToArray(districts);
|
|
64
66
|
}
|
|
@@ -66,17 +68,17 @@ class AbstractGeoJsonRouter extends AbstractRouter_1.AbstractRouter {
|
|
|
66
68
|
ids = this.ConvertToArray(ids);
|
|
67
69
|
}
|
|
68
70
|
try {
|
|
69
|
-
const coords = await (0, Geo_1.parseCoordinates)(
|
|
71
|
+
const coords = await (0, Geo_1.parseCoordinates)(queryData.latlng, queryData.range);
|
|
70
72
|
const data = await this.model.GetAll({
|
|
71
73
|
districts,
|
|
72
74
|
ids: ids,
|
|
73
75
|
lat: coords.lat,
|
|
74
|
-
limit:
|
|
76
|
+
limit: limit,
|
|
75
77
|
lng: coords.lng,
|
|
76
|
-
offset: Number(
|
|
78
|
+
offset: Number(queryData.offset),
|
|
77
79
|
range: coords.range,
|
|
78
|
-
updatedSince:
|
|
79
|
-
additionalFilters: this.GetAdditionalFilters(
|
|
80
|
+
updatedSince: queryData.updatedSince,
|
|
81
|
+
additionalFilters: this.GetAdditionalFilters(queryData),
|
|
80
82
|
});
|
|
81
83
|
res.status(200).send(data);
|
|
82
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractGeoJsonRouter.js","sourceRoot":"","sources":["../../../src/helpers/routing/AbstractGeoJsonRouter.ts"],"names":[],"mappings":";;;AAAA,qDAAiE;AAGjE,kDAA2C;AAC3C,4EAAwD;AACxD,oDAAoD;AACpD,wDAAiC;AAGjC,
|
|
1
|
+
{"version":3,"file":"AbstractGeoJsonRouter.js","sourceRoot":"","sources":["../../../src/helpers/routing/AbstractGeoJsonRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,8 @@ import { NextFunction, Request, Response } from "express";
|
|
|
9
9
|
* @returns Void, calls next() function
|
|
10
10
|
*/
|
|
11
11
|
export declare const checkErrors: ((import("express-validator/lib/base").Middleware & import("express-validator").ContextRunner) | ((req: Request, res: Response, next: NextFunction) => void))[];
|
|
12
|
-
/**
|
|
13
|
-
* Sets up pagination query parameters
|
|
14
|
-
*/
|
|
15
|
-
export declare const pagination: (import("express-validator").ValidationChain | ((req: Request, res: Response, next: NextFunction) => void))[];
|
|
16
12
|
/**
|
|
17
13
|
* Performs a check if limit of requested data is not exceeded, sets limit if not present
|
|
18
14
|
* @param routerName name passed to the returned Error object in case of failure
|
|
19
15
|
*/
|
|
20
|
-
export declare const paginationLimitMiddleware: (routerName?: string) => (req: Request, res: Response, next: NextFunction) => void;
|
|
16
|
+
export declare const paginationLimitMiddleware: (routerName?: string) => (import("express-validator").ValidationChain | ((req: Request, res: Response, next: NextFunction) => void))[];
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.paginationLimitMiddleware = exports.
|
|
4
|
-
const
|
|
3
|
+
exports.paginationLimitMiddleware = exports.checkErrors = void 0;
|
|
4
|
+
const CoreToken_1 = require("../helpers/ioc/CoreToken");
|
|
5
5
|
const errors_1 = require("@golemio/errors");
|
|
6
6
|
const express_validator_1 = require("express-validator");
|
|
7
|
+
const ioc_1 = require("./ioc");
|
|
7
8
|
/**
|
|
8
9
|
* Checks for errors in request parameters, using express-validator https://www.npmjs.com/package/express-validator
|
|
9
10
|
* Also checks if the request contains only the expected parameters
|
|
@@ -23,33 +24,32 @@ exports.checkErrors = [
|
|
|
23
24
|
next();
|
|
24
25
|
},
|
|
25
26
|
];
|
|
26
|
-
/**
|
|
27
|
-
* Sets up pagination query parameters
|
|
28
|
-
*/
|
|
29
|
-
exports.pagination = [
|
|
30
|
-
(0, express_validator_1.query)("limit").optional().isInt({ min: 1 }).not().isArray(),
|
|
31
|
-
(0, express_validator_1.query)("offset").optional().isInt({ min: 0 }).not().isArray(),
|
|
32
|
-
(req, res, next) => {
|
|
33
|
-
req.query.limit && (req.query.limit = parseInt(req.query.limit, 10).toString());
|
|
34
|
-
req.query.offset && (req.query.offset = parseInt(req.query.offset, 10).toString());
|
|
35
|
-
next();
|
|
36
|
-
},
|
|
37
|
-
];
|
|
38
27
|
/**
|
|
39
28
|
* Performs a check if limit of requested data is not exceeded, sets limit if not present
|
|
40
29
|
* @param routerName name passed to the returned Error object in case of failure
|
|
41
30
|
*/
|
|
42
31
|
const paginationLimitMiddleware = (routerName) => {
|
|
43
|
-
const maxLimit =
|
|
44
|
-
return
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
32
|
+
const maxLimit = +ioc_1.OutputGatewayContainer.resolve(CoreToken_1.CoreToken.SimpleConfig).getValue("env.PAGINATION_MAX_LIMIT", 10000);
|
|
33
|
+
return [
|
|
34
|
+
(0, express_validator_1.query)("limit")
|
|
35
|
+
.optional()
|
|
36
|
+
.isInt({ min: 1 })
|
|
37
|
+
.isInt({ max: maxLimit })
|
|
38
|
+
.withMessage(`Max limit allowed ${maxLimit}`)
|
|
39
|
+
.not()
|
|
40
|
+
.isArray()
|
|
41
|
+
.default(maxLimit),
|
|
42
|
+
(0, express_validator_1.query)("offset").optional().isInt({ min: 0 }).withMessage("Offset must be a non-negative integer").default(0),
|
|
43
|
+
(req, res, next) => {
|
|
44
|
+
const errors = (0, express_validator_1.validationResult)(req);
|
|
45
|
+
if (!errors.isEmpty()) {
|
|
46
|
+
const firstError = errors.array()[0];
|
|
47
|
+
const statusCode = firstError.msg.includes("Max limit allowed") ? 413 : 400;
|
|
48
|
+
return next(new errors_1.GeneralError("Pagination limit error", routerName || "BaseRouter", firstError.msg, statusCode));
|
|
49
|
+
}
|
|
50
|
+
next();
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
53
|
};
|
|
54
54
|
exports.paginationLimitMiddleware = paginationLimitMiddleware;
|
|
55
55
|
//# sourceMappingURL=Validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.js","sourceRoot":"","sources":["../../src/output-gateway/Validation.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Validation.js","sourceRoot":"","sources":["../../src/output-gateway/Validation.ts"],"names":[],"mappings":";;;AACA,wDAAmD;AACnD,4CAA+C;AAE/C,yDAAwE;AACxE,+BAA+C;AAE/C;;;;;;;;GAQG;AACU,QAAA,WAAW,GAAG;IACvB,IAAA,8BAAU,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YACnB,MAAM,IAAI,qBAAY,CAAC,kBAAkB,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;SAClG;QACD,IAAI,EAAE,CAAC;IACX,CAAC;CACJ,CAAC;AAEF;;;GAGG;AAEI,MAAM,yBAAyB,GAAG,CAAC,UAAmB,EAAE,EAAE;IAC7D,MAAM,QAAQ,GAAG,CAAC,4BAAsB,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,CAC5F,0BAA0B,EAC1B,KAAK,CACR,CAAC;IAEF,OAAO;QACH,IAAA,yBAAK,EAAC,OAAO,CAAC;aACT,QAAQ,EAAE;aACV,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;aACjB,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;aACxB,WAAW,CAAC,qBAAqB,QAAQ,EAAE,CAAC;aAC5C,GAAG,EAAE;aACL,OAAO,EAAE;aACT,OAAO,CAAC,QAAQ,CAAC;QACtB,IAAA,yBAAK,EAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5G,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC;YAErC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACnB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC5E,OAAO,IAAI,CAAC,IAAI,qBAAY,CAAC,wBAAwB,EAAE,UAAU,IAAI,YAAY,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;aACnH;YAED,IAAI,EAAE,CAAC;QACX,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AA5BW,QAAA,yBAAyB,6BA4BpC"}
|
|
@@ -46,16 +46,18 @@ class GeoJsonRouter extends BaseRouter_1.BaseRouter {
|
|
|
46
46
|
*/
|
|
47
47
|
this.initRoutes = async (expire = { maxAge: 6 * 60, staleWhileRevalidate: 5 }) => {
|
|
48
48
|
const idParam = await this.GetIdQueryParamWithCorrectType();
|
|
49
|
-
this.router.get("/", this.standardParams,
|
|
49
|
+
this.router.get("/", this.standardParams, (0, Validation_1.paginationLimitMiddleware)("GeoJsonRouter"), Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(expire.maxAge, expire.staleWhileRevalidate), this.GetAll);
|
|
50
50
|
this.router.get("/:id", [
|
|
51
51
|
// Previously set parameter of type according to the data's primary ID type
|
|
52
52
|
idParam,
|
|
53
53
|
], Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(expire.maxAge, expire.staleWhileRevalidate), this.GetOne);
|
|
54
54
|
};
|
|
55
55
|
this.GetAll = async (req, res, next) => {
|
|
56
|
+
const queryData = (0, express_validator_1.matchedData)(req);
|
|
56
57
|
// Parsing parameters
|
|
57
|
-
let ids =
|
|
58
|
-
let districts =
|
|
58
|
+
let ids = queryData.ids;
|
|
59
|
+
let districts = queryData.districts;
|
|
60
|
+
const limit = res.locals.limit;
|
|
59
61
|
if (districts) {
|
|
60
62
|
districts = this.ConvertToArray(districts);
|
|
61
63
|
}
|
|
@@ -63,17 +65,17 @@ class GeoJsonRouter extends BaseRouter_1.BaseRouter {
|
|
|
63
65
|
ids = this.ConvertToArray(ids);
|
|
64
66
|
}
|
|
65
67
|
try {
|
|
66
|
-
const coords = await (0, Geo_1.parseCoordinates)(
|
|
68
|
+
const coords = await (0, Geo_1.parseCoordinates)(queryData.latlng, queryData.range);
|
|
67
69
|
const data = await this.model.GetAll({
|
|
68
70
|
districts,
|
|
69
71
|
ids: ids,
|
|
70
72
|
lat: coords.lat,
|
|
71
|
-
limit:
|
|
73
|
+
limit: limit,
|
|
72
74
|
lng: coords.lng,
|
|
73
|
-
offset: Number(
|
|
75
|
+
offset: Number(queryData.offset),
|
|
74
76
|
range: coords.range,
|
|
75
|
-
updatedSince:
|
|
76
|
-
additionalFilters: this.GetAdditionalFilters(
|
|
77
|
+
updatedSince: queryData.updatedSince,
|
|
78
|
+
additionalFilters: this.GetAdditionalFilters(queryData),
|
|
77
79
|
});
|
|
78
80
|
res.status(200).send(data);
|
|
79
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoJsonRouter.js","sourceRoot":"","sources":["../../../src/output-gateway/routes/GeoJsonRouter.ts"],"names":[],"mappings":";;;AACA,gCAA2C;AAC3C,sCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"GeoJsonRouter.js","sourceRoot":"","sources":["../../../src/output-gateway/routes/GeoJsonRouter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/core",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.2-dev.2083548346",
|
|
4
4
|
"description": "Golemio Core Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"@azure/data-tables": "^13.3.0",
|
|
71
71
|
"@azure/identity": "^4.5.0",
|
|
72
72
|
"@azure/storage-blob": "^12.26.0",
|
|
73
|
-
"@golemio/errors": "2.0.
|
|
74
|
-
"@golemio/validator": "0.3.
|
|
73
|
+
"@golemio/errors": "2.0.8-dev.1931991008",
|
|
74
|
+
"@golemio/validator": "0.3.6-dev.1288217736",
|
|
75
75
|
"@google-cloud/storage": "^7.16.0",
|
|
76
76
|
"@opentelemetry/api": "^1.9.0",
|
|
77
77
|
"@opentelemetry/exporter-trace-otlp-grpc": "^0.204.0",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@opentelemetry/sdk-trace-base": "^2.0.1",
|
|
85
85
|
"@opentelemetry/sdk-trace-node": "^2.0.1",
|
|
86
86
|
"@types/amqplib": "^0.10.7",
|
|
87
|
-
"@types/express": "^
|
|
87
|
+
"@types/express": "^5.0.3",
|
|
88
88
|
"@types/geojson": "^7946.0.10",
|
|
89
89
|
"@types/luxon": "^2.3.1",
|
|
90
90
|
"@types/qs": "^6.9.18",
|
|
@@ -97,10 +97,9 @@
|
|
|
97
97
|
"content-type": "^1.0.4",
|
|
98
98
|
"debug": "3.1.0",
|
|
99
99
|
"dotenv": "^8.2.0",
|
|
100
|
-
"express": "^
|
|
100
|
+
"express": "^5.0.3",
|
|
101
101
|
"express-validator": "^7.0.1",
|
|
102
102
|
"fast-csv": "^4.3.6",
|
|
103
|
-
"fast-glob": "^3.2.5",
|
|
104
103
|
"geojson": "^0.5.0",
|
|
105
104
|
"html-entities": "^2.4.0",
|
|
106
105
|
"iconv-lite": "^0.6.2",
|