├── .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 | [](https://jenkins.io/)
4 | [](https://app.gitter.im/#/room/#jenkins-ci:matrix.org)
5 | [](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 |
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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------