@nimee/initialize-ms 0.0.2

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/.prettierrc ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "singleQuote": false,
3
+ "trailingComma": "es5",
4
+ "printWidth": 130,
5
+ "semi": true
6
+ }
@@ -0,0 +1,6 @@
1
+ declare class ServerInitializerFastify {
2
+ server: any;
3
+ initialize(serviceName?: string): Promise<any>;
4
+ listen(port?: number): Promise<any>;
5
+ }
6
+ export default ServerInitializerFastify;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const fastify_1 = __importDefault(require("fastify"));
16
+ const logger_1 = __importDefault(require("@nimee/logger"));
17
+ class ServerInitializerFastify {
18
+ initialize(serviceName) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ try {
21
+ this.server = (0, fastify_1.default)({ logger: logger_1.default });
22
+ this.server.register(require("@fastify/cors"), {
23
+ origin: ["http://localhost:8080", "http://127.0.0.1:8080", "http://localhost:3000"],
24
+ methods: ["GET", "PUT", "PATCH", "POST", "DELETE"],
25
+ });
26
+ return this.server;
27
+ }
28
+ catch (err) {
29
+ this.server.log.error(err);
30
+ process.exit(1);
31
+ }
32
+ });
33
+ }
34
+ listen(port) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ try {
37
+ yield this.server.listen({ port: port || 3000 });
38
+ return this.server;
39
+ }
40
+ catch (err) {
41
+ this.server.log.error(err);
42
+ process.exit(1);
43
+ }
44
+ });
45
+ }
46
+ }
47
+ exports.default = ServerInitializerFastify;
48
+ //# sourceMappingURL=fastify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../src/fastify.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAAmD;AACnD,2DAAmC;AACnC,MAAM,wBAAwB;IAEtB,UAAU,CAAC,WAAoB;;YACnC,IAAI;gBACF,IAAI,CAAC,MAAM,GAAG,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAN,gBAAM,EAAE,CAAC,CAAC;gBAElC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;oBAC7C,MAAM,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;oBACnF,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;iBACnD,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjB;QACH,CAAC;KAAA;IACK,MAAM,CAAC,IAAa;;YACxB,IAAI;gBACF,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;gBACjD,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjB;QACH,CAAC;KAAA;CACF;AAED,kBAAe,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare class AppInitializer {
2
+ httpServer: any;
3
+ port: number;
4
+ server: any;
5
+ private serviceName;
6
+ initialize(server: any, serverType: string, serviceName: string, entryPointsInitializer: any, connectionString: string, dbConnection: any, blackFeatureList: Array<string>, port: number): Promise<void>;
7
+ }
8
+ export default AppInitializer;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const fastify_1 = __importDefault(require("./fastify"));
16
+ const logger_1 = __importDefault(require("@nimee/logger"));
17
+ class AppInitializer {
18
+ initialize(server, serverType, serviceName, entryPointsInitializer, connectionString, dbConnection, blackFeatureList, port) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ this.serviceName = serviceName;
21
+ let fastify;
22
+ switch (serverType) {
23
+ case "fastify": {
24
+ fastify = new fastify_1.default();
25
+ this.server = yield fastify.initialize(serviceName);
26
+ break;
27
+ }
28
+ case "express": {
29
+ // this.server = await new ServerInitializerExpress().initialize(serviceName);
30
+ break;
31
+ }
32
+ }
33
+ if (dbConnection && !blackFeatureList.includes("mongo"))
34
+ yield dbConnection.connectToDB(connectionString, serviceName);
35
+ if (!blackFeatureList.includes("redis")) {
36
+ // await redisService.initRedisConnection(this.serviceName, `${this.serviceName}_`);
37
+ }
38
+ if (entryPointsInitializer) {
39
+ const allEntryPointInitializers = [entryPointsInitializer];
40
+ allEntryPointInitializers.forEach((entryPointInitializer) => {
41
+ logger_1.default.info(`About to start entry - entryPointInitializer of ${this.serviceName} ms`);
42
+ new entryPointInitializer().initialize(this.server);
43
+ });
44
+ logger_1.default.info(`entryPointInitializer succeeded in ${this.serviceName} ms`);
45
+ }
46
+ if (serverType)
47
+ yield this.server.listen({ port });
48
+ });
49
+ }
50
+ }
51
+ exports.default = AppInitializer;
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wDAAiD;AACjD,2DAAmC;AAEnC,MAAM,cAAc;IAKZ,UAAU,CACd,MAAW,EACX,UAAkB,EAClB,WAAmB,EACnB,sBAA2B,EAC3B,gBAAwB,EACxB,YAAiB,EACjB,gBAA+B,EAC/B,IAAY;;YAEZ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,OAAO,CAAC;YACZ,QAAQ,UAAU,EAAE;gBAClB,KAAK,SAAS,CAAC,CAAC;oBACd,OAAO,GAAG,IAAI,iBAAwB,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;oBACpD,MAAM;iBACP;gBACD,KAAK,SAAS,CAAC,CAAC;oBACd,8EAA8E;oBAC9E,MAAM;iBACP;aACF;YACD,IAAI,YAAY,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,MAAM,YAAY,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YACvH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACvC,oFAAoF;aACrF;YAED,IAAI,sBAAsB,EAAE;gBAC1B,MAAM,yBAAyB,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBAC3D,yBAAyB,CAAC,OAAO,CAAC,CAAC,qBAAqB,EAAE,EAAE;oBAC1D,gBAAM,CAAC,IAAI,CAAC,mDAAmD,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;oBACtF,IAAI,qBAAqB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBACH,gBAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;aAC1E;YACD,IAAI,UAAU;gBAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;KAAA;CACF;AAED,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const minta_error_handler_1 = require("@minta/minta-error-handler");
16
+ const mongoose_1 = __importDefault(require("mongoose"));
17
+ const logger_1 = __importDefault(require("@nimee/logger"));
18
+ let connectionIntance;
19
+ class MongooseConnection {
20
+ static getDefaultInstance() {
21
+ if (!connectionIntance) {
22
+ connectionIntance = new MongooseConnection();
23
+ }
24
+ return connectionIntance;
25
+ }
26
+ connectToDB(connectionString, serviceName) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ try {
29
+ if (this.db) {
30
+ logger_1.default.info("Mongo already Connected");
31
+ return this.db;
32
+ }
33
+ yield mongoose_1.default.connect(connectionString, { autoIndex: true, autoCreate: true }).catch(function (error) {
34
+ minta_error_handler_1.errorHandler.handleError(error);
35
+ });
36
+ logger_1.default.info(`Connected successfully to mongo server from ${serviceName}`);
37
+ this.db = mongoose_1.default.connection;
38
+ }
39
+ catch (error) {
40
+ throw new minta_error_handler_1.CustomError(`${serviceName}_mongoose_connection_failed`, 400, `connectToDb from ${serviceName} with error ${error.message}`, error);
41
+ }
42
+ });
43
+ }
44
+ }
45
+ exports.default = MongooseConnection.getDefaultInstance();
46
+ //# sourceMappingURL=mongooseConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongooseConnection.js","sourceRoot":"","sources":["../../src/mongooseConnection.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oEAAuE;AACvE,wDAAgD;AAChD,2DAAmC;AACnC,IAAI,iBAAsB,CAAC;AAE3B,MAAM,kBAAkB;IAEtB,MAAM,CAAC,kBAAkB;QACvB,IAAI,CAAC,iBAAiB,EAAE;YACtB,iBAAiB,GAAG,IAAI,kBAAkB,EAAE,CAAC;SAC9C;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACK,WAAW,CAAC,gBAAwB,EAAE,WAAmB;;YAC7D,IAAI;gBACF,IAAI,IAAI,CAAC,EAAE,EAAE;oBACX,gBAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACvC,OAAO,IAAI,CAAC,EAAE,CAAC;iBAChB;gBAED,MAAM,kBAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK;oBACnG,kCAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,gBAAM,CAAC,IAAI,CAAC,+CAA+C,WAAW,EAAE,CAAC,CAAC;gBAE1E,IAAI,CAAC,EAAE,GAAG,kBAAQ,CAAC,UAAU,CAAC;aAC/B;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,iCAAW,CACnB,GAAG,WAAW,6BAA6B,EAC3C,GAAG,EACH,oBAAoB,WAAW,eAAe,KAAK,CAAC,OAAO,EAAE,EAC7D,KAAK,CACN,CAAC;aACH;QACH,CAAC;KAAA;CACF;AACD,kBAAe,kBAAkB,CAAC,kBAAkB,EAAE,CAAC"}
package/nodemon.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "watch": ["src"],
3
+ "ext": "ts,json",
4
+ "ignore": ["src/**/*.spec.ts"],
5
+ "exec": "npm run build"
6
+ }
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@nimee/initialize-ms",
3
+ "version": "0.0.2",
4
+ "description": "init behavior for each ms",
5
+ "main": "dist/src/index.js",
6
+ "author": "dan goldberg",
7
+ "license": "ISC",
8
+ "scripts": {
9
+ "build-ts": "tsc",
10
+ "watch-ts": "tsc -w",
11
+ "build": "npm run build-ts",
12
+ "lint": "eslint -c ../../.eslintrc.js --ext .ts src/**",
13
+ "watch": "nodemon",
14
+ "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write"
15
+ },
16
+ "devDependencies": {
17
+ "@typescript-eslint/eslint-plugin": "^5.18.0",
18
+ "@typescript-eslint/eslint-plugin-tslint": "^5.18.0",
19
+ "@typescript-eslint/parser": "^5.18.0",
20
+ "eslint": "8.22.0",
21
+ "eslint-plugin-jsdoc": "^38.1.6",
22
+ "eslint-plugin-no-null": "^1.0.2",
23
+ "nodemon": "^1.19.1",
24
+ "typescript": "4.6.3"
25
+ },
26
+ "types": "dist/src/index.d.ts",
27
+ "dependencies": {
28
+ "@fastify/cors": "^8.1.1",
29
+ "@fastify/swagger": "^8.1.0",
30
+ "@nimee/logger": "^1.0.20",
31
+ "fastify": "^4.6.0",
32
+ "mongoose": "6.2.10"
33
+ }
34
+ }
package/src/fastify.ts ADDED
@@ -0,0 +1,31 @@
1
+ import Fastify, { FastifyInstance } from "fastify";
2
+ import logger from "@nimee/logger";
3
+ class ServerInitializerFastify {
4
+ server: any;
5
+ async initialize(serviceName?: string) {
6
+ try {
7
+ this.server = Fastify({ logger });
8
+
9
+ this.server.register(require("@fastify/cors"), {
10
+ origin: ["http://localhost:8080", "http://127.0.0.1:8080", "http://localhost:3000"],
11
+ methods: ["GET", "PUT", "PATCH", "POST", "DELETE"],
12
+ });
13
+
14
+ return this.server;
15
+ } catch (err) {
16
+ this.server.log.error(err);
17
+ process.exit(1);
18
+ }
19
+ }
20
+ async listen(port?: number) {
21
+ try {
22
+ await this.server.listen({ port: port || 3000 });
23
+ return this.server;
24
+ } catch (err) {
25
+ this.server.log.error(err);
26
+ process.exit(1);
27
+ }
28
+ }
29
+ }
30
+
31
+ export default ServerInitializerFastify;
package/src/index.ts ADDED
@@ -0,0 +1,49 @@
1
+ import ServerInitializerFastify from "./fastify";
2
+ import logger from "@nimee/logger";
3
+
4
+ class AppInitializer {
5
+ public httpServer: any;
6
+ public port: number;
7
+ public server: any;
8
+ private serviceName: string;
9
+ async initialize(
10
+ server: any,
11
+ serverType: string,
12
+ serviceName: string,
13
+ entryPointsInitializer: any,
14
+ connectionString: string,
15
+ dbConnection: any,
16
+ blackFeatureList: Array<string>,
17
+ port: number
18
+ ) {
19
+ this.serviceName = serviceName;
20
+ let fastify;
21
+ switch (serverType) {
22
+ case "fastify": {
23
+ fastify = new ServerInitializerFastify();
24
+ this.server = await fastify.initialize(serviceName);
25
+ break;
26
+ }
27
+ case "express": {
28
+ // this.server = await new ServerInitializerExpress().initialize(serviceName);
29
+ break;
30
+ }
31
+ }
32
+ if (dbConnection && !blackFeatureList.includes("mongo")) await dbConnection.connectToDB(connectionString, serviceName);
33
+ if (!blackFeatureList.includes("redis")) {
34
+ // await redisService.initRedisConnection(this.serviceName, `${this.serviceName}_`);
35
+ }
36
+
37
+ if (entryPointsInitializer) {
38
+ const allEntryPointInitializers = [entryPointsInitializer];
39
+ allEntryPointInitializers.forEach((entryPointInitializer) => {
40
+ logger.info(`About to start entry - entryPointInitializer of ${this.serviceName} ms`);
41
+ new entryPointInitializer().initialize(this.server);
42
+ });
43
+ logger.info(`entryPointInitializer succeeded in ${this.serviceName} ms`);
44
+ }
45
+ if (serverType) await this.server.listen({ port });
46
+ }
47
+ }
48
+
49
+ export default AppInitializer;
@@ -0,0 +1,38 @@
1
+ import { CustomError, errorHandler } from "@minta/minta-error-handler";
2
+ import mongoose, { Connection } from "mongoose";
3
+ import logger from "@nimee/logger";
4
+ let connectionIntance: any;
5
+
6
+ class MongooseConnection {
7
+ db: Connection;
8
+ static getDefaultInstance() {
9
+ if (!connectionIntance) {
10
+ connectionIntance = new MongooseConnection();
11
+ }
12
+
13
+ return connectionIntance;
14
+ }
15
+ async connectToDB(connectionString: string, serviceName: string) {
16
+ try {
17
+ if (this.db) {
18
+ logger.info("Mongo already Connected");
19
+ return this.db;
20
+ }
21
+
22
+ await mongoose.connect(connectionString, { autoIndex: true, autoCreate: true }).catch(function (error) {
23
+ errorHandler.handleError(error);
24
+ });
25
+ logger.info(`Connected successfully to mongo server from ${serviceName}`);
26
+
27
+ this.db = mongoose.connection;
28
+ } catch (error) {
29
+ throw new CustomError(
30
+ `${serviceName}_mongoose_connection_failed`,
31
+ 400,
32
+ `connectToDb from ${serviceName} with error ${error.message}`,
33
+ error
34
+ );
35
+ }
36
+ }
37
+ }
38
+ export default MongooseConnection.getDefaultInstance();
package/tsconfig.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "compileOnSave": true,
3
+ "compilerOptions": {
4
+ "module": "commonjs",
5
+ "esModuleInterop": true,
6
+ "declaration": true,
7
+ "target": "es6",
8
+ "noImplicitAny": true,
9
+ "skipLibCheck": true,
10
+ "moduleResolution": "node",
11
+ "sourceMap": true,
12
+ "outDir": "./dist",
13
+ "baseUrl": "./",
14
+ "rootDir": "./",
15
+ }
16
+ }