@ecdt/server-common 1.0.5 → 1.0.6
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 +8 -1
- package/package.json +1 -1
- package/src/index.d.ts +4 -2
- package/src/services/corsService.js +16 -6
package/README.md
CHANGED
|
@@ -34,7 +34,8 @@ Retorna o middleware de CORS padrão dos servidores Econodata (baseado no pacote
|
|
|
34
34
|
|
|
35
35
|
| Opção | Tipo | Descrição |
|
|
36
36
|
|---|---|---|
|
|
37
|
-
| `origins` | `string[]`
|
|
37
|
+
| `origins` | `string[]` | Origins permitidas. Requisições de outras origins não recebem os headers CORS (o navegador bloqueia a resposta). Obrigatório se `econodataOrigins` não for `true` |
|
|
38
|
+
| `econodataOrigins` | `boolean` | Permite todas as origins `https` do domínio `econodata.com.br` (qualquer subdomínio, ex: `https://app.econodata.com.br`, `https://api.hml.econodata.com.br`) |
|
|
38
39
|
| `extraHeaders` | `string[]` | Headers adicionais além dos padrões |
|
|
39
40
|
| `headers` | `string[]` | Lista **exata** de headers permitidos — substitui os padrões. Não combinar com `extraHeaders` |
|
|
40
41
|
| `methods` | `string[]` | Lista **exata** de métodos permitidos. Default: todos (`GET, HEAD, PUT, PATCH, POST, DELETE, OPTIONS`) |
|
|
@@ -48,6 +49,12 @@ const { expressCors } = require("@ecdt/server-common");
|
|
|
48
49
|
// Configuração mínima
|
|
49
50
|
app.use(expressCors({ origins: ["https://app.econodata.com.br"] }));
|
|
50
51
|
|
|
52
|
+
// Todas as origins do domínio econodata.com.br (qualquer subdomínio)
|
|
53
|
+
app.use(expressCors({ econodataOrigins: true }));
|
|
54
|
+
|
|
55
|
+
// Combinando econodataOrigins com origins extras
|
|
56
|
+
app.use(expressCors({ econodataOrigins: true, origins: ["http://localhost:3000"] }));
|
|
57
|
+
|
|
51
58
|
// Headers extras além dos padrões
|
|
52
59
|
app.use(expressCors({ origins: [...], extraHeaders: ["X-Custom-Header"] }));
|
|
53
60
|
|
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -8,8 +8,10 @@ declare module '@ecdt/server-common' {
|
|
|
8
8
|
export function expressCommonMiddlewares(): (req: unknown, res: unknown, next: (err?: unknown) => void) => void;
|
|
9
9
|
|
|
10
10
|
export interface ExpressCorsOptions {
|
|
11
|
-
/** Origins permitidas (ex: ["https://app.econodata.com.br"]). Obrigatório. */
|
|
12
|
-
origins
|
|
11
|
+
/** Origins permitidas (ex: ["https://app.econodata.com.br"]). Obrigatório se econodataOrigins não for true. */
|
|
12
|
+
origins?: string[];
|
|
13
|
+
/** Permite todas as origins https do domínio econodata.com.br (qualquer subdomínio). */
|
|
14
|
+
econodataOrigins?: boolean;
|
|
13
15
|
/** Headers adicionais além dos padrões (Authorization, Content-Type, X-Requested-With). */
|
|
14
16
|
extraHeaders?: string[];
|
|
15
17
|
/** Lista exata de headers permitidos — substitui os padrões. Não combinar com extraHeaders. */
|
|
@@ -2,17 +2,22 @@ const cors = require("cors");
|
|
|
2
2
|
|
|
3
3
|
const DEFAULT_HEADERS = ["Authorization", "Content-Type", "X-Requested-With"];
|
|
4
4
|
|
|
5
|
+
// Qualquer subdomínio (em qualquer nível) de econodata.com.br via https, incluindo o domínio raiz
|
|
6
|
+
const ECONODATA_ORIGINS_REGEX = /^https:\/\/([a-z0-9-]+\.)*econodata\.com\.br$/;
|
|
7
|
+
|
|
5
8
|
/**
|
|
6
9
|
* @param {object} options
|
|
7
|
-
* @param {string[]} options.origins - Origins permitidas (ex: ["https://app.econodata.com.br"])
|
|
10
|
+
* @param {string[]} [options.origins] - Origins permitidas (ex: ["https://app.econodata.com.br"])
|
|
11
|
+
* @param {boolean} [options.econodataOrigins] - Permite todas as origins https do domínio econodata.com.br (qualquer subdomínio)
|
|
8
12
|
* @param {string[]} [options.extraHeaders] - Headers adicionais além dos padrões
|
|
9
13
|
* @param {string[]} [options.headers] - Lista exata de headers (ignora os padrões e extraHeaders)
|
|
10
14
|
* @param {string[]} [options.methods] - Lista exata de métodos permitidos (default: todos)
|
|
11
15
|
* @returns middleware do express
|
|
12
16
|
*/
|
|
13
|
-
function expressCors({ origins, extraHeaders, headers, methods } = {}) {
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
function expressCors({ origins, econodataOrigins, extraHeaders, headers, methods } = {}) {
|
|
18
|
+
const hasOrigins = Array.isArray(origins) && origins.length > 0;
|
|
19
|
+
if (!hasOrigins && !econodataOrigins) {
|
|
20
|
+
throw new Error("expressCors: informe 'origins' (array com pelo menos uma origin) e/ou 'econodataOrigins: true'");
|
|
16
21
|
}
|
|
17
22
|
if (headers && extraHeaders) {
|
|
18
23
|
throw new Error("expressCors: use 'headers' OU 'extraHeaders', não os dois ao mesmo tempo");
|
|
@@ -20,12 +25,17 @@ function expressCors({ origins, extraHeaders, headers, methods } = {}) {
|
|
|
20
25
|
|
|
21
26
|
const allowedHeaders = headers ?? [...DEFAULT_HEADERS, ...(extraHeaders ?? [])];
|
|
22
27
|
|
|
28
|
+
const allowedOrigins = [
|
|
29
|
+
...(hasOrigins ? origins : []),
|
|
30
|
+
...(econodataOrigins ? [ECONODATA_ORIGINS_REGEX] : []),
|
|
31
|
+
];
|
|
32
|
+
|
|
23
33
|
return cors({
|
|
24
|
-
origin:
|
|
34
|
+
origin: allowedOrigins,
|
|
25
35
|
credentials: true,
|
|
26
36
|
allowedHeaders,
|
|
27
37
|
methods: methods ?? ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE", "OPTIONS"],
|
|
28
38
|
});
|
|
29
39
|
}
|
|
30
40
|
|
|
31
|
-
module.exports = { expressCors, DEFAULT_HEADERS };
|
|
41
|
+
module.exports = { expressCors, DEFAULT_HEADERS, ECONODATA_ORIGINS_REGEX };
|