@atlantjs/backend 1.1.3 → 1.1.5

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.
@@ -1,7 +1,6 @@
1
1
  import { NodeEnvs } from "@atlantjs/arch";
2
- export declare const IAM_MOVINGAPP_REALM_PUBLIC_KEY_RS256: string | undefined;
3
- export declare const APP_PORT: number;
2
+ export declare const APP_PORT: string | string[];
4
3
  export declare const LOAD_MODULES: string[];
5
- export declare const CORS_ALLOWED_ORIGINS: string;
4
+ export declare const CORS_ALLOWED_ORIGINS: "*";
6
5
  export declare const ENVIRONMENT: NodeEnvs;
7
6
  export declare const isProdOrHomolog: () => boolean;
@@ -1,28 +1,32 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isProdOrHomolog = exports.ENVIRONMENT = exports.CORS_ALLOWED_ORIGINS = exports.LOAD_MODULES = exports.APP_PORT = exports.IAM_MOVINGAPP_REALM_PUBLIC_KEY_RS256 = void 0;
3
+ exports.isProdOrHomolog = exports.ENVIRONMENT = exports.CORS_ALLOWED_ORIGINS = exports.LOAD_MODULES = exports.APP_PORT = void 0;
4
+ const env_var_1 = require("../../../setup/env-var");
7
5
  const arch_1 = require("@atlantjs/arch");
8
- const env_var_1 = __importDefault(require("env-var"));
9
- exports.IAM_MOVINGAPP_REALM_PUBLIC_KEY_RS256 = env_var_1.default
10
- .get("KEYCLOAK_MOVINGAPP_REALM_PUBLIC_KEY_RS256")
11
- .asString();
12
- exports.APP_PORT = env_var_1.default.get("APP_PORT").required().asPortNumber();
13
- exports.LOAD_MODULES = env_var_1.default.get("LOAD_MODULES").required().asArray(",");
14
- exports.CORS_ALLOWED_ORIGINS = env_var_1.default
15
- .get("CORS_ALLOWED_ORIGINS")
16
- .default("*")
17
- .asString();
18
- exports.ENVIRONMENT = env_var_1.default
19
- .get("ENVIRONMENT")
20
- .required()
21
- .asEnum([
22
- arch_1.NodeEnvs.test,
23
- arch_1.NodeEnvs.development,
24
- arch_1.NodeEnvs.production,
25
- arch_1.NodeEnvs.homolog,
26
- ]);
6
+ exports.APP_PORT = new env_var_1.EnvVar({
7
+ name: "APP_PORT",
8
+ type: "port-number",
9
+ isRequired: true,
10
+ }).get();
11
+ exports.LOAD_MODULES = new env_var_1.EnvVar({
12
+ name: "LOAD_MODULES",
13
+ type: "array",
14
+ isRequired: true,
15
+ }).get();
16
+ exports.CORS_ALLOWED_ORIGINS = new env_var_1.EnvVar({
17
+ name: "CORS_ALLOWED_ORIGINS",
18
+ defaultValue: "*",
19
+ }).get();
20
+ exports.ENVIRONMENT = new env_var_1.EnvVar({
21
+ name: "ENVIRONMENT",
22
+ type: "enum",
23
+ isRequired: true,
24
+ referenceValues: [
25
+ arch_1.NodeEnvs.test,
26
+ arch_1.NodeEnvs.development,
27
+ arch_1.NodeEnvs.production,
28
+ arch_1.NodeEnvs.homolog,
29
+ ],
30
+ }).get();
27
31
  const isProdOrHomolog = () => [arch_1.NodeEnvs.homolog, arch_1.NodeEnvs.production].includes(exports.ENVIRONMENT);
28
32
  exports.isProdOrHomolog = isProdOrHomolog;
package/index.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  import "reflect-metadata";
2
2
  export { Injections } from "./backend/application/injections.abstract.type";
3
3
  export { getFromContainer, Get, JsonController, Res, Body, Post, Req, UseBefore, } from "routing-controllers";
4
+ export { NextFunction, Request, RequestHandler, Response } from "express";
5
+ export * from "class-validator";
4
6
  export { DatabaseConfigAbstract } from "./backend/application/databases/database.config";
5
7
  export { DatabaseHelperAbstract } from "./backend/application/databases/database.helper.abstract";
6
- export { IAM_MOVINGAPP_REALM_PUBLIC_KEY_RS256, APP_PORT, LOAD_MODULES, CORS_ALLOWED_ORIGINS, } from "./backend/application/env/env-vars";
8
+ export { APP_PORT, LOAD_MODULES, CORS_ALLOWED_ORIGINS, } from "./backend/application/env/env-vars";
9
+ export { EnvVar } from "./setup/env-var";
7
10
  export { InjectionsAbstract } from "./backend/application/injections.abstract";
8
11
  export { EntityAbstract } from "./backend/domain/entities/entity.abstract";
9
12
  export { MiddlewareHandlerAbstract } from "./backend/domain/middlewares/middleware.handler.abstract";
@@ -24,5 +27,3 @@ export { DefaultErrorHandlerMiddleware } from "./setup/server/default-error-hand
24
27
  export { Server } from "./setup/server/server";
25
28
  export { Container, inject, injectable } from "inversify";
26
29
  export { initializeApi } from "./setup";
27
- export { NextFunction, Request, RequestHandler, Response } from "express";
28
- export * from "class-validator";
package/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.initializeApi = exports.injectable = exports.inject = exports.Container = exports.Server = exports.DefaultErrorHandlerMiddleware = exports.CorsMiddleware = exports.BodyParserMiddleware = exports.DiContainerAbstract = exports.diContainer = exports.startContainer = exports.SchemaAbstract = exports.ResponseAbstract = exports.ValidatorAbstract = exports.PayloadAbstract = exports.ControllerAbstract = exports.UsecaseAbstract = exports.ServiceAbstract = exports.RepositoryAbstract = exports.ProviderAbstract = exports.MiddlewareHandlerAbstract = exports.EntityAbstract = exports.InjectionsAbstract = exports.CORS_ALLOWED_ORIGINS = exports.LOAD_MODULES = exports.APP_PORT = exports.IAM_MOVINGAPP_REALM_PUBLIC_KEY_RS256 = exports.DatabaseHelperAbstract = exports.DatabaseConfigAbstract = exports.UseBefore = exports.Req = exports.Post = exports.Body = exports.Res = exports.JsonController = exports.Get = exports.getFromContainer = void 0;
17
+ exports.initializeApi = exports.injectable = exports.inject = exports.Container = exports.Server = exports.DefaultErrorHandlerMiddleware = exports.CorsMiddleware = exports.BodyParserMiddleware = exports.DiContainerAbstract = exports.diContainer = exports.startContainer = exports.SchemaAbstract = exports.ResponseAbstract = exports.ValidatorAbstract = exports.PayloadAbstract = exports.ControllerAbstract = exports.UsecaseAbstract = exports.ServiceAbstract = exports.RepositoryAbstract = exports.ProviderAbstract = exports.MiddlewareHandlerAbstract = exports.EntityAbstract = exports.InjectionsAbstract = exports.EnvVar = exports.CORS_ALLOWED_ORIGINS = exports.LOAD_MODULES = exports.APP_PORT = exports.DatabaseHelperAbstract = exports.DatabaseConfigAbstract = exports.UseBefore = exports.Req = exports.Post = exports.Body = exports.Res = exports.JsonController = exports.Get = exports.getFromContainer = void 0;
18
18
  require("reflect-metadata");
19
19
  const setup_1 = require("./setup");
20
20
  (0, setup_1.synthesizePaths)();
@@ -27,15 +27,17 @@ Object.defineProperty(exports, "Body", { enumerable: true, get: function () { re
27
27
  Object.defineProperty(exports, "Post", { enumerable: true, get: function () { return routing_controllers_1.Post; } });
28
28
  Object.defineProperty(exports, "Req", { enumerable: true, get: function () { return routing_controllers_1.Req; } });
29
29
  Object.defineProperty(exports, "UseBefore", { enumerable: true, get: function () { return routing_controllers_1.UseBefore; } });
30
+ __exportStar(require("class-validator"), exports);
30
31
  var database_config_1 = require("./backend/application/databases/database.config");
31
32
  Object.defineProperty(exports, "DatabaseConfigAbstract", { enumerable: true, get: function () { return database_config_1.DatabaseConfigAbstract; } });
32
33
  var database_helper_abstract_1 = require("./backend/application/databases/database.helper.abstract");
33
34
  Object.defineProperty(exports, "DatabaseHelperAbstract", { enumerable: true, get: function () { return database_helper_abstract_1.DatabaseHelperAbstract; } });
34
35
  var env_vars_1 = require("./backend/application/env/env-vars");
35
- Object.defineProperty(exports, "IAM_MOVINGAPP_REALM_PUBLIC_KEY_RS256", { enumerable: true, get: function () { return env_vars_1.IAM_MOVINGAPP_REALM_PUBLIC_KEY_RS256; } });
36
36
  Object.defineProperty(exports, "APP_PORT", { enumerable: true, get: function () { return env_vars_1.APP_PORT; } });
37
37
  Object.defineProperty(exports, "LOAD_MODULES", { enumerable: true, get: function () { return env_vars_1.LOAD_MODULES; } });
38
38
  Object.defineProperty(exports, "CORS_ALLOWED_ORIGINS", { enumerable: true, get: function () { return env_vars_1.CORS_ALLOWED_ORIGINS; } });
39
+ var env_var_1 = require("./setup/env-var");
40
+ Object.defineProperty(exports, "EnvVar", { enumerable: true, get: function () { return env_var_1.EnvVar; } });
39
41
  var injections_abstract_1 = require("./backend/application/injections.abstract");
40
42
  Object.defineProperty(exports, "InjectionsAbstract", { enumerable: true, get: function () { return injections_abstract_1.InjectionsAbstract; } });
41
43
  var entity_abstract_1 = require("./backend/domain/entities/entity.abstract");
@@ -79,4 +81,3 @@ Object.defineProperty(exports, "inject", { enumerable: true, get: function () {
79
81
  Object.defineProperty(exports, "injectable", { enumerable: true, get: function () { return inversify_1.injectable; } });
80
82
  var setup_2 = require("./setup");
81
83
  Object.defineProperty(exports, "initializeApi", { enumerable: true, get: function () { return setup_2.initializeApi; } });
82
- __exportStar(require("class-validator"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlantjs/backend",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "main": "index.js",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
@@ -14,10 +14,6 @@
14
14
  "type": "git",
15
15
  "url": "git+ssh://git@github.com/MovingApp/lib-atlantjs-guardian.git"
16
16
  },
17
- "author": "movingapp",
18
- "bugs": {
19
- "url": "https://github.com/MovingApp/lib-atlantjs-guardian/issues"
20
- },
21
17
  "homepage": "https://github.com/MovingApp/lib-atlantjs-guardian#readme",
22
18
  "scripts": {
23
19
  "build": "rm -rf dist && tsc --project tsconfig.json && tscpaths -p tsconfig.json -s ./src -o ./dist",
@@ -32,44 +28,44 @@
32
28
  "test:unit:cov": "yarn test:unit --coverage --runInBand"
33
29
  },
34
30
  "dependencies": {
35
- "@atlantjs/arch": "^4.1.8",
31
+ "@atlantjs/arch": "^4.1.10",
36
32
  "body-parser": "^1.20.3",
37
33
  "class-transformer": "^0.5.1",
38
34
  "class-validator": "^0.14.1",
39
35
  "cookie-parser": "^1.4.7",
40
36
  "cors": "^2.8.5",
41
- "dotenv": "^16.4.5",
42
- "env-var": "^7.5.0",
43
- "express": "^4.21.1",
37
+ "dotenv": "^16.4.7",
38
+ "express": "^4.21.2",
44
39
  "helmet": "^8.0.0",
45
- "inversify": "^6.0.3",
40
+ "inversify": "^6.2.1",
46
41
  "module-alias": "^2.2.3",
47
42
  "reflect-metadata": "^0.2.2",
48
43
  "routing-controllers": "^0.10.4",
49
44
  "routing-controllers-openapi": "^4.0.0"
50
45
  },
51
46
  "devDependencies": {
52
- "@biomejs/biome": "1.8.3",
47
+ "@biomejs/biome": "1.9.4",
53
48
  "@types/axios": "^0.14.4",
54
- "@types/cookie-parser": "^1.4.7",
49
+ "@types/cookie-parser": "^1.4.8",
55
50
  "@types/cors": "^2.8.17",
56
51
  "@types/dotenv": "^8.2.3",
57
52
  "@types/express": "^5.0.0",
58
- "@types/jest": "^29.5.12",
53
+ "@types/jest": "^29.5.14",
59
54
  "@types/jsonwebtoken": "^9.0.7",
60
55
  "@types/jwk-to-pem": "^2.0.3",
61
- "@types/node": "^22.8.0",
56
+ "@types/node": "^22.10.2",
62
57
  "@types/uuid": "^10.0.0",
63
58
  "copyfiles": "^2.4.1",
64
59
  "cross-env": "^7.0.3",
65
60
  "jest": "^29.7.0",
61
+ "npm-check-updates": "^17.1.12",
66
62
  "ts-jest": "^29.2.5",
67
- "ts-node": "^10.9.1",
63
+ "ts-node": "^10.9.2",
68
64
  "ts-node-dev": "^2.0.0",
69
65
  "ts-prune": "^0.10.3",
70
66
  "tsconfig-paths": "^4.2.0",
71
67
  "tscpaths": "^0.0.9",
72
- "tslib": "^2.7.0",
73
- "typescript": "^5.2.2"
68
+ "tslib": "^2.8.1",
69
+ "typescript": "^5.7.2"
74
70
  }
75
71
  }
@@ -0,0 +1,2 @@
1
+ export declare class PickEnvError extends Error {
2
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PickEnvError = void 0;
4
+ class PickEnvError extends Error {
5
+ }
6
+ exports.PickEnvError = PickEnvError;
@@ -0,0 +1,8 @@
1
+ export type EnvTypes = "string" | "port-number" | "array" | "enum" | "url-string" | "int" | "float";
2
+ export interface PickEnvType<Type> {
3
+ name: string;
4
+ type?: EnvTypes;
5
+ isRequired?: boolean;
6
+ defaultValue?: Type;
7
+ referenceValues?: Type[];
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import { PickEnvType } from "./env-var.type";
2
+ export declare class EnvVar<Type extends string | string[]> {
3
+ private variableValue;
4
+ private variableName;
5
+ private variableType;
6
+ private variableReferenceValues?;
7
+ constructor({ name, type, isRequired, defaultValue, referenceValues, }: PickEnvType<Type>);
8
+ get(): Type;
9
+ private asArray;
10
+ private asBoolean;
11
+ private asEnum;
12
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnvVar = void 0;
4
+ const env_var_error_1 = require("./env-var.error");
5
+ const arch_1 = require("@atlantjs/arch");
6
+ class EnvVar {
7
+ constructor({ name, type = "string", isRequired = true, defaultValue, referenceValues, }) {
8
+ this.variableValue = process.env[name] || defaultValue;
9
+ this.variableName = name;
10
+ this.variableType = type;
11
+ this.variableReferenceValues = referenceValues;
12
+ if (arch_1.Guardian.isEmpty(this.variableValue) && isRequired.truthy()) {
13
+ throw new env_var_error_1.PickEnvError(`A variável de ambiente ${name} tem que ter seu valor definido`);
14
+ }
15
+ }
16
+ get() {
17
+ if (arch_1.Guardian.isEqual(this.variableType, "boolean")) {
18
+ this.asBoolean();
19
+ }
20
+ if (arch_1.Guardian.isEqual(this.variableType, "array")) {
21
+ this.asArray();
22
+ }
23
+ if (arch_1.Guardian.isNotUndefined(this.variableReferenceValues) &&
24
+ arch_1.Guardian.isEqual(this.variableType, "enum")) {
25
+ this.asEnum(this.variableReferenceValues);
26
+ }
27
+ return this.variableValue;
28
+ }
29
+ asArray() {
30
+ if (arch_1.Guardian.isEmpty(this.variableValue)) {
31
+ return [];
32
+ }
33
+ const array = this.variableValue.split(",");
34
+ return array;
35
+ }
36
+ asBoolean() {
37
+ if (arch_1.Guardian.isEmpty(this.variableValue)) {
38
+ return undefined;
39
+ }
40
+ if (arch_1.Guardian.isFalsy(arch_1.Guardian.isAnyOf(this.variableValue, ["false", "true"]))) {
41
+ throw new env_var_error_1.PickEnvError(`O valor da variável de ambiente ${this.variableValue} tem que ser "false" ou "true"`);
42
+ }
43
+ if (arch_1.Guardian.isEqual(this.variableValue, "true"))
44
+ return true;
45
+ return false;
46
+ }
47
+ asEnum(validValues) {
48
+ if (arch_1.Guardian.isUndefined(this.variableValue)) {
49
+ return "";
50
+ }
51
+ if (!validValues.includes(this.variableValue)) {
52
+ throw new env_var_error_1.PickEnvError(`A variável ${this.variableName} deve conter algum dos seguintes valores: [${validValues.join(", ")}]`);
53
+ }
54
+ return this.variableValue;
55
+ }
56
+ }
57
+ exports.EnvVar = EnvVar;
@@ -3,7 +3,7 @@ export declare class CorsMiddleware {
3
3
  private readonly corsSpecs;
4
4
  private readonly cors;
5
5
  constructor(corsSpecs: string);
6
- static create(corsSpecs?: string): RequestHandler;
6
+ static create(corsSpecs?: "*"): RequestHandler;
7
7
  use(request: Request, response: Response, next: NextFunction): void;
8
8
  private parseCorsAllowedOrigins;
9
9
  private stringToRegex;