@mybuildex/pkg 0.8.0 → 0.9.0
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
|
@@ -51,6 +51,14 @@ createAuthMiddleware({
|
|
|
51
51
|
createTenantMiddleware({getTenantClient, defaultClient, strictTenant: true});
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
## 0.9.0 — cold start e tamanho do bundle
|
|
55
|
+
|
|
56
|
+
**Muda a instalação** (⚠️): a CLI `prisma` saiu das `dependencies` do pacote.
|
|
57
|
+
|
|
58
|
+
- ⚠️ `prisma` (CLI) não vem mais junto. Ela só serve para `prisma generate`/`db pull`, mas como dependência de produção arrastava `@prisma/studio-core`, `@prisma/dev`, `pglite`, `effect` e `@prisma/engines` para a imagem de toda API (~250 MB). A API que roda `prisma generate` declara a CLI nela, na MESMA versão do `@prisma/client` deste pacote: `npm i -D prisma@7.10.0`. `@prisma/client`, `@prisma/adapter-mariadb` e `mariadb` continuam vindo daqui.
|
|
59
|
+
- `createRedisClient()` só carrega o `redis` quando há o que conectar (env `REDIS` ou `options`). API sem Redis deixa de carregar ~480 módulos no cold start. Nada muda para quem usa.
|
|
60
|
+
- `createPermissionsResolver({memoryCacheTtlMs})` — cache em memória da instância, por `idSchool:uid`, **opt-in** (default desligado) e só usado **sem** `redis`. Sem Redis a consulta de permissões rodava em toda request autenticada. Não há invalidação entre instâncias: mudança de permissão leva até o TTL para valer, então mantenha curto (o cache de token e o de vínculo usam 120 s). Erro de consulta nunca é guardado; `resolver.clearCache()` esvazia.
|
|
61
|
+
|
|
54
62
|
## 0.8.0 — API single-tenant só aceita token do tenant default
|
|
55
63
|
|
|
56
64
|
**Muda comportamento por padrão** (⚠️) em quem usa `tenantAware: false` — hoje só o `v1_core`.
|
package/dist/redis/client.d.ts
CHANGED
package/dist/redis/client.js
CHANGED
|
@@ -3,25 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DEFAULT_REDIS_CONNECT_TIMEOUT_MS = void 0;
|
|
4
4
|
exports.resolveRedisOptions = resolveRedisOptions;
|
|
5
5
|
exports.createRedisClient = createRedisClient;
|
|
6
|
-
// Cliente Redis padrão das APIs. Antes cada API criava o
|
|
7
|
-
// seu (v1_pedagogico: infra.ts; v3_peoples: config/redis.ts) — a conexão
|
|
8
|
-
// agora mora aqui, UMA vez.
|
|
9
|
-
//
|
|
10
|
-
// Contrato: a env `REDIS` traz o JSON das opções do `createClient` do
|
|
11
|
-
// node-redis (vem do Secret Manager pelo workflow deploy-firebase-api-with-redis).
|
|
12
|
-
//
|
|
13
|
-
// Best-effort — nunca derruba o boot:
|
|
14
|
-
// - sem `REDIS`, JSON inválido ou falha na conexão → `undefined` (a API
|
|
15
|
-
// segue sem cache; quem usa testa o cliente antes);
|
|
16
|
-
// - timeout na conexão (default 3 s): o reconnect padrão do node-redis tenta
|
|
17
|
-
// para sempre e deixaria o boot da function preso esperando;
|
|
18
|
-
// - `disableOfflineQueue: true` por padrão: com a conexão caída, o comando
|
|
19
|
-
// falha na hora em vez de ficar na fila segurando a request (quem usa já
|
|
20
|
-
// trata erro como "sem cache"). As opções da env podem sobrescrever.
|
|
21
|
-
//
|
|
22
|
-
// O cliente devolvido serve direto como `redis` do createTenantMembershipAssert
|
|
23
|
-
// e do createPermissionsResolver (get/setEx).
|
|
24
|
-
const redis_1 = require("redis");
|
|
25
6
|
exports.DEFAULT_REDIS_CONNECT_TIMEOUT_MS = 3000;
|
|
26
7
|
/** Opções finais do createClient (exportado para teste). */
|
|
27
8
|
function resolveRedisOptions(options) {
|
|
@@ -38,13 +19,16 @@ function resolveRedisOptions(options) {
|
|
|
38
19
|
}
|
|
39
20
|
async function createRedisClient(options = {}) {
|
|
40
21
|
const log = options.log ?? ((message, error) => console.error(message, error));
|
|
41
|
-
const factory = options.createClient ?? redis_1.createClient;
|
|
42
22
|
const timeoutMs = options.connectTimeoutMs ?? exports.DEFAULT_REDIS_CONNECT_TIMEOUT_MS;
|
|
43
23
|
let client;
|
|
44
24
|
try {
|
|
45
25
|
const clientOptions = resolveRedisOptions(options);
|
|
46
26
|
if (!clientOptions)
|
|
47
27
|
return undefined;
|
|
28
|
+
// `redis` só carrega quando há o que conectar: API sem a env REDIS não
|
|
29
|
+
// paga os ~480 módulos do node-redis no cold start.
|
|
30
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
31
|
+
const factory = options.createClient ?? require("redis").createClient;
|
|
48
32
|
client = factory(clientOptions);
|
|
49
33
|
client.on?.("error", (err) => log("Redis Client Error", err));
|
|
50
34
|
let timer;
|
package/dist/redis/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/redis/client.ts"],"names":[],"mappings":";;;AAsCA,kDASC;AAED,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/redis/client.ts"],"names":[],"mappings":";;;AAsCA,kDASC;AAED,8CAiCC;AA5DY,QAAA,gCAAgC,GAAG,IAAI,CAAC;AAerD,4DAA4D;AAC5D,SAAgB,mBAAmB,CAAC,OAA4B;IAC5D,IAAI,IAAI,GAAG,OAAO,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAChJ,OAAO,EAAC,mBAAmB,EAAE,IAAI,EAAE,GAAG,IAAI,EAAC,CAAC;AAChD,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,OAAe,EAAE,KAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,wCAAgC,CAAC;IAE/E,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACD,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QACrC,uEAAuE;QACvE,oDAAoD;QACpD,uDAAuD;QACvD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAK,OAAO,CAAC,OAAO,CAA4B,CAAC,YAAY,CAAC;QAClG,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC;QACvE,IAAI,KAAgD,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACtC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,SAAS,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,MAAqB,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACL,wBAAwB;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC"}
|
|
@@ -3,10 +3,16 @@ export interface PermissionsRedisLike {
|
|
|
3
3
|
setEx(key: string, ttlSeconds: number, value: string): Promise<unknown>;
|
|
4
4
|
}
|
|
5
5
|
export interface PermissionsResolverOptions {
|
|
6
|
-
/** Client Redis opcional (get/setEx). Sem ele, consulta o banco a cada request
|
|
6
|
+
/** Client Redis opcional (get/setEx). Sem ele, consulta o banco a cada request
|
|
7
|
+
* (ou a cada `memoryCacheTtlMs`, quando ligado). */
|
|
7
8
|
redis?: PermissionsRedisLike;
|
|
8
9
|
/** TTL do cache, segundos (default 3600). */
|
|
9
10
|
cacheTtlSeconds?: number;
|
|
11
|
+
/** Cache em memória da instância, ms (default 0 = desligado). Só vale SEM
|
|
12
|
+
* `redis`. Erro de consulta nunca é guardado. */
|
|
13
|
+
memoryCacheTtlMs?: number;
|
|
14
|
+
/** Máximo de entradas do cache em memória (default 5000). */
|
|
15
|
+
memoryCacheMaxSize?: number;
|
|
10
16
|
/** Identificadores de cada papel (default en + pt: teacher/professor,
|
|
11
17
|
* student/aluno, responsible/responsavel). */
|
|
12
18
|
roles?: {
|
|
@@ -21,7 +27,10 @@ export interface PermissionsResolverOptions {
|
|
|
21
27
|
}
|
|
22
28
|
/** A mesma consulta que as APIs usavam, com o uid como parâmetro. */
|
|
23
29
|
export declare function defaultPermissionsQuery(prisma: any, uid: string): Promise<string[]>;
|
|
24
|
-
export declare function createPermissionsResolver(options?: PermissionsResolverOptions):
|
|
30
|
+
export declare function createPermissionsResolver(options?: PermissionsResolverOptions): {
|
|
31
|
+
(req: any, idSchool: string | null): Promise<void>;
|
|
32
|
+
clearCache(): void;
|
|
33
|
+
};
|
|
25
34
|
/** Chave da versão do cache de permissões de uma escola. */
|
|
26
35
|
export declare function permissionsVersionKey(idSchool: string | number): string;
|
|
27
36
|
/** Chave do cache de permissões de um usuário numa versão. */
|
|
@@ -22,6 +22,12 @@
|
|
|
22
22
|
// inteira com um INCR (invalidatePermissionsCache) — atômico e O(1), sem o
|
|
23
23
|
// `KEYS perms:<id>:*` que varria o Redis todo. Chaves de versões antigas
|
|
24
24
|
// morrem pelo TTL.
|
|
25
|
+
//
|
|
26
|
+
// Sem Redis (a maioria das APIs não recebe a env REDIS) a consulta rodava a
|
|
27
|
+
// cada request. `memoryCacheTtlMs` (opt-in, 0.9.0) liga um cache em memória
|
|
28
|
+
// da instância, por `idSchool:uid`. Não há invalidação entre instâncias:
|
|
29
|
+
// mudança de permissão leva até o TTL para valer — manter curto, na ordem
|
|
30
|
+
// do cache de token e de vínculo (120 s). Com `redis` ele é ignorado.
|
|
25
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
32
|
exports.defaultPermissionsQuery = defaultPermissionsQuery;
|
|
27
33
|
exports.createPermissionsResolver = createPermissionsResolver;
|
|
@@ -54,7 +60,33 @@ function createPermissionsResolver(options = {}) {
|
|
|
54
60
|
const responsible = asList(options.roles?.responsible, roles_1.RESPONSIBLE_ACLS);
|
|
55
61
|
const query = options.query ?? defaultPermissionsQuery;
|
|
56
62
|
const log = options.logger ?? ((m, e) => console.error(m, e));
|
|
57
|
-
|
|
63
|
+
const memoryTtlMs = options.redis ? 0 : Math.max(0, Number(options.memoryCacheTtlMs) || 0);
|
|
64
|
+
const memoryMaxSize = options.memoryCacheMaxSize ?? 5000;
|
|
65
|
+
const memory = new Map();
|
|
66
|
+
function fromMemory(key) {
|
|
67
|
+
const hit = memory.get(key);
|
|
68
|
+
if (!hit)
|
|
69
|
+
return null;
|
|
70
|
+
if (hit.expMs <= Date.now()) {
|
|
71
|
+
memory.delete(key);
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
// cópia: o handler pode mexer em req.permissions sem sujar o cache
|
|
75
|
+
return [...hit.permissions];
|
|
76
|
+
}
|
|
77
|
+
function toMemory(key, permissions) {
|
|
78
|
+
memory.set(key, { expMs: Date.now() + memoryTtlMs, permissions: [...permissions] });
|
|
79
|
+
if (memory.size > memoryMaxSize) {
|
|
80
|
+
const it = memory.keys();
|
|
81
|
+
for (let i = 0; i < 100 && memory.size > memoryMaxSize; i++) {
|
|
82
|
+
const k = it.next().value;
|
|
83
|
+
if (k === undefined)
|
|
84
|
+
break;
|
|
85
|
+
memory.delete(k);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const resolvePermissions = async function resolvePermissions(req, idSchool) {
|
|
58
90
|
if (!idSchool)
|
|
59
91
|
return;
|
|
60
92
|
req.is_full = false;
|
|
@@ -70,8 +102,9 @@ function createPermissionsResolver(options = {}) {
|
|
|
70
102
|
if (req.internal === true)
|
|
71
103
|
return;
|
|
72
104
|
let cacheKey = null;
|
|
105
|
+
const memoryKey = memoryTtlMs > 0 ? `${idSchool}:${uid}` : null;
|
|
73
106
|
try {
|
|
74
|
-
let permissions = null;
|
|
107
|
+
let permissions = memoryKey ? fromMemory(memoryKey) : null;
|
|
75
108
|
if (options.redis) {
|
|
76
109
|
try {
|
|
77
110
|
const version = await readPermissionsVersion(options.redis, idSchool);
|
|
@@ -97,6 +130,8 @@ function createPermissionsResolver(options = {}) {
|
|
|
97
130
|
}
|
|
98
131
|
if (!permissions) {
|
|
99
132
|
permissions = await query(req.prisma, uid);
|
|
133
|
+
if (memoryKey)
|
|
134
|
+
toMemory(memoryKey, permissions);
|
|
100
135
|
if (options.redis && cacheKey) {
|
|
101
136
|
try {
|
|
102
137
|
await options.redis.setEx(cacheKey, ttl, JSON.stringify(permissions));
|
|
@@ -124,6 +159,9 @@ function createPermissionsResolver(options = {}) {
|
|
|
124
159
|
req.permissions_error = true;
|
|
125
160
|
}
|
|
126
161
|
};
|
|
162
|
+
/** Esvazia o cache em memória (teste, ou mudança de permissão feita pela própria instância). */
|
|
163
|
+
resolvePermissions.clearCache = () => memory.clear();
|
|
164
|
+
return resolvePermissions;
|
|
127
165
|
}
|
|
128
166
|
// --------------------------------------------------- versão do cache ----
|
|
129
167
|
const SCHOOL_RE = /^\d+$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/tenant/permissions.ts"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,4EAA4E;AAC5E,8DAA8D;AAC9D,4EAA4E;AAC5E,2EAA2E;AAC3E,kBAAkB;AAClB,EAAE;AACF,SAAS;AACT,4DAA4D;AAC5D,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,kEAAkE;AAClE,kEAAkE;AAClE,+EAA+E;AAC/E,0DAA0D;AAC1D,oCAAoC;AACpC,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,2EAA2E;AAC3E,yEAAyE;AACzE,mBAAmB;;
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/tenant/permissions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mybuildex/pkg",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Infra comum das APIs MyBuilder: multitenancy Prisma (pool único), middleware de tenant e CORS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -42,7 +42,6 @@
|
|
|
42
42
|
"firebase": "^10.6.0",
|
|
43
43
|
"firebase-admin": "^11.11.0",
|
|
44
44
|
"mariadb": "3.4.5",
|
|
45
|
-
"prisma": "7.10.0",
|
|
46
45
|
"redis": "^5.12.1"
|
|
47
46
|
},
|
|
48
47
|
"peerDependencies": {
|