itrm-tools 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,2 +1,2 @@
1
1
  # itrm-tools
2
- Library developed by Intelligent Trading Machines for building robust APIs
2
+ Library design for developing API Services
@@ -1,13 +1,16 @@
1
1
  import { Express } from 'express';
2
2
  import { APIRequest } from './APIRequest';
3
+ import { ExpressConfiguration } from './ExpressConfiguration';
3
4
  export declare namespace ITRMAPIServiceGlobal {
4
5
  var memory: any;
5
6
  var service: APIService | undefined;
6
7
  var requests: any;
8
+ var whitelist: string[];
7
9
  }
8
10
  export interface APIServiceConfig {
9
11
  name: string;
10
12
  port: string | number;
13
+ express: ExpressConfiguration;
11
14
  }
12
15
  export interface APIServiceResponse {
13
16
  status: string;
@@ -15,9 +18,11 @@ export interface APIServiceResponse {
15
18
  error?: any;
16
19
  }
17
20
  export declare class APIService {
18
- protected config: APIServiceConfig;
19
21
  protected server: any;
20
22
  protected app: Express;
23
+ protected name: string;
24
+ protected port: number | string;
25
+ protected config: ExpressConfiguration;
21
26
  constructor(config: APIServiceConfig);
22
27
  init(): void;
23
28
  addRequest(request: APIRequest): Promise<void>;
@@ -19,17 +19,19 @@ var ITRMAPIServiceGlobal;
19
19
  ITRMAPIServiceGlobal.memory = {};
20
20
  ITRMAPIServiceGlobal.service = undefined;
21
21
  ITRMAPIServiceGlobal.requests = {};
22
+ ITRMAPIServiceGlobal.whitelist = [];
22
23
  })(ITRMAPIServiceGlobal = exports.ITRMAPIServiceGlobal || (exports.ITRMAPIServiceGlobal = {}));
23
24
  class APIService {
24
25
  constructor(config) {
25
26
  this.server = undefined;
26
27
  this.app = (0, express_1.default)();
27
- this.config = config;
28
- this.init();
28
+ this.name = config.name;
29
+ this.port = config.port;
30
+ this.config = config.express;
29
31
  }
30
32
  init() {
31
33
  ITRMAPIServiceGlobal.service = this;
32
- this.app.use(express_1.default.json());
34
+ this.config.apply(this.app);
33
35
  this.app.get('/', (req, res) => {
34
36
  return res.send('Server working!');
35
37
  });
@@ -42,8 +44,8 @@ class APIService {
42
44
  }
43
45
  run(init) {
44
46
  return new Promise((resolve, reject) => {
45
- this.server = this.app.listen(this.config.port, () => __awaiter(this, void 0, void 0, function* () {
46
- console.log(`⚡️[server]: Server is running at http://localhost:${this.config.port}`);
47
+ this.server = this.app.listen(this.port, () => __awaiter(this, void 0, void 0, function* () {
48
+ console.log(`⚡️[server]: Server is running at http://localhost:${this.port}`);
47
49
  try {
48
50
  yield init();
49
51
  resolve({ status: 'Ok', message: 'Server has been Initialized' });
@@ -1 +1 @@
1
- {"version":3,"file":"APIService.js","sourceRoot":"","sources":["../../src/api/APIService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"APIService.js","sourceRoot":"","sources":["../../src/api/APIService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Express } from 'express';
2
+ export interface ExpressConfiguration {
3
+ apply(app: Express): void;
4
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=APIChecker.js.map
3
+ //# sourceMappingURL=ExpressConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpressConfiguration.js","sourceRoot":"","sources":["../../src/api/ExpressConfiguration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { Express } from "express";
2
+ import { ExpressConfiguration } from "../ExpressConfiguration";
3
+ export declare class ExpressStandardConfiguration implements ExpressConfiguration {
4
+ apply(app: Express): void;
5
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ExpressStandardConfiguration = void 0;
7
+ const cors_1 = __importDefault(require("cors"));
8
+ const body_parser_1 = __importDefault(require("body-parser"));
9
+ const APIService_1 = require("../APIService");
10
+ class ExpressStandardConfiguration {
11
+ apply(app) {
12
+ app.use((0, cors_1.default)({
13
+ origin: function (origin, callback) {
14
+ let whitelist = APIService_1.ITRMAPIServiceGlobal.whitelist;
15
+ if (whitelist.length == 0 || (origin && whitelist.indexOf(origin) !== -1))
16
+ callback(null, true);
17
+ else
18
+ callback(new Error('Not allowed by CORS'), false);
19
+ }
20
+ }));
21
+ app.use(body_parser_1.default.json({ limit: '50mb' }));
22
+ app.use(body_parser_1.default.urlencoded({ limit: '50mb', extended: true }));
23
+ }
24
+ }
25
+ exports.ExpressStandardConfiguration = ExpressStandardConfiguration;
26
+ //# sourceMappingURL=ExpressStandardConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpressStandardConfiguration.js","sourceRoot":"","sources":["../../../src/api/express/ExpressStandardConfiguration.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AACxB,8DAAqC;AAErC,8CAAqD;AAErD,MAAa,4BAA4B;IAC9B,KAAK,CAAC,GAAY;QACrB,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC;YACT,MAAM,EAAE,UAAU,MAAM,EAAE,QAAQ;gBAC9B,IAAI,SAAS,GAAG,iCAAoB,CAAC,SAAS,CAAC;gBAC/C,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;oBAErB,QAAQ,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;SACJ,CAAC,CAAC,CAAC;QACJ,GAAG,CAAC,GAAG,CAAC,qBAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,GAAG,CAAC,qBAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;CACJ;AAdD,oEAcC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export { APIChecker as APIChecker } from './api/APIChecker';
1
+ export { ExpressConfiguration as ExpressConfiguration } from './api/ExpressConfiguration';
2
+ export { ExpressStandardConfiguration as ExpressStandardConfiguration } from './api/express/ExpressStandardConfiguration';
2
3
  export { APIRequest as APIRequest, RequestMethod as RequestMethod, RequestContext as RequestContext, GroupedParameters as GroupedParameters, APIRequestConfig as APIRequestConfig } from './api/APIRequest';
3
4
  export { APIServiceConfig as APIServiceConfig, APIService as APIService, APIServiceResponse as APIServiceResponse } from './api/APIService';
4
5
  export { GetRequest as GetRequest } from './api/request/GetRequest';
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeleteRequest = exports.PutRequest = exports.PostRequest = exports.GetRequest = exports.APIService = exports.RequestContext = exports.RequestMethod = exports.APIRequest = void 0;
3
+ exports.DeleteRequest = exports.PutRequest = exports.PostRequest = exports.GetRequest = exports.APIService = exports.RequestContext = exports.RequestMethod = exports.APIRequest = exports.ExpressStandardConfiguration = void 0;
4
+ var ExpressStandardConfiguration_1 = require("./api/express/ExpressStandardConfiguration");
5
+ Object.defineProperty(exports, "ExpressStandardConfiguration", { enumerable: true, get: function () { return ExpressStandardConfiguration_1.ExpressStandardConfiguration; } });
4
6
  var APIRequest_1 = require("./api/APIRequest");
5
7
  Object.defineProperty(exports, "APIRequest", { enumerable: true, get: function () { return APIRequest_1.APIRequest; } });
6
8
  Object.defineProperty(exports, "RequestMethod", { enumerable: true, get: function () { return APIRequest_1.RequestMethod; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,+CAA4M;AAAnM,wGAAA,UAAU,OAAc;AAAE,2GAAA,aAAa,OAAiB;AAAE,4GAAA,cAAc,OAAkB;AACnG,+CAA4I;AAA7F,wGAAA,UAAU,OAAc;AACvE,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,yDAAuE;AAA9D,0GAAA,WAAW,OAAe;AACnC,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,6DAA6E;AAApE,8GAAA,aAAa,OAAiB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,2FAA0H;AAAjH,4IAAA,4BAA4B,OAAgC;AACrE,+CAA4M;AAAnM,wGAAA,UAAU,OAAc;AAAE,2GAAA,aAAa,OAAiB;AAAE,4GAAA,cAAc,OAAkB;AACnG,+CAA4I;AAA7F,wGAAA,UAAU,OAAc;AACvE,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,yDAAuE;AAA9D,0GAAA,WAAW,OAAe;AACnC,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,6DAA6E;AAApE,8GAAA,aAAa,OAAiB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itrm-tools",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,16 +17,17 @@
17
17
  },
18
18
  "repository": {
19
19
  "type": "git",
20
- "url": "git+https://github.com/itrm-team/itrm-tools.git"
20
+ "url": "git+https://github.com/ITRMachines/itrm-tools.git"
21
21
  },
22
22
  "keywords": [],
23
23
  "author": "",
24
24
  "license": "ISC",
25
25
  "bugs": {
26
- "url": "https://github.com/itrm-team/itrm-tools/issues"
26
+ "url": "https://github.com/ITRMachines/itrm-tools/issues"
27
27
  },
28
- "homepage": "https://github.com/itrm-team/itrm-tools#readme",
28
+ "homepage": "https://github.com/ITRMachines/itrm-tools#readme",
29
29
  "devDependencies": {
30
+ "@types/cors": "^2.8.13",
30
31
  "@types/jest": "^29.2.5",
31
32
  "jest": "^29.3.1",
32
33
  "ts-jest": "^29.0.3"
@@ -35,6 +36,7 @@
35
36
  "@types/express": "^4.17.15",
36
37
  "@types/node": "^18.11.18",
37
38
  "axios": "^1.2.2",
39
+ "body-parser": "^1.20.1",
38
40
  "cors": "^2.8.5",
39
41
  "express": "^4.18.2",
40
42
  "rimraf": "^3.0.2",
@@ -1,3 +0,0 @@
1
- export interface APIChecker {
2
- initialize(): PromiseLike<any>;
3
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"APIChecker.js","sourceRoot":"","sources":["../../src/api/APIChecker.ts"],"names":[],"mappings":""}