@heavybit/shared-lib 1.1.0 → 1.2.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/dist/cjs/express/index.js +1 -0
- package/dist/cjs/express/index.js.map +1 -1
- package/dist/cjs/express/security.js +18 -0
- package/dist/cjs/express/security.js.map +1 -0
- package/dist/cjs/metrics/index.js +15 -0
- package/dist/cjs/metrics/index.js.map +1 -0
- package/dist/esm/express/index.js +1 -0
- package/dist/esm/express/index.js.map +1 -1
- package/dist/esm/express/security.js +11 -0
- package/dist/esm/express/security.js.map +1 -0
- package/dist/esm/metrics/index.js +6 -0
- package/dist/esm/metrics/index.js.map +1 -0
- package/dist/types/express/index.d.ts +1 -0
- package/dist/types/express/index.d.ts.map +1 -1
- package/dist/types/express/security.d.ts +9 -0
- package/dist/types/express/security.d.ts.map +1 -0
- package/dist/types/metrics/index.d.ts +7 -0
- package/dist/types/metrics/index.d.ts.map +1 -0
- package/package.json +19 -27
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./auth.js"), exports);
|
|
18
18
|
__exportStar(require("./middleware.js"), exports);
|
|
19
19
|
__exportStar(require("./health.js"), exports);
|
|
20
|
+
__exportStar(require("./security.js"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/express/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,kDAAgC;AAChC,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/express/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,kDAAgC;AAChC,8CAA4B;AAC5B,gDAA8B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.securityHeaders = securityHeaders;
|
|
7
|
+
exports.corsMiddleware = corsMiddleware;
|
|
8
|
+
const cors_1 = __importDefault(require("cors"));
|
|
9
|
+
const helmet_1 = __importDefault(require("helmet"));
|
|
10
|
+
/** Standard security headers (helmet). Pass options only to relax a header a service genuinely needs. */
|
|
11
|
+
function securityHeaders(options) {
|
|
12
|
+
return (0, helmet_1.default)(options);
|
|
13
|
+
}
|
|
14
|
+
/** CORS for browser-facing services. An empty origin list disables CORS (no `Access-Control-*` headers). */
|
|
15
|
+
function corsMiddleware(origins, options = {}) {
|
|
16
|
+
return (0, cors_1.default)({ ...options, origin: origins.length ? origins : false });
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/express/security.ts"],"names":[],"mappings":";;;;;AAOA,0CAEC;AAGD,wCAEC;AAdD,gDAA8C;AAC9C,oDAAoD;AAKpD,yGAAyG;AACzG,SAAgB,eAAe,CAAC,OAAuB;IACrD,OAAO,IAAA,gBAAM,EAAC,OAAO,CAA8B,CAAC;AACtD,CAAC;AAED,4GAA4G;AAC5G,SAAgB,cAAc,CAAC,OAAiB,EAAE,UAAuC,EAAE;IACzF,OAAO,IAAA,cAAI,EAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAA8B,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectDefaultMetrics = exports.Summary = exports.Registry = exports.Histogram = exports.Gauge = exports.Counter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Prometheus metrics. Re-exports prom-client so every service runs one version of it;
|
|
6
|
+
* services keep their own metric definitions behind a narrow interface.
|
|
7
|
+
*/
|
|
8
|
+
var prom_client_1 = require("prom-client");
|
|
9
|
+
Object.defineProperty(exports, "Counter", { enumerable: true, get: function () { return prom_client_1.Counter; } });
|
|
10
|
+
Object.defineProperty(exports, "Gauge", { enumerable: true, get: function () { return prom_client_1.Gauge; } });
|
|
11
|
+
Object.defineProperty(exports, "Histogram", { enumerable: true, get: function () { return prom_client_1.Histogram; } });
|
|
12
|
+
Object.defineProperty(exports, "Registry", { enumerable: true, get: function () { return prom_client_1.Registry; } });
|
|
13
|
+
Object.defineProperty(exports, "Summary", { enumerable: true, get: function () { return prom_client_1.Summary; } });
|
|
14
|
+
Object.defineProperty(exports, "collectDefaultMetrics", { enumerable: true, get: function () { return prom_client_1.collectDefaultMetrics; } });
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,2CAAkG;AAAzF,sGAAA,OAAO,OAAA;AAAE,oGAAA,KAAK,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,sGAAA,OAAO,OAAA;AAAE,oHAAA,qBAAqB,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/express/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/express/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import cors from 'cors';
|
|
2
|
+
import helmet from 'helmet';
|
|
3
|
+
/** Standard security headers (helmet). Pass options only to relax a header a service genuinely needs. */
|
|
4
|
+
export function securityHeaders(options) {
|
|
5
|
+
return helmet(options);
|
|
6
|
+
}
|
|
7
|
+
/** CORS for browser-facing services. An empty origin list disables CORS (no `Access-Control-*` headers). */
|
|
8
|
+
export function corsMiddleware(origins, options = {}) {
|
|
9
|
+
return cors({ ...options, origin: origins.length ? origins : false });
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/express/security.ts"],"names":[],"mappings":"AAAA,OAAO,IAA0B,MAAM,MAAM,CAAC;AAC9C,OAAO,MAA8B,MAAM,QAAQ,CAAC;AAKpD,yGAAyG;AACzG,MAAM,UAAU,eAAe,CAAC,OAAuB;IACrD,OAAO,MAAM,CAAC,OAAO,CAA8B,CAAC;AACtD,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,cAAc,CAAC,OAAiB,EAAE,UAAuC,EAAE;IACzF,OAAO,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAA8B,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prometheus metrics. Re-exports prom-client so every service runs one version of it;
|
|
3
|
+
* services keep their own metric definitions behind a narrow interface.
|
|
4
|
+
*/
|
|
5
|
+
export { Counter, Gauge, Histogram, Registry, Summary, collectDefaultMetrics } from 'prom-client';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/express/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/express/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CorsOptions } from 'cors';
|
|
2
|
+
import { type HelmetOptions } from 'helmet';
|
|
3
|
+
import type { RequestHandler } from 'express';
|
|
4
|
+
export type { CorsOptions, HelmetOptions };
|
|
5
|
+
/** Standard security headers (helmet). Pass options only to relax a header a service genuinely needs. */
|
|
6
|
+
export declare function securityHeaders(options?: HelmetOptions): RequestHandler;
|
|
7
|
+
/** CORS for browser-facing services. An empty origin list disables CORS (no `Access-Control-*` headers). */
|
|
8
|
+
export declare function corsMiddleware(origins: string[], options?: Omit<CorsOptions, 'origin'>): RequestHandler;
|
|
9
|
+
//# sourceMappingURL=security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/express/security.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAe,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAE3C,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAEvE;AAED,4GAA4G;AAC5G,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAM,GAAG,cAAc,CAE3G"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prometheus metrics. Re-exports prom-client so every service runs one version of it;
|
|
3
|
+
* services keep their own metric definitions behind a narrow interface.
|
|
4
|
+
*/
|
|
5
|
+
export { Counter, Gauge, Histogram, Registry, Summary, collectDefaultMetrics } from 'prom-client';
|
|
6
|
+
export type { CounterConfiguration, GaugeConfiguration, HistogramConfiguration, SummaryConfiguration } from 'prom-client';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAClG,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heavybit/shared-lib",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "App-agnostic building blocks for Express/TypeScript microservices: gateway identity, access scoping, RabbitMQ events/commands/RPC with retries and DLQs, outbox, cache-aside, rate limiting, sockets, signing, logging and config.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -76,6 +76,11 @@
|
|
|
76
76
|
"import": "./dist/esm/testing/index.js",
|
|
77
77
|
"require": "./dist/cjs/testing/index.js"
|
|
78
78
|
},
|
|
79
|
+
"./metrics": {
|
|
80
|
+
"types": "./dist/types/metrics/index.d.ts",
|
|
81
|
+
"import": "./dist/esm/metrics/index.js",
|
|
82
|
+
"require": "./dist/cjs/metrics/index.js"
|
|
83
|
+
},
|
|
79
84
|
"./package.json": "./package.json"
|
|
80
85
|
},
|
|
81
86
|
"typesVersions": {
|
|
@@ -112,6 +117,9 @@
|
|
|
112
117
|
],
|
|
113
118
|
"testing": [
|
|
114
119
|
"dist/types/testing/index.d.ts"
|
|
120
|
+
],
|
|
121
|
+
"metrics": [
|
|
122
|
+
"dist/types/metrics/index.d.ts"
|
|
115
123
|
]
|
|
116
124
|
}
|
|
117
125
|
},
|
|
@@ -124,11 +132,20 @@
|
|
|
124
132
|
},
|
|
125
133
|
"dependencies": {
|
|
126
134
|
"@types/amqplib": "^0.10.7",
|
|
135
|
+
"@types/cors": "^2.8.17",
|
|
127
136
|
"amqplib": "^0.10.8",
|
|
128
137
|
"argon2": "^0.44.0",
|
|
129
138
|
"bcryptjs": "^3.0.2",
|
|
139
|
+
"cors": "^2.8.5",
|
|
130
140
|
"google-libphonenumber": "^3.2.40",
|
|
141
|
+
"helmet": "^8.1.0",
|
|
142
|
+
"ioredis": "^5.4.2",
|
|
131
143
|
"jsonwebtoken": "^9.0.2",
|
|
144
|
+
"knex": "^3.1.0",
|
|
145
|
+
"mysql2": "^3.11.4",
|
|
146
|
+
"prom-client": "^15.1.3",
|
|
147
|
+
"rate-limiter-flexible": "^5.0.5",
|
|
148
|
+
"socket.io": "^4.8.1",
|
|
132
149
|
"ulid": "^3.0.1",
|
|
133
150
|
"undici": "^7.30.0",
|
|
134
151
|
"winston": "^3.17.0",
|
|
@@ -136,12 +153,7 @@
|
|
|
136
153
|
},
|
|
137
154
|
"peerDependencies": {
|
|
138
155
|
"@socket.io/redis-adapter": ">=8.0.0",
|
|
139
|
-
"express": ">=4.18.0"
|
|
140
|
-
"ioredis": ">=5.0.0",
|
|
141
|
-
"knex": ">=3.0.0",
|
|
142
|
-
"mysql2": ">=3.0.0",
|
|
143
|
-
"rate-limiter-flexible": ">=5.0.0",
|
|
144
|
-
"socket.io": ">=4.7.0"
|
|
156
|
+
"express": ">=4.18.0"
|
|
145
157
|
},
|
|
146
158
|
"peerDependenciesMeta": {
|
|
147
159
|
"@socket.io/redis-adapter": {
|
|
@@ -149,21 +161,6 @@
|
|
|
149
161
|
},
|
|
150
162
|
"express": {
|
|
151
163
|
"optional": true
|
|
152
|
-
},
|
|
153
|
-
"ioredis": {
|
|
154
|
-
"optional": true
|
|
155
|
-
},
|
|
156
|
-
"knex": {
|
|
157
|
-
"optional": true
|
|
158
|
-
},
|
|
159
|
-
"mysql2": {
|
|
160
|
-
"optional": true
|
|
161
|
-
},
|
|
162
|
-
"rate-limiter-flexible": {
|
|
163
|
-
"optional": true
|
|
164
|
-
},
|
|
165
|
-
"socket.io": {
|
|
166
|
-
"optional": true
|
|
167
164
|
}
|
|
168
165
|
},
|
|
169
166
|
"devDependencies": {
|
|
@@ -175,12 +172,7 @@
|
|
|
175
172
|
"@types/node": "^22.10.0",
|
|
176
173
|
"@types/supertest": "^6.0.2",
|
|
177
174
|
"express": "^5.1.0",
|
|
178
|
-
"ioredis": "^5.4.2",
|
|
179
175
|
"jest": "^29.7.0",
|
|
180
|
-
"knex": "^3.1.0",
|
|
181
|
-
"mysql2": "^3.11.4",
|
|
182
|
-
"rate-limiter-flexible": "^5.0.5",
|
|
183
|
-
"socket.io": "^4.8.1",
|
|
184
176
|
"supertest": "^7.0.0",
|
|
185
177
|
"ts-jest": "^29.4.6",
|
|
186
178
|
"typescript": "^5.7.2"
|