Compare commits
6 Commits
developmen
...
improvemen
Author | SHA1 | Date |
---|---|---|
williamlardier | 29cc14c7e5 | |
williamlardier | 11cd9ed40e | |
williamlardier | b080ddd542 | |
williamlardier | f4a7c3a968 | |
williamlardier | ce3264dd63 | |
williamlardier | e5c2fa6cdb |
|
@ -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": {
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: 'Tag to be released'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
verify-release:
|
||||||
|
name: Verify if tag is valid
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout CTST repository
|
||||||
|
uses: 'actions/checkout@v3'
|
||||||
|
with:
|
||||||
|
ref: ${{ github.ref }}
|
||||||
|
|
||||||
|
- name: Fetch tags
|
||||||
|
run: git fetch --tags
|
||||||
|
|
||||||
|
- name: 'Check if tag was already created'
|
||||||
|
shell: bash
|
||||||
|
run: >
|
||||||
|
git show-ref --tags v${{ github.event.inputs.tag }} --quiet \
|
||||||
|
&& exit 1 || exit 0
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- verify-release
|
||||||
|
steps:
|
||||||
|
- name: Create Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
name: Release ${{ github.event.inputs.tag }}
|
||||||
|
tag_name: v${{ github.event.inputs.tag }}
|
||||||
|
generate_release_notes: true
|
||||||
|
target_commitish: ${{ github.sha }}
|
|
@ -0,0 +1,36 @@
|
||||||
|
name: Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master/**'
|
||||||
|
- 'feature/**'
|
||||||
|
- 'documentation/**'
|
||||||
|
- 'improvement/**'
|
||||||
|
- 'bugfix/**'
|
||||||
|
- 'w/**'
|
||||||
|
- 'q/**'
|
||||||
|
- 'hotfix/**'
|
||||||
|
- 'task/**'
|
||||||
|
- 'release/**'
|
||||||
|
- 'main'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install deps
|
||||||
|
run: sudo apt-get update -q
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: '16'
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install -g yarn
|
||||||
|
- name: install dependencies
|
||||||
|
run: yarn install --frozen-lockfile
|
||||||
|
- name: run lint
|
||||||
|
run: yarn run eslint
|
||||||
|
- name: run build
|
||||||
|
run: yarn build
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# Typescript v1 declaration files
|
||||||
|
typings/
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env
|
||||||
|
|
||||||
|
#reports
|
||||||
|
reports/*.html
|
||||||
|
reports/*.json
|
||||||
|
|
||||||
|
#build
|
||||||
|
build
|
||||||
|
|
||||||
|
#local files
|
||||||
|
*.loc
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Ignore artifacts:
|
||||||
|
build
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"arrowParens": "avoid",
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"endOfLine": "auto",
|
||||||
|
"printWidth": 120,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"tabWidth": 4,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"useTabs": false
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
import httpAgent from "./lib/http-agent";
|
||||||
|
import httpsAgent from "./lib/https-agent";
|
||||||
|
|
||||||
|
export const http = {
|
||||||
|
Agent: httpAgent,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const https = {
|
||||||
|
Agent: httpsAgent,
|
||||||
|
};
|
|
@ -0,0 +1,6 @@
|
||||||
|
export default interface clientConfigurationDefault {
|
||||||
|
/**
|
||||||
|
* Maximum Socket Number: true if TCP session reuse must be enabled
|
||||||
|
*/
|
||||||
|
maxSockets?: boolean;
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
import * as http from 'http';
|
||||||
|
import clientConfigurationDefault from './config/default';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class ClientHttp
|
||||||
|
* Abstracts the native http.Agent class to enforce common
|
||||||
|
* networking configuration across components.
|
||||||
|
*/
|
||||||
|
export default class ClientHttp extends http.Agent {
|
||||||
|
/**
|
||||||
|
* The maximum socket configuration defaults to 50.
|
||||||
|
*/
|
||||||
|
private static maxSocketsConfiguration = Number(process.env.MAX_SOCKETS) || 50;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for the ClientHttp class
|
||||||
|
*
|
||||||
|
* @param opts - Custom HTTP Agent options
|
||||||
|
* @param config - user-defined default configuration du apply
|
||||||
|
*/
|
||||||
|
constructor(
|
||||||
|
opts?: http.AgentOptions,
|
||||||
|
config: clientConfigurationDefault = {
|
||||||
|
maxSockets: true,
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
// Enforce TCP session reuse configuration, unless explicitely specified.
|
||||||
|
const defaultConfigurations: http.AgentOptions = {};
|
||||||
|
if (config.maxSockets) {
|
||||||
|
defaultConfigurations.keepAlive = true;
|
||||||
|
defaultConfigurations.maxSockets = ClientHttp.maxSocketsConfiguration;
|
||||||
|
defaultConfigurations.maxFreeSockets = ClientHttp.maxSocketsConfiguration;
|
||||||
|
}
|
||||||
|
super({
|
||||||
|
...opts,
|
||||||
|
...defaultConfigurations,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
import * as https from 'https';
|
||||||
|
import clientConfigurationDefault from './config/default';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @class ClientHttps
|
||||||
|
* Abstracts the native https.Agent class to enforce common
|
||||||
|
* networking configuration across components.
|
||||||
|
*/
|
||||||
|
export default class ClientHttps extends https.Agent {
|
||||||
|
/**
|
||||||
|
* The maximum socket configuration defaults to 50.
|
||||||
|
*/
|
||||||
|
private static maxSocketsConfiguration = Number(process.env.MAX_SOCKETS) || 50;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for the ClientHttps class
|
||||||
|
*
|
||||||
|
* @param opts - Custom HTTPs Agent options
|
||||||
|
* @param config - user-defined default configuration du apply
|
||||||
|
*/
|
||||||
|
constructor(
|
||||||
|
opts?: https.AgentOptions,
|
||||||
|
config: clientConfigurationDefault = {
|
||||||
|
maxSockets: true,
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
// Enforce TCP session reuse configuration, unless explicitely specified.
|
||||||
|
const defaultConfigurations: https.AgentOptions = {};
|
||||||
|
if (config.maxSockets) {
|
||||||
|
defaultConfigurations.keepAlive = true;
|
||||||
|
defaultConfigurations.maxSockets = ClientHttps.maxSocketsConfiguration;
|
||||||
|
defaultConfigurations.maxFreeSockets = ClientHttps.maxSocketsConfiguration;
|
||||||
|
}
|
||||||
|
super({
|
||||||
|
...opts,
|
||||||
|
...defaultConfigurations,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"name": "arsenal-networking",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "A utility library for networking",
|
||||||
|
"main": "build/index.js",
|
||||||
|
"repository": "git@github.com:scality/arsenal-networking.git",
|
||||||
|
"author": "Scality Inc.",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc --build tsconfig.json",
|
||||||
|
"format": "prettier --write \"**/*.{ts,tsx,css,html}\" ",
|
||||||
|
"prepare": "yarn build || true",
|
||||||
|
"eslint": "eslint ./ --ext .js,.ts,.tsx",
|
||||||
|
"eslint-fix": "eslint ./ --ext .js,.ts,.tsx --fix",
|
||||||
|
"eslint-init": "eslint --init",
|
||||||
|
"lint": "eslint ./ --ext .js,.ts,.tsx --format visualstudio --no-color --max-warnings 10 --report-unused-disable-directives"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "^18.11.9"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@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-prettier": "^8.5.0",
|
||||||
|
"eslint-config-scality": "git+https://github.com/scality/Guidelines#8.2.0",
|
||||||
|
"eslint-plugin-import": "^2.26.0",
|
||||||
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
|
"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