Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4ad3928

Browse files
benjackwhitepauldambra
andauthoredNov 23, 2023
feat: Added ability to import code from ee folder (PostHog#18841)
We want to experiment with some conditional licensing of frontend code via the ee folder. --------- Co-authored-by: Paul D'Ambra <[email protected]>
1 parent 98c71d4 commit 4ad3928

File tree

9 files changed

+58
-2
lines changed

9 files changed

+58
-2
lines changed
 

‎.github/workflows/ci-backend.yml

+2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ jobs:
6060
# NOTE: we are at risk of missing a dependency here. We could make
6161
# the dependencies more clear if we separated the backend/frontend
6262
# code completely
63+
# really we should ignore ee/frontend/** but dorny doesn't support that
6364
- 'ee/**/*'
65+
- '!ee/frontend/**'
6466
- 'posthog/**/*'
6567
- 'bin/*.py'
6668
- requirements.txt

‎.github/workflows/ci-frontend.yml

+7-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
# NOTE: we are at risk of missing a dependency here.
3636
- 'bin/**'
3737
- 'frontend/**'
38+
- 'ee/frontend/**'
3839
# Make sure we run if someone is explicitly change the workflow
3940
- .github/workflows/ci-frontend.yml
4041
# various JS config files
@@ -117,18 +118,23 @@ jobs:
117118
jest:
118119
runs-on: ubuntu-latest
119120
needs: changes
120-
name: Jest test (${{ matrix.chunk }})
121+
name: Jest test (${{ matrix.segment }} - ${{ matrix.chunk }})
121122

122123
strategy:
123124
# If one test fails, still run the others
124125
fail-fast: false
125126
matrix:
127+
segment: ['FOSS', 'EE']
126128
chunk: [1, 2, 3]
127129

128130
steps:
129131
# we need at least one thing to run to make sure we include everything for required jobs
130132
- uses: actions/checkout@v3
131133

134+
- name: Remove ee
135+
if: needs.changes.outputs.frontend == 'true' && matrix.segment == 'FOSS'
136+
run: rm -rf ee
137+
132138
- name: Install pnpm
133139
if: needs.changes.outputs.frontend == 'true'
134140
uses: pnpm/action-setup@v2

‎ee/frontend/exports.ts

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { PostHogEE } from '@posthog/ee/types'
2+
3+
const myTestCode = (): void => {
4+
// eslint-disable-next-line no-console
5+
console.log('it works!')
6+
}
7+
8+
const postHogEE: PostHogEE = {
9+
enabled: true,
10+
myTestCode,
11+
}
12+
13+
export default postHogEE

‎frontend/@posthog/ee/exports.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { PostHogEE } from './types'
2+
3+
const posthogEE: PostHogEE = {
4+
enabled: false,
5+
}
6+
7+
export default posthogEE

‎frontend/@posthog/ee/types.ts

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// NOTE: All exported items from the EE module _must_ be optionally defined to ensure we work well with FOSS
2+
export type PostHogEE = {
3+
enabled: boolean
4+
myTestCode?: () => void
5+
}

‎frontend/src/lib/ee.test.ts

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import fs from 'fs'
2+
3+
const eeFolderExists = fs.existsSync('ee/frontend/exports.ts')
4+
export const ifEeIt = eeFolderExists ? it : it.skip
5+
export const ifFossIt = !eeFolderExists ? it : it.skip
6+
7+
import posthogEE from '@posthog/ee/exports'
8+
9+
describe('ee importing', () => {
10+
ifEeIt('should import actual ee code', () => {
11+
expect(posthogEE.enabled).toBe(true)
12+
})
13+
14+
ifFossIt('should import actual ee code', () => {
15+
expect(posthogEE.enabled).toBe(false)
16+
})
17+
})

‎jest.config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ const config: Config = {
8989
'^~/(.*)$': '<rootDir>/$1',
9090
'^@posthog/lemon-ui(|/.*)$': '<rootDir>/../@posthog/lemon-ui/src/$1',
9191
'^@posthog/apps-common(|/.*)$': '<rootDir>/../@posthog/apps-common/src/$1',
92+
'^@posthog/ee/exports': ['<rootDir>/../../ee/frontend/exports', '<rootDir>/../@posthog/ee/exports'],
9293
'^lib/(.*)$': '<rootDir>/lib/$1',
9394
'^scenes/(.*)$': '<rootDir>/scenes/$1',
9495
'^antd/es/(.*)$': 'antd/lib/$1',

‎tsconfig.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"@posthog/lemon-ui": ["@posthog/lemon-ui/src/index"],
1010
"@posthog/lemon-ui/*": ["@posthog/lemon-ui/src/*"],
1111
"storybook/*": ["../.storybook/*"],
12+
"@posthog/ee/exports": ["../ee/exports", "@posthog/ee/exports"],
1213
"~/*": ["src/*"],
1314
"public/*": ["public/*"]
1415
},
@@ -33,7 +34,7 @@
3334
"suppressImplicitAnyIndexErrors": true, // Index objects by number
3435
"lib": ["dom", "es2019"]
3536
},
36-
"include": ["frontend/**/*", ".storybook/**/*"],
37+
"include": ["frontend/**/*", ".storybook/**/*", "ee/frontend/**/*"],
3738
"exclude": ["frontend/dist/**/*"],
3839
"ts-node": {
3940
"compilerOptions": {

‎webpack.config.js

+4
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ function createEntry(entry) {
5656
scenes: path.resolve(__dirname, 'frontend', 'src', 'scenes'),
5757
'@posthog/apps-common': path.resolve(__dirname, 'frontend', '@posthog', 'apps-common', 'src'),
5858
'@posthog/lemon-ui': path.resolve(__dirname, 'frontend', '@posthog', 'lemon-ui', 'src'),
59+
'@posthog/ee/exports': [
60+
path.resolve(__dirname, 'ee', 'frontend', 'exports'),
61+
path.resolve(__dirname, 'frontend', '@posthog', 'ee', 'exports'),
62+
],
5963
storybook: path.resolve(__dirname, '.storybook'),
6064
types: path.resolve(__dirname, 'frontend', 'types'),
6165
public: path.resolve(__dirname, 'frontend', 'public'),

0 commit comments

Comments
 (0)
Please sign in to comment.