Skip to content

Feature/upgrade deps#151

Merged
niemyjski merged 9 commits intomainfrom
feature/upgrade-deps
Mar 24, 2026
Merged

Feature/upgrade deps#151
niemyjski merged 9 commits intomainfrom
feature/upgrade-deps

Conversation

@niemyjski
Copy link
Member

No description provided.

Add coding standards, architecture docs, and agent configurations
tailored for the Exceptionless.JavaScript TypeScript SDK monorepo.
Clean up settings.local.json to remove stale paths from another project.
Replace legacy .eslintrc.js and .eslintignore with ESLint flat config.
- Use typescript-eslint v8 with projectService for type-aware linting
- Add eslint-plugin-jest for test file rules
- Remove unused Live Server extension recommendation
- Removed the need for eslint-plugin-import and other legacy plugins
- Remove unused catch binding variables (BrowserGlobalHandlerPlugin)
- Replace short-circuit expressions with if statements (Configuration, DefaultEventQueue)
- Fix duplicate test titles in Utils.test.ts (toBoolean)
- Fix React error boundary componentDidCatch to use void instead of async

Upgrade root and library package dependencies

Root:
- eslint 10.x, @eslint/js 10.x, typescript-eslint 8.x (flat config)
- eslint-config-prettier 10.x, eslint-plugin-jest 29.x
- typescript 5.9.x, prettier 3.8.x, rimraf 6.x
- Replace npm-run-all (unmaintained) with npm-run-all2 8.x
- Remove legacy ESLint plugins (import, jsdoc, eslint-comments, eslint-plugin)

Library packages (core, browser, node, react):
- Jest 30.x, @jest/globals 30.x, jest-environment-jsdom 30.x
- ts-jest 29.4.x (supports Jest 30)
- @types/react 19.2.x, @types/react-dom 19.2.x

Upgrade example app dependencies

- Express 5.x (from 4.x)
- React 19.2.x, react-dom 19.2.x
- Vite 6.3+ (all apps)
- Vue 3.5.30, @vue/compiler-sfc 3.5.30
- Svelte 5.55.x, svelte-check 4.4.x, @sveltejs/vite-plugin-svelte 6.x
- @vitejs/plugin-react 4.7.x
- @testing-library/jest-dom 6.9.x, @testing-library/react 16.3.x
- Fix Prettier formatting in example files

Regenerate package-lock.json

Clean lockfile regeneration after all dependency upgrades.

Migrate from tseslint.config() to defineConfig()

tseslint.config() is deprecated in favor of ESLint core's defineConfig()
from eslint/config (available since ESLint v9.22.0). Use extends property
for shared config arrays instead of spreading.

Remove jQuery dependency from browser example

Replace $.ajax call with native fetch() API. jQuery was only used for
the AJAX demo button. This removes the last jQuery dependency and
eliminates the need to track jQuery major version updates.

Upgrade esbuild to 0.27, update dep specifiers

- Upgrade esbuild from ^0.25.0 to ^0.27.0 across all library packages
- Update @eslint/js specifier to ^10.0.1
- Update typescript-eslint specifier to ^8.57.2
- Fix vue package watch script syntax error (& &&)

Upgrade remaining example dependencies

- @vitejs/plugin-vue 5.x → 6.x (supports vite 5-8)
- @sveltejs/adapter-auto 4.x → 7.x (peer: @sveltejs/kit ^2)
- vitest 3.x → 4.x (supports vite 6-8)

Regenerate package-lock.json

agent-brower skill

reverted changes

Upgrade TypeScript to 6.0

- TypeScript ^6.0.2 in root and svelte-kit package.json
- Change moduleResolution from Node to Bundler (deprecated in TS 6)
- Add types: [angular] to angularjs tsconfig for Bundler compat
- Configure ts-jest with ignoreDeprecations: 6.0 (ts-jest forces
  module: commonjs which triggers TS 6 node10 deprecation warning)

Format agent-browser skill files with Prettier

Regenerate package-lock.json for TypeScript 6

Fix unused catch variables with trace logging

- Remove caughtErrors: none ESLint rule override
- Add trace logging in BrowserGlobalHandlerPlugin catch blocks
  for rejection detail and error property access failures
- Add package.json imports field with source/default conditions
  to all library packages (core, browser, node, react)
- Convert all relative imports in src/ and test/ files to #/ paths
- Add paths mapping in each package's tsconfig.json for tsc resolution
- Add --conditions=source to esbuild commands for source bundling
- Replace jest-ts-webcompat-resolver with custom jest-resolver.cjs
  that supports package.json imports field per-package resolution
  and .js → .ts extension mapping
- Add .npmrc with legacy-peer-deps=true (TS 6 peer dep workaround)
- Update GitHub Actions matrix: Node 22 + 24 (drop Node 20)
- Use --legacy-peer-deps in CI npm install step
- Bump node engine to >=22 (Node 22 LTS)
- Replace ts-jest ignoreDeprecations with diagnostics: false
  (tsc handles type checking, ts-jest only transpiles)
@niemyjski niemyjski self-assigned this Mar 24, 2026
@niemyjski niemyjski added the dependencies Pull requests that update a dependency file label Mar 24, 2026
- Upgrade GitHub Action versions (checkout v6, setup-node v6, cache v5)
- Add .NET 8 SDK to CI for MinVer versioning support
- Define explicit GHA permissions (contents: read, packages: write)
- Add path traversal validation to jest-resolver.cjs to ensure imports remain within the package root
…ng or encoding

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR upgrades build/lint/test tooling and dependencies across the Exceptionless JavaScript monorepo, and standardizes internal ESM imports using #/... subpath aliases (backed by per-package imports + a custom Jest resolver) while updating example apps and CI to newer Node/tooling baselines.

Changes:

  • Switch TypeScript module resolution to Bundler and introduce #/... subpath imports across packages (plus package.json#imports and a custom jest-resolver.cjs).
  • Upgrade core tooling/deps (ESLint flat config, Jest, esbuild, etc.) and update CI workflow to newer Node/actions.
  • Update example apps (Vite/SvelteKit/Vue/React/Express/jQuery) and add agent guidance/docs.

Reviewed changes

Copilot reviewed 98 out of 100 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tsconfig.json Switch moduleResolution to Bundler.
skills-lock.json Add skills lockfile for agent tooling.
packages/vue/package.json Update esbuild; adjust watch script.
packages/react/tsconfig.json Add #/ path alias mapping.
packages/react/src/index.ts Switch to #/ subpath import export.
packages/react/package.json Add imports mapping; update build flags and dev deps.
packages/node/tsconfig.json Add #/ path alias mapping.
packages/node/test/storage/NodeDirectoryStorage.test.ts Switch test import to #/ path.
packages/node/src/index.ts Switch exports/imports to #/ subpaths.
packages/node/src/NodeExceptionlessClient.ts Switch plugin imports to #/ subpaths.
packages/node/package.json Add imports; raise Node engine; replace Jest resolver config; update deps/scripts.
packages/core/tsconfig.json Add #/ path alias mapping.
packages/core/test/submission/TestSubmissionClient.ts Switch imports to #/ subpaths.
packages/core/test/submission/TestSubmissionClient.test.ts Switch imports to #/ subpaths.
packages/core/test/storage/StorageTestBase.ts Add beforeEach/afterEach wiring and #/ import.
packages/core/test/storage/LocalStorage.test.ts Switch imports to #/ subpaths.
packages/core/test/storage/InMemoryStorage.test.ts Switch imports to #/ subpaths.
packages/core/test/queue/DefaultEventQueue.test.ts Add lifecycle hooks import; switch imports to #/ subpaths.
packages/core/test/plugins/default/EventExclusionPlugin.test.ts Switch imports to #/ subpaths.
packages/core/test/plugins/default/DuplicateCheckerPlugin.test.ts Add hook import; switch imports to #/ subpaths.
packages/core/test/plugins/default/ConfigurationDefaultsPlugin.test.ts Switch imports to #/ subpaths.
packages/core/test/plugins/EventPluginManager.test.ts Switch imports to #/ subpaths.
packages/core/test/configuration/Configuration.test.ts Switch import to #/ subpath.
packages/core/test/Utils.test.ts Switch import to #/; clarify boolean test titles.
packages/core/test/ExceptionlessClient.test.ts Switch imports to #/ subpaths.
packages/core/src/submission/ISubmissionClient.ts Switch imports to #/ subpaths.
packages/core/src/submission/DefaultSubmissionClient.ts Switch imports to #/ subpaths.
packages/core/src/storage/LocalStorage.ts Switch import to #/ subpath.
packages/core/src/storage/InMemoryStorage.ts Switch import to #/ subpath.
packages/core/src/queue/IEventQueue.ts Switch imports to #/ subpaths.
packages/core/src/queue/DefaultEventQueue.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/SubmissionMethodPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/SimpleErrorPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/SessionIdManagementPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/ReferenceIdPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/HeartbeatPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/EventExclusionPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/DuplicateCheckerPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/default/ConfigurationDefaultsPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/PluginContext.ts Switch imports to #/ subpaths.
packages/core/src/plugins/IEventPlugin.ts Switch imports to #/ subpaths.
packages/core/src/plugins/EventPluginManager.ts Switch imports to #/ subpaths.
packages/core/src/plugins/EventPluginContext.ts Switch imports to #/ subpaths.
packages/core/src/models/data/ErrorInfo.ts Switch import to #/ subpath.
packages/core/src/models/Event.ts Switch imports to #/ subpaths.
packages/core/src/logging/NullLog.ts Switch import to #/ subpath.
packages/core/src/logging/ConsoleLog.ts Switch import to #/ subpath.
packages/core/src/lastReferenceIdManager/DefaultLastReferenceIdManager.ts Switch import to #/ subpath.
packages/core/src/index.ts Switch barrel exports to #/ subpaths.
packages/core/src/configuration/SettingsManager.ts Switch import to #/ subpath.
packages/core/src/configuration/Configuration.ts Switch imports to #/ subpaths.
packages/core/src/ExceptionlessClient.ts Switch imports to #/ subpaths.
packages/core/src/EventBuilder.ts Switch imports to #/ subpaths.
packages/core/package.json Add imports; update Jest config; update deps/scripts.
packages/browser/tsconfig.json Add #/ path alias mapping.
packages/browser/test/plugins/BrowserIgnoreExtensionErrorsPlugin.test.ts Add hook import; switch import to #/ subpath.
packages/browser/test/plugins/BrowserErrorPlugin.test.ts Add hook import; switch import to #/ subpath.
packages/browser/src/plugins/BrowserGlobalHandlerPlugin.ts Add trace logging in previously-empty catch blocks.
packages/browser/src/index.ts Switch exports/import to #/ subpaths.
packages/browser/src/BrowserExceptionlessClient.ts Switch imports to #/ subpaths.
packages/browser/package.json Add imports; update Jest config; update deps/scripts.
packages/angularjs/tsconfig.json Add compilerOptions.types (and leave a top-level types).
packages/angularjs/package.json Update esbuild.
package.json Update lint script and devDependencies (ESLint flat + TS/Jest ecosystem).
jest-resolver.cjs Add custom Jest resolver for #/ imports and .js.ts/.tsx mapping.
example/vue/package.json Upgrade Vue/Vite deps.
example/svelte-kit/vite.config.js Change defineConfig import source.
example/svelte-kit/src/routes/+page.svelte Update to Svelte 5 patterns ($state, event attrs, error narrowing).
example/svelte-kit/src/hooks.client.js Update SvelteKit client error handler behavior/logging.
example/svelte-kit/package.json Upgrade SvelteKit/Svelte/Vite deps; add Vitest.
example/react/src/index.css Prettier formatting update.
example/react/package.json Upgrade React/Vite/testing-library deps.
example/express/package.json Upgrade Express major version.
example/express/app.js Reorder imports/init sequence.
example/browser/package.json Upgrade jQuery major version.
eslint.config.mjs Replace legacy ESLint config with flat config.
AGENTS.md Add extensive repo/agent guidelines documentation.
.vscode/extensions.json Remove Live Server recommendation.
.prettierignore Ignore .agents directory.
.npmrc Add legacy-peer-deps=true.
.github/workflows/build.yml Update CI Node version and actions; use npm ci; add dotnet for MinVer.
.eslintrc.js Remove legacy ESLint config file.
.eslintignore Remove legacy ignore file (handled by flat config).
.devcontainer/devcontainer.json Remove Live Server from devcontainer extensions.
.claude/agents/triage.md Add agent definition doc.
.claude/agents/reviewer.md Add agent definition doc.
.claude/agents/pr-reviewer.md Add agent definition doc.
.claude/agents/engineer.md Add agent definition doc.
.agents/skills/agent-browser/templates/form-automation.sh Add agent-browser workflow template.
.agents/skills/agent-browser/templates/capture-workflow.sh Add agent-browser workflow template.
.agents/skills/agent-browser/templates/authenticated-session.sh Add agent-browser workflow template.
.agents/skills/agent-browser/references/video-recording.md Add agent-browser reference docs.
.agents/skills/agent-browser/references/snapshot-refs.md Add agent-browser reference docs.
.agents/skills/agent-browser/references/session-management.md Add agent-browser reference docs.
.agents/skills/agent-browser/references/proxy-support.md Add agent-browser reference docs.
.agents/skills/agent-browser/references/profiling.md Add agent-browser reference docs.
.agents/skills/agent-browser/references/commands.md Add agent-browser reference docs.
.agents/skills/agent-browser/references/authentication.md Add agent-browser reference docs.
.agents/skills/agent-browser/SKILL.md Add agent-browser skill documentation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +8 to 12
"strictNullChecks": true,
"types": ["angular"]
},
"include": ["src"],
"types": ["angular", "angular-mock"]
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

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

types is configured in two places: compilerOptions.types and a top-level types key. The top-level types field is not a valid tsconfig option, so it will be ignored, and angular-mock will no longer be included. If angular-mock is needed, move the full list into compilerOptions.types and remove the top-level types entry to avoid silent misconfiguration.

Copilot uses AI. Check for mistakes.
Comment on lines 1 to +2
import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";
import { defineConfig } from "vitest/config";
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

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

This is a Vite config file, but defineConfig is being imported from vitest/config. Unless there’s a specific reason to couple the Vite build config to Vitest, this should come from vite to match Vite’s expected config typing/behavior.

Copilot uses AI. Check for mistakes.
@niemyjski niemyjski merged commit f9c8483 into main Mar 24, 2026
7 of 10 checks passed
@niemyjski niemyjski deleted the feature/upgrade-deps branch March 24, 2026 14:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Development

Successfully merging this pull request may close these issues.

2 participants