Skip to content

Commit 28213aa

Browse files
committed
chore: fixup linter/jest config to handle esm libs
1 parent f1735f3 commit 28213aa

43 files changed

Lines changed: 154 additions & 99 deletions

Some content is hidden

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

meteor/jest.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ const path = require('path')
33
const commonConfig = {
44
modulePaths: ['<rootDir>/node_modules/'],
55
moduleNameMapper: {
6+
'^@sofie-automation/shared-lib/dist/(.+).js$': '<rootDir>/../packages/shared-lib/src/$1',
7+
'^@sofie-automation/shared-lib/dist/(.+)$': '<rootDir>/../packages/shared-lib/src/$1',
68
// Ensure libraries that would match the extension rule are still resolved
79
'bignumber.js': 'bignumber.js',
810
// Drop file extensions in imports

packages/blueprints-integration/jest.config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@ module.exports = {
99
diagnostics: {
1010
ignoreCodes: [
1111
151002, // hybrid module kind (Node16/18/Next)
12+
2823, // Import attributes not supported in CJS mode (ts-jest forces CJS, emits require() anyway)
1213
],
1314
},
1415
},
1516
],
1617
},
1718
moduleNameMapper: {
19+
'^@sofie-automation/shared-lib/dist/(.+)$': '<rootDir>/../shared-lib/src/$1',
1820
'(.+)\\.js$': '$1',
1921
},
2022
testMatch: ['**/__tests__/**/*.spec.(ts|js)'],
21-
testPathIgnorePatterns: ['integrationTests'],
23+
testPathIgnorePatterns: ['integrationTests', 'dist'],
2224
testEnvironment: 'node',
2325
coverageThreshold: {
2426
global: {

packages/blueprints-integration/tsconfig.build.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
"resolveJsonModule": true,
1414
"types": ["node"],
1515
"composite": true,
16-
"module": "node20"
16+
"module": "node20",
17+
"esModuleInterop": true
1718
},
1819
"references": [
1920
{

packages/corelib/jest.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ module.exports = {
99
diagnostics: {
1010
ignoreCodes: [
1111
151002, // hybrid module kind (Node16/18/Next)
12+
2823, // Import attributes not supported in CJS mode (ts-jest forces CJS, emits require() anyway)
1213
],
1314
},
1415
},
1516
],
1617
},
1718
moduleNameMapper: {
19+
'^@sofie-automation/shared-lib/dist/(.+)$': '<rootDir>/../shared-lib/src/$1',
1820
'(.+)\\.js$': '$1',
1921
},
2022
testMatch: ['**/__tests__/**/*.(spec|test).(ts|js)'],

packages/eslint.config.mjs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,20 @@ extendedRules.push(
6262
files: ['webui/src/**/*', 'shared-lib/src/**/*', 'server-core-integration/src/**/*'],
6363
rules: {
6464
// Override default behaviour for ESM and verbatimModuleSyntax
65-
'n/no-missing-import': ['error', { ignoreTypeImport: true }],
65+
'n/no-missing-import': [
66+
'error',
67+
{
68+
ignoreTypeImport: true,
69+
resolverConfig: {
70+
// The default aliases drop the js version, breaking the /dist imports
71+
extensionAlias: {
72+
'.js': ['.ts', '.tsx', '.js'],
73+
'.cjs': ['.cts', '.cjs'],
74+
'.mjs': ['.mts', '.mjs'],
75+
},
76+
},
77+
},
78+
],
6679
'no-duplicate-imports': 'error',
6780
'@typescript-eslint/consistent-type-imports': ['error', { fixStyle: 'inline-type-imports' }],
6881
'@typescript-eslint/no-import-type-side-effects': 'error',

packages/job-worker/jest.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ module.exports = {
1717
6133, // Declared but not used
1818
6192, // All imports are unused
1919
151002, // hybrid module kind (Node16/18/Next)
20+
2823, // Import attributes not supported in CJS mode (ts-jest forces CJS, emits require() anyway)
2021
],
2122
},
2223
},
2324
],
2425
'^.+\\.(js|jsx|mjs)$': path.resolve('./scripts/babel-jest.mjs'),
2526
},
2627
moduleNameMapper: {
28+
'^@sofie-automation/shared-lib/dist/(.+)$': '<rootDir>/../shared-lib/src/$1',
2729
'(.+)\\.js$': '$1',
2830
},
2931
transformIgnorePatterns: ['node_modules/(?!(debounce-fn|p-queue|p-timeout)/)', '\\.pnp\\.[^\\/]+$'],

packages/live-status-gateway/jest.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,17 @@ module.exports = {
99
diagnostics: {
1010
ignoreCodes: [
1111
151002, // hybrid module kind (Node16/18/Next)
12+
2823, // Import attributes not supported in CJS mode (ts-jest forces CJS, emits require() anyway)
1213
],
1314
},
1415
},
1516
],
1617
},
1718
moduleNameMapper: {
19+
// Jest is not happy with esm modules, we need to point it to the source files instead
20+
'^@sofie-automation/shared-lib/dist/(.+)\\.js$': '<rootDir>/../shared-lib/src/$1',
21+
'^@sofie-automation/shared-lib/dist/(.+)$': '<rootDir>/../shared-lib/src/$1',
22+
'^@sofie-automation/server-core-integration$': '<rootDir>/../server-core-integration/src/index.ts',
1823
'(.+)\\.js$': '$1',
1924
},
2025
testMatch: ['**/__tests__/**/*.(spec|test).(ts|js)'],

packages/live-status-gateway/src/collections/rundownContentHandlerBase.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import { RundownId } from '@sofie-automation/corelib/dist/dataModel/Ids'
66
import { DBRundownPlaylist } from '@sofie-automation/corelib/dist/dataModel/RundownPlaylist/RundownPlaylist'
77
import { CollectionHandlers } from '../liveStatusServer.js'
88
import { PickKeys } from '@sofie-automation/shared-lib/dist/lib/types'
9-
import { CollectionDocCheck } from '@sofie-automation/server-core-integration'
10-
import { ParametersOfFunctionOrNever } from '@sofie-automation/server-core-integration/dist/lib/subscriptions'
9+
import type { CollectionDocCheck, ParametersOfFunctionOrNever } from '@sofie-automation/server-core-integration'
1110

1211
const PLAYLIST_KEYS = ['currentPartInfo', 'nextPartInfo'] as const
1312
type Playlist = PickKeys<DBRundownPlaylist, typeof PLAYLIST_KEYS>

packages/live-status-gateway/src/coreHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
PeripheralDevicePubSubTypes,
1313
SubscriptionId,
1414
stringifyError,
15+
ParametersOfFunctionOrNever,
1516
} from '@sofie-automation/server-core-integration'
1617
import { DeviceConfig } from './connector.js'
1718
import { Logger } from 'winston'
@@ -26,7 +27,6 @@ import { StatusCode } from '@sofie-automation/shared-lib/dist/lib/status'
2627
import { PeripheralDeviceCommand } from '@sofie-automation/shared-lib/dist/core/model/PeripheralDeviceCommand'
2728
import { LiveStatusGatewayConfig } from '@sofie-automation/shared-lib/dist/generated/LiveStatusGatewayOptionsTypes'
2829
import { CorelibPubSubTypes, CorelibPubSubCollections } from '@sofie-automation/corelib/dist/pubsub'
29-
import { ParametersOfFunctionOrNever } from '@sofie-automation/server-core-integration/dist/lib/subscriptions'
3030

3131
export interface CoreConfig {
3232
host: string

packages/live-status-gateway/src/publicationCollection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import {
55
CollectionDocCheck,
66
PeripheralDevicePubSubCollections,
77
ProtectedString,
8+
ParametersOfFunctionOrNever,
89
} from '@sofie-automation/server-core-integration'
9-
import { ParametersOfFunctionOrNever } from '@sofie-automation/server-core-integration/dist/lib/subscriptions'
1010
import { Logger } from 'winston'
1111
import { CollectionBase, DEFAULT_THROTTLE_PERIOD_MS } from './collectionBase.js'
1212
import { CoreHandler } from './coreHandler.js'

0 commit comments

Comments
 (0)