Skip to content

Commit

Permalink
chore: inject project tool
Browse files Browse the repository at this point in the history
  • Loading branch information
lvisei committed Nov 11, 2024
1 parent fc415d1 commit 7734d26
Show file tree
Hide file tree
Showing 27 changed files with 852 additions and 6 deletions.
16 changes: 16 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# http://editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab
46 changes: 46 additions & 0 deletions .fatherrc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { defineConfig } from 'father';
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';

export default defineConfig({
esm: {
output: 'dist/esm',
},
cjs: {
output: 'dist/cjs',
},
// https://github.com/umijs/father/blob/master/docs/config.md#umd
umd: {
name: 'GPTVis',
output: {
path: './dist/umd',
filename: 'index.js',
},
platform: 'browser',
externals: {
lodash: '_',
'lodash-es': '_',
react: 'React',
'mapbox-gl': {
root: 'mapboxgl',
commonjs: 'mapbox-gl',
commonjs2: 'mapbox-gl',
amd: 'mapbox-gl',
},
'maplibre-gl': {
root: 'maplibregl',
commonjs: 'maplibre-gl',
commonjs2: 'maplibre-gl',
amd: 'maplibre-gl',
},
},
chainWebpack(memo) {
// 关闭压缩方便调试,默认开启
// memo.optimization.minimize(false);

memo
.plugin('webpack-bundle-analyzer')
.use(BundleAnalyzerPlugin, [{ analyzerMode: 'static', openAnalyzer: false }]);
return memo;
},
},
});
124 changes: 124 additions & 0 deletions .github/.gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
title = "gitleaks config"
[[rules]]
description = "AWS Manager ID"
regex = '''(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}'''
tags = ["key", "AWS"]
[[rules]]
description = "AWS Secret Key"
regex = '''(?i)aws(.{0,20})?(?-i)['\"][0-9a-zA-Z\/+]{40}['\"]'''
tags = ["key", "AWS"]
[[rules]]
description = "AWS MWS key"
regex = '''amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'''
tags = ["key", "AWS", "MWS"]
[[rules]]
description = "Facebook Secret Key"
regex = '''(?i)(facebook|fb)(.{0,20})?(?-i)['\"][0-9a-f]{32}['\"]'''
tags = ["key", "Facebook"]
[[rules]]
description = "Facebook Client ID"
regex = '''(?i)(facebook|fb)(.{0,20})?['\"][0-9]{13,17}['\"]'''
tags = ["key", "Facebook"]
[[rules]]
description = "Twitter Secret Key"
regex = '''(?i)twitter(.{0,20})?['\"][0-9a-z]{35,44}['\"]'''
tags = ["key", "Twitter"]
[[rules]]
description = "Twitter Client ID"
regex = '''(?i)twitter(.{0,20})?['\"][0-9a-z]{18,25}['\"]'''
tags = ["client", "Twitter"]
[[rules]]
description = "Github"
regex = '''(?i)github(.{0,20})?(?-i)['\"][0-9a-zA-Z]{35,40}['\"]'''
tags = ["key", "Github"]
[[rules]]
description = "Github Token"
regex = '''[0-9a-zA-Z]{35,40}'''
tags = ["key", "Github Token"]
[[rules]]
description = "Alibaba"
regex = '''(alibaba|antfin)-inc'''
tags = ["key", "Alibaba"]
[[rules]]
description = "antfin"
regex = '''(?i)antfin(.{0,20})?(?-i)['\"][0-9a-zA-Z]{35,40}['\"]'''
tags = ["key", "Antfin"]
[[rules]]
description = "LinkedIn Client ID"
regex = '''(?i)linkedin(.{0,20})?(?-i)['\"][0-9a-z]{12}['\"]'''
tags = ["client", "LinkedIn"]
[[rules]]
description = "LinkedIn Secret Key"
regex = '''(?i)linkedin(.{0,20})?['\"][0-9a-z]{16}['\"]'''
tags = ["secret", "LinkedIn"]
[[rules]]
description = "Slack"
regex = '''xox[baprs]-([0-9a-zA-Z]{10,48})?'''
tags = ["key", "Slack"]
[[rules]]
description = "Asymmetric Private Key"
regex = '''-----BEGIN ((EC|PGP|DSA|RSA|OPENSSH) )?PRIVATE KEY( BLOCK)?-----'''
tags = ["key", "AsymmetricPrivateKey"]
[[rules]]
description = "Public Key"
regex = '''ssh-rsa'''
tags = ["keys", "public key"]
[[rules]]
description = "Gitlab Key"
regex = '''privateToken|private-token'''
tags = ["keys", "Gitlab"]
[[rules]]
description = "Generic Credential"
regex = '''(?i)(api_key|apikey|secret)(.{0,20})?['|"][0-9a-zA-Z]{16,45}['|"]'''
tags = ["key", "API", "generic"]
[[rules]]
description = "Google API key"
regex = '''AIza[0-9A-Za-z\\-_]{35}'''
tags = ["key", "Google"]
[[rules]]
description = "Heroku API key"
regex = '''(?i)heroku(.{0,20})?['"][0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}['"]'''
tags = ["key", "Heroku"]
[[rules]]
description = "MailChimp API key"
regex = '''(?i)(mailchimp|mc)(.{0,20})?['"][0-9a-f]{32}-us[0-9]{1,2}['"]'''
tags = ["key", "Mailchimp"]
[[rules]]
description = "Mailgun API key"
regex = '''(?i)(mailgun|mg)(.{0,20})?['"][0-9a-z]{32}['"]'''
tags = ["key", "Mailgun"]
[[rules]]
description = "PayPal Braintree access token"
regex = '''access_token\$production\$[0-9a-z]{16}\$[0-9a-f]{32}'''
tags = ["key", "Paypal"]
[[rules]]
description = "Picatic API key"
regex = '''sk_live_[0-9a-z]{32}'''
tags = ["key", "Picatic"]
[[rules]]
description = "SendGrid API Key"
regex = '''SG\.[\w_]{16,32}\.[\w_]{16,64}'''
tags = ["key", "SendGrid"]
[[rules]]
description = "Slack Webhook"
regex = '''https://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8}/[a-zA-Z0-9_]{24}'''
tags = ["key", "slack"]
[[rules]]
description = "Stripe API key"
regex = '''(?i)stripe(.{0,20})?['\"][sk|rk]_live_[0-9a-zA-Z]{24}'''
tags = ["key", "Stripe"]
[[rules]]
description = "Square access token"
regex = '''sq0atp-[0-9A-Za-z\-_]{22}'''
tags = ["key", "square"]
[[rules]]
description = "Square OAuth secret"
regex = '''sq0csp-[0-9A-Za-z\\-_]{43}'''
tags = ["key", "square"]
[[rules]]
description = "Twilio API key"
regex = '''(?i)twilio(.{0,20})?['\"][0-9a-f]{32}['\"]'''
tags = ["key", "twilio"]
[whitelist]
description = "Whitelisted files"
file = '''(^\.?gitleaks.toml$|(.*?)(jpg|gif|doc|pdf|bin)|package-lock\.json$)'''
13 changes: 13 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
### PR includes

<!-- Add completed items in this PR, and change [ ] to [x]. -->

- [ ] fixed #0
- [ ] add / modify test cases
- [ ] documents, demos

### Screenshot

| Before | After |
| ------ | ----- |
|||
24 changes: 24 additions & 0 deletions .github/actions/prepare-install/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: 'Prepare Install'
description: 'Prepare repository and install all dependencies'

inputs:
node-version:
description: 'The node version to setup'
required: true

runs:
using: 'composite'
steps:
- uses: pnpm/action-setup@v3
with:
version: 9

- name: Use Node.js ${{ inputs.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
# cache: 'pnpm' # pnpm-lock.yaml caching dependencies to speed up workflows

- name: Install dependencies
shell: bash
run: pnpm install
24 changes: 24 additions & 0 deletions .github/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# for .github/workflows/release-label.yml
# These labels can be used in conjunction GitHub's [automatically generated release notes](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes)

changelog:
exclude:
labels:
- ignore-for-release
- pr(chore)
categories:
- title: 🎉 New Features
labels:
- pr(feature)
- title: 📖 Documentation Changes
labels:
- pr(documentation)
- title: 🐛 Bug Fixes
labels:
- pr(bugfix)
- title: 🛠 Breaking Changes
labels:
- pr(breaking)
- title: Other Changes
labels:
- '*'
74 changes: 74 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: CI

on:
push:
branches: [master]
paths:
- 'src/**'
- '__tests__/**'
pull_request:
branches:
- '**'
paths:
- 'src/**'
- '__tests__/**'

permissions:
contents: read # to fetch code (actions/checkout)

concurrency:
group: '${{ github.workflow }} - ${{ github.head_ref || github.ref }}'
cancel-in-progress: true

jobs:
lint:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/prepare-install
with:
node-version: ${{ matrix.node-version }}

- name: Check
run: |
pnpm check-deps
pnpm check-format
- name: Lint
run: pnpm lint:ts

# todo test
# unit-test:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# node-version: [18.x]
# steps:
# - uses: actions/checkout@v4
# - name: Install dependencies
# uses: ./.github/actions/prepare-install
# with:
# node-version: ${{ matrix.node-version }}

# - name: Coverage Test
# run: pnpm unit


size-test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/prepare-install
with:
node-version: ${{ matrix.node-version }}

- name: Szie Test With Build
run: pnpm test:size
40 changes: 40 additions & 0 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Deploy Site

on:
workflow_dispatch:
release:
# released: only latest release will trigger
types: [released]

concurrency:
group: '${{ github.workflow }} - ${{ github.ref }}'
cancel-in-progress: true

jobs:
publish-site:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/prepare-install
with:
node-version: ${{ matrix.node-version }}
- run: pnpm docs:build
- run: |
echo "gpt-vis.antv.vision" > docs-dist/CNAME
- run: |
cd docs-dist
git init
git config --local user.name antv
git config --local user.email [email protected]
git add .
git commit -m "update by release action"
- uses: ad-m/github-push-action@master
with:
github_token: ${{secrets.GITHUB_TOKEN}}
directory: docs-dist
branch: gh-pages
force: true
15 changes: 15 additions & 0 deletions .github/workflows/gitleaks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Gitleaks

on: push

jobs:
gitleaks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '1'
- name: gitleaks-action
uses: zricethezav/[email protected]
with:
config-path: .github/.gitleaks.toml
Loading

0 comments on commit 7734d26

Please sign in to comment.