├── .github ├── workflows │ ├── .keep │ └── custom-action.yml └── ISSUE_TEMPLATE │ ├── secret.md │ ├── custom.md │ ├── feature_request.md │ └── bug_report.md ├── git-crash-course ├── hello └── Readme.md ├── github-actions ├── mydata ├── myscript.sh ├── templates │ ├── schedule.yml │ ├── webhook.yml │ ├── conditional.yml │ ├── secrets.yml │ ├── github_token.yml │ ├── multi-event.yml │ ├── bash-script.yml │ ├── runner-self-hosted.yml │ ├── greetings.yml │ ├── runner-macos.yml │ ├── dependent-jobs.yml │ ├── manual.yml │ ├── runner-windows.yml │ ├── docker-hub.yml │ ├── expression-functions.yml │ ├── publish-github-release.yml │ ├── azure-static-web-apps.yml │ ├── postgres-image.yml │ ├── postgres-container.yml │ └── github-package.yml ├── pg │ ├── package.json │ └── client.js └── Readme.me ├── markdown ├── Secret.md └── Readme.md ├── README.md ├── ssh-keys └── Readme.md ├── github-sdks ├── Readme.md ├── ruby │ ├── Gemfile │ ├── main.rb │ └── Gemfile.lock ├── js │ ├── package.json │ ├── main.js │ ├── .gitignore │ └── package-lock.json └── terraform │ ├── main.tf │ ├── .gitignore │ └── .terraform.lock.hcl └── .devcontainer └── devcontainer.json /.github/workflows/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /git-crash-course/hello: -------------------------------------------------------------------------------- 1 | Hello!!!! 2 | -------------------------------------------------------------------------------- /github-actions/mydata: -------------------------------------------------------------------------------- 1 | SGVsbG8gTWFycw== -------------------------------------------------------------------------------- /markdown/Secret.md: -------------------------------------------------------------------------------- 1 | **Secret page**s -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Github-Examples 2 | A repo containing GitHub for programmatic examples 3 | -------------------------------------------------------------------------------- /github-actions/myscript.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Hello from the bash script!" 3 | date -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/secret.md: -------------------------------------------------------------------------------- 1 | ## Welcome to the secret submissions 2 | 3 | Submit to secrets. :cool: -------------------------------------------------------------------------------- /ssh-keys/Readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ``` 4 | ssh-keygen -t rsa 5 | ssh-keygen -t ed25519 6 | cat /home/codespace/.ssh/id_ed25519.pub 7 | ``` -------------------------------------------------------------------------------- /github-sdks/Readme.md: -------------------------------------------------------------------------------- 1 | ## List of features 2 | 3 | We can install the following features in our codespace enviroment 4 | 5 | https://containers.dev/features -------------------------------------------------------------------------------- /github-sdks/ruby/Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | # gem "rails" 6 | gem 'octokit' 7 | gem 'faraday-retry' -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /github-actions/templates/schedule.yml: -------------------------------------------------------------------------------- 1 | on: 2 | schedule: 3 | - cron: '*/5 * * * *' 4 | 5 | jobs: 6 | hello_world: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Echo current time 10 | run: echo "The current server time is $(date)" 11 | -------------------------------------------------------------------------------- /github-sdks/ruby/main.rb: -------------------------------------------------------------------------------- 1 | require 'octokit' 2 | 3 | client = Octokit::Client.new(access_token: ENV['GH_TOKEN']) 4 | 5 | # Create the new branch 6 | client.create_ref( 7 | "andrew-wc-brown/Github-Examples", 8 | "heads/sdks", 9 | "3a652b86905ca4e7888f4898e1b6f5d957b2c926" 10 | ) -------------------------------------------------------------------------------- /github-sdks/js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "octokit": "^3.1.2" 4 | }, 5 | "name": "js", 6 | "version": "1.0.0", 7 | "main": "main.js", 8 | "scripts": { 9 | "start": "node main.js", 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "author": "", 13 | "license": "ISC", 14 | "description": "" 15 | } 16 | -------------------------------------------------------------------------------- /github-sdks/terraform/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | required_providers { 3 | github = { 4 | source = "integrations/github" 5 | version = "5.44.0" 6 | } 7 | } 8 | } 9 | 10 | provider "github" { 11 | # Configuration options 12 | } 13 | 14 | resource "github_branch" "development" { 15 | repository = "Github-Examples" 16 | branch = "sdks" 17 | } -------------------------------------------------------------------------------- /github-actions/templates/webhook.yml: -------------------------------------------------------------------------------- 1 | name: "Webhook Event example" 2 | 3 | on: 4 | repository_dispatch: 5 | types: 6 | - webhook 7 | 8 | jobs: 9 | respond-to-dispatch: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name Checkout repo 13 | uses: actions/checkout@v2 14 | - name: Run a script 15 | run: echo "Event of type: $GITHUB_EVENT_NAME" 16 | -------------------------------------------------------------------------------- /github-actions/templates/conditional.yml: -------------------------------------------------------------------------------- 1 | name: example-workflow 2 | on: [push] 3 | jobs: 4 | hello-world: 5 | if: github.repository == 'octo-org/octo-repo-prod' 6 | runs-on: ubuntu-latest 7 | steps: 8 | - name: "Hello World" 9 | run: echo "Hello World!" 10 | goodbye-moon: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: "Goodbye Moon" 14 | run: echo "Goodbye Moon!" -------------------------------------------------------------------------------- /github-actions/templates/secrets.yml: -------------------------------------------------------------------------------- 1 | name: Use API Key 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | make-api-request: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v3 14 | - name: Use API Key 15 | run: | 16 | echo "Using API key: ${{ secrets.API_KEY }}" 17 | env: 18 | API_KEY: ${{ secrets.API_KEY }} -------------------------------------------------------------------------------- /github-actions/pg/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-project", 3 | "version": "1.0.0", 4 | "description": "A simple Node.js project using PostgreSQL", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "Your Name", 11 | "license": "ISC", 12 | "dependencies": { 13 | "pg": "^8.7.1" 14 | } 15 | } -------------------------------------------------------------------------------- /github-actions/templates/github_token.yml: -------------------------------------------------------------------------------- 1 | name: Open new issue 2 | on: workflow_dispatch 3 | 4 | jobs: 5 | open-issue: 6 | runs-on: ubuntu-latest 7 | permissions: 8 | contents: read 9 | issues: write 10 | steps: 11 | - run: | 12 | gh issue --repo ${{ github.repository }} \ 13 | create --title "Issue title" --body "Issue body" 14 | env: 15 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // See https://containers.dev/implementors/json_reference/ for configuration reference 2 | { 3 | "name": "basic configure", 4 | "customizations": { 5 | "vscode": { 6 | "extensions": [ 7 | "mhutchie.git-graph", 8 | "phil294.git-log--graph" 9 | ] 10 | } 11 | }, 12 | "features": { 13 | "ghcr.io/devcontainers/features/github-cli:1": {}, 14 | "ghcr.io/devcontainers/features/terraform:1": {} 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.github/workflows/custom-action.yml: -------------------------------------------------------------------------------- 1 | on: [push] 2 | 3 | jobs: 4 | my-job: 5 | runs-on: ubuntu-latest 6 | name: A job to say hello 7 | steps: 8 | - name: Hello world action step 9 | id: hello 10 | uses: omenking/barsoom@0.0.6 11 | with: 12 | name: 'Brown' 13 | # Use the output from the `hello` step 14 | - name: Get the Output 15 | run: echo "The time was ${{ steps.hello.outputs.greeting }}" -------------------------------------------------------------------------------- /github-actions/templates/multi-event.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | - dev 6 | pull_request: 7 | branches: 8 | - main 9 | 10 | jobs: 11 | hello_world: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: "Echo Basic Information" 15 | run: | 16 | echo "REF: $GITHUB_REF" 17 | echo "Job ID: $GITHUB_JOB" 18 | echo "Action: $GITHUB_ACTION" 19 | echo "Actor: $GITHUB_ACTOR" -------------------------------------------------------------------------------- /github-actions/templates/bash-script.yml: -------------------------------------------------------------------------------- 1 | name: Run Bash Script 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | run-script: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Checkout repository 17 | uses: actions/checkout@v3 18 | 19 | - name: Run the script 20 | run: | 21 | chmod u+x ./github-actions/myscript.sh 22 | ./github-actions/myscript.sh -------------------------------------------------------------------------------- /github-actions/templates/runner-self-hosted.yml: -------------------------------------------------------------------------------- 1 | # If you don't create a self-hosted runner you will see: 2 | # Waiting for a runner to pick up this job... 3 | name: Self-hosted Runner Workflow 4 | 5 | on: 6 | push: 7 | branches: 8 | - main 9 | 10 | jobs: 11 | example-job: 12 | runs-on: self-hosted 13 | steps: 14 | - name: Check out repository 15 | uses: actions/checkout@v3 16 | - name: Run a one-line script 17 | run: echo "Hello from a self-hosted runner!" -------------------------------------------------------------------------------- /github-actions/Readme.me: -------------------------------------------------------------------------------- 1 | ## Manual Trigger 2 | 3 | ```sh 4 | gh workflow run greet.yml -f name=mona -f greeting=hello -F data=@myfile.txt 5 | echo '{"name":"mona", "greeting":"hello"}' | gh workflow run greet.yml --json 6 | ``` 7 | 8 | ## Webhook Event 9 | 10 | ```sh 11 | curl -X POST \ 12 | -H "Accept: application/vnd.github+json" \ 13 | -H "Authorization: token {PAT} \ 14 | -d '{"event_type": "webhook", "client_payload": {"key": "value"} }' \ 15 | https://api.github.com/repos/{owner}/{repo}/dispatches 16 | ``` -------------------------------------------------------------------------------- /github-sdks/js/main.js: -------------------------------------------------------------------------------- 1 | const { Octokit, App } = require("octokit"); 2 | 3 | console.log(`TOKEN: ${process.env.GH_TOKEN}`) 4 | 5 | const octokit = new Octokit({ 6 | auth: process.env.GH_TOKEN 7 | }) 8 | 9 | octokit.request('POST /repos/{owner}/{repo}/git/refs', { 10 | owner: 'andrew-wc-brown', 11 | repo: 'Github-Examples', 12 | ref: 'refs/heads/sdksjs', 13 | sha: '3a652b86905ca4e7888f4898e1b6f5d957b2c926', 14 | headers: { 15 | 'X-GitHub-Api-Version': '2022-11-28' 16 | } 17 | }) -------------------------------------------------------------------------------- /github-actions/templates/greetings.yml: -------------------------------------------------------------------------------- 1 | name: Greetings 2 | 3 | on: [pull_request_target, issues] 4 | 5 | jobs: 6 | greeting: 7 | runs-on: ubuntu-latest 8 | permissions: 9 | issues: write 10 | pull-requests: write 11 | steps: 12 | # https://github.com/actions/first-interaction 13 | - uses: actions/first-interaction@v1 14 | with: 15 | repo-token: ${{ secrets.GITHUB_TOKEN }} 16 | issue-message: "Message that will be displayed on users' first issue" 17 | pr-message: "Message that will be displayed on users' first pull request" 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /github-actions/templates/runner-macos.yml: -------------------------------------------------------------------------------- 1 | name: macOS Workflow Example 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | build-and-test: 10 | runs-on: macos-latest 11 | 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v3 15 | 16 | - name: Create Swift File 17 | run: | 18 | echo 'print("Hello from Swift on macOS")' > hello.swift 19 | 20 | - name: Install dependencies 21 | run: | 22 | brew install swiftlint 23 | 24 | - name: Run SwiftLint 25 | run: swiftlint 26 | 27 | - name: Compile and run Swift program 28 | run: | 29 | swiftc hello.swift 30 | ./hello -------------------------------------------------------------------------------- /github-sdks/ruby/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.6) 5 | public_suffix (>= 2.0.2, < 6.0) 6 | faraday (2.9.0) 7 | faraday-net_http (>= 2.0, < 3.2) 8 | faraday-net_http (3.1.0) 9 | net-http 10 | faraday-retry (2.2.0) 11 | faraday (~> 2.0) 12 | net-http (0.4.1) 13 | uri 14 | octokit (8.0.0) 15 | faraday (>= 1, < 3) 16 | sawyer (~> 0.9) 17 | public_suffix (5.0.4) 18 | sawyer (0.9.2) 19 | addressable (>= 2.3.5) 20 | faraday (>= 0.17.3, < 3) 21 | uri (0.13.0) 22 | 23 | PLATFORMS 24 | x86_64-linux 25 | 26 | DEPENDENCIES 27 | faraday-retry 28 | octokit 29 | 30 | BUNDLED WITH 31 | 2.4.10 32 | -------------------------------------------------------------------------------- /github-actions/templates/dependent-jobs.yml: -------------------------------------------------------------------------------- 1 | name: Build, Test, and Deploy Workflow 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | deploy: 10 | needs: [build, test] 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v3 15 | - name: Deploy application 16 | run: echo "Deploying to production..." 17 | build: 18 | runs-on: ubuntu-latest 19 | steps: 20 | - name: Checkout code 21 | uses: actions/checkout@v3 22 | - name: Build application 23 | run: echo "Building the application..." 24 | test: 25 | needs: build 26 | runs-on: ubuntu-latest 27 | steps: 28 | - name: Checkout code 29 | uses: actions/checkout@v3 30 | - name: Test application 31 | run: echo "Running tests..." -------------------------------------------------------------------------------- /github-actions/templates/manual.yml: -------------------------------------------------------------------------------- 1 | name: Manual Trigger with Params 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | name: 7 | description: 'Name of the person to greet' 8 | required: true 9 | type: string 10 | greeting: 11 | description: 'Type of greeting' 12 | required: true 13 | type: string 14 | data: 15 | description: 'Base64 encoded content of a file' 16 | required: false 17 | type: string 18 | 19 | jobs: 20 | greet: 21 | runs-on: ubuntu-latest 22 | steps: 23 | - name: Decode File Content 24 | run: | 25 | echo "${{ inputs.data }}" | base64 --decode > ./decoded_file.txt 26 | - name: Display Greeting 27 | run: | 28 | echo "${{ inputs.greeting }}, ${{ inputs.name }}!" 29 | - name: Display File Content 30 | run: | 31 | echo "Contents of the file:" 32 | cat ./decoded_file.txt -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /github-actions/templates/runner-windows.yml: -------------------------------------------------------------------------------- 1 | name: Windows Workflow Example 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | build-and-test: 13 | runs-on: windows-latest 14 | 15 | steps: 16 | - name: Checkout code 17 | uses: actions/checkout@v3 18 | 19 | - name: Install dependencies 20 | run: choco install dotnetcore-sdk 21 | shell: powershell 22 | 23 | - name: Compile and run C# program 24 | run: | 25 | Add-Content -Path "Hello.cs" -Value @" 26 | using System; 27 | public class Hello 28 | { 29 | public static void Main() 30 | { 31 | Console.WriteLine("Hello, Windows from C#"); 32 | } 33 | } 34 | "@ 35 | dotnet new console --force --no-restore 36 | Move-Item -Path "Hello.cs" -Destination "Program.cs" -Force 37 | dotnet run 38 | shell: powershell -------------------------------------------------------------------------------- /github-sdks/terraform/.gitignore: -------------------------------------------------------------------------------- 1 | # Local .terraform directories 2 | **/.terraform/* 3 | 4 | # .tfstate files 5 | *.tfstate 6 | *.tfstate.* 7 | 8 | # Crash log files 9 | crash.log 10 | crash.*.log 11 | 12 | # Exclude all .tfvars files, which are likely to contain sensitive data, such as 13 | # password, private keys, and other secrets. These should not be part of version 14 | # control as they are data points which are potentially sensitive and subject 15 | # to change depending on the environment. 16 | *.tfvars 17 | *.tfvars.json 18 | 19 | # Ignore override files as they are usually used to override resources locally and so 20 | # are not checked in 21 | override.tf 22 | override.tf.json 23 | *_override.tf 24 | *_override.tf.json 25 | 26 | # Include override files you do wish to add to version control using negated pattern 27 | # !example_override.tf 28 | 29 | # Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan 30 | # example: *tfplan* 31 | 32 | # Ignore CLI configuration files 33 | .terraformrc 34 | terraform.rc -------------------------------------------------------------------------------- /github-actions/pg/client.js: -------------------------------------------------------------------------------- 1 | const { Client } = require('pg'); 2 | 3 | const pgclient = new Client({ 4 | host: process.env.POSTGRES_HOST, 5 | port: process.env.POSTGRES_PORT, 6 | user: 'postgres', 7 | password: 'postgres', 8 | database: 'postgres' 9 | }); 10 | 11 | pgclient.connect(); 12 | 13 | const table = 'CREATE TABLE student(id SERIAL PRIMARY KEY, firstName VARCHAR(40) NOT NULL, lastName VARCHAR(40) NOT NULL, age INT, address VARCHAR(80), email VARCHAR(40))' 14 | const text = 'INSERT INTO student(firstname, lastname, age, address, email) VALUES($1, $2, $3, $4, $5) RETURNING *' 15 | const values = ['Mona the', 'Octocat', 9, '88 Colin P Kelly Jr St, San Francisco, CA 94107, United States', 'octocat@github.com'] 16 | 17 | pgclient.query(table, (err, res) => { 18 | if (err) throw err 19 | }); 20 | 21 | pgclient.query(text, values, (err, res) => { 22 | if (err) throw err 23 | }); 24 | 25 | pgclient.query('SELECT * FROM student', (err, res) => { 26 | if (err) throw err 27 | console.log(err, res.rows) // Print the data in student table 28 | pgclient.end() 29 | }); -------------------------------------------------------------------------------- /github-actions/templates/docker-hub.yml: -------------------------------------------------------------------------------- 1 | name: Publish Docker image 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | push_to_registry: 9 | name: Push Docker image to Docker Hub 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Check out the repo 13 | uses: actions/checkout@v4 14 | 15 | - name: Log in to Docker Hub 16 | uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a 17 | with: 18 | username: ${{ secrets.DOCKER_USERNAME }} 19 | password: ${{ secrets.DOCKER_PASSWORD }} 20 | 21 | - name: Extract metadata (tags, labels) for Docker 22 | id: meta 23 | uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 24 | with: 25 | images: my-docker-hub-namespace/my-docker-hub-repository 26 | 27 | - name: Build and push Docker image 28 | uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 29 | with: 30 | context: . 31 | file: ./Dockerfile 32 | push: true 33 | tags: ${{ steps.meta.outputs.tags }} 34 | labels: ${{ steps.meta.outputs.labels }} 35 | -------------------------------------------------------------------------------- /github-sdks/terraform/.terraform.lock.hcl: -------------------------------------------------------------------------------- 1 | # This file is maintained automatically by "terraform init". 2 | # Manual edits may be lost in future updates. 3 | 4 | provider "registry.terraform.io/integrations/github" { 5 | version = "5.44.0" 6 | constraints = "5.44.0" 7 | hashes = [ 8 | "h1:Wv2HGqA/gfTLXe6yOyQOmHFCfyNujGzRqYIMSjoW/Q0=", 9 | "zh:045dcce0f8506d197cd8c78be30e7c43b156c9e65512401a18f7e4f6f5506f6d", 10 | "zh:1687208241080528046a2e404d788a01214659e6bb8a819efe6a8f528ded75ec", 11 | "zh:26be46e3d943746951be0cd85406b9b06ca70708eeb7540c050290db429848c5", 12 | "zh:61870dc63b39a56c33723ffa1f8d14232ad30f506466be011c446d17f6c45520", 13 | "zh:8307fd829fdaefd84722a5bebe5d0cc9e1c7b2362e4b438f14c2a0297676308a", 14 | "zh:8cb716b1def75caa762e5bb3d86c4b7c37b6ae912d8932efd54c0980d8e02f2e", 15 | "zh:9e4070b7ffe4032d0a7cfabd88cbad051548fcc54ee0c24bde8770963631ad14", 16 | "zh:b587595100ac598dbfd9ea7fff282a343e6a80eec405b83a066d7fcf26c1a4b1", 17 | "zh:b859d5cb6031b6c7ab084919c5a080d4b7ee40b1c4236333643a47e77e558f5a", 18 | "zh:be0ffa4f9f42ea337e274b0b182894fa73cbf6820775cffbf216d06fe9205a3d", 19 | "zh:c22da705d168441ae7f597daf8d18e3da5ef256364e4ecfddc81377ff4a6b211", 20 | "zh:d4663d5c158965524768457651c29d9a194ee9004464a836cd893c738177ea2d", 21 | "zh:e3c8c5bf388be9f362ffaf9c080d9de249b589d0a2654793df95055b78d3b7e1", 22 | "zh:fc3682f03d9730d3e2a6f6db9ccd3d239f3787669018a779998217332a12a1d4", 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /github-actions/templates/expression-functions.yml: -------------------------------------------------------------------------------- 1 | name: Expression Functions Demo 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | issues: 8 | types: [opened, labeled] 9 | 10 | jobs: 11 | expression-functions: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Check if string contains substring 15 | if: contains('Hello world', 'llo') 16 | run: echo "The string contains the substring." 17 | - name: Check if string starts with 18 | if: startsWith('Hello world', 'He') 19 | run: echo "The string starts with 'He'." 20 | - name: Check if string ends with 21 | if: endsWith('Hello world', 'ld') 22 | run: echo "The string ends with 'ld'." 23 | - name: Format and echo string 24 | run: echo ${{ format('Hello {0} {1} {2}', 'Mona', 'the', 'Octocat') }} 25 | - name: Join issue labels 26 | if: github.event_name == 'issues' 27 | run: echo "Issue labels: ${{ join(github.event.issue.labels.*.name, ', ') }}" 28 | - name: Convert job context to JSON 29 | run: echo "Job context in JSON: ${{ toJSON(github.job) }}" 30 | - name: Parse JSON string 31 | run: echo "Parsed JSON: ${{ fromJSON('{"hello":"world"}').hello }}" 32 | - name: Hash files 33 | run: echo "Hash of files: ${{ hashFiles('**/package-lock.json', '**/Gemfile.lock') }} 34 | - name: The job has succeeded 35 | if: ${{ success() }} 36 | - name: The job has failed 37 | if: ${{ failure() }} -------------------------------------------------------------------------------- /github-actions/templates/publish-github-release.yml: -------------------------------------------------------------------------------- 1 | name: Release Workflow 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*' 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v3 15 | 16 | - name: Build Project 17 | run: | 18 | echo "Running build scripts..." 19 | # Add commands to build/compile your project here. 20 | # For example: npm install && npm run build 21 | 22 | - name: Archive Production Artifacts 23 | run: | 24 | tar -czvf release-${{ github.ref_name }}.tar.gz path/to/your/artifacts 25 | 26 | - name: Create Release 27 | id: create_release 28 | uses: actions/create-release@v1 29 | env: 30 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 31 | with: 32 | tag_name: ${{ github.ref }} 33 | release_name: Release ${{ github.ref }} 34 | draft: false 35 | prerelease: false 36 | body: "Description of the release" 37 | assets: | 38 | path/to/release-${{ github.ref_name }}.tar.gz 39 | 40 | - name: Upload Release Asset 41 | uses: actions/upload-release-asset@v1 42 | env: 43 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 44 | with: 45 | upload_url: ${{ steps.create_release.outputs.upload_url }} 46 | asset_path: ./release-${{ github.ref_name }}.tar.gz 47 | asset_name: release-${{ github.ref_name }}.tar.gz 48 | asset_content_type: application/gzip -------------------------------------------------------------------------------- /github-actions/templates/azure-static-web-apps.yml: -------------------------------------------------------------------------------- 1 | name: Deploy web app to Azure Static Web Apps 2 | 3 | env: 4 | APP_LOCATION: "/" # location of your client code 5 | API_LOCATION: "api" # location of your api source code - optional 6 | OUTPUT_LOCATION: "build" # location of client code build output 7 | 8 | on: 9 | push: 10 | branches: 11 | - main 12 | pull_request: 13 | types: [opened, synchronize, reopened, closed] 14 | branches: 15 | - main 16 | 17 | permissions: 18 | issues: write 19 | contents: read 20 | pull-requests: write 21 | 22 | jobs: 23 | build_and_deploy: 24 | if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') 25 | runs-on: ubuntu-latest 26 | name: Build and Deploy 27 | steps: 28 | - uses: actions/checkout@v4 29 | with: 30 | submodules: true 31 | - name: Build And Deploy 32 | uses: Azure/static-web-apps-deploy@1a947af9992250f3bc2e68ad0754c0b0c11566c9 33 | with: 34 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} 35 | repo_token: ${{ secrets.GITHUB_TOKEN }} 36 | action: "upload" 37 | app_location: ${{ env.APP_LOCATION }} 38 | api_location: ${{ env.API_LOCATION }} 39 | output_location: ${{ env.OUTPUT_LOCATION }} 40 | 41 | close_pull_request: 42 | if: github.event_name == 'pull_request' && github.event.action == 'closed' 43 | runs-on: ubuntu-latest 44 | name: Close Pull Request 45 | steps: 46 | - name: Close Pull Request 47 | uses: Azure/static-web-apps-deploy@1a947af9992250f3bc2e68ad0754c0b0c11566c9 48 | with: 49 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} 50 | action: "close" -------------------------------------------------------------------------------- /markdown/Readme.md: -------------------------------------------------------------------------------- 1 | # Markdown Example 2 | 3 | - [Unordeded lists](#unordeded-lists) 4 | - ordered lists 5 | - text formatting 6 | - code 7 | - tables 8 | - [links](#links) 9 | - images 10 | - Blockquote 11 | - autolists 12 | - lists 13 | 14 | https://github.github.com/gfm/ 15 | 16 | https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax 17 | 18 | ## Unordeded lists 19 | 20 | We can craete unorded lists in markdown using hypens. 21 | 22 | - foo 23 | - bar 24 | + baz 25 | + baz 26 | 27 | ## ordered lists 28 | 29 | 1. foo 30 | 1. bar 31 | 3) baz 32 | 3) baz 33 | 3) baz 34 | 35 | ## Text formatting 36 | 37 | _italics_ 38 | *italics* 39 | **bold** 40 | __bold__ 41 | ~~striketrhough~~ 42 | 43 | ## Code 44 | 45 | ### Inline code 46 | 47 | You can print to the terminal using the `puts "hello world"` command. 48 | 49 | ### Multi line code 50 | 51 | 52 | #### Without highlighting 53 | 54 | ``` 55 | def hello_world 56 | puts "Hello World" 57 | end 58 | ``` 59 | 60 | #### With Highlighting 61 | 62 | ```rb 63 | def hello_world 64 | puts "Hello World" 65 | end 66 | ``` 67 | 68 | ## Tables 69 | 70 | | foo | bar | 71 | | --- | --- | 72 | | baz | bim | 73 | 74 | | abc | defghi | 75 | :-: | ------------------------: | 76 | bar | baz | 77 | 78 | 79 | | abc | def | 80 | | --- | --- | 81 | | bar | 82 | | bar | baz | boo | 83 | 84 | | abc | def | 85 | | --- | --- | 86 | 87 | ## Blockquote 88 | 89 | > "The cloud is amazing" 90 | 91 | > # Foo 92 | > bar 93 | > baz 94 | 95 | ## Links 96 | 97 | [Github Website](https://github.com) 98 | 99 | [Secret Page](Secret.md) 100 | 101 | ## Tasklist 102 | 103 | - [ ] Item 1 104 | - [x] Item 2 105 | -------------------------------------------------------------------------------- /github-actions/templates/postgres-image.yml: -------------------------------------------------------------------------------- 1 | name: PostgreSQL Image 2 | on: push 3 | 4 | jobs: 5 | # Label of the runner job 6 | runner-job: 7 | # You must use a Linux environment when using service containers or container jobs 8 | runs-on: ubuntu-latest 9 | 10 | # Service containers to run with `runner-job` 11 | services: 12 | # Label used to access the service container 13 | postgres: 14 | # Docker Hub image 15 | image: postgres 16 | # Provide the password for postgres 17 | env: 18 | POSTGRES_PASSWORD: postgres 19 | # Set health checks to wait until postgres has started 20 | options: >- 21 | --health-cmd pg_isready 22 | --health-interval 10s 23 | --health-timeout 5s 24 | --health-retries 5 25 | ports: 26 | # Maps tcp port 5432 on service container to the host 27 | - 5432:5432 28 | 29 | steps: 30 | # Downloads a copy of the code in your repository before running CI tests 31 | - name: Check out repository code 32 | uses: actions/checkout@v4 33 | 34 | # Performs a clean installation of all dependencies in the `package.json` file 35 | # For more information, see https://docs.npmjs.com/cli/ci.html 36 | - name: Install dependencies 37 | run: | 38 | cd ./github-actions/pg/ 39 | npm install 40 | 41 | - name: Connect to PostgreSQL 42 | # Runs a script that creates a PostgreSQL table, populates 43 | # the table with data, and then retrieves the data 44 | run: node ./github-actions/pg/client.js 45 | # Environment variables used by the `client.js` script to create 46 | # a new PostgreSQL table. 47 | env: 48 | # The hostname used to communicate with the PostgreSQL service container 49 | POSTGRES_HOST: localhost 50 | # The default PostgreSQL port 51 | POSTGRES_PORT: 5432 -------------------------------------------------------------------------------- /github-actions/templates/postgres-container.yml: -------------------------------------------------------------------------------- 1 | name: PostgreSQL Container Service 2 | on: push 3 | 4 | jobs: 5 | # Label of the container job 6 | container-job: 7 | # Containers must run in Linux based operating systems 8 | runs-on: ubuntu-latest 9 | # Docker Hub image that `container-job` executes in 10 | container: node:14 11 | 12 | # Service containers to run with `container-job` 13 | services: 14 | # Label used to access the service container 15 | postgres: 16 | # Docker Hub image 17 | image: postgres 18 | # Provide the password for postgres 19 | env: 20 | POSTGRES_PASSWORD: postgres 21 | # Set health checks to wait until postgres has started 22 | options: >- 23 | --health-cmd pg_isready 24 | --health-interval 10s 25 | --health-timeout 5s 26 | --health-retries 5 27 | ports: 28 | # Maps tcp port 5432 on service container to the host 29 | - 5432:5432 30 | 31 | steps: 32 | # Downloads a copy of the code in your repository before running CI tests 33 | - name: Check out repository code 34 | uses: actions/checkout@v4 35 | 36 | # Performs a clean installation of all dependencies in the `package.json` file 37 | # For more information, see https://docs.npmjs.com/cli/ci.html 38 | - name: Install dependencies 39 | run: | 40 | cd ./github-actions/pg 41 | npm install 42 | 43 | - name: Connect to PostgreSQL 44 | # Runs a script that creates a PostgreSQL table, populates 45 | # the table with data, and then retrieves the data. 46 | run: node ./github-actions/pg/client.js 47 | # Environment variables used by the `client.js` script to create a new PostgreSQL table. 48 | env: 49 | # The hostname used to communicate with the PostgreSQL service container 50 | POSTGRES_HOST: postgres 51 | # The default PostgreSQL port 52 | POSTGRES_PORT: 5432 53 | -------------------------------------------------------------------------------- /github-actions/templates/github-package.yml: -------------------------------------------------------------------------------- 1 | name: Create and publish a Docker image 2 | 3 | on: 4 | push: 5 | branches: ['release'] 6 | 7 | env: 8 | REGISTRY: ghcr.io 9 | IMAGE_NAME: ${{ github.repository }} 10 | 11 | jobs: 12 | build-and-push-image: 13 | runs-on: ubuntu-latest 14 | permissions: 15 | contents: read 16 | packages: write 17 | steps: 18 | - name: Checkout repository 19 | uses: actions/checkout@v4 20 | # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. 21 | - name: Log in to the Container registry 22 | uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 23 | with: 24 | registry: ${{ env.REGISTRY }} 25 | username: ${{ github.actor }} 26 | password: ${{ secrets.GITHUB_TOKEN }} 27 | # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. 28 | - name: Extract metadata (tags, labels) for Docker 29 | id: meta 30 | uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 31 | with: 32 | images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} 33 | # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. 34 | # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. 35 | # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. 36 | - name: Build and push Docker image 37 | uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 38 | with: 39 | context: . 40 | push: true 41 | tags: ${{ steps.meta.outputs.tags }} 42 | labels: ${{ steps.meta.outputs.labels }} 43 | -------------------------------------------------------------------------------- /github-sdks/js/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* -------------------------------------------------------------------------------- /git-crash-course/Readme.md: -------------------------------------------------------------------------------- 1 | ## Git Hidden Folder 2 | 3 | There is a hidden folder called `.git` which tells you that our project is a git repo. 4 | 5 | If we wanted to create a git repo in a new project we' create the folder and the initalize that repo using `git init` 6 | 7 | ``` 8 | mkdir /workspaces/tmp/new-project 9 | cd /workspaces/tmp/new-project 10 | git init 11 | touch Readme.md 12 | code Readme.md 13 | git status 14 | git add Readme.md 15 | # makes changes to readme.md 16 | git commit -m "add readme file" 17 | ``` 18 | 19 | 20 | ## Cloning 21 | 22 | We can clone three ways: HTTPS, SSH, Github CLI 23 | 24 | Since we are using GitHub Codespaecs we'll a create temporary directory in our workspace 25 | 26 | ```sh 27 | mkdir /workspace/tmp 28 | cd /workspace/tmp 29 | ``` 30 | 31 | 32 | ### HTTPS 33 | 34 | ```sh 35 | git clone https://github.com/andrew-wc-brown/Github-Examples.git 36 | cd GitHub-Examples 37 | ``` 38 | 39 | > You'll need to generate a Personal Access Token (PAT) 40 | https://github.com/settings/token 41 | 42 | You will use the PAT as your password when you login 43 | 44 | - Give it access to Contents for Commits 45 | 46 | ### SSH 47 | 48 | ```ssh 49 | git clone git@github.com:andrew-wc-brown/Github-Examples.git 50 | cd GitHub-Examples 51 | ``` 52 | 53 | We will need to create our own SSH rsa key pair 54 | 55 | ```sh 56 | sshe-keygen -t rsa 57 | ``` 58 | 59 | For WSL users and if you crete a non default key you might need to add it 60 | 61 | ```sh 62 | eval `ssh-agent` 63 | ssh-add /home/andrew/.ssh/alt-github_id_rsa 64 | ``` 65 | 66 | We can test our connection here: 67 | ``` 68 | ssh -T git@github.com 69 | ``` 70 | 71 | ### Github CLI 72 | 73 | Install the CLI 74 | 75 | eg. Linux (Ubuntu) 76 | 77 | ```sh 78 | type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y) 79 | curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ 80 | && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ 81 | && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ 82 | && sudo apt update \ 83 | && sudo apt install gh -y 84 | ``` 85 | 86 | ``` 87 | gh auth login 88 | gh repo clone andrew-wc-brown/Github-Examples 89 | ``` 90 | 91 | ## Commits 92 | 93 | 94 | When we want to commit code we can write git commit which will open up the commit edit message in the editor of choice. 95 | 96 | ```sh 97 | git commit 98 | ``` 99 | 100 | Set the global editor 101 | ``` 102 | git config --global core.editor emacs 103 | ``` 104 | 105 | Make a commit and commit message without opening an editor 106 | ```sh 107 | git commit -m "add another exclamation" 108 | ``` 109 | 110 | ## Branches 111 | 112 | List of branches 113 | 114 | ``` 115 | git branch 116 | ``` 117 | 118 | Create a new branch 119 | ``` 120 | git branch branch-name 121 | ``` 122 | 123 | Checkout the branch 124 | 125 | ``` 126 | git checkout dev 127 | ``` 128 | 129 | 130 | ## Remotes 131 | 132 | We can add remote but often you will just add remote via upsteam when adding a branch 133 | 134 | ```sh 135 | git remote add ... 136 | git branch -u origin new-feature 137 | ``` 138 | 139 | ## Stashing 140 | 141 | ``` 142 | git stash list 143 | git stash 144 | git stash save my-name 145 | git stash apply 146 | git stash pop 147 | ``` 148 | 149 | ## Merging 150 | 151 | ``` 152 | git checkout dev 153 | git merge main 154 | ``` 155 | 156 | ## Add 157 | 158 | When we want to stage changes that will be included in the commit 159 | We can use the . to add all possible files. 160 | 161 | ``` 162 | git add Readme.md 163 | git add . 164 | ``` 165 | 166 | ## Reset 167 | 168 | Reset allows you to move Staged changes to be unstaged. 169 | This is useful when you to revert all files not to be not commited 170 | 171 | ``` 172 | git add . 173 | git reset 174 | ``` 175 | 176 | > git reset will revet a git add. 177 | 178 | ## Status 179 | 180 | Git status shows you what files will or will not be commited. 181 | 182 | ``` 183 | git status 184 | ``` 185 | 186 | ## Gitconfig file 187 | 188 | The gitconfig file is what stores your global configurations for git such as email, name, editor and more. 189 | 190 | Showing the contnets of our .gitconfig file 191 | ``` 192 | git config --list 193 | ``` 194 | 195 | When you first install Git on a machine you are suppose to set up your name and email 196 | 197 | ```sh 198 | git config --global user.name "John Doe" 199 | git config --global user.email johndoe@example.com 200 | ``` 201 | 202 | ## Log 203 | 204 | git log will show recent git commits to the git tree 205 | 206 | ## Push 207 | 208 | When we want to push a repo to our remote origin 209 | 210 | ``` 211 | git push 212 | ``` -------------------------------------------------------------------------------- /github-sdks/js/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "js", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "octokit": "^3.1.2" 13 | }, 14 | "devDependencies": {} 15 | }, 16 | "node_modules/@octokit/app": { 17 | "version": "14.0.2", 18 | "resolved": "https://registry.npmjs.org/@octokit/app/-/app-14.0.2.tgz", 19 | "integrity": "sha512-NCSCktSx+XmjuSUVn2dLfqQ9WIYePGP95SDJs4I9cn/0ZkeXcPkaoCLl64Us3dRKL2ozC7hArwze5Eu+/qt1tg==", 20 | "dependencies": { 21 | "@octokit/auth-app": "^6.0.0", 22 | "@octokit/auth-unauthenticated": "^5.0.0", 23 | "@octokit/core": "^5.0.0", 24 | "@octokit/oauth-app": "^6.0.0", 25 | "@octokit/plugin-paginate-rest": "^9.0.0", 26 | "@octokit/types": "^12.0.0", 27 | "@octokit/webhooks": "^12.0.4" 28 | }, 29 | "engines": { 30 | "node": ">= 18" 31 | } 32 | }, 33 | "node_modules/@octokit/auth-app": { 34 | "version": "6.0.3", 35 | "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-6.0.3.tgz", 36 | "integrity": "sha512-9N7IlBAKEJR3tJgPSubCxIDYGXSdc+2xbkjYpk9nCyqREnH8qEMoMhiEB1WgoA9yTFp91El92XNXAi+AjuKnfw==", 37 | "dependencies": { 38 | "@octokit/auth-oauth-app": "^7.0.0", 39 | "@octokit/auth-oauth-user": "^4.0.0", 40 | "@octokit/request": "^8.0.2", 41 | "@octokit/request-error": "^5.0.0", 42 | "@octokit/types": "^12.0.0", 43 | "deprecation": "^2.3.1", 44 | "lru-cache": "^10.0.0", 45 | "universal-github-app-jwt": "^1.1.2", 46 | "universal-user-agent": "^6.0.0" 47 | }, 48 | "engines": { 49 | "node": ">= 18" 50 | } 51 | }, 52 | "node_modules/@octokit/auth-oauth-app": { 53 | "version": "7.0.1", 54 | "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-7.0.1.tgz", 55 | "integrity": "sha512-RE0KK0DCjCHXHlQBoubwlLijXEKfhMhKm9gO56xYvFmP1QTMb+vvwRPmQLLx0V+5AvV9N9I3lr1WyTzwL3rMDg==", 56 | "dependencies": { 57 | "@octokit/auth-oauth-device": "^6.0.0", 58 | "@octokit/auth-oauth-user": "^4.0.0", 59 | "@octokit/request": "^8.0.2", 60 | "@octokit/types": "^12.0.0", 61 | "@types/btoa-lite": "^1.0.0", 62 | "btoa-lite": "^1.0.0", 63 | "universal-user-agent": "^6.0.0" 64 | }, 65 | "engines": { 66 | "node": ">= 18" 67 | } 68 | }, 69 | "node_modules/@octokit/auth-oauth-device": { 70 | "version": "6.0.1", 71 | "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-6.0.1.tgz", 72 | "integrity": "sha512-yxU0rkL65QkjbqQedgVx3gmW7YM5fF+r5uaSj9tM/cQGVqloXcqP2xK90eTyYvl29arFVCW8Vz4H/t47mL0ELw==", 73 | "dependencies": { 74 | "@octokit/oauth-methods": "^4.0.0", 75 | "@octokit/request": "^8.0.0", 76 | "@octokit/types": "^12.0.0", 77 | "universal-user-agent": "^6.0.0" 78 | }, 79 | "engines": { 80 | "node": ">= 18" 81 | } 82 | }, 83 | "node_modules/@octokit/auth-oauth-user": { 84 | "version": "4.0.1", 85 | "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-4.0.1.tgz", 86 | "integrity": "sha512-N94wWW09d0hleCnrO5wt5MxekatqEJ4zf+1vSe8MKMrhZ7gAXKFOKrDEZW2INltvBWJCyDUELgGRv8gfErH1Iw==", 87 | "dependencies": { 88 | "@octokit/auth-oauth-device": "^6.0.0", 89 | "@octokit/oauth-methods": "^4.0.0", 90 | "@octokit/request": "^8.0.2", 91 | "@octokit/types": "^12.0.0", 92 | "btoa-lite": "^1.0.0", 93 | "universal-user-agent": "^6.0.0" 94 | }, 95 | "engines": { 96 | "node": ">= 18" 97 | } 98 | }, 99 | "node_modules/@octokit/auth-token": { 100 | "version": "4.0.0", 101 | "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", 102 | "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", 103 | "engines": { 104 | "node": ">= 18" 105 | } 106 | }, 107 | "node_modules/@octokit/auth-unauthenticated": { 108 | "version": "5.0.1", 109 | "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-5.0.1.tgz", 110 | "integrity": "sha512-oxeWzmBFxWd+XolxKTc4zr+h3mt+yofn4r7OfoIkR/Cj/o70eEGmPsFbueyJE2iBAGpjgTnEOKM3pnuEGVmiqg==", 111 | "dependencies": { 112 | "@octokit/request-error": "^5.0.0", 113 | "@octokit/types": "^12.0.0" 114 | }, 115 | "engines": { 116 | "node": ">= 18" 117 | } 118 | }, 119 | "node_modules/@octokit/core": { 120 | "version": "5.0.2", 121 | "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.2.tgz", 122 | "integrity": "sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==", 123 | "dependencies": { 124 | "@octokit/auth-token": "^4.0.0", 125 | "@octokit/graphql": "^7.0.0", 126 | "@octokit/request": "^8.0.2", 127 | "@octokit/request-error": "^5.0.0", 128 | "@octokit/types": "^12.0.0", 129 | "before-after-hook": "^2.2.0", 130 | "universal-user-agent": "^6.0.0" 131 | }, 132 | "engines": { 133 | "node": ">= 18" 134 | } 135 | }, 136 | "node_modules/@octokit/endpoint": { 137 | "version": "9.0.4", 138 | "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", 139 | "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", 140 | "dependencies": { 141 | "@octokit/types": "^12.0.0", 142 | "universal-user-agent": "^6.0.0" 143 | }, 144 | "engines": { 145 | "node": ">= 18" 146 | } 147 | }, 148 | "node_modules/@octokit/graphql": { 149 | "version": "7.0.2", 150 | "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", 151 | "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", 152 | "dependencies": { 153 | "@octokit/request": "^8.0.1", 154 | "@octokit/types": "^12.0.0", 155 | "universal-user-agent": "^6.0.0" 156 | }, 157 | "engines": { 158 | "node": ">= 18" 159 | } 160 | }, 161 | "node_modules/@octokit/oauth-app": { 162 | "version": "6.0.0", 163 | "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-6.0.0.tgz", 164 | "integrity": "sha512-bNMkS+vJ6oz2hCyraT9ZfTpAQ8dZNqJJQVNaKjPLx4ue5RZiFdU1YWXguOPR8AaSHS+lKe+lR3abn2siGd+zow==", 165 | "dependencies": { 166 | "@octokit/auth-oauth-app": "^7.0.0", 167 | "@octokit/auth-oauth-user": "^4.0.0", 168 | "@octokit/auth-unauthenticated": "^5.0.0", 169 | "@octokit/core": "^5.0.0", 170 | "@octokit/oauth-authorization-url": "^6.0.2", 171 | "@octokit/oauth-methods": "^4.0.0", 172 | "@types/aws-lambda": "^8.10.83", 173 | "universal-user-agent": "^6.0.0" 174 | }, 175 | "engines": { 176 | "node": ">= 18" 177 | } 178 | }, 179 | "node_modules/@octokit/oauth-authorization-url": { 180 | "version": "6.0.2", 181 | "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-6.0.2.tgz", 182 | "integrity": "sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==", 183 | "engines": { 184 | "node": ">= 18" 185 | } 186 | }, 187 | "node_modules/@octokit/oauth-methods": { 188 | "version": "4.0.1", 189 | "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-4.0.1.tgz", 190 | "integrity": "sha512-1NdTGCoBHyD6J0n2WGXg9+yDLZrRNZ0moTEex/LSPr49m530WNKcCfXDghofYptr3st3eTii+EHoG5k/o+vbtw==", 191 | "dependencies": { 192 | "@octokit/oauth-authorization-url": "^6.0.2", 193 | "@octokit/request": "^8.0.2", 194 | "@octokit/request-error": "^5.0.0", 195 | "@octokit/types": "^12.0.0", 196 | "btoa-lite": "^1.0.0" 197 | }, 198 | "engines": { 199 | "node": ">= 18" 200 | } 201 | }, 202 | "node_modules/@octokit/openapi-types": { 203 | "version": "19.1.0", 204 | "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", 205 | "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" 206 | }, 207 | "node_modules/@octokit/plugin-paginate-graphql": { 208 | "version": "4.0.0", 209 | "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-4.0.0.tgz", 210 | "integrity": "sha512-7HcYW5tP7/Z6AETAPU14gp5H5KmCPT3hmJrS/5tO7HIgbwenYmgw4OY9Ma54FDySuxMwD+wsJlxtuGWwuZuItA==", 211 | "engines": { 212 | "node": ">= 18" 213 | }, 214 | "peerDependencies": { 215 | "@octokit/core": ">=5" 216 | } 217 | }, 218 | "node_modules/@octokit/plugin-paginate-rest": { 219 | "version": "9.1.5", 220 | "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", 221 | "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", 222 | "dependencies": { 223 | "@octokit/types": "^12.4.0" 224 | }, 225 | "engines": { 226 | "node": ">= 18" 227 | }, 228 | "peerDependencies": { 229 | "@octokit/core": ">=5" 230 | } 231 | }, 232 | "node_modules/@octokit/plugin-rest-endpoint-methods": { 233 | "version": "10.2.0", 234 | "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.2.0.tgz", 235 | "integrity": "sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==", 236 | "dependencies": { 237 | "@octokit/types": "^12.3.0" 238 | }, 239 | "engines": { 240 | "node": ">= 18" 241 | }, 242 | "peerDependencies": { 243 | "@octokit/core": ">=5" 244 | } 245 | }, 246 | "node_modules/@octokit/plugin-retry": { 247 | "version": "6.0.1", 248 | "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", 249 | "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", 250 | "dependencies": { 251 | "@octokit/request-error": "^5.0.0", 252 | "@octokit/types": "^12.0.0", 253 | "bottleneck": "^2.15.3" 254 | }, 255 | "engines": { 256 | "node": ">= 18" 257 | }, 258 | "peerDependencies": { 259 | "@octokit/core": ">=5" 260 | } 261 | }, 262 | "node_modules/@octokit/plugin-throttling": { 263 | "version": "8.1.3", 264 | "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz", 265 | "integrity": "sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A==", 266 | "dependencies": { 267 | "@octokit/types": "^12.2.0", 268 | "bottleneck": "^2.15.3" 269 | }, 270 | "engines": { 271 | "node": ">= 18" 272 | }, 273 | "peerDependencies": { 274 | "@octokit/core": "^5.0.0" 275 | } 276 | }, 277 | "node_modules/@octokit/request": { 278 | "version": "8.1.6", 279 | "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", 280 | "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", 281 | "dependencies": { 282 | "@octokit/endpoint": "^9.0.0", 283 | "@octokit/request-error": "^5.0.0", 284 | "@octokit/types": "^12.0.0", 285 | "universal-user-agent": "^6.0.0" 286 | }, 287 | "engines": { 288 | "node": ">= 18" 289 | } 290 | }, 291 | "node_modules/@octokit/request-error": { 292 | "version": "5.0.1", 293 | "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", 294 | "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", 295 | "dependencies": { 296 | "@octokit/types": "^12.0.0", 297 | "deprecation": "^2.0.0", 298 | "once": "^1.4.0" 299 | }, 300 | "engines": { 301 | "node": ">= 18" 302 | } 303 | }, 304 | "node_modules/@octokit/types": { 305 | "version": "12.4.0", 306 | "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", 307 | "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", 308 | "dependencies": { 309 | "@octokit/openapi-types": "^19.1.0" 310 | } 311 | }, 312 | "node_modules/@octokit/webhooks": { 313 | "version": "12.0.11", 314 | "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-12.0.11.tgz", 315 | "integrity": "sha512-YEQOb7v0TZ662nh5jsbY1CMgJyMajCEagKrHWC30LTCwCtnuIrLtEpE20vq4AtH0SuZI90+PtV66/Bnnw0jkvg==", 316 | "dependencies": { 317 | "@octokit/request-error": "^5.0.0", 318 | "@octokit/webhooks-methods": "^4.0.0", 319 | "@octokit/webhooks-types": "7.1.0", 320 | "aggregate-error": "^3.1.0" 321 | }, 322 | "engines": { 323 | "node": ">= 18" 324 | } 325 | }, 326 | "node_modules/@octokit/webhooks-methods": { 327 | "version": "4.0.0", 328 | "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-4.0.0.tgz", 329 | "integrity": "sha512-M8mwmTXp+VeolOS/kfRvsDdW+IO0qJ8kYodM/sAysk093q6ApgmBXwK1ZlUvAwXVrp/YVHp6aArj4auAxUAOFw==", 330 | "engines": { 331 | "node": ">= 18" 332 | } 333 | }, 334 | "node_modules/@octokit/webhooks-types": { 335 | "version": "7.1.0", 336 | "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.1.0.tgz", 337 | "integrity": "sha512-y92CpG4kFFtBBjni8LHoV12IegJ+KFxLgKRengrVjKmGE5XMeCuGvlfRe75lTRrgXaG6XIWJlFpIDTlkoJsU8w==" 338 | }, 339 | "node_modules/@types/aws-lambda": { 340 | "version": "8.10.131", 341 | "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.131.tgz", 342 | "integrity": "sha512-IWmFpqnVDvskYWnNSiu/qlRn80XlIOU0Gy5rKCl/NjhnI95pV8qIHs6L5b+bpHhyzuOSzjLgBcwgFSXrC1nZWA==" 343 | }, 344 | "node_modules/@types/btoa-lite": { 345 | "version": "1.0.2", 346 | "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.2.tgz", 347 | "integrity": "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==" 348 | }, 349 | "node_modules/@types/jsonwebtoken": { 350 | "version": "9.0.5", 351 | "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", 352 | "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", 353 | "dependencies": { 354 | "@types/node": "*" 355 | } 356 | }, 357 | "node_modules/@types/node": { 358 | "version": "20.11.0", 359 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz", 360 | "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==", 361 | "dependencies": { 362 | "undici-types": "~5.26.4" 363 | } 364 | }, 365 | "node_modules/aggregate-error": { 366 | "version": "3.1.0", 367 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 368 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 369 | "dependencies": { 370 | "clean-stack": "^2.0.0", 371 | "indent-string": "^4.0.0" 372 | }, 373 | "engines": { 374 | "node": ">=8" 375 | } 376 | }, 377 | "node_modules/before-after-hook": { 378 | "version": "2.2.3", 379 | "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", 380 | "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" 381 | }, 382 | "node_modules/bottleneck": { 383 | "version": "2.19.5", 384 | "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", 385 | "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" 386 | }, 387 | "node_modules/btoa-lite": { 388 | "version": "1.0.0", 389 | "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", 390 | "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" 391 | }, 392 | "node_modules/buffer-equal-constant-time": { 393 | "version": "1.0.1", 394 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 395 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" 396 | }, 397 | "node_modules/clean-stack": { 398 | "version": "2.2.0", 399 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 400 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 401 | "engines": { 402 | "node": ">=6" 403 | } 404 | }, 405 | "node_modules/deprecation": { 406 | "version": "2.3.1", 407 | "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", 408 | "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" 409 | }, 410 | "node_modules/ecdsa-sig-formatter": { 411 | "version": "1.0.11", 412 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 413 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 414 | "dependencies": { 415 | "safe-buffer": "^5.0.1" 416 | } 417 | }, 418 | "node_modules/indent-string": { 419 | "version": "4.0.0", 420 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 421 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 422 | "engines": { 423 | "node": ">=8" 424 | } 425 | }, 426 | "node_modules/jsonwebtoken": { 427 | "version": "9.0.2", 428 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", 429 | "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", 430 | "dependencies": { 431 | "jws": "^3.2.2", 432 | "lodash.includes": "^4.3.0", 433 | "lodash.isboolean": "^3.0.3", 434 | "lodash.isinteger": "^4.0.4", 435 | "lodash.isnumber": "^3.0.3", 436 | "lodash.isplainobject": "^4.0.6", 437 | "lodash.isstring": "^4.0.1", 438 | "lodash.once": "^4.0.0", 439 | "ms": "^2.1.1", 440 | "semver": "^7.5.4" 441 | }, 442 | "engines": { 443 | "node": ">=12", 444 | "npm": ">=6" 445 | } 446 | }, 447 | "node_modules/jwa": { 448 | "version": "1.4.1", 449 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 450 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 451 | "dependencies": { 452 | "buffer-equal-constant-time": "1.0.1", 453 | "ecdsa-sig-formatter": "1.0.11", 454 | "safe-buffer": "^5.0.1" 455 | } 456 | }, 457 | "node_modules/jws": { 458 | "version": "3.2.2", 459 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 460 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 461 | "dependencies": { 462 | "jwa": "^1.4.1", 463 | "safe-buffer": "^5.0.1" 464 | } 465 | }, 466 | "node_modules/lodash.includes": { 467 | "version": "4.3.0", 468 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 469 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" 470 | }, 471 | "node_modules/lodash.isboolean": { 472 | "version": "3.0.3", 473 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 474 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" 475 | }, 476 | "node_modules/lodash.isinteger": { 477 | "version": "4.0.4", 478 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 479 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" 480 | }, 481 | "node_modules/lodash.isnumber": { 482 | "version": "3.0.3", 483 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 484 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" 485 | }, 486 | "node_modules/lodash.isplainobject": { 487 | "version": "4.0.6", 488 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 489 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 490 | }, 491 | "node_modules/lodash.isstring": { 492 | "version": "4.0.1", 493 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 494 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 495 | }, 496 | "node_modules/lodash.once": { 497 | "version": "4.1.1", 498 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 499 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" 500 | }, 501 | "node_modules/lru-cache": { 502 | "version": "10.1.0", 503 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", 504 | "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", 505 | "engines": { 506 | "node": "14 || >=16.14" 507 | } 508 | }, 509 | "node_modules/ms": { 510 | "version": "2.1.3", 511 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 512 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 513 | }, 514 | "node_modules/octokit": { 515 | "version": "3.1.2", 516 | "resolved": "https://registry.npmjs.org/octokit/-/octokit-3.1.2.tgz", 517 | "integrity": "sha512-MG5qmrTL5y8KYwFgE1A4JWmgfQBaIETE/lOlfwNYx1QOtCQHGVxkRJmdUJltFc1HVn73d61TlMhMyNTOtMl+ng==", 518 | "dependencies": { 519 | "@octokit/app": "^14.0.2", 520 | "@octokit/core": "^5.0.0", 521 | "@octokit/oauth-app": "^6.0.0", 522 | "@octokit/plugin-paginate-graphql": "^4.0.0", 523 | "@octokit/plugin-paginate-rest": "^9.0.0", 524 | "@octokit/plugin-rest-endpoint-methods": "^10.0.0", 525 | "@octokit/plugin-retry": "^6.0.0", 526 | "@octokit/plugin-throttling": "^8.0.0", 527 | "@octokit/request-error": "^5.0.0", 528 | "@octokit/types": "^12.0.0" 529 | }, 530 | "engines": { 531 | "node": ">= 18" 532 | } 533 | }, 534 | "node_modules/once": { 535 | "version": "1.4.0", 536 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 537 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 538 | "dependencies": { 539 | "wrappy": "1" 540 | } 541 | }, 542 | "node_modules/safe-buffer": { 543 | "version": "5.2.1", 544 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 545 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 546 | "funding": [ 547 | { 548 | "type": "github", 549 | "url": "https://github.com/sponsors/feross" 550 | }, 551 | { 552 | "type": "patreon", 553 | "url": "https://www.patreon.com/feross" 554 | }, 555 | { 556 | "type": "consulting", 557 | "url": "https://feross.org/support" 558 | } 559 | ] 560 | }, 561 | "node_modules/semver": { 562 | "version": "7.5.4", 563 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 564 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 565 | "dependencies": { 566 | "lru-cache": "^6.0.0" 567 | }, 568 | "bin": { 569 | "semver": "bin/semver.js" 570 | }, 571 | "engines": { 572 | "node": ">=10" 573 | } 574 | }, 575 | "node_modules/semver/node_modules/lru-cache": { 576 | "version": "6.0.0", 577 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 578 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 579 | "dependencies": { 580 | "yallist": "^4.0.0" 581 | }, 582 | "engines": { 583 | "node": ">=10" 584 | } 585 | }, 586 | "node_modules/undici-types": { 587 | "version": "5.26.5", 588 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 589 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" 590 | }, 591 | "node_modules/universal-github-app-jwt": { 592 | "version": "1.1.2", 593 | "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.2.tgz", 594 | "integrity": "sha512-t1iB2FmLFE+yyJY9+3wMx0ejB+MQpEVkH0gQv7dR6FZyltyq+ZZO0uDpbopxhrZ3SLEO4dCEkIujOMldEQ2iOA==", 595 | "dependencies": { 596 | "@types/jsonwebtoken": "^9.0.0", 597 | "jsonwebtoken": "^9.0.2" 598 | } 599 | }, 600 | "node_modules/universal-user-agent": { 601 | "version": "6.0.1", 602 | "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", 603 | "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" 604 | }, 605 | "node_modules/wrappy": { 606 | "version": "1.0.2", 607 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 608 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 609 | }, 610 | "node_modules/yallist": { 611 | "version": "4.0.0", 612 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 613 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 614 | } 615 | } 616 | } 617 | --------------------------------------------------------------------------------