mirror of
https://github.com/hanzoai/insights-js.git
synced 2026-11-03 00:53:53 +00:00
# Conflicts: # .github/workflows/check-insights-major-version.yml # .github/workflows/check-posthog-major-version.yml # .github/workflows/ci-security.yaml # .github/workflows/validate-versioning.yml # AGENTS.md # AGENTS.md~upstream_main # packages/ai/src/otel/capture.ts # packages/ai/src/otel/mappers/aiSdk.ts # packages/ai/src/otel/mappers/index.ts # packages/ai/src/otel/types.ts # packages/core/src/__tests__/posthog.init.spec.ts # packages/react-native/src/PostHogProvider.tsx # packages/react/src/context/PostHogContext.ts # packages/react/src/context/PostHogProvider.tsx # tooling/eslint-plugin-insights/no-unsafe-web-global.js
99 lines
4.0 KiB
JavaScript
99 lines
4.0 KiB
JavaScript
const noExternalReplayImports = require('./no-external-replay-imports')
|
|
const { RuleTester } = require('eslint')
|
|
|
|
const ruleTester = new RuleTester({
|
|
parserOptions: {
|
|
ecmaVersion: 2020,
|
|
sourceType: 'module',
|
|
},
|
|
env: {
|
|
browser: true,
|
|
},
|
|
})
|
|
|
|
ruleTester.run('no-external-replay-imports', noExternalReplayImports, {
|
|
valid: [
|
|
// Allowed imports from entrypoints
|
|
{
|
|
code: "import { something } from '@/extensions/replay/external/denylist'",
|
|
filename: '/project/src/entrypoints/recorder.ts',
|
|
},
|
|
// Allowed imports from the same directory
|
|
{
|
|
code: "import { something } from './external/denylist'",
|
|
filename: '/project/src/extensions/replay/external/other.ts',
|
|
},
|
|
// Allowed imports from the same directory using path alias
|
|
{
|
|
code: "import { something } from '~/extensions/replay/external/denylist'",
|
|
filename: '/project/src/extensions/replay/external/other.ts',
|
|
},
|
|
// Allowed imports from test files
|
|
{
|
|
code: "import { something } from '@/extensions/replay/external/denylist'",
|
|
filename: '/project/src/__tests__/extensions/replay/external/denylist.test.ts',
|
|
},
|
|
// Allowed imports from test files using relative path
|
|
{
|
|
code: "import { something } from '../../../../extensions/replay/external/denylist'",
|
|
filename: '/project/src/__tests__/extensions/replay/external/denylist.test.ts',
|
|
},
|
|
// Allowed imports from playwright specs (also test code)
|
|
{
|
|
code: "import { csrfHeaderCases } from '../../../src/__tests__/extensions/replay/external/test_data/header-cases'",
|
|
filename: '/project/packages/browser/playwright/mocked/session-recording/csrf-headers-preserved.spec.ts',
|
|
},
|
|
// Non-restricted imports should be allowed from anywhere
|
|
{
|
|
code: "import { something } from '@/utils'",
|
|
filename: '/project/src/some/other/file.ts',
|
|
},
|
|
],
|
|
invalid: [
|
|
// Disallowed import from regular source file
|
|
{
|
|
code: "import { something } from '@/extensions/replay/external/denylist'",
|
|
filename: '/project/src/utils/something.ts',
|
|
errors: [
|
|
{
|
|
message:
|
|
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
|
|
},
|
|
],
|
|
},
|
|
// Disallowed import using relative path
|
|
{
|
|
code: "import { something } from './external/denylist'",
|
|
filename: '/project/src/utils/something.ts',
|
|
errors: [
|
|
{
|
|
message:
|
|
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
|
|
},
|
|
],
|
|
},
|
|
// Disallowed import using path alias
|
|
{
|
|
code: "import { something } from '~/extensions/replay/external/denylist'",
|
|
filename: '/project/src/utils/something.ts',
|
|
errors: [
|
|
{
|
|
message:
|
|
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
|
|
},
|
|
],
|
|
},
|
|
// Disallowed dynamic import
|
|
{
|
|
code: "import('./external/denylist').then(module => {})",
|
|
filename: '/project/src/utils/something.ts',
|
|
errors: [
|
|
{
|
|
message:
|
|
'Code from src/extensions/replay/external can only be imported by files in src/extensions/replay/external, src/entrypoints, test files, or playwright specs',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|