Skip to content

Commit 91558ce

Browse files
kyle-ssgclaude
andauthored
refactor: CJS -> ESM (#7178)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 9e3edac commit 91558ce

127 files changed

Lines changed: 2592 additions & 3460 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

frontend/.babelrc

Lines changed: 0 additions & 40 deletions
This file was deleted.

frontend/api/dev-routes.js

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
// Shared Express routes used by both RspackDevServer (dev) and api/index.js (prod)
2+
require('dotenv').config()
3+
const bodyParser = require('body-parser')
4+
5+
module.exports = function setupRoutes(app) {
6+
app.get('/config/project-overrides', (req, res) => {
7+
const getVariable = ({ name, value }) => {
8+
if (!value || value === 'undefined') {
9+
if (typeof value === 'boolean') {
10+
return ` ${name}: false,\n `
11+
}
12+
return ''
13+
}
14+
if (typeof value !== 'string') {
15+
return ` ${name}: ${value},\n `
16+
}
17+
return ` ${name}: '${value.trim()}',\n `
18+
}
19+
const envToBool = (name, defaultVal) => {
20+
const envVar = `${process.env[name]}`
21+
if (envVar === 'undefined') {
22+
return defaultVal
23+
}
24+
return envVar === 'true' || envVar === '1'
25+
}
26+
const sha = ''
27+
const values = [
28+
{ name: 'preventSignup', value: envToBool('PREVENT_SIGNUP', false) },
29+
{ name: 'preventEmailPassword', value: envToBool('PREVENT_EMAIL_PASSWORD', false) },
30+
{ name: 'preventForgotPassword', value: envToBool('PREVENT_FORGOT_PASSWORD', false) },
31+
{ name: 'superUserCreateOnly', value: envToBool('ONLY_SUPERUSERS_CAN_CREATE_ORGANISATIONS', false) },
32+
{ name: 'flagsmith', value: process.env.FLAGSMITH_ON_FLAGSMITH_API_KEY },
33+
{ name: 'headway', value: process.env.HEADWAY_API_KEY },
34+
{ name: 'ga', value: process.env.GOOGLE_ANALYTICS_API_KEY },
35+
{ name: 'sha', value: sha },
36+
{ name: 'crispChat', value: process.env.CRISP_WEBSITE_ID },
37+
{ name: 'pylonAppId', value: process.env.PYLON_APP_ID },
38+
{ name: 'fpr', value: process.env.FIRST_PROMOTER_ID },
39+
{ name: 'sentry', value: process.env.SENTRY_API_KEY },
40+
{ name: 'api', value: process.env.FLAGSMITH_PROXY_API_URL ? '/api/v1/' : process.env.FLAGSMITH_API_URL },
41+
{ name: 'apiProxyEnabled', value: !!process.env.FLAGSMITH_PROXY_API_URL },
42+
{ name: 'maintenance', value: envToBool('ENABLE_MAINTENANCE_MODE', false) },
43+
{ name: 'flagsmithClientAPI', value: process.env.FLAGSMITH_ON_FLAGSMITH_API_URL },
44+
{ name: 'disableAnalytics', value: envToBool('DISABLE_ANALYTICS_FEATURES', false) },
45+
{ name: 'flagsmithAnalytics', value: envToBool('ENABLE_FLAG_EVALUATION_ANALYTICS', true) },
46+
{ name: 'flagsmithRealtime', value: envToBool('ENABLE_FLAGSMITH_REALTIME', false) },
47+
{ name: 'amplitude', value: process.env.AMPLITUDE_API_KEY },
48+
{ name: 'reo', value: process.env.REO_API_KEY },
49+
{ name: 'delighted', value: process.env.DELIGHTED_API_KEY },
50+
{ name: 'capterraKey', value: process.env.CAPTERRA_API_KEY },
51+
{ name: 'hideInviteLinks', value: envToBool('DISABLE_INVITE_LINKS', false) },
52+
{ name: 'linkedinPartnerTracking', value: envToBool('LINKEDIN_PARTNER_TRACKING', false) },
53+
{ name: 'albacross', value: process.env.ALBACROSS_CLIENT_ID },
54+
{ name: 'useSecureCookies', value: envToBool('USE_SECURE_COOKIES', true) },
55+
{ name: 'cookieSameSite', value: process.env.USE_SECURE_COOKIES },
56+
{ name: 'cookieAuthEnabled', value: process.env.COOKIE_AUTH_ENABLED },
57+
{ name: 'githubAppURL', value: process.env.GITHUB_APP_URL },
58+
{ name: 'e2eToken', value: process.env[`E2E_TEST_TOKEN_${(process.env.ENV || 'dev').toUpperCase()}`] || process.env.E2E_TEST_TOKEN || '' },
59+
{ name: 'evaluationAnalyticsServerUrl', value: process.env.EVALUATION_ANALYTICS_SERVER_URL },
60+
{ name: 'gramProjectSlug', value: process.env.GRAM_PROJECT_SLUG },
61+
{ name: 'gramMcpUrl', value: process.env.GRAM_MCP_URL },
62+
]
63+
let output = values.map(getVariable).join('')
64+
res.setHeader('Cache-Control', 's-max-age=1, stale-while-revalidate')
65+
res.setHeader('content-type', 'application/javascript')
66+
const e2eScript = process.env.E2E ? 'window.E2E=true;' : ''
67+
res.send(`${e2eScript}window.projectOverrides = {\n ${output}\n };`)
68+
})
69+
70+
// Optionally proxy the API
71+
if (process.env.FLAGSMITH_PROXY_API_URL) {
72+
const { createProxyMiddleware } = require('http-proxy-middleware')
73+
app.use(
74+
'/api/v1/',
75+
createProxyMiddleware({
76+
changeOrigin: true,
77+
target: process.env.FLAGSMITH_PROXY_API_URL,
78+
xfwd: true,
79+
}),
80+
)
81+
}
82+
83+
app.use(bodyParser.json())
84+
85+
app.get('/health', (req, res) => {
86+
// eslint-disable-next-line
87+
console.log('Healthcheck complete')
88+
res.send('OK')
89+
})
90+
}

frontend/api/index.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,8 @@ if (process.env.FLAGSMITH_PROXY_API_URL) {
153153
}
154154

155155
if (isDev) {
156-
// Serve files from src directory and use webpack-dev-server
157-
// eslint-disable-next-line
158-
console.log('Enabled Webpack Hot Reloading')
159-
const webpackMiddleware = require('./middleware/webpack-middleware')
160-
webpackMiddleware(app)
156+
// In dev mode, use `npm run dev` which starts @rspack/dev-server
157+
// This code path only runs if someone starts `node ./api` directly in dev
161158
app.set('views', 'web/')
162159
app.use(express.static('web'))
163160
} else {

frontend/api/middleware/webpack-middleware.js

Lines changed: 0 additions & 46 deletions
This file was deleted.

frontend/common/code-help/create-user/create-user-curl.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Constants from 'common/constants'
22

3-
module.exports = (envId, { USER_ID }, userId) => {
3+
export default (envId, { USER_ID }, userId) => {
44
const url = new URL('identities/', Constants.getFlagsmithSDKUrl())
55
url.searchParams.append('identifier', userId || USER_ID)
66

frontend/common/code-help/create-user/create-user-dotnet.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = (
1+
export default (
22
envId,
33
{ FEATURE_NAME, FEATURE_NAME_ALT, USER_ID },
44
userId,

frontend/common/code-help/create-user/create-user-flutter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Constants from 'common/constants'
2-
module.exports = (
2+
export default (
33
envId,
44
{ FEATURE_NAME, FEATURE_NAME_ALT, USER_ID },
55
userId,

frontend/common/code-help/create-user/create-user-go.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = (
1+
export default (
22
envId,
33
{ FEATURE_NAME, FEATURE_NAME_ALT, USER_ID },
44
userId,

frontend/common/code-help/create-user/create-user-ios.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Constants from 'common/constants'
22

3-
module.exports = (
3+
export default (
44
envId,
55
{ FEATURE_NAME, FEATURE_NAME_ALT, USER_ID },
66
userId,

frontend/common/code-help/create-user/create-user-java.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Constants from 'common/constants'
22

3-
module.exports = (
3+
export default (
44
envId,
55
{ FEATURE_NAME, FEATURE_NAME_ALT, LIB_NAME, LIB_NAME_JAVA, USER_ID },
66
userId,

0 commit comments

Comments
 (0)