Skip to content

Commit

Permalink
Move all HTTP proxy agent related modules to a monorepo (#143)
Browse files Browse the repository at this point in the history
Converts this repository into a monorepo, containing the following npm packages:

   * agent-base
   * data-uri-to-buffer
   * degenerator
   * get-uri
   * https-proxy-agent
   * http-proxy-agent
   * pac-proxy-agent
   * pac-resolver
   * proxy
   * proxy-agent
   * socks-proxy-agent

Why? Mainly for ease of maintenance. It's difficult to monitor 10+ repositories and
keep their configurations in sync. Additionally:

   * Uses Turborepo
   * All packages have been converted to TypeScript
   * Common issue tracker for all related packages
   * Common eslint configuration
   * Shared GH Actions setup
   * Test changes for sub-packages against dependent parent packages
  • Loading branch information
TooTallNate committed Apr 29, 2023
1 parent d0d80cc commit b06bb20
Show file tree
Hide file tree
Showing 160 changed files with 29,525 additions and 704 deletions.
100 changes: 15 additions & 85 deletions .eslintrc.js
@@ -1,86 +1,16 @@
module.exports = {
'extends': [
'airbnb',
'prettier'
],
'parser': '@typescript-eslint/parser',
'parserOptions': {
'ecmaVersion': 2018,
'sourceType': 'module',
'modules': true
},
'plugins': [
'@typescript-eslint'
],
'settings': {
'import/resolver': {
'typescript': {
}
}
},
'rules': {
'quotes': [
2,
'single',
{
'allowTemplateLiterals': true
}
],
'class-methods-use-this': 0,
'consistent-return': 0,
'func-names': 0,
'global-require': 0,
'guard-for-in': 0,
'import/no-duplicates': 0,
'import/no-dynamic-require': 0,
'import/no-extraneous-dependencies': 0,
'import/prefer-default-export': 0,
'lines-between-class-members': 0,
'no-await-in-loop': 0,
'no-bitwise': 0,
'no-console': 0,
'no-continue': 0,
'no-control-regex': 0,
'no-empty': 0,
'no-loop-func': 0,
'no-nested-ternary': 0,
'no-param-reassign': 0,
'no-plusplus': 0,
'no-restricted-globals': 0,
'no-restricted-syntax': 0,
'no-shadow': 0,
'no-underscore-dangle': 0,
'no-use-before-define': 0,
'prefer-const': 0,
'prefer-destructuring': 0,
'camelcase': 0,
'no-unused-vars': 0, // in favor of '@typescript-eslint/no-unused-vars'
// 'indent': 0 // in favor of '@typescript-eslint/indent'
'@typescript-eslint/no-unused-vars': 'warn',
// '@typescript-eslint/indent': ['error', 2] // this might conflict with a lot ongoing changes
'@typescript-eslint/no-array-constructor': 'error',
'@typescript-eslint/adjacent-overload-signatures': 'error',
'@typescript-eslint/class-name-casing': 'error',
'@typescript-eslint/interface-name-prefix': 'error',
'@typescript-eslint/no-empty-interface': 'error',
'@typescript-eslint/no-inferrable-types': 'error',
'@typescript-eslint/no-misused-new': 'error',
'@typescript-eslint/no-namespace': 'error',
'@typescript-eslint/no-non-null-assertion': 'error',
'@typescript-eslint/no-parameter-properties': 'error',
'@typescript-eslint/no-triple-slash-reference': 'error',
'@typescript-eslint/prefer-namespace-keyword': 'error',
'@typescript-eslint/type-annotation-spacing': 'error',
// '@typescript-eslint/array-type': 'error',
// '@typescript-eslint/ban-types': 'error',
// '@typescript-eslint/explicit-function-return-type': 'warn',
// '@typescript-eslint/explicit-member-accessibility': 'error',
// '@typescript-eslint/member-delimiter-style': 'error',
// '@typescript-eslint/no-angle-bracket-type-assertion': 'error',
// '@typescript-eslint/no-explicit-any': 'warn',
// '@typescript-eslint/no-object-literal-type-assertion': 'error',
// '@typescript-eslint/no-use-before-define': 'error',
// '@typescript-eslint/no-var-requires': 'error',
// '@typescript-eslint/prefer-interface': 'error'
}
}
root: true,
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
env: {
node: true,
},
// This tells ESLint to load the config from the package `eslint-config-custom`
extends: [
'turbo',
'prettier',
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
};
53 changes: 27 additions & 26 deletions .github/workflows/test.yml
@@ -1,12 +1,6 @@
name: Node CI

on:
push:
branches:
- master
tags:
- '!*'
pull_request:
on: [push]

jobs:
build:
Expand All @@ -15,32 +9,39 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
node-version: [6.x, 8.x, 10.x, 12.x, 14.x]
node-version: [14.x, 16.x, 18.x, 20.x]
fail-fast: false

runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v1

- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 7.32.2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm test

- name: Print Node.js Version
run: node --version

- name: Install Dependencies
run: npm install
env:
CI: true
lint:
name: Lint

- name: Run "build" step
run: npm run build --if-present
env:
CI: true
runs-on: ubuntu-latest

- name: Run tests
run: npm test
env:
CI: true
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 7.32.2
- name: Use Node.js 20.x
uses: actions/setup-node@v3
with:
node-version: 20.x
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm lint
30 changes: 26 additions & 4 deletions .gitignore
@@ -1,4 +1,26 @@
/node_modules
/yarn.lock
/?.?s
/dist
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

?.?s
dist

# dependencies
node_modules
.pnp
.pnp.js

# testing
coverage

# misc
.DS_Store

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# turbo
.turbo

# vercel
.vercel
3 changes: 0 additions & 3 deletions .npmignore

This file was deleted.

63 changes: 13 additions & 50 deletions package.json
@@ -1,56 +1,19 @@
{
"name": "https-proxy-agent",
"version": "5.0.1",
"description": "An HTTP(s) proxy `http.Agent` implementation for HTTPS",
"main": "dist/index",
"types": "dist/index",
"files": [
"dist"
],
"private": true,
"name": "proxy-agent-monorepo",
"scripts": {
"prebuild": "rimraf dist",
"build": "tsc",
"test": "mocha --reporter spec",
"test-lint": "eslint src --ext .js,.ts",
"prepublishOnly": "npm run build"
},
"repository": {
"type": "git",
"url": "git://github.com/TooTallNate/node-https-proxy-agent.git"
},
"keywords": [
"https",
"proxy",
"endpoint",
"agent"
],
"author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
"license": "MIT",
"bugs": {
"url": "https://github.com/TooTallNate/node-https-proxy-agent/issues"
},
"dependencies": {
"agent-base": "6",
"debug": "4"
"build": "turbo run build",
"lint": "turbo run lint",
"test": "turbo run test",
"format": "prettier --write \"**/*.{ts,tsx,md}\""
},
"devDependencies": {
"@types/debug": "4",
"@types/node": "^12.12.11",
"@typescript-eslint/eslint-plugin": "1.6.0",
"@typescript-eslint/parser": "1.1.0",
"eslint": "5.16.0",
"eslint-config-airbnb": "17.1.0",
"eslint-config-prettier": "4.1.0",
"eslint-import-resolver-typescript": "1.1.1",
"eslint-plugin-import": "2.16.0",
"eslint-plugin-jsx-a11y": "6.2.1",
"eslint-plugin-react": "7.12.4",
"mocha": "^6.2.2",
"proxy": "1",
"rimraf": "^3.0.0",
"typescript": "^3.5.3"
},
"engines": {
"node": ">= 6"
"@typescript-eslint/eslint-plugin": "^5.59.1",
"@typescript-eslint/parser": "^5.59.1",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.8.0",
"eslint-config-turbo": "^1.9.3",
"prettier": "^2.5.1",
"turbo": "latest"
}
}

0 comments on commit b06bb20

Please sign in to comment.