@innvoid/getmarket-sdk 0.1.6 → 0.1.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.
@@ -1,4 +1,4 @@
1
- import { Request, Response, NextFunction } from 'express';
1
+ import { Request, Response, NextFunction, RequestHandler } from 'express';
2
2
 
3
3
  /**
4
4
  * ✅ NO-LEGACY / ESTÁNDAR:
@@ -59,4 +59,21 @@ declare function requireRolesOrAnyPermission(roles: string[], perms: string[], o
59
59
  sysAdminRole?: string;
60
60
  }): (req: Request, res: Response, next: NextFunction) => void | Response<any, Record<string, any>>;
61
61
 
62
- export { internalAuth, parseHeaders, requestId, requireAnyPermission, requireAuthContext, requirePermissions, requireRoles, requireRolesOrAnyPermission, sendError, sendOk };
62
+ /**
63
+ * ✅ SysAdmin bypass OR (ANY) permissions
64
+ * - Si tiene alguno de los permisos => OK
65
+ * - denied_permissions gana siempre
66
+ */
67
+ declare function allowSysAdminOrAnyPermission(...perms: string[]): RequestHandler[];
68
+ /**
69
+ * ✅ SysAdmin bypass OR (ALL) permissions (AND)
70
+ * - Debe tener TODOS los permisos requeridos
71
+ * - denied_permissions gana siempre
72
+ */
73
+ declare function allowSysAdminOrPermissionsAll(...perms: string[]): RequestHandler[];
74
+ /**
75
+ * ✅ SysAdmin bypass OR roles (ANY)
76
+ */
77
+ declare function allowSysAdminOrRoles(...roles: string[]): RequestHandler[];
78
+
79
+ export { allowSysAdminOrAnyPermission, allowSysAdminOrPermissionsAll, allowSysAdminOrRoles, internalAuth, parseHeaders, requestId, requireAnyPermission, requireAuthContext, requirePermissions, requireRoles, requireRolesOrAnyPermission, sendError, sendOk };
@@ -1,4 +1,7 @@
1
1
  import {
2
+ allowSysAdminOrAnyPermission,
3
+ allowSysAdminOrPermissionsAll,
4
+ allowSysAdminOrRoles,
2
5
  internalAuth,
3
6
  parseHeaders,
4
7
  requireAnyPermission,
@@ -8,12 +11,15 @@ import {
8
11
  requireRolesOrAnyPermission,
9
12
  sendError,
10
13
  sendOk
11
- } from "../chunk-JXOLNJ7J.js";
14
+ } from "../chunk-WKL4L67F.js";
12
15
  import {
13
16
  requestId
14
17
  } from "../chunk-KJ64O2EG.js";
15
18
  import "../chunk-P2U3MT2E.js";
16
19
  export {
20
+ allowSysAdminOrAnyPermission,
21
+ allowSysAdminOrPermissionsAll,
22
+ allowSysAdminOrRoles,
17
23
  internalAuth,
18
24
  parseHeaders,
19
25
  requestId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innvoid/getmarket-sdk",
3
- "version": "0.1.6",
3
+ "version": "0.1.9",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -72,7 +72,7 @@
72
72
  "typecheck": "tsc -p tsconfig.json --noEmit"
73
73
  },
74
74
  "dependencies": {
75
- "@innvoid/getmarket-contracts": "^0.1.1",
75
+ "@innvoid/getmarket-contracts": "^0.1.5",
76
76
  "axios": "^1.13.5",
77
77
  "firebase-admin": "^13.6.1",
78
78
  "jsonwebtoken": "^9.0.2",
@@ -1,224 +0,0 @@
1
- import {
2
- HEADER_INTERNAL_API_KEY,
3
- getRequestContextFromHeaders
4
- } from "./chunk-P2U3MT2E.js";
5
-
6
- // src/middlewares/parseHeaders.ts
7
- function parseHeaders(req, _res, next) {
8
- req.context = getRequestContextFromHeaders(req.headers);
9
- next();
10
- }
11
-
12
- // src/middlewares/internalAuth.ts
13
- import fs from "fs";
14
- import crypto from "crypto";
15
-
16
- // src/middlewares/respond.ts
17
- function sendOk(_req, res, data, statusCode = 200) {
18
- return res.status(statusCode).json({ ok: true, data, requestId: res.locals?.requestId ?? null });
19
- }
20
- function sendError(_req, res, statusCode, code, message, details) {
21
- return res.status(statusCode).json({
22
- ok: false,
23
- error: { code, message, ...details !== void 0 ? { details } : {} },
24
- requestId: res.locals?.requestId ?? null
25
- });
26
- }
27
-
28
- // src/middlewares/internalAuth.ts
29
- function readSecretFile(path) {
30
- if (!path) return null;
31
- try {
32
- const v = fs.readFileSync(path, "utf8").trim();
33
- return v.length ? v : null;
34
- } catch {
35
- return null;
36
- }
37
- }
38
- function splitKeys(v) {
39
- if (!v) return [];
40
- return v.split(",").map((s) => s.trim()).filter(Boolean);
41
- }
42
- function getExpectedKeys() {
43
- const fileKey = readSecretFile(process.env.INTERNAL_API_KEY_FILE);
44
- const envKey = (process.env.INTERNAL_API_KEY || "").trim();
45
- const raw = fileKey || envKey;
46
- return splitKeys(raw);
47
- }
48
- function extractToken(req) {
49
- const apiKey = (req.header(HEADER_INTERNAL_API_KEY) || "").trim();
50
- return apiKey || null;
51
- }
52
- function safeEquals(a, b) {
53
- const aa = Buffer.from(a);
54
- const bb = Buffer.from(b);
55
- if (aa.length !== bb.length) return false;
56
- return crypto.timingSafeEqual(aa, bb);
57
- }
58
- function internalAuth(req, res, next) {
59
- const token = extractToken(req);
60
- if (!token) {
61
- return sendError(req, res, 401, "UNAUTHORIZED", `Missing internal api key (${HEADER_INTERNAL_API_KEY})`);
62
- }
63
- const expectedKeys = getExpectedKeys();
64
- if (expectedKeys.length === 0) {
65
- return sendError(
66
- req,
67
- res,
68
- 500,
69
- "MISCONFIGURED_INTERNAL_AUTH",
70
- "Internal api key not configured (INTERNAL_API_KEY or INTERNAL_API_KEY_FILE)"
71
- );
72
- }
73
- const ok = expectedKeys.some((k) => safeEquals(token, k));
74
- if (!ok) {
75
- return sendError(req, res, 403, "FORBIDDEN", "Invalid internal api key");
76
- }
77
- return next();
78
- }
79
-
80
- // src/middlewares/authorization.ts
81
- function getAuth(req) {
82
- return req.auth ?? {};
83
- }
84
- function normalizeCode(v) {
85
- if (!v) return null;
86
- if (typeof v === "string") return v;
87
- if (typeof v === "object") return v.code || v.name || null;
88
- return null;
89
- }
90
- function rolesSet(auth) {
91
- const out = /* @__PURE__ */ new Set();
92
- for (const r of auth.roles || []) {
93
- const c = normalizeCode(r);
94
- if (c) out.add(c);
95
- }
96
- return out;
97
- }
98
- function permsSet(list) {
99
- const out = /* @__PURE__ */ new Set();
100
- for (const p of list || []) {
101
- const c = normalizeCode(p);
102
- if (c) out.add(c);
103
- }
104
- return out;
105
- }
106
- function requireAuthContext() {
107
- return (req, res, next) => {
108
- if (!req.auth) {
109
- return sendError(req, res, 401, "UNAUTHORIZED", "Missing auth context");
110
- }
111
- return next();
112
- };
113
- }
114
- function isSysAdmin(auth, sysAdminRole) {
115
- const have = rolesSet(auth);
116
- return have.has(sysAdminRole);
117
- }
118
- function requirePermissions(perms, options) {
119
- const sysAdminBypass = options?.sysAdminBypass !== false;
120
- const sysAdminRole = options?.sysAdminRole || "SYS_ADMIN";
121
- return (req, res, next) => {
122
- const auth = getAuth(req);
123
- if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();
124
- const allow = permsSet(auth.permissions);
125
- const deny = permsSet(auth.denied_permissions);
126
- for (const p of perms) {
127
- if (deny.has(p)) {
128
- return sendError(req, res, 403, "FORBIDDEN", `Denied permission: ${p}`, {
129
- denied: p
130
- });
131
- }
132
- }
133
- const missing = perms.filter((p) => !allow.has(p));
134
- if (missing.length) {
135
- return sendError(req, res, 403, "FORBIDDEN", "Missing permissions", {
136
- missing,
137
- mode: "ALL"
138
- });
139
- }
140
- return next();
141
- };
142
- }
143
- function requireAnyPermission(perms, options) {
144
- const sysAdminBypass = options?.sysAdminBypass !== false;
145
- const sysAdminRole = options?.sysAdminRole || "SYS_ADMIN";
146
- return (req, res, next) => {
147
- const auth = getAuth(req);
148
- if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();
149
- const allow = permsSet(auth.permissions);
150
- const deny = permsSet(auth.denied_permissions);
151
- for (const p of perms) {
152
- if (deny.has(p)) {
153
- return sendError(req, res, 403, "FORBIDDEN", `Denied permission: ${p}`, {
154
- denied: p
155
- });
156
- }
157
- }
158
- const ok = perms.some((p) => allow.has(p));
159
- if (!ok) {
160
- return sendError(req, res, 403, "FORBIDDEN", "Permission denied", {
161
- required: perms,
162
- mode: "ANY"
163
- });
164
- }
165
- return next();
166
- };
167
- }
168
- function requireRoles(roles, options) {
169
- const sysAdminBypass = options?.sysAdminBypass !== false;
170
- const sysAdminRole = options?.sysAdminRole || "SYS_ADMIN";
171
- return (req, res, next) => {
172
- const auth = getAuth(req);
173
- if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();
174
- const have = rolesSet(auth);
175
- if (!roles.some((r) => have.has(r))) {
176
- return sendError(req, res, 403, "FORBIDDEN", "Role not allowed", {
177
- required: roles,
178
- mode: "ANY"
179
- });
180
- }
181
- return next();
182
- };
183
- }
184
- function requireRolesOrAnyPermission(roles, perms, options) {
185
- const sysAdminBypass = options?.sysAdminBypass !== false;
186
- const sysAdminRole = options?.sysAdminRole || "SYS_ADMIN";
187
- return (req, res, next) => {
188
- const auth = getAuth(req);
189
- if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();
190
- const haveRoles = rolesSet(auth);
191
- const allow = permsSet(auth.permissions);
192
- const deny = permsSet(auth.denied_permissions);
193
- for (const p of perms) {
194
- if (deny.has(p)) {
195
- return sendError(req, res, 403, "FORBIDDEN", `Denied permission: ${p}`, {
196
- denied: p
197
- });
198
- }
199
- }
200
- const okRole = roles.some((r) => haveRoles.has(r));
201
- const okPerm = perms.some((p) => allow.has(p));
202
- if (!okRole && !okPerm) {
203
- return sendError(req, res, 403, "FORBIDDEN", "Access denied", {
204
- roles,
205
- permissions: perms,
206
- mode: "ROLES_OR_PERMS_ANY"
207
- });
208
- }
209
- return next();
210
- };
211
- }
212
-
213
- export {
214
- parseHeaders,
215
- sendOk,
216
- sendError,
217
- internalAuth,
218
- requireAuthContext,
219
- requirePermissions,
220
- requireAnyPermission,
221
- requireRoles,
222
- requireRolesOrAnyPermission
223
- };
224
- //# sourceMappingURL=chunk-JXOLNJ7J.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/middlewares/parseHeaders.ts","../src/middlewares/internalAuth.ts","../src/middlewares/respond.ts","../src/middlewares/authorization.ts"],"sourcesContent":["// sdk/src/middlewares/parseHeaders.ts\nimport type {Request, Response, NextFunction} from \"express\";\nimport {getRequestContextFromHeaders} from \"../headers\";\n\n/**\n * ✅ NO-LEGACY / ESTÁNDAR:\n * - Lee SOLO x-company y x-branch (UIDs planos)\n * - Setea req.context = { company_uid, branch_uid }\n * - NO toca req.auth (auth lo setea authentication/requireAuth)\n */\nexport default function parseHeaders(req: Request, _res: Response, next: NextFunction) {\n (req as any).context = getRequestContextFromHeaders(req.headers as any);\n next();\n}\n","import type {Request, Response, NextFunction} from \"express\";\nimport fs from \"fs\";\nimport crypto from \"crypto\";\nimport {sendError} from \"./respond\";\nimport {HEADER_INTERNAL_API_KEY} from \"../headers\";\n\nfunction readSecretFile(path?: string): string | null {\n if (!path) return null;\n try {\n const v = fs.readFileSync(path, \"utf8\").trim();\n return v.length ? v : null;\n } catch {\n return null;\n }\n}\n\nfunction splitKeys(v?: string | null): string[] {\n if (!v) return [];\n return v.split(\",\").map((s) => s.trim()).filter(Boolean);\n}\n\nfunction getExpectedKeys(): string[] {\n const fileKey = readSecretFile(process.env.INTERNAL_API_KEY_FILE);\n const envKey = (process.env.INTERNAL_API_KEY || \"\").trim();\n const raw = fileKey || envKey;\n return splitKeys(raw);\n}\n\nfunction extractToken(req: Request): string | null {\n const apiKey = (req.header(HEADER_INTERNAL_API_KEY) || \"\").trim();\n return apiKey || null;\n}\n\nfunction safeEquals(a: string, b: string): boolean {\n const aa = Buffer.from(a);\n const bb = Buffer.from(b);\n if (aa.length !== bb.length) return false;\n return crypto.timingSafeEqual(aa, bb);\n}\n\nexport default function internalAuth(req: Request, res: Response, next: NextFunction) {\n const token = extractToken(req);\n\n if (!token) {\n return sendError(req, res, 401, \"UNAUTHORIZED\", `Missing internal api key (${HEADER_INTERNAL_API_KEY})`);\n }\n\n const expectedKeys = getExpectedKeys();\n if (expectedKeys.length === 0) {\n return sendError(\n req,\n res,\n 500,\n \"MISCONFIGURED_INTERNAL_AUTH\",\n \"Internal api key not configured (INTERNAL_API_KEY or INTERNAL_API_KEY_FILE)\"\n );\n }\n\n const ok = expectedKeys.some((k) => safeEquals(token, k));\n if (!ok) {\n return sendError(req, res, 403, \"FORBIDDEN\", \"Invalid internal api key\");\n }\n\n return next();\n}\n","import type {Request, Response} from \"express\";\n\nexport function sendOk<T>(_req: Request, res: Response, data: T, statusCode = 200) {\n return res.status(statusCode).json({ok: true, data, requestId: res.locals?.requestId ?? null});\n}\n\nexport function sendError(\n _req: Request,\n res: Response,\n statusCode: number,\n code: string,\n message: string,\n details?: any\n) {\n return res.status(statusCode).json({\n ok: false,\n error: {code, message, ...(details !== undefined ? {details} : {})},\n requestId: res.locals?.requestId ?? null,\n });\n}\n","// packages/sdk/src/middlewares/authorization.ts\nimport type {Request, Response, NextFunction} from \"express\";\nimport {sendError} from \"./respond\";\n\ntype AuthRole = string | { code?: string; name?: string };\ntype AuthPermission = string | { code?: string; name?: string };\n\ntype AuthShape = {\n roles?: AuthRole[];\n permissions?: AuthPermission[];\n denied_permissions?: AuthPermission[];\n};\n\nfunction getAuth(req: Request): AuthShape {\n return ((req as any).auth ?? {}) as AuthShape;\n}\n\nfunction normalizeCode(v: any): string | null {\n if (!v) return null;\n if (typeof v === \"string\") return v;\n if (typeof v === \"object\") return v.code || v.name || null;\n return null;\n}\n\nfunction rolesSet(auth: AuthShape): Set<string> {\n const out = new Set<string>();\n for (const r of auth.roles || []) {\n const c = normalizeCode(r);\n if (c) out.add(c);\n }\n return out;\n}\n\nfunction permsSet(list?: AuthPermission[]): Set<string> {\n const out = new Set<string>();\n for (const p of list || []) {\n const c = normalizeCode(p);\n if (c) out.add(c);\n }\n return out;\n}\n\n/**\n * 401 si no existe req.auth (contexto auth).\n * Útil para proteger rutas donde SIEMPRE debe existir auth.\n */\nexport function requireAuthContext() {\n return (req: Request, res: Response, next: NextFunction) => {\n if (!(req as any).auth) {\n return sendError(req, res, 401, \"UNAUTHORIZED\", \"Missing auth context\");\n }\n return next();\n };\n}\n\n/**\n * Helper: SYS_ADMIN bypass (por defecto activo)\n */\nfunction isSysAdmin(auth: AuthShape, sysAdminRole: string) {\n const have = rolesSet(auth);\n return have.has(sysAdminRole);\n}\n\n/**\n * Requiere TODOS los permisos indicados.\n * Regla: denied_permissions siempre gana sobre permissions.\n *\n * options:\n * - sysAdminBypass: default true\n * - sysAdminRole: default \"SYS_ADMIN\"\n */\nexport function requirePermissions(\n perms: string[],\n options?: { sysAdminBypass?: boolean; sysAdminRole?: string }\n) {\n const sysAdminBypass = options?.sysAdminBypass !== false;\n const sysAdminRole = options?.sysAdminRole || \"SYS_ADMIN\";\n\n return (req: Request, res: Response, next: NextFunction) => {\n const auth = getAuth(req);\n\n if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();\n\n const allow = permsSet(auth.permissions);\n const deny = permsSet(auth.denied_permissions);\n\n // deny gana siempre\n for (const p of perms) {\n if (deny.has(p)) {\n return sendError(req, res, 403, \"FORBIDDEN\", `Denied permission: ${p}`, {\n denied: p,\n });\n }\n }\n\n const missing = perms.filter((p) => !allow.has(p));\n if (missing.length) {\n return sendError(req, res, 403, \"FORBIDDEN\", \"Missing permissions\", {\n missing,\n mode: \"ALL\",\n });\n }\n\n return next();\n };\n}\n\n/**\n * Requiere AL MENOS 1 permiso de la lista (ANY/OR).\n * Regla: denied_permissions siempre gana.\n */\nexport function requireAnyPermission(\n perms: string[],\n options?: { sysAdminBypass?: boolean; sysAdminRole?: string }\n) {\n const sysAdminBypass = options?.sysAdminBypass !== false;\n const sysAdminRole = options?.sysAdminRole || \"SYS_ADMIN\";\n\n return (req: Request, res: Response, next: NextFunction) => {\n const auth = getAuth(req);\n\n if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();\n\n const allow = permsSet(auth.permissions);\n const deny = permsSet(auth.denied_permissions);\n\n // deny gana siempre (si alguno requerido está denegado explícitamente)\n for (const p of perms) {\n if (deny.has(p)) {\n return sendError(req, res, 403, \"FORBIDDEN\", `Denied permission: ${p}`, {\n denied: p,\n });\n }\n }\n\n const ok = perms.some((p) => allow.has(p));\n if (!ok) {\n return sendError(req, res, 403, \"FORBIDDEN\", \"Permission denied\", {\n required: perms,\n mode: \"ANY\",\n });\n }\n\n return next();\n };\n}\n\n/**\n * Requiere al menos 1 rol (ANY/OR).\n * options:\n * - sysAdminBypass: default true\n * - sysAdminRole: default \"SYS_ADMIN\"\n */\nexport function requireRoles(\n roles: string[],\n options?: { sysAdminBypass?: boolean; sysAdminRole?: string }\n) {\n const sysAdminBypass = options?.sysAdminBypass !== false;\n const sysAdminRole = options?.sysAdminRole || \"SYS_ADMIN\";\n\n return (req: Request, res: Response, next: NextFunction) => {\n const auth = getAuth(req);\n\n // SYS_ADMIN bypass aplica también aquí\n if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();\n\n const have = rolesSet(auth);\n if (!roles.some((r) => have.has(r))) {\n return sendError(req, res, 403, \"FORBIDDEN\", \"Role not allowed\", {\n required: roles,\n mode: \"ANY\",\n });\n }\n\n return next();\n };\n}\n\n/**\n * Requiere (roles ANY) OR (permissions ANY).\n * deny_permissions siempre gana sobre permissions.\n */\nexport function requireRolesOrAnyPermission(\n roles: string[],\n perms: string[],\n options?: { sysAdminBypass?: boolean; sysAdminRole?: string }\n) {\n const sysAdminBypass = options?.sysAdminBypass !== false;\n const sysAdminRole = options?.sysAdminRole || \"SYS_ADMIN\";\n\n return (req: Request, res: Response, next: NextFunction) => {\n const auth = getAuth(req);\n\n if (sysAdminBypass && isSysAdmin(auth, sysAdminRole)) return next();\n\n const haveRoles = rolesSet(auth);\n const allow = permsSet(auth.permissions);\n const deny = permsSet(auth.denied_permissions);\n\n // deny gana siempre (si cualquiera de los permisos evaluados está denegado explícitamente)\n for (const p of perms) {\n if (deny.has(p)) {\n return sendError(req, res, 403, \"FORBIDDEN\", `Denied permission: ${p}`, {\n denied: p,\n });\n }\n }\n\n const okRole = roles.some((r) => haveRoles.has(r));\n const okPerm = perms.some((p) => allow.has(p));\n\n if (!okRole && !okPerm) {\n return sendError(req, res, 403, \"FORBIDDEN\", \"Access denied\", {\n roles,\n permissions: perms,\n mode: \"ROLES_OR_PERMS_ANY\",\n });\n }\n\n return next();\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,16 +0,0 @@
1
- type RequestContext = {
2
- requestId?: string | null;
3
- company_uid?: string | null;
4
- branch_uid?: string | null;
5
- employee_uid?: string | null;
6
- };
7
- /**
8
- * ✅ NO-LEGACY:
9
- * - x-company: <UID>
10
- * - x-branch: <UID>
11
- * - x-employee-uid: <UID> (opcional; NO reemplaza JWT)
12
- * - x-request-id: string (opcional)
13
- */
14
- declare function getRequestContextFromHeaders(headers: Record<string, any>): RequestContext;
15
-
16
- export { type RequestContext as R, getRequestContextFromHeaders as g };
@@ -1,16 +0,0 @@
1
- type RequestContext = {
2
- requestId?: string | null;
3
- company_uid?: string | null;
4
- branch_uid?: string | null;
5
- employee_uid?: string | null;
6
- };
7
- /**
8
- * ✅ NO-LEGACY:
9
- * - x-company: <UID>
10
- * - x-branch: <UID>
11
- * - x-employee-uid: <UID> (opcional; NO reemplaza JWT)
12
- * - x-request-id: string (opcional)
13
- */
14
- declare function getRequestContextFromHeaders(headers: Record<string, any>): RequestContext;
15
-
16
- export { type RequestContext as R, getRequestContextFromHeaders as g };