Skip to content

Commit 7720e25

Browse files
authored
Migrate to ESM (#1093)
* Migrate to ESM and eslint@9 * Use @tsconfig/recommended
1 parent e62292d commit 7720e25

32 files changed

+86
-85
lines changed

eslint.config.mjs renamed to eslint.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import tseslint from 'typescript-eslint'
66

77
export default tseslint.config(
88
{
9-
ignores: ['.git/', 'node_modules/', 'dist/', '*.config.*', 'src/generated/'],
9+
ignores: ['.git/', 'node_modules/', 'dist/', 'eslint.config.js', 'src/generated/'],
1010
},
1111
eslint.configs.recommended,
1212
...tseslint.configs.recommendedTypeChecked,

graphql-codegen.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const config: CodegenConfig = {
1212
preset: 'import-types',
1313
plugins: ['typescript-operations'],
1414
presetConfig: {
15-
typesPath: './graphql-types',
15+
typesPath: './graphql-types.js',
1616
},
1717
},
1818
},

jest.config.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
module.exports = {
2-
preset: 'ts-jest',
1+
/** @type {import('ts-jest').JestConfigWithTsJest} */
2+
export default {
3+
preset: 'ts-jest/presets/default-esm',
34
clearMocks: true,
4-
testEnvironment: 'node',
5-
testMatch: ['**/*.test.ts'],
6-
verbose: true
5+
// https://kulshekhar.github.io/ts-jest/docs/guides/esm-support/
6+
moduleNameMapper: {
7+
'^(\\.{1,2}/.*)\\.js$': '$1',
8+
},
79
}

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"test": "jest",
88
"graphql-codegen": "graphql-codegen --config graphql-codegen.ts"
99
},
10+
"type": "module",
1011
"dependencies": {
1112
"@actions/core": "1.10.1",
1213
"@actions/github": "6.0.0",
@@ -23,7 +24,7 @@
2324
"@graphql-codegen/typescript-operations": "4.2.3",
2425
"@octokit/graphql-schema": "14.58.0",
2526
"@octokit/webhooks-examples": "7.5.1",
26-
"@tsconfig/node20": "20.1.4",
27+
"@tsconfig/recommended": "^1.0.7",
2728
"@types/jest": "29.5.12",
2829
"@types/js-yaml": "4.0.9",
2930
"@types/node": "20.14.11",

pnpm-lock.yaml

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as core from '@actions/core'
22
import { client, v1 } from '@datadog/datadog-api-client'
3-
import { HttpLibrary } from './http'
3+
import { HttpLibrary } from './http.js'
44

55
type Inputs = {
66
datadogApiKey?: string

src/generated/graphql.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as Types from './graphql-types';
1+
import * as Types from './graphql-types.js';
22

33
export type GetCheckSuiteQueryVariables = Types.Exact<{
44
node_id: Types.Scalars['ID']['input'];

src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as core from '@actions/core'
22
import * as github from '@actions/github'
3-
import { run } from './run'
3+
import { run } from './run.js'
44

55
const main = async (): Promise<void> => {
66
await run(github.context, {

src/pullRequest/handler.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import * as core from '@actions/core'
22
import * as github from '@actions/github'
3-
import { MetricsClient } from '../client'
4-
import { PullRequestEvent } from '@octokit/webhooks-types'
5-
import { GitHubContext } from '../types'
6-
import { computePullRequestClosedMetrics, computePullRequestOpenedMetrics } from './metrics'
7-
import { getPullRequestFirstCommit } from '../queries/getPullRequest'
3+
import { MetricsClient } from '../client.js'
4+
import { PullRequestEvent } from '@octokit/webhooks-types/schema.js'
5+
import { GitHubContext } from '../types.js'
6+
import { computePullRequestClosedMetrics, computePullRequestOpenedMetrics } from './metrics.js'
7+
import { getPullRequestFirstCommit } from '../queries/getPullRequest.js'
88

99
type Inputs = {
1010
githubToken: string

src/pullRequest/metrics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { v1 } from '@datadog/datadog-api-client'
22
import { PullRequestClosedEvent, PullRequestEvent, PullRequestOpenedEvent } from '@octokit/webhooks-types'
3-
import { PullRequestFirstCommit } from '../queries/getPullRequest'
3+
import { PullRequestFirstCommit } from '../queries/getPullRequest.js'
44

55
const computeCommonTags = (e: PullRequestEvent): string[] => {
66
const tags = [

src/push/handler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as core from '@actions/core'
2-
import { MetricsClient } from '../client'
2+
import { MetricsClient } from '../client.js'
33
import { PushEvent } from '@octokit/webhooks-types'
4-
import { computePushMetrics } from './metrics'
4+
import { computePushMetrics } from './metrics.js'
55

66
export const handlePush = async (metricsClient: MetricsClient, e: PushEvent) => {
77
core.info(`Got push event: ${e.compare}`)

src/queries/getCheckSuite.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import assert from 'assert'
2-
import { GetCheckSuiteQuery, GetCheckSuiteQueryVariables } from '../generated/graphql'
3-
import { CheckAnnotation, CheckRun } from '../generated/graphql-types'
4-
import { Octokit } from '../types'
2+
import { GetCheckSuiteQuery, GetCheckSuiteQueryVariables } from '../generated/graphql.js'
3+
import { CheckAnnotation, CheckRun } from '../generated/graphql-types.js'
4+
import { Octokit } from '../types.js'
55

66
const query = /* GraphQL */ `
77
query getCheckSuite($node_id: ID!) {

src/queries/getPullRequest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import assert from 'assert'
2-
import { GetPullRequestQuery, GetPullRequestQueryVariables } from '../generated/graphql'
3-
import { Octokit } from '../types'
2+
import { GetPullRequestQuery, GetPullRequestQueryVariables } from '../generated/graphql.js'
3+
import { Octokit } from '../types.js'
44

55
const query = /* GraphQL */ `
66
query getPullRequest($owner: String!, $name: String!, $number: Int!) {

src/rateLimit/metrics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { v1 } from '@datadog/datadog-api-client'
2-
import { RateLimitResponse } from '../types'
2+
import { RateLimitResponse } from '../types.js'
33

44
type Context = {
55
repo: {

src/run.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as core from '@actions/core'
22
import * as github from '@actions/github'
33
import { PullRequestEvent, PushEvent, WorkflowRunEvent } from '@octokit/webhooks-types'
4-
import { computeRateLimitMetrics } from './rateLimit/metrics'
5-
import { GitHubContext } from './types'
6-
import { MetricsClient, createMetricsClient } from './client'
7-
import { handleWorkflowRun } from './workflowRun/handler'
8-
import { handlePullRequest } from './pullRequest/handler'
9-
import { handlePush } from './push/handler'
10-
import { handleSchedule } from './schedule/handler'
4+
import { computeRateLimitMetrics } from './rateLimit/metrics.js'
5+
import { GitHubContext } from './types.js'
6+
import { MetricsClient, createMetricsClient } from './client.js'
7+
import { handleWorkflowRun } from './workflowRun/handler.js'
8+
import { handlePullRequest } from './pullRequest/handler.js'
9+
import { handlePush } from './push/handler.js'
10+
import { handleSchedule } from './schedule/handler.js'
1111

1212
type Inputs = {
1313
githubToken: string

src/schedule/handler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as core from '@actions/core'
22
import * as github from '@actions/github'
3-
import { MetricsClient } from '../client'
4-
import { GitHubContext } from '../types'
5-
import { computeScheduleMetrics } from './metrics'
3+
import { MetricsClient } from '../client.js'
4+
import { GitHubContext } from '../types.js'
5+
import { computeScheduleMetrics } from './metrics.js'
66

77
type Inputs = {
88
githubToken: string

src/schedule/metrics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { v1 } from '@datadog/datadog-api-client'
2-
import { GitHubContext, ListWorkflowRunsForRepoRateLimitResponse } from '../types'
2+
import { GitHubContext, ListWorkflowRunsForRepoRateLimitResponse } from '../types.js'
33

44
export const computeScheduleMetrics = (
55
context: GitHubContext,

src/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Context } from '@actions/github/lib/context'
2-
import { GitHub } from '@actions/github/lib/utils'
1+
import { Context } from '@actions/github/lib/context.js'
2+
import { GitHub } from '@actions/github/lib/utils.js'
33
import { Endpoints } from '@octokit/types'
44

55
export type GitHubContext = Pick<Context, 'eventName' | 'payload' | 'repo'>

src/workflowRun/handler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as core from '@actions/core'
22
import * as github from '@actions/github'
3-
import { getCompletedCheckSuite } from '../queries/getCheckSuite'
4-
import { computeWorkflowRunJobStepMetrics } from './metrics'
5-
import { MetricsClient } from '../client'
3+
import { getCompletedCheckSuite } from '../queries/getCheckSuite.js'
4+
import { computeWorkflowRunJobStepMetrics } from './metrics.js'
5+
import { MetricsClient } from '../client.js'
66
import { WorkflowRunCompletedEvent, WorkflowRunEvent } from '@octokit/webhooks-types'
77

88
type Inputs = {

src/workflowRun/metrics.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { v1 } from '@datadog/datadog-api-client'
22
import { WorkflowRunCompletedEvent } from '@octokit/webhooks-types'
3-
import { CompletedCheckSuite } from '../queries/getCheckSuite'
4-
import { WorkflowJobs } from '../types'
3+
import { CompletedCheckSuite } from '../queries/getCheckSuite.js'
4+
import { WorkflowJobs } from '../types.js'
55

66
const getCommonMetricsTags = (e: WorkflowRunCompletedEvent): string[] => [
77
`repository_owner:${e.workflow_run.repository.owner.login}`,

tests/client.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { injectTags } from '../src/client'
1+
import { injectTags } from '../src/client.js'
22

33
describe('injectTags', () => {
44
it('should return series if tags is empty', () => {

tests/http.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { client, v1 } from '@datadog/datadog-api-client'
22
import { createProxy } from 'proxy'
3-
import { HttpLibrary } from '../src/http'
3+
import { HttpLibrary } from '../src/http.js'
44
import * as http from 'http'
55

66
describe('without proxy', () => {

tests/pullRequest/fixtures/getPullRequest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { PullRequestFirstCommit } from '../../../src/queries/getPullRequest'
2-
import { GetPullRequestQuery } from '../../../src/generated/graphql'
1+
import { PullRequestFirstCommit } from '../../../src/queries/getPullRequest.js'
2+
import { GetPullRequestQuery } from '../../../src/generated/graphql.js'
33

44
export const exampleGetPullRequestQuery: GetPullRequestQuery = {
55
repository: {

tests/pullRequest/metrics.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { computePullRequestClosedMetrics, computePullRequestOpenedMetrics } from '../../src/pullRequest/metrics'
2-
import { examplePullRequestClosedEvent } from '../fixtures'
3-
import { examplePullRequestOpenedEvent } from '../fixtures'
4-
import { examplePullRequestFirstCommit } from './fixtures/getPullRequest'
1+
import { computePullRequestClosedMetrics, computePullRequestOpenedMetrics } from '../../src/pullRequest/metrics.js'
2+
import { examplePullRequestClosedEvent } from '../fixtures.js'
3+
import { examplePullRequestOpenedEvent } from '../fixtures.js'
4+
import { examplePullRequestFirstCommit } from './fixtures/getPullRequest.js'
55

66
test('computePullRequestOpenedMetrics', () => {
77
const series = computePullRequestOpenedMetrics(examplePullRequestOpenedEvent)

tests/queries/getCheckSuite.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { extractCheckRuns } from '../../src/queries/getCheckSuite'
1+
import { extractCheckRuns } from '../../src/queries/getCheckSuite.js'
22

33
describe('extractCheckRuns', () => {
44
it('should return same length of nodes', () => {

tests/rateLimit/fixtures/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { v1 } from '@datadog/datadog-api-client'
2-
import { RateLimitResponse } from '../../../src/types'
2+
import { RateLimitResponse } from '../../../src/types.js'
33

44
export const exampleRateLimitResponse: RateLimitResponse = {
55
url: 'https://api.example.com',

tests/rateLimit/metrics.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { computeRateLimitMetrics } from '../../src/rateLimit/metrics'
2-
import { exampleRateLimitMetrics, exampleRateLimitResponse } from './fixtures'
1+
import { computeRateLimitMetrics } from '../../src/rateLimit/metrics.js'
2+
import { exampleRateLimitMetrics, exampleRateLimitResponse } from './fixtures/index.js'
33

44
test('run successfully', () => {
55
const series = computeRateLimitMetrics(

tests/run.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import * as github from '@actions/github'
22
import { v1 } from '@datadog/datadog-api-client'
3-
import { run } from '../src/run'
4-
import { exampleWorkflowRunCompletedEvent } from './fixtures'
5-
import { exampleRateLimitResponse } from './rateLimit/fixtures'
6-
import { exampleCompletedCheckSuite } from './workflowRun/fixtures/completedCheckSuite'
7-
import { examplePullRequestClosedEvent } from './fixtures'
8-
import { WebhookPayload } from '@actions/github/lib/interfaces'
9-
import { examplePullRequestOpenedEvent } from './fixtures'
10-
import { exampleGetPullRequestQuery } from './pullRequest/fixtures/getPullRequest'
11-
import { exampleWorkflowJobs } from './workflowRun/fixtures/workflowJobs'
3+
import { run } from '../src/run.js'
4+
import { exampleWorkflowRunCompletedEvent } from './fixtures.js'
5+
import { exampleRateLimitResponse } from './rateLimit/fixtures/index.js'
6+
import { exampleCompletedCheckSuite } from './workflowRun/fixtures/completedCheckSuite.js'
7+
import { examplePullRequestClosedEvent } from './fixtures.js'
8+
import { WebhookPayload } from '@actions/github/lib/interfaces.js'
9+
import { examplePullRequestOpenedEvent } from './fixtures.js'
10+
import { exampleGetPullRequestQuery } from './pullRequest/fixtures/getPullRequest.js'
11+
import { exampleWorkflowJobs } from './workflowRun/fixtures/workflowJobs.js'
1212

1313
jest.mock('@actions/core')
1414

tests/workflowRun/fixtures/completedCheckSuite.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { CompletedCheckSuite } from '../../../src/queries/getCheckSuite'
2-
import { GetCheckSuiteQuery } from '../../../src/generated/graphql'
1+
import { CompletedCheckSuite } from '../../../src/queries/getCheckSuite.js'
2+
import { GetCheckSuiteQuery } from '../../../src/generated/graphql.js'
33

44
export const exampleCompletedCheckSuite: GetCheckSuiteQuery & CompletedCheckSuite = {
55
// https://docs.github.com/en/rest/reference/actions#list-jobs-for-a-workflow-run

tests/workflowRun/fixtures/workflowJobs.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { WorkflowJobs } from '../../../src/types'
1+
import { WorkflowJobs } from '../../../src/types.js'
22

33
export const exampleWorkflowJobs: WorkflowJobs = {
44
// https://docs.github.com/en/rest/actions/workflow-jobs?apiVersion=2022-11-28#list-jobs-for-a-workflow-run-attempt

tests/workflowRun/metrics.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import {
44
computeWorkflowRunMetrics,
55
isLostCommunicationWithServerError,
66
isReceivedShutdownSignalError,
7-
} from '../../src/workflowRun/metrics'
8-
import { exampleCompletedCheckSuite } from './fixtures/completedCheckSuite'
9-
import { exampleWorkflowRunCompletedEvent } from '../fixtures'
10-
import { exampleWorkflowJobs } from './fixtures/workflowJobs'
7+
} from '../../src/workflowRun/metrics.js'
8+
import { exampleCompletedCheckSuite } from './fixtures/completedCheckSuite.js'
9+
import { exampleWorkflowRunCompletedEvent } from '../fixtures.js'
10+
import { exampleWorkflowJobs } from './fixtures/workflowJobs.js'
1111

1212
test('computeWorkflowRunMetrics', () => {
1313
const series = computeWorkflowRunMetrics(exampleWorkflowRunCompletedEvent, {

tsconfig.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
{
2-
"extends": "@tsconfig/node20/tsconfig.json",
3-
"compilerOptions": {
4-
"outDir": "./lib"
5-
}
2+
"$schema": "https://json.schemastore.org/tsconfig",
3+
"extends": "@tsconfig/recommended/tsconfig.json"
64
}

0 commit comments

Comments
 (0)