@gquittet/graceful-server
Advanced tools
Comparing version
@@ -1,1 +0,1 @@ | ||
(()=>{var e={244:(e,t,s)=>{"use strict";s.d(t,{A:()=>i,l:()=>r});const n={closePromises:[],timeout:1e3,healthCheck:!0,kubernetes:!1,livenessEndpoint:"/live",readinessEndpoint:"/ready"};let o=!0;const r=e=>(o&&(Object.freeze(Object.assign(n,e)),o=!1),n),i=n},103:(e,t,s)=>{"use strict";s.d(t,{A:()=>y});const n=require("events"),o=[{type:"SIGHUP",code:1},{type:"SIGBREAK",code:1},{type:"SIGINT",code:2},{type:"SIGTERM",code:15},{type:"uncaughtException",code:2}];var r=s(244),i=s(400);const a=(e,t)=>async(s,n,o)=>{const{timeout:a,closePromises:c}=r.A,d=o&&o.message?o:new Error(s);var u;t.status.set(i.A.SHUTTING_DOWN,d),await(u=a,new Promise((e=>setTimeout(e,u)))),await Promise.all(c.map((e=>e()))),await e.stop(),t.status.set(i.A.SHUTDOWN,d),process.exit(128+n)},c=e=>{const t=e||new Set,s=e=>{e.destroy(),t.delete(e)};return{onConnection:e=>{t.add(e),e.once("close",(()=>t.delete(e)))},closeAll:async()=>t.forEach(s)}},{livenessEndpoint:d,readinessEndpoint:u}=r.A,l=(e,t)=>{const{healthCheck:s,kubernetes:n}=r.A,o=c(),i=c();let a=!1;e.on("connection",o.onConnection),e.on("secureConnection",i.onConnection);const l=e.listeners("request");return e.removeAllListeners("request"),s?(e.on("request",(e=>(t,s)=>{const{livenessEndpoint:n,readinessEndpoint:o}=r.A;if(!s.headersSent){if(t.url===n&&"GET"===t.method)return s.statusCode=200,s.setHeader("Content-Type","application/json"),void s.end(JSON.stringify({uptime:0|process.uptime()}));if(t.url===o&&"GET"===t.method){if(e.isReady())return s.statusCode=200,s.setHeader("Content-Type","application/json"),void s.end(JSON.stringify({status:"ready"}));s.statusCode=503,s.end()}}})(t)),l.forEach((s=>e.on("request",((e,o)=>(n?t.isReady()||t.isShuttingDown():t.isReady())?e.url!==d&&e.url!==u||"GET"!==e.method?s(e,o):void 0:e.socket.destroy()))))):l.forEach((s=>e.on("request",((e,n)=>{if(t.isReady())return s(e,n);e.socket.destroy()})))),Object.assign(e,{stop:async()=>{if(e.listening&&!a)return a=!0,e.removeAllListeners("request"),e.on("request",((e,t)=>{t.headersSent||t.setHeader("connection","close")})),await Promise.all([o.closeAll(),i.closeAll()]),new Promise(((t,s)=>{e.close((e=>{e?s(e):t()}))}))}})},p=e=>{let t=i.A.STARTING;return{set:function(s,n){return t=s,e.emit(s,n),this},get:()=>t,setReady:function(){this.set(i.A.READY)},isReady:()=>t===i.A.READY,isShuttingDown:()=>t===i.A.SHUTTING_DOWN}},y=e=>{const t=new n.EventEmitter,s=p(t),r=l(e,s);return{status:s,init:function(){return(e=>{for(const t of o)process.on(t.type,(async s=>{await e.shutdown(t.type,t.code,s)}));return e})(this)},shutdown:function(e,t,s){return a(r,this)(e,t,s)},on:(e,s)=>t.on(e,s)}}},400:(e,t,s)=>{"use strict";s.d(t,{A:()=>o});var n=function(e){return e.STARTING="STARTING",e.READY="READY",e.SHUTTING_DOWN="SHUTTING_DOWN",e.SHUTDOWN="SHUTDOWN",e}(n||{});const o=n},97:()=>{}},t={};function s(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";s.r(n),s.d(n,{default:()=>a});var e=s(244),t=s(103),o=s(400),r=s(97),i={};for(const e in r)"default"!==e&&(i[e]=()=>r[e]);s.d(n,i);const a=Object.assign(((s,n)=>{(0,e.l)(n);const o=(0,t.A)(s).init();return{isReady:()=>o.status.isReady(),setReady:()=>o.status.setReady(),on:o.on}}),o.A)})(),module.exports=n})();const __export__=module.exports;module.exports=__export__.default,Object.assign(module.exports,__export__); | ||
var l={closePromises:[],timeout:1e3,healthCheck:!0,kubernetes:!1,livenessEndpoint:"/live",readinessEndpoint:"/ready"},y=!0,v=t=>(y&&(Object.freeze(Object.assign(l,t)),y=!1),l),p=l;import{EventEmitter as U}from"events";var N=t=>{let e=t||new Set,o=n=>{e.add(n),n.once("close",()=>e.delete(n))},i=n=>{n.destroy(),e.delete(n)};return{onConnection:o,closeAll:async()=>e.forEach(i)}},d=N;var k=t=>(e,o)=>{let{livenessEndpoint:i,readinessEndpoint:r}=p;if(!o.headersSent){if(e.url===i&&e.method==="GET"){o.statusCode=200,o.setHeader("Content-Type","application/json"),o.end(JSON.stringify({uptime:process.uptime()|0}));return}if(e.url===r&&e.method==="GET"){if(t.isReady()){o.statusCode=200,o.setHeader("Content-Type","application/json"),o.end(JSON.stringify({status:"ready"}));return}o.statusCode=503,o.end()}}},h=k;var{livenessEndpoint:C,readinessEndpoint:w}=p,D=(t,e)=>{let{healthCheck:o,kubernetes:i}=p,r=d(),n=d(),a=!1;t.on("connection",r.onConnection),t.on("secureConnection",n.onConnection);let f=t.listeners("request");return t.removeAllListeners("request"),o?(t.on("request",h(e)),f.forEach(m=>t.on("request",(s,u)=>{if(i?!e.isReady()&&!e.isShuttingDown():!e.isReady())return s.socket.destroy();if(s.url!==C&&s.url!==w||s.method!=="GET")return m(s,u)}))):f.forEach(m=>t.on("request",(s,u)=>{if(e.isReady())return m(s,u);s.socket.destroy()})),Object.assign(t,{stop:async()=>{if(!(!t.listening||a))return a=!0,t.removeAllListeners("request"),t.on("request",(m,s)=>{s.headersSent||s.setHeader("connection","close")}),await Promise.all([r.closeAll(),n.closeAll()]),new Promise((m,s)=>{t.close(u=>{u?s(u):m()})})}})},I=D;var g=(r=>(r.STARTING="STARTING",r.READY="READY",r.SHUTTING_DOWN="SHUTTING_DOWN",r.SHUTDOWN="SHUTDOWN",r))(g||{}),c=g;var P=t=>{let e=c.STARTING;return{set:function(o,i){return e=o,t.emit(o,i),this},get:()=>e,setReady:function(){this.set(c.READY)},isReady:()=>e===c.READY,isShuttingDown:()=>e===c.SHUTTING_DOWN}},T=P;var A=[{type:"SIGHUP",code:1},{type:"SIGBREAK",code:1},{type:"SIGINT",code:2},{type:"SIGTERM",code:15},{type:"uncaughtException",code:2}],E=A;var b=t=>{for(let e of E)process.on(e.type,async o=>{await t.shutdown(e.type,e.code,o)});return t},R=b;var H=t=>new Promise(e=>setTimeout(e,t)),O=H;var _=(t,e)=>async(o,i,r)=>{let{timeout:n,closePromises:a}=p,f=r&&r.message?r:new Error(o);e.status.set(c.SHUTTING_DOWN,f),await O(n),await Promise.all(a.map(S=>S())),await t.stop(),e.status.set(c.SHUTDOWN,f),process.exit(128+i)},G=_;var j=t=>{let e=new U,o=T(e),i=I(t,o);return{status:o,init:function(){return R(this)},shutdown:function(r,n,a){return G(i,this)(r,n,a)},on:(r,n)=>e.on(r,n)}},x=j;var W=(t,e)=>{v(e);let o=x(t).init();return{isReady:()=>o.status.isReady(),setReady:()=>o.status.setReady(),on:o.on}},M=Object.assign(W,c),ye=M;export{ye as default}; |
170
package.json
{ | ||
"name": "@gquittet/graceful-server", | ||
"version": "4.0.9", | ||
"version": "5.0.0-alpha1", | ||
"description": "Tiny (~5k), dependency-free Node.JS library to make your API more graceful", | ||
@@ -16,46 +16,43 @@ "license": "MIT", | ||
}, | ||
"main": "./lib/index.js", | ||
"types": "./lib/types/index.d.ts", | ||
"type": "module", | ||
"main": "./lib/index.cjs", | ||
"types": "./lib/index.d.cts", | ||
"exports": { | ||
".": { | ||
"import": { | ||
"default": "./lib/index.js", | ||
"types": "./lib/index.d.ts" | ||
}, | ||
"require": { | ||
"default": "./lib/index.cjs", | ||
"types": "./lib/index.d.cts" | ||
} | ||
} | ||
}, | ||
"imports": { | ||
"#config/*": "./src/config/*.js", | ||
"#constants/*": "./src/constants/*.js", | ||
"#core/*": "./src/core/*.js", | ||
"#interface/*": "./src/interface/*.js", | ||
"#util/*": "./src/util/*.js" | ||
}, | ||
"optionalDependencies": { | ||
"fsevents": "^2.3.2" | ||
"fsevents": "^2.3.3" | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "^7.23.9", | ||
"@babel/core": "^7.24.0", | ||
"@babel/plugin-proposal-class-properties": "^7.18.6", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.20.7", | ||
"@babel/preset-env": "^7.24.0", | ||
"@babel/preset-typescript": "^7.23.3", | ||
"@eslint/js": "^9.3.0", | ||
"@types/express": "^4.17.21", | ||
"@types/jest": "^29.5.12", | ||
"@types/node": "^20.11.29", | ||
"@typescript-eslint/eslint-plugin": "^7.3.0", | ||
"@typescript-eslint/parser": "^7.3.0", | ||
"add-module-exports-webpack-plugin": "^2.0.0", | ||
"babel-loader": "^9.1.3", | ||
"babel-plugin-module-resolver": "^5.0.0", | ||
"@types/node": "^20.12.12", | ||
"@vitest/coverage-v8": "^1.6.0", | ||
"eslint": "^8.57.0", | ||
"eslint-config-prettier": "^9.1.0", | ||
"eslint-config-standard": "^17.1.0", | ||
"eslint-import-resolver-babel-module": "^5.3.2", | ||
"eslint-plugin-import": "^2.29.1", | ||
"eslint-plugin-module-resolver": "^1.5.0", | ||
"eslint-plugin-n": "^16.6.2", | ||
"eslint-plugin-promise": "^6.1.1", | ||
"esm": "^3.2.25", | ||
"fork-ts-checker-webpack-plugin": "^9.0.2", | ||
"husky": "^9.0.11", | ||
"jest": "^29.7.0", | ||
"lint-staged": "^15.2.2", | ||
"pinst": "^3.0.0", | ||
"eslint-plugin-security": "^3.0.0", | ||
"eslint-plugin-simple-import-sort": "^12.1.0", | ||
"eslint-plugin-sonarjs": "^1.0.3", | ||
"eslint-plugin-unused-imports": "^3.2.0", | ||
"prettier": "^3.2.5", | ||
"prettier-package-json": "^2.8.0", | ||
"rimraf": "^5.0.5", | ||
"ts-jest": "^29.1.2", | ||
"ts-node": "^10.9.2", | ||
"ttypescript": "^1.5.15", | ||
"typescript": "^4.9.5", | ||
"typescript-transform-paths": "^3.4.7", | ||
"webpack": "^5.90.3", | ||
"webpack-cli": "^5.1.4" | ||
"tsup": "^8.0.2", | ||
"typescript": "^5.4.5", | ||
"typescript-eslint": "^7.10.0", | ||
"vitest": "^1.6.0" | ||
}, | ||
@@ -71,96 +68,11 @@ "keywords": [ | ||
"engines": { | ||
"node": ">=14.0.0" | ||
"node": ">=18.0.0" | ||
}, | ||
"eslintConfig": { | ||
"env": { | ||
"jest": true, | ||
"node": true | ||
}, | ||
"extends": [ | ||
"eslint:recommended", | ||
"plugin:@typescript-eslint/eslint-recommended", | ||
"prettier", | ||
"standard" | ||
], | ||
"ignorePatterns": [ | ||
"/node_modules/", | ||
"/lib/" | ||
], | ||
"parser": "@typescript-eslint/parser", | ||
"plugins": [ | ||
"module-resolver", | ||
"@typescript-eslint" | ||
], | ||
"root": true, | ||
"rules": { | ||
"@typescript-eslint/no-unused-vars": [ | ||
"error", | ||
{ | ||
"args": "after-used", | ||
"ignoreRestSiblings": false, | ||
"vars": "all" | ||
} | ||
], | ||
"module-resolver/use-alias": 2, | ||
"no-unused-vars": "off", | ||
"space-before-function-paren": "off" | ||
}, | ||
"settings": { | ||
"import/resolver": { | ||
"babel-module": {} | ||
} | ||
} | ||
}, | ||
"jest": { | ||
"transform": { | ||
"\\*.ts$": [ | ||
"ts-jest", | ||
{ | ||
"compiler": "ttypescript", | ||
"diagnostics": true, | ||
"tsconfig": "tsconfig.json" | ||
} | ||
] | ||
}, | ||
"moduleNameMapper": { | ||
"~/(.*)": "<rootDir>/src/$1" | ||
}, | ||
"preset": "ts-jest", | ||
"testEnvironment": "node", | ||
"testRegex": "/tests/.*\\.test\\.ts" | ||
}, | ||
"lint-staged": { | ||
"*.ts": "eslint --cache --fix", | ||
"*.{ts,md}": "prettier --write", | ||
"package.json": [ | ||
"prettier-package-json --write", | ||
"git add" | ||
] | ||
}, | ||
"prettier": { | ||
"arrowParens": "avoid", | ||
"bracketSpacing": true, | ||
"endOfLine": "lf", | ||
"printWidth": 120, | ||
"semi": false, | ||
"singleQuote": true, | ||
"tabWidth": 2, | ||
"trailingComma": "none", | ||
"useTabs": false | ||
}, | ||
"scripts": { | ||
"prebuild": "npm run clean", | ||
"build": "npm run build:types && npm run bundle", | ||
"build:types": "ttsc -p tsconfig.prod.json --emitDeclarationOnly", | ||
"bundle": "webpack", | ||
"clean": "rimraf lib/", | ||
"_postinstall": "husky install", | ||
"lint": "eslint src/**/*.ts", | ||
"test": "NODE_ENV=test jest --runInBand", | ||
"test:coverage": "NODE_ENV=test jest --coverage", | ||
"test:lint": "eslint tests/**/*.ts", | ||
"type-check": "ttsc -p tsconfig.prod.json --noEmit", | ||
"type-check:watch": "npm run type-check -- --watch", | ||
"preversion": "npm run clean && npm run lint && npm run test:lint && npm run test && npm run build" | ||
"build": "tsup", | ||
"lint": "eslint", | ||
"test": "vitest", | ||
"coverage": "vitest run --coverage", | ||
"preversion": "npm run lint && npm run coverage && npm run build" | ||
} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
15
-60.53%Yes
NaN20442
-29.4%4
-83.33%11
-91.97%1
Infinity%