Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ module.exports = {
roots: ['<rootDir>/packages'],
testEnvironment: 'node',
testMatch: ['**/__tests__/*.test.ts'],
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1'
},
transform: {
'^.+\\.(ts|js)$': ['ts-jest', {
isolatedModules: true,
Expand Down
17 changes: 14 additions & 3 deletions packages/github/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,20 @@

Returns an authenticated Octokit client that follows the machine [proxy settings](https://help.github.com/en/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners) and correctly sets GHES base urls. See https://octokit.github.io/rest.js for the API.

**Note:** This package is ESM-only starting from v9.0.0. For CommonJS projects, use dynamic import:
```js
const github = require('@actions/github');
const core = require('@actions/core');
async function main() {
const { getOctokit, context } = await import('@actions/github');
// ... your code here
}
main();
```

For bundled actions (recommended), most bundlers like esbuild, webpack, and rollup handle ESM imports automatically.

```js
import * as github from '@actions/github';
import * as core from '@actions/core';

async function run() {
// This should be a token with access to your repository scoped in as a secret.
Expand Down Expand Up @@ -46,7 +57,7 @@ const result = await octokit.graphql(query, variables);
Finally, you can get the context of the current action:

```js
const github = require('@actions/github');
import * as github from '@actions/github';

const context = github.context;

Expand Down
7 changes: 7 additions & 0 deletions packages/github/RELEASES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# @actions/github Releases

### 9.0.0

- **Breaking change**: Package is now ESM-only
- CommonJS consumers must use dynamic `import()` instead of `require()`
- Example: `const { getOctokit, context } = await import('@actions/github')`
- Fix TypeScript compilation by migrating to ESM, enabling proper imports from `@octokit/core/types`

### 8.0.1

- Update `undici` to `6.23.0`
Expand Down
11 changes: 6 additions & 5 deletions packages/github/__tests__/lib.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import * as path from 'path'
import {Context} from '../src/context'

/* eslint-disable @typescript-eslint/no-require-imports */
/* eslint-disable @typescript-eslint/no-var-requires */
import {readFileSync} from 'fs'
import {Context} from '../src/context.js'

describe('@actions/context', () => {
let context: Context
Expand All @@ -14,7 +12,10 @@ describe('@actions/context', () => {
})

it('returns the payload object', () => {
expect(context.payload).toEqual(require('./payload.json'))
const payload = JSON.parse(
readFileSync(path.join(__dirname, 'payload.json'), 'utf8')
)
expect(context.payload).toEqual(payload)
})

it('returns an empty payload if the GITHUB_EVENT_PATH environment variable is falsey', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
/** @type {import('jest').Config} */
module.exports = {
clearMocks: true,
moduleFileExtensions: ['js', 'ts'],
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1'
},
transform: {
'^.+\\.(ts|js)$': ['ts-jest', {
useESM: false,
tsconfig: {
allowJs: true,
esModuleInterop: true
esModuleInterop: true,
module: 'node16',
moduleResolution: 'node16'
}
}]
},
Expand Down
4 changes: 2 additions & 2 deletions packages/github/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion packages/github/package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,26 @@
{
"name": "@actions/github",
"version": "8.0.1",
"version": "9.0.0",
"description": "Actions github lib",
"keywords": [
"github",
"actions"
],
"homepage": "https://github.com/actions/toolkit/tree/main/packages/github",
"license": "MIT",
"type": "module",
"main": "lib/github.js",
"types": "lib/github.d.ts",
"exports": {
".": {
"types": "./lib/github.d.ts",
"import": "./lib/github.js"
},
"./lib/utils": {
"types": "./lib/utils.d.ts",
"import": "./lib/utils.js"
}
},
"directories": {
"lib": "lib",
"test": "__tests__"
Expand Down
2 changes: 1 addition & 1 deletion packages/github/src/context.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Originally pulled from https://github.com/JasonEtco/actions-toolkit/blob/main/src/context.ts
import {WebhookPayload} from './interfaces'
import {WebhookPayload} from './interfaces.js'
import {readFileSync, existsSync} from 'fs'
import {EOL} from 'os'

Expand Down
7 changes: 3 additions & 4 deletions packages/github/src/github.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import * as Context from './context'
import {GitHub, getOctokitOptions} from './utils'

import * as Context from './context.js'
import {GitHub, getOctokitOptions} from './utils.js'
// octokit + plugins
import {OctokitOptions, OctokitPlugin} from '@octokit/core/dist-types/types'
import type {OctokitOptions, OctokitPlugin} from '@octokit/core/types'

export const context = new Context.Context()

Expand Down
2 changes: 1 addition & 1 deletion packages/github/src/internal/utils.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as http from 'http'
import * as httpClient from '@actions/http-client'
import {OctokitOptions} from '@octokit/core/dist-types/types'
import type {OctokitOptions} from '@octokit/core/types'
import {ProxyAgent, fetch} from 'undici'

export function getAuthString(
Expand Down
6 changes: 3 additions & 3 deletions packages/github/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as Context from './context'
import * as Utils from './internal/utils'
import * as Context from './context.js'
import * as Utils from './internal/utils.js'
import type {OctokitOptions} from '@octokit/core/types'

// octokit + plugins
import {Octokit} from '@octokit/core'
import {OctokitOptions} from '@octokit/core/dist-types/types'
import {restEndpointMethods} from '@octokit/plugin-rest-endpoint-methods'
import {paginateRest} from '@octokit/plugin-paginate-rest'

Expand Down
4 changes: 3 additions & 1 deletion packages/github/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
"compilerOptions": {
"baseUrl": "./",
"outDir": "./lib",
"rootDir": "./src"
"rootDir": "./src",
"module": "node16",
"moduleResolution": "node16"
},
"include": [
"./src"
Expand Down
Loading