temba 0.8.2 → 0.9.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/config/index.js +64 -73
- package/dist/config/index.js.map +1 -0
- package/dist/delay/middleware.js +14 -14
- package/dist/delay/middleware.js.map +1 -0
- package/dist/errors/index.js +10 -18
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/middleware.js +9 -12
- package/dist/errors/middleware.js.map +1 -0
- package/dist/errors/types.js +13 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/logging/index.js +37 -36
- package/dist/logging/index.js.map +1 -0
- package/dist/queries/in-memory.js +48 -79
- package/dist/queries/in-memory.js.map +1 -0
- package/dist/queries/index.js +15 -19
- package/dist/queries/index.js.map +1 -0
- package/dist/queries/mongo.js +73 -277
- package/dist/queries/mongo.js.map +1 -0
- package/dist/routes/delete.js +37 -80
- package/dist/routes/delete.js.map +1 -0
- package/dist/routes/get.js +42 -81
- package/dist/routes/get.js.map +1 -0
- package/dist/routes/index.js +51 -90
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/post.js +41 -61
- package/dist/routes/post.js.map +1 -0
- package/dist/routes/put.js +38 -88
- package/dist/routes/put.js.map +1 -0
- package/dist/routes/validator.js +16 -19
- package/dist/routes/validator.js.map +1 -0
- package/dist/server.js +72 -75
- package/dist/server.js.map +1 -0
- package/dist/urls/middleware.js +26 -38
- package/dist/urls/middleware.js.map +1 -0
- package/dist/urls/urlParser.js +11 -20
- package/dist/urls/urlParser.js.map +1 -0
- package/package.json +21 -11
package/dist/urls/middleware.js
CHANGED
|
@@ -1,42 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.createResourceAndIdParser = createResourceAndIdParser;
|
|
9
|
-
exports.createValidateResourceMiddleware = createValidateResourceMiddleware;
|
|
10
|
-
|
|
11
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
-
|
|
13
|
-
var _urlParser = require("./urlParser");
|
|
14
|
-
|
|
15
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
-
|
|
17
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
18
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createValidateResourceMiddleware = exports.createResourceAndIdParser = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const urlParser_1 = require("./urlParser");
|
|
19
6
|
function createResourceAndIdParser(apiPrefix) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
7
|
+
return function getResourceAndId(req, _, next) {
|
|
8
|
+
const url = req.baseUrl.replace(apiPrefix, '');
|
|
9
|
+
let urlInfo = (0, urlParser_1.parseUrl)(url);
|
|
10
|
+
req.requestInfo = Object.assign(Object.assign({}, req.requestInfo), urlInfo);
|
|
11
|
+
return next();
|
|
12
|
+
};
|
|
26
13
|
}
|
|
27
|
-
|
|
14
|
+
exports.createResourceAndIdParser = createResourceAndIdParser;
|
|
28
15
|
function createValidateResourceMiddleware(validateResources, resourceNames) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
16
|
+
return function validateResource(req, _, next) {
|
|
17
|
+
if (!validateResources)
|
|
18
|
+
return next();
|
|
19
|
+
const { resourceName } = req.requestInfo;
|
|
20
|
+
if (!resourceName)
|
|
21
|
+
return next();
|
|
22
|
+
if (!resourceNames.includes(resourceName.toLowerCase())) {
|
|
23
|
+
const error = (0, errors_1.new404NotFoundError)(`'${resourceName}' is an unknown resource`);
|
|
24
|
+
return next(error);
|
|
25
|
+
}
|
|
26
|
+
return next();
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
exports.createValidateResourceMiddleware = createValidateResourceMiddleware;
|
|
30
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/urls/middleware.ts"],"names":[],"mappings":";;;AAAA,sCAA+C;AAC/C,2CAAsC;AAEtC,SAAS,yBAAyB,CAAC,SAAS;IAC1C,OAAO,SAAS,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI;QAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAC9C,IAAI,OAAO,GAAG,IAAA,oBAAQ,EAAC,GAAG,CAAC,CAAA;QAE3B,GAAG,CAAC,WAAW,mCAAQ,GAAG,CAAC,WAAW,GAAK,OAAO,CAAE,CAAA;QAEpD,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAqBQ,8DAAyB;AAnBlC,SAAS,gCAAgC,CAAC,iBAAiB,EAAE,aAAa;IACxE,OAAO,SAAS,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI;QAC3C,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,EAAE,CAAA;QAErC,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;QAExC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,EAAE,CAAA;QAEhC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE;YACvD,MAAM,KAAK,GAAG,IAAA,4BAAmB,EAC/B,IAAI,YAAY,0BAA0B,CAC3C,CAAA;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;SACnB;QAED,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAEmC,4EAAgC"}
|
package/dist/urls/urlParser.js
CHANGED
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.parseUrl = parseUrl;
|
|
7
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseUrl = void 0;
|
|
8
4
|
function parseUrl(url) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return {
|
|
19
|
-
resourceName: resourceName,
|
|
20
|
-
id: id
|
|
21
|
-
};
|
|
22
|
-
}
|
|
5
|
+
if (!url || (url && !url.trim()))
|
|
6
|
+
return { resourceName: null, id: null };
|
|
7
|
+
const urlSegments = url.split('/').filter((i) => i);
|
|
8
|
+
const resourceName = urlSegments.length > 0 ? urlSegments[0] : null;
|
|
9
|
+
const id = urlSegments.length > 1 ? urlSegments[1] : null;
|
|
10
|
+
return { resourceName, id };
|
|
11
|
+
}
|
|
12
|
+
exports.parseUrl = parseUrl;
|
|
13
|
+
//# sourceMappingURL=urlParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlParser.js","sourceRoot":"","sources":["../../src/urls/urlParser.ts"],"names":[],"mappings":";;;AAAA,SAAS,QAAQ,CAAC,GAAG;IACnB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAEzE,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAEnD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEzD,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;AAC7B,CAAC;AAEQ,4BAAQ"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "temba",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Get a simple MongoDB REST API with zero coding in less than 30 seconds (seriously).",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "
|
|
8
|
-
"start": "
|
|
7
|
+
"build": "tsc",
|
|
8
|
+
"start": "tsc && node dist/server.ts",
|
|
9
|
+
"test": "jest",
|
|
10
|
+
"lint": "eslint --ignore-path .eslintignore --ext .js,.ts .",
|
|
11
|
+
"format": "prettier --ignore-path .gitignore --write \"**/*.+(js|ts|json)\""
|
|
9
12
|
},
|
|
10
13
|
"repository": {
|
|
11
14
|
"type": "git",
|
|
@@ -20,16 +23,23 @@
|
|
|
20
23
|
"!__tests__"
|
|
21
24
|
],
|
|
22
25
|
"devDependencies": {
|
|
23
|
-
"@
|
|
24
|
-
"@
|
|
25
|
-
"@
|
|
26
|
-
"@
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
26
|
+
"@types/cors": "^2.8.12",
|
|
27
|
+
"@types/express": "^4.17.13",
|
|
28
|
+
"@types/jest": "^27.4.0",
|
|
29
|
+
"@types/morgan": "^1.9.3",
|
|
30
|
+
"@types/supertest": "^2.0.11",
|
|
31
|
+
"@typescript-eslint/eslint-plugin": "^5.10.0",
|
|
32
|
+
"@typescript-eslint/parser": "^5.10.0",
|
|
33
|
+
"eslint": "^8.7.0",
|
|
34
|
+
"eslint-config-prettier": "^8.3.0",
|
|
35
|
+
"jest": "^27.4.7",
|
|
36
|
+
"jest-extended": "^0.11.5",
|
|
37
|
+
"prettier": "^2.5.1",
|
|
38
|
+
"supertest": "^6.2.2",
|
|
39
|
+
"ts-jest": "^27.1.3",
|
|
40
|
+
"typescript": "^4.5.5"
|
|
30
41
|
},
|
|
31
42
|
"dependencies": {
|
|
32
|
-
"@babel/runtime": "^7.15.4",
|
|
33
43
|
"@rakered/mongo": "^1.6.0",
|
|
34
44
|
"connect-pause": "^0.1.0",
|
|
35
45
|
"cors": "^2.8.5",
|