├── .gitignore ├── .github ├── GH-ROBOTS.txt ├── comment-ops.yml ├── renovate.json ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── 2-feature-request.yml │ ├── 3-documentation.yml │ └── 1-report-bug.yml ├── workflows │ └── release-drafter.yml ├── pull_request_template.md ├── release-drafter.yml └── release-drafter.adoc ├── workflow-templates ├── crowdin.properties.json ├── release-drafter.properties.json ├── auto-merge-safe-deps.yml ├── close-bom-if-passing.yml ├── jenkins-security-scan.properties.json ├── cd.properties.json ├── close-bom-if-passing.properties.json ├── auto-merge-safe-deps.properties.json ├── release-drafter.yaml ├── jenkins-security-scan.yaml ├── crowdin.yml ├── cd.yaml ├── crowdin.svg └── jenkins.svg ├── CODE_OF_CONDUCT.md ├── scripts ├── fetch-schema.mjs ├── package.json ├── validateReleaseDrafterConfiguration.sh └── package-lock.json ├── Jenkinsfile ├── LICENSE ├── SUPPORT.md ├── SECURITY.md ├── profile └── README.md ├── README.md └── CONTRIBUTING.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .idea/* 3 | schema.json 4 | node_modules/ -------------------------------------------------------------------------------- /.github/GH-ROBOTS.txt: -------------------------------------------------------------------------------- 1 | User-agent: JLLeitschuh/security-research 2 | Disallow: * 3 | -------------------------------------------------------------------------------- /.github/comment-ops.yml: -------------------------------------------------------------------------------- 1 | --- 2 | commands: 3 | reviewer: 4 | enabled: true 5 | -------------------------------------------------------------------------------- /workflow-templates/crowdin.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Crowdin Integration", 3 | "description": "Integrate your plugin with crowdin.jenkins.io for a modern and web UI based translation flow.", 4 | "iconName": "crowdin" 5 | } 6 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Jenkins Code of Conduct 2 | 3 | You can find the Jenkins Code of Conduct [on jenkins.io](https://jenkins.io/project/conduct/). 4 | 5 | It applies to the entire `jenkinsci` GitHub organization, among other community spaces. -------------------------------------------------------------------------------- /workflow-templates/release-drafter.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Publish changelogs to GitHub Releases", 3 | "description": "Assemble a changelog based on pull requests with matching labels, if you don't publish releases via CD.", 4 | "iconName": "jenkins" 5 | } 6 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base", 5 | ":semanticCommitsDisabled" 6 | ], 7 | "labels": ["dependencies"], 8 | "rebaseWhen": "conflicted", 9 | "schedule": ["on the first day of the month"] 10 | } 11 | -------------------------------------------------------------------------------- /scripts/fetch-schema.mjs: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch' 2 | import fs from 'fs'; 3 | const fsPromises = fs.promises; 4 | 5 | const response = await fetch('https://raw.githubusercontent.com/release-drafter/release-drafter/master/schema.json'); 6 | const body = await response.text(); 7 | 8 | await fsPromises.writeFile('schema.json', body, 'utf-8') 9 | -------------------------------------------------------------------------------- /workflow-templates/auto-merge-safe-deps.yml: -------------------------------------------------------------------------------- 1 | name: Automatically approve and merge safe dependency updates 2 | on: 3 | - pull_request_target 4 | permissions: 5 | contents: write 6 | pull-requests: write 7 | jobs: 8 | auto-merge-safe-deps: 9 | uses: jenkins-infra/github-reusable-workflows/.github/workflows/auto-merge-safe-deps.yml@v1 10 | -------------------------------------------------------------------------------- /workflow-templates/close-bom-if-passing.yml: -------------------------------------------------------------------------------- 1 | name: Close BOM update PR if passing 2 | on: 3 | check_run: 4 | types: 5 | - completed 6 | permissions: 7 | contents: read 8 | pull-requests: write 9 | jobs: 10 | close-bom-if-passing: 11 | uses: jenkins-infra/github-reusable-workflows/.github/workflows/close-bom-if-passing.yml@v1 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Community forum 4 | url: https://community.jenkins.io/ 5 | about: Please ask and answer questions here 6 | - name: Mailing lists 7 | url: https://www.jenkins.io/mailing-lists/ 8 | about: You can also raise a question in one of the user or developer mailing lists 9 | -------------------------------------------------------------------------------- /scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scripts", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "ajv-cli": "^3.2.0", 13 | "node-fetch": "3.3.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /workflow-templates/jenkins-security-scan.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Jenkins Security Scan", 3 | "description": "Code scanner identifying common Jenkins plugin development pitfalls. Learn more: jenkins.io/redirect/jenkins-security-scan", 4 | "iconName": "jenkins-security", 5 | "filePatterns": [ 6 | "^pom[.]xml$", 7 | "^build[.]gradle$" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | pipeline { 2 | agent { 3 | label 'node' 4 | } 5 | stages { 6 | stage('Validate Release drafter config') { 7 | steps { 8 | dir('scripts') { 9 | sh 'npm install' 10 | } 11 | sh './scripts/validateReleaseDrafterConfiguration.sh' 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /workflow-templates/cd.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Publish a Jenkins plugin with Maven", 3 | "description": "Continuous delivery for Jenkins plugins and components. For additional setup see jenkins.io/redirect/continuous-delivery-of-plugins", 4 | "iconName": "jenkins", 5 | "categories": [ 6 | "Deployment" 7 | ], 8 | "filePatterns": [ 9 | "pom.xml$" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /scripts/validateReleaseDrafterConfiguration.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euox pipefail 4 | 5 | node --version 6 | npm --version 7 | 8 | HERE="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 9 | RELEASE_DRAFTER_CONFIG="$HERE/../.github/release-drafter.yml" 10 | 11 | echo "Validating release drafter configuration" 12 | 13 | node $HERE/fetch-schema.mjs 14 | 15 | $HERE/node_modules/.bin/ajv validate -s schema.json -d "${RELEASE_DRAFTER_CONFIG}" 16 | -------------------------------------------------------------------------------- /workflow-templates/close-bom-if-passing.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Close BOM update PR if passing", 3 | "description": "Automatically closes Dependabot pull requests updating the BOM (standardized plugin dependency versions) if tests pass. Normally these PRs should not be merged without a specific reason.", 4 | "iconName": "octicon dependabot", 5 | "categories": [ 6 | "dependency-management" 7 | ], 8 | "filePatterns": [ 9 | "pom.xml$" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /workflow-templates/auto-merge-safe-deps.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Automatically approve and merge safe dependency updates", 3 | "description": "Allows GitHub Dependabot to automatically approve and merge dependency update pull requests affecting selected dependencies maintained by the Jenkins project and considered safe.", 4 | "iconName": "octicon dependabot", 5 | "categories": [ 6 | "dependency-management" 7 | ], 8 | "filePatterns": [ 9 | "pom.xml$" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /workflow-templates/release-drafter.yaml: -------------------------------------------------------------------------------- 1 | # Automates creation of Release Drafts using Release Drafter 2 | # More Info: https://github.com/jenkinsci/.github/blob/master/.github/release-drafter.adoc 3 | --- 4 | name: Release Drafter 5 | 6 | on: 7 | push: 8 | branches: 9 | - $default-branch 10 | 11 | jobs: 12 | update_release_draft: 13 | runs-on: ubuntu-latest 14 | steps: 15 | # Drafts your next Release notes as Pull Requests are merged into the default branch 16 | - uses: release-drafter/release-drafter@v6 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 19 | -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- 1 | # Automates creation of Release Drafts using Release Drafter 2 | # More Info: https://github.com/jenkinsci/.github/blob/master/.github/release-drafter.adoc 3 | --- 4 | name: Release Drafter 5 | 6 | on: 7 | workflow_call: 8 | workflow_dispatch: 9 | 10 | permissions: 11 | contents: write 12 | pull-requests: write 13 | 14 | jobs: 15 | update_release_draft: 16 | runs-on: ubuntu-latest 17 | steps: 18 | # Drafts your next Release notes as Pull Requests are merged into the default branch 19 | - uses: release-drafter/release-drafter@v6 20 | env: 21 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/2-feature-request.yml: -------------------------------------------------------------------------------- 1 | name: '🚀 Feature request' 2 | type: 'Enhancement' 3 | description: I have a suggestion 4 | 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: What feature do you want to see added? 9 | description: A clear and concise description of your feature request. 10 | validations: 11 | required: true 12 | 13 | - type: textarea 14 | attributes: 15 | label: Upstream changes 16 | description: Link here any upstream changes that might be relevant to this request 17 | 18 | - type: textarea 19 | attributes: 20 | label: Are you interested in contributing this feature? 21 | description: Indicate if this is something you would like to work on, and how we can best support you in doing so. More details [on contributing](https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md) 22 | -------------------------------------------------------------------------------- /workflow-templates/jenkins-security-scan.yaml: -------------------------------------------------------------------------------- 1 | # More information about the Jenkins security scan can be found at the developer docs: https://www.jenkins.io/redirect/jenkins-security-scan/ 2 | --- 3 | name: Jenkins Security Scan 4 | on: 5 | push: 6 | branches: 7 | - $default-branch 8 | pull_request: 9 | types: [opened, synchronize, reopened] 10 | workflow_dispatch: 11 | 12 | permissions: 13 | security-events: write 14 | contents: read 15 | actions: read 16 | 17 | jobs: 18 | security-scan: 19 | uses: jenkins-infra/jenkins-security-scan/.github/workflows/jenkins-security-scan.yaml@v2 20 | with: 21 | java-cache: 'maven' # Optionally enable use of a build dependency cache. Specify 'maven' or 'gradle' as appropriate. 22 | # java-version: 21 # Optionally specify what version of Java to set up for the build, or remove to use a recent default. 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/3-documentation.yml: -------------------------------------------------------------------------------- 1 | name: '📝 Documentation' 2 | type: 'Documentation' 3 | description: 'Let us know if any documentation is missing or could be improved' 4 | 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: Describe your use-case which is not covered by existing documentation. 9 | description: If it is easier to submit a documentation patch instead of writing an issue, just do it! 10 | validations: 11 | required: true 12 | 13 | - type: textarea 14 | attributes: 15 | label: Reference any relevant documentation, other materials or issues/pull requests that can be used for inspiration. 16 | 17 | - type: textarea 18 | attributes: 19 | label: Are you interested in contributing to the documentation? 20 | description: Indicate if this is something you would like to work on, and how we can best support you in doing so. More details [on contributing](https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md) 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Jenkins 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | Getting support for Jenkins 2 | =========================== 3 | 4 | Jenkins is a community-driven project, and it does not provide user support in the common meaning. 5 | Nevertheless, there is an active community which might be able to help with the issues you experience. 6 | The [Jenkins issue tracker](https://github.com/jenkinsci/jenkins/issues) and the [Jenkins Jira](https://issues.jenkins.io/) are **NOT** support sites. 7 | If you need assistance or have general questions, visit us in [chat](https://jenkins.io/chat/), or email one of the user [mailing lists](https://jenkins.io/mailing-lists/). 8 | Also check out the main component's page for specific communication channel references. 9 | 10 | Please be aware that most Jenkins components are maintained by volunteers. 11 | This means there is no guarantee of a timely response or issue resolution. 12 | If you want commercial support for Jenkins, 13 | there are companies which offer it. 14 | See the list on [this page](https://www.jenkins.io/support/#commercial-support-options). 15 | Note that this list should not be viewed as endorsement by the Jenkins project, the list is provided for reference. 16 | -------------------------------------------------------------------------------- /workflow-templates/crowdin.yml: -------------------------------------------------------------------------------- 1 | # This workflow requires additional setup, see: https://jenkins.io/doc/developer/crowdin/ 2 | --- 3 | name: Crowdin 4 | 5 | on: 6 | schedule: 7 | - cron: '0 */24 * * *' 8 | workflow_dispatch: 9 | 10 | permissions: 11 | actions: write 12 | contents: write 13 | pull-requests: write 14 | 15 | jobs: 16 | synchronize-with-crowdin: 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | 21 | - name: Checkout 22 | uses: actions/checkout@v4 23 | 24 | - name: crowdin action 25 | uses: crowdin/github-action@v2.7.1 26 | with: 27 | upload_translations: true 28 | download_translations: true 29 | skip_untranslated_files: true 30 | auto_approve_imported: true 31 | push_translations: true 32 | export_only_approved: true 33 | commit_message: 'New Crowdin translations' 34 | create_pull_request: true 35 | pull_request_title: 'Update localization' 36 | pull_request_labels: 'localization' 37 | base_url: 'https://jenkins.crowdin.com' 38 | config: 'crowdin.yml' 39 | env: 40 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 41 | CROWDIN_PROJECT_ID: # Replace with your project ID 42 | CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} 43 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | The Jenkins project takes security seriously. 4 | We make every possible effort to ensure users can adequately secure their automation infrastructure. 5 | To that end, we work with Jenkins core and plugin developers, as well as security researchers, to fix security vulnerabilities in Jenkins in a timely manner, and to improve the security of Jenkins in general. 6 | 7 | ## Reporting Security Vulnerabilities 8 | 9 | Please [report security vulnerabilities in the Jenkins issue tracker under the SECURITY project](https://issues.jenkins.io/secure/CreateIssueDetails!init.jspa?pid=10180&issuetype=10103). 10 | This project is configured in such a way that only the reporter and the security team can see the details. 11 | By restricting access to this potentially sensitive information, we can work on a fix and deliver it before the method of attack becomes well-known. 12 | 13 | If you are unable to report using our issue tracker, you can also send your report to the private Jenkins security team mailing list: `jenkinsci-cert@googlegroups.com` 14 | 15 | The Jenkins security team will then file an issue on your behalf, and will work with the maintainers of the affected component(s) to get the issue resolved. 16 | 17 | ## Learn More 18 | 19 | For further details about our scope, issue handling process, or disclosure process, see [Reporting Security Vulnerabilities on jenkins.io](https://jenkins.io/security/reporting/). 20 | -------------------------------------------------------------------------------- /profile/README.md: -------------------------------------------------------------------------------- 1 | ## Build great things at any scale 2 | 3 | [![Website](https://img.shields.io/static/v1?label=Website&message=jenkins.io&color=blue)](https://jenkins.io/) 4 | [![Join the chat at https://app.gitter.im/#/room/#jenkins-ci:matrix.org](https://badges.gitter.im/badge.svg)](https://app.gitter.im/#/room/#jenkins-ci:matrix.org) 5 | [![Contribute](https://img.shields.io/static/v1?label=Contribute&message=jenkins.io/participate&color=orange)](https://www.jenkins.io/participate/) 6 | 7 | In a nutshell, Jenkins is the leading open-source automation server. 8 | It provides over 2,000 [plugins](https://plugins.jenkins.io/) for many use cases so that humans can spend their time doing things machines cannot. 9 | Learn more: [Jenkins Website](https://www.jenkins.io/), [Documentation](https://www.jenkins.io/doc/), [Plugin Index](https://plugins.jenkins.io/) 10 | 11 | **Want to contribute?** There is a big community behind Jenkins, and we invite you to join us and participate. 12 | [Connect to the Community](https://www.jenkins.io/participate/connect/) on social media and in chats/mailing lists, 13 | [participate and contribute](https://www.jenkins.io/participate/). 14 | See also our [Project Governance and Values](https://www.jenkins.io/project/governance/) and [Code of Conduct](https://www.jenkins.io/project/conduct/). 15 | 16 | **About this GitHub org**. 17 | This is the main GitHub organization of the Jenkins community. 18 | It includes repositories of the [Jenkins core](https://github.com/jenkinsci/jenkins), plugins, libraries and developer tools. 19 | You can learn more about the project structure on the [website](https://www.jenkins.io/participate/code/). 20 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### Testing done 4 | 5 | 14 | 15 | ### Submitter checklist 16 | - [ ] Make sure you are opening from a **topic/feature/bugfix branch** (right side) and not your main branch! 17 | - [ ] Ensure that the pull request title represents the desired changelog entry 18 | - [ ] Please describe what you did 19 | - [ ] Link to relevant issues in GitHub or Jira 20 | - [ ] Link to relevant pull requests, esp. upstream and downstream changes 21 | - [ ] Ensure you have provided tests that demonstrate the feature works or the issue is fixed 22 | 23 | 28 | -------------------------------------------------------------------------------- /workflow-templates/cd.yaml: -------------------------------------------------------------------------------- 1 | # Note: additional setup is required, see https://www.jenkins.io/redirect/continuous-delivery-of-plugins 2 | # 3 | # Please find additional hints for individual trigger use case 4 | # configuration options inline this script below. 5 | # 6 | --- 7 | name: cd 8 | on: 9 | workflow_dispatch: 10 | inputs: 11 | validate_only: 12 | required: false 13 | type: boolean 14 | description: | 15 | Run validation with release drafter only 16 | → Skip the release job 17 | # Note: Change this default to true, 18 | # if the checkbox should be checked by default. 19 | default: false 20 | # If you don't want any automatic trigger in general, then 21 | # the following check_run trigger lines should all be commented. 22 | # Note: Consider the use case #2 config for 'validate_only' below 23 | # as an alternative option! 24 | check_run: 25 | types: 26 | - completed 27 | 28 | permissions: 29 | checks: read 30 | contents: write 31 | 32 | jobs: 33 | maven-cd: 34 | uses: jenkins-infra/github-reusable-workflows/.github/workflows/maven-cd.yml@v1 35 | with: 36 | # Comment / uncomment the validate_only config appropriate to your preference: 37 | # 38 | # Use case #1 (automatic release): 39 | # - Let any successful Jenkins build trigger another release, 40 | # if there are merged pull requests of interest 41 | # - Perform a validation only run with drafting a release note, 42 | # if manually triggered AND inputs.validate_only has been checked. 43 | # 44 | validate_only: ${{ inputs.validate_only == true }} 45 | # 46 | # Alternative use case #2 (no automatic release): 47 | # - Same as use case #1 - but: 48 | # - Let any check_run trigger a validate_only run. 49 | # => enforce the release job to be skipped. 50 | # 51 | #validate_only: ${{ inputs.validate_only == true || github.event_name == 'check_run' }} 52 | secrets: 53 | MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} 54 | MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }} 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Global configurations for the jenkinsci GitHub organization 2 | ==== 3 | 4 | This repository stores GitHub configurations which then get applied to the project repositories. 5 | It includes various settings for GitHub itself, GitHub applications, and other components. 6 | See [this thread](https://groups.google.com/g/jenkinsci-dev/c/dOs8YRQwQiI) for details. 7 | 8 | ## Available Global Configurations 9 | 10 | Currently the following features are configured globally: 11 | 12 | * [Code of Conduct](./CODE_OF_CONDUCT.md) - Automatic referencing of Code of Conduct when creating new issues or pull requests 13 | ([more info](https://help.github.com/en/articles/creating-a-default-community-health-file-for-your-organization)) 14 | * [Issue Templates](./.github/ISSUE_TEMPLATE/) - templates for newly created Issues and Feature Requests. 15 | * [Pull Request Template](./.github/pull_request_template.md) - template for pull request creation. 16 | * [Security Links](./SECURITY.md) - Automatic referencing of Jenkins security policies when creating new issues or pull requests 17 | ([more info](https://help.github.com/en/articles/creating-a-default-community-health-file-for-your-organization)) 18 | * [Release Drafter](./.github/release-drafter.adoc) - Changelog automation 19 | * [Comment Ops](./.github/comment-ops.yml) – Enables GitHub bot commands like `/reviewer` via the [github-comment-ops](https://github.com/timja/github-comment-ops) app. Some repositories (e.g. [jenkinsci/jenkins](https://github.com/jenkinsci/jenkins/blob/master/.github/comment-ops.yml)) have additional commands such as auto-labeling enabled. 20 | * [Crowdin Translation Workflow](./workflow-templates/crowdin.yml) – Supports Jenkins' community translation process through Crowdin. Learn more in the [Jenkins Crowdin documentation](https://www.jenkins.io/doc/developer/crowdin/). 21 | 22 | ## Contacting Jenkins GitHub admins 23 | 24 | The following channels can be used: 25 | 26 | * Helpdesk - Open an issue on the [helpdesk](https://github.com/jenkins-infra/helpdesk/) 27 | * Mailing lists - Use the [Jenkins Infrastructure mailing list](https://groups.google.com/g/jenkins-infra) 28 | * GitHub - Mention [@jenkinsci/github-admins](https://github.com/orgs/jenkinsci/teams/github-admins) in pull requests or GitHub issues. Available to organization members only 29 | 30 | Jenkins Jira and mailing lists are the recommended ways to send queries. 31 | 32 | ## Contributing 33 | 34 | * To change existing configurations, just submit a pull request 35 | * To propose a new configuration (new GitHub Apps and so on), please start a discussion in the [Jenkins developer mailing list](https://groups.google.com/d/forum/jenkinsci-dev) to get the community feedback 36 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | # Configuration for Release Drafter: https://github.com/toolmantim/release-drafter 2 | --- 3 | name-template: $NEXT_MINOR_VERSION 4 | tag-template: $NEXT_MINOR_VERSION 5 | # Uses a more common 2-digit versioning in Jenkins plugins. Can be replaced by semver: $MAJOR.$MINOR.$PATCH 6 | version-template: $MAJOR.$MINOR 7 | 8 | # Emoji reference: https://gitmoji.carloscuesta.me/ 9 | # If adding categories, please also update: https://github.com/jenkins-infra/jenkins-maven-cd-action/blob/master/action.yaml#L16 10 | categories: 11 | - title: 💥 Breaking changes 12 | labels: 13 | - breaking 14 | - title: 🚨 Removed 15 | labels: 16 | - removed 17 | - title: 🎉 Major features and improvements 18 | labels: 19 | - major-enhancement 20 | - major-rfe 21 | - title: 🐛 Major bug fixes 22 | labels: 23 | - major-bug 24 | - title: ⚠️ Deprecated 25 | labels: 26 | - deprecated 27 | - title: 🚀 New features and improvements 28 | labels: 29 | - enhancement 30 | - feature 31 | - rfe 32 | - title: 🐛 Bug fixes 33 | labels: 34 | - bug 35 | - fix 36 | - bugfix 37 | - regression 38 | - regression-fix 39 | - title: 🌐 Localization and translation 40 | labels: 41 | - localization 42 | - title: 👷 Changes for plugin developers 43 | labels: 44 | - developer 45 | - title: 📝 Documentation updates 46 | labels: 47 | - documentation 48 | - title: 👻 Maintenance 49 | labels: 50 | - chore 51 | - internal 52 | - maintenance 53 | - title: 🚦 Tests 54 | labels: 55 | - test 56 | - tests 57 | - title: ✍ Other changes 58 | # Default label used by Dependabot 59 | - title: 📦 Dependency updates 60 | labels: 61 | - dependencies 62 | collapse-after: 15 63 | exclude-labels: 64 | - reverted 65 | - no-changelog 66 | - skip-changelog 67 | - invalid 68 | 69 | template: | 70 | 71 | $CHANGES 72 | 73 | replacers: 74 | - search: '/\[*JENKINS-(\d+)\]*\s*-*\s*/g' 75 | replace: '[JENKINS-$1](https://issue-redirect.jenkins.io/issue/$1) - ' 76 | - search: '/\[*HELPDESK-(\d+)\]*\s*-*\s*/g' 77 | replace: '[HELPDESK-$1](https://github.com/jenkins-infra/helpdesk/issues/$1) - ' 78 | # TODO(oleg_nenashev): Find a better way to reference issues 79 | - search: '/\[*SECURITY-(\d+)\]*\s*-*\s*/g' 80 | replace: '[SECURITY-$1](https://jenkins.io/security/advisories/) - ' 81 | - search: '/\[*JEP-(\d+)\]*\s*-*\s*/g' 82 | replace: '[JEP-$1](https://github.com/jenkinsci/jep/tree/master/jep/$1) - ' 83 | - search: '/CVE-(\d{4})-(\d+)/g' 84 | replace: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2' 85 | - search: 'JFR' 86 | replace: 'Jenkinsfile Runner' 87 | - search: 'CWP' 88 | replace: 'Custom WAR Packager' 89 | - search: '@dependabot-preview' 90 | replace: '@dependabot' 91 | 92 | autolabeler: 93 | - label: 'documentation' 94 | files: 95 | - '*.md' 96 | branch: 97 | - '/docs{0,1}\/.+/' 98 | - label: 'bug' 99 | branch: 100 | - '/fix\/.+/' 101 | title: 102 | - '/fix/i' 103 | - label: 'enhancement' 104 | branch: 105 | - '/feature\/.+/' 106 | body: 107 | - '/JENKINS-[0-9]{1,4}/' 108 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | **Table of Contents** 4 | 5 | - [Newcomers](#newcomers) 6 | - [Useful links](#useful-links) 7 | - [Source code contribution ways of working](#source-code-contribution-ways-of-working) 8 | - [Run Locally](#run-locally) 9 | - [IDE configuration](#ide-configuration) 10 | - [CLI](#cli) 11 | 12 | **Never report security issues on GitHub, public Jira issues or other public channels (Gitter/Twitter/etc.), 13 | follow the instruction from [Jenkins Security](https://www.jenkins.io/security/#reporting-vulnerabilities) to 14 | report it on [Jenkins Jira](https://issues.jenkins.io/).** For issues related to Jenkins infrastructure services, please report them on [Jenkins Infrastructure Help Desk](https://github.com/jenkins-infra/helpdesk/issues/). 15 | 16 | In the Jenkins project we appreciate any kind of contributions: code, documentation, design, etc. 17 | Any contribution counts, and the size does not matter! 18 | Check out the [contributing page](https://jenkins.io/participate/) for more information and links! 19 | 20 | Many plugins and components also define their own contributing guidelines and communication channels. 21 | There is also a big number of [chat channels](https://jenkins.io/chat/) and threads on the [community forums](https://community.jenkins.io/). 22 | 23 | | NOTE: This is a default CONTRIBUTING page for all repositories in Jenkins. Every plugin/component is its own sub-project which may deviate in its rules. Guidelines and channel links in repository CONTRIBUTING/README pages, if any, take precedence over this page. | 24 | | --- | 25 | 26 | ## Newcomers 27 | 28 | If you are a newcomer contributor and have any questions, please do not hesitate to ask in the [Newcomers Gitter channel](https://app.gitter.im/#/room/#jenkinsci_newcomer-contributors:gitter.im). 29 | 30 | ## Useful links 31 | 32 | * [Jenkins: Participate and Contribute](https://jenkins.io/participate/) 33 | * [Slides: Contributing to Jenkins - it is all about you](https://docs.google.com/presentation/d/1JHgVzWZAx95IsUAZp8OoyCQGGkrCjzUd7eblwd1Y-hA/edit?usp=sharing) 34 | 35 | ### Source code contribution ways of working 36 | 37 | - For larger contributions create an issue for any required discussion 38 | - Implement solution on a branch in your fork 39 | - Make sure to include issue ID (if created) in commit message, and make the message speak for itself 40 | - Once you're done create a pull request and ask at least one of the maintainers for review 41 | - Remember to title your pull request properly as it is used for release notes 42 | 43 | ## Run Locally 44 | 45 | The prerequisites for Java and Maven are documented on the [preparation](https://www.jenkins.io/doc/developer/tutorial/prepare/) page on jenkins.io. 46 | 47 | ### IDE configuration 48 | 49 | See [IDE configuration](https://jenkins.io/doc/developer/development-environment/ide-configuration/). 50 | 51 | ### CLI 52 | 53 | - Use the below commands. 54 | 55 | ```console 56 | $ mvn hpi:run 57 | ``` 58 | 59 | ```text 60 | ... 61 | INFO: Jenkins is fully up and running 62 | ``` 63 | 64 | - Open to test the plugin locally. 65 | 66 | Some plugins use multi module maven builds and you may need to change your `hpi:run` command to be run from the child directory, and build the other modules first. 67 | 68 | 69 | ```console 70 | $ mvn install -P quick-build 71 | $ mvn -f plugin hpi:run 72 | ``` 73 | -------------------------------------------------------------------------------- /workflow-templates/crowdin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 22 | 26 | 31 | 37 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/1-report-bug.yml: -------------------------------------------------------------------------------- 1 | name: '🐛 Bug report' 2 | type: 'Bug' 3 | description: Create a bug report to help us improve 4 | 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | **Never report security issues on GitHub or other public channels (Gitter/Twitter/etc.)** 10 | Follow these instruction to report security issues: https://www.jenkins.io/security/#reporting-vulnerabilities 11 | 12 | - type: textarea 13 | attributes: 14 | label: Jenkins and plugins versions report 15 | description: | 16 | For easier bug reporting, you can get the full list of plugins with this Groovy script that you can run in **Jenkins > Manage Jenkins > Script Console**: 17 | ```groovy 18 | println("Jenkins: ${Jenkins.instance.getVersion()}") 19 | println("OS: ${System.getProperty('os.name')} - ${System.getProperty('os.version')}") 20 | println("Java: ${System.getProperty('java.version')} - ${System.getProperty('java.vm.vendor')} (${System.getProperty('java.vm.name')})") 21 | println "---" 22 | 23 | Jenkins.instance.pluginManager.plugins 24 | .collect() 25 | .sort { it.getShortName() } 26 | .each { 27 | plugin -> println("${plugin.getShortName()}:${plugin.getVersion()}") 28 | } 29 | return 30 | ``` 31 | placeholder: | 32 | Jenkins: 2.326 33 | OS: Linux - 3.10.0-1160.45.1.el7.x86_64 34 | --- 35 | ant:1.13 36 | antisamy-markup-formatter:2.5 37 | apache-httpcomponents-client-4-api:4.5.13-1.0 38 | authentication-tokens:1.4 39 | bootstrap4-api:4.6.0-3 40 | bootstrap5-api:5.1.3-4 41 | bouncycastle-api:2.25 42 | ... 43 | value: | 44 |
45 | Environment 46 | 47 | 48 | ```text 49 | Paste the output here 50 | ``` 51 | 52 |
53 | validations: 54 | required: true 55 | 56 | - type: textarea 57 | attributes: 58 | label: What Operating System are you using (both controller, and any agents involved in the problem)? 59 | validations: 60 | required: true 61 | 62 | - type: textarea 63 | attributes: 64 | label: Reproduction steps 65 | description: | 66 | Write bullet-point reproduction steps. 67 | Be explicit about any relevant configuration, jobs, build history, user accounts, etc., redacting confidential information as needed. 68 | The best reproduction steps start with a clean Jenkins install, perhaps a `docker run` command if possible. 69 | Use screenshots where appropriate, copy textual output otherwise. When in doubt, do both. 70 | Include relevant logs, debug if needed - https://www.jenkins.io/doc/book/system-administration/viewing-logs/ 71 | placeholder: | 72 | 1. Step 1: ... 73 | 2. Step 2: ... 74 | validations: 75 | required: true 76 | 77 | - type: textarea 78 | attributes: 79 | label: Expected Results 80 | description: What was your expected result? 81 | validations: 82 | required: true 83 | 84 | - type: textarea 85 | attributes: 86 | label: Actual Results 87 | description: What was the actual result? 88 | validations: 89 | required: true 90 | 91 | - type: textarea 92 | attributes: 93 | label: Anything else? 94 | description: You can provide additional context below. 95 | 96 | - type: textarea 97 | attributes: 98 | label: Are you interested in contributing a fix? 99 | description: Indicate if this is something you would like to work on, and how we can best support you in doing so. More details [on contributing](https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md) 100 | -------------------------------------------------------------------------------- /.github/release-drafter.adoc: -------------------------------------------------------------------------------- 1 | = Release Drafter 2 | :toc: 3 | :toc-placement: preamble 4 | :toclevels: 3 5 | :icons: font 6 | 7 | link:https://github.com/toolmantim/release-drafter[Release Drafter] is a tool and GitHub app which helps to automate the management of releases notes. 8 | This tool generates changelog drafts using pull request metadata (commit headers, links, etc.) and then suggest a changelog draft in GitHub Releases. 9 | Jenkins project offers some tools which simplify usage of Release Drafter in the https://github.com/jenkinsci/ organization. 10 | This page provides information about how to use it. 11 | 12 | == Usage 13 | 14 | Release drafter can be used as a GitHub Application or as a GitHub action. 15 | The recommended approach is to use the GitHub Action as the GitHub App is link:https://github.com/release-drafter/release-drafter/blob/master/docs/github-app.md[deprecated] and won't receive new features anymore. 16 | Also, the Application does not produce logs which would be available to plugin maintainers, 17 | and hence it might be difficult to troubleshoot errors if they occur. 18 | 19 | === Configuring Release Drafter 20 | 21 | Release drafter needs to be configured in `.github/release-drafter.yml` in the default branch of your repository. 22 | Jenkins project provides a link:./release-drafter.yml[Global Configuration file], so a minimal configuration looks like this one: 23 | 24 | [source,yml] 25 | ---- 26 | _extends: .github 27 | #FIXME: change role-strategy to your component 28 | tag-template: role-strategy-$NEXT_MINOR_VERSION 29 | ---- 30 | 31 | All global settings can be overridden in repositories. 32 | Or you can write your own configuration from scratch if needed. 33 | See the link:https://github.com/toolmantim/release-drafter/blob/master/README.md[Release Drafter Documentation] for guidelines. 34 | If a change you need is a common use-case for Jenkins, it is recommended to submit a pull request to the link:./release-drafter.yml[Global Configuration file] 35 | 36 | ==== Global configuration notes 37 | 38 | There are some considerations about the default configuration: 39 | 40 | * Default tag template (tag-template) always needs to be configured by the user, 41 | because Maven Release Plugin in Plugin POM uses the `${artifactId}-${version}` tag format by default. 42 | It needs to be overridden in repos (see the linked examples) 43 | * Jenkins plugins use different versioning format. 44 | Release Drafter defaults to link:https://semver.org/[semver], but the majority of Jenkins plugins use the two-digit version number. 45 | We use it as a default in the global configuration, but it can be overridden (e.g. `version-template: $MAJOR.$MINOR.$PATCH`) 46 | * Next version number will be used by default as a next release name. 47 | Another naming template can be defined by a `name-template` property, e.g. `name-template: My Plugin v$NEXT_PATCH_VERSION` 48 | * There are automatic replacers for Jenkins Jira ticket IDs, CVE IDs, and some acronyms. 49 | Current replacer regexps target the common `[JENKINS-1234] - Change description` pull request patterns with some deviations 50 | (missing brackets, spacing and so on) 51 | 52 | === Releasing a component via CD 53 | 54 | * If you have link:https://www.jenkins.io/doc/developer/publishing/releasing-cd/[automated plugin releases] configured, you can skip the paragraph below. CD handles manual releases differently. 55 | 56 | === Manually releasing a component with Release Drafter 57 | 58 | 1. Make sure that all pull requests in the release are properly labeled. 59 | See the link:./release-drafter.yml[Global Configuration file] for available labels 60 | 2. Release a component as usual (e.g. using Maven Release Plugin for Jenkins plugins) 61 | 3. Go to `${YOUR_REPO}/releases` and click "Edit" on the draft release. 62 | 4. Edit the tag, point it to a tag or a release commit created by the common release flow 63 | ** Tags represent a text field with auto-completion. Tag names can be also copy-pasted from `${YOUR_REPO}/tags` 64 | ** Recent commits can be selected from a dropdown 65 | ** Make sure you see the text *Existing tag* (see demo) 66 | 5. Edit the release name, if needed 67 | 6. Review and copy-edit the changelog 68 | ** First release draft will likely contain all history from the beginning of the repository, 69 | you will need to remove entries corresponding to PRs included in prior releases. 70 | If all new PRs are categorized, just delete everything before the first header. 71 | ** Release drafter is designed to add one entry per pull request. 72 | If a pull request includes multiple changes to be noted, manual editing will be needed 73 | 7. Click the _Publish_ button 74 | 75 | Watch this link:https://youtu.be/lphs-7s4NtQ[demo] of steps 3–7. 76 | 77 | == Jenkins Online Meetup Recording 78 | 79 | On Nov 22, 2019, we have recorded a Jenkins Online Meetup with the overview of Release Drafter in Jenkins: 80 | 81 | * link:https://docs.google.com/presentation/d/16T5IkmVKQPrjjizMHeTk4c9w-LSFNve8Qrl5NXW8PAE/edit#slide=id.g757db77c90_0_177[Slides] 82 | * link:https://youtu.be/PaQsvli92XY?t=3801[Video] 83 | * link:https://www.meetup.com/Jenkins-online-meetup/events/266465039/[Meetup page] 84 | 85 | == Examples 86 | 87 | Below you can find examples of changelogs with enabled Release Drafter. 88 | Configurations can be found in ".github/release-drafter.yml" for every repo. 89 | 90 | === Plugins 91 | 92 | * link:https://github.com/jenkinsci/configuration-as-code-plugin/releases[Configuration-as-Code Plugin] 93 | * link:https://github.com/jenkinsci/blueocean-plugin/releases[BlueOcean Plugin] 94 | * link:https://github.com/jenkinsci/role-strategy-plugin/releases[Role Strategy Plugin] 95 | * link:https://github.com/jenkinsci/slack-plugin/releases[Slack Plugin] 96 | 97 | === Other components 98 | 99 | * link:https://github.com/jenkinsci/plugin-pom/releases[Jenkins Plugin POM] 100 | * link:https://github.com/jenkinsci/jenkins-test-harness/releases[Jenkins Test Harness] 101 | * link:https://github.com/jenkinsci/jenkinsfile-runner/releases[Jenkinsfile Runner] 102 | 103 | == Links 104 | 105 | * link:https://github.com/toolmantim/release-drafter/blob/master/README.md[Release Drafter Documentation] 106 | * link:https://groups.google.com/forum/#!searchin/jenkinsci-dev/release$20drafter%7Csort:date/jenkinsci-dev/dOs8YRQwQiI/dtHYRTSuBwAJ[Developer mailing list discussion] 107 | -------------------------------------------------------------------------------- /workflow-templates/jenkins.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /scripts/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scripts", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "scripts", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "ajv-cli": "^3.2.0", 13 | "node-fetch": "3.3.0" 14 | } 15 | }, 16 | "node_modules/abbrev": { 17 | "version": "1.1.1", 18 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 19 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 20 | }, 21 | "node_modules/ajv": { 22 | "version": "6.12.6", 23 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 24 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 25 | "dependencies": { 26 | "fast-deep-equal": "^3.1.1", 27 | "fast-json-stable-stringify": "^2.0.0", 28 | "json-schema-traverse": "^0.4.1", 29 | "uri-js": "^4.2.2" 30 | }, 31 | "funding": { 32 | "type": "github", 33 | "url": "https://github.com/sponsors/epoberezkin" 34 | } 35 | }, 36 | "node_modules/ajv-cli": { 37 | "version": "3.2.0", 38 | "resolved": "https://registry.npmjs.org/ajv-cli/-/ajv-cli-3.2.0.tgz", 39 | "integrity": "sha512-Dl1+k9iFZViO9DLP2bWG//2MzwmXYzzojVC0hvYa3062y74ZC+5BVRz/SHsd1p6IAD/Z1+zwtQ1C4SvRmEWHnw==", 40 | "dependencies": { 41 | "ajv": "^6.7.0", 42 | "ajv-pack": "^0.3.0", 43 | "fast-json-patch": "^2.0.0", 44 | "glob": "^7.1.0", 45 | "js-yaml": "^3.13.1", 46 | "json-schema-migrate": "^0.2.0", 47 | "json5": "^2.1.3", 48 | "minimist": "^1.2.0" 49 | }, 50 | "bin": { 51 | "ajv": "index.js" 52 | } 53 | }, 54 | "node_modules/ajv-pack": { 55 | "version": "0.3.1", 56 | "resolved": "https://registry.npmjs.org/ajv-pack/-/ajv-pack-0.3.1.tgz", 57 | "integrity": "sha1-tyxNQhnjko5ihC10Le2Tv1B5ZWA=", 58 | "dependencies": { 59 | "js-beautify": "^1.6.4", 60 | "require-from-string": "^1.2.0" 61 | } 62 | }, 63 | "node_modules/argparse": { 64 | "version": "1.0.10", 65 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 66 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 67 | "dependencies": { 68 | "sprintf-js": "~1.0.2" 69 | } 70 | }, 71 | "node_modules/balanced-match": { 72 | "version": "1.0.2", 73 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 74 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 75 | }, 76 | "node_modules/brace-expansion": { 77 | "version": "1.1.11", 78 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 79 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 80 | "dependencies": { 81 | "balanced-match": "^1.0.0", 82 | "concat-map": "0.0.1" 83 | } 84 | }, 85 | "node_modules/co": { 86 | "version": "4.6.0", 87 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 88 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 89 | "engines": { 90 | "iojs": ">= 1.0.0", 91 | "node": ">= 0.12.0" 92 | } 93 | }, 94 | "node_modules/commander": { 95 | "version": "2.20.3", 96 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 97 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 98 | }, 99 | "node_modules/concat-map": { 100 | "version": "0.0.1", 101 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 102 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 103 | }, 104 | "node_modules/config-chain": { 105 | "version": "1.1.13", 106 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", 107 | "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", 108 | "dependencies": { 109 | "ini": "^1.3.4", 110 | "proto-list": "~1.2.1" 111 | } 112 | }, 113 | "node_modules/data-uri-to-buffer": { 114 | "version": "4.0.0", 115 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", 116 | "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", 117 | "engines": { 118 | "node": ">= 12" 119 | } 120 | }, 121 | "node_modules/editorconfig": { 122 | "version": "0.15.3", 123 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", 124 | "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", 125 | "dependencies": { 126 | "commander": "^2.19.0", 127 | "lru-cache": "^4.1.5", 128 | "semver": "^5.6.0", 129 | "sigmund": "^1.0.1" 130 | }, 131 | "bin": { 132 | "editorconfig": "bin/editorconfig" 133 | } 134 | }, 135 | "node_modules/esprima": { 136 | "version": "4.0.1", 137 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 138 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 139 | "bin": { 140 | "esparse": "bin/esparse.js", 141 | "esvalidate": "bin/esvalidate.js" 142 | }, 143 | "engines": { 144 | "node": ">=4" 145 | } 146 | }, 147 | "node_modules/fast-deep-equal": { 148 | "version": "3.1.3", 149 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 150 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 151 | }, 152 | "node_modules/fast-json-patch": { 153 | "version": "2.2.1", 154 | "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz", 155 | "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==", 156 | "dependencies": { 157 | "fast-deep-equal": "^2.0.1" 158 | }, 159 | "engines": { 160 | "node": ">= 0.4.0" 161 | } 162 | }, 163 | "node_modules/fast-json-patch/node_modules/fast-deep-equal": { 164 | "version": "2.0.1", 165 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 166 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" 167 | }, 168 | "node_modules/fast-json-stable-stringify": { 169 | "version": "2.1.0", 170 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 171 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 172 | }, 173 | "node_modules/fetch-blob": { 174 | "version": "3.2.0", 175 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", 176 | "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 177 | "funding": [ 178 | { 179 | "type": "github", 180 | "url": "https://github.com/sponsors/jimmywarting" 181 | }, 182 | { 183 | "type": "paypal", 184 | "url": "https://paypal.me/jimmywarting" 185 | } 186 | ], 187 | "dependencies": { 188 | "node-domexception": "^1.0.0", 189 | "web-streams-polyfill": "^3.0.3" 190 | }, 191 | "engines": { 192 | "node": "^12.20 || >= 14.13" 193 | } 194 | }, 195 | "node_modules/formdata-polyfill": { 196 | "version": "4.0.10", 197 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 198 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 199 | "dependencies": { 200 | "fetch-blob": "^3.1.2" 201 | }, 202 | "engines": { 203 | "node": ">=12.20.0" 204 | } 205 | }, 206 | "node_modules/fs.realpath": { 207 | "version": "1.0.0", 208 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 209 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 210 | }, 211 | "node_modules/glob": { 212 | "version": "7.2.0", 213 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 214 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 215 | "dependencies": { 216 | "fs.realpath": "^1.0.0", 217 | "inflight": "^1.0.4", 218 | "inherits": "2", 219 | "minimatch": "^3.0.4", 220 | "once": "^1.3.0", 221 | "path-is-absolute": "^1.0.0" 222 | }, 223 | "engines": { 224 | "node": "*" 225 | }, 226 | "funding": { 227 | "url": "https://github.com/sponsors/isaacs" 228 | } 229 | }, 230 | "node_modules/inflight": { 231 | "version": "1.0.6", 232 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 233 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 234 | "dependencies": { 235 | "once": "^1.3.0", 236 | "wrappy": "1" 237 | } 238 | }, 239 | "node_modules/inherits": { 240 | "version": "2.0.4", 241 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 242 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 243 | }, 244 | "node_modules/ini": { 245 | "version": "1.3.8", 246 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 247 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 248 | }, 249 | "node_modules/js-beautify": { 250 | "version": "1.14.0", 251 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", 252 | "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", 253 | "dependencies": { 254 | "config-chain": "^1.1.12", 255 | "editorconfig": "^0.15.3", 256 | "glob": "^7.1.3", 257 | "nopt": "^5.0.0" 258 | }, 259 | "bin": { 260 | "css-beautify": "js/bin/css-beautify.js", 261 | "html-beautify": "js/bin/html-beautify.js", 262 | "js-beautify": "js/bin/js-beautify.js" 263 | }, 264 | "engines": { 265 | "node": ">=10" 266 | } 267 | }, 268 | "node_modules/js-yaml": { 269 | "version": "3.14.1", 270 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 271 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 272 | "dependencies": { 273 | "argparse": "^1.0.7", 274 | "esprima": "^4.0.0" 275 | }, 276 | "bin": { 277 | "js-yaml": "bin/js-yaml.js" 278 | } 279 | }, 280 | "node_modules/json-schema-migrate": { 281 | "version": "0.2.0", 282 | "resolved": "https://registry.npmjs.org/json-schema-migrate/-/json-schema-migrate-0.2.0.tgz", 283 | "integrity": "sha1-ukelsAcvxyOWRg4b1gtE1SF4u8Y=", 284 | "dependencies": { 285 | "ajv": "^5.0.0" 286 | } 287 | }, 288 | "node_modules/json-schema-migrate/node_modules/ajv": { 289 | "version": "5.5.2", 290 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 291 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 292 | "dependencies": { 293 | "co": "^4.6.0", 294 | "fast-deep-equal": "^1.0.0", 295 | "fast-json-stable-stringify": "^2.0.0", 296 | "json-schema-traverse": "^0.3.0" 297 | } 298 | }, 299 | "node_modules/json-schema-migrate/node_modules/fast-deep-equal": { 300 | "version": "1.1.0", 301 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 302 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" 303 | }, 304 | "node_modules/json-schema-migrate/node_modules/json-schema-traverse": { 305 | "version": "0.3.1", 306 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 307 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 308 | }, 309 | "node_modules/json-schema-traverse": { 310 | "version": "0.4.1", 311 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 312 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 313 | }, 314 | "node_modules/json5": { 315 | "version": "2.2.0", 316 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 317 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 318 | "dependencies": { 319 | "minimist": "^1.2.5" 320 | }, 321 | "bin": { 322 | "json5": "lib/cli.js" 323 | }, 324 | "engines": { 325 | "node": ">=6" 326 | } 327 | }, 328 | "node_modules/lru-cache": { 329 | "version": "4.1.5", 330 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 331 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 332 | "dependencies": { 333 | "pseudomap": "^1.0.2", 334 | "yallist": "^2.1.2" 335 | } 336 | }, 337 | "node_modules/minimatch": { 338 | "version": "3.0.4", 339 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 340 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 341 | "dependencies": { 342 | "brace-expansion": "^1.1.7" 343 | }, 344 | "engines": { 345 | "node": "*" 346 | } 347 | }, 348 | "node_modules/minimist": { 349 | "version": "1.2.5", 350 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 351 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 352 | }, 353 | "node_modules/node-domexception": { 354 | "version": "1.0.0", 355 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 356 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 357 | "funding": [ 358 | { 359 | "type": "github", 360 | "url": "https://github.com/sponsors/jimmywarting" 361 | }, 362 | { 363 | "type": "github", 364 | "url": "https://paypal.me/jimmywarting" 365 | } 366 | ], 367 | "engines": { 368 | "node": ">=10.5.0" 369 | } 370 | }, 371 | "node_modules/node-fetch": { 372 | "version": "3.3.0", 373 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", 374 | "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", 375 | "dependencies": { 376 | "data-uri-to-buffer": "^4.0.0", 377 | "fetch-blob": "^3.1.4", 378 | "formdata-polyfill": "^4.0.10" 379 | }, 380 | "engines": { 381 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 382 | }, 383 | "funding": { 384 | "type": "opencollective", 385 | "url": "https://opencollective.com/node-fetch" 386 | } 387 | }, 388 | "node_modules/nopt": { 389 | "version": "5.0.0", 390 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 391 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 392 | "dependencies": { 393 | "abbrev": "1" 394 | }, 395 | "bin": { 396 | "nopt": "bin/nopt.js" 397 | }, 398 | "engines": { 399 | "node": ">=6" 400 | } 401 | }, 402 | "node_modules/once": { 403 | "version": "1.4.0", 404 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 405 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 406 | "dependencies": { 407 | "wrappy": "1" 408 | } 409 | }, 410 | "node_modules/path-is-absolute": { 411 | "version": "1.0.1", 412 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 413 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 414 | "engines": { 415 | "node": ">=0.10.0" 416 | } 417 | }, 418 | "node_modules/proto-list": { 419 | "version": "1.2.4", 420 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 421 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" 422 | }, 423 | "node_modules/pseudomap": { 424 | "version": "1.0.2", 425 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 426 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 427 | }, 428 | "node_modules/punycode": { 429 | "version": "2.1.1", 430 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 431 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 432 | "engines": { 433 | "node": ">=6" 434 | } 435 | }, 436 | "node_modules/require-from-string": { 437 | "version": "1.2.1", 438 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", 439 | "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", 440 | "engines": { 441 | "node": ">=0.10.0" 442 | } 443 | }, 444 | "node_modules/semver": { 445 | "version": "5.7.1", 446 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 447 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 448 | "bin": { 449 | "semver": "bin/semver" 450 | } 451 | }, 452 | "node_modules/sigmund": { 453 | "version": "1.0.1", 454 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 455 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" 456 | }, 457 | "node_modules/sprintf-js": { 458 | "version": "1.0.3", 459 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 460 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 461 | }, 462 | "node_modules/uri-js": { 463 | "version": "4.4.1", 464 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 465 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 466 | "dependencies": { 467 | "punycode": "^2.1.0" 468 | } 469 | }, 470 | "node_modules/web-streams-polyfill": { 471 | "version": "3.2.0", 472 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", 473 | "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==", 474 | "engines": { 475 | "node": ">= 8" 476 | } 477 | }, 478 | "node_modules/wrappy": { 479 | "version": "1.0.2", 480 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 481 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 482 | }, 483 | "node_modules/yallist": { 484 | "version": "2.1.2", 485 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 486 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 487 | } 488 | }, 489 | "dependencies": { 490 | "abbrev": { 491 | "version": "1.1.1", 492 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 493 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 494 | }, 495 | "ajv": { 496 | "version": "6.12.6", 497 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 498 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 499 | "requires": { 500 | "fast-deep-equal": "^3.1.1", 501 | "fast-json-stable-stringify": "^2.0.0", 502 | "json-schema-traverse": "^0.4.1", 503 | "uri-js": "^4.2.2" 504 | } 505 | }, 506 | "ajv-cli": { 507 | "version": "3.2.0", 508 | "resolved": "https://registry.npmjs.org/ajv-cli/-/ajv-cli-3.2.0.tgz", 509 | "integrity": "sha512-Dl1+k9iFZViO9DLP2bWG//2MzwmXYzzojVC0hvYa3062y74ZC+5BVRz/SHsd1p6IAD/Z1+zwtQ1C4SvRmEWHnw==", 510 | "requires": { 511 | "ajv": "^6.7.0", 512 | "ajv-pack": "^0.3.0", 513 | "fast-json-patch": "^2.0.0", 514 | "glob": "^7.1.0", 515 | "js-yaml": "^3.13.1", 516 | "json-schema-migrate": "^0.2.0", 517 | "json5": "^2.1.3", 518 | "minimist": "^1.2.0" 519 | } 520 | }, 521 | "ajv-pack": { 522 | "version": "0.3.1", 523 | "resolved": "https://registry.npmjs.org/ajv-pack/-/ajv-pack-0.3.1.tgz", 524 | "integrity": "sha1-tyxNQhnjko5ihC10Le2Tv1B5ZWA=", 525 | "requires": { 526 | "js-beautify": "^1.6.4", 527 | "require-from-string": "^1.2.0" 528 | } 529 | }, 530 | "argparse": { 531 | "version": "1.0.10", 532 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 533 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 534 | "requires": { 535 | "sprintf-js": "~1.0.2" 536 | } 537 | }, 538 | "balanced-match": { 539 | "version": "1.0.2", 540 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 541 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 542 | }, 543 | "brace-expansion": { 544 | "version": "1.1.11", 545 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 546 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 547 | "requires": { 548 | "balanced-match": "^1.0.0", 549 | "concat-map": "0.0.1" 550 | } 551 | }, 552 | "co": { 553 | "version": "4.6.0", 554 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 555 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 556 | }, 557 | "commander": { 558 | "version": "2.20.3", 559 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 560 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 561 | }, 562 | "concat-map": { 563 | "version": "0.0.1", 564 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 565 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 566 | }, 567 | "config-chain": { 568 | "version": "1.1.13", 569 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", 570 | "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", 571 | "requires": { 572 | "ini": "^1.3.4", 573 | "proto-list": "~1.2.1" 574 | } 575 | }, 576 | "data-uri-to-buffer": { 577 | "version": "4.0.0", 578 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", 579 | "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" 580 | }, 581 | "editorconfig": { 582 | "version": "0.15.3", 583 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", 584 | "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", 585 | "requires": { 586 | "commander": "^2.19.0", 587 | "lru-cache": "^4.1.5", 588 | "semver": "^5.6.0", 589 | "sigmund": "^1.0.1" 590 | } 591 | }, 592 | "esprima": { 593 | "version": "4.0.1", 594 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 595 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 596 | }, 597 | "fast-deep-equal": { 598 | "version": "3.1.3", 599 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 600 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 601 | }, 602 | "fast-json-patch": { 603 | "version": "2.2.1", 604 | "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz", 605 | "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==", 606 | "requires": { 607 | "fast-deep-equal": "^2.0.1" 608 | }, 609 | "dependencies": { 610 | "fast-deep-equal": { 611 | "version": "2.0.1", 612 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 613 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" 614 | } 615 | } 616 | }, 617 | "fast-json-stable-stringify": { 618 | "version": "2.1.0", 619 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 620 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 621 | }, 622 | "fetch-blob": { 623 | "version": "3.2.0", 624 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", 625 | "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 626 | "requires": { 627 | "node-domexception": "^1.0.0", 628 | "web-streams-polyfill": "^3.0.3" 629 | } 630 | }, 631 | "formdata-polyfill": { 632 | "version": "4.0.10", 633 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 634 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 635 | "requires": { 636 | "fetch-blob": "^3.1.2" 637 | } 638 | }, 639 | "fs.realpath": { 640 | "version": "1.0.0", 641 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 642 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 643 | }, 644 | "glob": { 645 | "version": "7.2.0", 646 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 647 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 648 | "requires": { 649 | "fs.realpath": "^1.0.0", 650 | "inflight": "^1.0.4", 651 | "inherits": "2", 652 | "minimatch": "^3.0.4", 653 | "once": "^1.3.0", 654 | "path-is-absolute": "^1.0.0" 655 | } 656 | }, 657 | "inflight": { 658 | "version": "1.0.6", 659 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 660 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 661 | "requires": { 662 | "once": "^1.3.0", 663 | "wrappy": "1" 664 | } 665 | }, 666 | "inherits": { 667 | "version": "2.0.4", 668 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 669 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 670 | }, 671 | "ini": { 672 | "version": "1.3.8", 673 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 674 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 675 | }, 676 | "js-beautify": { 677 | "version": "1.14.0", 678 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", 679 | "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", 680 | "requires": { 681 | "config-chain": "^1.1.12", 682 | "editorconfig": "^0.15.3", 683 | "glob": "^7.1.3", 684 | "nopt": "^5.0.0" 685 | } 686 | }, 687 | "js-yaml": { 688 | "version": "3.14.1", 689 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 690 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 691 | "requires": { 692 | "argparse": "^1.0.7", 693 | "esprima": "^4.0.0" 694 | } 695 | }, 696 | "json-schema-migrate": { 697 | "version": "0.2.0", 698 | "resolved": "https://registry.npmjs.org/json-schema-migrate/-/json-schema-migrate-0.2.0.tgz", 699 | "integrity": "sha1-ukelsAcvxyOWRg4b1gtE1SF4u8Y=", 700 | "requires": { 701 | "ajv": "^5.0.0" 702 | }, 703 | "dependencies": { 704 | "ajv": { 705 | "version": "5.5.2", 706 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 707 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 708 | "requires": { 709 | "co": "^4.6.0", 710 | "fast-deep-equal": "^1.0.0", 711 | "fast-json-stable-stringify": "^2.0.0", 712 | "json-schema-traverse": "^0.3.0" 713 | } 714 | }, 715 | "fast-deep-equal": { 716 | "version": "1.1.0", 717 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 718 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" 719 | }, 720 | "json-schema-traverse": { 721 | "version": "0.3.1", 722 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 723 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 724 | } 725 | } 726 | }, 727 | "json-schema-traverse": { 728 | "version": "0.4.1", 729 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 730 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 731 | }, 732 | "json5": { 733 | "version": "2.2.0", 734 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 735 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 736 | "requires": { 737 | "minimist": "^1.2.5" 738 | } 739 | }, 740 | "lru-cache": { 741 | "version": "4.1.5", 742 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 743 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 744 | "requires": { 745 | "pseudomap": "^1.0.2", 746 | "yallist": "^2.1.2" 747 | } 748 | }, 749 | "minimatch": { 750 | "version": "3.0.4", 751 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 752 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 753 | "requires": { 754 | "brace-expansion": "^1.1.7" 755 | } 756 | }, 757 | "minimist": { 758 | "version": "1.2.5", 759 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 760 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 761 | }, 762 | "node-domexception": { 763 | "version": "1.0.0", 764 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 765 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" 766 | }, 767 | "node-fetch": { 768 | "version": "3.3.0", 769 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", 770 | "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", 771 | "requires": { 772 | "data-uri-to-buffer": "^4.0.0", 773 | "fetch-blob": "^3.1.4", 774 | "formdata-polyfill": "^4.0.10" 775 | } 776 | }, 777 | "nopt": { 778 | "version": "5.0.0", 779 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 780 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 781 | "requires": { 782 | "abbrev": "1" 783 | } 784 | }, 785 | "once": { 786 | "version": "1.4.0", 787 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 788 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 789 | "requires": { 790 | "wrappy": "1" 791 | } 792 | }, 793 | "path-is-absolute": { 794 | "version": "1.0.1", 795 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 796 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 797 | }, 798 | "proto-list": { 799 | "version": "1.2.4", 800 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 801 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" 802 | }, 803 | "pseudomap": { 804 | "version": "1.0.2", 805 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 806 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 807 | }, 808 | "punycode": { 809 | "version": "2.1.1", 810 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 811 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 812 | }, 813 | "require-from-string": { 814 | "version": "1.2.1", 815 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", 816 | "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" 817 | }, 818 | "semver": { 819 | "version": "5.7.1", 820 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 821 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 822 | }, 823 | "sigmund": { 824 | "version": "1.0.1", 825 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 826 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" 827 | }, 828 | "sprintf-js": { 829 | "version": "1.0.3", 830 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 831 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 832 | }, 833 | "uri-js": { 834 | "version": "4.4.1", 835 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 836 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 837 | "requires": { 838 | "punycode": "^2.1.0" 839 | } 840 | }, 841 | "web-streams-polyfill": { 842 | "version": "3.2.0", 843 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", 844 | "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==" 845 | }, 846 | "wrappy": { 847 | "version": "1.0.2", 848 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 849 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 850 | }, 851 | "yallist": { 852 | "version": "2.1.2", 853 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 854 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 855 | } 856 | } 857 | } 858 | --------------------------------------------------------------------------------