Conversation
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)
- 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>
There was a problem hiding this comment.
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
Bundlerand introduce#/...subpath imports across packages (pluspackage.json#importsand a customjest-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.
| "strictNullChecks": true, | ||
| "types": ["angular"] | ||
| }, | ||
| "include": ["src"], | ||
| "types": ["angular", "angular-mock"] |
There was a problem hiding this comment.
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.
| import { sveltekit } from "@sveltejs/kit/vite"; | ||
| import { defineConfig } from "vite"; | ||
| import { defineConfig } from "vitest/config"; |
There was a problem hiding this comment.
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.
No description provided.