wsp-ms-core 1.0.7 → 1.0.9

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.
@@ -0,0 +1,150 @@
1
+ // src/domain/contracts/ValueObject.ts
2
+ var ValueObject = class {
3
+ constructor(value) {
4
+ this.validate(value);
5
+ this._value = Object.freeze(value);
6
+ }
7
+ get value() {
8
+ return this._value;
9
+ }
10
+ toString() {
11
+ return String(this._value);
12
+ }
13
+ equals(vo) {
14
+ if (vo === null || vo === void 0)
15
+ return false;
16
+ if (vo.constructor !== this.constructor)
17
+ return false;
18
+ return vo.value === this._value;
19
+ }
20
+ };
21
+
22
+ // src/domain/value-objects/Language.ts
23
+ var _Language = class _Language extends ValueObject {
24
+ constructor(code) {
25
+ super(code.trim().toLowerCase());
26
+ }
27
+ validate(value) {
28
+ if (!_Language.SUPPORTED.includes(value)) {
29
+ throw new Error(`Language <${value}> is not supported`);
30
+ }
31
+ }
32
+ base() {
33
+ return this.value.split("-")[0];
34
+ }
35
+ static create(raw) {
36
+ const normalized = raw.trim().toLowerCase().replace("_", "-");
37
+ try {
38
+ return new _Language(normalized);
39
+ } catch (error) {
40
+ return _Language.DEFAULT;
41
+ }
42
+ }
43
+ };
44
+ _Language.SUPPORTED = [
45
+ "es",
46
+ "en",
47
+ "en-us",
48
+ "en-gb",
49
+ "en-au",
50
+ "en-ca",
51
+ "en-nz",
52
+ "en-ie",
53
+ "en-za",
54
+ "en-jm",
55
+ "en-bz",
56
+ "en-tt",
57
+ "pt-br",
58
+ "pt",
59
+ "es",
60
+ "es-ar",
61
+ "es-gt",
62
+ "es-cr",
63
+ "es-pa",
64
+ "es-do",
65
+ "es-mx",
66
+ "es-ve",
67
+ "es-co",
68
+ "es-pe",
69
+ "es-ec",
70
+ "es-cl",
71
+ "es-uy",
72
+ "es-py",
73
+ "es-bo",
74
+ "es-sv",
75
+ "es-hn",
76
+ "es-ni",
77
+ "es-pr"
78
+ ];
79
+ _Language.DEFAULT = new _Language("es");
80
+ _Language.ENGLISH = new _Language("en");
81
+ _Language.ENGLISH_UNITED_STATES = new _Language("en-us");
82
+ _Language.ENGLISH_UNITED_KINGDOM = new _Language("en-gb");
83
+ _Language.ENGLISH_AUSTRALIA = new _Language("en-au");
84
+ _Language.ENGLISH_CANADA = new _Language("en-ca");
85
+ _Language.ENGLISH_NEW_ZEALAND = new _Language("en-nz");
86
+ _Language.ENGLISH_IRELAND = new _Language("en-ie");
87
+ _Language.ENGLISH_SOUTH_AFRICA = new _Language("en-za");
88
+ _Language.ENGLISH_JAMAICA = new _Language("en-jm");
89
+ _Language.ENGLISH_BELIZE = new _Language("en-bz");
90
+ _Language.ENGLISH_TRINIDAD = new _Language("en-tt");
91
+ _Language.PORTUGUESE_BRAZIL = new _Language("pt-br");
92
+ _Language.PORTUGUESE_PORTUGAL = new _Language("pt");
93
+ _Language.SPANISH = new _Language("es");
94
+ _Language.SPANISH_ARGENTINA = new _Language("es-ar");
95
+ _Language.SPANISH_GUATEMALA = new _Language("es-gt");
96
+ _Language.SPANISH_COSTA_RICA = new _Language("es-cr");
97
+ _Language.SPANISH_PANAMA = new _Language("es-pa");
98
+ _Language.SPANISH_REPUBLICA_DOMINICANA = new _Language("es-do");
99
+ _Language.SPANISH_MEXICO = new _Language("es-mx");
100
+ _Language.SPANISH_VENEZUELA = new _Language("es-ve");
101
+ _Language.SPANISH_COLOMBIA = new _Language("es-co");
102
+ _Language.SPANISH_PERU = new _Language("es-pe");
103
+ _Language.SPANISH_ECUADOR = new _Language("es-ec");
104
+ _Language.SPANISH_CHILE = new _Language("es-cl");
105
+ _Language.SPANISH_URUGUAY = new _Language("es-uy");
106
+ _Language.SPANISH_PARAGUAY = new _Language("es-py");
107
+ _Language.SPANISH_BOLIVIA = new _Language("es-bo");
108
+ _Language.SPANISH_EL_SALVADOR = new _Language("es-sv");
109
+ _Language.SPANISH_HONDURAS = new _Language("es-hn");
110
+ _Language.SPANISH_NICARAGUA = new _Language("es-ni");
111
+ _Language.SPANISH_PUERTO_RICO = new _Language("es-pr");
112
+ var Language = _Language;
113
+
114
+ // src/infrastructure/express/ExpressAdapters.ts
115
+ function adaptExpressRoute(Controller) {
116
+ return async (req, res, next) => {
117
+ const rawLangHeader = req.headers["accept-language"] ?? req.headers["Accept-Language"] ?? "es";
118
+ const rawLang = Array.isArray(rawLangHeader) ? rawLangHeader[0] : rawLangHeader || "";
119
+ const lang = rawLang.split(",")[0].split(";")[0].trim().toLowerCase();
120
+ const httpRequest = {
121
+ headers: req.headers,
122
+ params: req.params,
123
+ query: Object.fromEntries(Object.entries(req.query).map(([k, v]) => [k, String(v)])),
124
+ lang,
125
+ body: req.body
126
+ };
127
+ try {
128
+ const controller = new Controller();
129
+ const { statusCode, body } = await controller.handle(httpRequest);
130
+ res.status(statusCode).json(body);
131
+ } catch (err) {
132
+ next(err);
133
+ }
134
+ };
135
+ }
136
+ function adaptExpressErrorHandler(errorManager) {
137
+ return (err, req, res, next) => {
138
+ const raw = req.headers["accept-language"] ?? req.headers["Accept-Language"] ?? "es";
139
+ const rawLang = Array.isArray(raw) ? raw[0] : raw ?? "";
140
+ const langCode = rawLang.split(",")[0].split(";")[0].trim().toLowerCase();
141
+ const result = errorManager.handle(err, Language.create(langCode));
142
+ const statusCode = typeof result.status === "number" ? result.status : 500;
143
+ res.status(statusCode).json({ message: result.message });
144
+ };
145
+ }
146
+ export {
147
+ adaptExpressErrorHandler,
148
+ adaptExpressRoute
149
+ };
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/domain/contracts/ValueObject.ts","../../../src/domain/value-objects/Language.ts","../../../src/infrastructure/express/ExpressAdapters.ts"],"sourcesContent":["\nexport abstract class ValueObject<TPrimitive = unknown> {\n\n protected readonly _value: TPrimitive;\n\n protected constructor(value: TPrimitive) {\n this.validate(value);\n this._value = Object.freeze(value);\n }\n\n protected abstract validate(value: TPrimitive): void;\n\n public get value(): TPrimitive {\n return this._value;\n }\n\n public toString(): string {\n return String(this._value);\n }\n\n public equals(vo?: ValueObject<TPrimitive> | null): boolean {\n if (vo === null || vo === undefined) return false;\n if (vo.constructor !== this.constructor) return false;\n return vo.value === this._value;\n }\n}","import { ValueObject } from '@domain/contracts/ValueObject';\n\nexport class Language extends ValueObject<string> {\n\n public static readonly SUPPORTED: readonly string[] = [\n 'es',\n 'en',\n 'en-us',\n 'en-gb',\n 'en-au',\n 'en-ca',\n 'en-nz',\n 'en-ie',\n 'en-za',\n 'en-jm',\n 'en-bz',\n 'en-tt',\n 'pt-br',\n 'pt',\n 'es',\n 'es-ar',\n 'es-gt',\n 'es-cr',\n 'es-pa',\n 'es-do',\n 'es-mx',\n 'es-ve',\n 'es-co',\n 'es-pe',\n 'es-ec',\n 'es-cl',\n 'es-uy',\n 'es-py',\n 'es-bo',\n 'es-sv',\n 'es-hn',\n 'es-ni',\n 'es-pr',\n ] as const;\n\n public static readonly DEFAULT: Language = new Language('es');\n public static readonly ENGLISH: Language = new Language('en');\n public static readonly ENGLISH_UNITED_STATES: Language = new Language('en-us');\n public static readonly ENGLISH_UNITED_KINGDOM: Language = new Language('en-gb');\n public static readonly ENGLISH_AUSTRALIA: Language = new Language('en-au');\n public static readonly ENGLISH_CANADA: Language = new Language('en-ca');\n public static readonly ENGLISH_NEW_ZEALAND: Language = new Language('en-nz');\n public static readonly ENGLISH_IRELAND: Language = new Language('en-ie');\n public static readonly ENGLISH_SOUTH_AFRICA: Language = new Language('en-za');\n public static readonly ENGLISH_JAMAICA: Language = new Language('en-jm');\n public static readonly ENGLISH_BELIZE: Language = new Language('en-bz');\n public static readonly ENGLISH_TRINIDAD: Language = new Language('en-tt');\n public static readonly PORTUGUESE_BRAZIL: Language = new Language('pt-br');\n public static readonly PORTUGUESE_PORTUGAL: Language = new Language('pt');\n public static readonly SPANISH: Language = new Language('es');\n public static readonly SPANISH_ARGENTINA: Language = new Language('es-ar');\n public static readonly SPANISH_GUATEMALA: Language = new Language('es-gt');\n public static readonly SPANISH_COSTA_RICA: Language = new Language('es-cr');\n public static readonly SPANISH_PANAMA: Language = new Language('es-pa');\n public static readonly SPANISH_REPUBLICA_DOMINICANA: Language = new Language('es-do');\n public static readonly SPANISH_MEXICO: Language = new Language('es-mx');\n public static readonly SPANISH_VENEZUELA: Language = new Language('es-ve');\n public static readonly SPANISH_COLOMBIA: Language = new Language('es-co');\n public static readonly SPANISH_PERU: Language = new Language('es-pe');\n public static readonly SPANISH_ECUADOR: Language = new Language('es-ec');\n public static readonly SPANISH_CHILE: Language = new Language('es-cl');\n public static readonly SPANISH_URUGUAY: Language = new Language('es-uy');\n public static readonly SPANISH_PARAGUAY: Language = new Language('es-py');\n public static readonly SPANISH_BOLIVIA: Language = new Language('es-bo');\n public static readonly SPANISH_EL_SALVADOR: Language = new Language('es-sv');\n public static readonly SPANISH_HONDURAS: Language = new Language('es-hn');\n public static readonly SPANISH_NICARAGUA: Language = new Language('es-ni');\n public static readonly SPANISH_PUERTO_RICO: Language = new Language('es-pr');\n\n private constructor(code: string) {\n super(code.trim().toLowerCase());\n }\n\n protected validate(value: string): void {\n if (!Language.SUPPORTED.includes(value)) {\n throw new Error(`Language <${value}> is not supported`);\n }\n }\n\n public base(): string {\n return this.value.split('-')[0];\n }\n\n public static create(raw: string): Language {\n const normalized = raw.trim().toLowerCase().replace('_', '-');\n try {\n return new Language(normalized);\n } catch (error: any) {\n return Language.DEFAULT; // default language\n }\n }\n\n}\n","import {Request, Response, NextFunction, RequestHandler, ErrorRequestHandler} from 'express';\nimport {HttpController, HttpRequest} from '@infrastructure/contracts/Http';\nimport {ErrorManager} from \"@infrastructure/errors/ErrorManager\";\nimport {Language} from \"@domain/value-objects/Language\";\n\nexport function adaptExpressRoute(Controller: new () => HttpController): RequestHandler {\n return async (req: Request, res: Response, next: NextFunction) => {\n const rawLangHeader = req.headers['accept-language'] ?? req.headers['Accept-Language'] ?? 'es';\n const rawLang = Array.isArray(rawLangHeader) ? rawLangHeader[0] : rawLangHeader || '';\n const lang = rawLang.split(',')[0].split(';')[0].trim().toLowerCase();\n const httpRequest: HttpRequest = {\n headers: req.headers as Record<string, string>,\n params: req.params,\n query: Object.fromEntries(Object.entries(req.query).map(([k, v]) => [k, String(v)])),\n lang,\n body: req.body,\n };\n try {\n const controller = new Controller();\n const {statusCode, body} = await controller.handle(httpRequest);\n res.status(statusCode).json(body);\n } catch (err) {\n next(err);\n }\n };\n}\n\nexport function adaptExpressErrorHandler(errorManager: ErrorManager): ErrorRequestHandler {\n return (err, req: Request, res: Response, next: NextFunction) => {\n const raw = req.headers['accept-language'] ?? req.headers['Accept-Language'] ?? 'es';\n const rawLang = Array.isArray(raw) ? raw[0] : raw ?? '';\n const langCode = rawLang.split(',')[0].split(';')[0].trim().toLowerCase();\n\n const result = errorManager.handle(err, Language.create(langCode));\n const statusCode = typeof result.status === 'number' ? result.status : 500;\n res.status(statusCode).json({ message: result.message });\n };\n}"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wsp-ms-core",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "",
5
5
  "author": "Wonasports",
6
6
  "license": "ISC",
@@ -12,6 +12,16 @@
12
12
  "dist",
13
13
  "README.md"
14
14
  ],
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/index.esm.js",
18
+ "require": "./dist/index.cjs"
19
+ },
20
+ "./express": {
21
+ "import": "./dist/infrastructure/express/index.esm.js",
22
+ "require": "./dist/infrastructure/express/index.cjs"
23
+ }
24
+ },
15
25
  "peerDependencies": {
16
26
  "express": "^4.18.2",
17
27
  "kafkajs": "^2.2.4",
@@ -52,7 +62,7 @@
52
62
  },
53
63
  "scripts": {
54
64
  "clean": "rimraf dist",
55
- "build": "npm run clean && tsup src/index.ts --dts --format esm,cjs --out-dir dist",
65
+ "build": "npm run clean && tsup --dts --format esm,cjs",
56
66
  "lint": "eslint \"src/**/*.ts\"",
57
67
  "test": "jest",
58
68
  "prepublishOnly": "npm run build && npm run test"