mirror of
https://github.com/actions/add-to-project.git
synced 2025-12-11 12:37:16 +00:00
Compare commits
17 Commits
47166aa929
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8cb1bec7e | ||
|
|
32da07cbb3 | ||
|
|
255643a289 | ||
|
|
88e24e2557 | ||
|
|
71190c8125 | ||
|
|
0f28223e02 | ||
|
|
269f617ef1 | ||
|
|
c6e5475358 | ||
|
|
21e1d549ac | ||
|
|
cdd363fe52 | ||
|
|
bda83083db | ||
|
|
521b1ce8aa | ||
|
|
29a98fecbd | ||
|
|
27b30237e4 | ||
|
|
4fda2e598c | ||
|
|
6a3986b73a | ||
|
|
bb2c9aa5f7 |
@@ -1,5 +0,0 @@
|
|||||||
dist/
|
|
||||||
lib/
|
|
||||||
node_modules/
|
|
||||||
jest.config.js
|
|
||||||
fix-regex.js
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"root": true,
|
|
||||||
"parser": "@typescript-eslint/parser",
|
|
||||||
"plugins": ["@typescript-eslint", "github", "jest", "prettier"],
|
|
||||||
"extends": [
|
|
||||||
"plugin:github/recommended",
|
|
||||||
"plugin:@typescript-eslint/eslint-recommended",
|
|
||||||
"plugin:@typescript-eslint/recommended",
|
|
||||||
"prettier"
|
|
||||||
],
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": 2019,
|
|
||||||
"sourceType": "module"
|
|
||||||
},
|
|
||||||
"env": {
|
|
||||||
"node": true,
|
|
||||||
"es6": true,
|
|
||||||
"jest/globals": true
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
"filenames/match-regex": "off",
|
|
||||||
"github/no-then": "off",
|
|
||||||
"i18n-text/no-en": "off",
|
|
||||||
"import/no-namespace": "off"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
4
.github/workflows/check-dist.yml
vendored
4
.github/workflows/check-dist.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Set Node.js 20.x
|
- name: Set Node.js 20.x
|
||||||
uses: actions/setup-node@v5
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 20.x
|
node-version: 20.x
|
||||||
cache: npm
|
cache: npm
|
||||||
@@ -61,7 +61,7 @@ jobs:
|
|||||||
id: diff
|
id: diff
|
||||||
|
|
||||||
# If index.js was different than expected, upload the expected version as an artifact
|
# If index.js was different than expected, upload the expected version as an artifact
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v5
|
||||||
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
|
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
|
|||||||
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@@ -42,7 +42,7 @@ jobs:
|
|||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3
|
uses: github/codeql-action/init@v4
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@@ -53,7 +53,7 @@ jobs:
|
|||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v3
|
uses: github/codeql-action/autobuild@v4
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
@@ -67,4 +67,4 @@ jobs:
|
|||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v3
|
uses: github/codeql-action/analyze@v4
|
||||||
|
|||||||
46
.licenses/npm/fast-content-type-parse.dep.yml
generated
46
.licenses/npm/fast-content-type-parse.dep.yml
generated
@@ -6,32 +6,32 @@ summary: Parse HTTP Content-Type header according to RFC 7231
|
|||||||
homepage: https://github.com/fastify/fast-content-type-parse#readme
|
homepage: https://github.com/fastify/fast-content-type-parse#readme
|
||||||
license: other
|
license: other
|
||||||
licenses:
|
licenses:
|
||||||
- sources: LICENSE
|
- sources: LICENSE
|
||||||
text: |-
|
text: |-
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2023 The Fastify Team
|
Copyright (c) 2023 The Fastify Team
|
||||||
|
|
||||||
The Fastify team members are listed at https://github.com/fastify/fastify#team
|
The Fastify team members are listed at https://github.com/fastify/fastify#team
|
||||||
and in the README file.
|
and in the README file.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
in the Software without restriction, including without limitation the rights
|
in the Software without restriction, including without limitation the rights
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
furnished to do so, subject to the following conditions:
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in all
|
||||||
copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
- sources: README.md
|
- sources: README.md
|
||||||
text: Licensed under [MIT](./LICENSE).
|
text: Licensed under [MIT](./LICENSE).
|
||||||
notices: []
|
notices: []
|
||||||
|
|||||||
@@ -137,7 +137,6 @@ Using these events ensure that a given issue or pull request, in the workflow's
|
|||||||
## Creating a PAT and adding it to your repository
|
## Creating a PAT and adding it to your repository
|
||||||
|
|
||||||
- Create a new [personal access token](https://github.com/settings/tokens/new). _See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) for more information_
|
- Create a new [personal access token](https://github.com/settings/tokens/new). _See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) for more information_
|
||||||
|
|
||||||
- For **Tokens (classic)** include the `project` scope; for private repos you will also need `repo` scope.
|
- For **Tokens (classic)** include the `project` scope; for private repos you will also need `repo` scope.
|
||||||
- For **Fine-grained tokens**, you must first select the appropriate _owner_ and associated _repositories_. Then select _Organization permissions -> `projects` `read & write`_, and _Repository permissions -> `issues` `read-only`_ and _`pull requests` `read-only`_.
|
- For **Fine-grained tokens**, you must first select the appropriate _owner_ and associated _repositories_. Then select _Organization permissions -> `projects` `read & write`_, and _Repository permissions -> `issues` `read-only`_ and _`pull requests` `read-only`_.
|
||||||
|
|
||||||
|
|||||||
78
eslint.config.mjs
Normal file
78
eslint.config.mjs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
import eslint from '@eslint/js'
|
||||||
|
import tseslint from 'typescript-eslint'
|
||||||
|
import github from 'eslint-plugin-github'
|
||||||
|
import jest from 'eslint-plugin-jest'
|
||||||
|
import globals from 'globals'
|
||||||
|
|
||||||
|
export default [
|
||||||
|
// Ignore patterns
|
||||||
|
{
|
||||||
|
ignores: ['dist/**', 'lib/**', 'node_modules/**', '__tests__/fixtures/**', 'eslint.config.mjs'],
|
||||||
|
},
|
||||||
|
|
||||||
|
// Base ESLint recommended rules
|
||||||
|
eslint.configs.recommended,
|
||||||
|
|
||||||
|
// TypeScript ESLint recommended rules
|
||||||
|
...tseslint.configs.recommended,
|
||||||
|
|
||||||
|
// GitHub plugin recommended rules
|
||||||
|
github.getFlatConfigs().recommended,
|
||||||
|
|
||||||
|
// Configuration for CommonJS JavaScript files
|
||||||
|
{
|
||||||
|
files: ['**/*.js'],
|
||||||
|
languageOptions: {
|
||||||
|
ecmaVersion: 2019,
|
||||||
|
sourceType: 'script',
|
||||||
|
globals: {
|
||||||
|
...globals.node,
|
||||||
|
...globals.es6,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
// Disable specific rules for CommonJS files
|
||||||
|
'github/filenames-match-regex': 'off',
|
||||||
|
'import/no-commonjs': 'off',
|
||||||
|
'@typescript-eslint/no-require-imports': 'off',
|
||||||
|
'i18n-text/no-en': 'off',
|
||||||
|
'import/no-namespace': 'off',
|
||||||
|
'no-implicit-globals': 'off',
|
||||||
|
'github/no-implicit-buggy-globals': 'off',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// Configuration for TypeScript files
|
||||||
|
{
|
||||||
|
files: ['**/*.ts'],
|
||||||
|
languageOptions: {
|
||||||
|
parser: tseslint.parser,
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2019,
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
...globals.node,
|
||||||
|
...globals.es6,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
// Disable specific rules as in the original config
|
||||||
|
'github/filenames-match-regex': 'off',
|
||||||
|
'github/no-then': 'off',
|
||||||
|
'i18n-text/no-en': 'off',
|
||||||
|
'import/no-namespace': 'off',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// Jest-specific configuration
|
||||||
|
{
|
||||||
|
files: ['**/*.test.ts', '**/*.test.js', '__tests__/**/*.ts'],
|
||||||
|
...jest.configs['flat/recommended'],
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...globals.jest,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
106
fix-regex.js
106
fix-regex.js
@@ -8,9 +8,9 @@
|
|||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
|
||||||
const filesToFix = [
|
const filesToFix = [
|
||||||
'node_modules/@actions/github/node_modules/@octokit/request/dist-src/fetch-wrapper.js',
|
'node_modules/@actions/github/node_modules/@octokit/request/dist-src/fetch-wrapper.js',
|
||||||
'node_modules/@actions/github/node_modules/@octokit/request/dist-node/index.js',
|
'node_modules/@actions/github/node_modules/@octokit/request/dist-node/index.js',
|
||||||
'node_modules/@actions/github/node_modules/@octokit/request/dist-web/index.js',
|
'node_modules/@actions/github/node_modules/@octokit/request/dist-web/index.js',
|
||||||
]
|
]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,13 +19,13 @@ const filesToFix = [
|
|||||||
* @returns {string} - The fixed content
|
* @returns {string} - The fixed content
|
||||||
*/
|
*/
|
||||||
function applyRegexFix(content) {
|
function applyRegexFix(content) {
|
||||||
let fixedContent = content
|
let fixedContent = content
|
||||||
|
|
||||||
// Fix the problematic regex pattern - add proper grouping to fix operator precedence
|
// Fix the problematic regex pattern - add proper grouping to fix operator precedence
|
||||||
fixedContent = fixedContent.replace(/\/\^text\\?\/\|charset=utf-8\$?\//g, '/^(text\\/|charset=utf-8)$/')
|
fixedContent = fixedContent.replace(/\/\^text\\?\/\|charset=utf-8\$?\//g, '/^(text\\/|charset=utf-8)$/')
|
||||||
fixedContent = fixedContent.replace(/\/\^text\/\|charset=utf-8\$?\//g, '/^(text/|charset=utf-8)$/')
|
fixedContent = fixedContent.replace(/\/\^text\/\|charset=utf-8\$?\//g, '/^(text/|charset=utf-8)$/')
|
||||||
|
|
||||||
return fixedContent
|
return fixedContent
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -34,20 +34,20 @@ function applyRegexFix(content) {
|
|||||||
* @returns {{fixed: boolean, error: string|null}} - Result of the fix operation
|
* @returns {{fixed: boolean, error: string|null}} - Result of the fix operation
|
||||||
*/
|
*/
|
||||||
function fixFile(filePath) {
|
function fixFile(filePath) {
|
||||||
try {
|
try {
|
||||||
const content = fs.readFileSync(filePath, 'utf8')
|
const content = fs.readFileSync(filePath, 'utf8')
|
||||||
const originalContent = content
|
const originalContent = content
|
||||||
const fixedContent = applyRegexFix(content)
|
const fixedContent = applyRegexFix(content)
|
||||||
|
|
||||||
if (fixedContent !== originalContent) {
|
if (fixedContent !== originalContent) {
|
||||||
fs.writeFileSync(filePath, fixedContent, 'utf8')
|
fs.writeFileSync(filePath, fixedContent, 'utf8')
|
||||||
return { fixed: true, error: null }
|
return {fixed: true, error: null}
|
||||||
} else {
|
} else {
|
||||||
return { fixed: false, error: null }
|
return {fixed: false, error: null}
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
return { fixed: false, error: error.message }
|
|
||||||
}
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return {fixed: false, error: error.message}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,50 +56,50 @@ function fixFile(filePath) {
|
|||||||
* @returns {{filesFixed: number, results: Array}} - Summary of fix operations
|
* @returns {{filesFixed: number, results: Array}} - Summary of fix operations
|
||||||
*/
|
*/
|
||||||
function fixAllFiles(files = filesToFix) {
|
function fixAllFiles(files = filesToFix) {
|
||||||
const results = []
|
const results = []
|
||||||
let filesFixed = 0
|
let filesFixed = 0
|
||||||
|
|
||||||
for (const filePath of files) {
|
for (const filePath of files) {
|
||||||
const result = fixFile(filePath)
|
const result = fixFile(filePath)
|
||||||
results.push({ filePath, ...result })
|
results.push({filePath, ...result})
|
||||||
|
|
||||||
if (result.fixed) {
|
if (result.fixed) {
|
||||||
filesFixed++
|
filesFixed++
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return { filesFixed, results }
|
return {filesFixed, results}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main execution when run as script
|
// Main execution when run as script
|
||||||
if (require.main === module) {
|
if (require.main === module) {
|
||||||
process.stdout.write('🔧 Applying regex fix for @octokit/request...\n')
|
process.stdout.write('🔧 Applying regex fix for @octokit/request...\n')
|
||||||
|
|
||||||
const { filesFixed, results } = fixAllFiles()
|
const {filesFixed, results} = fixAllFiles()
|
||||||
|
|
||||||
for (const result of results) {
|
for (const result of results) {
|
||||||
if (result.error) {
|
if (result.error) {
|
||||||
if (result.error.includes('ENOENT') || result.error.includes('no such file')) {
|
if (result.error.includes('ENOENT') || result.error.includes('no such file')) {
|
||||||
process.stdout.write(`⚠️ File not found: ${result.filePath}\n`)
|
process.stdout.write(`⚠️ File not found: ${result.filePath}\n`)
|
||||||
} else {
|
} else {
|
||||||
process.stderr.write(`❌ Error fixing ${result.filePath}: ${result.error}\n`)
|
process.stderr.write(`❌ Error fixing ${result.filePath}: ${result.error}\n`)
|
||||||
}
|
}
|
||||||
} else if (result.fixed) {
|
} else if (result.fixed) {
|
||||||
process.stdout.write(`✅ Fixed: ${result.filePath}\n`)
|
process.stdout.write(`✅ Fixed: ${result.filePath}\n`)
|
||||||
} else {
|
} else {
|
||||||
process.stdout.write(`ℹ️ No changes needed: ${result.filePath}\n`)
|
process.stdout.write(`ℹ️ No changes needed: ${result.filePath}\n`)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
process.stdout.write(`\n🎉 Fix complete! ${filesFixed} files updated.\n`)
|
process.stdout.write(`\n🎉 Fix complete! ${filesFixed} files updated.\n`)
|
||||||
if (filesFixed > 0) {
|
if (filesFixed > 0) {
|
||||||
process.stdout.write('Run "npm run build:package" to rebuild with the fix.\n')
|
process.stdout.write('Run "npm run build:package" to rebuild with the fix.\n')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export functions for testing
|
// Export functions for testing
|
||||||
module.exports = {
|
module.exports = {
|
||||||
applyRegexFix,
|
applyRegexFix,
|
||||||
fixFile,
|
fixFile,
|
||||||
fixAllFiles
|
fixAllFiles,
|
||||||
}
|
}
|
||||||
|
|||||||
3646
package-lock.json
generated
3646
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
25
package.json
25
package.json
@@ -15,21 +15,24 @@
|
|||||||
"npm": ">= 8.0.0"
|
"npm": ">= 8.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@eslint/js": "^9.39.1",
|
||||||
"@github/prettier-config": "^0.0.6",
|
"@github/prettier-config": "^0.0.6",
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/node": "24.5.2",
|
"@types/node": "^24.10.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^7.14.1",
|
"@typescript-eslint/eslint-plugin": "^8.47.0",
|
||||||
"@typescript-eslint/parser": "^7.18.0",
|
"@typescript-eslint/parser": "^8.47.0",
|
||||||
"@vercel/ncc": "^0.38.3",
|
"@vercel/ncc": "^0.38.4",
|
||||||
"concurrently": "^9.2.1",
|
"concurrently": "^9.2.1",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^9.39.1",
|
||||||
"eslint-plugin-github": "^5.0.1",
|
"eslint-plugin-github": "^6.0.0",
|
||||||
"eslint-plugin-jest": "^28.11.0",
|
"eslint-plugin-jest": "^29.1.0",
|
||||||
"eslint-plugin-prettier": "^5.2.5",
|
"eslint-plugin-prettier": "^5.2.5",
|
||||||
"jest": "^29.7.0",
|
"globals": "^15.14.0",
|
||||||
|
"jest": "^30.2.0",
|
||||||
"prettier": "3.6.2",
|
"prettier": "3.6.2",
|
||||||
"ts-jest": "^29.4.0",
|
"ts-jest": "^29.4.5",
|
||||||
"typescript": "^5.5.2"
|
"typescript": "^5.9.3",
|
||||||
|
"typescript-eslint": "^8.47.0"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"actions",
|
"actions",
|
||||||
|
|||||||
Reference in New Issue
Block a user