Compare commits
1 Commits
developmen
...
improvemen
Author | SHA1 | Date |
---|---|---|
williamlardier | e5c7cf28dd |
|
@ -1 +0,0 @@
|
||||||
index.d.ts
|
|
|
@ -1,15 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
commonjs: true,
|
|
||||||
es2021: true,
|
|
||||||
},
|
|
||||||
extends: 'airbnb-base',
|
|
||||||
overrides: [
|
|
||||||
],
|
|
||||||
parserOptions: {
|
|
||||||
ecmaVersion: 'latest',
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
},
|
|
||||||
};
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es2021": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
],
|
||||||
|
"ignorePatterns": ["build/**/*.js", "build/**/*.d.ts"],
|
||||||
|
"overrides": [
|
||||||
|
],
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": "latest",
|
||||||
|
"sourceType": "module"
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"@typescript-eslint"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
}
|
||||||
|
}
|
|
@ -32,4 +32,5 @@ jobs:
|
||||||
run: yarn install --frozen-lockfile
|
run: yarn install --frozen-lockfile
|
||||||
- name: run lint
|
- name: run lint
|
||||||
run: yarn run eslint
|
run: yarn run eslint
|
||||||
|
- name: run build
|
||||||
|
run: yarn build
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
import HttpAgent, { HttpsAgent } from 'agentkeepalive';
|
|
||||||
|
|
||||||
import { HttpsOptions, HttpOptions } from 'agentkeepalive';
|
|
||||||
|
|
||||||
declare namespace http {
|
|
||||||
export interface clientConfigurationDefault {
|
|
||||||
/**
|
|
||||||
* Maximum Socket Number: true if TCP session reuse must be enabled
|
|
||||||
*/
|
|
||||||
maxSockets?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Agent extends HttpAgent {
|
|
||||||
constructor(opts?: HttpOptions, config?: clientConfigurationDefault);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
declare namespace https {
|
|
||||||
export interface clientConfigurationDefault {
|
|
||||||
/**
|
|
||||||
* Maximum Socket Number: true if TCP session reuse must be enabled
|
|
||||||
*/
|
|
||||||
maxSockets?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Agent extends HttpsAgent {
|
|
||||||
constructor(opts?: HttpsOptions, config?: clientConfigurationDefault);
|
|
||||||
}
|
|
||||||
}
|
|
11
index.js
11
index.js
|
@ -1,11 +0,0 @@
|
||||||
/* eslint-disable global-require */
|
|
||||||
|
|
||||||
exports.http = {
|
|
||||||
Agent: require('./lib/http-agent').default,
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.https = {
|
|
||||||
Agent: require('./lib/https-agent').default,
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.AgentConfiguration = require('./lib/config/agentConfiguration').default;
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
import agentConfiguration from "./lib/config/agentConfiguration";
|
||||||
|
import httpAgent from "./lib/http-agent";
|
||||||
|
import httpsAgent from "./lib/https-agent";
|
||||||
|
|
||||||
|
export const http = {
|
||||||
|
Agent: httpAgent,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const https = {
|
||||||
|
Agent: httpsAgent,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const AgentConfiguration = agentConfiguration;
|
|
@ -1,3 +1,5 @@
|
||||||
|
import * as http from 'http';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The maximum socket configuration defaults to 50.
|
* The maximum socket configuration defaults to 50.
|
||||||
*/
|
*/
|
||||||
|
@ -8,10 +10,10 @@ const maxSocketsNumber = Number(process.env.MAX_SOCKETS) || 50;
|
||||||
* The goal is to enforce a `maxSockets` property to properly
|
* The goal is to enforce a `maxSockets` property to properly
|
||||||
* handle load.
|
* handle load.
|
||||||
*/
|
*/
|
||||||
const agentConfiguration = {
|
const agentConfiguration: http.AgentOptions = {
|
||||||
keepAlive: true,
|
keepAlive: true,
|
||||||
maxSockets: maxSocketsNumber,
|
maxSockets: maxSocketsNumber,
|
||||||
maxFreeSockets: maxSocketsNumber,
|
maxFreeSockets: maxSocketsNumber,
|
||||||
};
|
}
|
||||||
|
|
||||||
exports.default = agentConfiguration;
|
export default agentConfiguration;
|
|
@ -0,0 +1,6 @@
|
||||||
|
export default interface clientConfigurationDefault {
|
||||||
|
/**
|
||||||
|
* Maximum Socket Number: true if TCP session reuse must be enabled
|
||||||
|
*/
|
||||||
|
maxSockets?: boolean;
|
||||||
|
}
|
|
@ -1,28 +0,0 @@
|
||||||
const HttpAgent = require('agentkeepalive');
|
|
||||||
const agentConfiguration = require('./config/agentConfiguration');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class AgentHttp
|
|
||||||
* Abstracts the native HttpAgent class from agentkeepalive to enforce common
|
|
||||||
* networking configuration across components.
|
|
||||||
*/
|
|
||||||
class AgentHttp extends HttpAgent {
|
|
||||||
/**
|
|
||||||
* Constructor for the AgentHttp class
|
|
||||||
*
|
|
||||||
* @param opts - Custom HTTP Agent options
|
|
||||||
* @param config - user-defined default configuration to apply
|
|
||||||
*/
|
|
||||||
constructor(opts, config = {
|
|
||||||
maxSockets: true,
|
|
||||||
}) {
|
|
||||||
// Enforce TCP session reuse configuration, unless explicitely specified.
|
|
||||||
let defaultConfigurations = {};
|
|
||||||
if (config.maxSockets) {
|
|
||||||
defaultConfigurations = agentConfiguration;
|
|
||||||
}
|
|
||||||
super({ ...opts, ...defaultConfigurations });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.default = AgentHttp;
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
import HttpAgent, { HttpOptions } from 'agentkeepalive';
|
||||||
|
import clientConfigurationDefault from './config/default';
|
||||||
|
import agentConfiguration from './config/agentConfiguration';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class AgentHttp
|
||||||
|
* Abstracts the native HttpAgent class from agentkeepalive to enforce common
|
||||||
|
* networking configuration across components.
|
||||||
|
*/
|
||||||
|
export default class AgentHttp extends HttpAgent {
|
||||||
|
/**
|
||||||
|
* Constructor for the AgentHttp class
|
||||||
|
*
|
||||||
|
* @param opts - Custom HTTP Agent options
|
||||||
|
* @param config - user-defined default configuration to apply
|
||||||
|
*/
|
||||||
|
constructor(
|
||||||
|
opts?: HttpOptions,
|
||||||
|
config: clientConfigurationDefault = {
|
||||||
|
maxSockets: true,
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
// Enforce TCP session reuse configuration, unless explicitely specified.
|
||||||
|
let defaultConfigurations: HttpOptions = {};
|
||||||
|
if (config.maxSockets) {
|
||||||
|
defaultConfigurations = agentConfiguration;
|
||||||
|
}
|
||||||
|
super({
|
||||||
|
...opts,
|
||||||
|
...defaultConfigurations,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,28 +0,0 @@
|
||||||
const { HttpsAgent } = require('agentkeepalive');
|
|
||||||
const agentConfiguration = require('./config/agentConfiguration');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class AgentHttps
|
|
||||||
* Abstracts the native HttpsAgent class from agentkeepalive to enforce common
|
|
||||||
* networking configuration across components.
|
|
||||||
*/
|
|
||||||
class AgentHttps extends HttpsAgent {
|
|
||||||
/**
|
|
||||||
* Constructor for the AgentHttps class
|
|
||||||
*
|
|
||||||
* @param opts - Custom HTTPs Agent options
|
|
||||||
* @param config - user-defined default configuration to apply
|
|
||||||
*/
|
|
||||||
constructor(opts, config = {
|
|
||||||
maxSockets: true,
|
|
||||||
}) {
|
|
||||||
// Enforce TCP session reuse configuration, unless explicitely specified.
|
|
||||||
let defaultConfigurations = {};
|
|
||||||
if (config.maxSockets) {
|
|
||||||
defaultConfigurations = agentConfiguration;
|
|
||||||
}
|
|
||||||
super({ ...opts, ...defaultConfigurations });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.default = AgentHttps;
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { HttpsAgent, HttpsOptions } from 'agentkeepalive';
|
||||||
|
import clientConfigurationDefault from './config/default';
|
||||||
|
import agentConfiguration from './config/agentConfiguration';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class AgentHttps
|
||||||
|
* Abstracts the native HttpsAgent class from agentkeepalive to enforce common
|
||||||
|
* networking configuration across components.
|
||||||
|
*/
|
||||||
|
export default class AgentHttps extends HttpsAgent {
|
||||||
|
/**
|
||||||
|
* Constructor for the AgentHttps class
|
||||||
|
*
|
||||||
|
* @param opts - Custom HTTPs Agent options
|
||||||
|
* @param config - user-defined default configuration to apply
|
||||||
|
*/
|
||||||
|
constructor(
|
||||||
|
opts?: HttpsOptions,
|
||||||
|
config: clientConfigurationDefault = {
|
||||||
|
maxSockets: true,
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
// Enforce TCP session reuse configuration, unless explicitely specified.
|
||||||
|
let defaultConfigurations: HttpsOptions = {};
|
||||||
|
if (config.maxSockets) {
|
||||||
|
defaultConfigurations = agentConfiguration;
|
||||||
|
}
|
||||||
|
super({
|
||||||
|
...opts,
|
||||||
|
...defaultConfigurations,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
22
package.json
22
package.json
|
@ -1,30 +1,38 @@
|
||||||
{
|
{
|
||||||
"name": "httpagent",
|
"name": "httpagent",
|
||||||
"version": "1.0.6",
|
"version": "1.0.4",
|
||||||
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16"
|
"node": ">=16"
|
||||||
},
|
},
|
||||||
"description": "A utility library for networking",
|
"description": "A utility library for networking",
|
||||||
"main": "index.js",
|
"main": "build/index.js",
|
||||||
"repository": "git@github.com:scality/httpagent.git",
|
"repository": "git@github.com:scality/httpagent.git",
|
||||||
"author": "Scality Inc.",
|
"author": "Scality Inc.",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"build": "tsc --declaration; tsc --build tsconfig.json",
|
||||||
"format": "prettier --write \"**/*.{ts,tsx,css,html}\" ",
|
"format": "prettier --write \"**/*.{ts,tsx,css,html}\" ",
|
||||||
|
"prepare": "yarn build || true",
|
||||||
"eslint": "eslint ./ --ext .js,.ts,.tsx",
|
"eslint": "eslint ./ --ext .js,.ts,.tsx",
|
||||||
"eslint-fix": "eslint ./ --ext .js,.ts,.tsx --fix",
|
"eslint-fix": "eslint ./ --ext .js,.ts,.tsx --fix",
|
||||||
"eslint-init": "eslint --init"
|
"eslint-init": "eslint --init",
|
||||||
|
"lint": "eslint ./ --ext .js,.ts,.tsx --format visualstudio --no-color --max-warnings 10 --report-unused-disable-directives"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@types/node": "^18.11.9",
|
||||||
"agentkeepalive": "^4.2.1"
|
"agentkeepalive": "^4.2.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "^7.32.0 || ^8.2.0",
|
"@typescript-eslint/eslint-plugin": "^5.44.0",
|
||||||
|
"@typescript-eslint/parser": "^5.44.0",
|
||||||
|
"eslint": "^8.28.0",
|
||||||
"eslint-config-airbnb-base": "^15.0.0",
|
"eslint-config-airbnb-base": "^15.0.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-config-scality": "git+https://git.yourcmc.ru/vitalif/zenko-eslint-config-scality.git",
|
"eslint-config-scality": "git+https://github.com/scality/Guidelines#8.2.0",
|
||||||
"eslint-plugin-import": "^2.25.2",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"prettier": "^2.8.0"
|
"prettier": "^2.8.0",
|
||||||
|
"typescript": "^4.9.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es6",
|
||||||
|
"module": "commonjs",
|
||||||
|
"rootDir": "./",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"checkJs": false,
|
||||||
|
"outDir": "build",
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"strict": true,
|
||||||
|
"declaration": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noEmitOnError": false,
|
||||||
|
"sourceMap": true,
|
||||||
|
"declarationMap": true
|
||||||
|
},
|
||||||
|
"include": ["index.ts", "lib/**/*"],
|
||||||
|
"exclude": ["node_modules/*"],
|
||||||
|
"compileOnSave": true
|
||||||
|
}
|
Loading…
Reference in New Issue