@actions/artifact: convert to an ESM module (#2266)
* `@actions/artifact`: convert to an ESM module * Update the package-lock.json * Undo the GHES ignores * Fix the reference to `@actions/http-client` in the lock file * Bump `@actions/core` to `3.0.0` * Remove `jest.config.cjs` * Import `OctoKitOptions` from `@octokit/core/types` * Pull the package version from `package.json` * Workaround getting the package version for the user-agent * Fix the `archiver` import * Fix linting
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import {ArtifactClient, DefaultArtifactClient} from './internal/client'
|
||||
import {ArtifactClient, DefaultArtifactClient} from './internal/client.js'
|
||||
|
||||
export * from './internal/shared/interfaces'
|
||||
export * from './internal/shared/errors'
|
||||
export * from './internal/client'
|
||||
export * from './internal/shared/interfaces.js'
|
||||
export * from './internal/shared/errors.js'
|
||||
export * from './internal/client.js'
|
||||
|
||||
const client: ArtifactClient = new DefaultArtifactClient()
|
||||
export default client
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export * from './google/protobuf/timestamp'
|
||||
export * from './google/protobuf/wrappers'
|
||||
export * from './results/api/v1/artifact'
|
||||
export * from './results/api/v1/artifact.twirp-client'
|
||||
export * from './google/protobuf/timestamp.js'
|
||||
export * from './google/protobuf/wrappers.js'
|
||||
export * from './results/api/v1/artifact.js'
|
||||
export * from './results/api/v1/artifact.twirp-client.js'
|
||||
|
||||
@@ -12,9 +12,9 @@ import type { PartialMessage } from "@protobuf-ts/runtime";
|
||||
import { reflectionMergePartial } from "@protobuf-ts/runtime";
|
||||
import { MESSAGE_TYPE } from "@protobuf-ts/runtime";
|
||||
import { MessageType } from "@protobuf-ts/runtime";
|
||||
import { Int64Value } from "../../../google/protobuf/wrappers";
|
||||
import { StringValue } from "../../../google/protobuf/wrappers";
|
||||
import { Timestamp } from "../../../google/protobuf/timestamp";
|
||||
import { Int64Value } from "../../../google/protobuf/wrappers.js";
|
||||
import { StringValue } from "../../../google/protobuf/wrappers.js";
|
||||
import { Timestamp } from "../../../google/protobuf/timestamp.js";
|
||||
/**
|
||||
* @generated from protobuf message github.actions.results.api.v1.MigrateArtifactRequest
|
||||
*/
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
GetSignedArtifactURLResponse,
|
||||
DeleteArtifactRequest,
|
||||
DeleteArtifactResponse,
|
||||
} from "./artifact";
|
||||
} from "./artifact.js";
|
||||
|
||||
//==================================//
|
||||
// Client Code //
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {warning} from '@actions/core'
|
||||
import {isGhes} from './shared/config'
|
||||
import {isGhes} from './shared/config.js'
|
||||
import {
|
||||
UploadArtifactOptions,
|
||||
UploadArtifactResponse,
|
||||
@@ -10,19 +10,22 @@ import {
|
||||
DownloadArtifactResponse,
|
||||
FindOptions,
|
||||
DeleteArtifactResponse
|
||||
} from './shared/interfaces'
|
||||
import {uploadArtifact} from './upload/upload-artifact'
|
||||
} from './shared/interfaces.js'
|
||||
import {uploadArtifact} from './upload/upload-artifact.js'
|
||||
import {
|
||||
downloadArtifactPublic,
|
||||
downloadArtifactInternal
|
||||
} from './download/download-artifact'
|
||||
} from './download/download-artifact.js'
|
||||
import {
|
||||
deleteArtifactPublic,
|
||||
deleteArtifactInternal
|
||||
} from './delete/delete-artifact'
|
||||
import {getArtifactPublic, getArtifactInternal} from './find/get-artifact'
|
||||
import {listArtifactsPublic, listArtifactsInternal} from './find/list-artifacts'
|
||||
import {GHESNotSupportedError} from './shared/errors'
|
||||
} from './delete/delete-artifact.js'
|
||||
import {getArtifactPublic, getArtifactInternal} from './find/get-artifact.js'
|
||||
import {
|
||||
listArtifactsPublic,
|
||||
listArtifactsInternal
|
||||
} from './find/list-artifacts.js'
|
||||
import {GHESNotSupportedError} from './shared/errors.js'
|
||||
|
||||
/**
|
||||
* Generic interface for the artifact client.
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
import {info, debug} from '@actions/core'
|
||||
import {getOctokit} from '@actions/github'
|
||||
import {DeleteArtifactResponse} from '../shared/interfaces'
|
||||
import {getUserAgentString} from '../shared/user-agent'
|
||||
import {getRetryOptions} from '../find/retry-options'
|
||||
import {DeleteArtifactResponse} from '../shared/interfaces.js'
|
||||
import {getUserAgentString} from '../shared/user-agent.js'
|
||||
import {getRetryOptions} from '../find/retry-options.js'
|
||||
import {defaults as defaultGitHubOptions} from '@actions/github/lib/utils'
|
||||
import {requestLog} from '@octokit/plugin-request-log'
|
||||
import {retry} from '@octokit/plugin-retry'
|
||||
import {OctokitOptions} from '@octokit/core/dist-types/types'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client'
|
||||
import {getBackendIdsFromToken} from '../shared/util'
|
||||
import type {OctokitOptions} from '@octokit/core/types'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client.js'
|
||||
import {getBackendIdsFromToken} from '../shared/util.js'
|
||||
import {
|
||||
DeleteArtifactRequest,
|
||||
ListArtifactsRequest,
|
||||
StringValue
|
||||
} from '../../generated'
|
||||
import {getArtifactPublic} from '../find/get-artifact'
|
||||
import {ArtifactNotFoundError, InvalidResponseError} from '../shared/errors'
|
||||
} from '../../generated/index.js'
|
||||
import {getArtifactPublic} from '../find/get-artifact.js'
|
||||
import {ArtifactNotFoundError, InvalidResponseError} from '../shared/errors.js'
|
||||
|
||||
export async function deleteArtifactPublic(
|
||||
artifactName: string,
|
||||
|
||||
@@ -10,17 +10,17 @@ import {
|
||||
DownloadArtifactOptions,
|
||||
DownloadArtifactResponse,
|
||||
StreamExtractResponse
|
||||
} from '../shared/interfaces'
|
||||
import {getUserAgentString} from '../shared/user-agent'
|
||||
import {getGitHubWorkspaceDir} from '../shared/config'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client'
|
||||
} from '../shared/interfaces.js'
|
||||
import {getUserAgentString} from '../shared/user-agent.js'
|
||||
import {getGitHubWorkspaceDir} from '../shared/config.js'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client.js'
|
||||
import {
|
||||
GetSignedArtifactURLRequest,
|
||||
Int64Value,
|
||||
ListArtifactsRequest
|
||||
} from '../../generated'
|
||||
import {getBackendIdsFromToken} from '../shared/util'
|
||||
import {ArtifactNotFoundError} from '../shared/errors'
|
||||
} from '../../generated/index.js'
|
||||
import {getBackendIdsFromToken} from '../shared/util.js'
|
||||
import {ArtifactNotFoundError} from '../shared/errors.js'
|
||||
|
||||
const scrubQueryParameters = (url: string): string => {
|
||||
const parsed = new URL(url)
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
import {getOctokit} from '@actions/github'
|
||||
import {retry} from '@octokit/plugin-retry'
|
||||
import * as core from '@actions/core'
|
||||
import {OctokitOptions} from '@octokit/core/dist-types/types'
|
||||
import type {OctokitOptions} from '@octokit/core/types'
|
||||
import {defaults as defaultGitHubOptions} from '@actions/github/lib/utils'
|
||||
import {getRetryOptions} from './retry-options'
|
||||
import {getRetryOptions} from './retry-options.js'
|
||||
import {requestLog} from '@octokit/plugin-request-log'
|
||||
import {GetArtifactResponse} from '../shared/interfaces'
|
||||
import {getBackendIdsFromToken} from '../shared/util'
|
||||
import {getUserAgentString} from '../shared/user-agent'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client'
|
||||
import {ListArtifactsRequest, StringValue, Timestamp} from '../../generated'
|
||||
import {ArtifactNotFoundError, InvalidResponseError} from '../shared/errors'
|
||||
import {GetArtifactResponse} from '../shared/interfaces.js'
|
||||
import {getBackendIdsFromToken} from '../shared/util.js'
|
||||
import {getUserAgentString} from '../shared/user-agent.js'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client.js'
|
||||
import {
|
||||
ListArtifactsRequest,
|
||||
StringValue,
|
||||
Timestamp
|
||||
} from '../../generated/index.js'
|
||||
import {ArtifactNotFoundError, InvalidResponseError} from '../shared/errors.js'
|
||||
|
||||
export async function getArtifactPublic(
|
||||
artifactName: string,
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import {info, warning, debug} from '@actions/core'
|
||||
import {getOctokit} from '@actions/github'
|
||||
import {ListArtifactsResponse, Artifact} from '../shared/interfaces'
|
||||
import {getUserAgentString} from '../shared/user-agent'
|
||||
import {getRetryOptions} from './retry-options'
|
||||
import {ListArtifactsResponse, Artifact} from '../shared/interfaces.js'
|
||||
import {getUserAgentString} from '../shared/user-agent.js'
|
||||
import {getRetryOptions} from './retry-options.js'
|
||||
import {defaults as defaultGitHubOptions} from '@actions/github/lib/utils'
|
||||
import {requestLog} from '@octokit/plugin-request-log'
|
||||
import {retry} from '@octokit/plugin-retry'
|
||||
import {OctokitOptions} from '@octokit/core/dist-types/types'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client'
|
||||
import {getBackendIdsFromToken} from '../shared/util'
|
||||
import {getMaxArtifactListCount} from '../shared/config'
|
||||
import {ListArtifactsRequest, Timestamp} from '../../generated'
|
||||
import type {OctokitOptions} from '@octokit/core/types'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client.js'
|
||||
import {getBackendIdsFromToken} from '../shared/util.js'
|
||||
import {getMaxArtifactListCount} from '../shared/config.js'
|
||||
import {ListArtifactsRequest, Timestamp} from '../../generated/index.js'
|
||||
|
||||
const maximumArtifactCount = getMaxArtifactListCount()
|
||||
const paginationCount = 100
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as core from '@actions/core'
|
||||
import {OctokitOptions} from '@octokit/core/dist-types/types'
|
||||
import type {OctokitOptions} from '@octokit/core/types'
|
||||
import {RequestRequestOptions} from '@octokit/types'
|
||||
|
||||
export type RetryOptions = {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import {HttpClient, HttpClientResponse, HttpCodes} from '@actions/http-client'
|
||||
import {BearerCredentialHandler} from '@actions/http-client/lib/auth'
|
||||
import {info, debug} from '@actions/core'
|
||||
import {ArtifactServiceClientJSON} from '../../generated'
|
||||
import {getResultsServiceUrl, getRuntimeToken} from './config'
|
||||
import {getUserAgentString} from './user-agent'
|
||||
import {NetworkError, UsageError} from './errors'
|
||||
import {maskSecretUrls} from './util'
|
||||
import {ArtifactServiceClientJSON} from '../../generated/index.js'
|
||||
import {getResultsServiceUrl, getRuntimeToken} from './config.js'
|
||||
import {getUserAgentString} from './user-agent.js'
|
||||
import {NetworkError, UsageError} from './errors.js'
|
||||
import {maskSecretUrls} from './util.js'
|
||||
|
||||
// The twirp http client must implement this interface
|
||||
interface Rpc {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
// This file exists as a CommonJS module to read the version from package.json.
|
||||
// In an ESM package, using `require()` directly in .ts files requires disabling
|
||||
// ESLint rules and doesn't work reliably across all Node.js versions.
|
||||
// By keeping this as a .cjs file, we can use require() naturally and export
|
||||
// the version for the ESM modules to import.
|
||||
const packageJson = require('../../../package.json')
|
||||
module.exports = { version: packageJson.version }
|
||||
@@ -1,9 +1,8 @@
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
|
||||
const packageJson = require('../../../package.json')
|
||||
import {version} from './package-version.cjs'
|
||||
|
||||
/**
|
||||
* Ensure that this User Agent String is used in all HTTP calls so that we can monitor telemetry between different versions of this package
|
||||
*/
|
||||
export function getUserAgentString(): string {
|
||||
return `@actions/artifact-${packageJson.version}`
|
||||
return `@actions/artifact-${version}`
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as core from '@actions/core'
|
||||
import {getRuntimeToken} from './config'
|
||||
import jwt_decode from 'jwt-decode'
|
||||
import {getRuntimeToken} from './config.js'
|
||||
import {jwtDecode} from 'jwt-decode'
|
||||
import {debug, setSecret} from '@actions/core'
|
||||
|
||||
export interface BackendIds {
|
||||
@@ -20,7 +20,7 @@ const InvalidJwtError = new Error(
|
||||
// workflow run and workflow job run backend ids
|
||||
export function getBackendIdsFromToken(): BackendIds {
|
||||
const token = getRuntimeToken()
|
||||
const decoded = jwt_decode<ActionsToken>(token)
|
||||
const decoded = jwtDecode<ActionsToken>(token)
|
||||
if (!decoded.scp) {
|
||||
throw InvalidJwtError
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import {BlobClient, BlockBlobUploadStreamOptions} from '@azure/storage-blob'
|
||||
import {TransferProgressEvent} from '@azure/core-http-compat'
|
||||
import {ZipUploadStream} from './zip'
|
||||
import {ZipUploadStream} from './zip.js'
|
||||
import {
|
||||
getUploadChunkSize,
|
||||
getConcurrency,
|
||||
getUploadChunkTimeout
|
||||
} from '../shared/config'
|
||||
} from '../shared/config.js'
|
||||
import * as core from '@actions/core'
|
||||
import * as crypto from 'crypto'
|
||||
import * as stream from 'stream'
|
||||
import {NetworkError} from '../shared/errors'
|
||||
import {NetworkError} from '../shared/errors.js'
|
||||
|
||||
export interface BlobUploadResponse {
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {Timestamp} from '../../generated'
|
||||
import {Timestamp} from '../../generated/index.js'
|
||||
import * as core from '@actions/core'
|
||||
|
||||
export function getExpiration(retentionDays?: number): Timestamp | undefined {
|
||||
|
||||
@@ -2,24 +2,24 @@ import * as core from '@actions/core'
|
||||
import {
|
||||
UploadArtifactOptions,
|
||||
UploadArtifactResponse
|
||||
} from '../shared/interfaces'
|
||||
import {getExpiration} from './retention'
|
||||
import {validateArtifactName} from './path-and-artifact-name-validation'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client'
|
||||
} from '../shared/interfaces.js'
|
||||
import {getExpiration} from './retention.js'
|
||||
import {validateArtifactName} from './path-and-artifact-name-validation.js'
|
||||
import {internalArtifactTwirpClient} from '../shared/artifact-twirp-client.js'
|
||||
import {
|
||||
UploadZipSpecification,
|
||||
getUploadZipSpecification,
|
||||
validateRootDirectory
|
||||
} from './upload-zip-specification'
|
||||
import {getBackendIdsFromToken} from '../shared/util'
|
||||
import {uploadZipToBlobStorage} from './blob-upload'
|
||||
import {createZipUploadStream} from './zip'
|
||||
} from './upload-zip-specification.js'
|
||||
import {getBackendIdsFromToken} from '../shared/util.js'
|
||||
import {uploadZipToBlobStorage} from './blob-upload.js'
|
||||
import {createZipUploadStream} from './zip.js'
|
||||
import {
|
||||
CreateArtifactRequest,
|
||||
FinalizeArtifactRequest,
|
||||
StringValue
|
||||
} from '../../generated'
|
||||
import {FilesNotFoundError, InvalidResponseError} from '../shared/errors'
|
||||
} from '../../generated/index.js'
|
||||
import {FilesNotFoundError, InvalidResponseError} from '../shared/errors.js'
|
||||
|
||||
export async function uploadArtifact(
|
||||
name: string,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import * as fs from 'fs'
|
||||
import {info} from '@actions/core'
|
||||
import {normalize, resolve} from 'path'
|
||||
import {validateFilePath} from './path-and-artifact-name-validation'
|
||||
import {validateFilePath} from './path-and-artifact-name-validation.js'
|
||||
|
||||
export interface UploadZipSpecification {
|
||||
/**
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import * as stream from 'stream'
|
||||
import {realpath} from 'fs/promises'
|
||||
import * as archiver from 'archiver'
|
||||
import archiver from 'archiver'
|
||||
import * as core from '@actions/core'
|
||||
import {UploadZipSpecification} from './upload-zip-specification'
|
||||
import {getUploadChunkSize} from '../shared/config'
|
||||
import {UploadZipSpecification} from './upload-zip-specification.js'
|
||||
import {getUploadChunkSize} from '../shared/config.js'
|
||||
|
||||
export const DEFAULT_COMPRESSION_LEVEL = 6
|
||||
|
||||
|
||||
Reference in New Issue
Block a user