Skip to content

Commit 6924c5a

Browse files
gkrajniakgkrajniaksaprobertIsaac
authored
feat: switch to use ECMAScript Modules (#215)
This change leverages the usage of state of the art ECMAScript Modules system for the server-lib --------- Co-authored-by: Grzegorz Krajniak <[email protected]> Co-authored-by: Robert Isaac <[email protected]>
1 parent 296c7c3 commit 6924c5a

File tree

72 files changed

+264
-247
lines changed

Some content is hidden

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

72 files changed

+264
-247
lines changed

base.jest.config.ts renamed to base.jest.config.cjs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const baseConfig = {
1+
module.exports = {
22
testEnvironment: 'node',
33
coverageReporters: ['text', 'cobertura', 'lcov'],
44
transform: {
@@ -9,6 +9,7 @@ const baseConfig = {
99
},
1010
],
1111
},
12+
moduleNameMapper: {
13+
'^(\\.{1,2}/.*)\\.js$': '$1',
14+
},
1215
};
13-
14-
export { baseConfig };

integration-tests/auth.integration-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AuthTokenService, PortalModule } from '../src';
1+
import { AuthTokenService, PortalModule } from '../src/index.js';
22
import { INestApplication, ValidationPipe } from '@nestjs/common';
33
import { Test, TestingModule } from '@nestjs/testing';
44
import request from 'supertest';

integration-tests/config.integration-spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
EntityAccessForbiddenException,
23
EntityNotFoundException,
34
FEATURE_TOGGLES_INJECTION_TOKEN,
45
FeatureTogglesProvider,
@@ -8,16 +9,15 @@ import {
89
SERVICE_PROVIDER_INJECTION_TOKEN,
910
ServiceProvider,
1011
ServiceProviderService,
11-
} from '../src';
12-
import { EntityAccessForbiddenException } from '../src/config/context/entity-context-provider';
12+
} from '../src/index.js';
1313
import {
1414
ForbiddenException,
1515
INestApplication,
1616
NotFoundException,
1717
ValidationPipe,
1818
} from '@nestjs/common';
1919
import { Test, TestingModule } from '@nestjs/testing';
20-
import { Request } from 'express';
20+
import type { Request } from 'express';
2121
import { mock } from 'jest-mock-extended';
2222
import request from 'supertest';
2323

integration-tests/env.integration-spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { EnvVariablesService } from '../src';
2-
import { integrationTestModule } from './integration-test-module';
1+
import { EnvVariablesService } from '../src/index.js';
2+
import { integrationTestModule } from './integration-test-module.js';
33
import { INestApplication, Type } from '@nestjs/common';
44
import request from 'supertest';
55

integration-tests/health.integration-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { integrationTestModule } from './integration-test-module';
1+
import { integrationTestModule } from './integration-test-module.js';
22
import { INestApplication } from '@nestjs/common';
33
import request from 'supertest';
44

integration-tests/jest.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { baseConfig } from '../base.jest.config';
1+
const baseConfig = require( '../base.jest.config.cjs');
22

33
module.exports = {
44
...baseConfig,

integration-tests/localnodes.integration-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
ContentConfigurationValidatorService,
44
LuigiNode,
55
PortalModule,
6-
} from '../src';
6+
} from '../src/index.js';
77
import { INestApplication, ValidationPipe } from '@nestjs/common';
88
import { Test, TestingModule } from '@nestjs/testing';
99
import { AxiosResponse } from 'axios';

integration-tests/logout.integration-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { integrationTestModule } from './integration-test-module';
1+
import { integrationTestModule } from './integration-test-module.js';
22
import { INestApplication } from '@nestjs/common';
33
import request from 'supertest';
44

jest.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { baseConfig } from './base.jest.config';
1+
const baseConfig = require( './base.jest.config.cjs');
22

33
module.exports = {
44
...baseConfig,

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,6 @@
7373
"typescript": "5.8.2",
7474
"wait-on": "^8.0.0",
7575
"yalc": "^1.0.0-pre.53"
76-
}
76+
},
77+
"type": "module"
7778
}

src/auth/auth-token.service.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { EnvService } from '../env';
2-
import { AUTH_CALLBACK_INJECTION_TOKEN } from '../injection-tokens';
3-
import { PortalModule } from '../portal.module';
4-
import { AuthTokenData, AuthTokenService } from './auth-token.service';
5-
import { AuthCallback } from './auth.callback';
61
import { Test, TestingModule } from '@nestjs/testing';
7-
import { Request, Response } from 'express';
2+
import type { Request, Response } from 'express';
83
import { mock } from 'jest-mock-extended';
94
import nock from 'nock';
5+
import { EnvService } from '../env/index.js';
6+
import { AUTH_CALLBACK_INJECTION_TOKEN } from '../injection-tokens.js';
7+
import { PortalModule } from '../portal.module.js';
8+
import { AuthTokenData, AuthTokenService } from './auth-token.service.js';
9+
import { AuthCallback } from './auth.callback.js';
1010

1111
describe('AuthTokenService', () => {
1212
let service: AuthTokenService;

src/auth/auth-token.service.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { EnvService, ServerAuthVariables } from '../env/env.service';
2-
import { CookiesService } from '../services';
1+
import { EnvService, ServerAuthVariables } from '../env/env.service.js';
2+
import { CookiesService } from '../services/index.js';
33
import { HttpService } from '@nestjs/axios';
44
import { Injectable } from '@nestjs/common';
55
import { AxiosError } from 'axios';
6-
import { Request, Response } from 'express';
6+
import type { Request, Response } from 'express';
77
import { catchError, firstValueFrom } from 'rxjs';
88

99
export interface AuthTokenData {

src/auth/auth.callback.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { AuthTokenData } from './auth-token.service';
2-
import { NoopAuthCallback } from './auth.callback';
3-
import { Request, Response } from 'express';
1+
import { AuthTokenData } from './auth-token.service.js';
2+
import { NoopAuthCallback } from './auth.callback.js';
3+
import type { Request, Response } from 'express';
44

55
describe('NoopAuthCallback', () => {
66
let callback: NoopAuthCallback;

src/auth/auth.callback.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { AuthTokenData } from './auth-token.service';
1+
import { AuthTokenData } from './auth-token.service.js';
22
import { Injectable } from '@nestjs/common';
3-
import { Request, Response } from 'express';
3+
import type { Request, Response } from 'express';
44

55
export interface AuthCallback {
66
handleSuccess(

src/auth/auth.controller.spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { AUTH_CALLBACK_INJECTION_TOKEN } from '../injection-tokens';
2-
import { PortalModule } from '../portal.module';
3-
import { CookiesService } from '../services';
4-
import { AuthTokenData, AuthTokenService } from './auth-token.service';
5-
import { AuthCallback } from './auth.callback';
6-
import { AuthController } from './auth.controller';
1+
import { AUTH_CALLBACK_INJECTION_TOKEN } from '../injection-tokens.js';
2+
import { PortalModule } from '../portal.module.js';
3+
import { CookiesService } from '../services/index.js';
4+
import { AuthTokenData, AuthTokenService } from './auth-token.service.js';
5+
import { AuthCallback } from './auth.callback.js';
6+
import { AuthController } from './auth.controller.js';
77
import { Test, TestingModule } from '@nestjs/testing';
8-
import { Request, Response } from 'express';
8+
import type { Request, Response } from 'express';
99
import { mock } from 'jest-mock-extended';
1010

1111
describe('AuthController', () => {

src/auth/auth.controller.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { AUTH_CALLBACK_INJECTION_TOKEN } from '../injection-tokens';
2-
import { CookiesService, RequestCodeParamGuard } from '../services';
3-
import { AuthTokenData, AuthTokenService } from './auth-token.service';
4-
import { AuthCallback } from './auth.callback';
1+
import { AUTH_CALLBACK_INJECTION_TOKEN } from '../injection-tokens.js';
2+
import { CookiesService, RequestCodeParamGuard } from '../services/index.js';
3+
import { AuthTokenData, AuthTokenService } from './auth-token.service.js';
4+
import { AuthCallback } from './auth.callback.js';
55
import {
66
Controller,
77
Get,
@@ -12,7 +12,7 @@ import {
1212
Res,
1313
UseGuards,
1414
} from '@nestjs/common';
15-
import { Request, Response } from 'express';
15+
import type { Request, Response } from 'express';
1616

1717
@Controller('/rest/auth')
1818
export class AuthController {

src/auth/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export { AuthController } from './auth.controller';
2-
export * from './auth.callback';
3-
export { AuthTokenService, AuthTokenData } from './auth-token.service';
4-
export { AuthCallback } from './auth.callback';
1+
export { AuthController } from './auth.controller.js';
2+
export * from './auth.callback.js';
3+
export { AuthTokenService, AuthTokenData } from './auth-token.service.js';
4+
export { AuthCallback } from './auth.callback.js';

src/config/config.controller.spec.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import {
2+
ENTITY_CONTEXT_INJECTION_TOKEN,
23
FEATURE_TOGGLES_INJECTION_TOKEN,
34
PORTAL_CONTEXT_INJECTION_TOKEN,
4-
} from '../injection-tokens';
5-
import { PortalModule } from '../portal.module';
6-
import { HeaderParserService } from '../services';
7-
import { ConfigController } from './config.controller';
5+
} from '../injection-tokens.js';
6+
import { PortalModule } from '../portal.module.js';
7+
import { HeaderParserService } from '../services/index.js';
8+
import { ConfigController } from './config.controller.js';
89
import {
910
EntityAccessForbiddenException,
1011
EntityNotFoundException,
11-
} from './context/entity-context-provider';
12-
import { FeatureTogglesProvider } from './context/feature-toggles-provider';
13-
import { PortalContextProvider } from './context/portal-context-provider';
14-
import { LuigiConfigNodesService } from './luigi/luigi-config-nodes/luigi-config-nodes.service';
15-
import { ServiceProvider } from './model/luigi.node';
12+
} from './context/entity-context-provider.js';
13+
import { FeatureTogglesProvider } from './context/feature-toggles-provider.js';
14+
import { PortalContextProvider } from './context/portal-context-provider.js';
15+
import { LuigiConfigNodesService } from './luigi/luigi-config-nodes/luigi-config-nodes.service.js';
16+
import { ServiceProvider } from './model/luigi.node.js';
1617
import { ForbiddenException, NotFoundException } from '@nestjs/common';
1718
import { Test, TestingModule } from '@nestjs/testing';
18-
import { Request, Response } from 'express';
19+
import type { Request, Response } from 'express';
1920
import { mock } from 'jest-mock-extended';
2021

2122
const MockEntityProvider = 'MockEntityProvider';

src/config/config.controller.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ import {
22
ENTITY_CONTEXT_INJECTION_TOKEN,
33
FEATURE_TOGGLES_INJECTION_TOKEN,
44
PORTAL_CONTEXT_INJECTION_TOKEN,
5-
} from '../injection-tokens';
6-
import { HeaderParserService } from '../services';
5+
} from '../injection-tokens.js';
6+
import { HeaderParserService } from '../services/index.js';
77
import {
88
EntityAccessForbiddenException,
99
EntityContextProvider,
1010
EntityContextProviders,
1111
EntityNotFoundException,
12-
} from './context/entity-context-provider';
13-
import { FeatureTogglesProvider } from './context/feature-toggles-provider';
14-
import { PortalContextProvider } from './context/portal-context-provider';
15-
import { LuigiConfigNodesService } from './luigi/luigi-config-nodes/luigi-config-nodes.service';
16-
import { EntityParams } from './model/entity';
17-
import { PortalConfig } from './model/luigi.node';
12+
} from './context/entity-context-provider.js';
13+
import { FeatureTogglesProvider } from './context/feature-toggles-provider.js';
14+
import { PortalContextProvider } from './context/portal-context-provider.js';
15+
import { LuigiConfigNodesService } from './luigi/luigi-config-nodes/luigi-config-nodes.service.js';
16+
import { EntityParams } from './model/entity.js';
17+
import { PortalConfig } from './model/luigi.node.js';
1818
import {
1919
Controller,
2020
ForbiddenException,
@@ -26,9 +26,10 @@ import {
2626
Param,
2727
Req,
2828
Res,
29+
Optional,
2930
} from '@nestjs/common';
3031
import { ModuleRef } from '@nestjs/core';
31-
import { Request, Response } from 'express';
32+
import type { Request, Response } from 'express';
3233

3334
@Controller('/rest/config')
3435
export class ConfigController {

src/config/context/feature-toggles-provider.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { EnvService } from '../../env/env.service';
1+
import { EnvService } from '../../env/env.service.js';
22
import {
33
EnvFeatureTogglesProvider,
44
FeatureTogglesProvider,
5-
} from './feature-toggles-provider';
5+
} from './feature-toggles-provider.js';
66
import { Test, TestingModule } from '@nestjs/testing';
77

88
describe('EnvFeatureTogglesProvider', () => {

src/config/context/feature-toggles-provider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { EnvService } from '../../env/env.service';
1+
import { EnvService } from '../../env/env.service.js';
22
import { Injectable } from '@nestjs/common';
33

44
export interface FeatureTogglesProvider {

src/config/context/openmfp-portal-context.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { PortalContextProvider } from './portal-context-provider';
1+
import { PortalContextProvider } from './portal-context-provider.js';
22
import { Injectable } from '@nestjs/common';
33

44
@Injectable()

src/config/context/portal-context-provider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { ServiceProvider } from '../model/luigi.node';
2-
import { Request, Response } from 'express';
1+
import { ServiceProvider } from '../model/luigi.node.js';
2+
import type { Request, Response } from 'express';
33

44
export interface PortalContextProvider {
55
getContextValues(

src/config/context/service-provider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { ContentConfiguration } from '../model/content-configuration';
2-
import { StackSearch } from '../model/luigi.node';
1+
import { ContentConfiguration } from '../model/content-configuration.js';
2+
import { StackSearch } from '../model/luigi.node.js';
33

44
export interface HelpCenterData {
55
stackSearch?: StackSearch;

src/config/index.ts

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
export {
22
ServiceProviderResponse,
33
ServiceProviderService,
4+
RawServiceProvider,
45
EmptyServiceProviderService,
56
HelpCenterData,
6-
RawServiceProvider,
7-
} from './context/service-provider';
8-
export * from './model/content-configuration';
9-
export * from './model/content-configuration-validation';
10-
export * from './model/luigi.node';
11-
export * from './model/breadcrumb-badge';
7+
} from './context/service-provider.js';
8+
export * from './model/content-configuration.js';
9+
export * from './model/content-configuration-validation.js';
10+
export * from './model/luigi.node.js';
11+
export * from './model/breadcrumb-badge.js';
12+
export * from './model/entity.js';
1213
export {
13-
EntityNotFoundException,
1414
EntityContextProvider,
15-
} from './context/entity-context-provider';
16-
export { PortalContextProvider } from './context/portal-context-provider';
17-
export { OpenmfpPortalContextService } from './context/openmfp-portal-context.service';
18-
export { FeatureTogglesProvider } from './context/feature-toggles-provider';
19-
export { IntentResolveService } from './luigi/luigi-data/intent-resolve.service';
20-
export { ConfigController } from './config.controller';
21-
export { EntityContextProviders } from './context/entity-context-provider';
22-
export { EnvFeatureTogglesProvider } from './context/feature-toggles-provider';
23-
export { LuigiConfigNodesService } from './luigi/luigi-config-nodes/luigi-config-nodes.service';
24-
export { LuigiDataService } from './luigi/luigi-data/luigi-data.service';
25-
export { ContentConfigurationLuigiDataService } from './luigi/luigi-data/content-configuration-luigi-data.service';
26-
export { ContentConfigurationValidatorService } from './luigi/luigi-data/content-configuration-validator.service';
15+
EntityContextProviders,
16+
EntityNotFoundException,
17+
EntityAccessForbiddenException,
18+
} from './context/entity-context-provider.js';
19+
export { PortalContextProvider } from './context/portal-context-provider.js';
20+
export { OpenmfpPortalContextService } from './context/openmfp-portal-context.service.js';
21+
export { FeatureTogglesProvider } from './context/feature-toggles-provider.js';
22+
export { IntentResolveService } from './luigi/luigi-data/intent-resolve.service.js';
23+
export { ConfigController } from './config.controller.js';
24+
export { EnvFeatureTogglesProvider } from './context/feature-toggles-provider.js';
25+
export { LuigiConfigNodesService } from './luigi/luigi-config-nodes/luigi-config-nodes.service.js';
26+
export { LuigiDataService } from './luigi/luigi-data/luigi-data.service.js';
27+
export { ContentConfigurationLuigiDataService } from './luigi/luigi-data/content-configuration-luigi-data.service.js';
28+
export { ContentConfigurationValidatorService } from './luigi/luigi-data/content-configuration-validator.service.js';

src/config/luigi/luigi-config-nodes/luigi-config-nodes.service.spec.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
12
import {
3+
AUTH_CALLBACK_INJECTION_TOKEN,
24
LUIGI_DATA_SERVICE_INJECTION_TOKEN,
35
SERVICE_PROVIDER_INJECTION_TOKEN,
4-
} from '../../../injection-tokens';
5-
import { PortalModule } from '../../../portal.module';
6+
} from '../../../injection-tokens.js';
7+
import { PortalModule } from '../../../portal.module.js';
68
import {
79
RawServiceProvider,
810
ServiceProviderService,
9-
} from '../../context/service-provider';
10-
import { ContentConfiguration } from '../../model/content-configuration';
11-
import { LuigiNode } from '../../model/luigi.node';
12-
import { LuigiDataService } from '../luigi-data/luigi-data.service';
13-
import { LuigiConfigNodesService } from './luigi-config-nodes.service';
14-
import { Test, TestingModule } from '@nestjs/testing';
11+
} from '../../context/service-provider.js';
12+
import { ContentConfiguration } from '../../model/content-configuration.js';
13+
import { LuigiNode } from '../../model/luigi.node.js';
14+
import { LuigiDataService } from '../luigi-data/luigi-data.service.js';
15+
import { LuigiConfigNodesService } from './luigi-config-nodes.service.js';
1516
import { mock } from 'jest-mock-extended';
1617

1718
describe('LuigiConfigNodesService', () => {

0 commit comments

Comments
 (0)