Skip to content

Commit f8cbaf5

Browse files
committed
src: convert project from CJS to ESM
This is a substantial change that moves the release-1.x branch from CommonJS to ESM as discussed in #2014. Please review/test carefully. This commit does the following things: - Updates the tsconfig to generate ESM code. The formatter also automatically formatted this file. - Add `"type": "module"` to the `package.json` so that consumers treat this as ESM instead of CJS. - Updates all of the imports to be valid ESM imports. ESM requires that file extensions are provided. TypeScript is smart enough to handle the `.js` extensions, but TypeScript does not support adding the extensions at build time. See microsoft/TypeScript#16577 for more details about this. The `tsc-esm-fix` utility on npm was used to automatically add the extensions. The code generator probably needs to add support for this too if it doesn't already. - Fixup the `jsonpath` imports, as this module does not have a default ESM export. This just means adding `* as` to the existing imports. - Remove the `AbortError` export originating from `node-fetch`. Apparently this is not actually there. I was able to successfully import the transpiled code using `import * as k8s from './dist/index.js';`. This should hopefully unblock running tests against the transpiled code as well (it currently does not work because the openid-client and chai dependencies have both moved to ESM only).
1 parent 3c81be4 commit f8cbaf5

File tree

737 files changed

+6387
-6387
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

737 files changed

+6387
-6387
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"name": "@kubernetes/client-node",
33
"version": "1.0.0-rc7",
44
"description": "NodeJS client for kubernetes",
5+
"type": "module",
56
"repository": {
67
"type": "git",
78
"url": "https://github.com/kubernetes-client/javascript.git"

src/api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from './gen';
1+
export * from './gen/index.js';

src/attach.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import WebSocket from 'isomorphic-ws';
22
import querystring from 'node:querystring';
33
import stream from 'node:stream';
44

5-
import { KubeConfig } from './config';
6-
import { isResizable, ResizableStream, TerminalSizeQueue } from './terminal-size-queue';
7-
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler';
5+
import { KubeConfig } from './config.js';
6+
import { isResizable, ResizableStream, TerminalSizeQueue } from './terminal-size-queue.js';
7+
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler.js';
88

99
export class Attach {
1010
public 'handler': WebSocketInterface;

src/attach_test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { ReadableStreamBuffer, WritableStreamBuffer } from 'stream-buffers';
44
import { anyFunction, anything, capture, instance, mock, verify, when } from 'ts-mockito';
55

66
import { CallAwaiter, matchBuffer, ResizableWriteableStreamBuffer } from '../test';
7-
import { Attach } from './attach';
8-
import { KubeConfig } from './config';
9-
import { TerminalSize } from './terminal-size-queue';
10-
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler';
7+
import { Attach } from './attach.js';
8+
import { KubeConfig } from './config.js';
9+
import { TerminalSize } from './terminal-size-queue.js';
10+
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler.js';
1111

1212
describe('Attach', () => {
1313
describe('basic', () => {

src/auth.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import https from 'node:https';
22

3-
import { User } from './config_types';
3+
import { User } from './config_types.js';
44
import WebSocket from 'isomorphic-ws';
55

66
export interface Authenticator {

src/azure_auth.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import proc from 'node:child_process';
22
import https from 'node:https';
3-
import jsonpath from 'jsonpath-plus';
3+
import * as jsonpath from 'jsonpath-plus';
44

5-
import { Authenticator } from './auth';
6-
import { User } from './config_types';
5+
import { Authenticator } from './auth.js';
6+
import { User } from './config_types.js';
77

88
/* FIXME: maybe we can extend the User and User.authProvider type to have a proper type.
99
Currently user.authProvider has `any` type and so we don't have a type for user.authProvider.config.

src/azure_auth_test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import { use, expect } from 'chai';
22
import chaiAsPromised from 'chai-as-promised';
33
import { join } from 'node:path';
44

5-
import { User, Cluster } from './config_types';
6-
import { AzureAuth } from './azure_auth';
7-
import { KubeConfig } from './config';
8-
import { HttpMethod, RequestContext } from '.';
5+
import { User, Cluster } from './config_types.js';
6+
import { AzureAuth } from './azure_auth.js';
7+
import { KubeConfig } from './config.js';
8+
import { HttpMethod, RequestContext } from './index.js';
99

1010
use(chaiAsPromised);
1111

src/cache.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import {
99
ListPromise,
1010
ObjectCallback,
1111
UPDATE,
12-
} from './informer';
13-
import { KubernetesObject } from './types';
14-
import { ObjectSerializer } from './serializer';
15-
import { Watch } from './watch';
12+
} from './informer.js';
13+
import { KubernetesObject } from './types.js';
14+
import { ObjectSerializer } from './serializer.js';
15+
import { Watch } from './watch.js';
1616

1717
export interface ObjectCache<T> {
1818
get(name: string, namespace?: string): T | undefined;

src/cache_test.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,23 @@ import chaiAsPromised from 'chai-as-promised';
33

44
import mock from 'ts-mockito';
55

6-
import { V1Namespace, V1NamespaceList, V1ObjectMeta, V1Pod, V1PodList, V1ListMeta } from './api';
7-
import { deleteObject, ListWatch, deleteItems, CacheMap, cacheMapFromList, addOrUpdateObject } from './cache';
8-
import { KubeConfig } from './config';
9-
import { Cluster, Context, User } from './config_types';
10-
import { ListPromise } from './informer';
6+
import { V1Namespace, V1NamespaceList, V1ObjectMeta, V1Pod, V1PodList, V1ListMeta } from './api.js';
7+
import {
8+
deleteObject,
9+
ListWatch,
10+
deleteItems,
11+
CacheMap,
12+
cacheMapFromList,
13+
addOrUpdateObject,
14+
} from './cache.js';
15+
import { KubeConfig } from './config.js';
16+
import { Cluster, Context, User } from './config_types.js';
17+
import { ListPromise } from './informer.js';
1118

1219
use(chaiAsPromised);
1320

1421
import nock from 'nock';
15-
import { Watch } from './watch';
22+
import { Watch } from './watch.js';
1623

1724
const server = 'http://foo.company.com';
1825

src/config.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import net from 'node:net';
55
import path from 'node:path';
66

77
import { Headers, RequestInit } from 'node-fetch';
8-
import { RequestContext } from './api';
9-
import { Authenticator } from './auth';
10-
import { AzureAuth } from './azure_auth';
8+
import { RequestContext } from './api.js';
9+
import { Authenticator } from './auth.js';
10+
import { AzureAuth } from './azure_auth.js';
1111
import {
1212
Cluster,
1313
ConfigOptions,
@@ -19,18 +19,18 @@ import {
1919
newContexts,
2020
newUsers,
2121
User,
22-
} from './config_types';
23-
import { ExecAuth } from './exec_auth';
24-
import { FileAuth } from './file_auth';
25-
import { GoogleCloudPlatformAuth } from './gcp_auth';
22+
} from './config_types.js';
23+
import { ExecAuth } from './exec_auth.js';
24+
import { FileAuth } from './file_auth.js';
25+
import { GoogleCloudPlatformAuth } from './gcp_auth.js';
2626
import {
2727
AuthMethodsConfiguration,
2828
Configuration,
2929
createConfiguration,
3030
SecurityAuthentication,
3131
ServerConfiguration,
32-
} from './gen';
33-
import { OpenIDConnectAuth } from './oidc_auth';
32+
} from './gen/index.js';
33+
import { OpenIDConnectAuth } from './oidc_auth.js';
3434
import WebSocket from 'isomorphic-ws';
3535
import child_process from 'node:child_process';
3636

src/config_test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import chaiAsPromised from 'chai-as-promised';
88
import mockfs from 'mock-fs';
99

1010
import { Headers } from 'node-fetch';
11-
import { HttpMethod } from '.';
11+
import { HttpMethod } from './index.js';
1212
import { assertRequestAgentsEqual, assertRequestOptionsEqual } from '../test/match-buffer';
13-
import { CoreV1Api, RequestContext } from './api';
14-
import { bufferFromFileOrString, findHomeDir, findObject, KubeConfig, makeAbsolutePath } from './config';
15-
import { ActionOnInvalid, Cluster, newClusters, newContexts, newUsers, User } from './config_types';
16-
import { ExecAuth } from './exec_auth';
13+
import { CoreV1Api, RequestContext } from './api.js';
14+
import { bufferFromFileOrString, findHomeDir, findObject, KubeConfig, makeAbsolutePath } from './config.js';
15+
import { ActionOnInvalid, Cluster, newClusters, newContexts, newUsers, User } from './config_types.js';
16+
import { ExecAuth } from './exec_auth.js';
1717

1818
const kcFileName = 'testdata/kubeconfig.yaml';
1919
const kc2FileName = 'testdata/kubeconfig-2.yaml';

src/cp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { WritableStreamBuffer } from 'stream-buffers';
33
import * as tar from 'tar';
44
import tmp from 'tmp-promise';
55

6-
import { KubeConfig } from './config';
7-
import { Exec } from './exec';
6+
import { KubeConfig } from './config.js';
7+
import { Exec } from './exec.js';
88

99
export class Cp {
1010
public execInstance: Exec;

src/cp_test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import querystring from 'node:querystring';
33
import WebSocket from 'isomorphic-ws';
44

55
import { CallAwaiter } from '../test';
6-
import { KubeConfig } from './config';
7-
import { Exec } from './exec';
8-
import { Cp } from './cp';
9-
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler';
6+
import { KubeConfig } from './config.js';
7+
import { Exec } from './exec.js';
8+
import { Cp } from './cp.js';
9+
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler.js';
1010

1111
describe('Cp', () => {
1212
describe('cpFromPod', () => {

src/exec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import WebSocket from 'isomorphic-ws';
22
import querystring from 'node:querystring';
33
import stream from 'stream';
44

5-
import { V1Status } from './api';
6-
import { KubeConfig } from './config';
7-
import { isResizable, ResizableStream, TerminalSizeQueue } from './terminal-size-queue';
8-
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler';
5+
import { V1Status } from './api.js';
6+
import { KubeConfig } from './config.js';
7+
import { isResizable, ResizableStream, TerminalSizeQueue } from './terminal-size-queue.js';
8+
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler.js';
99

1010
export class Exec {
1111
public 'handler': WebSocketInterface;

src/exec_auth.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { OutgoingHttpHeaders } from 'node:http';
22
import https from 'node:https';
33

4-
import { Authenticator } from './auth';
5-
import { User } from './config_types';
4+
import { Authenticator } from './auth.js';
5+
import { User } from './config_types.js';
66

77
import child_process from 'node:child_process';
88

src/exec_auth_test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ use(chaiAsPromised);
55
import https from 'node:https';
66
import { OutgoingHttpHeaders } from 'node:http';
77

8-
import { ExecAuth } from './exec_auth';
9-
import { User } from './config_types';
8+
import { ExecAuth } from './exec_auth.js';
9+
import { User } from './config_types.js';
1010

1111
import child_process from 'node:child_process';
1212

src/exec_test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import { ReadableStreamBuffer, WritableStreamBuffer } from 'stream-buffers';
44
import { anyFunction, anything, capture, instance, mock, verify, when } from 'ts-mockito';
55

66
import { CallAwaiter, matchBuffer, ResizableWriteableStreamBuffer } from '../test';
7-
import { V1Status } from './api';
8-
import { KubeConfig } from './config';
9-
import { Exec } from './exec';
10-
import { TerminalSize } from './terminal-size-queue';
11-
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler';
7+
import { V1Status } from './api.js';
8+
import { KubeConfig } from './config.js';
9+
import { Exec } from './exec.js';
10+
import { TerminalSize } from './terminal-size-queue.js';
11+
import { WebSocketHandler, WebSocketInterface } from './web-socket-handler.js';
1212

1313
describe('Exec', () => {
1414
describe('basic', () => {

src/file_auth.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import fs from 'node:fs';
22
import https from 'node:https';
33

4-
import { Authenticator } from './auth';
5-
import { User } from './config_types';
4+
import { Authenticator } from './auth.js';
5+
import { User } from './config_types.js';
66

77
export class FileAuth implements Authenticator {
88
private token: string | null = null;

src/file_auth_test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { OutgoingHttpHeaders } from 'node:http';
33
import https from 'node:https';
44
import mockfs from 'mock-fs';
55

6-
import { User } from './config_types';
7-
import { FileAuth } from './file_auth';
6+
import { User } from './config_types.js';
7+
import { FileAuth } from './file_auth.js';
88

99
describe('FileAuth', () => {
1010
it('should refresh when null', async () => {

src/gcp_auth.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import proc from 'node:child_process';
22
import https from 'node:https';
3-
import jsonpath from 'jsonpath-plus';
3+
import * as jsonpath from 'jsonpath-plus';
44

5-
import { Authenticator } from './auth';
6-
import { User } from './config_types';
5+
import { Authenticator } from './auth.js';
6+
import { User } from './config_types.js';
77

88
/* FIXME: maybe we can extend the User and User.authProvider type to have a proper type.
99
Currently user.authProvider has `any` type and so we don't have a type for user.authProvider.config.

src/gcp_auth_test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { expect } from 'chai';
22
import { join } from 'node:path';
33

4-
import { User, Cluster } from './config_types';
5-
import { GoogleCloudPlatformAuth } from './gcp_auth';
6-
import { KubeConfig } from './config';
7-
import { HttpMethod, RequestContext } from './gen';
4+
import { User, Cluster } from './config_types.js';
5+
import { GoogleCloudPlatformAuth } from './gcp_auth.js';
6+
import { KubeConfig } from './config.js';
7+
import { HttpMethod, RequestContext } from './gen/index.js';
88
import { Agent } from 'node:https';
99

1010
describe('GoogleCloudPlatformAuth', () => {

src/gen/apis/AdmissionregistrationApi.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
// TODO: better import syntax?
2-
import {BaseAPIRequestFactory, RequiredError, COLLECTION_FORMATS} from './baseapi';
3-
import {Configuration} from '../configuration';
4-
import {RequestContext, HttpMethod, ResponseContext, HttpFile, HttpInfo} from '../http/http';
2+
import {BaseAPIRequestFactory, RequiredError, COLLECTION_FORMATS} from './baseapi.js';
3+
import {Configuration} from '../configuration.js';
4+
import {RequestContext, HttpMethod, ResponseContext, HttpFile, HttpInfo} from '../http/http.js';
55
import FormData from "form-data";
66
import { URLSearchParams } from 'url';
7-
import {ObjectSerializer} from '../models/ObjectSerializer';
8-
import {ApiException} from './exception';
9-
import {canConsumeForm, isCodeInRange} from '../util';
10-
import {SecurityAuthentication} from '../auth/auth';
7+
import {ObjectSerializer} from '../models/ObjectSerializer.js';
8+
import {ApiException} from './exception.js';
9+
import {canConsumeForm, isCodeInRange} from '../util.js';
10+
import {SecurityAuthentication} from '../auth/auth.js';
1111

1212

13-
import { V1APIGroup } from '../models/V1APIGroup';
13+
import { V1APIGroup } from '../models/V1APIGroup.js';
1414

1515
/**
1616
* no description

src/gen/apis/AdmissionregistrationV1Api.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
// TODO: better import syntax?
2-
import {BaseAPIRequestFactory, RequiredError, COLLECTION_FORMATS} from './baseapi';
3-
import {Configuration} from '../configuration';
4-
import {RequestContext, HttpMethod, ResponseContext, HttpFile, HttpInfo} from '../http/http';
2+
import {BaseAPIRequestFactory, RequiredError, COLLECTION_FORMATS} from './baseapi.js';
3+
import {Configuration} from '../configuration.js';
4+
import {RequestContext, HttpMethod, ResponseContext, HttpFile, HttpInfo} from '../http/http.js';
55
import FormData from "form-data";
66
import { URLSearchParams } from 'url';
7-
import {ObjectSerializer} from '../models/ObjectSerializer';
8-
import {ApiException} from './exception';
9-
import {canConsumeForm, isCodeInRange} from '../util';
10-
import {SecurityAuthentication} from '../auth/auth';
11-
12-
13-
import { V1APIResourceList } from '../models/V1APIResourceList';
14-
import { V1DeleteOptions } from '../models/V1DeleteOptions';
15-
import { V1MutatingWebhookConfiguration } from '../models/V1MutatingWebhookConfiguration';
16-
import { V1MutatingWebhookConfigurationList } from '../models/V1MutatingWebhookConfigurationList';
17-
import { V1Status } from '../models/V1Status';
18-
import { V1ValidatingAdmissionPolicy } from '../models/V1ValidatingAdmissionPolicy';
19-
import { V1ValidatingAdmissionPolicyBinding } from '../models/V1ValidatingAdmissionPolicyBinding';
20-
import { V1ValidatingAdmissionPolicyBindingList } from '../models/V1ValidatingAdmissionPolicyBindingList';
21-
import { V1ValidatingAdmissionPolicyList } from '../models/V1ValidatingAdmissionPolicyList';
22-
import { V1ValidatingWebhookConfiguration } from '../models/V1ValidatingWebhookConfiguration';
23-
import { V1ValidatingWebhookConfigurationList } from '../models/V1ValidatingWebhookConfigurationList';
7+
import {ObjectSerializer} from '../models/ObjectSerializer.js';
8+
import {ApiException} from './exception.js';
9+
import {canConsumeForm, isCodeInRange} from '../util.js';
10+
import {SecurityAuthentication} from '../auth/auth.js';
11+
12+
13+
import { V1APIResourceList } from '../models/V1APIResourceList.js';
14+
import { V1DeleteOptions } from '../models/V1DeleteOptions.js';
15+
import { V1MutatingWebhookConfiguration } from '../models/V1MutatingWebhookConfiguration.js';
16+
import { V1MutatingWebhookConfigurationList } from '../models/V1MutatingWebhookConfigurationList.js';
17+
import { V1Status } from '../models/V1Status.js';
18+
import { V1ValidatingAdmissionPolicy } from '../models/V1ValidatingAdmissionPolicy.js';
19+
import { V1ValidatingAdmissionPolicyBinding } from '../models/V1ValidatingAdmissionPolicyBinding.js';
20+
import { V1ValidatingAdmissionPolicyBindingList } from '../models/V1ValidatingAdmissionPolicyBindingList.js';
21+
import { V1ValidatingAdmissionPolicyList } from '../models/V1ValidatingAdmissionPolicyList.js';
22+
import { V1ValidatingWebhookConfiguration } from '../models/V1ValidatingWebhookConfiguration.js';
23+
import { V1ValidatingWebhookConfigurationList } from '../models/V1ValidatingWebhookConfigurationList.js';
2424

2525
/**
2626
* no description

0 commit comments

Comments
 (0)