diff --git a/.auto-changelog b/.auto-changelog new file mode 100644 index 0000000..610dd07 --- /dev/null +++ b/.auto-changelog @@ -0,0 +1,8 @@ +{ + "commitLimit": false, + "ignoreCommitPattern": "Bump .* version|Merge tag .+ into develop", + "package": true, + "sortCommits": "date-desc", + "startingVersion": "1.1.0", + "template": "keepachangelog" +} diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 0bc78bd..0000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/env", "@babel/preset-typescript"] -} diff --git a/.editorconfig b/.editorconfig index 5740eca..29cb3d0 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,6 +9,10 @@ end_of_line = lf insert_final_newline = true indent_style = tab -[{package.json,yarn.lock}] +[*.yml] +indent_style = space +indent_size = 2 + +[package.json] indent_style = space indent_size = 2 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..a1430c8 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +coverage/ +lib/ +/demo/webpack.config.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..1be9686 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,39 @@ +{ + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint"], + "extends": [ + "airbnb-base", + "plugin:jest/recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "parserOptions": { + "ecmaVersion": 2018, + "project": ["./**/tsconfig.json", "./**/tsconfig.test.json"] + }, + "rules": { + "@typescript-eslint/no-shadow": "error", + "import/extensions": [ + "error", + { + "ts": "never" + } + ], + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": ["**/*.spec.{js,ts}"] + } + ], + "import/prefer-default-export": "off", + "no-shadow": "off" + }, + "settings": { + "import/parsers": { + "@typescript-eslint/parser": [".ts"] + }, + "import/resolver": { + "typescript": {} + } + } +} diff --git a/.github/README.md b/.github/README.md new file mode 120000 index 0000000..3e12ca8 --- /dev/null +++ b/.github/README.md @@ -0,0 +1 @@ +../packages/strings-to-regex/README.md \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..299c8b2 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,18 @@ +version: 2 +updates: + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'weekly' + day: 'saturday' + assignees: + - 'wimpyprogrammer' + + - package-ecosystem: 'npm' + directory: '/' + schedule: + interval: 'weekly' + day: 'saturday' + assignees: + - 'wimpyprogrammer' + versioning-strategy: 'widen' diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml new file mode 100644 index 0000000..3154363 --- /dev/null +++ b/.github/workflows/security-scan.yml @@ -0,0 +1,36 @@ +name: Security Scan + +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] + schedule: + # 13:44 on Saturdays + - cron: '44 13 * * 6' + workflow_dispatch: + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: ['javascript'] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..6395bb6 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,57 @@ +name: Tests + +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] + schedule: + # 00:00 on Saturdays + - cron: '0 0 * * SAT' + workflow_dispatch: + +jobs: + test: + name: Test + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + node-version: [16.x] + include: + - node-version: 18.x + - node-version: lts/* + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: '2' + + - name: Test on Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - run: yarn + - run: npx prettier --check . + - run: yarn run build + - run: yarn run lint + - run: yarn run test + + - run: npx testpack-cli --keep=@types/jest,ts-jest,typescript jest.config.js tsconfig.test.json src/e2e.spec.ts + working-directory: ./packages/strings-to-regex + + - name: Upload test coverage report to Codecov + uses: codecov/codecov-action@v5.4.3 + with: + fail_ci_if_error: true + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + + - name: Run Snyk to check for vulnerabilities + if: ${{ github.actor != 'dependabot[bot]' }} + uses: snyk/actions/node@master + env: + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} diff --git a/.gitignore b/.gitignore index 5f7e9aa..8aa55d8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ +package-lock.json + coverage/ lib/ node_modules/ -demo/demo.js diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/.prettierignore b/.prettierignore index ec6d3cd..1181a81 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,3 @@ +coverage +lib package.json diff --git a/.release-it.json b/.release-it.json new file mode 100644 index 0000000..ffea76a --- /dev/null +++ b/.release-it.json @@ -0,0 +1,12 @@ +{ + "hooks": { + "before:init": ["npm run lint", "npm test"], + "after:bump": "npm run build" + }, + "git": { + "changelog": false, + "commit": false, + "requireBranch": "main", + "tagName": "${version}" + } +} diff --git a/demo/index.html b/demo/index.html index fa16873..a6e567b 100644 --- a/demo/index.html +++ b/demo/index.html @@ -1,117 +1,182 @@ - + - -
- - -