init
This commit is contained in:
23
.eslintrc.json
Normal file
23
.eslintrc.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"env": { "node": true, "jest": true },
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": { "ecmaVersion": 2020, "sourceType": "module" },
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"plugin:import/errors",
|
||||||
|
"plugin:import/warnings",
|
||||||
|
"plugin:import/typescript",
|
||||||
|
"plugin:prettier/recommended",
|
||||||
|
"prettier/@typescript-eslint"
|
||||||
|
],
|
||||||
|
"plugins": ["@typescript-eslint", "jest"],
|
||||||
|
"rules": {
|
||||||
|
"camelcase": "off",
|
||||||
|
"require-atomic-updates": "off",
|
||||||
|
"@typescript-eslint/ban-ts-ignore": "off",
|
||||||
|
"@typescript-eslint/camelcase": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
76
.github/CODE_OF_CONDUCT.md
vendored
Normal file
76
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
In the interest of fostering an open and welcoming environment, we as
|
||||||
|
contributors and maintainers pledge to making participation in our project and
|
||||||
|
our community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||||
|
level of experience, education, socio-economic status, nationality, personal
|
||||||
|
appearance, race, religion, or sexual identity and orientation.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to creating a positive environment
|
||||||
|
include:
|
||||||
|
|
||||||
|
* Using welcoming and inclusive language
|
||||||
|
* Being respectful of differing viewpoints and experiences
|
||||||
|
* Gracefully accepting constructive criticism
|
||||||
|
* Focusing on what is best for the community
|
||||||
|
* Showing empathy towards other community members
|
||||||
|
|
||||||
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||||
|
advances
|
||||||
|
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or electronic
|
||||||
|
address, without explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Our Responsibilities
|
||||||
|
|
||||||
|
Project maintainers are responsible for clarifying the standards of acceptable
|
||||||
|
behavior and are expected to take appropriate and fair corrective action in
|
||||||
|
response to any instances of unacceptable behavior.
|
||||||
|
|
||||||
|
Project maintainers have the right and responsibility to remove, edit, or
|
||||||
|
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||||
|
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||||
|
permanently any contributor for other behaviors that they deem inappropriate,
|
||||||
|
threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies both within project spaces and in public spaces
|
||||||
|
when an individual is representing the project or its community. Examples of
|
||||||
|
representing a project or community include using an official project e-mail
|
||||||
|
address, posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event. Representation of a project may be
|
||||||
|
further defined and clarified by project maintainers.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported by contacting the project team at contact@shivammathur.com. All
|
||||||
|
complaints will be reviewed and investigated and will result in a response that
|
||||||
|
is deemed necessary and appropriate to the circumstances. The project team is
|
||||||
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
|
Further details of specific enforcement policies may be posted separately.
|
||||||
|
|
||||||
|
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||||
|
faith may face temporary or permanent repercussions as determined by other
|
||||||
|
members of the project's leadership.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||||
|
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see
|
||||||
|
https://www.contributor-covenant.org/faq
|
||||||
63
.github/CONTRIBUTING.md
vendored
Normal file
63
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# Contributing to cache-extensions
|
||||||
|
|
||||||
|
## Contributor Code of Conduct
|
||||||
|
|
||||||
|
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
* Fork the project.
|
||||||
|
* Make your bug fix or feature addition.
|
||||||
|
* Add tests for it. This is important so we don't break it in a future version unintentionally.
|
||||||
|
* Send a pull request to the develop branch.
|
||||||
|
|
||||||
|
Please make sure that you have [set up your user name and email address](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name <root@localhost>` look really stupid in the commit history of a project.
|
||||||
|
|
||||||
|
Due to time constraints, you may not always get a quick response. Please do not take delays personal and feel free to remind.
|
||||||
|
|
||||||
|
## Coding Guidelines
|
||||||
|
|
||||||
|
This project comes with `.prettierrc.json` and `eslintrc.json` configuration files. Please run the following commands to format the code before committing it.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm run format
|
||||||
|
$ npm run lint
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using cache-extensions from a Git checkout
|
||||||
|
|
||||||
|
The following commands can be used to perform the initial checkout of cache-extensions:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git clone https://github.com/shivammathur/cache-extensions.git
|
||||||
|
|
||||||
|
$ cd cache-extensions
|
||||||
|
```
|
||||||
|
|
||||||
|
Install cache-extensions dependencies using [npm](https://www.npmjs.com/):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running the test suite
|
||||||
|
|
||||||
|
After following the steps shown above, The `cache-extensions` tests in the `__tests__` directory can be run using this command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm test
|
||||||
|
```
|
||||||
|
|
||||||
|
## Creating a release
|
||||||
|
|
||||||
|
Create a release before you push your changes.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm run release
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reporting issues
|
||||||
|
|
||||||
|
Please submit the issue using the appropriate template provided for a bug report or a feature request:
|
||||||
|
|
||||||
|
* [Issues](https://github.com/shivammathur/cache-extensions/issues)
|
||||||
7
.github/FUNDING.yml
vendored
Normal file
7
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: shivammathur
|
||||||
|
issuehunt: shivammathur
|
||||||
|
patreon: shivammathur
|
||||||
|
liberapay: shivammathur
|
||||||
|
custom: https://www.paypal.me/shivammathur
|
||||||
23
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
23
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Please provide the GitHub Action `.yml` file.
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I want to improve [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
33
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
33
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: 🐞 Bug Fix, ⚙ Improvement or 🎉 New Feature
|
||||||
|
about: You found a bug, want to improve something or add a new feature
|
||||||
|
labels: bug or enhancement
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Pull Request should be associated with an Issue.
|
||||||
|
|
||||||
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
|
Related issue:
|
||||||
|
|
||||||
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
This PR [briefly explain what it does]
|
||||||
|
|
||||||
|
> In case this PR introduced TypeScript/JavaScript code changes:
|
||||||
|
|
||||||
|
- [ ] I have written test cases for the changes in this pull request
|
||||||
|
- [ ] I have run `npm run format` before the commit.
|
||||||
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
|
- [ ] I have run `npm run release` before the commit.
|
||||||
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
-->
|
||||||
33
.github/PULL_REQUEST_TEMPLATE/FIX.md
vendored
Normal file
33
.github/PULL_REQUEST_TEMPLATE/FIX.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: 🐞 Bug Fix
|
||||||
|
about: You have a fix for a bug?
|
||||||
|
labels: bug
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Pull Request should be associated with an Issue.
|
||||||
|
|
||||||
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
|
Related issue:
|
||||||
|
|
||||||
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
This PR [briefly explain what it does]
|
||||||
|
|
||||||
|
> In case this PR introduced TypeScript/JavaScript code changes:
|
||||||
|
|
||||||
|
- [ ] I have written test cases for the changes in this pull request.
|
||||||
|
- [ ] I have run `npm run format` before the commit.
|
||||||
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
|
- [ ] I have run `npm run release` before the commit.
|
||||||
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
-->
|
||||||
33
.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.md
vendored
Normal file
33
.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: ⚙ Improvement
|
||||||
|
about: You have some improvement to make cache-extensions better?
|
||||||
|
labels: enhancement
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Pull Request should be associated with an Issue.
|
||||||
|
|
||||||
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
|
Related issue:
|
||||||
|
|
||||||
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
This PR [briefly explain what it does]
|
||||||
|
|
||||||
|
> In case this PR introduced TypeScript/JavaScript code changes:
|
||||||
|
|
||||||
|
- [ ] I have written test cases for the changes in this pull request.
|
||||||
|
- [ ] I have run `npm run format` before the commit.
|
||||||
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
|
- [ ] I have run `npm run release` before the commit.
|
||||||
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
-->
|
||||||
33
.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.md
vendored
Normal file
33
.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: 🎉 New Feature
|
||||||
|
about: You have implemented some neat idea that you want to make part of cache-extensions?
|
||||||
|
labels: enhancement
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Pull Request should be associated with an Issue.
|
||||||
|
|
||||||
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
|
Related issue:
|
||||||
|
|
||||||
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
This PR [briefly explain what it does]
|
||||||
|
|
||||||
|
> In case this PR introduced TypeScript/JavaScript code changes:
|
||||||
|
|
||||||
|
- [ ] I have written test cases for the changes in this pull request.
|
||||||
|
- [ ] I have run `npm run format` before the commit.
|
||||||
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
|
- [ ] I have run `npm run release` before the commit.
|
||||||
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
-->
|
||||||
31
.github/workflows/workflow.yml
vendored
Normal file
31
.github/workflows/workflow.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Main workflow
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
run:
|
||||||
|
name: Run
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup Node.js 12.x
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12.x
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Prettier Format Check
|
||||||
|
run: npm run format-check
|
||||||
|
|
||||||
|
- name: ESLint Check
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm test
|
||||||
|
|
||||||
|
- name: Send Coverage
|
||||||
|
continue-on-error: true
|
||||||
|
timeout-minutes: 1
|
||||||
|
run: curl -s https://codecov.io/bash | bash -s -- -t ${{secrets.CODECOV_TOKEN}} -f coverage/clover.xml -n github-actions-codecov-${{ matrix.operating-system }}-php${{ matrix.php-versions }}
|
||||||
93
.gitignore
vendored
Normal file
93
.gitignore
vendored
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# Explicitly not ignoring node_modules so that they are included in package downloaded by runner
|
||||||
|
node_modules/
|
||||||
|
__tests__/runner/*
|
||||||
|
lib/
|
||||||
|
|
||||||
|
# Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
|
# 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
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# TypeScript v1 declaration files
|
||||||
|
typings/
|
||||||
|
|
||||||
|
# TypeScript cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# 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
|
||||||
|
.env.test
|
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/)
|
||||||
|
.cache
|
||||||
|
|
||||||
|
# next.js build output
|
||||||
|
.next
|
||||||
|
|
||||||
|
# nuxt.js build output
|
||||||
|
.nuxt
|
||||||
|
|
||||||
|
# vuepress build output
|
||||||
|
.vuepress/dist
|
||||||
|
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/
|
||||||
|
|
||||||
|
# FuseBox cache
|
||||||
|
.fusebox/
|
||||||
|
|
||||||
|
# DynamoDB Local files
|
||||||
|
.dynamodb/
|
||||||
11
.prettierrc.json
Normal file
11
.prettierrc.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 80,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"useTabs": false,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"bracketSpacing": false,
|
||||||
|
"arrowParens": "avoid",
|
||||||
|
"parser": "typescript"
|
||||||
|
}
|
||||||
22
LICENSE
Normal file
22
LICENSE
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2020 shivammathur and contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
110
README.md
Normal file
110
README.md
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<h1 align="center">Cache PHP extensions in GitHub Actions</h1>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/shivammathur/cache-extensions" title="Cache PHP extensions in GitHub Actions"><img alt="GitHub Actions status" src="https://github.com/shivammathur/cache-extensions/workflows/Main%20workflow/badge.svg"></a>
|
||||||
|
<a href="https://codecov.io/gh/shivammathur/cache-extensions" title="Code coverage"><img alt="Codecov Code Coverage" src="https://codecov.io/gh/shivammathur/cache-extensions/branch/master/graph/badge.svg"></a>
|
||||||
|
<a href="https://github.com/shivammathur/cache-extensions/blob/master/LICENSE" title="license"><img alt="LICENSE" src="https://img.shields.io/badge/license-MIT-428f7e.svg"></a>
|
||||||
|
<a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-%3E%3D%205.3-8892BF.svg"></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "GitHub Actions"). This action has to be used along with [shivammathur/setup-php](https://github.com/shivammathur/setup-php "Setup PHP") and [actions/cache](https://github.com/actions/cache "Cache in GitHub Actions") GitHub Actions. It configures the environment required to cache PHP extensions. Refer to [Usage](#memo-usage "How to use this") section to see how to use this.
|
||||||
|
|
||||||
|
## Contents
|
||||||
|
|
||||||
|
- [PHP Support](#tada-php-support)
|
||||||
|
- [OS/Platform Support](#cloud-osplatform-support)
|
||||||
|
- [Usage](#memo-usage)
|
||||||
|
- [License](#scroll-license)
|
||||||
|
- [Contributions](#1-contributions)
|
||||||
|
- [Support this project](#sparkling_heart-support-this-project)
|
||||||
|
|
||||||
|
## :tada: PHP Support
|
||||||
|
|
||||||
|
|PHP Version|Stability|Release Support|
|
||||||
|
|--- |--- |--- |
|
||||||
|
|5.3|`Stable`|`End of life`|
|
||||||
|
|5.4|`Stable`|`End of life`|
|
||||||
|
|5.5|`Stable`|`End of life`|
|
||||||
|
|5.6|`Stable`|`End of life`|
|
||||||
|
|7.0|`Stable`|`End of life`|
|
||||||
|
|7.1|`Stable`|`End of life`|
|
||||||
|
|7.2|`Stable`|`Security fixes only`|
|
||||||
|
|7.3|`Stable`|`Active`|
|
||||||
|
|7.4|`Stable`|`Active`|
|
||||||
|
|8.0|`Experimental`|`In development`|
|
||||||
|
|
||||||
|
## :cloud: OS/Platform Support
|
||||||
|
|
||||||
|
|Virtual environment|matrix.operating-system|
|
||||||
|
|--- |--- |
|
||||||
|
|Windows Server 2019|`windows-latest` or `windows-2019`|
|
||||||
|
|Ubuntu 18.04|`ubuntu-latest` or `ubuntu-18.04`|
|
||||||
|
|Ubuntu 16.04|`ubuntu-16.04`|
|
||||||
|
|macOS X Catalina 10.15|`macos-latest` or `macOS-10.15`|
|
||||||
|
|
||||||
|
## :memo: Usage
|
||||||
|
|
||||||
|
Inputs supported by this GitHub Action.
|
||||||
|
|
||||||
|
- php-version `required`
|
||||||
|
- extensions `required`
|
||||||
|
- key `required`
|
||||||
|
|
||||||
|
See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info.
|
||||||
|
|
||||||
|
> Cache extensions in a PHP workflow
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
jobs:
|
||||||
|
run:
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
|
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
|
||||||
|
env:
|
||||||
|
extensions: intl, pcov
|
||||||
|
key: cache # can be any string
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup cache environment
|
||||||
|
id: cache-extensions
|
||||||
|
uses: shivammathur/cache-extensions@v1
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: ${{ env.extensions }}
|
||||||
|
key: ${{ env.key }}
|
||||||
|
|
||||||
|
- name: Cache extensions
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ${{ steps.extensioninfo.outputs.ext_dir }}
|
||||||
|
key: ${{ runner.os }}-ext-${{ matrix.php-versions }}-${{ steps.cache-extensions.outputs.ext_hash }}
|
||||||
|
restore-keys: ${{ runner.os }}-ext-${{ matrix.php-versions }}-${{ steps.cache-extensions.outputs.ext_hash }}
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: ${{ env.extensions }}
|
||||||
|
```
|
||||||
|
|
||||||
|
## :scroll: License
|
||||||
|
|
||||||
|
The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/cache-extensions"). This project has multiple [dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
|
||||||
|
|
||||||
|
## :+1: Contributions
|
||||||
|
|
||||||
|
Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/cache-extensions contribution guide"). If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/cache-extensions/issues "Issues reported").
|
||||||
|
|
||||||
|
## :sparkling_heart: Support this project
|
||||||
|
|
||||||
|
If this action helped you.
|
||||||
|
|
||||||
|
- Please star the project and share it with the community.
|
||||||
|
- If you blog, write about your experience while using this action.
|
||||||
|
- I maintain this in my free time, please support me with a [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") subscription or a one time contribution using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal").
|
||||||
|
- If you need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")
|
||||||
54
__tests__/cache.test.ts
Normal file
54
__tests__/cache.test.ts
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
import * as install from '../src/cache';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mock cache.ts
|
||||||
|
*/
|
||||||
|
jest.mock('../src/cache', () => ({
|
||||||
|
run: jest.fn().mockImplementation(
|
||||||
|
async (): Promise<string> => {
|
||||||
|
const version: string = process.env['php-version'] || '';
|
||||||
|
const extensions: string = process.env['extensions'] || '';
|
||||||
|
const key: string = process.env['key'] || '';
|
||||||
|
const script_path = 'extensions.sh';
|
||||||
|
|
||||||
|
return (
|
||||||
|
'bash ' + script_path + ' "' + extensions + '-' + key + '" ' + version
|
||||||
|
);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to set the process.env
|
||||||
|
*
|
||||||
|
* @param version
|
||||||
|
* @param os
|
||||||
|
* @param extension_csv
|
||||||
|
* @param ini_values_csv
|
||||||
|
* @param coverage_driver
|
||||||
|
*/
|
||||||
|
function setEnv(
|
||||||
|
version: string | number,
|
||||||
|
extensions: string,
|
||||||
|
key: string
|
||||||
|
): void {
|
||||||
|
process.env['php-version'] = version.toString();
|
||||||
|
process.env['extensions'] = extensions;
|
||||||
|
process.env['key'] = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('Install', () => {
|
||||||
|
it('Test Run', async () => {
|
||||||
|
setEnv('7.0', 'xdebug, pcov', 'cache-v1');
|
||||||
|
// @ts-ignore
|
||||||
|
const script: string = await install.run();
|
||||||
|
expect(script).toContain('bash extensions.sh "xdebug, pcov-cache-v1" 7.0');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Test Run', async () => {
|
||||||
|
setEnv('7.4', 'xdebug, zip', 'cache-v2');
|
||||||
|
// @ts-ignore
|
||||||
|
const script: string = await install.run();
|
||||||
|
expect(script).toContain('bash extensions.sh "xdebug, zip-cache-v2" 7.4');
|
||||||
|
});
|
||||||
|
});
|
||||||
22
__tests__/utils.test.ts
Normal file
22
__tests__/utils.test.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
|
import * as utils from '../src/utils';
|
||||||
|
|
||||||
|
jest.mock('@actions/core', () => ({
|
||||||
|
getInput: jest.fn().mockImplementation(key => {
|
||||||
|
return ['cache-extensions'].indexOf(key) !== -1 ? key : '';
|
||||||
|
})
|
||||||
|
}));
|
||||||
|
|
||||||
|
describe('Utils tests', () => {
|
||||||
|
it('checking getInput', async () => {
|
||||||
|
process.env['test'] = 'cache-extensions';
|
||||||
|
process.env['undefined'] = '';
|
||||||
|
expect(await utils.getInput('test', false)).toBe('cache-extensions');
|
||||||
|
expect(await utils.getInput('undefined', false)).toBe('');
|
||||||
|
expect(await utils.getInput('cache-extensions', false)).toBe(
|
||||||
|
'cache-extensions'
|
||||||
|
);
|
||||||
|
expect(await utils.getInput('DoesNotExist', false)).toBe('');
|
||||||
|
});
|
||||||
|
});
|
||||||
19
action.yml
Normal file
19
action.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: 'Cache PHP Extensions'
|
||||||
|
author: shivammathur
|
||||||
|
description: 'Cache PHP Extensions in GitHub Actions'
|
||||||
|
branding:
|
||||||
|
color: 'purple'
|
||||||
|
icon: 'box'
|
||||||
|
inputs:
|
||||||
|
php-version:
|
||||||
|
description: 'PHP version you are setting up.'
|
||||||
|
required: true
|
||||||
|
extensions:
|
||||||
|
description: 'Extensions you want to cache.'
|
||||||
|
required: true
|
||||||
|
key:
|
||||||
|
description: 'Key to version the cache hash.'
|
||||||
|
required: true
|
||||||
|
runs:
|
||||||
|
using: 'node12'
|
||||||
|
main: 'dist/index.js'
|
||||||
1622
dist/index.js
vendored
Normal file
1622
dist/index.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
12
jest.config.js
Normal file
12
jest.config.js
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
module.exports = {
|
||||||
|
clearMocks: true,
|
||||||
|
moduleFileExtensions: ['js', 'ts'],
|
||||||
|
testEnvironment: 'node',
|
||||||
|
testMatch: ['**/*.test.ts'],
|
||||||
|
testRunner: 'jest-circus/runner',
|
||||||
|
transform: {
|
||||||
|
'^.+\\.ts$': 'ts-jest'
|
||||||
|
},
|
||||||
|
verbose: true,
|
||||||
|
collectCoverage: true
|
||||||
|
};
|
||||||
6009
package-lock.json
generated
Normal file
6009
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
54
package.json
Normal file
54
package.json
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"name": "cache-extensions",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"private": false,
|
||||||
|
"description": "Cache extensions in GitHub Actions",
|
||||||
|
"main": "dist/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc",
|
||||||
|
"lint": "eslint **/*.ts --cache",
|
||||||
|
"format": "prettier --write **/*.ts && git add .",
|
||||||
|
"format-check": "prettier --check **/*.ts",
|
||||||
|
"release": "ncc build src/cache.ts -o dist && git add -f dist/",
|
||||||
|
"test": "jest"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/shivammathur/cache-extensions.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"actions",
|
||||||
|
"php",
|
||||||
|
"setup"
|
||||||
|
],
|
||||||
|
"author": "shivammathur",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@actions/core": "^1.2.2",
|
||||||
|
"@actions/exec": "^1.0.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/jest": "^25.1.2",
|
||||||
|
"@types/node": "^13.7.1",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^2.19.2",
|
||||||
|
"@typescript-eslint/parser": "^2.19.2",
|
||||||
|
"@zeit/ncc": "^0.21.1",
|
||||||
|
"eslint": "^6.8.0",
|
||||||
|
"eslint-config-prettier": "^6.10.0",
|
||||||
|
"eslint-plugin-import": "^2.20.1",
|
||||||
|
"eslint-plugin-jest": "^23.7.0",
|
||||||
|
"eslint-plugin-prettier": "^3.1.2",
|
||||||
|
"husky": "^4.2.3",
|
||||||
|
"jest": "^25.1.0",
|
||||||
|
"jest-circus": "^25.1.0",
|
||||||
|
"prettier": "^1.19.1",
|
||||||
|
"ts-jest": "^25.2.0",
|
||||||
|
"typescript": "^3.7.5"
|
||||||
|
},
|
||||||
|
"husky": {
|
||||||
|
"skipCI": true,
|
||||||
|
"hooks": {
|
||||||
|
"pre-commit": "npm run format && npm run lint && npm run build && npm run release"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/cache.ts
Normal file
24
src/cache.ts
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import {exec} from '@actions/exec/lib/exec';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
import * as path from 'path';
|
||||||
|
import * as utils from './utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the script
|
||||||
|
*/
|
||||||
|
export async function run(): Promise<void> {
|
||||||
|
try {
|
||||||
|
const version: string = await utils.getInput('php-version', true);
|
||||||
|
const extensions: string = await utils.getInput('extensions', true);
|
||||||
|
const key: string = await utils.getInput('key', true);
|
||||||
|
const script_path: string = path.join(__dirname, '../src/extensions.sh');
|
||||||
|
await exec(
|
||||||
|
'bash ' + script_path + ' "' + extensions + '-' + key + '" ' + version
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
core.setFailed(error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// call the run function
|
||||||
|
run();
|
||||||
79
src/extensions.sh
Normal file
79
src/extensions.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
linux_extension_dir() {
|
||||||
|
apiv=$1
|
||||||
|
if [ "$version" = "5.3" ]; then
|
||||||
|
echo "/home/runner/php/5.3.29/lib/php/extensions/no-debug-non-zts-$apiv"
|
||||||
|
elif [[ "$version" =~ $old_versions_linux ]]; then
|
||||||
|
echo "/usr/lib/php5/$apiv"
|
||||||
|
elif [ "$version" = "8.0" ]; then
|
||||||
|
echo "/home/runner/php/8.0/lib/php/extensions/no-debug-non-zts-$apiv"
|
||||||
|
else
|
||||||
|
echo "/usr/lib/php/$apiv"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
darwin_extension_dir() {
|
||||||
|
apiv=$1
|
||||||
|
if [[ "$version" =~ $old_versions_darwin ]]; then
|
||||||
|
echo "/opt/local/lib/php${version/./}/extensions/no-debug-non-zts-$apiv"
|
||||||
|
else
|
||||||
|
echo "/usr/local/lib/php/pecl/$apiv"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_apiv() {
|
||||||
|
case $version in
|
||||||
|
5.3)
|
||||||
|
echo "20090626"
|
||||||
|
;;
|
||||||
|
5.4)
|
||||||
|
echo "20100525"
|
||||||
|
;;
|
||||||
|
5.5)
|
||||||
|
echo "20121212"
|
||||||
|
;;
|
||||||
|
5.6)
|
||||||
|
echo "20131226"
|
||||||
|
;;
|
||||||
|
7.0)
|
||||||
|
echo "20151012"
|
||||||
|
;;
|
||||||
|
7.1)
|
||||||
|
echo "20160303"
|
||||||
|
;;
|
||||||
|
7.2)
|
||||||
|
echo "20170718"
|
||||||
|
;;
|
||||||
|
7.3)
|
||||||
|
echo "20180731"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$version" = "8.0" ]; then
|
||||||
|
php_h="https://raw.githubusercontent.com/php/php-src/master/main/php.h"
|
||||||
|
else
|
||||||
|
semver=$(curl -sSL --retry 5 https://github.com/php/php-src/releases | grep "$flags" "(php-$version.[0-9]+)".zip | head -n 1 | grep "$flags" '[0-9]+\.[0-9]+\.[0-9]+')
|
||||||
|
php_h="https://raw.githubusercontent.com/php/php-src/PHP-$semver/main/php.h"
|
||||||
|
fi
|
||||||
|
curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
version=$2
|
||||||
|
old_versions_linux="5.[4-5]"
|
||||||
|
old_versions_darwin="5.[3-5]"
|
||||||
|
os=$(uname -s)
|
||||||
|
if [ "$os" = "Linux" ]; then
|
||||||
|
flags='-Po'
|
||||||
|
apiv=$(get_apiv)
|
||||||
|
dir=$(linux_extension_dir "$apiv")
|
||||||
|
sudo mkdir -p "$dir" && sudo chown -R "$USER":"$(id -g -n)" $(dirname "$dir")
|
||||||
|
elif [ "$os" = "Darwin" ]; then
|
||||||
|
flags='-Eo'
|
||||||
|
apiv=$(get_apiv)
|
||||||
|
dir=$(darwin_extension_dir "$apiv")
|
||||||
|
else
|
||||||
|
dir='C:\\tools\\php\\ext'
|
||||||
|
fi
|
||||||
|
hash=$(echo -n "$1" | openssl dgst -sha256 | cut -d ' ' -f 2)
|
||||||
|
echo "::set-output name=ext_dir::$dir"
|
||||||
|
echo "::set-output name=ext_hash::$hash"
|
||||||
22
src/utils.ts
Normal file
22
src/utils.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import * as fs from 'fs';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to get inputs from both with and env annotations.
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* @param mandatory
|
||||||
|
*/
|
||||||
|
export async function getInput(
|
||||||
|
name: string,
|
||||||
|
mandatory: boolean
|
||||||
|
): Promise<string> {
|
||||||
|
const input = process.env[name];
|
||||||
|
switch (input) {
|
||||||
|
case '':
|
||||||
|
case undefined:
|
||||||
|
return core.getInput(name, {required: mandatory});
|
||||||
|
default:
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
}
|
||||||
63
tsconfig.json
Normal file
63
tsconfig.json
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
/* Basic Options */
|
||||||
|
// "incremental": true, /* Enable incremental compilation */
|
||||||
|
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
||||||
|
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
||||||
|
// "allowJs": true, /* Allow javascript files to be compiled. */
|
||||||
|
// "checkJs": true, /* Report errors in .js files. */
|
||||||
|
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||||
|
// "declaration": true, /* Generates corresponding '.d.ts' file. */
|
||||||
|
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
||||||
|
// "sourceMap": true, /* Generates corresponding '.map' file. */
|
||||||
|
// "outFile": "./", /* Concatenate and emit output to single file. */
|
||||||
|
"outDir": "./lib", /* Redirect output structure to the directory. */
|
||||||
|
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||||
|
// "composite": true, /* Enable project compilation */
|
||||||
|
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
||||||
|
// "removeComments": true, /* Do not emit comments to output. */
|
||||||
|
// "noEmit": true, /* Do not emit outputs. */
|
||||||
|
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
||||||
|
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||||
|
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
||||||
|
|
||||||
|
/* Strict Type-Checking Options */
|
||||||
|
"strict": true, /* Enable all strict type-checking options. */
|
||||||
|
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
|
||||||
|
// "strictNullChecks": true, /* Enable strict null checks. */
|
||||||
|
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
|
||||||
|
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
||||||
|
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
|
||||||
|
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
||||||
|
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
|
||||||
|
|
||||||
|
/* Additional Checks */
|
||||||
|
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
||||||
|
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
||||||
|
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
||||||
|
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
||||||
|
|
||||||
|
/* Module Resolution Options */
|
||||||
|
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||||
|
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
|
||||||
|
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
|
||||||
|
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
|
||||||
|
// "typeRoots": [], /* List of folders to include type definitions from. */
|
||||||
|
// "types": [], /* Type declaration files to be included in compilation. */
|
||||||
|
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
||||||
|
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||||
|
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
|
||||||
|
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||||
|
|
||||||
|
/* Source Map Options */
|
||||||
|
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
||||||
|
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||||
|
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
||||||
|
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
||||||
|
|
||||||
|
/* Experimental Options */
|
||||||
|
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||||
|
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||||
|
},
|
||||||
|
"exclude": ["node_modules", "**/*.test.ts"]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user