Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,19 @@ module.exports = {
},
],
'jest/lowercase-name': 0,
'jest/max-expects': 0,
'jest/padding-around-all': 0,
'jest/padding-around-before-each-blocks': 0,
'jest/padding-around-describe-blocks': 0,
'jest/padding-around-expect-groups': 0,
'jest/padding-around-test-blocks': 0,
'jest/prefer-ending-with-an-expect': 0,
'jest/prefer-importing-jest-globals': 0,
'jest/prefer-jest-mocked': 0,
'jest/prefer-lowercase-title': 0,
'jest/prefer-mock-promise-shorthand': 0,
'jest/require-hook': 0,
'jest/unbound-method': 0,
'jsdoc/check-tag-names': [
1,
{
Expand Down Expand Up @@ -94,6 +105,7 @@ module.exports = {
'no-underscore-dangle': 0,
'no-shadow': 0,
'@typescript-eslint/no-shadow': ['error'],
'@typescript-eslint/no-unused-vars': ['error', { caughtErrors: 'none' }],
},
settings: {
'import/parsers': {
Expand Down
2 changes: 1 addition & 1 deletion api-extractor.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"reportTempFolder": "<projectFolder>/docs/temp/"
},
"compiler": {
"tsconfigFilePath": "./tsconfig.json"
"tsconfigFilePath": "./tsconfig.api-extractor.json"
},
"docModel": {
"enabled": true,
Expand Down
2 changes: 1 addition & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
/** @type {import('jest').Config} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
Expand Down
37 changes: 16 additions & 21 deletions karma.conf.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// eslint-disable-next-line
const typescriptTransform = require('karma-typescript-es6-transform');
const { esbuildPluginIstanbul } = require('esbuild-plugin-istanbul');
// eslint-disable-next-line
process.env.CHROME_BIN = require('puppeteer').executablePath();

Expand Down Expand Up @@ -281,40 +281,35 @@ module.exports = (config) => {
process.exit(1);
}

const files = ['src/**/*.ts'];
const testPattern = config.integration ? 'src/**/*.integration-test.ts' : 'src/**/*.test.ts';
const files = [testPattern];

const karmaConfig = {
basePath: '.',
frameworks: ['mocha', 'chai', 'karma-typescript'],
frameworks: ['mocha', 'chai'],
files,
preprocessors: {
'src/**/*.ts': ['karma-typescript'],
[testPattern]: ['esbuild'],
},
exclude: [],
reporters: ['junit', 'karma-typescript', 'saucelabs', 'mocha', 'coverage'],
reporters: ['junit', 'saucelabs', 'mocha', 'coverage'],
port: 9876,
logLevel: config.DEBUG,
autoWatch: false,
singleRun: true,
concurrency: Infinity,
timeout,
captureTimeout: 240000,
karmaTypescriptConfig: {
tsconfig: './tsconfig.json',
compilerOptions: {
allowJs: true,
module: 'commonjs',
resolveJsonModule: false,
},
bundlerOptions: {
debug: true,
addNodeGlobals: false,
entrypoints: config.integration ? /\.integration-test\.ts/i : /\.test\.ts$/i,
transforms: [typescriptTransform()],
},
coverageOptions: {
exclude: [/\.(d|spec|test)\.ts$/i],
},
esbuild: {
singleBundle: true,
target: 'es2015',
plugins: [
esbuildPluginIstanbul({
filter: /\.ts$/,
Comment thread
SomeBody16 marked this conversation as resolved.
Outdated
loader: 'ts',
name: 'istanbul-loader-ts',
}),
],
},
sauceLabs: {
build: buildName,
Expand Down
36 changes: 21 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,45 +26,47 @@
"devDependencies": {
"@commitlint/cli": "^12.1.4",
"@commitlint/config-conventional": "^12.1.4",
"@microsoft/api-documenter": "^7.13.33",
"@microsoft/api-extractor": "^7.18.4",
"@microsoft/api-documenter": "^7.30.10",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep API Documenter compatible with Node 18.18

On Node 18.18.x, which the package still advertises via engines.node, a Yarn 1 install remains blocked because this API Documenter upgrade locks @rushstack/node-core-library@5.23.3, whose engine range starts at Node 18.20.3. The minimatch override from the earlier fix does not address this fresh lockfile dependency, so either retain a Documenter graph compatible with 18.18 or raise the declared Node minimum.

Useful? React with 👍 / 👎.

"@microsoft/api-extractor": "7.52.9",
"@rollup/plugin-commonjs": "^20.0.0",
"@rollup/plugin-node-resolve": "^13.0.4",
"@semantic-release/changelog": "^6.0.1",
"@semantic-release/git": "^10.0.1",
"@semantic-release/release-notes-generator": "^10.0.3",
"@types/chai": "^4.2.21",
"@types/express": "^4.17.13",
"@types/jest": "^27.0.1",
"@types/jest": "^29.5.14",
"@types/lodash": "^4.14.171",
"@types/mocha": "^9.0.0",
"@types/node": "^22.0.0",
"@types/sdp-transform": "^2.4.5",
"@typescript-eslint/eslint-plugin": "^4.28.2",
"@typescript-eslint/parser": "^4.28.2",
"@typescript-eslint/eslint-plugin": "^8.65.0",
"@typescript-eslint/parser": "^8.65.0",
"chai": "^4.3.4",
"cspell": "^5.6.6",
"eslint": "^7.29.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint": "^8.57.1",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.24.0",
"eslint-plugin-jest": "^24.3.6",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jest": "^28.14.0",
"eslint-plugin-jsdoc": "^43.0.0",
"eslint-plugin-prettier": "^3.4.0",
"esbuild": "^0.28.1",
"esbuild-plugin-istanbul": "^0.3.0",
"husky": "^7.0.0",
"jest": "^27.0.6",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"karma": "6.3.15",
"karma-chai": "^0.1.0",
"karma-chrome-launcher": "^3.1.0",
"karma-coverage": "^2.0.3",
"karma-esbuild": "^2.3.0",
"karma-firefox-launcher": "^2.1.1",
"karma-junit-reporter": "^2.0.1",
"karma-mocha": "^2.0.1",
"karma-mocha-reporter": "^2.2.5",
"karma-safari-launcher": "^1.0.0",
"karma-sauce-launcher": "^4.3.6",
"karma-typescript": "^5.5.2",
"karma-typescript-es6-transform": "^5.5.2",
"lint-staged": "^11.1.1",
"mocha": "^9.1.2",
"npm-run-all": "^4.1.5",
Expand All @@ -75,9 +77,9 @@
"rollup-plugin-terser": "^7.0.2",
"rollup-plugin-typescript2": "^0.31.1",
"semantic-release": "^19.0.2",
"ts-jest": "^27.0.5",
"ts-jest": "^29.4.12",
"ts-loader": "^9.2.3",
"typescript": "^5.5.2",
"typescript": "^6.0.3",
"yarn": "^1.22.22"
},
"scripts": {
Expand All @@ -86,7 +88,7 @@
"compile": "rollup -c ./rollup.config.js",
"docs": "npm run docs:clean && npm run docs:extract && npm run docs:generate",
"docs:clean": "rimraf ./docs",
"docs:extract": "api-extractor run -c ./api-extractor.json",
"docs:extract": "api-extractor run --local -c ./api-extractor.json",
"docs:generate": "api-documenter markdown -i ./docs/temp -o ./docs",
"fix": "run-s fix:*",
"fix:prettier": "prettier \"src/**/*.ts\" --write",
Expand Down Expand Up @@ -119,6 +121,10 @@
"typed-emitter": "^2.1.0",
"webrtc-adapter": "^8.1.2"
},
"resolutions": {
"**/@typescript-eslint/typescript-estree/minimatch": "9.0.5",
"**/@typescript-eslint/visitor-keys/eslint-visitor-keys": "4.2.1"
},
"lint-staged": {
"*.ts": [
"prettier --write",
Expand Down
6 changes: 3 additions & 3 deletions src/peer-connection-utils.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import { getLocalDescriptionWithIceCandidates } from './peer-connection-utils';

jest.mock('./peer-connection');

const dummyLocalDesc = {
const dummyLocalDesc: RTCSessionDescription = {
type: 'offer',
sdp: 'sdp with candidates',
toJSON: () => undefined,
} as RTCSessionDescription;
toJSON: () => ({ type: 'offer', sdp: 'sdp with candidates' }),
};

describe('getLocalDescriptionWithIceCandidates', () => {
const mockPc = mocked(new PeerConnection(), true);
Expand Down
15 changes: 7 additions & 8 deletions src/peer-connection.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { BrowserInfo } from '@webex/web-capabilities';
import { MockedObjectDeep } from 'ts-jest';
import { ConnectionStateHandler } from './connection-state-handler';
import { mocked } from './mocks/mock';
import { MaybeMockedDeep, mocked } from './mocks/mock';
import { RTCPeerConnectionStub } from './mocks/rtc-peer-connection-stub';
import { PeerConnection } from './peer-connection';
import { createRTCPeerConnection } from './rtc-peer-connection-factory';
Expand Down Expand Up @@ -266,7 +265,7 @@ describe('PeerConnection', () => {
});

describe('getIceCandidates', () => {
let mockPc: MockedObjectDeep<RTCPeerConnectionStub>;
let mockPc: MaybeMockedDeep<RTCPeerConnectionStub>;
let pc: PeerConnection;

beforeEach(() => {
Expand Down Expand Up @@ -327,7 +326,7 @@ describe('PeerConnection', () => {
});

describe('createAnswer', () => {
let mockPc: MockedObjectDeep<RTCPeerConnectionStub>;
let mockPc: MaybeMockedDeep<RTCPeerConnectionStub>;
let createAnswerSpy: jest.SpyInstance;
const callback = jest.fn();
let pc: PeerConnection;
Expand Down Expand Up @@ -372,7 +371,7 @@ describe('PeerConnection', () => {
});

describe('createOffer', () => {
let mockPc: MockedObjectDeep<RTCPeerConnectionStub>;
let mockPc: MaybeMockedDeep<RTCPeerConnectionStub>;
let createOfferSpy: jest.SpyInstance;
const callback = jest.fn();
let pc: PeerConnection;
Expand Down Expand Up @@ -417,7 +416,7 @@ describe('PeerConnection', () => {
});

describe('setLocalDescription', () => {
let mockPc: MockedObjectDeep<RTCPeerConnectionStub>;
let mockPc: MaybeMockedDeep<RTCPeerConnectionStub>;
let setLocalDescriptionSpy: jest.SpyInstance;
const callback = jest.fn();
let pc: PeerConnection;
Expand Down Expand Up @@ -479,7 +478,7 @@ describe('PeerConnection', () => {
});

describe('setConfiguration', () => {
let mockPc: MockedObjectDeep<RTCPeerConnectionStub>;
let mockPc: MaybeMockedDeep<RTCPeerConnectionStub>;
let pc: PeerConnection;

beforeEach(() => {
Expand All @@ -500,7 +499,7 @@ describe('PeerConnection', () => {
});

describe('setRemoteDescription', () => {
let mockPc: MockedObjectDeep<RTCPeerConnectionStub>;
let mockPc: MaybeMockedDeep<RTCPeerConnectionStub>;
let setRemoteDescriptionSpy: jest.SpyInstance;
const callback = jest.fn();
let pc: PeerConnection;
Expand Down
3 changes: 3 additions & 0 deletions tsconfig.api-extractor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "./tsconfig.base.json"
}
77 changes: 77 additions & 0 deletions tsconfig.base.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"compilerOptions": {
/* Visit https://aka.ms/tsconfig.json to read more about this file */

/* Basic Options */
"outDir": "dist/esm" /* Redirect output structure to the directory. */,
"module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
"target": "ES2015" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */,
"declaration": true /* Generates corresponding '.d.ts' file. */,
"declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */,
"declarationDir": "dist/types",
"rootDir": "src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
"removeComments": false /* Do not emit comments to output. */,
// "incremental": true, /* Enable incremental compilation */
"lib": [
"DOM",
"ES2016"
] /* Specify library files to be included in the compilation. https://www.typescriptlang.org/tsconfig#lib */,
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */
// "sourceMap": true, /* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
// "composite": true, /* Enable project compilation */
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
// "noEmit": true, /* Do not emit outputs. */
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */

/* Strict Type-Checking Options */
"strict": true /* Enable all strict type-checking options. */,
"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */,
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
"noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */,
"strictNullChecks": true /* Enable strict null checks. */,
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
// "strictPropertyInitialization": true, /* Enable strict checking of class properties. */

/* Additional Checks */
// "noUnusedLocals": true /* Report errors on unused locals. */,
// "noUnusedParameters": true /* Report errors on unused parameters. */,
"noImplicitReturns": true /* Report error when not all code paths in function return a value. */,
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
// "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */

/* Module Resolution Options */
"moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */,
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
"baseUrl": "." /* Base directory to resolve non-absolute module names. */,
"types": ["node", "jest"] /* Type declaration files to be included in compilation. */,
// "typeRoots": [] /* List of folders to include type definitions from. */,
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */

/* Source Map Options */
// "sourceRoot": "", /* Specify the location where debugger should locate source files instead of generated locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */

/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */

/* Advanced Options */
"skipLibCheck": true /* Skip type checking of declaration files. */,
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
},
"include": ["src/**/*"],
"exclude": ["node_modules/**"]
}
Loading
Loading